7 #ifndef RETDEC_CONTEXT_H
8 #define RETDEC_CONTEXT_H
19 class BuiltInTypeNode;
20 class IntegralTypeNode;
24 class PointerTypeNode;
25 class ReferenceTypeNode;
26 class RReferenceTypeNode;
45 const std::string &name,
50 const std::shared_ptr<BuiltInTypeNode> &type
62 const std::shared_ptr<CharTypeNode> &type
69 const std::string &name,
75 const std::shared_ptr<IntegralTypeNode> &type
82 const std::string &name,
87 const std::shared_ptr<FloatTypeNode> &type
94 std::shared_ptr<Node> pointee,
99 const std::shared_ptr<PointerTypeNode> &type
106 std::shared_ptr<Node> pointee
110 const std::shared_ptr<ReferenceTypeNode> &type
117 std::shared_ptr<Node> pointee
121 const std::shared_ptr<RReferenceTypeNode> &type
128 const std::string &name,
133 const std::string &mangled,
135 const std::shared_ptr<NamedTypeNode> &type
139 std::shared_ptr<Node>
getFunction(
const std::string &mangled)
const;
141 const std::string &mangled,
142 const std::shared_ptr<Node> &
function);
146 std::shared_ptr<NameNode>
getName(
147 const std::string &name
151 const std::shared_ptr<NameNode> &name
158 std::shared_ptr<Node> super,
159 std::shared_ptr<Node> name
163 const std::shared_ptr<NestedNameNode> &name
169 std::shared_ptr<ArrayNode>
getArray(
170 std::shared_ptr<Node> pointee,
176 const std::shared_ptr<ArrayNode> &array
182 std::tuple<std::string, bool, bool>,
183 std::shared_ptr<BuiltInTypeNode>
188 std::tuple<ThreeStateSignedness, bool, bool>,
189 std::shared_ptr<CharTypeNode>
194 std::tuple<std::string, bool, bool, bool>,
195 std::shared_ptr<IntegralTypeNode>
200 std::tuple<std::shared_ptr<Node>, bool,
bool>,
201 std::shared_ptr<PointerTypeNode>
206 std::shared_ptr<Node>,
207 std::shared_ptr<ReferenceTypeNode>
212 std::shared_ptr<Node>,
213 std::shared_ptr<RReferenceTypeNode>
218 std::tuple<std::string, bool, bool>,
219 std::shared_ptr<NamedTypeNode>
225 std::shared_ptr<Node>
231 std::shared_ptr<NameNode>
236 std::tuple<std::shared_ptr<Node>, std::shared_ptr<Node>>,
237 std::shared_ptr<NestedNameNode>
242 std::tuple<std::shared_ptr<Node>, unsigned, bool,
bool>,
243 std::shared_ptr<ArrayNode>
Storage for functions, types and names. Used for cacheing.
Definition: context.h:38
void addReferenceType(const std::shared_ptr< ReferenceTypeNode > &type)
Definition: context.cpp:135
std::shared_ptr< ReferenceTypeNode > getReferenceType(std::shared_ptr< Node > pointee) const
Definition: context.cpp:130
ReferenceTypeNodes referenceTypes
Definition: context.h:209
void addNamedType(const std::string &mangled, const Qualifiers &quals, const std::shared_ptr< NamedTypeNode > &type)
Definition: context.cpp:164
std::shared_ptr< Node > getFunction(const std::string &mangled) const
Definition: context.cpp:179
ArrayNodes arrayNodes
Definition: context.h:245
std::shared_ptr< IntegralTypeNode > getIntegralType(const std::string &name, bool isUnsigned, const Qualifiers &quals) const
Definition: context.cpp:63
void addRReferenceType(const std::shared_ptr< RReferenceTypeNode > &type)
Definition: context.cpp:147
NestedNameNodes nestedNameNodes
Definition: context.h:239
void addPointerType(const std::shared_ptr< PointerTypeNode > &type)
Definition: context.cpp:118
std::map< std::tuple< std::string, bool, bool >, std::shared_ptr< BuiltInTypeNode > > BuiltInTypeNodes
Definition: context.h:184
void addIntegralType(const std::shared_ptr< IntegralTypeNode > &type)
Definition: context.cpp:74
void addCharType(const std::shared_ptr< CharTypeNode > &type)
Definition: context.cpp:50
std::shared_ptr< BuiltInTypeNode > getBuiltInType(const std::string &name, const Qualifiers &quals) const
Definition: context.cpp:15
IntegralTypeNodes integralTypes
Definition: context.h:197
std::shared_ptr< PointerTypeNode > getPointerType(std::shared_ptr< Node > pointee, const Qualifiers &quals) const
Definition: context.cpp:111
std::map< std::tuple< std::shared_ptr< Node >, unsigned, bool, bool >, std::shared_ptr< ArrayNode > > ArrayNodes
Definition: context.h:244
NameNodes nameNodes
Definition: context.h:233
std::shared_ptr< NestedNameNode > getNestedName(std::shared_ptr< Node > super, std::shared_ptr< Node > name)
Definition: context.cpp:206
FunctionNodes functions
Definition: context.h:227
void addFloatType(const std::shared_ptr< FloatTypeNode > &type)
Definition: context.cpp:98
std::map< std::tuple< std::shared_ptr< Node >, bool, bool >, std::shared_ptr< PointerTypeNode > > PointerTypeNodes
Definition: context.h:202
std::shared_ptr< RReferenceTypeNode > getRReferenceType(std::shared_ptr< Node > pointee) const
Definition: context.cpp:142
std::map< std::shared_ptr< Node >, std::shared_ptr< RReferenceTypeNode > > RReferenceTypeNodes
Definition: context.h:214
std::map< std::shared_ptr< Node >, std::shared_ptr< ReferenceTypeNode > > ReferenceTypeNodes
Definition: context.h:208
std::shared_ptr< NamedTypeNode > getNamedType(const std::string &name, const Qualifiers &quals) const
Definition: context.cpp:154
void addBuiltInType(const std::shared_ptr< BuiltInTypeNode > &type)
Definition: context.cpp:25
void addFunction(const std::string &mangled, const std::shared_ptr< Node > &function)
Definition: context.cpp:184
void addName(const std::shared_ptr< NameNode > &name)
Definition: context.cpp:198
std::map< std::string, std::shared_ptr< NameNode > > NameNodes
Definition: context.h:232
std::shared_ptr< CharTypeNode > getCharType(const ThreeStateSignedness &signedness, const Qualifiers &quals) const
Definition: context.cpp:38
std::map< std::string, std::shared_ptr< Node > > FunctionNodes
Definition: context.h:226
BuiltInTypeNodes builtInTypes
Definition: context.h:185
std::shared_ptr< ArrayNode > getArray(std::shared_ptr< Node > pointee, unsigned size, const Qualifiers &quals)
Definition: context.cpp:222
std::map< std::tuple< std::string, bool, bool >, std::shared_ptr< NamedTypeNode > > NamedTypeNodes
Definition: context.h:220
PointerTypeNodes pointerTypes
Definition: context.h:203
std::map< std::tuple< ThreeStateSignedness, bool, bool >, std::shared_ptr< CharTypeNode > > CharTypeNodes
Definition: context.h:190
std::shared_ptr< NameNode > getName(const std::string &name) const
Definition: context.cpp:193
std::map< std::tuple< std::shared_ptr< Node >, std::shared_ptr< Node > >, std::shared_ptr< NestedNameNode > > NestedNameNodes
Definition: context.h:238
RReferenceTypeNodes rReferenceTypes
Definition: context.h:215
CharTypeNodes charTypes
Definition: context.h:191
void addNestedName(const std::shared_ptr< NestedNameNode > &name)
Definition: context.cpp:214
std::map< std::tuple< std::string, bool, bool, bool >, std::shared_ptr< IntegralTypeNode > > IntegralTypeNodes
Definition: context.h:196
std::shared_ptr< FloatTypeNode > getFloatType(const std::string &name, const Qualifiers &quals) const
Definition: context.cpp:88
NamedTypeNodes namedTypes
Definition: context.h:221
void addArrayType(const std::shared_ptr< ArrayNode > &array)
Definition: context.cpp:231
Definition: qualifiers.h:20
ThreeStateSignedness
Signedness used for chars. Chars can be signed char, unsigned char and char, which are by standard di...
Definition: char_type.h:22
Definition: archive_wrapper.h:19