ROSE 0.11.145.147
sageContainer.h
1#ifndef ROSE_sageContainer_H
2#define ROSE_sageContainer_H
3#include <RoseFirst.h>
4#include <rosedll.h>
5#include <Cxx_GrammarDeclarations.h>
6#include <Cxx_GrammarVariants.h>
7
8#include <Rose/BinaryAnalysis/RelativeVirtualAddress.h>
9
10#include <map>
11#include <ostream>
12#include <set>
13#include <string>
14#include <vector>
15
16// These declarations were originally generated by ROSETTA's CxxGrammarMetaProgram tool, but since they never depended on any of
17// that tool's inputs, they don't need to generated.
18
20// DQ (6/1/2004): Change this to be a list of pointers to SgInitializedName (to fix Beata's Bug beata.C)
21typedef Rose_STL_Container<SgInitializedName*> SgInitializedNamePtrList;
22typedef SgInitializedNamePtrList* SgInitializedNamePtrListPtr;
23
25
26// DQ (1/28/2016): Different ways of documenting typedefs (none appear to be working with Doxygen).
30typedef Rose_STL_Container<SgDeclarationStatement*> SgDeclarationStatementPtrList;
31
35typedef SgDeclarationStatementPtrList* SgDeclarationStatementPtrListPtr;
36
37#ifdef ROSE_ENABLE_BINARY_ANALYSIS
38// tps (8/20/2007): Added support for binaries.
42typedef Rose_STL_Container<SgAsmBlock*> SgAsmBlockPtrList;
43
45typedef SgAsmBlockPtrList* SgAsmBlockPtrListPtr;
46
47// JJW (8/28/2008): Added SgAsmInterpretation
48typedef Rose_STL_Container<SgAsmInterpretation*> SgAsmInterpretationPtrList;
49
50// DQ (6/14/2008): Added to support new exec format IR nodes
51typedef Rose_STL_Container<SgAsmGenericSection*> SgAsmGenericSectionPtrList;
52typedef SgAsmGenericSectionPtrList* SgAsmGenericSectionPtrListPtr;
53
54typedef Rose_STL_Container<SgAsmGenericFile*> SgAsmGenericFilePtrList;
55typedef SgAsmGenericSectionPtrList* SgAsmGenericFilePtrListPtr;
56
57// DQ (6/14/2008): Added to support new exec format IR nodes
58// typedef Rose_STL_Container<SgAsmGenericSegment*> SgAsmGenericSegmentPtrList;
59// typedef SgAsmGenericSegmentPtrList* SgAsmGenericSegmentPtrListPtr;
60
61// DQ (6/14/2008): Added to support new exec format IR nodes
62// typedef Rose_STL_Container<SgAsmElfSegmentEntry*> SgAsmElfSegmentEntryPtrList;
63// typedef SgAsmElfSegmentEntryPtrList* SgAsmElfSegmentEntryPtrListPtr;
64
65typedef Rose_STL_Container<SgAsmPEImportItem*> SgAsmPEImportItemPtrList;
66typedef SgAsmPEImportItemPtrList* SgAsmPEImportItemPtrListPtr;
67
68typedef Rose_STL_Container<SgAsmPEImportDirectory*> SgAsmPEImportDirectoryPtrList;
69typedef SgAsmPEImportDirectoryPtrList* SgAsmPEImportDirectoryPtrListPtr;
70
71typedef Rose_STL_Container<SgAsmPEImportItem*> SgAsmPEImportItemPtrList;
72typedef SgAsmPEImportItemPtrList* SgAsmPEImportItemPtrListPtr;
73
74// DQ (6/14/2008): Added to support new exec format IR nodes
75typedef Rose_STL_Container<SgAsmElfSymbol*> SgAsmElfSymbolPtrList;
76typedef SgAsmElfSymbolPtrList* SgAsmElfSymbolPtrListPtr;
77
78// DQ (8/4/2008): Added to support new exec format IR nodes
79typedef Rose_STL_Container<SgAsmCoffSymbol*> SgAsmCoffSymbolPtrList;
80typedef SgAsmCoffSymbolPtrList* SgAsmCoffSymbolPtrListPtr;
81
82// DQ (8/8/2008): Added to support new exec format IR nodes
83typedef Rose_STL_Container<SgAsmGenericSymbol*> SgAsmGenericSymbolPtrList;
84typedef SgAsmGenericSymbolPtrList* SgAsmGenericSymbolPtrListPtr;
85#endif
86
87class SgStatement;
88typedef Rose_STL_Container<SgStatement*> SgStatementPtrList;
89typedef SgStatementPtrList* SgStatementPtrListPtr;
90
91class SgBaseClass;
92// DQ (6/21/2005): Change from list of SgBaseClass to list of SgBaseClass*
93typedef Rose_STL_Container<SgBaseClass*> SgBaseClassPtrList;
94typedef SgBaseClassPtrList* SgBaseClassPtrListPtr;
95
96class SgNode;
97typedef Rose_STL_Container<SgNode*> SgNodePtrList;
98typedef SgNodePtrList* SgNodePtrListPtr;
99
100class SgType;
101typedef Rose_STL_Container<SgType*> SgTypePtrList;
102typedef SgTypePtrList* SgTypePtrListPtr;
103
104class SgExpression;
105typedef Rose_STL_Container<SgExpression*> SgExpressionPtrList;
106typedef SgExpressionPtrList* SgExpressionPtrListPtr;
107
108class SgKeyDatumPair;
109typedef Rose_STL_Container<SgKeyDatumPair*> SgKeyDatumPairPtrList;
110
111class SgComprehension;
112typedef Rose_STL_Container<SgComprehension*> SgComprehensionPtrList;
113
114typedef Rose_STL_Container<VariantT> VariantTList;
115
116// Liao 9/27/2010: new typedef for SgVarRefExp list
117class SgVarRefExp;
118typedef Rose_STL_Container<SgVarRefExp*> SgVarRefExpPtrList;
119typedef SgVarRefExpPtrList* SgVarRefExpPtrListPtr;
120
121class SgAttribute;
122typedef Rose_STL_Container<SgAttribute*> SgAttributePtrList;
123typedef SgAttributePtrList* SgAttributePtrListPtr;
124
125// DQ (6/14/2008): I think this should be unsigned char
126// typedef Rose_STL_Container<char*> SgCharPtrList;
127// typedef SgCharPtrList* SgCharPtrListPtr;
128typedef Rose_STL_Container<unsigned char> SgCharList;
129typedef SgCharList* SgCharListPtr;
130
134
135// DQ (4/7/2001) Add SgFile list support for multi-file support within SgProject
136class SgFile;
137typedef std::vector<SgFile*> SgFilePtrList;
138typedef SgFilePtrList* SgFilePtrListPtr;
139
140// DQ (2/27/2019): Modified to add the line number so that we could support adding comments
141// and CPP directives to shared IR nodes to support multi-file compilation.
142// DQ (5/22/2006): Added this support so that we could have general way of interpreting STL
143// containers so that we could simplify that code used to generated code for the destructors.
144// JJW (6/21/2008): Changed to a unordered vector for performance
145typedef int SgFileId;
146typedef std::vector<SgFileId> SgFileIdList;
147// typedef struct { int file_id; int line_number; } SgFileIdLineNumber;
148// typedef std::vector<SgFileIdLineNumber> SgFileIdList;
149typedef int SgFileLineNumber;
150typedef std::vector<SgFileLineNumber> SgFileLineNumberList;
151
152// DQ (5/22/2006): Added this support so that we could have general way of interpreting STL
153// containers so that we could simplify that code used to generated code for the destructors.
154typedef Rose_STL_Container<std::string> SgStringList;
155typedef SgStringList* SgStringListPtr;
156
157// DQ (3/10/2007): Added STL set of SgNode* so that we could support existence tests in the
158// symbol table without a linear search of the symbol table (where we don't use the name).
159// This test helps detect where symbols may have been inserted into the symbol table using
160// two different names, or there names changed without properly unloading and reloading the
161// associated symbol.
162typedef std::set<SgNode*> SgNodeSet;
163typedef SgNodeSet* SgNodeSetPtr;
164
167
170
171// I don't think these are needed
172// typedef vector<ROSEAttributesListContainer*> ROSEAttributesListContainerList;
173// typedef ROSEAttributesListContainerList* ROSEAttributesListContainerListPtr;
174
175// MK: The data member p_nodes of the SgModifierNodes class is now an
176// STL vector, therefore we define the following data types
177typedef std::vector<SgModifierType*> SgModifierTypePtrVector;
178// DQ (12/19/2005): This is not used anywhere!
179// typedef SgModifierTypePtrVector SgModifierTypePtrVectorPtr;
180
181// DQ (12/6/2003): added bit vector typedef to support addition of more flags
182// that can be held in a long integer for the Unparse_Info object.
183typedef std::vector<bool> SgBitVector;
184
185// DQ (3/12/2004): Added for template support
187typedef Rose_STL_Container<SgTemplateParameter*> SgTemplateParameterPtrList;
188typedef SgTemplateParameterPtrList* SgTemplateParameterPtrListPtr;
189
190// DQ (3/12/2004): Added for template support
192typedef Rose_STL_Container<SgTemplateArgument*> SgTemplateArgumentPtrList;
193typedef SgTemplateArgumentPtrList* SgTemplateArgumentPtrListPtr;
194
195// DQ (9/6/2004): Added for qualified name support (e.g. A::B::C::dataMember)
196// This form of qualified name support was later removed!
197// class SgSymbol;
198// typedef list<SgSymbol*> SgSymbolPtrList;
199// typedef SgSymbolPtrList* SgSymbolPtrListPtr;
200
201// DQ (5/6/2005): Added support for SgDirectory IR node!
202class SgDirectory;
203typedef std::vector<SgDirectory*> SgDirectoryPtrList;
204typedef SgDirectoryPtrList* SgDirectoryPtrListPtr;
205
206// DQ (12/21/2005): Added to support explicit name qualifiers (this provides only global qualifier info so far)
207class SgQualifiedName;
208typedef Rose_STL_Container<SgQualifiedName*> SgQualifiedNamePtrList;
209typedef SgQualifiedNamePtrList* SgQualifiedNamePtrListPtr;
210
211// DQ (10/4/2006): Add support for storing unique numbers with SgBasicBlock IR nodes.
212// This mechanism premits unique numbers to be computed and cached and the cache to
213// be easily invalidated.
214// Name this as a list since the ROSETTA code generation will use this information.
215class SgBasicBlock;
217// typedef std::map<SgBasicBlock*,int> SgBasicBlockPtrList;
218typedef std::vector<SgBasicBlockPtr> SgBasicBlockPtrList;
219typedef SgBasicBlockPtrList* SgBasicBlockPtrListPtr;
220
221#ifdef ROSE_ENABLE_BINARY_ANALYSIS
222// DQ (3/15/2007): Added support for binaries.
223typedef Rose_STL_Container<SgAsmStatement*> SgAsmStatementPtrList;
224typedef SgAsmStatementPtrList* SgAsmStatementPtrListPtr;
225
226typedef Rose_STL_Container<SgAsmInstruction*> SgAsmInstructionPtrList;
227typedef SgAsmInstructionPtrList* SgAsmInstructionPtrListPtr;
228
229// DQ (3/15/2007): Added support for binaries.
230typedef Rose_STL_Container<SgAsmExpression*> SgAsmExpressionPtrList;
231typedef SgAsmExpressionPtrList* SgAsmExpressionPtrListPtr;
232
233typedef Rose_STL_Container<SgAsmIntegerValueExpression*> SgAsmIntegerValuePtrList;
234typedef SgAsmIntegerValuePtrList* SgAsmIntegerValuePtrListPtr;
235
236// DQ (3/15/2007): Added support for binaries.
237typedef Rose_STL_Container<SgAsmSynthesizedDeclaration*> SgAsmSynthesizedDeclarationPtrList;
238typedef SgAsmSynthesizedDeclarationPtrList* SgAsmSynthesizedDeclarationPtrListPtr;
239
240typedef Rose_STL_Container<SgAsmX86Instruction*> SgAsmX86InstructionPtrList;
241#ifdef ROSE_ENABLE_ASM_AARCH64
242typedef Rose_STL_Container<SgAsmAarch64Instruction*> SgAsmAarch64InstructionPtrList;
243#endif
244#endif
245
246// DQ (11/19/2007): Added support for Fortran namelist statement.
247typedef Rose_STL_Container<SgNameGroup*> SgNameGroupPtrList;
248typedef SgNameGroupPtrList* SgNameGroupPtrListPtr;
249
250// DQ (11/20/2007): Added support for Fortran data statement.
251typedef Rose_STL_Container<SgDataStatementGroup*> SgDataStatementGroupPtrList;
252typedef SgDataStatementGroupPtrList* SgDataStatementGroupPtrListPtr;
253
254// DQ (11/20/2007): Added support for Fortran data statement.
255typedef Rose_STL_Container<SgDataStatementObject*> SgDataStatementObjectPtrList;
256typedef SgDataStatementObjectPtrList* SgDataStatementObjectPtrListPtr;
257
258// DQ (11/20/2007): Added support for Fortran data statement.
259typedef Rose_STL_Container<SgDataStatementValue*> SgDataStatementValuePtrList;
260typedef SgDataStatementValuePtrList* SgDataStatementValuePtrListPtr;
261
262// DQ (11/21/2007): Added support for common block statements (which can have multiple common blocks)
263typedef Rose_STL_Container<SgCommonBlockObject*> SgCommonBlockObjectPtrList;
264typedef SgCommonBlockObjectPtrList* SgCommonBlockObjectPtrListPtr;
265
266// DQ (11/21/2007): Added support for dimension statements (which can have multiple entries)
267typedef Rose_STL_Container<SgDimensionObject*> SgDimensionObjectPtrList;
268typedef SgDimensionObjectPtrList* SgDimensionObjectPtrListPtr;
269
270// DQ (11/21/2007): Added support for dimension statements (which can have multiple entries)
271typedef Rose_STL_Container<SgLabelSymbol*> SgLabelSymbolPtrList;
272typedef SgLabelSymbolPtrList* SgLabelSymbolPtrListPtr;
273
274// DQ (11/21/2007): Added support for format statements (which can have multiple entries)
275typedef Rose_STL_Container<SgFormatItem*> SgFormatItemPtrList;
276typedef SgFormatItemPtrList* SgFormatItemPtrListPtr;
277
278// DQ (8/21/2008): Use the reference built for rose_addr_t instead.
279// DQ (8/21/2008): Moved this from Node.code to make it local since
280// we can't reference the nested addr_t directly from glogal scope.
281// typedef uint64_t addr_t; // address and size (file and memory)
282typedef Rose_STL_Container<rose_addr_t> SgAddressList;
283typedef SgAddressList* SgAddressListPtr;
284
285#ifdef ROSE_ENABLE_BINARY_ANALYSIS
286typedef Rose_STL_Container<rose_rva_t> SgRVAList;
287typedef SgRVAList* SgRVAListPtr;
288
289typedef Rose_STL_Container<SgAsmPEExportEntry*> SgAsmPEExportEntryPtrList;
290typedef SgAsmPEExportEntryPtrList* SgAsmPEExportEntryPtrListPtr;
291#endif
292
293typedef Rose_STL_Container<uint16_t> SgUnsigned16List;
294typedef SgUnsigned16List* SgUnsigned16ListPtr;
295
296typedef Rose_STL_Container<unsigned> SgUnsignedList;
297typedef SgUnsignedList* SgUnsignedListPtr;
298
299// DQ (8/7/2008): Added list of size_t types for binary format support.
300typedef Rose_STL_Container<size_t> SgSizeTList;
301typedef SgSizeTList* SgSizeTListPtr;
302
303#ifdef ROSE_ENABLE_BINARY_ANALYSIS
304typedef Rose_STL_Container<SgAsmNEEntryPoint*> SgAsmNEEntryPointPtrList;
305typedef SgAsmNEEntryPointPtrList* SgAsmNEEntryPointPtrListPtr;
306
307typedef Rose_STL_Container<SgAsmNERelocEntry*> SgAsmNERelocEntryPtrList;
308typedef SgAsmNERelocEntryPtrList* SgAsmNERelocEntryPtrListPtr;
309
310typedef Rose_STL_Container<SgAsmLEPageTableEntry*> SgAsmLEPageTableEntryPtrList;
311typedef SgAsmLEPageTableEntryPtrList* SgAsmLEPageTableEntryPtrListPtr;
312
313typedef Rose_STL_Container<SgAsmLEEntryPoint*> SgAsmLEEntryPointPtrList;
314typedef SgAsmLEEntryPointPtrList* SgAsmLEEntryPointPtrListPtr;
315
316// The OS/2 SgAsmLERelocEntry reused the Windows SgAsmNERelocEntry
318typedef Rose_STL_Container<SgAsmLERelocEntry*> SgAsmLERelocEntryPtrList;
319typedef SgAsmLERelocEntryPtrList* SgAsmLERelocEntryPtrListPtr;
320
321typedef Rose_STL_Container<SgAsmGenericHeader*> SgAsmGenericHeaderPtrList;
322typedef SgAsmGenericHeaderPtrList* SgAsmGenericHeaderPtrListPtr;
323
324typedef Rose_STL_Container<SgAsmGenericDLL*> SgAsmGenericDLLPtrList;
325typedef SgAsmGenericDLLPtrList* SgAsmGenericDLLPtrListPtr;
326#endif
327
328typedef Rose_STL_Container<unsigned char> SgUnsignedCharList;
329typedef SgUnsignedCharList* SgUnsignedCharListPtr;
330
331// DQ (10/1/2008): Added support for lists of SgModuleStatement where they are
332// not a part of the current translation unit. A place for the information in
333// the *.mod files to be put. This is just the type declaration for the list.
334typedef Rose_STL_Container<SgModuleStatement*> SgModuleStatementPtrList;
335typedef SgModuleStatementPtrList* SgModuleStatementPtrListPtr;
336
337// TOO1 (5/16/2013)
338typedef Rose_STL_Container<SgJavaPackageDeclaration*> SgJavaPackageDeclarationPtrList;
339
340// DQ (6/12/2013): Added to support use in Java support (in SgSourceFile).
341typedef Rose_STL_Container<SgJavaImportStatement*> SgJavaImportStatementPtrList;
342
343// DQ (6/12/2013): Added to support use in Java support (in SgSourceFile).
344typedef Rose_STL_Container<SgClassDeclaration*> SgClassDeclarationPtrList;
345
346// DQ (10/4/2008): Support for list of names or rename entries for the SgUseStatement (Fortran 90 support)
347typedef Rose_STL_Container<SgRenamePair*> SgRenamePairPtrList;
348typedef SgRenamePairPtrList* SgRenamePairPtrListPtr;
349
350// DQ (10/6/2008): Added improved support for F90 interfaces using interface bodies.
351typedef Rose_STL_Container<SgInterfaceBody*> SgInterfaceBodyPtrList;
352typedef SgInterfaceBodyPtrList* SgInterfaceBodyPtrListPtr;
353
354#ifdef ROSE_ENABLE_BINARY_ANALYSIS
355// DQ (11/5/2008): Addes as part of general Dwarf support in the AST for binary executables.
356typedef Rose_STL_Container<SgAsmDwarfLine*> SgAsmDwarfLinePtrList;
357typedef SgAsmDwarfLinePtrList* SgAsmDwarfLinePtrListPtr;
358
359typedef Rose_STL_Container<SgAsmDwarfMacro*> SgAsmDwarfMacroPtrList;
360typedef SgAsmDwarfMacroPtrList* SgAsmDwarfMacroPtrListPtr;
361
362typedef Rose_STL_Container<SgAsmDwarfConstruct*> SgAsmDwarfConstructPtrList;
363typedef SgAsmDwarfConstructPtrList* SgAsmDwarfConstructPtrListPtr;
364
365typedef Rose_STL_Container<SgAsmDwarfCompilationUnit*> SgAsmDwarfCompilationUnitPtrList;
366typedef SgAsmDwarfCompilationUnitPtrList* SgAsmDwarfCompilationUnitPtrListPtr;
367#endif
368
369// DQ (11/28/2008): Added support for list of integers (used for flag list in SgLinemarkerDirectiveStatement).
370// typedef std::vector<int> SgIntegerList;
371// Liao, 5/30/2009 types for OpenMP support
372typedef Rose_STL_Container<SgOmpClause*> SgOmpClausePtrList;
373typedef SgOmpClausePtrList* SgOmpClausePtrListPtr;
374
375typedef Rose_STL_Container<SgOmpSectionStatement*> SgOmpSectionStatementPtrList;
376typedef SgOmpSectionStatementPtrList* SgOmpSectionStatementPtrListPtr;
377
378// DQ (1/13/2014): Added support for Java annotations.
379typedef Rose_STL_Container<SgJavaMemberValuePair*> SgJavaMemberValuePairPtrList;
380typedef SgJavaMemberValuePairPtrList* SgJavaMemberValuePairPtrListPtr;
381
382// DQ (3/6/2014): Added support for Untyped IR nodes.
383
384// Rasmussen (08/25/2022): Removed all untyped Sage nodes. Ultimately it proved easier to
385// construct regular IR nodes from the Jovial parser. Using the untyped system just led to an
386// unnecessary step and wasted effort.
387
388#ifdef ROSE_ENABLE_BINARY_ANALYSIS
390typedef Rose_STL_Container<SgAsmRegisterReferenceExpression*> SgAsmRegisterReferenceExpressionPtrList;
391typedef SgAsmRegisterReferenceExpressionPtrList* SgAsmRegisterReferenceExpressionPtrListPtr;
392#endif
393
394// DQ (9/3/2014): Added support for C++11 Lambda expressions.
395typedef Rose_STL_Container<SgLambdaCapture*> SgLambdaCapturePtrList;
396typedef SgLambdaCapturePtrList* SgLambdaCapturePtrListPtr;
397
398// DQ (9/15/2018) Add SgSourceFile list support for header file reporting (for unparse headers option).
399class SgSourceFile;
400typedef Rose_STL_Container<SgSourceFile*> SgSourceFilePtrList;
401typedef SgSourceFilePtrList* SgSourceFilePtrListPtr;
402
403// DQ (9/18/2018) Add SgIncludeFile list support for header file reporting (for unparse headers option).
404class SgIncludeFile;
405typedef Rose_STL_Container<SgIncludeFile*> SgIncludeFilePtrList;
406typedef SgIncludeFilePtrList* SgIncludeFilePtrListPtr;
407
408// PP (11/24/2020) Add support for Ada representation clauses
410typedef Rose_STL_Container<SgAdaComponentClause*> SgAdaComponentClausePtrList;
411typedef SgAdaComponentClausePtrList* SgAdaComponentClausePtrListPtr;
412
413// DQ (10/28/2013): Forward declaration for new token unparsing support.
414class TokenStreamSequenceToNodeMapping;
415class FrontierNode;
416class PreviousAndNextNodeData;
417
418// DQ (11/30/2015): Added support for mapping of the AST to macro expansions.
419class MacroExpansion;
420
421#ifdef ROSE_ENABLE_BINARY_ANALYSIS
422#include <SgSharedVector.h>
423
426
427typedef Rose_STL_Container<SgAsmElfRelocEntry*> SgAsmElfRelocEntryPtrList;
428typedef SgAsmElfRelocEntryPtrList* SgAsmElfRelocEntryPtrListPtr;
429
430typedef Rose_STL_Container<SgAsmElfNoteEntry*> SgAsmElfNoteEntryPtrList;
431typedef SgAsmElfNoteEntryPtrList* SgAsmElfNoteEntryPtrListPtr;
432
433typedef Rose_STL_Container<SgAsmElfDynamicEntry*> SgAsmElfDynamicEntryPtrList;
434typedef SgAsmElfDynamicEntryPtrList* SgAsmElfDynamicEntryPtrListPtr;
435
436typedef Rose_STL_Container<SgAsmElfEHFrameEntryCI*> SgAsmElfEHFrameEntryCIPtrList;
437typedef SgAsmElfEHFrameEntryCIPtrList* SgAsmElfEHFrameEntryCIPtrListPtr;
438
439typedef Rose_STL_Container<SgAsmElfEHFrameEntryFD*> SgAsmElfEHFrameEntryFDPtrList;
440typedef SgAsmElfEHFrameEntryFDPtrList* SgAsmElfEHFrameEntryFDPtrListPtr;
441
442typedef Rose_STL_Container<SgAsmElfSegmentTableEntry*> SgAsmElfSegmentTableEntryPtrList;
443typedef SgAsmElfSegmentTableEntryPtrList* SgAsmElfSegmentTableEntryPtrListPtr;
444
445typedef Rose_STL_Container<SgAsmElfSymverEntry*> SgAsmElfSymverEntryPtrList;
446typedef SgAsmElfSymverEntryPtrList* SgAsmElfSymverEntryPtrListPtr;
447
448typedef Rose_STL_Container<SgAsmElfSymverDefinedEntry*> SgAsmElfSymverDefinedEntryPtrList;
449typedef SgAsmElfSymverDefinedEntryPtrList* SgAsmElfSymverDefinedEntryPtrListPtr;
450
451typedef Rose_STL_Container<SgAsmElfSymverDefinedAux*> SgAsmElfSymverDefinedAuxPtrList;
452typedef SgAsmElfSymverDefinedAuxPtrList* SgAsmElfSymverDefinedAuxPtrListPtr;
453
454typedef Rose_STL_Container<SgAsmElfSymverNeededEntry*> SgAsmElfSymverNeededEntryPtrList;
455typedef SgAsmElfSymverNeededEntryPtrList* SgAsmElfSymverNeededEntryPtrListPtr;
456
457typedef Rose_STL_Container<SgAsmElfSymverNeededAux*> SgAsmElfSymverNeededAuxPtrList;
458typedef SgAsmElfSymverNeededAuxPtrList* SgAsmElfSymverNeededAuxPtrListPtr;
459
460typedef Rose_STL_Container<SgAsmJvmAttribute*> SgAsmJvmAttributePtrList;
461typedef SgAsmJvmAttributePtrList* SgAsmJvmAttributePtrListPtr;
462
463typedef Rose_STL_Container<SgAsmJvmBootstrapMethod*> SgAsmJvmBootstrapMethodPtrList;
464typedef SgAsmJvmBootstrapMethodPtrList* SgAsmJvmBootstrapMethodPtrListPtr;
465
466typedef Rose_STL_Container<SgAsmJvmInnerClassesEntry*> SgAsmJvmInnerClassesEntryPtrList;
467typedef SgAsmJvmInnerClassesEntryPtrList* SgAsmJvmInnerClassesEntryPtrListPtr;
468
469typedef Rose_STL_Container<SgAsmJvmConstantPoolEntry*> SgAsmJvmConstantPoolEntryPtrList;
470typedef SgAsmJvmConstantPoolEntryPtrList* SgAsmJvmConstantPoolEntryPtrListPtr;
471
472typedef Rose_STL_Container<SgAsmJvmExceptionHandler*> SgAsmJvmExceptionHandlerPtrList;
473typedef SgAsmJvmExceptionHandlerPtrList* SgAsmJvmExceptionHandlerPtrListPtr;
474
475typedef Rose_STL_Container<SgAsmJvmField*> SgAsmJvmFieldPtrList;
476typedef SgAsmJvmFieldPtrList* SgAsmJvmFieldPtrListPtr;
477
478typedef Rose_STL_Container<SgAsmJvmMethodParametersEntry*> SgAsmJvmMethodParametersEntryPtrList;
479typedef SgAsmJvmMethodParametersEntryPtrList* SgAsmJvmMethodParametersEntryPtrListPtr;
480
481typedef Rose_STL_Container<SgAsmJvmLineNumberEntry*> SgAsmJvmLineNumberEntryPtrList;
482typedef SgAsmJvmLineNumberEntryPtrList* SgAsmJvmLineNumberEntryPtrListPtr;
483
484typedef Rose_STL_Container<SgAsmJvmLocalVariableEntry*> SgAsmJvmLocalVariableEntryPtrList;
485typedef SgAsmJvmLocalVariableEntryPtrList* SgAsmJvmLocalVariableEntryPtrListPtr;
486
487typedef Rose_STL_Container<SgAsmJvmLocalVariableTypeEntry*> SgAsmJvmLocalVariableTypeEntryPtrList;
488typedef SgAsmJvmLocalVariableTypeEntryPtrList* SgAsmJvmLocalVariableTypeEntryPtrListPtr;
489
490typedef Rose_STL_Container<SgAsmJvmMethod*> SgAsmJvmMethodPtrList;
491typedef SgAsmJvmMethodPtrList* SgAsmJvmMethodPtrListPtr;
492
493typedef Rose_STL_Container<SgAsmJvmStackMapFrame*> SgAsmJvmStackMapFramePtrList;
494typedef SgAsmJvmStackMapFramePtrList* SgAsmJvmStackMapFramePtrListPtr;
495
496typedef Rose_STL_Container<SgAsmJvmStackMapVerificationType*> SgAsmJvmStackMapVerificationTypePtrList;
497typedef SgAsmJvmStackMapVerificationTypePtrList* SgAsmJvmStackMapVerificationTypePtrListPtr;
498
499typedef Rose_STL_Container<SgAsmPERVASizePair*> SgAsmPERVASizePairPtrList;
500typedef SgAsmPERVASizePairPtrList* SgAsmPERVASizePairPtrListPtr;
501#endif
502
503// DQ (11/20/2010): Added type for SgToken list
504// Build a type for the SgToken list.
505typedef Rose_STL_Container<SgToken*> SgTokenPtrList;
506typedef SgTokenPtrList* SgTokenPtrListPtr;
507
508// DQ (11/6/2008): This is the support for mapping instructions to source code and back.
509// When it is further along it will be moved to the SgAsmDwarfCompilationUnit as a member
510// function which will built it if it has not previously been built.
511// This is how a triplet would be built (in the future), instead of a pair, but for now use a pair.
512// std::tr1::tuple<int, int, int> tp;
513typedef std::pair<int,int> LineColumnFilePosition;
514typedef std::pair<int,LineColumnFilePosition> FileIdLineColumnFilePosition;
515
516typedef std::pair<uint64_t,FileIdLineColumnFilePosition> AddressFileIdLineColumnFilePositionPair;
517typedef std::pair<FileIdLineColumnFilePosition,uint64_t> FileIdLineColumnFilePositionAddressPair;
518
519// typedef std::multimap<uint64_t,FileIdLineColumnFilePosition> SgInstructionAddressSourcePositionMapPtrList;
520// typedef std::multimap<FileIdLineColumnFilePosition,uint64_t> SgSourcePositionInstructionAddressMapPtrList;
521typedef std::multimap<uint64_t,FileIdLineColumnFilePosition> SgInstructionAddressSourcePositionMapPtrList;
522typedef std::multimap<FileIdLineColumnFilePosition,uint64_t> SgSourcePositionInstructionAddressMapPtrList;
523
524typedef std::pair<SgInstructionAddressSourcePositionMapPtrList*,SgSourcePositionInstructionAddressMapPtrList*> DwarfInstructionSourceMapReturnType;
525
526ROSE_DLL_API std::ostream& operator<<(std::ostream&, const SgName&);
527
528// DQ (12/6/2003): Added output function for SgBitVector objects
529std::ostream& operator<<(std::ostream&, const std::vector<bool>&);
530
531// DQ (8/3/2005): Added output function for STL set objects
532std::ostream& operator<<(std::ostream&, const std::set<int>&);
533
534// DQ (10/4/2006): Added output function for STL map objects
535std::ostream& operator<<(std::ostream&, const std::map<SgNode*,int>&);
536
537// DQ (10/6/2006): Added output function for STL map objects
538std::ostream& operator<<(std::ostream&, const std::map<SgNode*,std::string>&);
539
540#ifdef ROSE_ENABLE_BINARY_ANALYSIS
541std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgAsmStatement*>&);
542std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgAsmExpression*>&);
543#endif
544
545// DQ (11/20/2007): Part of support for the Fortran data statement
546std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgDataStatementObject*>&);
547std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgDataStatementValue*>&);
548std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgCommonBlockObject*>&);
549std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgDimensionObject*>&);
550std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgLabelSymbol*>&);
551std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgFormatItem*>&);
552
553// DQ (4/19/2006): forward declaration of PreprocessingInfo so that
554// PreprocessingInfo can follow Sage III class declarations and contain
555// a Sg_File_Info object (to record the filename of the comments and
556// CPP directoves).
557// class PreprocessingInfo;
558
559// DQ (4/23/2006): The friend declaration the SgProject class is not enough this must be defined outside of the class (for g++ 4.1.0).
560std::ostream & operator<< ( std::ostream & os, const Rose_STL_Container<std::string> & l );
561
562#ifndef SWIG
563
564// DQ (8/8/2008): Added support for std::multimap<rose_addr_t, rose_addr_t> used in binary file format.
565std::ostream & operator<< ( std::ostream & os, const std::multimap<rose_addr_t, rose_addr_t> & m );
566std::ostream & operator<< ( std::ostream & os, const std::vector<std::pair<rose_addr_t, rose_addr_t> > & l );
567// struct SgAsmGenericFormat::fileDetails;
568// std::ostream & operator<< ( std::ostream & os, const SgAsmGenericFormat::fileDetails & sb );
569std::ostream & operator<< ( std::ostream & os, const struct stat & sb );
570
571// endif for ifndef ROSE_USE_SWIG_SUPPORT
572#endif
573
574#ifdef ROSE_ENABLE_BINARY_ANALYSIS
575// DQ (3/15/2007): Added support for binaries
576std::ostream & operator<< ( std::ostream & os, const Rose_STL_Container<SgAsmStatement*> & l );
577#endif
578
579// DQ (5/8/2007): Added support for type elaboration lists, hidden type lists, and hidden declaration lists.
580std::ostream & operator<< ( std::ostream & os, const std::set<SgSymbol*> & l );
581
582#endif
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.