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