retdec
calling_convention.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_COMMON_CALLING_CONVENTION_H
8 #define RETDEC_COMMON_CALLING_CONVENTION_H
9 
10 #include <string>
11 
12 namespace retdec {
13 namespace common {
14 
21 {
22  public:
23  enum class eCC
24  {
25  CC_UNKNOWN = 0,
26  CC_VOIDARG,
27  CC_CDECL,
29  CC_STDCALL,
30  CC_PASCAL,
33  CC_MANUAL,
34  CC_SPOILED,
37  CC_SPECIAL,
38  CC_WATCOM,
39  CC_X64,
40  CC_ARM,
41  CC_ARM64,
42  CC_MIPS,
43  CC_MIPS64,
44  CC_POWERPC,
46  CC_PIC32,
47  CC_ENDING,
48  };
49 
50  friend std::ostream& operator<<(
51  std::ostream& out,
52  const eCC& cc);
53 
54  public:
57 
58  CallingConvention& operator=(const eCC& cc);
59 
75 
78  bool isUnknown() const;
79  bool isKnown() const;
80  bool isVoidarg() const;
81  bool isCdecl() const;
82  bool isEllipsis() const;
83  bool isStdcall() const;
84  bool isPascal() const;
85  bool isFastcall() const;
86  bool isThiscall() const;
87  bool isManual() const;
88  bool isSpoiled() const;
89  bool isSpecialE() const;
90  bool isSpecialP() const;
91  bool isSpecial() const;
92  eCC getID() const;
94 
97  void setIsUnknown();
98  void setIsVoidarg();
99  void setIsCdecl();
100  void setIsEllipsis();
101  void setIsStdcall();
102  void setIsPascal();
103  void setIsFastcall();
104  void setIsThiscall();
105  void setIsManual();
106  void setIsSpoiled();
107  void setIsSpecialE();
108  void setIsSpecialP();
109  void setIsSpecial();
110  void set(eCC cc);
112 
113  bool operator<(const CallingConvention& cc) const;
114  friend std::ostream& operator<<(
115  std::ostream &out,
116  const CallingConvention& cc);
117 
118  private:
120 };
121 
123 
124 } // namespace common
125 } // namespace retdec
126 
127 #endif
Definition: calling_convention.h:21
eCC
Definition: calling_convention.h:24
bool isStdcall() const
Definition: calling_convention.cpp:52
void setIsEllipsis()
Definition: calling_convention.cpp:65
void setIsStdcall()
Definition: calling_convention.cpp:66
static CallingConvention initSpecialE()
Definition: calling_convention.cpp:43
bool isCdecl() const
Definition: calling_convention.cpp:50
bool isVoidarg() const
Definition: calling_convention.cpp:49
bool isKnown() const
Definition: calling_convention.cpp:48
void setIsCdecl()
Definition: calling_convention.cpp:64
static CallingConvention initSpecial()
Definition: calling_convention.cpp:45
static CallingConvention initPascal()
Definition: calling_convention.cpp:38
void setIsVoidarg()
Definition: calling_convention.cpp:63
void setIsFastcall()
Definition: calling_convention.cpp:68
static CallingConvention initSpecialP()
Definition: calling_convention.cpp:44
bool isUnknown() const
Definition: calling_convention.cpp:47
void setIsPascal()
Definition: calling_convention.cpp:67
eCC getID() const
Definition: calling_convention.cpp:29
void setIsManual()
Definition: calling_convention.cpp:70
static CallingConvention initEllipsis()
Definition: calling_convention.cpp:36
bool isSpecialP() const
Definition: calling_convention.cpp:59
static CallingConvention initSpoiled()
Definition: calling_convention.cpp:42
void setIsSpecialE()
Definition: calling_convention.cpp:72
bool isPascal() const
Definition: calling_convention.cpp:53
bool isSpecial() const
Definition: calling_convention.cpp:60
void set(eCC cc)
Definition: calling_convention.cpp:75
CallingConvention & operator=(const eCC &cc)
Definition: calling_convention.cpp:120
static CallingConvention initManual()
Definition: calling_convention.cpp:41
friend std::ostream & operator<<(std::ostream &out, const eCC &cc)
Definition: calling_convention.cpp:82
bool isManual() const
Definition: calling_convention.cpp:56
bool isSpecialE() const
Definition: calling_convention.cpp:58
bool isFastcall() const
Definition: calling_convention.cpp:54
eCC _cc
Definition: calling_convention.h:119
bool isEllipsis() const
Definition: calling_convention.cpp:51
static CallingConvention initFastcall()
Definition: calling_convention.cpp:39
static CallingConvention initThiscall()
Definition: calling_convention.cpp:40
CallingConvention()
Definition: calling_convention.cpp:18
static CallingConvention initStdcall()
Definition: calling_convention.cpp:37
bool isSpoiled() const
Definition: calling_convention.cpp:57
static CallingConvention initCdecl()
Definition: calling_convention.cpp:35
void setIsSpoiled()
Definition: calling_convention.cpp:71
void setIsSpecialP()
Definition: calling_convention.cpp:73
static CallingConvention initVoidarg()
Definition: calling_convention.cpp:34
bool operator<(const CallingConvention &cc) const
Definition: calling_convention.cpp:77
void setIsUnknown()
Definition: calling_convention.cpp:62
bool isThiscall() const
Definition: calling_convention.cpp:55
void setIsThiscall()
Definition: calling_convention.cpp:69
void setIsSpecial()
Definition: calling_convention.cpp:74
CallingConvention::eCC CallingConventionID
Definition: calling_convention.h:122
Definition: archive_wrapper.h:19