retdec
object.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_COMMON_OBJECT_H
8 #define RETDEC_COMMON_OBJECT_H
9 
10 #include <map>
11 #include <vector>
12 #include <string>
13 
14 #include "retdec/common/storage.h"
15 #include "retdec/common/type.h"
16 
17 namespace retdec {
18 namespace common {
19 
33 class Object
34 {
35  public:
36  Object();
37  Object(const std::string& name, const common::Storage& storage);
38 
39  bool operator==(const Object& o) const;
40  bool operator<(const Object& o) const;
41 
44  bool isFromDebug() const;
46 
49  void setName(const std::string& n);
50  void setRealName(const std::string& n);
51  void setCryptoDescription(const std::string& d);
52  void setIsFromDebug(bool b);
53  void setStorage(const common::Storage& s);
55 
58  const std::string& getId() const;
59  const std::string& getName() const;
60  const std::string& getRealName() const;
61  const std::string& getCryptoDescription() const;
62  const common::Storage& getStorage() const;
64 
65  public:
67 
68  protected:
70  std::string _name;
74  std::string _realName;
75  std::string _cryptoDescription;
76  bool _fromDebug = false;
77 };
78 
80 {
81  using is_transparent = void;
82 
83  bool operator()(const Object& o1, const Object& o2) const
84  {
85  return o1 < o2;
86  }
87  bool operator()(const std::string& id, Object const& o) const
88  {
89  return id < o.getName();
90  }
91  bool operator()(const Object& o, const std::string& id) const
92  {
93  return o.getName() < id;
94  }
95 };
96 
102 class ObjectSequentialContainer : public std::vector<Object>
103 {
104  public:
105  const Object* getObjectByName(const std::string& name) const;
106 };
107 
112 class ObjectSetContainer : public std::set<Object, ObjectCompare>
113 {
114  public:
115  const Object* getObjectByName(const std::string& name) const;
116 };
117 
123 {
124  public:
128 
129  const Object* getObjectByAddress(
130  const retdec::common::Address& address) const;
131 
137  std::pair<iterator,bool> insert(const Object& e);
138  std::pair<iterator,bool> insert(iterator, const Object& e);
139  void clear();
140  size_t erase(const Object& val);
142 
143  public:
145  std::map<retdec::common::Address, const Object*> _addr2global;
146 };
147 
148 } // namespace common
149 } // namespace retdec
150 
151 #endif
Definition: address.h:21
Definition: object.h:123
size_t erase(const Object &val)
Definition: object.cpp:257
void clear()
Definition: object.cpp:248
GlobalVarContainer & operator=(const GlobalVarContainer &o)
Definition: object.cpp:171
std::pair< iterator, bool > insert(const Object &e)
Definition: object.cpp:203
GlobalVarContainer()
Definition: object.cpp:155
std::map< retdec::common::Address, const Object * > _addr2global
Map allows fast global variables search by address.
Definition: object.h:145
const Object * getObjectByAddress(const retdec::common::Address &address) const
Definition: object.cpp:188
const Object * getObjectByName(const std::string &name) const
Definition: object.cpp:122
Definition: object.h:113
const Object * getObjectByName(const std::string &name) const
Definition: object.cpp:142
Definition: object.h:34
const std::string & getRealName() const
Definition: object.cpp:98
bool _fromDebug
Definition: object.h:76
std::string _name
Unique ID – name used in LLVM IR.
Definition: object.h:70
const common::Storage & getStorage() const
Definition: object.cpp:108
void setIsFromDebug(bool b)
Definition: object.cpp:66
void setName(const std::string &n)
Definition: object.cpp:51
void setRealName(const std::string &n)
Definition: object.cpp:56
bool isFromDebug() const
Definition: object.cpp:76
const std::string & getId() const
Definition: object.cpp:84
common::Type type
Definition: object.h:66
void setCryptoDescription(const std::string &d)
Definition: object.cpp:61
const std::string & getName() const
Definition: object.cpp:89
std::string _realName
Definition: object.h:74
Object()
Definition: object.cpp:22
std::string _cryptoDescription
Definition: object.h:75
const std::string & getCryptoDescription() const
Definition: object.cpp:103
bool operator<(const Object &o) const
Definition: object.cpp:46
common::Storage _storage
Definition: object.h:71
void setStorage(const common::Storage &s)
Definition: object.cpp:71
bool operator==(const Object &o) const
Definition: object.cpp:38
Definition: storage.h:22
Definition: type.h:22
Common object storage representation.
Common data type representation.
T & id(T &object)
Returns object.
Definition: debug.h:208
Definition: archive_wrapper.h:19
Definition: object.h:80
bool operator()(const std::string &id, Object const &o) const
Definition: object.h:87
bool operator()(const Object &o1, const Object &o2) const
Definition: object.h:83
bool operator()(const Object &o, const std::string &id) const
Definition: object.h:91
void is_transparent
Definition: object.h:81