retdec
tool_info.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_COMMON_TOOL_INFO_H
8 #define RETDEC_COMMON_TOOL_INFO_H
9 
10 #include <string>
11 #include <vector>
12 
13 namespace retdec {
14 namespace common {
15 
19 class ToolInfo
20 {
21  public:
24  bool isUnknown() const;
25  bool isKnown() const;
26  bool isBorland() const;
27  bool isGcc() const;
28  bool isIntel() const;
29  bool isOpenWatcom() const;
30  bool isMsvc(const std::string& version = "") const;
31  bool isTool(const std::string& n) const;
32  bool isToolVersion(const std::string& v) const;
33  bool isCompiler() const;
34  bool isLinker() const;
35  bool isInstaller() const;
36  bool isPacker() const;
37  bool isUnknownType() const;
38  bool isKnownType() const;
40 
43  void setType(const std::string& t);
44  void setName(const std::string& n);
45  void setVersion(const std::string& n);
46  void setMajorVersion(unsigned int v);
47  void setMinorVersion(unsigned int v);
48  void setPatchVersion(unsigned int v);
49  void setAdditionalInfo(const std::string& i);
50  void setPercentage(double p);
51  void setIdenticalSignificantNibbles(unsigned i);
52  void setTotalSignificantNibbles(unsigned i);
53  void setIsFromHeuristics(bool h);
54 
55  void setIsUnknown();
56  void setIsBorland();
57  void setIsGcc();
58  void setIsIntel();
59  void setIsOpenWatcom();
60  void setIsVisualStudio();
62 
65  std::string getType() const;
66  std::string getName() const;
67  std::string getVersion() const;
68  std::string getAdditionalInfo() const;
69  unsigned int getMajorVersion() const;
70  unsigned int getMinorVersion() const;
71  unsigned int getPatchVersion() const;
72  double getPercentage() const;
73  unsigned getIdenticalSignificantNibbles() const;
74  unsigned getTotalSignificantNibbles() const;
75  bool isFromHeuristics() const;
77 
78  bool operator==(const ToolInfo& val) const;
79 
80  private:
81  std::string _type;
82  std::string _name;
83  std::string _additionalInfo;
84 
88  std::string _version;
89  unsigned int _majorVersion = 0;
90  unsigned int _minorVersion = 0;
91  unsigned int _patchVersion = 0;
92 
95  double _percentage = 0.0;
96 
102 
104  bool _heuristics = false;
105 };
106 
112 class ToolInfoContainer : public std::vector<ToolInfo>
113 {
114  public:
115  const ToolInfo* getToolByName(const std::string& name);
118 
119  bool isTool(const std::string& name) const;
120 
127  bool isGcc() const;
128  bool isFasm() const;
129  bool isLlvm() const;
130  bool isPic32() const;
131  bool isMingw() const;
132  bool isDelphi() const;
133  bool isWatcom() const;
134  bool isIntel() const;
135  bool isPspGcc() const;
136  bool isBorland() const;
137  bool isMsvc(const std::string& version = "") const;
138  bool isThumbCompiler() const;
140 };
141 
142 } // namespace common
143 } // namespace retdec
144 
145 #endif
Definition: tool_info.h:113
const ToolInfo * getToolByName(const std::string &name)
Definition: tool_info.cpp:268
bool isPspGcc() const
Definition: tool_info.cpp:316
bool isFasm() const
Definition: tool_info.cpp:309
bool isTool(const std::string &name) const
Definition: tool_info.cpp:257
bool isWatcom() const
Definition: tool_info.cpp:314
bool isLlvm() const
Definition: tool_info.cpp:310
bool isPic32() const
Definition: tool_info.cpp:311
const ToolInfo * getToolMostSignificant()
Definition: tool_info.cpp:303
bool isMingw() const
Definition: tool_info.cpp:312
bool isGcc() const
Definition: tool_info.cpp:308
bool isDelphi() const
Definition: tool_info.cpp:313
bool isThumbCompiler() const
Definition: tool_info.cpp:318
bool isIntel() const
Definition: tool_info.cpp:315
const ToolInfo * getToolWithMaxPercentage()
Definition: tool_info.cpp:283
bool isMsvc(const std::string &version="") const
Definition: tool_info.cpp:320
bool isBorland() const
Definition: tool_info.cpp:317
Definition: tool_info.h:20
double _percentage
Definition: tool_info.h:95
std::string getName() const
Definition: tool_info.cpp:105
bool isFromHeuristics() const
Definition: tool_info.cpp:140
void setIsOpenWatcom()
Definition: tool_info.cpp:101
unsigned _identicalSignificantNibbles
Number of significant nibbles that were actually found.
Definition: tool_info.h:101
void setIsFromHeuristics(bool h)
Definition: tool_info.cpp:93
bool isIntel() const
Definition: tool_info.cpp:43
std::string getAdditionalInfo() const
Definition: tool_info.cpp:109
unsigned getIdenticalSignificantNibbles() const
Definition: tool_info.cpp:132
void setName(const std::string &n)
Definition: tool_info.cpp:94
bool isInstaller() const
Definition: tool_info.cpp:48
bool operator==(const ToolInfo &val) const
Definition: tool_info.cpp:242
bool isMsvc(const std::string &version="") const
Definition: tool_info.cpp:57
bool isKnown() const
Definition: tool_info.cpp:40
bool isBorland() const
Definition: tool_info.cpp:41
void setIdenticalSignificantNibbles(unsigned i)
Definition: tool_info.cpp:91
unsigned int _minorVersion
Definition: tool_info.h:90
bool isToolVersion(const std::string &v) const
Definition: tool_info.cpp:81
bool isGcc() const
Definition: tool_info.cpp:42
void setIsGcc()
Definition: tool_info.cpp:99
unsigned getTotalSignificantNibbles() const
Definition: tool_info.cpp:124
unsigned int getMinorVersion() const
Definition: tool_info.cpp:107
bool isUnknownType() const
Definition: tool_info.cpp:50
void setPercentage(double p)
Definition: tool_info.cpp:90
std::string getVersion() const
Definition: tool_info.cpp:220
bool isOpenWatcom() const
Definition: tool_info.cpp:44
void setPatchVersion(unsigned int v)
Definition: tool_info.cpp:88
unsigned int getMajorVersion() const
Definition: tool_info.cpp:106
unsigned _totalSignificantNibbles
Definition: tool_info.h:99
bool isLinker() const
Definition: tool_info.cpp:47
void setIsUnknown()
Definition: tool_info.cpp:97
void setAdditionalInfo(const std::string &i)
Definition: tool_info.cpp:89
bool isKnownType() const
Definition: tool_info.cpp:51
void setVersion(const std::string &n)
Definition: tool_info.cpp:152
double getPercentage() const
Definition: tool_info.cpp:115
std::string _additionalInfo
Definition: tool_info.h:83
void setIsBorland()
Definition: tool_info.cpp:98
bool isUnknown() const
Definition: tool_info.cpp:39
void setTotalSignificantNibbles(unsigned i)
Definition: tool_info.cpp:92
unsigned int _patchVersion
Definition: tool_info.h:91
unsigned int _majorVersion
Definition: tool_info.h:89
void setType(const std::string &t)
Definition: tool_info.cpp:95
bool isCompiler() const
Definition: tool_info.cpp:46
std::string getType() const
Definition: tool_info.cpp:104
std::string _version
Definition: tool_info.h:88
void setIsIntel()
Definition: tool_info.cpp:100
void setMinorVersion(unsigned int v)
Definition: tool_info.cpp:87
std::string _type
Definition: tool_info.h:81
std::string _name
Definition: tool_info.h:82
bool _heuristics
Were heuristics used to detect usage of this tool?
Definition: tool_info.h:104
bool isPacker() const
Definition: tool_info.cpp:49
unsigned int getPatchVersion() const
Definition: tool_info.cpp:108
void setIsVisualStudio()
Definition: tool_info.cpp:102
void setMajorVersion(unsigned int v)
Definition: tool_info.cpp:86
bool isTool(const std::string &n) const
Definition: tool_info.cpp:69
Definition: archive_wrapper.h:19