ROSE 0.11.145.147
SgAsmDwarfStructureType.h
1
2#ifndef ROSE_SgAsmDwarfStructureType_H
3#define ROSE_SgAsmDwarfStructureType_H
4#include <RoseFirst.h>
5#include <Cxx_GrammarDeclarations.h>
6#include <SgAsmDwarfConstruct.h>
7
8
9
10/* #line 1 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11
12// WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
13// This code is automatically generated for each
14// terminal and non-terminal within the defined
15// grammar. There is a simple way to change the
16// code to fix bugs etc. See the ROSE README file
17// for directions.
18
19// tps: (02/22/2010): Adding DLL export requirements
20#include "rosedll.h"
21
22// predeclarations for SgAsmDwarfStructureType
23
24/* #line 25 "../../../src/frontend/SageIII//SgAsmDwarfStructureType.h" */
25/* #line 24491 "/workspace/src/ROSETTA/src/binaryInstruction.C" */
26
27#ifdef ROSE_SgAsmDwarfStructureType_IMPL
28#include <SgAsmDwarfConstructList.h>
29#endif
30
31
32/* #line 13 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
33
34/* #line 14 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35
36#if !defined(DOCUMENTATION)
37// Class Definition for SgAsmDwarfStructureType
38class ROSE_DLL_API SgAsmDwarfStructureType : public SgAsmDwarfConstruct
39 {
40 public:
41
42
43/* #line 44 "../../../src/frontend/SageIII//SgAsmDwarfStructureType.h" */
44
45 virtual SgNode* copy ( SgCopyHelp& help) const override;
46// Start of memberFunctionString
47/* #line 24508 "/workspace/src/ROSETTA/src/binaryInstruction.C" */
48
49
50 //----------------------- Boost serialization for SgAsmDwarfStructureType -----------------------
51#ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
52private:
53 friend class boost::serialization::access;
54
55 template<class S>
56 void serialize(S &s, const unsigned /*version*/) {
57 debugSerializationBegin("SgAsmDwarfStructureType");
58 s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(SgAsmDwarfConstruct);
59 s & BOOST_SERIALIZATION_NVP(p_body);
60 debugSerializationEnd("SgAsmDwarfStructureType");
61 }
62#endif // ROSE_HAVE_BOOST_SERIALIZATION_LIB
63public:
64public:
65 SgAsmDwarfConstructList* const& get_body() const;
66 void set_body(SgAsmDwarfConstructList* const&);
67public:
68 SgAsmDwarfConstructList* get_children() override;
69public:
72
73public:
76
77public:
79 SgAsmDwarfStructureType(int const& nesting_level,
80 uint64_t const& offset,
81 uint64_t const& overall_offset);
82
83protected:
91
92
93// End of memberFunctionString
94// Start of memberFunctionString
95/* #line 1 "/workspace/src/ROSETTA/Grammar/Common.code" */
96
97// *** COMMON CODE SECTION BEGINS HERE ***
98
99 public:
100
101 // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
102 // and not required which is required to match the other aspects of the copy mechanism code generation.
103 // Specifically it is a problem to declare the copy function everywhere because it is not implemented
104 // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
105 /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
106 // virtual SgNode* copy ( const SgCopyHelp & help) const;
107
109 virtual std::string class_name() const override;
110
112 virtual VariantT variantT() const override; // MS: new variant used in tree traversal
113
115 // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
116 // static const VariantT static_variant = V_SgAsmDwarfStructureType;
117 enum { static_variant = V_SgAsmDwarfStructureType };
118
119 /* the generated cast function */
121 ROSE_DLL_API friend SgAsmDwarfStructureType* isSgAsmDwarfStructureType( SgNode * s );
122
124 ROSE_DLL_API friend const SgAsmDwarfStructureType* isSgAsmDwarfStructureType( const SgNode * s );
125
126 // ******************************************
127 // * Memory Pool / New / Delete
128 // ******************************************
129
130 public:
132 static const unsigned pool_size; //
134 static std::vector<unsigned char *> pools; //
136 static SgAsmDwarfStructureType * next_node; //
137
139 static unsigned long initializeStorageClassArray(SgAsmDwarfStructureTypeStorageClass *); //
140
142 static void clearMemoryPool(); //
143 static void deleteMemoryPool(); //
144
146 static void extendMemoryPoolForFileIO(); //
147
149 static SgAsmDwarfStructureType * getPointerFromGlobalIndex(unsigned long); //
151 static SgAsmDwarfStructureType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
152
154 static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
156 static void resetValidFreepointers(); //
158 static unsigned long getNumberOfLastValidPointer(); //
159
160
161#if defined(INLINE_FUNCTIONS)
163 inline void *operator new (size_t size);
164#else
166 void *operator new (size_t size);
167#endif
169 void operator delete (void* pointer, size_t size);
170
171 // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
172 void operator delete (void* pointer)
173 {
174 // This is the generated delete operator...
175 SgAsmDwarfStructureType::operator delete (pointer,sizeof(SgAsmDwarfStructureType));
176 }
177
179 static size_t numberOfNodes();
180
182 static size_t memoryUsage();
183
184 // End of scope which started in IR nodes specific code
185 /* */
186
187 /* name Internal Functions
188 \brief Internal functions ... incomplete-documentation
189
190 These functions have been made public as part of the design, but they are suggested for internal use
191 or by particularly knowledgeable users for specialized tools or applications.
192
193 \internal We could not make these private because they are required by user for special purposes. And
194 it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
195
196 */
197
198 // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
199 // overridden in every class by *generated* implementation
201 virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
202 // MS: 06/28/02 container of names of variables or container indices
203 // used used in the traversal to access AST successor nodes
204 // overridden in every class by *generated* implementation
207 virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
208
209 // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
210 // than all the vector copies. The implementation for these functions is generated for each class.
212 virtual size_t get_numberOfTraversalSuccessors() override;
214 virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
216 virtual size_t get_childIndex(SgNode *child) override;
217
218#ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
219 // MS: 08/16/2002 method for generating RTI information
221 virtual RTIReturnType roseRTI() override;
222#endif
223 /* */
224
225
226
227 /* name Deprecated Functions
228 \brief Deprecated functions ... incomplete-documentation
229
230 These functions have been deprecated from use.
231 */
232 /* */
233
235 virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
236
237 // JJW (10/16/2008): Changed to a single function in Node.code, and put
238 // getVariant() in #if 0 block to prevent confusing Doxygen
239#if 0
241 virtual int variant() const ROSE_DEPRECATED_FUNCTION;
243 // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
244#endif
245 /* */
246
247
248
249
250 public:
251 /* name Traversal Support Functions
252 \brief Traversal support functions ... incomplete-documentation
253
254 These functions have been made public as part of the design, but they are suggested for internal use
255 or by particularly knowledgable users for specialized tools or applications.
256 */
257 /* */
258
259 // DQ (11/26/2005): Support for visitor pattern mechanims
260 // (inferior to ROSE traversal mechanism, experimental).
264
265 /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
267 virtual void accept (ROSE_VisitorPattern & visitor) override;
268
269 // DQ (12/26/2005): Support for traversal based on the memory pool
272 static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
273
277
278 // DQ (2/9/2006): Added to support traversal over single representative of each IR node
279 // This traversal helps support internal tools that call static member functions.
280 // note: this function operates on the memory pools.
283 static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
284 /* */
285
286 public:
287 /* NodeId support functions */
289 static SgNode* getNodeByNodeId(VariantT variantT, size_t poolIdx, size_t itemIdx);
292 static SgAsmDwarfStructureType* getNodeByNodeIdInternal(size_t poolIdx, size_t itemIdx);
295 static std::string getNodeIdString(SgAsmDwarfStructureType* sgnode);
296 static std::string getNodeIdStringInternal(SgAsmDwarfStructureType* sgnode);
297
298 public:
299 /* name Memory Allocation Functions
300 \brief Memory allocations functions ... incomplete-documentation
301
302 These functions have been made public as part of the design, but they are suggested for internal use
303 or by particularly knowledgable users for specialized tools or applications.
304 */
305 /* */
306
317 virtual bool isInMemoryPool() override;
318
329 virtual void checkDataMemberPointersIfInMemoryPool() override;
330
331 // DQ (4/30/2006): Modified to be a const function.
346 virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
347
358
370 virtual long getChildIndex( SgNode* childNode ) const override;
371
372 // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
373 // comment here (changed to be a C style comment and not be a doxygen comment).
374 /* \brief Constructor for use by AST File I/O Mechanism
375
376 This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
377 which obtained via fast binary file I/O from disk.
378 */
379 // SgAsmDwarfStructureType( SgAsmDwarfStructureTypeStorageClass& source );
380
381
382
383
384
385 // JH (10/24/2005): methods added to support the ast file IO
386 private:
387
388 /* name AST Memory Allocation Support Functions
389 \brief Memory allocations support....
390
391 These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
392 in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
393 and support the AST File I/O Mechanism.
394 */
395 /* */
396
397 /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
398 we compare them. Since I had several problems with this, I decided to make a typdef to ensure
399 that I use the same type everywhere, if any changes are made. THe second one declares the type
400 (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
401 might got changed, but unfortunatly, the return types are still unsigned longs. There exists
402 a correspinding one in the AST_FILE_IO class!
403 */
404 // DQ (9/2/2015): This typedef is no longer used, we can't define the
405 // comment here (changed to be a C style comment and not be a doxygen comment).
406 /* \brief Typedef used for low level memory access.
407 */
408 // typedef unsigned char* TestType;
409
410 // DQ (9/2/2015): This typedef is no longer used, we can't define the
411 // comment here (changed to be a C style comment and not be a doxygen comment).
412 /* \brief Typedef used to hold memory addresses as values.
413 */
414 // typedef unsigned long AddressType;
415
416
417
418 // necessary, to have direct access to the p_freepointer and the private methods !
420 friend class AST_FILE_IO;
421
423 friend class SgAsmDwarfStructureTypeStorageClass;
424
426 friend class AstSpecificDataManagingClass;
427
429 friend class AstSpecificDataManagingClassStorageClass;
430 public:
432 SgAsmDwarfStructureType( const SgAsmDwarfStructureTypeStorageClass& source );
433
434 // private: // JJW hack
435 /*
436 name AST Memory Allocation Support Variables
437 Memory allocations support variables
438
439 These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
440 in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
441 and support the AST File I/O Mechanism.
442 */
443 /* */
444
445 public:
446
447 // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
448 // to current node (so that it will work cleanly with build functions to specify patterns).
449 // virtual SgNode* addRegExpAttribute();
456
457#ifndef _MSC_VER
458// Rasmussen (04/17/2019): Support for ATerms has been deprecated as it is no longer needed
459// and likely never fully implemented nor tested. Files remain in the src tree but are no
460// longer built.
461#define BUILD_ATERM_SUPPORT 0
462 #if BUILD_ATERM_SUPPORT
463 #ifdef ROSE_USE_ROSE_ATERM_SUPPORT
464 // DQ (10/4/2014): Adding ATerm support to ROSE.
474 // Rasmussen (1/7/2019): Added override to kill warning messages of overridden virtual function
475 virtual ATerm generate_ATerm() override;
476
478 virtual void generate_ATerm_Annotation(ATerm & term) override;
479 #endif
480 #endif // BUILD_ATERM_SUPPORT
481#endif
482 // These can't be virtual functions since we don't yet know what IR node to build (until we have read the aterm).
483 // virtual generate_AST(ATerm & term);
484 // virtual void read_ATerm_Annotation(ATerm & term);
485
486// *** COMMON CODE SECTION ENDS HERE ***
487
488
489// End of memberFunctionString
490// Start of memberFunctionString
491/* #line 706 "/workspace/src/ROSETTA/Grammar/Node.code" */
492
493 // the generated cast function
494 // friend ROSE_DLL_API SgAsmDwarfStructureType* isSgAsmDwarfStructureType ( SgNode* s );
495
496 typedef SgAsmDwarfConstruct base_node_type;
497
498
499// End of memberFunctionString
500
501
502 protected:
503// Start of memberFunctionString
505
506// End of memberFunctionString
507
509 friend struct Rose::Traits::generated::describe_field_t<SgAsmDwarfStructureType, SgAsmDwarfConstructList*,&SgAsmDwarfStructureType::p_body>;
510
511/* #line 21 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
512
513
514 };
515#endif
516
517// postdeclarations for SgAsmDwarfStructureType
518
519/* #line 520 "../../../src/frontend/SageIII//SgAsmDwarfStructureType.h" */
520
521/* #line 27 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
522
523/* #line 28 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
524
525
526/* #line 527 "../../../src/frontend/SageIII//SgAsmDwarfStructureType.h" */
527
528#endif // ROSE_SgAsmDwarfStructureType_H
529
Class holding static data and functions supporting File I/O.
Definition AST_FILE_IO.h:19
Attribute containing a regex expression as a string.
void initializeProperties()
Initialize all properties that have explicit initial values.
Supporting class from copy mechanism within ROSE.
Definition sageCopy.h:26
This class represents the base class for all IR nodes within Sage III.
virtual size_t get_numberOfTraversalSuccessors()
return number of children in the traversal successor list
virtual RTIReturnType roseRTI()
return C++ Runtime-Time-Information
virtual std::vector< std::string > get_traversalSuccessorNamesContainer()
container of names of variables or container indices used used in the traversal to access AST success...
virtual void debugSerializationEnd(const char *className)
Called by generated serializers.
static std::string getNodeIdString(SgNode *sgnode)
compute the NodeId for a particular SgNode*.
virtual bool isInMemoryPool()
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
int variant() const
Older version function returns enum value "NODE".
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *)
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
virtual VariantT variantT() const
returns new style SageIII enum values
virtual long getChildIndex(SgNode *childNode) const
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
virtual size_t get_childIndex(SgNode *child)
index-based access to traversal successors by child node
virtual void debugSerializationBegin(const char *className)
Called by generated serializers.
virtual std::vector< SgNode * > get_traversalSuccessorContainer()
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
virtual std::string class_name() const
returns a string representing the class name
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
virtual void checkDataMemberPointersIfInMemoryPool()
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
virtual void accept(ROSE_VisitorPattern &visitor)
support for the classic visitor pattern done in GoF
virtual SgNode * get_traversalSuccessorByIndex(size_t idx)
index-based access to traversal successors by index number
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
static SgNode * getNodeByNodeId(VariantT variantT, size_t poolIdx, size_t itemIdx)
Find a node by its variant type, pool index, and item index.
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
virtual const char * sage_class_name() const
generates string representing the class name: (e.g. for SgNode returns "SgNode").
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
static SgNode * getNodeByNodeIdInternal(size_t poolIdx, size_t itemIdx)
FOR INTERNAL USE Find an SgNode from its memory pool and location therin.
SgNode * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.
void copy(const Word *src, const BitRange &srcRange, Word *dst, const BitRange &dstRange)
Copy some bits.