ROSE  0.11.96.11
sageGeneric.h
Go to the documentation of this file.
1 #ifndef _SAGEGENERIC_H
2 
3 #define _SAGEGENERIC_H 1
4 
11 
12 // note: the comments are right aligned to support code-blocks doxygen 1.3.X :)
13 
14 #include <type_traits>
15 
16 #if !defined(NDEBUG)
17 #include <typeinfo>
18 #include <sstream>
19 #endif /* NDEBUG */
20 
21 #define WITH_BINARY_NODES 0
22 #define WITH_UNTYPED_NODES 0
23 
24 // #include "Cxx_Grammar.h"
25 
26 // DQ (10/5/2014): We can't include this here.
27 // #include "rose.h"
28 
29 #define SG_UNEXPECTED_NODE(X) (sg::unexpected_node(X, __FILE__, __LINE__))
30 #define SG_DEREF(X) (sg::deref(X, __FILE__, __LINE__))
31 #define SG_ASSERT_TYPE(SAGENODE, N) (sg::assert_sage_type<SAGENODE>(N, __FILE__, __LINE__))
32 #define SG_ERROR_IF(COND, MSG) (sg::report_error_if(COND, MSG, __FILE__, __LINE__))
33 
34 
36 namespace sg
37 {
38  //
39  // non sage specific utilities
40 
43  template <class T>
44  static inline
45  void unused(const T&) {}
46 
48  template <class T1, class T2>
49  struct ConstLike
50  {
51  typedef T2 type;
52  };
53 
54  template <class T1, class T2>
55  struct ConstLike<const T1, T2>
56  {
57  typedef const T2 type;
58  };
59 
60  //
61  // error reporting
62 
64  template <class T, class E>
65  static inline
66  T conv(const E& el)
67  {
68  T res;
69 #if !defined(NDEBUG)
70  std::stringstream s;
71 
72  s << el;
73  s >> res;
74 #endif /* NDEBUG */
75  return res;
76  }
77 
78  // \note implemented originall in SageInterfaceAda.h. Now the implementations are moved to SageInterface.C since
79  // SageInterfaceAda.h is deleted when we remove Ada support for rexompiler
80  // \{
81  [[noreturn]]
82  void report_error(std::string desc, const char* file = nullptr, size_t ln = 0);
83 
84  [[noreturn]]
85  void unexpected_node(const SgNode& n, const char* file = nullptr, size_t ln = 0);
87 
88  static inline
89  void report_error_if(bool iserror, const std::string& desc, const char* file = nullptr, size_t ln = 0)
90  {
91  if (!iserror) return;
92 
93  report_error(desc, file, ln);
94  }
95 
97  template <class T>
98  T& deref(T* ptr, const char* file = 0, size_t ln = 0)
99  {
100  report_error_if(!ptr, "assertion failed: null dereference ", file, ln);
101  return *ptr;
102  }
103 
104  // \note implemented in SageInterfaceAda.h
105 
116  template <class _ReturnType>
118  {
119  typedef _ReturnType ReturnType;
121 
123  : res()
124  {}
125 
126  explicit
127  DispatchHandler(const ReturnType& defaultval)
128  : res(defaultval)
129  {}
130 
131  operator ReturnType() const { return res; }
132 
133  protected:
134  ReturnType res;
135  };
136 
137 
138  //
139  // Sage query functions
140 
142  template <class SageNode>
143  static inline
144  SageNode& assume_sage_type(SgNode& n)
145  {
146  return static_cast<SageNode&>(n);
147  }
148 
151  template <class SageNode>
152  static inline
153  const SageNode& assume_sage_type(const SgNode& n)
154  {
155  return static_cast<const SageNode&>(n);
156  }
157 
158 #define GEN_VISIT(X) \
159  void visit(X * n) { rv.handle(*n); }
160 
161  template <class RoseVisitor>
163  {
164  // rvalue ctor
165  VisitDispatcher(RoseVisitor&& rosevisitor, std::false_type)
166  : rv(std::move(rosevisitor))
167  {}
168 
169  // lvalue ctor
170  VisitDispatcher(const RoseVisitor& rosevisitor, std::true_type)
171  : rv(rosevisitor)
172  {}
173 
174  GEN_VISIT(SgAccessModifier)
175  GEN_VISIT(SgActualArgumentExpression)
176  GEN_VISIT(SgAddOp)
177  GEN_VISIT(SgAddressOfOp)
178  GEN_VISIT(SgAggregateInitializer)
179  GEN_VISIT(SgAliasSymbol)
180  GEN_VISIT(SgAlignOfOp)
181  GEN_VISIT(SgAllocateStatement)
182  GEN_VISIT(SgAndAssignOp)
183  GEN_VISIT(SgAndOp)
184  GEN_VISIT(SgArithmeticIfStatement)
185  GEN_VISIT(SgArrayType)
186  GEN_VISIT(SgArrowExp)
187  GEN_VISIT(SgArrowStarOp)
188  GEN_VISIT(SgAssertStmt)
189  GEN_VISIT(SgAssignInitializer)
190  GEN_VISIT(SgAssignOp)
191  GEN_VISIT(SgAssignStatement)
192  GEN_VISIT(SgAssignedGotoStatement)
193  GEN_VISIT(SgAssociateStatement)
194  GEN_VISIT(SgAsteriskShapeExp)
195  GEN_VISIT(SgAttribute)
197  GEN_VISIT(SgAutoType)
198  GEN_VISIT(SgAwaitExpression)
199  GEN_VISIT(SgBackspaceStatement)
200  GEN_VISIT(SgBaseClass)
201  GEN_VISIT(SgExpBaseClass)
202  GEN_VISIT(SgBaseClassModifier)
203  GEN_VISIT(SgBasicBlock)
204  GEN_VISIT(SgBidirectionalGraph)
205  GEN_VISIT(SgBinaryOp)
206  GEN_VISIT(SgBitAndOp)
207  GEN_VISIT(SgBitAttribute)
208  GEN_VISIT(SgBitComplementOp)
209  GEN_VISIT(SgBitEqvOp)
210  GEN_VISIT(SgBitOrOp)
211  GEN_VISIT(SgBitXorOp)
212  GEN_VISIT(SgBlockDataStatement)
213  GEN_VISIT(SgBoolValExp)
214  GEN_VISIT(SgBreakStmt)
215  GEN_VISIT(SgBracedInitializer)
217  GEN_VISIT(SgCaseOptionStmt)
218  GEN_VISIT(SgCastExp)
219  GEN_VISIT(SgCatchOptionStmt)
220  GEN_VISIT(SgCatchStatementSeq)
221  GEN_VISIT(SgCharVal)
222  GEN_VISIT(SgChar16Val)
223  GEN_VISIT(SgChar32Val)
224  GEN_VISIT(SgChooseExpression)
225  GEN_VISIT(SgClassDecl_attr)
226  GEN_VISIT(SgClassDeclaration)
227  GEN_VISIT(SgClassDefinition)
228  GEN_VISIT(SgClassNameRefExp)
229  GEN_VISIT(SgClassSymbol)
230  GEN_VISIT(SgClassType)
232  GEN_VISIT(SgClinkageEndStatement)
233  GEN_VISIT(SgClinkageStartStatement)
234  GEN_VISIT(SgCloseStatement)
235  GEN_VISIT(SgColonShapeExp)
236  GEN_VISIT(SgCommaOpExp)
237  GEN_VISIT(SgCommonBlock)
238  GEN_VISIT(SgCommonBlockObject)
239  GEN_VISIT(SgCommonSymbol)
240  GEN_VISIT(SgComplexVal)
241  GEN_VISIT(SgComprehension)
242  GEN_VISIT(SgCompoundAssignOp)
243  GEN_VISIT(SgCompoundInitializer)
244  GEN_VISIT(SgCompoundLiteralExp)
245  GEN_VISIT(SgComputedGotoStatement)
246  GEN_VISIT(SgConcatenationOp)
247  GEN_VISIT(SgConditionalExp)
248  GEN_VISIT(SgConjugateOp)
249  GEN_VISIT(SgConstVolatileModifier)
250  GEN_VISIT(SgConstructorInitializer)
251  GEN_VISIT(SgContainsStatement)
252  GEN_VISIT(SgContinueStmt)
253  GEN_VISIT(SgCtorInitializerList)
254  GEN_VISIT(SgDataStatementGroup)
255  GEN_VISIT(SgDataStatementObject)
256  GEN_VISIT(SgDataStatementValue)
257  GEN_VISIT(SgDeadIfDirectiveStatement)
258  GEN_VISIT(SgDeallocateStatement)
259  GEN_VISIT(SgDeclarationModifier)
260  GEN_VISIT(SgDeclarationScope)
261  GEN_VISIT(SgDeclarationStatement)
262  GEN_VISIT(SgDeclType)
263  GEN_VISIT(SgDefaultOptionStmt)
264  GEN_VISIT(SgDefaultSymbol)
265  GEN_VISIT(SgDefineDirectiveStatement)
266  GEN_VISIT(SgDeleteExp)
267  GEN_VISIT(SgDerivedTypeStatement)
268  GEN_VISIT(SgDesignatedInitializer)
269  GEN_VISIT(SgDictionaryComprehension)
270  GEN_VISIT(SgDictionaryExp)
271  GEN_VISIT(SgDimensionObject)
272  GEN_VISIT(SgDirectory)
273  GEN_VISIT(SgDirectoryList)
274  GEN_VISIT(SgDivAssignOp)
275  GEN_VISIT(SgDivideOp)
276  GEN_VISIT(SgDoWhileStmt)
277  GEN_VISIT(SgDotExp)
278  GEN_VISIT(SgDotStarOp)
279  GEN_VISIT(SgDoubleVal)
280  GEN_VISIT(SgElaboratedTypeModifier)
281  GEN_VISIT(SgElementwiseOp)
282  GEN_VISIT(SgElementwiseAddOp)
283  GEN_VISIT(SgElementwiseDivideOp)
284  GEN_VISIT(SgElementwiseLeftDivideOp)
285  GEN_VISIT(SgElementwiseMultiplyOp)
286  GEN_VISIT(SgElementwisePowerOp)
287  GEN_VISIT(SgElementwiseSubtractOp)
288  GEN_VISIT(SgElseDirectiveStatement)
289  GEN_VISIT(SgElseWhereStatement)
290  GEN_VISIT(SgElseifDirectiveStatement)
291  GEN_VISIT(SgEmptyDeclaration)
292  GEN_VISIT(SgEmptyDirectiveStatement)
293  GEN_VISIT(SgEndfileStatement)
294  GEN_VISIT(SgEndifDirectiveStatement)
295  GEN_VISIT(SgEntryStatement)
296  GEN_VISIT(SgEnumDeclaration)
297  GEN_VISIT(SgEnumFieldSymbol)
298  GEN_VISIT(SgEnumSymbol)
299  GEN_VISIT(SgEnumType)
300  GEN_VISIT(SgEnumVal)
301  GEN_VISIT(SgEqualityOp)
302  GEN_VISIT(SgEquivalenceStatement)
303  GEN_VISIT(SgErrorDirectiveStatement)
304  GEN_VISIT(SgExecStatement)
305  GEN_VISIT(SgExponentiationOp)
306  GEN_VISIT(SgExponentiationAssignOp)
307  GEN_VISIT(SgExprListExp)
308  GEN_VISIT(SgExprStatement)
309  GEN_VISIT(SgExpression)
310  GEN_VISIT(SgExpressionRoot)
311  GEN_VISIT(SgFile)
312  GEN_VISIT(SgFileList)
313  GEN_VISIT(SgFloatVal)
314  GEN_VISIT(SgFloat128Val)
315  GEN_VISIT(SgFloat80Val)
316  GEN_VISIT(SgFoldExpression)
317  GEN_VISIT(SgFlushStatement)
318  GEN_VISIT(SgForAllStatement)
319  GEN_VISIT(SgForInitStatement)
320  GEN_VISIT(SgForStatement)
321  GEN_VISIT(SgFormatItem)
322  GEN_VISIT(SgFormatItemList)
323  GEN_VISIT(SgFormatStatement)
324  GEN_VISIT(SgFortranDo)
325  GEN_VISIT(SgOmpMetadirectiveStatement)
326  GEN_VISIT(SgUpirSpmdStatement)
327  GEN_VISIT(SgOmpTeamsStatement)
329  GEN_VISIT(SgOmpDeclareMapperStatement)
330  GEN_VISIT(SgOmpCancelStatement)
331  GEN_VISIT(SgOmpTaskgroupStatement)
332  GEN_VISIT(SgOmpDepobjStatement)
333  GEN_VISIT(SgOmpDistributeStatement)
334  GEN_VISIT(SgOmpLoopStatement)
335  GEN_VISIT(SgOmpScanStatement)
336  GEN_VISIT(SgOmpTaskloopStatement)
344  GEN_VISIT(SgOmpTaskloopSimdStatement)
345  GEN_VISIT(SgOmpTargetUpdateStatement)
348  GEN_VISIT(SgOmpTargetSimdStatement)
349  GEN_VISIT(SgOmpTargetTeamsStatement)
362  GEN_VISIT(SgOmpTeamsLoopStatement)
365  GEN_VISIT(SgOmpParallelLoopStatement)
366  GEN_VISIT(SgOmpSingleStatement)
367  GEN_VISIT(SgUpirSimdStatement)
368  GEN_VISIT(SgOmpTaskStatement)
369  GEN_VISIT(SgUpirWorksharingStatement)
370  GEN_VISIT(SgOmpForSimdStatement)
371  GEN_VISIT(SgOmpDoStatement)
372  GEN_VISIT(SgOmpSectionsStatement)
373  GEN_VISIT(SgUpirFieldBodyStatement)
374  GEN_VISIT(SgOmpAtomicStatement)
375  GEN_VISIT(SgOmpMasterStatement)
376  GEN_VISIT(SgOmpTaskyieldStatement)
377  GEN_VISIT(SgOmpSectionStatement)
378  GEN_VISIT(SgOmpOrderedStatement)
379  GEN_VISIT(SgOmpOrderedDependStatement)
380  GEN_VISIT(SgOmpWorkshareStatement)
381  GEN_VISIT(SgOmpCriticalStatement)
382  GEN_VISIT(SgUpirBodyStatement)
383  GEN_VISIT(SgFortranIncludeLine)
384  GEN_VISIT(SgFortranNonblockedDo)
385  GEN_VISIT(SgFuncDecl_attr)
386  GEN_VISIT(SgFunctionCallExp)
387  GEN_VISIT(SgFunctionDeclaration)
388  GEN_VISIT(SgFunctionDefinition)
389  GEN_VISIT(SgFunctionParameterScope)
390  GEN_VISIT(SgFunctionModifier)
391  GEN_VISIT(SgFunctionParameterList)
392  GEN_VISIT(SgFunctionParameterRefExp)
393  GEN_VISIT(SgFunctionParameterTypeList)
394  GEN_VISIT(SgFunctionRefExp)
395  GEN_VISIT(SgFunctionSymbol)
396  GEN_VISIT(SgFunctionType)
397  GEN_VISIT(SgFunctionTypeSymbol)
398  GEN_VISIT(SgFunctionTypeTable)
399  GEN_VISIT(SgTypeTable)
400  GEN_VISIT(SgGlobal)
401  GEN_VISIT(SgGotoStatement)
402  GEN_VISIT(SgGraph)
403  GEN_VISIT(SgGraphEdge)
404  GEN_VISIT(SgGraphEdgeList)
405  GEN_VISIT(SgGraphNode)
406  GEN_VISIT(SgGraphNodeList)
407  GEN_VISIT(SgGreaterOrEqualOp)
408  GEN_VISIT(SgGreaterThanOp)
409  GEN_VISIT(SgIOItemExpression)
410  GEN_VISIT(SgIOStatement)
411  GEN_VISIT(SgIdentDirectiveStatement)
412  GEN_VISIT(SgIfDirectiveStatement)
413  GEN_VISIT(SgIfStmt)
414  GEN_VISIT(SgIfdefDirectiveStatement)
415  GEN_VISIT(SgIfndefDirectiveStatement)
416  GEN_VISIT(SgImageControlStatement)
417  GEN_VISIT(SgImagPartOp)
418  GEN_VISIT(SgImplicitStatement)
419  GEN_VISIT(SgImpliedDo)
420  GEN_VISIT(SgImportStatement)
421  GEN_VISIT(SgIncidenceDirectedGraph)
422  GEN_VISIT(SgIncidenceUndirectedGraph)
423  GEN_VISIT(SgIncludeDirectiveStatement)
424  GEN_VISIT(SgIncludeFile)
426  GEN_VISIT(SgInitializedName)
427  GEN_VISIT(SgInitializer)
428  GEN_VISIT(SgInquireStatement)
430  GEN_VISIT(SgIntVal)
431  GEN_VISIT(SgIntegerDivideOp)
432  GEN_VISIT(SgIntegerDivideAssignOp)
433  GEN_VISIT(SgInterfaceBody)
434  GEN_VISIT(SgHeaderFileBody)
435  GEN_VISIT(SgHeaderFileReport)
436  GEN_VISIT(SgInterfaceStatement)
437  GEN_VISIT(SgInterfaceSymbol)
438  GEN_VISIT(SgIntrinsicSymbol)
439  GEN_VISIT(SgIsOp)
440  GEN_VISIT(SgIsNotOp)
441  GEN_VISIT(SgIorAssignOp)
442  GEN_VISIT(SgKeyDatumPair)
443  GEN_VISIT(SgCudaKernelExecConfig)
444  GEN_VISIT(SgCudaKernelCallExp)
445  GEN_VISIT(SgLabelRefExp)
446  GEN_VISIT(SgLabelStatement)
447  GEN_VISIT(SgLabelSymbol)
448  GEN_VISIT(SgLambdaCapture)
449  GEN_VISIT(SgLambdaCaptureList)
450  GEN_VISIT(SgLambdaExp)
451  GEN_VISIT(SgLambdaRefExp)
452  GEN_VISIT(SgLeftDivideOp)
453  GEN_VISIT(SgLessOrEqualOp)
454  GEN_VISIT(SgLessThanOp)
455  GEN_VISIT(SgLineDirectiveStatement)
457  GEN_VISIT(SgLinkageModifier)
458  GEN_VISIT(SgListComprehension)
459  GEN_VISIT(SgListExp)
460  GEN_VISIT(SgLocatedNode)
461  GEN_VISIT(SgLocatedNodeSupport)
462  GEN_VISIT(SgLongDoubleVal)
463  GEN_VISIT(SgLongIntVal)
464  GEN_VISIT(SgLongLongIntVal)
465  GEN_VISIT(SgLshiftAssignOp)
466  GEN_VISIT(SgLshiftOp)
467  GEN_VISIT(SgMagicColonExp)
468  GEN_VISIT(SgMatrixExp)
469  GEN_VISIT(SgMatrixTransposeOp)
470  GEN_VISIT(SgMemberFunctionDeclaration)
471  GEN_VISIT(SgMemberFunctionRefExp)
472  GEN_VISIT(SgMemberFunctionSymbol)
473  GEN_VISIT(SgMemberFunctionType)
474  GEN_VISIT(SgMembershipOp)
476  GEN_VISIT(SgMinusAssignOp)
477  GEN_VISIT(SgMinusMinusOp)
478  GEN_VISIT(SgMinusOp)
479  GEN_VISIT(SgModAssignOp)
480  GEN_VISIT(SgModOp)
481  GEN_VISIT(SgModifier)
482  GEN_VISIT(SgModifierNodes)
483  GEN_VISIT(SgModifierType)
484  GEN_VISIT(SgModuleStatement)
485  GEN_VISIT(SgModuleSymbol)
486  GEN_VISIT(SgMultAssignOp)
487  GEN_VISIT(SgMultiplyOp)
488  GEN_VISIT(SgName)
489  GEN_VISIT(SgNameGroup)
490  GEN_VISIT(SgNamedType)
491  GEN_VISIT(SgNamelistStatement)
495  GEN_VISIT(SgNamespaceSymbol)
496  GEN_VISIT(SgNaryOp)
497  GEN_VISIT(SgNaryBooleanOp)
498  GEN_VISIT(SgNaryComparisonOp)
499  GEN_VISIT(SgNewExp)
500  GEN_VISIT(SgNode)
501  GEN_VISIT(SgNoexceptOp)
502  GEN_VISIT(SgNotEqualOp)
503  GEN_VISIT(SgNotOp)
504  GEN_VISIT(SgNonMembershipOp)
505  GEN_VISIT(SgNonrealDecl)
506  GEN_VISIT(SgNonrealRefExp)
507  GEN_VISIT(SgNonrealSymbol)
508  GEN_VISIT(SgNonrealType)
509  GEN_VISIT(SgNonrealBaseClass)
510  GEN_VISIT(SgNullExpression)
511  GEN_VISIT(SgNullptrValExp)
512  GEN_VISIT(SgNullStatement)
513  GEN_VISIT(SgNullifyStatement)
514  GEN_VISIT(SgOmpOrderedClause)
515  GEN_VISIT(SgOmpNowaitClause)
516  GEN_VISIT(SgOmpReadClause)
517  GEN_VISIT(SgOmpReverseOffloadClause)
518  GEN_VISIT(SgOmpUnifiedAddressClause)
523  GEN_VISIT(SgOmpWriteClause)
524  GEN_VISIT(SgOmpThreadsClause)
525  GEN_VISIT(SgOmpSimdClause)
526  GEN_VISIT(SgOmpUpdateClause)
527  GEN_VISIT(SgOmpCaptureClause)
528  GEN_VISIT(SgOmpSeqCstClause)
529  GEN_VISIT(SgOmpAcqRelClause)
530  GEN_VISIT(SgOmpReleaseClause)
531  GEN_VISIT(SgOmpAcquireClause)
532  GEN_VISIT(SgOmpRelaxedClause)
533  GEN_VISIT(SgOmpUntiedClause)
534  GEN_VISIT(SgOmpMergeableClause)
535  GEN_VISIT(SgOmpDefaultClause)
536  GEN_VISIT(SgOmpCollapseClause)
537  GEN_VISIT(SgOmpIfClause)
538  GEN_VISIT(SgOmpFinalClause)
539  GEN_VISIT(SgOmpPriorityClause)
540  GEN_VISIT(SgUpirNumUnitsField)
541  GEN_VISIT(SgOmpParallelClause)
542  GEN_VISIT(SgOmpSectionsClause)
543  GEN_VISIT(SgOmpForClause)
544  GEN_VISIT(SgOmpTaskgroupClause)
545  GEN_VISIT(SgOmpNumTeamsClause)
546  GEN_VISIT(SgOmpGrainsizeClause)
547  GEN_VISIT(SgOmpDetachClause)
548  GEN_VISIT(SgOmpNumTasksClause)
549  GEN_VISIT(SgOmpNogroupClause)
550  GEN_VISIT(SgOmpHintClause)
551  GEN_VISIT(SgOmpOrderClause)
552  GEN_VISIT(SgOmpBindClause)
553  GEN_VISIT(SgOmpThreadLimitClause)
554  GEN_VISIT(SgOmpExpressionClause)
555  GEN_VISIT(SgOmpCopyprivateClause)
556  GEN_VISIT(SgOmpPrivateClause)
557  GEN_VISIT(SgOmpFirstprivateClause)
558  GEN_VISIT(SgOmpNontemporalClause)
559  GEN_VISIT(SgOmpInclusiveClause)
560  GEN_VISIT(SgOmpExclusiveClause)
561  GEN_VISIT(SgOmpIsDevicePtrClause)
562  GEN_VISIT(SgOmpUseDevicePtrClause)
563  GEN_VISIT(SgOmpUseDeviceAddrClause)
564  GEN_VISIT(SgOmpSharedClause)
565  GEN_VISIT(SgOmpCopyinClause)
566  GEN_VISIT(SgOmpLastprivateClause)
567  GEN_VISIT(SgOmpReductionClause)
568  GEN_VISIT(SgOmpInReductionClause)
569  GEN_VISIT(SgOmpTaskReductionClause)
570  GEN_VISIT(SgOmpAllocateClause)
571  GEN_VISIT(SgOmpAllocatorClause)
572  GEN_VISIT(SgOmpWhenClause)
573  GEN_VISIT(SgOmpVariablesClause)
574  GEN_VISIT(SgOmpScheduleClause)
575  GEN_VISIT(SgOmpDistScheduleClause)
576  GEN_VISIT(SgOmpDefaultmapClause)
577  GEN_VISIT(SgOmpDependClause)
578  GEN_VISIT(SgOmpAffinityClause)
579  GEN_VISIT(SgOmpClause)
580 
581  GEN_VISIT(SgOpenclAccessModeModifier)
582  GEN_VISIT(SgOpenStatement)
583  GEN_VISIT(SgOptions)
584  GEN_VISIT(SgOrOp)
585  GEN_VISIT(SgParameterStatement)
587  GEN_VISIT(SgPartialFunctionType)
588  GEN_VISIT(SgPassStatement)
589  GEN_VISIT(SgPlusAssignOp)
590  GEN_VISIT(SgPlusPlusOp)
591  GEN_VISIT(SgPntrArrRefExp)
592  GEN_VISIT(SgPointerAssignOp)
593  GEN_VISIT(SgPointerDerefExp)
594  GEN_VISIT(SgPointerMemberType)
595  GEN_VISIT(SgPointerType)
596  GEN_VISIT(SgPowerOp)
597  GEN_VISIT(SgPragma)
598  GEN_VISIT(SgPragmaDeclaration)
599  GEN_VISIT(SgPrintStatement)
600  GEN_VISIT(SgProcedureHeaderStatement)
601  GEN_VISIT(SgProgramHeaderStatement)
602  GEN_VISIT(SgProject)
603  GEN_VISIT(SgPseudoDestructorRefExp)
604  GEN_VISIT(SgQualifiedName)
605  GEN_VISIT(SgQualifiedNameType)
606  GEN_VISIT(SgRangeExp)
607  GEN_VISIT(SgRangeBasedForStatement)
608  GEN_VISIT(SgReadStatement)
609  GEN_VISIT(SgRealPartOp)
610  GEN_VISIT(SgRefExp)
611  GEN_VISIT(SgReferenceType)
612  GEN_VISIT(SgRenamePair)
613  GEN_VISIT(SgRenameSymbol)
614  GEN_VISIT(SgReturnStmt)
615  GEN_VISIT(SgRewindStatement)
616  GEN_VISIT(SgRshiftAssignOp)
617  GEN_VISIT(SgRshiftOp)
618  GEN_VISIT(SgRvalueReferenceType)
619  GEN_VISIT(SgScopeOp)
620  GEN_VISIT(SgScopeStatement)
621  GEN_VISIT(SgSequenceStatement)
622  GEN_VISIT(SgSetComprehension)
623  GEN_VISIT(SgShortVal)
624  GEN_VISIT(SgSizeOfOp)
625  GEN_VISIT(SgSourceFile)
626  GEN_VISIT(SgSpaceshipOp)
627  GEN_VISIT(SgSpawnStmt)
628  GEN_VISIT(SgSyncAllStatement)
629  GEN_VISIT(SgSyncImagesStatement)
630  GEN_VISIT(SgSyncMemoryStatement)
631  GEN_VISIT(SgSyncTeamStatement)
632  GEN_VISIT(SgLockStatement)
633  GEN_VISIT(SgUnlockStatement)
634  GEN_VISIT(SgProcessControlStatement)
635  GEN_VISIT(SgSpecialFunctionModifier)
636  GEN_VISIT(SgStatement)
638  GEN_VISIT(SgStmtDeclarationStatement)
639  GEN_VISIT(SgStatementExpression)
641  GEN_VISIT(SgStorageModifier)
642  GEN_VISIT(SgStringConversion)
644  GEN_VISIT(SgStringVal)
645  GEN_VISIT(SgStructureModifier)
646  GEN_VISIT(SgSubscriptExpression)
647  GEN_VISIT(SgSubtractOp)
648  GEN_VISIT(SgSupport)
649  GEN_VISIT(SgSwitchStatement)
650  GEN_VISIT(SgSymbol)
651  GEN_VISIT(SgSymbolTable)
652  GEN_VISIT(SgTemplateArgument)
653  GEN_VISIT(SgTemplateArgumentList)
654  GEN_VISIT(SgTemplateDeclaration)
655  GEN_VISIT(SgTemplateClassDeclaration)
656  GEN_VISIT(SgTemplateClassSymbol)
658  GEN_VISIT(SgTemplateFunctionRefExp)
659  GEN_VISIT(SgTemplateFunctionSymbol)
664  GEN_VISIT(SgTemplateTypedefSymbol)
666  GEN_VISIT(SgTemplateVariableSymbol)
667  GEN_VISIT(SgTemplateClassDefinition)
669  GEN_VISIT(SgTemplateInstantiationDecl)
670  GEN_VISIT(SgTemplateInstantiationDefn)
675  GEN_VISIT(SgTemplateParameter)
676  GEN_VISIT(SgTemplateParameterVal)
677  GEN_VISIT(SgTemplateParameterList)
678  GEN_VISIT(SgTemplateSymbol)
679  GEN_VISIT(SgTemplateType)
680  GEN_VISIT(SgThisExp)
681  GEN_VISIT(SgTypeTraitBuiltinOperator)
682  GEN_VISIT(SgSuperExp)
683  GEN_VISIT(SgThrowOp)
684  GEN_VISIT(SgToken)
685  GEN_VISIT(SgTryStmt)
686  GEN_VISIT(SgTupleExp)
687  GEN_VISIT(SgType)
688  GEN_VISIT(SgTypeBool)
689  GEN_VISIT(SgTypeChar)
690  GEN_VISIT(SgTypeChar16)
691  GEN_VISIT(SgTypeChar32)
692  GEN_VISIT(SgTypeComplex)
693  GEN_VISIT(SgTypeDefault)
694  GEN_VISIT(SgTypeExpression)
695  GEN_VISIT(SgTypeLabel)
696  GEN_VISIT(SgTypeDouble)
697  GEN_VISIT(SgTypeEllipse)
698  GEN_VISIT(SgTypeFixed)
699  GEN_VISIT(SgTypeFloat)
700  GEN_VISIT(SgTypeFloat128)
701  GEN_VISIT(SgTypeFloat80)
702  GEN_VISIT(SgTypeGlobalVoid)
703  GEN_VISIT(SgTypeIdOp)
704  GEN_VISIT(SgTypeImaginary)
705  GEN_VISIT(SgTypeInt)
706  GEN_VISIT(SgTypeLong)
707  GEN_VISIT(SgTypeLongDouble)
708  GEN_VISIT(SgTypeLongLong)
709  GEN_VISIT(SgTypeModifier)
710  GEN_VISIT(SgTypeMatrix)
711  GEN_VISIT(SgTypeTuple)
712  GEN_VISIT(SgTypeNullptr)
713  GEN_VISIT(SgTypeOfType)
714  GEN_VISIT(SgTypeShort)
715  GEN_VISIT(SgTypeSigned128bitInteger)
716  GEN_VISIT(SgTypeSignedChar)
717  GEN_VISIT(SgTypeSignedInt)
718  GEN_VISIT(SgTypeSignedLong)
719  GEN_VISIT(SgTypeSignedLongLong)
720  GEN_VISIT(SgTypeSignedShort)
721  GEN_VISIT(SgTypeString)
722  GEN_VISIT(SgTypeUnknown)
723  GEN_VISIT(SgTypeUnsigned128bitInteger)
724  GEN_VISIT(SgTypeUnsignedChar)
725  GEN_VISIT(SgTypeUnsignedInt)
726  GEN_VISIT(SgTypeUnsignedLong)
727  GEN_VISIT(SgTypeUnsignedLongLong)
728  GEN_VISIT(SgTypeUnsignedShort)
729  GEN_VISIT(SgTypeVoid)
730  GEN_VISIT(SgTypeWchar)
731  GEN_VISIT(SgTypedefDeclaration)
732  GEN_VISIT(SgTypedefSeq)
733  GEN_VISIT(SgTypedefSymbol)
734  GEN_VISIT(SgTypedefType)
735  GEN_VISIT(SgUPC_AccessModifier)
736  GEN_VISIT(SgUnaryAddOp)
737  GEN_VISIT(SgUnaryOp)
738  GEN_VISIT(SgUndefDirectiveStatement)
739  GEN_VISIT(SgUndirectedGraphEdge)
741  GEN_VISIT(SgUnknownFile)
742  GEN_VISIT(SgUnparse_Info)
743  GEN_VISIT(SgUnsignedCharVal)
744  GEN_VISIT(SgUnsignedIntVal)
745  GEN_VISIT(SgUnsignedLongLongIntVal)
746  GEN_VISIT(SgUnsignedLongVal)
747  GEN_VISIT(SgUnsignedShortVal)
748  GEN_VISIT(SgUpcBarrierStatement)
749  GEN_VISIT(SgUpcBlocksizeofExpression)
750  GEN_VISIT(SgUpcElemsizeofExpression)
751  GEN_VISIT(SgUpcFenceStatement)
752  GEN_VISIT(SgUpcForAllStatement)
753  GEN_VISIT(SgUpcLocalsizeofExpression)
754  GEN_VISIT(SgUpcMythread)
755  GEN_VISIT(SgUpcNotifyStatement)
756  GEN_VISIT(SgUpcThreads)
757  GEN_VISIT(SgUpcWaitStatement)
758  GEN_VISIT(SgUseStatement)
759  GEN_VISIT(SgUserDefinedBinaryOp)
760  GEN_VISIT(SgUserDefinedUnaryOp)
761  GEN_VISIT(SgUsingDeclarationStatement)
762  GEN_VISIT(SgUsingDirectiveStatement)
763  GEN_VISIT(SgValueExp)
764  GEN_VISIT(SgVarArgCopyOp)
765  GEN_VISIT(SgVarArgEndOp)
766  GEN_VISIT(SgVarArgOp)
767  GEN_VISIT(SgVarArgStartOneOperandOp)
768  GEN_VISIT(SgVarArgStartOp)
769  GEN_VISIT(SgVarRefExp)
770  GEN_VISIT(SgVariableDeclaration)
771  GEN_VISIT(SgVariableDefinition)
772  GEN_VISIT(SgVariableSymbol)
773  GEN_VISIT(SgVariantExpression)
774  GEN_VISIT(SgVariantStatement)
775  GEN_VISIT(SgVoidVal)
776  GEN_VISIT(SgWaitStatement)
777  GEN_VISIT(SgWarningDirectiveStatement)
778  GEN_VISIT(SgWithStatement)
779  GEN_VISIT(SgWcharVal)
780  GEN_VISIT(SgWhereStatement)
781  GEN_VISIT(SgWhileStmt)
782  GEN_VISIT(SgWriteStatement)
783  GEN_VISIT(SgXorAssignOp)
784  GEN_VISIT(SgYieldExpression)
785  GEN_VISIT(Sg_File_Info)
786  GEN_VISIT(SgTypeCAFTeam)
787  GEN_VISIT(SgCAFWithTeamStatement)
788  GEN_VISIT(SgCAFCoExpression)
789  GEN_VISIT(SgCallExpression)
790  GEN_VISIT(SgTypeCrayPointer)
791  GEN_VISIT(SgClassExp)
792 // GEN_VISIT(SgClassPropertyList)
793 
794 /*
795  GEN_VISIT(SgBinaryComposite)
796  GEN_VISIT(SgComprehensionList)
797  *
798  GEN_VISIT(SgDirectedGraph)
799  GEN_VISIT(SgDirectedGraphEdge)
800  GEN_VISIT(SgDirectedGraphNode)
801 
802  GEN_VISIT(SgUnknownMemberFunctionType)
803 */
804 
805  RoseVisitor rv;
806  };
807 
808 #undef GEN_VISIT
809 
810  template <class RoseVisitor>
811  inline
812  typename std::remove_const<typename std::remove_reference<RoseVisitor>::type>::type
813  _dispatch(RoseVisitor&& rv, SgNode* n)
814  {
815  typedef typename std::remove_reference<RoseVisitor>::type RoseVisitorNoref;
816  typedef typename std::remove_const<RoseVisitorNoref>::type RoseHandler;
817 
818  ROSE_ASSERT(n);
819 
820  VisitDispatcher<RoseHandler> vis( std::forward<RoseVisitor>(rv),
821  std::is_lvalue_reference<RoseVisitor>()
822  );
823 
824  n->accept(vis);
825  return std::move(vis).rv;
826  }
827 
828 
884 #if 0
885 #endif
896 
897  template <class RoseVisitor>
898  inline
899  typename std::remove_const<typename std::remove_reference<RoseVisitor>::type>::type
900  dispatch(RoseVisitor&& rv, SgNode* n)
901  {
902  //~ return std::move(rv);
903  return _dispatch(std::forward<RoseVisitor>(rv), n);
904  }
905 
906  template <class RoseVisitor>
907  inline
908  typename std::remove_const<typename std::remove_reference<RoseVisitor>::type>::type
909  dispatch(RoseVisitor&& rv, const SgNode* n)
910  {
911  //~ return std::move(rv);
912  return _dispatch(std::forward<RoseVisitor>(rv), const_cast<SgNode*>(n));
913  }
914 
924  template <class SageNode>
926  {
927  void handle(SageNode&) {}
928  };
929 
937  template <class AncestorNode, class QualSgNode>
938  struct AncestorTypeFinder : DefaultHandler<const SgProject>
939  {
941  typedef std::pair<AncestorNode*, QualSgNode*> Pair;
942 
943  Pair res;
944 
946  : Base(), res(NULL, NULL)
947  {}
948 
949  // handling of const SgProject is outsourced to DefaultHandler
950  // thus, AncestorNode = const SgProject does not cause conflicts
951  using Base::handle;
952 
953  void handle(QualSgNode& n) { res.second = n.get_parent(); }
954  void handle(AncestorNode& n) { res.first = &n; }
955 
956  operator Pair() const { return res; }
957  };
958 
961  template <class AncestorNode, class QualSgNode>
962  AncestorNode* _ancestor(QualSgNode& n)
963  {
964  typedef AncestorTypeFinder<AncestorNode, QualSgNode> AncestorFinder;
965 
966  typename AncestorFinder::Pair res(NULL, n.get_parent());
967 
968  while (res.second != NULL)
969  {
970  res = (typename AncestorFinder::Pair) sg::dispatch(AncestorFinder(), res.second);
971  }
972 
973  return res.first;
974  }
975 
987  template <class AncestorNode>
988  AncestorNode* ancestor(SgNode* n)
989  {
990  if (n == NULL) return NULL;
991 
992  return _ancestor<AncestorNode>(*n);
993  }
994 
996  template <class AncestorNode>
997  const AncestorNode* ancestor(const SgNode* n)
998  {
999  if (n == NULL) return NULL;
1000 
1001  return _ancestor<const AncestorNode>(*n);
1002  }
1003 
1005  template <class AncestorNode>
1006  AncestorNode& ancestor(SgNode& n)
1007  {
1008  AncestorNode* res = _ancestor<AncestorNode>(n);
1009 
1010  ROSE_ASSERT(res);
1011  return *res;
1012  }
1013 
1015  template <class AncestorNode>
1016  const AncestorNode& ancestor(const SgNode& n)
1017  {
1018  const AncestorNode* res = _ancestor<const AncestorNode>(n);
1019 
1020  ROSE_ASSERT(res);
1021  return *res;
1022  }
1023 
1025  template <class SageNode>
1026  struct TypeRecoveryHandler
1027  {
1028  typedef typename ConstLike<SageNode, SgNode>::type SgBaseNode;
1029 
1030  TypeRecoveryHandler(const char* f = 0, size_t ln = 0)
1031  : res(NULL), loc(f), loc_ln(ln)
1032  {}
1033 
1034  TypeRecoveryHandler(TypeRecoveryHandler&&) = default;
1035  TypeRecoveryHandler& operator=(TypeRecoveryHandler&&) = default;
1036 
1037  operator SageNode* ()&& { return res; }
1038 
1039  void handle(SgBaseNode& n) { unexpected_node(n, loc, loc_ln); }
1040  void handle(SageNode& n) { res = &n; }
1041 
1042  private:
1043  SageNode* res;
1044  const char* loc;
1045  size_t loc_ln;
1046 
1047  TypeRecoveryHandler() = delete;
1048  TypeRecoveryHandler(const TypeRecoveryHandler&) = delete;
1049  TypeRecoveryHandler& operator=(const TypeRecoveryHandler&) = delete;
1050  };
1051 
1052 
1061  template <class SageNode>
1062  SageNode* assert_sage_type(SgNode* n, const char* f = 0, size_t ln = 0)
1063  {
1064  return sg::dispatch(TypeRecoveryHandler<SageNode>(f, ln), n);
1065  }
1066 
1067  template <class SageNode>
1068  const SageNode* assert_sage_type(const SgNode* n, const char* f = 0, size_t ln = 0)
1069  {
1070  return sg::dispatch(TypeRecoveryHandler<const SageNode>(f, ln), n);
1071  }
1072 
1073  template <class SageNode>
1074  SageNode& assert_sage_type(SgNode& n, const char* f = 0, size_t ln = 0)
1075  {
1076  return *sg::dispatch(TypeRecoveryHandler<SageNode>(f, ln), &n);
1077  }
1078 
1079  template <class SageNode>
1080  const SageNode& assert_sage_type(const SgNode& n, const char* f = 0, size_t ln = 0)
1081  {
1082  return *sg::dispatch(TypeRecoveryHandler<const SageNode>(f, ln), &n);
1083  }
1085 
1088  static inline
1089  void swap_parent(SgNode* lhs, SgNode* rhs)
1090  {
1091  SgNode* tmp = lhs->get_parent();
1092 
1093  lhs->set_parent(rhs->get_parent());
1094  rhs->set_parent(tmp);
1095  }
1096 
1100  static inline
1101  void swap_parent(void*, void*) {}
1102 
1110  template <class SageNode, class SageChild>
1111  void swap_child(SageNode& lhs, SageNode& rhs, SageChild* (SageNode::*getter) () const, void (SageNode::*setter) (SageChild*))
1112  {
1113  SageChild* lhs_child = (lhs.*getter)();
1114  SageChild* rhs_child = (rhs.*getter)();
1115  ROSE_ASSERT(lhs_child && rhs_child);
1116 
1117  (lhs.*setter)(rhs_child);
1118  (rhs.*setter)(lhs_child);
1119 
1120  swap_parent(lhs_child, rhs_child);
1121  }
1122 
1123 
1126  template <class SageNode>
1128  {
1129  typedef void (*TransformHandlerFn)(SageNode*);
1130 
1131  explicit
1132  TraversalFunction(TransformHandlerFn fun)
1133  : fn(fun)
1134  {}
1135 
1136  void handle(SgNode&) { /* ignore */ }
1137  void handle(SageNode& n) { fn(&n); }
1138 
1139  TransformHandlerFn fn;
1140  };
1141 
1144  template <class SageNode>
1145  static inline
1147  createTraversalFunction(void (* fn)(SageNode*))
1148  {
1149  return TraversalFunction<SageNode>(fn);
1150  }
1151 
1152  //
1153  // function type extractor
1154  // see https://stackoverflow.com/questions/28033251/can-you-extract-types-from-template-parameter-function-signature
1155 
1156 
1157  template <class GVisitor>
1159  {
1160  explicit
1161  TraversalClass(GVisitor gv)
1162  : gvisitor(gv)
1163  //~ : gvisitor(std::move(gv))
1164  {}
1165 
1166  void visit(SgNode* n)
1167  {
1168  gvisitor = sg::dispatch(gvisitor, n);
1169  }
1170 
1171  // GVisitor&& visitor() { return std::move(gvisitor); }
1172  GVisitor visitor() { return gvisitor; }
1173 
1174  GVisitor gvisitor;
1175  };
1176 
1177 
1178 
1185  template <class F>
1186  static inline
1187  F
1188  forAllNodes(F fn, SgNode* root, AstSimpleProcessing::Order order = postorder)
1189  {
1190  ROSE_ASSERT(root);
1191 
1192  TraversalClass<F> tt(fn);
1193  //~ TraversalClass<F> tt(std::move(fn));
1194 
1195  tt.traverse(root, order);
1196  return tt.visitor();
1197  }
1198 
1199  template <class SageNode>
1200  static inline
1201  void
1202  forAllNodes(void (*fn)(SageNode*), SgNode* root, AstSimpleProcessing::Order order = postorder)
1203  {
1204  forAllNodes(createTransformExecutor(fn), root, order);
1205  }
1206 
1207 #if !defined(NDEBUG)
1208  static inline
1209  std::string nodeType(const SgNode& n)
1210  {
1211  return typeid(n).name();
1212  }
1213 
1214  static inline
1215  std::string nodeType(const SgNode* n)
1216  {
1217  if (n == NULL) return "<null>";
1218 
1219  return nodeType(*n);
1220  }
1221 #endif
1222 
1223  template <class GVisitor>
1225  {
1226  explicit
1227  DispatchHelper(GVisitor gv, SgNode* p)
1228  : gvisitor(std::move(gv)), parent(p), cnt(0)
1229  {}
1230 
1231  void operator()(SgNode* n)
1232  {
1233  ++cnt;
1234 
1235 #if 0
1236  if (n == NULL)
1237  {
1238  std::cerr << "succ(" << nodeType(parent) << ", " << cnt << ") is null" << std::endl;
1239  return;
1240  }
1241 #endif
1242 
1243  if (n != NULL) gvisitor = sg::dispatch(std::move(gvisitor), n);
1244  }
1245 
1246  operator GVisitor()&& { return std::move(gvisitor); }
1247 
1248  GVisitor gvisitor;
1249  SgNode* parent;
1250  size_t cnt;
1251  };
1252 
1253 
1254  template <class GVisitor>
1255  static inline
1257  dispatchHelper(GVisitor gv, SgNode* parent = NULL)
1258  {
1259  return DispatchHelper<GVisitor>(std::move(gv), parent);
1260  }
1261 
1262  template <class GVisitor>
1263  static inline
1264  GVisitor traverseChildren(GVisitor gv, SgNode& n)
1265  {
1266  std::vector<SgNode*> successors = n.get_traversalSuccessorContainer();
1267 
1268  return std::for_each(successors.begin(), successors.end(), dispatchHelper(std::move(gv), &n));
1269  }
1270 
1271  template <class GVisitor>
1272  static inline
1273  GVisitor traverseChildren(GVisitor gv, SgNode* n)
1274  {
1275  return traverseChildren(gv, sg::deref(n));
1276  }
1277 
1278  template <class SageParent, class SageChild>
1279  void linkParentChild(SageParent& parent, SageChild& child, void (SageParent::*setter)(SageChild*))
1280  {
1281  (parent.*setter)(&child);
1282  child.set_parent(&parent);
1283  }
1284 
1288  template <class SageNode>
1289  typename SageNode::base_node_type&
1290  asBaseType(SageNode& n) { return n; }
1291 
1292  template <class SageNode>
1293  const typename SageNode::base_node_type&
1294  asBaseType(const SageNode& n) { return n; }
1295 
1296  template <class SageNode>
1297  typename SageNode::base_node_type*
1298  asBaseType(SageNode* n) { return n; }
1299 
1300  template <class SageNode>
1301  const typename SageNode::base_node_type*
1302  asBaseType(const SageNode* n) { return n; }
1304 }
1305 #endif /* _SAGEGENERIC_H */
SgOmpNogroupClause
Definition: Cxx_Grammar.h:91013
SgWhereStatement
Definition: Cxx_Grammar.h:186844
SgTemplateFunctionDeclaration
Definition: Cxx_Grammar.h:156666
SgTemplateType
Definition: Cxx_Grammar.h:65255
SgOmpSeqCstClause
Definition: Cxx_Grammar.h:85436
SgCudaKernelExecConfig
Definition: Cxx_Grammar.h:307314
SgTypeVoid
Definition: Cxx_Grammar.h:50944
SgLocatedNode
This class represents the notion of an expression or statement which has a position within the source...
Definition: Cxx_Grammar.h:74391
SgTemplateTypedefDeclaration
Definition: Cxx_Grammar.h:148453
SgBoolValExp
This class represents a boolean value (expression value).
Definition: Cxx_Grammar.h:275163
SgOmpCaptureClause
Definition: Cxx_Grammar.h:83720
SgSyncImagesStatement
Definition: Cxx_Grammar.h:226778
SgEnumSymbol
Definition: Cxx_Grammar.h:326958
SgOmpTeamsDistributeStatement
Definition: Cxx_Grammar.h:213419
SgModifier
This class represents the base class of a number of IR nodes define modifiers within the C++ grammar.
Definition: Cxx_Grammar.h:8141
SgTypeFloat128
Definition: Cxx_Grammar.h:72966
SgOmpPrivateClause
Definition: Cxx_Grammar.h:105767
SgBitAndOp
Definition: Cxx_Grammar.h:246671
SgOmpThreadLimitClause
Definition: Cxx_Grammar.h:97115
SgTypeWchar
Definition: Cxx_Grammar.h:51886
SgNotOp
Definition: Cxx_Grammar.h:231509
SgCatchStatementSeq
This class represents the concept of a C++ sequence of catch statements.
Definition: Cxx_Grammar.h:179846
SgMemberFunctionType
Definition: Cxx_Grammar.h:62756
SgOmpScheduleClause
Definition: Cxx_Grammar.h:115874
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
ROSE_VisitorPatternDefaultBase
Definition: Cxx_Grammar.h:333172
SgOmpTaskloopStatement
Definition: Cxx_Grammar.h:200331
SgDataStatementGroup
Definition: Cxx_Grammar.h:41478
SgVarArgStartOp
Definition: Cxx_Grammar.h:298243
SgTemplateTypedefSymbol
Definition: Cxx_Grammar.h:328317
SgLineDirectiveStatement
Definition: Cxx_Grammar.h:165929
SgTypeString
This class represents a string type used for SgStringVal IR node.
Definition: Cxx_Grammar.h:56596
SgOmpDynamicAllocatorsClause
Definition: Cxx_Grammar.h:88868
SgClassDecl_attr
Definition: Cxx_Grammar.h:19890
SgOmpClause
Definition: Cxx_Grammar.h:79404
SgNameGroup
Definition: Cxx_Grammar.h:39677
SgIfndefDirectiveStatement
Definition: Cxx_Grammar.h:163313
SgWcharVal
Definition: Cxx_Grammar.h:277535
SgVarArgOp
Definition: Cxx_Grammar.h:298722
SgMinusMinusOp
Definition: Cxx_Grammar.h:232882
SgTypedefDeclaration
This class represents the notion of a typedef declaration.
Definition: Cxx_Grammar.h:147816
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
SgUpcBlocksizeofExpression
Definition: Cxx_Grammar.h:290263
SgThrowOp
This class represents the C++ throw expression (handled as a unary operator).
Definition: Cxx_Grammar.h:234820
SgPointerMemberType
Definition: Cxx_Grammar.h:57997
SgOmpCriticalStatement
Definition: Cxx_Grammar.h:216035
SgFortranDo
Definition: Cxx_Grammar.h:132466
SgNullifyStatement
Definition: Cxx_Grammar.h:187812
SgOmpMasterTaskloopSimdStatement
Definition: Cxx_Grammar.h:212111
SgExpressionRoot
Definition: Cxx_Grammar.h:230162
SgTemplateFunctionRefExp
Definition: Cxx_Grammar.h:313338
SgOmpTeamsLoopStatement
Definition: Cxx_Grammar.h:215163
SgAllocateStatement
Definition: Cxx_Grammar.h:190125
SgRenameSymbol
Definition: Cxx_Grammar.h:324691
SgStatementFunctionStatement
Definition: Cxx_Grammar.h:149434
SgLambdaRefExp
This class represents a lambda expression.
Definition: Cxx_Grammar.h:307795
SgCommaOpExp
Definition: Cxx_Grammar.h:248018
SgClinkageEndStatement
Definition: Cxx_Grammar.h:140935
SgElseifDirectiveStatement
Definition: Cxx_Grammar.h:165057
SgOmpDetachClause
Definition: Cxx_Grammar.h:99268
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
SgLongDoubleVal
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:282701
SgTypeDouble
Definition: Cxx_Grammar.h:52828
SgNamespaceDeclarationStatement
This class represents the concept of a C++ namespace declaration.
Definition: Cxx_Grammar.h:145393
SgPartialFunctionModifierType
Definition: Cxx_Grammar.h:63784
SgFunctionType
This class represents a type for all functions.
Definition: Cxx_Grammar.h:62210
SgOmpSectionStatement
Definition: Cxx_Grammar.h:195077
SgBaseClass
Definition: Cxx_Grammar.h:27083
SgFloatVal
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:281771
SgRefExp
This class represents the "&" operator (applied to any lvalue).
Definition: Cxx_Grammar.h:294251
sg::deref
T & deref(T *ptr, const char *file=0, size_t ln=0)
dereferences an object (= checked dereference in debug mode)
Definition: sageGeneric.h:98
SgCaseOptionStmt
This class represents the concept of a C and C++ case option (used within a switch statement).
Definition: Cxx_Grammar.h:174649
SgOmpDependClause
Definition: Cxx_Grammar.h:114046
SgAsteriskShapeExp
Definition: Cxx_Grammar.h:302428
SgPrintStatement
Definition: Cxx_Grammar.h:181327
SgChar32Val
Definition: Cxx_Grammar.h:285969
SgOmpTeamsStatement
Definition: Cxx_Grammar.h:196843
SgIfStmt
This class represents the concept of an "if" construct.
Definition: Cxx_Grammar.h:125431
SgAlignOfOp
Definition: Cxx_Grammar.h:314364
SgExecStatement
This class represents the concept of the dynamic execution of a string, file, or code object....
Definition: Cxx_Grammar.h:225373
SgMemberFunctionSymbol
Definition: Cxx_Grammar.h:323344
SgWriteStatement
Definition: Cxx_Grammar.h:182357
SgFunctionModifier
Definition: Cxx_Grammar.h:10648
SgEnumVal
Definition: Cxx_Grammar.h:278933
SgTypeFloat
Definition: Cxx_Grammar.h:52357
SgTypeUnsignedInt
Definition: Cxx_Grammar.h:49060
SgSpecialFunctionModifier
Definition: Cxx_Grammar.h:11889
SgClassDefinition
This class represents the concept of a class definition in C++.
Definition: Cxx_Grammar.h:127505
SgComprehension
Definition: Cxx_Grammar.h:309178
SgOmpTargetTeamsDistributeStatement
Definition: Cxx_Grammar.h:208187
SgProgramHeaderStatement
Definition: Cxx_Grammar.h:159192
SgVarArgStartOneOperandOp
Definition: Cxx_Grammar.h:300137
SgConditionalExp
This class represents the concept of a C trinary conditional expression (e.g. "test ?...
Definition: Cxx_Grammar.h:292209
SgSequenceStatement
Definition: Cxx_Grammar.h:223566
SgSubtractOp
Definition: Cxx_Grammar.h:243063
SgDefaultOptionStmt
This class represents the concept of a C or C++ default case within a switch statement.
Definition: Cxx_Grammar.h:175666
SgUpcThreads
Definition: Cxx_Grammar.h:283647
SgUnparse_Info
Definition: Cxx_Grammar.h:25840
SgThisExp
This class represents the "this" operator (can be applied to any member data).
Definition: Cxx_Grammar.h:293772
SgGlobal
This class represents the concept of a namespace definition.
Definition: Cxx_Grammar.h:124392
SgDoWhileStmt
This class represents the concept of a do-while statement.
Definition: Cxx_Grammar.h:129505
SgModOp
Definition: Cxx_Grammar.h:244859
SgOmpPriorityClause
Definition: Cxx_Grammar.h:100984
SgCompoundLiteralExp
Definition: Cxx_Grammar.h:316274
SgUpirBodyStatement
Definition: Cxx_Grammar.h:194181
SgOmpParallelMasterTaskloopSimdStatement
Definition: Cxx_Grammar.h:212983
SgOmpVariablesClause
Definition: Cxx_Grammar.h:104901
SgOmpWriteClause
Definition: Cxx_Grammar.h:81996
SgColonShapeExp
Definition: Cxx_Grammar.h:301979
SgTypeUnsignedShort
Definition: Cxx_Grammar.h:47616
SgClassDeclaration
This class represents the concept of a class declaration statement. It includes the concept of an ins...
Definition: Cxx_Grammar.h:151319
SgForStatement
This class represents the concept of a for loop.
Definition: Cxx_Grammar.h:125996
SgNonrealSymbol
Definition: Cxx_Grammar.h:322438
SgOmpUnifiedSharedMemoryClause
Definition: Cxx_Grammar.h:88439
SgRewindStatement
Definition: Cxx_Grammar.h:185503
SgUnaryOp
This class represents the notion of a unary operator. It is derived from a SgExpression because opera...
Definition: Cxx_Grammar.h:229654
SgVariableDefinition
This class represents the definition (initialization) of a variable.
Definition: Cxx_Grammar.h:139585
SgOmpTeamsDistributeParallelForSimdStatement
Definition: Cxx_Grammar.h:214727
SgCallExpression
This class represents the concept of a generic call expression.
Definition: Cxx_Grammar.h:287819
SgTemplateMemberFunctionRefExp
Definition: Cxx_Grammar.h:313843
SgCommonBlock
Definition: Cxx_Grammar.h:147363
SgOmpOrderClause
Definition: Cxx_Grammar.h:93643
SgVarRefExp
This class represents the variable refernece in expressions.
Definition: Cxx_Grammar.h:272706
SgOmpDefaultmapClause
Definition: Cxx_Grammar.h:103129
sg::asBaseType
SageNode::base_node_type & asBaseType(SageNode &n)
returns the same node n upcasted to its base type
Definition: sageGeneric.h:1290
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
SgShortVal
Definition: Cxx_Grammar.h:276140
SgUPC_AccessModifier
Definition: Cxx_Grammar.h:11379
SgTypeShort
Definition: Cxx_Grammar.h:46674
SgTemplateParameterList
Definition: Cxx_Grammar.h:32974
SgUnsignedCharVal
Definition: Cxx_Grammar.h:277070
SgOmpExclusiveClause
Definition: Cxx_Grammar.h:107483
SgFoldExpression
Definition: Cxx_Grammar.h:319631
SgDeadIfDirectiveStatement
Definition: Cxx_Grammar.h:164185
SgOmpMasterStatement
Definition: Cxx_Grammar.h:194641
SgOmpSectionsStatement
Definition: Cxx_Grammar.h:203827
SgOmpTargetTeamsLoopStatement
Definition: Cxx_Grammar.h:209059
SgNamespaceSymbol
This class represents the concept of a namespace name within the compiler.
Definition: Cxx_Grammar.h:329715
SgElementwiseAddOp
Definition: Cxx_Grammar.h:262810
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
SgBitXorOp
Definition: Cxx_Grammar.h:246222
SgAssignedGotoStatement
Definition: Cxx_Grammar.h:189675
SgOmpAffinityClause
Definition: Cxx_Grammar.h:114515
SgUpcNotifyStatement
Definition: Cxx_Grammar.h:191065
SgEndfileStatement
Definition: Cxx_Grammar.h:185950
SgGraph
Definition: Cxx_Grammar.h:33431
SgEndifDirectiveStatement
Definition: Cxx_Grammar.h:165493
SgNonrealType
Definition: Cxx_Grammar.h:60929
SgUpirSimdStatement
Definition: Cxx_Grammar.h:222694
SgDefaultSymbol
Definition: Cxx_Grammar.h:329271
SgNonMembershipOp
Definition: Cxx_Grammar.h:259226
SgTypeChar
Definition: Cxx_Grammar.h:45261
SgNonrealDecl
Definition: Cxx_Grammar.h:172654
SgOmpNumTeamsClause
Definition: Cxx_Grammar.h:96686
SgRvalueReferenceType
Definition: Cxx_Grammar.h:69133
SgBracedInitializer
Definition: Cxx_Grammar.h:297741
SgProcessControlStatement
Definition: Cxx_Grammar.h:180330
SgInquireStatement
Definition: Cxx_Grammar.h:183938
SgFuncDecl_attr
Definition: Cxx_Grammar.h:19444
SgOpenclAccessModeModifier
Definition: Cxx_Grammar.h:15993
SgUpcElemsizeofExpression
Definition: Cxx_Grammar.h:290736
SgOmpTargetEnterDataStatement
Definition: Cxx_Grammar.h:201211
SgLocatedNodeSupport
Definition: Cxx_Grammar.h:75965
SgBackspaceStatement
Definition: Cxx_Grammar.h:185056
SgArrowExp
Definition: Cxx_Grammar.h:238060
SgAddressOfOp
Definition: Cxx_Grammar.h:232415
SgOmpSectionsClause
Definition: Cxx_Grammar.h:89726
SgTemplateClassDeclaration
Definition: Cxx_Grammar.h:151985
SgEnumType
Definition: Cxx_Grammar.h:59949
SgOmpReverseOffloadClause
Definition: Cxx_Grammar.h:87581
SgType
This class represents the base class for all types.
Definition: Cxx_Grammar.h:43961
SgGreaterThanOp
Definition: Cxx_Grammar.h:240794
SgPragma
Definition: Cxx_Grammar.h:18449
SgIncludeFile
Definition: Cxx_Grammar.h:42371
SgImagPartOp
Definition: Cxx_Grammar.h:235745
SgUnsignedShortVal
Definition: Cxx_Grammar.h:278003
SgFunctionCallExp
This class represents the concept of a C++ function call (which is an expression).
Definition: Cxx_Grammar.h:288304
SgAssignOp
Definition: Cxx_Grammar.h:250282
SgOmpHintClause
Definition: Cxx_Grammar.h:97981
SgWhileStmt
This class represents the concept of a do-while statement.
Definition: Cxx_Grammar.h:128984
SgSyncMemoryStatement
Definition: Cxx_Grammar.h:227233
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
SgParameterStatement
Definition: Cxx_Grammar.h:144957
SgNewExp
This class represents the concept of a C++ call to the new operator.
Definition: Cxx_Grammar.h:292707
SgTypeLongDouble
Definition: Cxx_Grammar.h:56125
SgEnumFieldSymbol
Definition: Cxx_Grammar.h:327411
SgLessThanOp
Definition: Cxx_Grammar.h:240339
SgUnlockStatement
Definition: Cxx_Grammar.h:228590
SgMemberFunctionRefExp
This class represents the member function being called and must be assembled in the SgFunctionCall wi...
Definition: Cxx_Grammar.h:274179
SgLambdaCaptureList
Definition: Cxx_Grammar.h:122303
SgElementwisePowerOp
Definition: Cxx_Grammar.h:261481
SgSwitchStatement
This class represents the concept of a switch.
Definition: Cxx_Grammar.h:129987
SgOmpCancellationPointStatement
Definition: Cxx_Grammar.h:219149
SgIncidenceUndirectedGraph
Definition: Cxx_Grammar.h:35973
SgOmpParallelClause
Definition: Cxx_Grammar.h:89297
SgContinueStmt
This class represents the concept of a C or C++ continue statement.
Definition: Cxx_Grammar.h:176607
sg::VisitDispatcher
Definition: sageGeneric.h:162
SgLshiftOp
Definition: Cxx_Grammar.h:248475
SgNode::accept
virtual void accept(ROSE_VisitorPattern &visitor)
support for the classic visitor pattern done in GoF
SgBaseClassModifier
Definition: Cxx_Grammar.h:13401
SgAddOp
Definition: Cxx_Grammar.h:242614
SgTemplateVariableSymbol
Definition: Cxx_Grammar.h:321993
SgLockStatement
Definition: Cxx_Grammar.h:228135
SgConcatenationOp
Definition: Cxx_Grammar.h:251179
sg::_ancestor
AncestorNode * _ancestor(QualSgNode &n)
implements the ancestor search
Definition: sageGeneric.h:962
SgFunctionRefExp
This class represents the function being called and must be assembled in the SgFunctionCall with the ...
Definition: Cxx_Grammar.h:273663
SgAliasSymbol
Definition: Cxx_Grammar.h:332008
SgIncludeDirectiveStatement
Definition: Cxx_Grammar.h:161545
SgTypeModifier
Definition: Cxx_Grammar.h:14390
SgOmpNontemporalClause
Definition: Cxx_Grammar.h:106625
SgTypeTable
Definition: Cxx_Grammar.h:39229
SgOmpTargetTeamsDistributeSimdStatement
Definition: Cxx_Grammar.h:208623
SgOmpTeamsDistributeSimdStatement
Definition: Cxx_Grammar.h:213855
SgCudaKernelCallExp
Definition: Cxx_Grammar.h:288784
SgTypeUnsignedLong
Definition: Cxx_Grammar.h:50473
SgWithStatement
Definition: Cxx_Grammar.h:224008
SgFormatItem
Definition: Cxx_Grammar.h:40576
SgLambdaCapture
Definition: Cxx_Grammar.h:121819
SgBasicBlock
This class represents the concept of a block (not a basic block from control flow analysis).
Definition: Cxx_Grammar.h:124904
SgPowerOp
Definition: Cxx_Grammar.h:263696
SgNullptrValExp
Definition: Cxx_Grammar.h:285049
SgIfDirectiveStatement
Definition: Cxx_Grammar.h:163749
SgOmpReductionClause
Definition: Cxx_Grammar.h:110494
SgBidirectionalGraph
Definition: Cxx_Grammar.h:34683
SgElementwiseDivideOp
Definition: Cxx_Grammar.h:262367
SgIntKeyedBidirectionalGraph
Definition: Cxx_Grammar.h:35545
sg::ConstLike
projects the constness of T1 on T2
Definition: sageGeneric.h:49
SgTemplateFunctionSymbol
Definition: Cxx_Grammar.h:324246
SgTypeFloat80
Definition: Cxx_Grammar.h:55654
SgNonrealBaseClass
Definition: Cxx_Grammar.h:28055
SgOmpSingleStatement
Definition: Cxx_Grammar.h:197279
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
sg::dispatch
std::remove_const< typename std::remove_reference< RoseVisitor >::type >::type dispatch(RoseVisitor &&rv, SgNode *n)
uncovers the type of SgNode and passes it to an function "handle" in RoseVisitor.
Definition: sageGeneric.h:900
SgUndirectedGraphEdge
Definition: Cxx_Grammar.h:37937
SgOmpExtImplementationDefinedRequirementClause
Definition: Cxx_Grammar.h:104011
SgUserDefinedUnaryOp
Definition: Cxx_Grammar.h:236643
SgOmpTargetUpdateStatement
Definition: Cxx_Grammar.h:219585
SgCommonBlockObject
Definition: Cxx_Grammar.h:76400
SgFunctionTypeTable
This class represents the function type table (stores all function types so that they can be shared i...
Definition: Cxx_Grammar.h:136400
SgIntVal
Definition: Cxx_Grammar.h:278468
SgYieldExpression
Definition: Cxx_Grammar.h:312881
SgModAssignOp
Definition: Cxx_Grammar.h:255652
SgImpliedDo
Definition: Cxx_Grammar.h:302883
SgUpirSpmdStatement
Definition: Cxx_Grammar.h:196407
SgOmpCancelStatement
Definition: Cxx_Grammar.h:218713
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
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
SgOmpDefaultClause
Definition: Cxx_Grammar.h:91442
SgSyncAllStatement
Definition: Cxx_Grammar.h:226331
SgDictionaryExp
Definition: Cxx_Grammar.h:308256
SgTypeMatrix
Definition: Cxx_Grammar.h:71057
SgOmpWorkshareStatement
Definition: Cxx_Grammar.h:195513
SgFunctionDeclaration
This class represents the concept of a function declaration statement.
Definition: Cxx_Grammar.h:155826
SgAndAssignOp
Definition: Cxx_Grammar.h:253880
SgUseStatement
Definition: Cxx_Grammar.h:144468
SgTypeNullptr
Definition: Cxx_Grammar.h:69602
SgDeclType
Definition: Cxx_Grammar.h:70073
SgOmpAtomicStatement
Definition: Cxx_Grammar.h:197715
SgTypeSignedShort
Definition: Cxx_Grammar.h:47145
SgUnknownFile
Definition: Cxx_Grammar.h:23612
SgTypeEllipse
Definition: Cxx_Grammar.h:64784
SgNonrealRefExp
Definition: Cxx_Grammar.h:319145
SgTypedefSymbol
Definition: Cxx_Grammar.h:327864
SgOmpOrderedStatement
Definition: Cxx_Grammar.h:199459
SgFunctionParameterRefExp
Definition: Cxx_Grammar.h:317668
SgDataStatementValue
Definition: Cxx_Grammar.h:43021
SgUpirFieldBodyStatement
Definition: Cxx_Grammar.h:195949
SgTypeSigned128bitInteger
Definition: Cxx_Grammar.h:54712
SgIdentDirectiveStatement
Definition: Cxx_Grammar.h:168109
SgTypeBool
Definition: Cxx_Grammar.h:57057
SgContainsStatement
Definition: Cxx_Grammar.h:160637
SgArithmeticIfStatement
Definition: Cxx_Grammar.h:188262
SgOmpTargetParallelLoopStatement
Definition: Cxx_Grammar.h:206879
SgOmpReleaseClause
Definition: Cxx_Grammar.h:86294
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
SgEquivalenceStatement
Definition: Cxx_Grammar.h:145904
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
SgDirectory
This class represents a directory within a projects file structure of files and directories.
Definition: Cxx_Grammar.h:30143
SgSyncTeamStatement
Definition: Cxx_Grammar.h:227680
SgTemplateArgumentList
Definition: Cxx_Grammar.h:32527
SgDeclarationScope
Definition: Cxx_Grammar.h:135417
SgStaticAssertionDeclaration
Definition: Cxx_Grammar.h:171275
SgEmptyDeclaration
Definition: Cxx_Grammar.h:173206
SgTemplateParameter
Definition: Cxx_Grammar.h:28952
SgRenamePair
Definition: Cxx_Grammar.h:78950
SgErrorDirectiveStatement
Definition: Cxx_Grammar.h:166801
SgOmpTaskgroupStatement
Definition: Cxx_Grammar.h:199895
SgIfdefDirectiveStatement
Definition: Cxx_Grammar.h:162877
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
SgTypeTraitBuiltinOperator
Definition: Cxx_Grammar.h:315795
SgElementwiseLeftDivideOp
Definition: Cxx_Grammar.h:261924
SgExponentiationOp
Definition: Cxx_Grammar.h:250736
SgOmpThreadsClause
Definition: Cxx_Grammar.h:81138
SgOmpDoStatement
Definition: Cxx_Grammar.h:203391
SgFormatStatement
Definition: Cxx_Grammar.h:143002
sg::DefaultHandler
struct DefaultHandler
Definition: sageGeneric.h:925
SgOmpTargetParallelStatement
Definition: Cxx_Grammar.h:206007
SgTypeChar32
Definition: Cxx_Grammar.h:72495
SgRshiftAssignOp
Definition: Cxx_Grammar.h:256981
SgUsingDeclarationStatement
This class represents the concept of a C++ using declaration.
Definition: Cxx_Grammar.h:154406
SgOmpUnifiedAddressClause
Definition: Cxx_Grammar.h:88010
SgElaboratedTypeModifier
Definition: Cxx_Grammar.h:12406
SgTypeImaginary
This class represents a C99 complex type.
Definition: Cxx_Grammar.h:66746
SgUndefDirectiveStatement
Definition: Cxx_Grammar.h:162441
SgPlusAssignOp
Definition: Cxx_Grammar.h:252994
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
SgOmpGrainsizeClause
Definition: Cxx_Grammar.h:98410
SgVariantStatement
Definition: Cxx_Grammar.h:178913
SgMinusOp
This class represents the numeric negation of a value. Not to be confused with SgSubtractOp.
Definition: Cxx_Grammar.h:230611
SgOmpAllocatorClause
Definition: Cxx_Grammar.h:91887
SgEnumDeclaration
This class represents the concept of an enum declaration.
Definition: Cxx_Grammar.h:141371
SgNoexceptOp
Definition: Cxx_Grammar.h:318679
SgOmpAllocateClause
Definition: Cxx_Grammar.h:112290
SgTypeInt
Definition: Cxx_Grammar.h:48087
SgAssertStmt
Definition: Cxx_Grammar.h:224908
SgIncludeNextDirectiveStatement
Definition: Cxx_Grammar.h:167673
SgIsNotOp
This class represents the physical disequality (often called pointer disequality) operator for langua...
Definition: Cxx_Grammar.h:260136
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
SgOmpUntiedClause
Definition: Cxx_Grammar.h:85007
SgTemplateInstantiationMemberFunctionDecl
This class represents the concept of an instantiation of member function template or a member functio...
Definition: Cxx_Grammar.h:158167
SgOmpIfClause
Definition: Cxx_Grammar.h:95820
SgUnsignedLongVal
Definition: Cxx_Grammar.h:281306
SgOmpOrderedClause
Definition: Cxx_Grammar.h:94962
SgMultAssignOp
Definition: Cxx_Grammar.h:254766
SgHeaderFileBody
Definition: Cxx_Grammar.h:78506
SgPointerDerefExp
Definition: Cxx_Grammar.h:231960
SgCompoundAssignOp
Definition: Cxx_Grammar.h:252547
SgFloat128Val
Definition: Cxx_Grammar.h:286905
SgCharVal
Definition: Cxx_Grammar.h:276605
sg::AncestorTypeFinder
helper class for _ancestor
Definition: sageGeneric.h:938
SgFunctionParameterList
This class represents the concept of a declaration list.
Definition: Cxx_Grammar.h:137786
SgMicrosoftAttributeDeclaration
Definition: Cxx_Grammar.h:172198
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
SgTypeDefault
This class represents a default type used for some IR nodes (see below).
Definition: Cxx_Grammar.h:67207
SgMatrixTransposeOp
Definition: Cxx_Grammar.h:237109
SgFormatItemList
Definition: Cxx_Grammar.h:41034
SgConjugateOp
Definition: Cxx_Grammar.h:236194
SgOmpAcqRelClause
Definition: Cxx_Grammar.h:85865
SgIntegerDivideOp
Definition: Cxx_Grammar.h:244410
SgIntegerDivideAssignOp
Definition: Cxx_Grammar.h:257424
SgTypeSignedInt
Definition: Cxx_Grammar.h:48589
sg::ancestor
AncestorNode * ancestor(SgNode *n)
finds an ancestor node with a given type
Definition: sageGeneric.h:988
SgOmpMergeableClause
Definition: Cxx_Grammar.h:116335
SgBlockDataStatement
Definition: Cxx_Grammar.h:131533
SgAwaitExpression
Definition: Cxx_Grammar.h:320104
SgMultiplyOp
Definition: Cxx_Grammar.h:243512
SgOmpDepobjStatement
Definition: Cxx_Grammar.h:200767
SgOmpLastprivateClause
Definition: Cxx_Grammar.h:110057
SgPntrArrRefExp
Definition: Cxx_Grammar.h:249373
SgTemplateClassSymbol
Definition: Cxx_Grammar.h:326060
SgMinusAssignOp
Definition: Cxx_Grammar.h:253437
AstSimpleProcessing
Class for traversing the AST.
Definition: AstSimpleProcessing.h:59
SgOmpCollapseClause
Definition: Cxx_Grammar.h:95391
SgTypeGlobalVoid
Definition: Cxx_Grammar.h:51415
SgName
This class represents strings within the IR nodes.
Definition: Cxx_Grammar.h:16476
SgUpcForAllStatement
Definition: Cxx_Grammar.h:133943
SgUpcLocalsizeofExpression
Definition: Cxx_Grammar.h:289790
SgNamelistStatement
Definition: Cxx_Grammar.h:154912
SgOmpLoopStatement
Definition: Cxx_Grammar.h:199023
SgOpenStatement
Definition: Cxx_Grammar.h:182932
SgOmpTaskStatement
Definition: Cxx_Grammar.h:202955
SgTypeOfType
Definition: Cxx_Grammar.h:70564
SgOmpDistributeParallelForSimdStatement
Definition: Cxx_Grammar.h:211239
SgDeclarationStatement
This class represents the concept of a declaration statement.
Definition: Cxx_Grammar.h:136861
SgLongIntVal
Definition: Cxx_Grammar.h:279911
SgTypeUnsignedLongLong
Definition: Cxx_Grammar.h:54241
SgRshiftOp
Definition: Cxx_Grammar.h:248924
SgIOItemExpression
Definition: Cxx_Grammar.h:303378
SgOmpUseDeviceAddrClause
Definition: Cxx_Grammar.h:108770
SgVarArgEndOp
Definition: Cxx_Grammar.h:299197
SgComplexVal
Definition: Cxx_Grammar.h:283166
SgIsOp
This class represents the physical equality (often called pointer equality) operator for languages th...
Definition: Cxx_Grammar.h:259681
SgTypeLong
Definition: Cxx_Grammar.h:49531
SgOmpExpressionClause
Definition: Cxx_Grammar.h:94525
SgInterfaceBody
Definition: Cxx_Grammar.h:78046
SgReadStatement
Definition: Cxx_Grammar.h:181782
SgModuleSymbol
Definition: Cxx_Grammar.h:330649
SgOmpTaskloopSimdStatement
Definition: Cxx_Grammar.h:211675
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
SgBitEqvOp
Definition: Cxx_Grammar.h:247569
SgCAFCoExpression
Definition: Cxx_Grammar.h:306840
SgTemplateInstantiationTypedefDeclaration
Definition: Cxx_Grammar.h:148943
sg::TraversalClass
Definition: sageGeneric.h:1158
SgDefineDirectiveStatement
Definition: Cxx_Grammar.h:162005
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
SgRangeBasedForStatement
Definition: Cxx_Grammar.h:135866
SgTypeSignedLong
Definition: Cxx_Grammar.h:50002
sg::DispatchHandler
struct DispatchHandler
Definition: sageGeneric.h:117
SgUpirNumUnitsField
Definition: Cxx_Grammar.h:96257
SgOmpTaskgroupClause
Definition: Cxx_Grammar.h:90584
SgIOStatement
Definition: Cxx_Grammar.h:180817
SgBitAttribute
Definition: Cxx_Grammar.h:18992
SgTemplateDeclaration
This class represents the concept of a template declaration.
Definition: Cxx_Grammar.h:143464
SgKeyDatumPair
Definition: Cxx_Grammar.h:308713
SgReturnStmt
This class represents the concept of a C Assembler statement (untested).
Definition: Cxx_Grammar.h:177063
SgMagicColonExp
Definition: Cxx_Grammar.h:315352
SgOmpSimdClause
Definition: Cxx_Grammar.h:81567
SgDoubleVal
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:282236
SgCompoundInitializer
Definition: Cxx_Grammar.h:295730
SgElseDirectiveStatement
Definition: Cxx_Grammar.h:164621
SgOmpTargetParallelForStatement
Definition: Cxx_Grammar.h:205135
SgCastExp
Definition: Cxx_Grammar.h:234243
SgOmpMasterTaskloopStatement
Definition: Cxx_Grammar.h:202519
SgListExp
This class represents a list display.
Definition: Cxx_Grammar.h:271359
SgExpBaseClass
Definition: Cxx_Grammar.h:27611
SgBinaryOp
This class represents the notion of a binary operator. It is derived from a SgExpression because oper...
Definition: Cxx_Grammar.h:237560
SgTypeTuple
Definition: Cxx_Grammar.h:71536
SgLessOrEqualOp
Definition: Cxx_Grammar.h:241704
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
sg::swap_child
void swap_child(SageNode &lhs, SageNode &rhs, SageChild *(SageNode::*getter)() const, void(SageNode::*setter)(SageChild *))
swaps children (of equal kind) between two ancestor nodes of the same type
Definition: sageGeneric.h:1111
SgClassExp
Definition: Cxx_Grammar.h:317197
SgTemplateMemberFunctionSymbol
Definition: Cxx_Grammar.h:323801
SgOmpDistributeSimdStatement
Definition: Cxx_Grammar.h:210367
SgAccessModifier
Definition: Cxx_Grammar.h:10143
SgTemplateVariableDeclaration
Definition: Cxx_Grammar.h:139097
SgFlushStatement
Definition: Cxx_Grammar.h:184609
SgClassSymbol
This class represents the concept of a class name within the compiler.
Definition: Cxx_Grammar.h:325607
SgGraphEdge
Definition: Cxx_Grammar.h:36948
SgListComprehension
Definition: Cxx_Grammar.h:309651
SgFortranNonblockedDo
Definition: Cxx_Grammar.h:132983
SgTemplateInstantiationFunctionDecl
This class represents the concept of an instantiation of function template.
Definition: Cxx_Grammar.h:158680
SgTemplateInstantiationDefn
This class represents the concept of a class definition in C++.
Definition: Cxx_Grammar.h:128064
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
SgUsingDirectiveStatement
This class represents the concept of a C++ using directive.
Definition: Cxx_Grammar.h:150832
SgEmptyDirectiveStatement
Definition: Cxx_Grammar.h:167237
SgTypeExpression
Definition: Cxx_Grammar.h:316741
SgCommonSymbol
Definition: Cxx_Grammar.h:331555
SgOmpForSimdStatement
Definition: Cxx_Grammar.h:215599
SgDotExp
Definition: Cxx_Grammar.h:238519
SgEntryStatement
Definition: Cxx_Grammar.h:160184
SgAttributeSpecificationStatement
Definition: Cxx_Grammar.h:142464
SgTypeFixed
Definition: Cxx_Grammar.h:73437
SgVoidVal
Definition: Cxx_Grammar.h:287370
SgTypeLongLong
Definition: Cxx_Grammar.h:53299
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
SgTemplateClassDefinition
Definition: Cxx_Grammar.h:128530
SgOmpUpdateClause
Definition: Cxx_Grammar.h:82425
SgNaryOp
This class represents the notion of an n-ary operator. This node is intended for use with Python.
Definition: Cxx_Grammar.h:311046
SgInitializedName
This class represents the notion of a declared variable.
Definition: Cxx_Grammar.h:76851
SgLongLongIntVal
Definition: Cxx_Grammar.h:280376
SgOmpSharedClause
Definition: Cxx_Grammar.h:109199
SgLabelStatement
This class represents the concept of a C or C++ label statement.
Definition: Cxx_Grammar.h:174131
SgOmpCopyinClause
Definition: Cxx_Grammar.h:109628
SgDivAssignOp
Definition: Cxx_Grammar.h:255209
SgAggregateInitializer
Definition: Cxx_Grammar.h:295163
SgOmpDeclareMapperStatement
Definition: Cxx_Grammar.h:223130
SgSpaceshipOp
Definition: Cxx_Grammar.h:258777
SgNamedType
Definition: Cxx_Grammar.h:58956
SgModifierType
Definition: Cxx_Grammar.h:61411
SgUpcFenceStatement
Definition: Cxx_Grammar.h:192415
SgComputedGotoStatement
Definition: Cxx_Grammar.h:189200
SgOmpFinalClause
Definition: Cxx_Grammar.h:100555
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
SgOmpDistributeParallelForStatement
Definition: Cxx_Grammar.h:210803
SgArrayType
Definition: Cxx_Grammar.h:64255
SgModuleStatement
Definition: Cxx_Grammar.h:153453
SgOrOp
Definition: Cxx_Grammar.h:245765
SgDataStatementObject
Definition: Cxx_Grammar.h:41929
SgOmpNowaitClause
Definition: Cxx_Grammar.h:80280
SgOmpAtomicDefaultMemOrderClause
Definition: Cxx_Grammar.h:103574
SgOmpTargetExitDataStatement
Definition: Cxx_Grammar.h:201647
SgSuperExp
Definition: Cxx_Grammar.h:291209
SgValueExp
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:274702
SgTemplateInstantiationDirectiveStatement
This class represents the concept of a C++ template instantiation directive.
Definition: Cxx_Grammar.h:143996
SgImplicitStatement
Definition: Cxx_Grammar.h:153920
SgSourceFile
Definition: Cxx_Grammar.h:22972
SgNode::get_parent
SgNode * get_parent() const
Access function for parent node.
SgElseWhereStatement
Definition: Cxx_Grammar.h:187340
SgDimensionObject
Definition: Cxx_Grammar.h:40126
SgFortranIncludeLine
Definition: Cxx_Grammar.h:169916
sg::DispatchHelper
Definition: sageGeneric.h:1224
SgNullStatement
Definition: Cxx_Grammar.h:178464
SgOmpTargetTeamsDistributeParallelForStatement
Definition: Cxx_Grammar.h:209495
SgTypeUnsigned128bitInteger
Definition: Cxx_Grammar.h:55183
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.
SgIncidenceDirectedGraph
Definition: Cxx_Grammar.h:34205
SgDictionaryComprehension
Definition: Cxx_Grammar.h:310581
SgAssociateStatement
Definition: Cxx_Grammar.h:131983
SgProcedureHeaderStatement
Definition: Cxx_Grammar.h:159680
SgTypeChar16
Definition: Cxx_Grammar.h:72024
SgOmpTargetTeamsDistributeParallelForSimdStatement
Definition: Cxx_Grammar.h:209931
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
sg
This namespace contains template functions that operate on the ROSE AST.
Definition: sageFunctors.h:15
SgReferenceType
Definition: Cxx_Grammar.h:58487
SgLinemarkerDirectiveStatement
Definition: Cxx_Grammar.h:168545
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
SgAttribute
Definition: Cxx_Grammar.h:17995
SgHeaderFileReport
Definition: Cxx_Grammar.h:43501
SgOmpTeamsDistributeParallelForStatement
Definition: Cxx_Grammar.h:214291
SgConstVolatileModifier
Definition: Cxx_Grammar.h:9040
SgPointerType
Definition: Cxx_Grammar.h:57528
SgOmpReadClause
Definition: Cxx_Grammar.h:80709
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
SgTypeSignedLongLong
Definition: Cxx_Grammar.h:53770
SgInterfaceSymbol
Definition: Cxx_Grammar.h:331102
SgForAllStatement
Definition: Cxx_Grammar.h:133433
SgTypeUnsignedChar
Definition: Cxx_Grammar.h:46203
SgOmpInReductionClause
Definition: Cxx_Grammar.h:110947
SgUnsignedLongLongIntVal
Definition: Cxx_Grammar.h:280841
SgCAFWithTeamStatement
Definition: Cxx_Grammar.h:134472
SgActualArgumentExpression
Definition: Cxx_Grammar.h:305397
SgMembershipOp
Definition: Cxx_Grammar.h:258322
SgOmpTaskReductionClause
Definition: Cxx_Grammar.h:111392
SgRealPartOp
Definition: Cxx_Grammar.h:235296
SgIorAssignOp
Definition: Cxx_Grammar.h:254323
SgStringConversion
This class represents the conversion of an arbitrary expression to a string. This node is intended fo...
Definition: Cxx_Grammar.h:312424
SgVariableDeclaration
This class represents the concept of a C or C++ variable declaration.
Definition: Cxx_Grammar.h:138274
SgUpcBarrierStatement
Definition: Cxx_Grammar.h:191965
SgTypeLabel
Definition: Cxx_Grammar.h:68641
SgDirectoryList
Definition: Cxx_Grammar.h:31188
SgTupleExp
Definition: Cxx_Grammar.h:271808
SgSizeOfOp
This class represents the "sizeof()" operator (applied to any type).
Definition: Cxx_Grammar.h:289241
SgAndOp
Definition: Cxx_Grammar.h:245308
SgNamespaceAliasDeclarationStatement
This class represents the concept of a C++ namespace alias declaration statement.
Definition: Cxx_Grammar.h:146855
SgScopeStatement
This class represents the concept of a scope in C++ (e.g. global scope, fuction scope,...
Definition: Cxx_Grammar.h:123553
SgOmpFirstprivateClause
Definition: Cxx_Grammar.h:106196
SgElementwiseMultiplyOp
Definition: Cxx_Grammar.h:261038
SgOmpTargetParallelForSimdStatement
Definition: Cxx_Grammar.h:206443
SgDerivedTypeStatement
Definition: Cxx_Grammar.h:153002
SgUnaryAddOp
Definition: Cxx_Grammar.h:231060
SgLabelRefExp
Definition: Cxx_Grammar.h:304918
sg::assert_sage_type
SageNode * assert_sage_type(SgNode *n, const char *f=0, size_t ln=0)
asserts that n has type SageNode
Definition: sageGeneric.h:1062
SgFunctionSymbol
Definition: Cxx_Grammar.h:322891
SgOmpIsDevicePtrClause
Definition: Cxx_Grammar.h:107912
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
SgTypeComplex
This class represents a C99 complex type.
Definition: Cxx_Grammar.h:66285
SgOmpDistributeStatement
Definition: Cxx_Grammar.h:216479
SgOmpBindClause
Definition: Cxx_Grammar.h:93206
SgTypeSignedChar
Definition: Cxx_Grammar.h:45732
SgFloat80Val
Definition: Cxx_Grammar.h:286440
SgIntrinsicSymbol
Definition: Cxx_Grammar.h:330196
SgGraphNodeList
Definition: Cxx_Grammar.h:38373
SgLabelSymbol
Definition: Cxx_Grammar.h:328762
SgUnsignedIntVal
Definition: Cxx_Grammar.h:279446
SgUpirWorksharingStatement
Definition: Cxx_Grammar.h:222258
SgArrowStarOp
Definition: Cxx_Grammar.h:239429
SgVariantExpression
Definition: Cxx_Grammar.h:301051
SgAssignStatement
Definition: Cxx_Grammar.h:188742
SgElementwiseOp
Definition: Cxx_Grammar.h:260591
SgOmpOrderedDependStatement
Definition: Cxx_Grammar.h:220909
SgProject
This class represents a source project, with a list of SgFile objects and global information about th...
Definition: Cxx_Grammar.h:24060
sg::TraversalClass::visit
void visit(SgNode *n)
this method is called at every traversed node.
Definition: sageGeneric.h:1166
SgStorageModifier
This class represents modifiers specific to storage.
Definition: Cxx_Grammar.h:9538
SgClinkageDeclarationStatement
Definition: Cxx_Grammar.h:140058
SgNotEqualOp
Definition: Cxx_Grammar.h:241249
SgFunctionParameterScope
Definition: Cxx_Grammar.h:134939
SgOmpParallelMasterTaskloopStatement
Definition: Cxx_Grammar.h:212547
sg::TraversalFunction
executes a functor for a specific node type
Definition: sageGeneric.h:1127
SgExponentiationAssignOp
Definition: Cxx_Grammar.h:257873
SgTemplateParameterVal
Definition: Cxx_Grammar.h:284577
SgStatement
This class represents the notion of a statement.
Definition: Cxx_Grammar.h:122747
SgGotoStatement
This class represents the concept of a C or C++ goto statement.
Definition: Cxx_Grammar.h:177523
SgOptions
This class represents an object used to initialize the unparsing.
Definition: Cxx_Grammar.h:25347
SgTemplateSymbol
Definition: Cxx_Grammar.h:326505
SgOmpInclusiveClause
Definition: Cxx_Grammar.h:107054
SgOmpForClause
Definition: Cxx_Grammar.h:90155
SgSubscriptExpression
Definition: Cxx_Grammar.h:301500
SgAutoType
Definition: Cxx_Grammar.h:73921
SgDesignatedInitializer
Definition: Cxx_Grammar.h:297262
SgOmpParallelMasterStatement
Definition: Cxx_Grammar.h:202083
SgWaitStatement
Definition: Cxx_Grammar.h:186397
SgTypeUnknown
Definition: Cxx_Grammar.h:44774
SgLinkageModifier
Definition: Cxx_Grammar.h:12907
SgScopeOp
This class was part of CC++ support from a long time ago.
Definition: Cxx_Grammar.h:249830
SgInterfaceStatement
Definition: Cxx_Grammar.h:146362
SgGreaterOrEqualOp
Definition: Cxx_Grammar.h:242159
SgChooseExpression
Definition: Cxx_Grammar.h:320561
SgInitializer
This class represents the notion of an initializer for a variable declaration or expression in a func...
Definition: Cxx_Grammar.h:294701
SgTemplateMemberFunctionDeclaration
Definition: Cxx_Grammar.h:157682
SgOmpAcquireClause
Definition: Cxx_Grammar.h:86723
SgGraphNode
Definition: Cxx_Grammar.h:36407
SgEqualityOp
Definition: Cxx_Grammar.h:239884
SgTypedefType
Definition: Cxx_Grammar.h:60429
SgOmpTargetSimdStatement
Definition: Cxx_Grammar.h:207315
SgClassType
Definition: Cxx_Grammar.h:59461
SgExprStatement
This class represents the concept of a C or C++ statement which contains a expression.
Definition: Cxx_Grammar.h:173661
SgPlusPlusOp
Definition: Cxx_Grammar.h:233338
SgLambdaExp
Definition: Cxx_Grammar.h:318158
SgBreakStmt
This class represents the notion of a break statement (typically used in a switch statment).
Definition: Cxx_Grammar.h:176151
SgForInitStatement
This class represents the variable declaration or variable initialization withn a for loop.
Definition: Cxx_Grammar.h:179356
SgVarArgCopyOp
Definition: Cxx_Grammar.h:299670
SgLshiftAssignOp
Definition: Cxx_Grammar.h:256538
SgDotStarOp
Definition: Cxx_Grammar.h:238974
SgWarningDirectiveStatement
Definition: Cxx_Grammar.h:166365
SgUnknownArrayOrFunctionReference
Definition: Cxx_Grammar.h:305868
SgSymbol
This class represents the concept of a name within the compiler.
Definition: Cxx_Grammar.h:321018
SgPragmaDeclaration
This class represents the concept of a C Assembler statement (untested).
Definition: Cxx_Grammar.h:150372
SgBitComplementOp
Definition: Cxx_Grammar.h:233794
SgClinkageStartStatement
This class represents the concept of a C style extern "C" declaration. But such information (linkage)...
Definition: Cxx_Grammar.h:140499
SgOmpWhenClause
Definition: Cxx_Grammar.h:116764
SgFileList
Definition: Cxx_Grammar.h:30677
SgTryStmt
This class represents the concept of try statement within the try-catch support for exception handlin...
Definition: Cxx_Grammar.h:175144
SgQualifiedName
This class represents a OLD concept of the structure require for qualified names when they were in th...
Definition: Cxx_Grammar.h:32085
SgDivideOp
Definition: Cxx_Grammar.h:243961
SgOmpNumTasksClause
Definition: Cxx_Grammar.h:98839
Sawyer::Attribute::name
const std::string & name(Id)
Returns the name for an attribute ID.
SgPartialFunctionType
Definition: Cxx_Grammar.h:63329
SgOmpUseDevicePtrClause
Definition: Cxx_Grammar.h:108341
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
SgImageControlStatement
Definition: Cxx_Grammar.h:225833
SgChar16Val
Definition: Cxx_Grammar.h:285498
SgOmpTargetTeamsStatement
Definition: Cxx_Grammar.h:207751