1 #ifndef ROSE_BinaryAnalysis_ByteCode_Cil_H
2 #define ROSE_BinaryAnalysis_ByteCode_Cil_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
6 #include <Rose/BinaryAnalysis/ByteCode/Analysis.h>
9 namespace BinaryAnalysis {
14 virtual const uint8_t* bytes()
const {
17 virtual const size_t size()
const {
20 virtual const rose_addr_t offset()
const {
24 explicit CilCode(uint8_t* bytes,
size_t size, rose_addr_t offset)
25 : bytes_{bytes}, size_{size}, offset_{offset} {
29 const uint8_t* bytes_;
36 virtual const std::string name()
const {
37 return "CilField::name():UNIMPLEMENTED";
47 virtual const std::string name()
const override;
48 virtual const Code & code()
const override;
52 virtual void annotate()
override;
68 virtual const std::string name()
const {
69 return "CilInterface::name():UNIMPLEMENTED";
79 virtual const std::string name()
const {
80 return "CilAttribute::name():UNIMPLEMENTED";
90 virtual const std::string name()
const {
91 return "CilClass::name():UNIMPLEMENTED";
93 virtual const std::string super_name()
const {
94 return "CilClass::super_name():UNIMPLEMENTED";
96 virtual const std::vector<std::string> &strings() {
99 virtual const std::vector<const Interface*> &interfaces()
const {
102 virtual const std::vector<const Field*> &fields()
const {
105 virtual const std::vector<const Method*> &methods()
const {
108 virtual const std::vector<const Attribute*> &attributes()
const {
116 std::vector<const Field*> fields_;
117 std::vector<const Method*> methods_;
118 std::vector<const Attribute*> attributes_;
119 std::vector<const Interface*> interfaces_;
120 std::vector<std::string> strings_;
121 const std::uint8_t* name_;
128 virtual const std::string name()
const;
129 virtual const std::vector<const Class*> &classes()
const;
137 std::vector<const Class*> classes_;
139 const std::uint8_t* name_;
144 virtual const std::string name()
const;
145 virtual const std::vector<const Namespace*> &namespaces()
const;
147 void printAssemblies(std::ostream& os)
const;
148 void printMethods(std::ostream& os,
size_t beg,
size_t lim)
const;
149 void printModules(std::ostream& os)
const;
150 void printTypeDefs(std::ostream& os)
const;
158 std::vector<const Namespace*> namespaces_;
Main namespace for the ROSE library.
Base class for integer values.
CIL TypeDef node (II.22.37).
CIL MethodDef node (II.22.26).
List of SgAsmInstruction nodes.