retdec
type.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_CTYPES_TYPE_H
8 #define RETDEC_CTYPES_TYPE_H
9 
10 #include <memory>
11 #include <string>
12 
14 
15 namespace retdec {
16 namespace ctypes {
17 
21 class Type: public Visitable, public std::enable_shared_from_this<Type>
22 {
23  public:
24  virtual ~Type() = default;
25 
26  const std::string &getName() const;
27  unsigned getBitWidth() const;
28 
29  virtual bool isArray() const;
30  virtual bool isEnum() const;
31  virtual bool isFloatingPoint() const;
32  virtual bool isFunction() const;
33  virtual bool isIntegral() const;
34  virtual bool isNamed() const;
35  virtual bool isPointer() const;
36  virtual bool isReference() const;
37  virtual bool isStruct() const;
38  virtual bool isTypedef() const;
39  virtual bool isUnion() const;
40  virtual bool isUnknown() const;
41  virtual bool isVoid() const;
42 
43  protected:
44  Type() = default;
45  Type(const std::string &name, unsigned bitWidth);
46 
47  protected:
48  std::string name;
49  unsigned bitWidth;
50 };
51 
52 } // namespace ctypes
53 } // namespace retdec
54 
55 #endif
A base class of all C types.
Definition: type.h:22
virtual bool isReference() const
Definition: type.cpp:63
virtual bool isEnum() const
Definition: type.cpp:33
virtual bool isIntegral() const
Definition: type.cpp:48
virtual bool isUnknown() const
Definition: type.cpp:83
virtual bool isFloatingPoint() const
Definition: type.cpp:38
virtual bool isArray() const
Definition: type.cpp:28
virtual bool isPointer() const
Definition: type.cpp:58
unsigned bitWidth
Definition: type.h:49
std::string name
Definition: type.h:48
virtual bool isVoid() const
Definition: type.cpp:88
unsigned getBitWidth() const
Definition: type.cpp:23
virtual bool isNamed() const
Definition: type.cpp:53
virtual bool isUnion() const
Definition: type.cpp:78
virtual ~Type()=default
virtual bool isFunction() const
Definition: type.cpp:43
virtual bool isStruct() const
Definition: type.cpp:68
const std::string & getName() const
Definition: type.cpp:18
virtual bool isTypedef() const
Definition: type.cpp:73
Interface for classes whose instances are visitable by a visitor.
Definition: visitable.h:21
Interface for classes whose instances are visitable by a visitor.
Definition: archive_wrapper.h:19