retdec
union_type.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_CTYPES_UNION_TYPE_H
8 #define RETDEC_CTYPES_UNION_TYPE_H
9 
10 #include <memory>
11 #include <string>
12 
14 
15 namespace retdec {
16 namespace ctypes {
17 
18 class Context;
19 
23 class UnionType: public CompositeType
24 {
25  public:
26  static std::shared_ptr<UnionType> create(
27  const std::shared_ptr<Context> &context,
28  const std::string &name,
29  const Members &members
30  );
31 
32  virtual bool isUnion() const override;
33 
36  virtual void accept(Visitor *v) override;
38 
39  private:
40  // Instances are created by static method create().
41  UnionType(const std::string &name, const Members &members);
42 };
43 
44 } // namespace ctypes
45 } // namespace retdec
46 
47 #endif
A representation of composite type.
Definition: composite_type.h:26
std::vector< Member > Members
Definition: composite_type.h:28
Members members
Definition: composite_type.h:52
std::string name
Definition: type.h:48
A representation of union types.
Definition: union_type.h:24
UnionType(const std::string &name, const Members &members)
Constructs a new union type.
Definition: union_type.cpp:22
virtual void accept(Visitor *v) override
Visitor pattern implementation.
Definition: union_type.cpp:64
virtual bool isUnion() const override
Definition: union_type.cpp:59
static std::shared_ptr< UnionType > create(const std::shared_ptr< Context > &context, const std::string &name, const Members &members)
Creates union type.
Definition: union_type.cpp:38
A base class of all C-types' visitors.
Definition: visitor.h:33
A representation of composite types.
Definition: archive_wrapper.h:19