1#ifndef ROSE_sageContainer_H
2#define ROSE_sageContainer_H
5#include <Cxx_GrammarDeclarations.h>
6#include <Cxx_GrammarVariants.h>
8#include <Rose/BinaryAnalysis/RelativeVirtualAddress.h>
21typedef Rose_STL_Container<SgInitializedName*> SgInitializedNamePtrList;
22typedef SgInitializedNamePtrList* SgInitializedNamePtrListPtr;
30typedef Rose_STL_Container<SgDeclarationStatement*> SgDeclarationStatementPtrList;
35typedef SgDeclarationStatementPtrList* SgDeclarationStatementPtrListPtr;
37#ifdef ROSE_ENABLE_BINARY_ANALYSIS
42typedef Rose_STL_Container<SgAsmBlock*> SgAsmBlockPtrList;
45typedef SgAsmBlockPtrList* SgAsmBlockPtrListPtr;
48typedef Rose_STL_Container<SgAsmInterpretation*> SgAsmInterpretationPtrList;
51typedef Rose_STL_Container<SgAsmGenericSection*> SgAsmGenericSectionPtrList;
52typedef SgAsmGenericSectionPtrList* SgAsmGenericSectionPtrListPtr;
54typedef Rose_STL_Container<SgAsmGenericFile*> SgAsmGenericFilePtrList;
55typedef SgAsmGenericSectionPtrList* SgAsmGenericFilePtrListPtr;
65typedef Rose_STL_Container<SgAsmPEImportItem*> SgAsmPEImportItemPtrList;
66typedef SgAsmPEImportItemPtrList* SgAsmPEImportItemPtrListPtr;
68typedef Rose_STL_Container<SgAsmPEImportDirectory*> SgAsmPEImportDirectoryPtrList;
69typedef SgAsmPEImportDirectoryPtrList* SgAsmPEImportDirectoryPtrListPtr;
71typedef Rose_STL_Container<SgAsmPEImportItem*> SgAsmPEImportItemPtrList;
72typedef SgAsmPEImportItemPtrList* SgAsmPEImportItemPtrListPtr;
75typedef Rose_STL_Container<SgAsmElfSymbol*> SgAsmElfSymbolPtrList;
76typedef SgAsmElfSymbolPtrList* SgAsmElfSymbolPtrListPtr;
79typedef Rose_STL_Container<SgAsmCoffSymbol*> SgAsmCoffSymbolPtrList;
80typedef SgAsmCoffSymbolPtrList* SgAsmCoffSymbolPtrListPtr;
83typedef Rose_STL_Container<SgAsmGenericSymbol*> SgAsmGenericSymbolPtrList;
84typedef SgAsmGenericSymbolPtrList* SgAsmGenericSymbolPtrListPtr;
88typedef Rose_STL_Container<SgStatement*> SgStatementPtrList;
89typedef SgStatementPtrList* SgStatementPtrListPtr;
93typedef Rose_STL_Container<SgBaseClass*> SgBaseClassPtrList;
94typedef SgBaseClassPtrList* SgBaseClassPtrListPtr;
97typedef Rose_STL_Container<SgNode*> SgNodePtrList;
98typedef SgNodePtrList* SgNodePtrListPtr;
101typedef Rose_STL_Container<SgType*> SgTypePtrList;
102typedef SgTypePtrList* SgTypePtrListPtr;
105typedef Rose_STL_Container<SgExpression*> SgExpressionPtrList;
106typedef SgExpressionPtrList* SgExpressionPtrListPtr;
109typedef Rose_STL_Container<SgKeyDatumPair*> SgKeyDatumPairPtrList;
112typedef Rose_STL_Container<SgComprehension*> SgComprehensionPtrList;
114typedef Rose_STL_Container<VariantT> VariantTList;
118typedef Rose_STL_Container<SgVarRefExp*> SgVarRefExpPtrList;
119typedef SgVarRefExpPtrList* SgVarRefExpPtrListPtr;
122typedef Rose_STL_Container<SgAttribute*> SgAttributePtrList;
123typedef SgAttributePtrList* SgAttributePtrListPtr;
128typedef Rose_STL_Container<unsigned char> SgCharList;
129typedef SgCharList* SgCharListPtr;
137typedef std::vector<SgFile*> SgFilePtrList;
138typedef SgFilePtrList* SgFilePtrListPtr;
146typedef std::vector<SgFileId> SgFileIdList;
149typedef int SgFileLineNumber;
150typedef std::vector<SgFileLineNumber> SgFileLineNumberList;
154typedef Rose_STL_Container<std::string> SgStringList;
155typedef SgStringList* SgStringListPtr;
162typedef std::set<SgNode*> SgNodeSet;
163typedef SgNodeSet* SgNodeSetPtr;
177typedef std::vector<SgModifierType*> SgModifierTypePtrVector;
183typedef std::vector<bool> SgBitVector;
187typedef Rose_STL_Container<SgTemplateParameter*> SgTemplateParameterPtrList;
188typedef SgTemplateParameterPtrList* SgTemplateParameterPtrListPtr;
192typedef Rose_STL_Container<SgTemplateArgument*> SgTemplateArgumentPtrList;
193typedef SgTemplateArgumentPtrList* SgTemplateArgumentPtrListPtr;
203typedef std::vector<SgDirectory*> SgDirectoryPtrList;
204typedef SgDirectoryPtrList* SgDirectoryPtrListPtr;
208typedef Rose_STL_Container<SgQualifiedName*> SgQualifiedNamePtrList;
209typedef SgQualifiedNamePtrList* SgQualifiedNamePtrListPtr;
218typedef std::vector<SgBasicBlockPtr> SgBasicBlockPtrList;
219typedef SgBasicBlockPtrList* SgBasicBlockPtrListPtr;
221#ifdef ROSE_ENABLE_BINARY_ANALYSIS
223typedef Rose_STL_Container<SgAsmStatement*> SgAsmStatementPtrList;
224typedef SgAsmStatementPtrList* SgAsmStatementPtrListPtr;
226typedef Rose_STL_Container<SgAsmInstruction*> SgAsmInstructionPtrList;
227typedef SgAsmInstructionPtrList* SgAsmInstructionPtrListPtr;
230typedef Rose_STL_Container<SgAsmExpression*> SgAsmExpressionPtrList;
231typedef SgAsmExpressionPtrList* SgAsmExpressionPtrListPtr;
233typedef Rose_STL_Container<SgAsmIntegerValueExpression*> SgAsmIntegerValuePtrList;
234typedef SgAsmIntegerValuePtrList* SgAsmIntegerValuePtrListPtr;
237typedef Rose_STL_Container<SgAsmSynthesizedDeclaration*> SgAsmSynthesizedDeclarationPtrList;
238typedef SgAsmSynthesizedDeclarationPtrList* SgAsmSynthesizedDeclarationPtrListPtr;
240typedef Rose_STL_Container<SgAsmX86Instruction*> SgAsmX86InstructionPtrList;
241#ifdef ROSE_ENABLE_ASM_AARCH64
242typedef Rose_STL_Container<SgAsmAarch64Instruction*> SgAsmAarch64InstructionPtrList;
247typedef Rose_STL_Container<SgNameGroup*> SgNameGroupPtrList;
248typedef SgNameGroupPtrList* SgNameGroupPtrListPtr;
251typedef Rose_STL_Container<SgDataStatementGroup*> SgDataStatementGroupPtrList;
252typedef SgDataStatementGroupPtrList* SgDataStatementGroupPtrListPtr;
255typedef Rose_STL_Container<SgDataStatementObject*> SgDataStatementObjectPtrList;
256typedef SgDataStatementObjectPtrList* SgDataStatementObjectPtrListPtr;
259typedef Rose_STL_Container<SgDataStatementValue*> SgDataStatementValuePtrList;
260typedef SgDataStatementValuePtrList* SgDataStatementValuePtrListPtr;
263typedef Rose_STL_Container<SgCommonBlockObject*> SgCommonBlockObjectPtrList;
264typedef SgCommonBlockObjectPtrList* SgCommonBlockObjectPtrListPtr;
267typedef Rose_STL_Container<SgDimensionObject*> SgDimensionObjectPtrList;
268typedef SgDimensionObjectPtrList* SgDimensionObjectPtrListPtr;
271typedef Rose_STL_Container<SgLabelSymbol*> SgLabelSymbolPtrList;
272typedef SgLabelSymbolPtrList* SgLabelSymbolPtrListPtr;
275typedef Rose_STL_Container<SgFormatItem*> SgFormatItemPtrList;
276typedef SgFormatItemPtrList* SgFormatItemPtrListPtr;
281typedef Rose_STL_Container<Rose::BinaryAnalysis::Address> SgAddressList;
282typedef SgAddressList* SgAddressListPtr;
284#ifdef ROSE_ENABLE_BINARY_ANALYSIS
285typedef Rose_STL_Container<rose_rva_t> SgRVAList;
286typedef SgRVAList* SgRVAListPtr;
288typedef Rose_STL_Container<SgAsmPEExportEntry*> SgAsmPEExportEntryPtrList;
289typedef SgAsmPEExportEntryPtrList* SgAsmPEExportEntryPtrListPtr;
292typedef Rose_STL_Container<uint16_t> SgUnsigned16List;
293typedef SgUnsigned16List* SgUnsigned16ListPtr;
295typedef Rose_STL_Container<unsigned> SgUnsignedList;
296typedef SgUnsignedList* SgUnsignedListPtr;
299typedef Rose_STL_Container<size_t> SgSizeTList;
300typedef SgSizeTList* SgSizeTListPtr;
302#ifdef ROSE_ENABLE_BINARY_ANALYSIS
303typedef Rose_STL_Container<SgAsmNEEntryPoint*> SgAsmNEEntryPointPtrList;
304typedef SgAsmNEEntryPointPtrList* SgAsmNEEntryPointPtrListPtr;
306typedef Rose_STL_Container<SgAsmNERelocEntry*> SgAsmNERelocEntryPtrList;
307typedef SgAsmNERelocEntryPtrList* SgAsmNERelocEntryPtrListPtr;
309typedef Rose_STL_Container<SgAsmLEPageTableEntry*> SgAsmLEPageTableEntryPtrList;
310typedef SgAsmLEPageTableEntryPtrList* SgAsmLEPageTableEntryPtrListPtr;
312typedef Rose_STL_Container<SgAsmLEEntryPoint*> SgAsmLEEntryPointPtrList;
313typedef SgAsmLEEntryPointPtrList* SgAsmLEEntryPointPtrListPtr;
317typedef Rose_STL_Container<SgAsmLERelocEntry*> SgAsmLERelocEntryPtrList;
318typedef SgAsmLERelocEntryPtrList* SgAsmLERelocEntryPtrListPtr;
320typedef Rose_STL_Container<SgAsmGenericHeader*> SgAsmGenericHeaderPtrList;
321typedef SgAsmGenericHeaderPtrList* SgAsmGenericHeaderPtrListPtr;
323typedef Rose_STL_Container<SgAsmGenericDLL*> SgAsmGenericDLLPtrList;
324typedef SgAsmGenericDLLPtrList* SgAsmGenericDLLPtrListPtr;
327typedef Rose_STL_Container<unsigned char> SgUnsignedCharList;
328typedef SgUnsignedCharList* SgUnsignedCharListPtr;
333typedef Rose_STL_Container<SgModuleStatement*> SgModuleStatementPtrList;
334typedef SgModuleStatementPtrList* SgModuleStatementPtrListPtr;
337typedef Rose_STL_Container<SgJavaPackageDeclaration*> SgJavaPackageDeclarationPtrList;
340typedef Rose_STL_Container<SgJavaImportStatement*> SgJavaImportStatementPtrList;
343typedef Rose_STL_Container<SgClassDeclaration*> SgClassDeclarationPtrList;
346typedef Rose_STL_Container<SgRenamePair*> SgRenamePairPtrList;
347typedef SgRenamePairPtrList* SgRenamePairPtrListPtr;
350typedef Rose_STL_Container<SgInterfaceBody*> SgInterfaceBodyPtrList;
351typedef SgInterfaceBodyPtrList* SgInterfaceBodyPtrListPtr;
353#ifdef ROSE_ENABLE_BINARY_ANALYSIS
355typedef Rose_STL_Container<SgAsmDwarfLine*> SgAsmDwarfLinePtrList;
356typedef SgAsmDwarfLinePtrList* SgAsmDwarfLinePtrListPtr;
358typedef Rose_STL_Container<SgAsmDwarfMacro*> SgAsmDwarfMacroPtrList;
359typedef SgAsmDwarfMacroPtrList* SgAsmDwarfMacroPtrListPtr;
361typedef Rose_STL_Container<SgAsmDwarfConstruct*> SgAsmDwarfConstructPtrList;
362typedef SgAsmDwarfConstructPtrList* SgAsmDwarfConstructPtrListPtr;
364typedef Rose_STL_Container<SgAsmDwarfCompilationUnit*> SgAsmDwarfCompilationUnitPtrList;
365typedef SgAsmDwarfCompilationUnitPtrList* SgAsmDwarfCompilationUnitPtrListPtr;
371typedef Rose_STL_Container<SgOmpClause*> SgOmpClausePtrList;
372typedef SgOmpClausePtrList* SgOmpClausePtrListPtr;
374typedef Rose_STL_Container<SgOmpSectionStatement*> SgOmpSectionStatementPtrList;
375typedef SgOmpSectionStatementPtrList* SgOmpSectionStatementPtrListPtr;
378typedef Rose_STL_Container<SgJavaMemberValuePair*> SgJavaMemberValuePairPtrList;
379typedef SgJavaMemberValuePairPtrList* SgJavaMemberValuePairPtrListPtr;
387#ifdef ROSE_ENABLE_BINARY_ANALYSIS
389typedef Rose_STL_Container<SgAsmRegisterReferenceExpression*> SgAsmRegisterReferenceExpressionPtrList;
390typedef SgAsmRegisterReferenceExpressionPtrList* SgAsmRegisterReferenceExpressionPtrListPtr;
394typedef Rose_STL_Container<SgLambdaCapture*> SgLambdaCapturePtrList;
395typedef SgLambdaCapturePtrList* SgLambdaCapturePtrListPtr;
399typedef Rose_STL_Container<SgSourceFile*> SgSourceFilePtrList;
400typedef SgSourceFilePtrList* SgSourceFilePtrListPtr;
404typedef Rose_STL_Container<SgIncludeFile*> SgIncludeFilePtrList;
405typedef SgIncludeFilePtrList* SgIncludeFilePtrListPtr;
409typedef Rose_STL_Container<SgAdaComponentClause*> SgAdaComponentClausePtrList;
410typedef SgAdaComponentClausePtrList* SgAdaComponentClausePtrListPtr;
413class TokenStreamSequenceToNodeMapping;
415class PreviousAndNextNodeData;
420#ifdef ROSE_ENABLE_BINARY_ANALYSIS
421#include <SgSharedVector.h>
426typedef Rose_STL_Container<SgAsmElfRelocEntry*> SgAsmElfRelocEntryPtrList;
427typedef SgAsmElfRelocEntryPtrList* SgAsmElfRelocEntryPtrListPtr;
429typedef Rose_STL_Container<SgAsmElfNoteEntry*> SgAsmElfNoteEntryPtrList;
430typedef SgAsmElfNoteEntryPtrList* SgAsmElfNoteEntryPtrListPtr;
432typedef Rose_STL_Container<SgAsmElfDynamicEntry*> SgAsmElfDynamicEntryPtrList;
433typedef SgAsmElfDynamicEntryPtrList* SgAsmElfDynamicEntryPtrListPtr;
435typedef Rose_STL_Container<SgAsmElfEHFrameEntryCI*> SgAsmElfEHFrameEntryCIPtrList;
436typedef SgAsmElfEHFrameEntryCIPtrList* SgAsmElfEHFrameEntryCIPtrListPtr;
438typedef Rose_STL_Container<SgAsmElfEHFrameEntryFD*> SgAsmElfEHFrameEntryFDPtrList;
439typedef SgAsmElfEHFrameEntryFDPtrList* SgAsmElfEHFrameEntryFDPtrListPtr;
441typedef Rose_STL_Container<SgAsmElfSegmentTableEntry*> SgAsmElfSegmentTableEntryPtrList;
442typedef SgAsmElfSegmentTableEntryPtrList* SgAsmElfSegmentTableEntryPtrListPtr;
444typedef Rose_STL_Container<SgAsmElfSymverEntry*> SgAsmElfSymverEntryPtrList;
445typedef SgAsmElfSymverEntryPtrList* SgAsmElfSymverEntryPtrListPtr;
447typedef Rose_STL_Container<SgAsmElfSymverDefinedEntry*> SgAsmElfSymverDefinedEntryPtrList;
448typedef SgAsmElfSymverDefinedEntryPtrList* SgAsmElfSymverDefinedEntryPtrListPtr;
450typedef Rose_STL_Container<SgAsmElfSymverDefinedAux*> SgAsmElfSymverDefinedAuxPtrList;
451typedef SgAsmElfSymverDefinedAuxPtrList* SgAsmElfSymverDefinedAuxPtrListPtr;
453typedef Rose_STL_Container<SgAsmElfSymverNeededEntry*> SgAsmElfSymverNeededEntryPtrList;
454typedef SgAsmElfSymverNeededEntryPtrList* SgAsmElfSymverNeededEntryPtrListPtr;
456typedef Rose_STL_Container<SgAsmElfSymverNeededAux*> SgAsmElfSymverNeededAuxPtrList;
457typedef SgAsmElfSymverNeededAuxPtrList* SgAsmElfSymverNeededAuxPtrListPtr;
459typedef Rose_STL_Container<SgAsmJvmAttribute*> SgAsmJvmAttributePtrList;
460typedef SgAsmJvmAttributePtrList* SgAsmJvmAttributePtrListPtr;
462typedef Rose_STL_Container<SgAsmJvmBootstrapMethod*> SgAsmJvmBootstrapMethodPtrList;
463typedef SgAsmJvmBootstrapMethodPtrList* SgAsmJvmBootstrapMethodPtrListPtr;
465typedef Rose_STL_Container<SgAsmJvmInnerClassesEntry*> SgAsmJvmInnerClassesEntryPtrList;
466typedef SgAsmJvmInnerClassesEntryPtrList* SgAsmJvmInnerClassesEntryPtrListPtr;
468typedef Rose_STL_Container<SgAsmJvmConstantPoolEntry*> SgAsmJvmConstantPoolEntryPtrList;
469typedef SgAsmJvmConstantPoolEntryPtrList* SgAsmJvmConstantPoolEntryPtrListPtr;
471typedef Rose_STL_Container<SgAsmJvmExceptionHandler*> SgAsmJvmExceptionHandlerPtrList;
472typedef SgAsmJvmExceptionHandlerPtrList* SgAsmJvmExceptionHandlerPtrListPtr;
474typedef Rose_STL_Container<SgAsmJvmField*> SgAsmJvmFieldPtrList;
475typedef SgAsmJvmFieldPtrList* SgAsmJvmFieldPtrListPtr;
477typedef Rose_STL_Container<SgAsmJvmMethodParametersEntry*> SgAsmJvmMethodParametersEntryPtrList;
478typedef SgAsmJvmMethodParametersEntryPtrList* SgAsmJvmMethodParametersEntryPtrListPtr;
480typedef Rose_STL_Container<SgAsmJvmLineNumberEntry*> SgAsmJvmLineNumberEntryPtrList;
481typedef SgAsmJvmLineNumberEntryPtrList* SgAsmJvmLineNumberEntryPtrListPtr;
483typedef Rose_STL_Container<SgAsmJvmLocalVariableEntry*> SgAsmJvmLocalVariableEntryPtrList;
484typedef SgAsmJvmLocalVariableEntryPtrList* SgAsmJvmLocalVariableEntryPtrListPtr;
486typedef Rose_STL_Container<SgAsmJvmLocalVariableTypeEntry*> SgAsmJvmLocalVariableTypeEntryPtrList;
487typedef SgAsmJvmLocalVariableTypeEntryPtrList* SgAsmJvmLocalVariableTypeEntryPtrListPtr;
489typedef Rose_STL_Container<SgAsmJvmMethod*> SgAsmJvmMethodPtrList;
490typedef SgAsmJvmMethodPtrList* SgAsmJvmMethodPtrListPtr;
492typedef Rose_STL_Container<SgAsmJvmStackMapFrame*> SgAsmJvmStackMapFramePtrList;
493typedef SgAsmJvmStackMapFramePtrList* SgAsmJvmStackMapFramePtrListPtr;
495typedef Rose_STL_Container<SgAsmJvmStackMapVerificationType*> SgAsmJvmStackMapVerificationTypePtrList;
496typedef SgAsmJvmStackMapVerificationTypePtrList* SgAsmJvmStackMapVerificationTypePtrListPtr;
498typedef Rose_STL_Container<SgAsmPERVASizePair*> SgAsmPERVASizePairPtrList;
499typedef SgAsmPERVASizePairPtrList* SgAsmPERVASizePairPtrListPtr;
504typedef Rose_STL_Container<SgToken*> SgTokenPtrList;
505typedef SgTokenPtrList* SgTokenPtrListPtr;
512typedef std::pair<int,int> LineColumnFilePosition;
513typedef std::pair<int,LineColumnFilePosition> FileIdLineColumnFilePosition;
515typedef std::pair<uint64_t,FileIdLineColumnFilePosition> AddressFileIdLineColumnFilePositionPair;
516typedef std::pair<FileIdLineColumnFilePosition,uint64_t> FileIdLineColumnFilePositionAddressPair;
520typedef std::multimap<uint64_t,FileIdLineColumnFilePosition> SgInstructionAddressSourcePositionMapPtrList;
521typedef std::multimap<FileIdLineColumnFilePosition,uint64_t> SgSourcePositionInstructionAddressMapPtrList;
523typedef std::pair<SgInstructionAddressSourcePositionMapPtrList*,SgSourcePositionInstructionAddressMapPtrList*> DwarfInstructionSourceMapReturnType;
525ROSE_DLL_API std::ostream& operator<<(std::ostream&,
const SgName&);
528std::ostream& operator<<(std::ostream&,
const std::vector<bool>&);
531std::ostream& operator<<(std::ostream&,
const std::set<int>&);
534std::ostream& operator<<(std::ostream&,
const std::map<SgNode*,int>&);
537std::ostream& operator<<(std::ostream&,
const std::map<SgNode*,std::string>&);
539#ifdef ROSE_ENABLE_BINARY_ANALYSIS
540std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgAsmStatement*>&);
541std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgAsmExpression*>&);
545std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgDataStatementObject*>&);
546std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgDataStatementValue*>&);
547std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgCommonBlockObject*>&);
548std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgDimensionObject*>&);
549std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgLabelSymbol*>&);
550std::ostream& operator<<(std::ostream&,
const Rose_STL_Container<SgFormatItem*>&);
559std::ostream & operator<< ( std::ostream & os,
const Rose_STL_Container<std::string> & l );
563std::ostream& operator<<(std::ostream&,
const std::multimap<Rose::BinaryAnalysis::Address, Rose::BinaryAnalysis::Address>&);
564std::ostream& operator<<(std::ostream&,
565 const std::vector<std::pair<Rose::BinaryAnalysis::Address, Rose::BinaryAnalysis::Address>>&);
568std::ostream & operator<< ( std::ostream & os,
const struct stat & sb );
573#ifdef ROSE_ENABLE_BINARY_ANALYSIS
575std::ostream & operator<< ( std::ostream & os,
const Rose_STL_Container<SgAsmStatement*> & l );
579std::ostream & operator<< ( std::ostream & os,
const std::set<SgSymbol*> & l );
Base class for references to a machine register.
This class represents the concept of a block (not a basic block from control flow analysis).
This class represents the concept of a declaration statement.
This class represents a directory within a projects file structure of files and directories.
This class represents the notion of an expression. Expressions are derived from SgLocatedNodes,...
This class represents a source file for a project (which may contian many source files and or directo...
This class represents the notion of a declared variable.
This class represents strings within the IR nodes.
This class represents the base class for all IR nodes within Sage III.
This class represents a OLD concept of the structure require for qualified names when they were in th...
This class represents the notion of a statement.
This class represents template argument within the use of a template to build an instantiation.
This class represents the base class for all types.
This class represents the variable refernece in expressions.