15
15
#include < mrdox/Platform.hpp>
16
16
#include < mrdox/MetadataFwd.hpp>
17
17
#include < mrdox/Metadata/Record.hpp>
18
+ #include < memory>
18
19
#include < span>
19
20
#include < utility>
20
21
#include < vector>
21
22
22
23
namespace clang {
23
24
namespace mrdox {
24
25
25
- struct DataMember
26
- {
27
- FieldInfo const * I;
28
- RecordInfo const * From;
29
- };
30
-
31
- struct MemberEnum
32
- {
33
- EnumInfo const * I;
34
- RecordInfo const * From;
35
- };
36
-
37
- struct MemberFunction
38
- {
39
- FunctionInfo const * I;
40
- RecordInfo const * From;
41
- };
42
-
43
- struct MemberRecord
44
- {
45
- RecordInfo const * I;
46
- RecordInfo const * From;
47
- };
48
-
49
- struct MemberType
50
- {
51
- TypedefInfo const * I;
52
- RecordInfo const * From;
53
- };
54
-
55
- struct StaticDataMember
56
- {
57
- VariableInfo const * I;
58
- RecordInfo const * From;
59
- };
60
-
61
26
/* * The aggregated interface for a given struct, class, or union.
62
27
*/
63
28
class Interface
@@ -67,12 +32,13 @@ class Interface
67
32
*/
68
33
struct Tranche
69
34
{
70
- std::span<MemberRecord const > Records;
71
- std::span<MemberFunction const > Functions;
72
- std::span<MemberEnum const > Enums;
73
- std::span<MemberType const > Types;
74
- std::span<DataMember const > Data;
75
- std::span<StaticDataMember const > Vars;
35
+ std::span<RecordInfo const *> Records;
36
+ std::span<FunctionInfo const *> Functions;
37
+ std::span<EnumInfo const *> Enums;
38
+ std::span<TypedefInfo const *> Types;
39
+ std::span<FieldInfo const *> Data;
40
+ std::span<FunctionInfo const *> StaticFunctions;
41
+ std::span<VariableInfo const *> StaticData;
76
42
};
77
43
78
44
/* * The aggregated public interfaces.
@@ -89,21 +55,21 @@ class Interface
89
55
90
56
MRDOX_DECL
91
57
friend
92
- Interface&
58
+ std::shared_ptr< Interface>
93
59
makeInterface (
94
- Interface& I,
95
60
RecordInfo const & Derived,
96
61
Corpus const & corpus);
97
62
98
63
private:
99
64
class Build ;
100
65
101
- std::vector<DataMember> data_;
102
- std::vector<MemberEnum> enums_;
103
- std::vector<MemberFunction> functions_;
104
- std::vector<MemberRecord> records_;
105
- std::vector<MemberType> types_;
106
- std::vector<StaticDataMember> vars_;
66
+ std::vector<RecordInfo const *> records_;
67
+ std::vector<FunctionInfo const *> functions_;
68
+ std::vector<EnumInfo const *> enums_;
69
+ std::vector<TypedefInfo const *> types_;
70
+ std::vector<FieldInfo const *> data_;
71
+ std::vector<FunctionInfo const *> staticfuncs_;
72
+ std::vector<VariableInfo const *> staticdata_;
107
73
};
108
74
109
75
// ------------------------------------------------
@@ -119,23 +85,11 @@ class Interface
119
85
@param corpus The complete metadata.
120
86
*/
121
87
MRDOX_DECL
122
- Interface&
88
+ std::shared_ptr< Interface>
123
89
makeInterface (
124
- Interface& I,
125
90
RecordInfo const & Derived,
126
91
Corpus const & corpus);
127
92
128
- inline
129
- Interface
130
- makeInterface (
131
- RecordInfo const & Derived,
132
- Corpus const & corpus)
133
- {
134
- Interface I;
135
- makeInterface (I, Derived, corpus);
136
- return I;
137
- }
138
-
139
93
} // mrdox
140
94
} // clang
141
95
0 commit comments