]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // Boost.Geometry (aka GGL, Generic Geometry Library) |
2 | // | |
3 | // Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands. | |
4 | // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland. | |
5 | // Use, modification and distribution is subject to the Boost Software License, | |
6 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
7 | // http://www.boost.org/LICENSE_1_0.txt) | |
8 | // | |
9 | // | |
10 | #ifndef DOXYGEN_ELEMENTS_HPP | |
11 | #define DOXYGEN_ELEMENTS_HPP | |
12 | ||
13 | ||
14 | #include <string> | |
15 | #include <vector> | |
16 | ||
17 | ||
18 | enum markup_type { markup_default, markup_synopsis }; | |
19 | enum markup_order_type { markup_any, markup_before, markup_after }; | |
20 | ||
21 | // TODO: rename, not all are functions | |
22 | enum function_type | |
23 | { | |
24 | function_unknown, | |
25 | function_define, | |
26 | function_constructor_destructor, | |
27 | function_member, | |
28 | function_free, | |
29 | }; | |
30 | ||
31 | struct base_element | |
32 | { | |
33 | std::string name; | |
34 | std::string brief_description; | |
35 | ||
36 | bool skip; | |
37 | ||
38 | std::string id; | |
39 | ||
40 | base_element(std::string const& n = "") | |
41 | : name(n) | |
42 | , skip(false) | |
43 | {} | |
44 | }; | |
45 | ||
46 | ||
47 | // contains (template)parameter | |
48 | struct parameter : public base_element | |
49 | { | |
50 | std::string type; | |
51 | std::string default_value; // for template parameters | |
52 | std::string fulltype; // post-processed | |
53 | std::string fulltype_without_links; | |
54 | }; | |
55 | ||
56 | struct enumeration_value : public base_element | |
57 | { | |
58 | std::string initializer; | |
59 | }; | |
60 | ||
61 | ||
62 | ||
63 | struct markup | |
64 | { | |
65 | std::string value; | |
66 | markup_order_type order; | |
67 | markup_type type; | |
68 | ||
69 | markup(std::string const& v = "") | |
70 | : value(v) | |
71 | , order(markup_any) | |
72 | , type(markup_default) | |
73 | { | |
74 | init(); | |
75 | } | |
76 | ||
77 | markup(markup_order_type o, markup_type t, std::string const& v = "") | |
78 | : value(v) | |
79 | , order(o) | |
80 | , type(t) | |
81 | { | |
82 | init(); | |
83 | } | |
84 | ||
85 | void init() | |
86 | { | |
87 | boost::trim(value); | |
88 | boost::replace_all(value, "\\*", "*"); | |
89 | } | |
90 | }; | |
91 | ||
92 | struct paragraph | |
93 | { | |
94 | std::string title; | |
95 | std::string text; | |
96 | }; | |
97 | ||
98 | // Base of a class/struct, function, define | |
99 | struct element : public base_element | |
100 | { | |
101 | std::string detailed_description; | |
102 | std::string location; | |
103 | int line; // To sort - Doxygen changes order - we change it back | |
104 | ||
105 | // QBK-includes | |
106 | // Filled with e.g.: \qbk([include reference/myqbk.qbk]} | |
107 | std::vector<markup> qbk_markup; | |
108 | ||
109 | // To distinguish overloads: unary, binary etc, | |
110 | // Filled with: \qbk{distinguish,<A discerning description>} | |
111 | std::string additional_description; | |
112 | ||
113 | std::vector<parameter> template_parameters; | |
114 | std::vector<parameter> parameters; | |
115 | ||
116 | std::vector<paragraph> paragraphs; | |
117 | std::string warning; | |
118 | std::string note; | |
119 | ||
120 | element() | |
121 | : line(0) | |
122 | {} | |
123 | }; | |
124 | ||
125 | ||
126 | struct function : public element | |
127 | { | |
128 | function_type type; | |
129 | std::string definition, argsstring; | |
130 | std::string return_type, return_description; | |
131 | std::string precondition; | |
132 | ||
133 | std::string return_type_without_links; | |
134 | bool unique; | |
135 | bool is_static, is_const, is_explicit, is_virtual; | |
136 | ||
137 | function() | |
138 | : type(function_unknown) | |
139 | , unique(true) | |
140 | , is_static(false), is_const(false), is_explicit(false), is_virtual(false) | |
141 | {} | |
142 | ||
143 | }; | |
144 | ||
145 | ||
146 | struct enumeration : public element | |
147 | { | |
148 | std::vector<enumeration_value> enumeration_values; | |
149 | }; | |
150 | ||
151 | ||
152 | struct base_class | |
153 | { | |
154 | std::string name; | |
155 | std::string derivation; // "prot" element | |
156 | std::string virtuality; // "virt" element | |
157 | }; | |
158 | ||
159 | struct class_or_struct : public element | |
160 | { | |
161 | bool is_class; // true if class, false if struct | |
162 | std::string name, fullname; | |
163 | std::vector<function> functions; | |
164 | ||
165 | std::vector<base_element> typedefs; | |
166 | std::vector<parameter> variables; | |
167 | ||
168 | std::vector<base_class> base_classes; | |
169 | }; | |
170 | ||
171 | ||
172 | struct documentation | |
173 | { | |
174 | std::string group_id; | |
175 | std::string group_title; | |
176 | ||
177 | // Only one expected (no grouping) | |
178 | class_or_struct cos; | |
179 | ||
180 | // There can be many of them (in groups): | |
181 | std::vector<function> functions; | |
182 | std::vector<function> defines; | |
183 | std::vector<enumeration> enumerations; | |
184 | }; | |
185 | ||
186 | ||
187 | #endif // DOXYGEN_ELEMENTS_HPP |