retdec
composite_type.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_CTYPES_COMPOSITE_TYPE_H
8 #define RETDEC_CTYPES_COMPOSITE_TYPE_H
9 
10 #include <memory>
11 #include <string>
12 #include <vector>
13 
14 #include "retdec/ctypes/type.h"
15 
16 namespace retdec {
17 namespace ctypes {
18 
19 class Context;
20 class Member;
21 
25 class CompositeType: public Type
26 {
27  public:
28  using Members = std::vector<Member>;
29  using member_iterator = Members::iterator;
30  using const_member_iterator = Members::const_iterator;
31 
32  public:
39 
40  Members::size_type getMemberCount() const;
41  const Member &getMember(Members::size_type n) const;
42  const std::string &getMemberName(Members::size_type n) const;
43  std::shared_ptr<Type> getMemberType(Members::size_type n) const;
44 
45  void setMembers(const Members &members);
47 
48  protected:
49  CompositeType(const std::string &name, const Members &members);
50 
51  protected:
53 };
54 
55 } // namespace ctypes
56 } // namespace retdec
57 
58 #endif
A representation of composite type.
Definition: composite_type.h:26
std::vector< Member > Members
Definition: composite_type.h:28
const std::string & getMemberName(Members::size_type n) const
Returns the n-th member's name.
Definition: composite_type.cpp:84
Members::const_iterator const_member_iterator
Definition: composite_type.h:30
const Member & getMember(Members::size_type n) const
Returns the n-th member.
Definition: composite_type.cpp:71
Members::size_type getMemberCount() const
Returns the number of members.
Definition: composite_type.cpp:58
Members members
Definition: composite_type.h:52
Members::iterator member_iterator
Definition: composite_type.h:29
void setMembers(const Members &members)
Sets new members to composite type.
Definition: composite_type.cpp:108
member_iterator member_begin()
Returns an iterator to the member.
Definition: composite_type.cpp:24
member_iterator member_end()
Returns an iterator past the last member.
Definition: composite_type.cpp:40
CompositeType(const std::string &name, const Members &members)
Constructs a new composite type.
Definition: composite_type.cpp:18
std::shared_ptr< Type > getMemberType(Members::size_type n) const
Returns the n-th member's type.
Definition: composite_type.cpp:97
A representation of a composite type (struct, union) member.
Definition: member.h:22
A base class of all C types.
Definition: type.h:22
std::string name
Definition: type.h:48
A base class of all C types.
Definition: archive_wrapper.h:19