ROSE 0.11.145.147
SgAsmJvmConstantPoolEntry.h
1
2#ifndef ROSE_SgAsmJvmConstantPoolEntry_H
3#define ROSE_SgAsmJvmConstantPoolEntry_H
4#include <RoseFirst.h>
5#include <Cxx_GrammarDeclarations.h>
6#include <SgAsmJvmNode.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 SgAsmJvmConstantPoolEntry
23
24/* #line 25 "../../../src/frontend/SageIII//SgAsmJvmConstantPoolEntry.h" */
25
26/* #line 13 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
27
28/* #line 14 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
29
30#if !defined(DOCUMENTATION)
31// Class Definition for SgAsmJvmConstantPoolEntry
32class ROSE_DLL_API SgAsmJvmConstantPoolEntry : public SgAsmJvmNode
33 {
34 public:
35
36
37/* #line 38 "../../../src/frontend/SageIII//SgAsmJvmConstantPoolEntry.h" */
38
39 virtual SgNode* copy ( SgCopyHelp& help) const override;
40// Start of memberFunctionString
41/* #line 12887 "/workspace/src/ROSETTA/src/binaryInstruction.C" */
42
43
44 //----------------------- Boost serialization for SgAsmJvmConstantPoolEntry -----------------------
45#ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
46private:
47 friend class boost::serialization::access;
48
49 template<class S>
50 void serialize(S &s, const unsigned /*version*/) {
51 debugSerializationBegin("SgAsmJvmConstantPoolEntry");
52 s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(SgAsmJvmNode);
53 s & BOOST_SERIALIZATION_NVP(p_tag);
54 s & BOOST_SERIALIZATION_NVP(p_bytes);
55 s & BOOST_SERIALIZATION_NVP(p_hi_bytes);
56 s & BOOST_SERIALIZATION_NVP(p_low_bytes);
57 s & BOOST_SERIALIZATION_NVP(p_bootstrap_method_attr_index);
58 s & BOOST_SERIALIZATION_NVP(p_class_index);
59 s & BOOST_SERIALIZATION_NVP(p_descriptor_index);
60 s & BOOST_SERIALIZATION_NVP(p_name_index);
61 s & BOOST_SERIALIZATION_NVP(p_name_and_type_index);
62 s & BOOST_SERIALIZATION_NVP(p_reference_index);
63 s & BOOST_SERIALIZATION_NVP(p_reference_kind);
64 s & BOOST_SERIALIZATION_NVP(p_string_index);
65 s & BOOST_SERIALIZATION_NVP(p_length);
66 debugSerializationEnd("SgAsmJvmConstantPoolEntry");
67 }
68#endif // ROSE_HAVE_BOOST_SERIALIZATION_LIB
70 // Local types
72public:
77 enum Kind {
78 EMPTY = 0,
79 CONSTANT_Utf8 = 1,
80 CONSTANT_Integer = 3,
81 CONSTANT_Float = 4,
82 CONSTANT_Long = 5,
83 CONSTANT_Double = 6,
84 CONSTANT_Class = 7,
85 CONSTANT_String = 8,
86 CONSTANT_Fieldref = 9,
87 CONSTANT_Methodref = 10,
88 CONSTANT_InterfaceMethodref = 11,
89 CONSTANT_NameAndType = 12,
90 CONSTANT_MethodHandle = 15,
91 CONSTANT_MethodType = 16,
92 CONSTANT_Dynamic = 17,
93 CONSTANT_InvokeDynamic = 18,
94 CONSTANT_Module = 19,
95 CONSTANT_Package = 20
96 };
97
98#ifdef DOCUMENTATION
102#endif
104 struct CONSTANT_Class_info {
105 uint8_t tag;
106 uint16_t name_index;
107 };
108
111 struct CONSTANT_Fieldref_info {
112 uint8_t tag;
113 uint16_t class_index;
114 uint16_t name_and_type_index;
115 };
116 struct CONSTANT_Methodref_info {
117 uint8_t tag;
118 uint16_t class_index;
119 uint16_t name_and_type_index;
120 };
121 struct CONSTANT_InterfaceMethodref_info {
122 uint8_t tag;
123 uint16_t class_index;
124 uint16_t name_and_type_index;
125 };
126
128 struct CONSTANT_String_info {
129 uint8_t tag;
130 uint16_t string_index;
131 };
132
134 struct CONSTANT_Integer_info {
135 uint8_t tag;
136 uint32_t bytes;
137 };
138 struct CONSTANT_Float_info {
139 uint8_t tag;
140 uint32_t bytes;
141 };
142 struct CONSTANT_Long_info {
143 uint8_t tag;
144 uint32_t hi_bytes;
145 uint32_t low_bytes;
146 };
147 struct CONSTANT_Double_info {
148 uint8_t tag;
149 uint32_t hi_bytes;
150 uint32_t low_bytes;
151 };
152
154 struct CONSTANT_NameAndType_info {
155 uint8_t tag;
156 uint16_t name_index;
157 uint16_t descriptor_index;
158 };
159
161 struct CONSTANT_Utf8_info {
162 uint8_t tag;
163 uint16_t length;
164 uint8_t* bytes;
165 };
166
168 struct CONSTANT_MethodHandle_info {
169 uint8_t tag;
170 uint8_t reference_kind;
171 uint16_t reference_index;
172 };
173
175 struct CONSTANT_MethodType_info {
176 uint8_t tag;
177 uint16_t descriptor_index;
178 };
179
181 struct CONSTANT_Dynamic_info {
182 uint8_t tag;
183 uint16_t bootstrap_method_attr_index;
184 uint16_t name_and_type_index;
185 };
186 struct CONSTANT_InvokeDynamic_info {
187 uint8_t tag;
188 uint16_t bootstrap_method_attr_index;
189 uint16_t name_and_type_index;
190 };
191
193 struct CONSTANT_Module_info {
194 uint8_t tag;
195 uint16_t name_index;
196 };
197
199 struct CONSTANT_Package_info {
200 uint8_t tag;
201 uint16_t name_index;
202 };
203
205 // Properties
207public:
208public:
214 SgAsmJvmConstantPoolEntry::Kind const& get_tag() const;
215 void set_tag(SgAsmJvmConstantPoolEntry::Kind const&);
218public:
225 uint32_t const& get_bytes() const;
226 void set_bytes(uint32_t const&);
229public:
237 uint32_t const& get_hi_bytes() const;
238 void set_hi_bytes(uint32_t const&);
241public:
249 uint32_t const& get_low_bytes() const;
250 void set_low_bytes(uint32_t const&);
253public:
260 uint16_t const& get_bootstrap_method_attr_index() const;
261 void set_bootstrap_method_attr_index(uint16_t const&);
264public:
271 uint16_t const& get_class_index() const;
272 void set_class_index(uint16_t const&);
275public:
282 uint16_t const& get_descriptor_index() const;
283 void set_descriptor_index(uint16_t const&);
286public:
293 uint16_t const& get_name_index() const;
294 void set_name_index(uint16_t const&);
297public:
305 uint16_t const& get_name_and_type_index() const;
306 void set_name_and_type_index(uint16_t const&);
309public:
316 uint16_t const& get_reference_index() const;
317 void set_reference_index(uint16_t const&);
320public:
327 uint8_t const& get_reference_kind() const;
328 void set_reference_kind(uint8_t const&);
331public:
338 uint16_t const& get_string_index() const;
339 void set_string_index(uint16_t const&);
342public:
349 uint16_t const& get_length() const;
350 void set_length(uint16_t const&);
352 // [Robb Matzke 2023-03-22]: I (and the serialization) have no idea what this points to, and therefore it cannot be
353 // serialized. E.g., how many 'chars' should be serialized? Is the length stored in the `length` property? If so, `utf8_bytes`
354 // should probably be an std::vector instead, which is a serializable thing. Furthermore, the data member cannot be 'const'
355 // because that prevents it from being initialized by some de-serialization mechanisms (e.g., boost::serialize creates a default
356 // constructed object and then fills it in).
357public:
363 char* const& get_utf8_bytes() const;
364 void set_utf8_bytes(char* const&);
367 // Functions
369public:
372
380 virtual void unparse(std::ostream&) const override;
381
383 void dump(FILE*, const char *prefix, ssize_t idx) const override;
384
386 static std::string to_string(SgAsmJvmConstantPoolEntry::Kind);
387public:
390
391public:
394
395protected:
403
404
405// End of memberFunctionString
406// Start of memberFunctionString
407/* #line 1 "/workspace/src/ROSETTA/Grammar/Common.code" */
408
409// *** COMMON CODE SECTION BEGINS HERE ***
410
411 public:
412
413 // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
414 // and not required which is required to match the other aspects of the copy mechanism code generation.
415 // Specifically it is a problem to declare the copy function everywhere because it is not implemented
416 // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
417 /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
418 // virtual SgNode* copy ( const SgCopyHelp & help) const;
419
421 virtual std::string class_name() const override;
422
424 virtual VariantT variantT() const override; // MS: new variant used in tree traversal
425
427 // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
428 // static const VariantT static_variant = V_SgAsmJvmConstantPoolEntry;
429 enum { static_variant = V_SgAsmJvmConstantPoolEntry };
430
431 /* the generated cast function */
433 ROSE_DLL_API friend SgAsmJvmConstantPoolEntry* isSgAsmJvmConstantPoolEntry( SgNode * s );
434
436 ROSE_DLL_API friend const SgAsmJvmConstantPoolEntry* isSgAsmJvmConstantPoolEntry( const SgNode * s );
437
438 // ******************************************
439 // * Memory Pool / New / Delete
440 // ******************************************
441
442 public:
444 static const unsigned pool_size; //
446 static std::vector<unsigned char *> pools; //
448 static SgAsmJvmConstantPoolEntry * next_node; //
449
451 static unsigned long initializeStorageClassArray(SgAsmJvmConstantPoolEntryStorageClass *); //
452
454 static void clearMemoryPool(); //
455 static void deleteMemoryPool(); //
456
458 static void extendMemoryPoolForFileIO(); //
459
461 static SgAsmJvmConstantPoolEntry * getPointerFromGlobalIndex(unsigned long); //
463 static SgAsmJvmConstantPoolEntry * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
464
466 static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
468 static void resetValidFreepointers(); //
470 static unsigned long getNumberOfLastValidPointer(); //
471
472
473#if defined(INLINE_FUNCTIONS)
475 inline void *operator new (size_t size);
476#else
478 void *operator new (size_t size);
479#endif
481 void operator delete (void* pointer, size_t size);
482
483 // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
484 void operator delete (void* pointer)
485 {
486 // This is the generated delete operator...
487 SgAsmJvmConstantPoolEntry::operator delete (pointer,sizeof(SgAsmJvmConstantPoolEntry));
488 }
489
491 static size_t numberOfNodes();
492
494 static size_t memoryUsage();
495
496 // End of scope which started in IR nodes specific code
497 /* */
498
499 /* name Internal Functions
500 \brief Internal functions ... incomplete-documentation
501
502 These functions have been made public as part of the design, but they are suggested for internal use
503 or by particularly knowledgeable users for specialized tools or applications.
504
505 \internal We could not make these private because they are required by user for special purposes. And
506 it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
507
508 */
509
510 // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
511 // overridden in every class by *generated* implementation
513 virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
514 // MS: 06/28/02 container of names of variables or container indices
515 // used used in the traversal to access AST successor nodes
516 // overridden in every class by *generated* implementation
519 virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
520
521 // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
522 // than all the vector copies. The implementation for these functions is generated for each class.
524 virtual size_t get_numberOfTraversalSuccessors() override;
526 virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
528 virtual size_t get_childIndex(SgNode *child) override;
529
530#ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
531 // MS: 08/16/2002 method for generating RTI information
533 virtual RTIReturnType roseRTI() override;
534#endif
535 /* */
536
537
538
539 /* name Deprecated Functions
540 \brief Deprecated functions ... incomplete-documentation
541
542 These functions have been deprecated from use.
543 */
544 /* */
545
547 virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
548
549 // JJW (10/16/2008): Changed to a single function in Node.code, and put
550 // getVariant() in #if 0 block to prevent confusing Doxygen
551#if 0
553 virtual int variant() const ROSE_DEPRECATED_FUNCTION;
555 // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
556#endif
557 /* */
558
559
560
561
562 public:
563 /* name Traversal Support Functions
564 \brief Traversal support functions ... incomplete-documentation
565
566 These functions have been made public as part of the design, but they are suggested for internal use
567 or by particularly knowledgable users for specialized tools or applications.
568 */
569 /* */
570
571 // DQ (11/26/2005): Support for visitor pattern mechanims
572 // (inferior to ROSE traversal mechanism, experimental).
576
577 /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
579 virtual void accept (ROSE_VisitorPattern & visitor) override;
580
581 // DQ (12/26/2005): Support for traversal based on the memory pool
584 static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
585
589
590 // DQ (2/9/2006): Added to support traversal over single representative of each IR node
591 // This traversal helps support internal tools that call static member functions.
592 // note: this function operates on the memory pools.
595 static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
596 /* */
597
598 public:
599 /* NodeId support functions */
601 static SgNode* getNodeByNodeId(VariantT variantT, size_t poolIdx, size_t itemIdx);
604 static SgAsmJvmConstantPoolEntry* getNodeByNodeIdInternal(size_t poolIdx, size_t itemIdx);
607 static std::string getNodeIdString(SgAsmJvmConstantPoolEntry* sgnode);
608 static std::string getNodeIdStringInternal(SgAsmJvmConstantPoolEntry* sgnode);
609
610 public:
611 /* name Memory Allocation Functions
612 \brief Memory allocations functions ... incomplete-documentation
613
614 These functions have been made public as part of the design, but they are suggested for internal use
615 or by particularly knowledgable users for specialized tools or applications.
616 */
617 /* */
618
629 virtual bool isInMemoryPool() override;
630
641 virtual void checkDataMemberPointersIfInMemoryPool() override;
642
643 // DQ (4/30/2006): Modified to be a const function.
658 virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
659
670
682 virtual long getChildIndex( SgNode* childNode ) const override;
683
684 // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
685 // comment here (changed to be a C style comment and not be a doxygen comment).
686 /* \brief Constructor for use by AST File I/O Mechanism
687
688 This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
689 which obtained via fast binary file I/O from disk.
690 */
691 // SgAsmJvmConstantPoolEntry( SgAsmJvmConstantPoolEntryStorageClass& source );
692
693
694
695
696
697 // JH (10/24/2005): methods added to support the ast file IO
698 private:
699
700 /* name AST Memory Allocation Support Functions
701 \brief Memory allocations support....
702
703 These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
704 in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
705 and support the AST File I/O Mechanism.
706 */
707 /* */
708
709 /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
710 we compare them. Since I had several problems with this, I decided to make a typdef to ensure
711 that I use the same type everywhere, if any changes are made. THe second one declares the type
712 (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
713 might got changed, but unfortunatly, the return types are still unsigned longs. There exists
714 a correspinding one in the AST_FILE_IO class!
715 */
716 // DQ (9/2/2015): This typedef is no longer used, we can't define the
717 // comment here (changed to be a C style comment and not be a doxygen comment).
718 /* \brief Typedef used for low level memory access.
719 */
720 // typedef unsigned char* TestType;
721
722 // DQ (9/2/2015): This typedef is no longer used, we can't define the
723 // comment here (changed to be a C style comment and not be a doxygen comment).
724 /* \brief Typedef used to hold memory addresses as values.
725 */
726 // typedef unsigned long AddressType;
727
728
729
730 // necessary, to have direct access to the p_freepointer and the private methods !
732 friend class AST_FILE_IO;
733
735 friend class SgAsmJvmConstantPoolEntryStorageClass;
736
738 friend class AstSpecificDataManagingClass;
739
741 friend class AstSpecificDataManagingClassStorageClass;
742 public:
744 SgAsmJvmConstantPoolEntry( const SgAsmJvmConstantPoolEntryStorageClass& source );
745
746 // private: // JJW hack
747 /*
748 name AST Memory Allocation Support Variables
749 Memory allocations support variables
750
751 These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
752 in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
753 and support the AST File I/O Mechanism.
754 */
755 /* */
756
757 public:
758
759 // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
760 // to current node (so that it will work cleanly with build functions to specify patterns).
761 // virtual SgNode* addRegExpAttribute();
768
769#ifndef _MSC_VER
770// Rasmussen (04/17/2019): Support for ATerms has been deprecated as it is no longer needed
771// and likely never fully implemented nor tested. Files remain in the src tree but are no
772// longer built.
773#define BUILD_ATERM_SUPPORT 0
774 #if BUILD_ATERM_SUPPORT
775 #ifdef ROSE_USE_ROSE_ATERM_SUPPORT
776 // DQ (10/4/2014): Adding ATerm support to ROSE.
786 // Rasmussen (1/7/2019): Added override to kill warning messages of overridden virtual function
787 virtual ATerm generate_ATerm() override;
788
790 virtual void generate_ATerm_Annotation(ATerm & term) override;
791 #endif
792 #endif // BUILD_ATERM_SUPPORT
793#endif
794 // These can't be virtual functions since we don't yet know what IR node to build (until we have read the aterm).
795 // virtual generate_AST(ATerm & term);
796 // virtual void read_ATerm_Annotation(ATerm & term);
797
798// *** COMMON CODE SECTION ENDS HERE ***
799
800
801// End of memberFunctionString
802// Start of memberFunctionString
803/* #line 706 "/workspace/src/ROSETTA/Grammar/Node.code" */
804
805 // the generated cast function
806 // friend ROSE_DLL_API SgAsmJvmConstantPoolEntry* isSgAsmJvmConstantPoolEntry ( SgNode* s );
807
808 typedef SgAsmJvmNode base_node_type;
809
810
811// End of memberFunctionString
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827 protected:
828// Start of memberFunctionString
830
831// End of memberFunctionString
832// Start of memberFunctionString
833uint32_t p_bytes;
834
835// End of memberFunctionString
836// Start of memberFunctionString
837uint32_t p_hi_bytes;
838
839// End of memberFunctionString
840// Start of memberFunctionString
841uint32_t p_low_bytes;
842
843// End of memberFunctionString
844// Start of memberFunctionString
845uint16_t p_bootstrap_method_attr_index;
846
847// End of memberFunctionString
848// Start of memberFunctionString
849uint16_t p_class_index;
850
851// End of memberFunctionString
852// Start of memberFunctionString
853uint16_t p_descriptor_index;
854
855// End of memberFunctionString
856// Start of memberFunctionString
857uint16_t p_name_index;
858
859// End of memberFunctionString
860// Start of memberFunctionString
861uint16_t p_name_and_type_index;
862
863// End of memberFunctionString
864// Start of memberFunctionString
865uint16_t p_reference_index;
866
867// End of memberFunctionString
868// Start of memberFunctionString
869uint8_t p_reference_kind;
870
871// End of memberFunctionString
872// Start of memberFunctionString
873uint16_t p_string_index;
874
875// End of memberFunctionString
876// Start of memberFunctionString
877uint16_t p_length;
878
879// End of memberFunctionString
880// Start of memberFunctionString
881char* p_utf8_bytes;
882
883// End of memberFunctionString
884
887 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint32_t,&SgAsmJvmConstantPoolEntry::p_bytes>;
888 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint32_t,&SgAsmJvmConstantPoolEntry::p_hi_bytes>;
889 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint32_t,&SgAsmJvmConstantPoolEntry::p_low_bytes>;
890 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_bootstrap_method_attr_index>;
891 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_class_index>;
892 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_descriptor_index>;
893 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_name_index>;
894 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_name_and_type_index>;
895 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_reference_index>;
896 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint8_t,&SgAsmJvmConstantPoolEntry::p_reference_kind>;
897 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_string_index>;
898 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, uint16_t,&SgAsmJvmConstantPoolEntry::p_length>;
899 friend struct Rose::Traits::generated::describe_field_t<SgAsmJvmConstantPoolEntry, char*,&SgAsmJvmConstantPoolEntry::p_utf8_bytes>;
900
901/* #line 21 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
902
903
904 };
905#endif
906
907// postdeclarations for SgAsmJvmConstantPoolEntry
908
909/* #line 910 "../../../src/frontend/SageIII//SgAsmJvmConstantPoolEntry.h" */
910
911/* #line 27 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
912
913/* #line 28 "/workspace/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
914
915
916/* #line 917 "../../../src/frontend/SageIII//SgAsmJvmConstantPoolEntry.h" */
917
918#endif // ROSE_SgAsmJvmConstantPoolEntry_H
919
Class holding static data and functions supporting File I/O.
Definition AST_FILE_IO.h:19
Attribute containing a regex expression as a string.
Represents an entry in a JVM constant pool.
Represents an JVM constant pool.
Base class for JVM branch of binary analysis IR nodes.
virtual void unparse(std::ostream &) const
Write node to a binary file.
void initializeProperties()
Initialize all properties that have explicit initial values.
virtual void dump(FILE *, const char *prefix, ssize_t idx) const
Print some debugging information.
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.
Kind
List of the supported kind of defects. Kind::any.
Definition Defect.h:27
void parse(SgAsmGenericFile *)
Main function to parse DWARF information.
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.