1
2
3
4
5
6 """
7 contains classes that describe different C++ declarations
8 """
9
10 import compilers
11
12 from dependencies import dependency_info_t
13 from declaration import location_t
14 from declaration import declaration_t
15 from scopedef import scopedef_t
16 from enumeration import enumeration_t
17 from namespace import namespace_t
18
19 from class_declaration import class_t
20 from class_declaration import CLASS_TYPES
21 from class_declaration import ACCESS_TYPES
22 from class_declaration import hierarchy_info_t
23 from class_declaration import class_declaration_t
24 from class_declaration import class_types
25
26 from typedef import typedef_t
27
28 from cpptypes import type_t
29 from cpptypes import dummy_type_t
30 from cpptypes import unknown_t
31 from cpptypes import ellipsis_t
32 from cpptypes import fundamental_t
33 from cpptypes import void_t
34 from cpptypes import char_t
35 from cpptypes import signed_char_t
36 from cpptypes import unsigned_char_t
37 from cpptypes import wchar_t
38 from cpptypes import short_int_t
39 from cpptypes import short_unsigned_int_t
40 from cpptypes import bool_t
41 from cpptypes import int_t
42 from cpptypes import unsigned_int_t
43 from cpptypes import long_int_t
44 from cpptypes import long_unsigned_int_t
45 from cpptypes import long_long_int_t
46 from cpptypes import long_long_unsigned_int_t
47 from cpptypes import float_t
48 from cpptypes import double_t
49 from cpptypes import long_double_t
50 from cpptypes import FUNDAMENTAL_TYPES
51 from cpptypes import compound_t
52 from cpptypes import volatile_t
53 from cpptypes import const_t
54 from cpptypes import pointer_t
55 from cpptypes import reference_t
56 from cpptypes import restrict_t
57 from cpptypes import array_t
58 from cpptypes import calldef_type_t
59 from cpptypes import free_function_type_t
60 from cpptypes import member_function_type_t
61 from cpptypes import member_variable_type_t
62 from cpptypes import declarated_t
63 from cpptypes import type_qualifiers_t
64
65 from cpptypes import java_fundamental_t
66 from cpptypes import jbyte_t
67 from cpptypes import jshort_t
68 from cpptypes import jint_t
69 from cpptypes import jlong_t
70 from cpptypes import jfloat_t
71 from cpptypes import jdouble_t
72 from cpptypes import jchar_t
73 from cpptypes import jboolean_t
74
75
76
77 from variable import variable_t
78
79 from algorithm import full_name
80 from algorithm import full_name_from_declaration_path
81 from algorithm import make_flatten
82 from algorithm import apply_visitor
83 from algorithm import declaration_path
84 from algorithm import get_named_parent
85 from algorithm import find_declaration
86 from algorithm import match_declaration_t
87 from algorithm import find_all_declarations
88 from algorithm import find_first_declaration
89 from algorithm import declaration_files
90 from algorithm import visit_function_has_not_been_found_t
91 from algorithm import get_global_namespace
92
93 from calldef import VIRTUALITY_TYPES
94 from calldef import FUNCTION_VIRTUALITY_TYPES
95 from calldef import argument_t
96 from calldef import calldef_t
97 from calldef import member_calldef_t
98 from calldef import free_calldef_t
99 from calldef import operator_t
100 from calldef import member_function_t
101 from calldef import constructor_t
102 from calldef import destructor_t
103 from calldef import member_operator_t
104 from calldef import casting_operator_t
105 from calldef import free_function_t
106 from calldef import free_operator_t
107
108 from decl_visitor import decl_visitor_t
109 from type_visitor import type_visitor_t
110
111 from type_traits import decompose_type
112 from type_traits import decompose_class
113
114
115 from type_traits import is_enum
116 from type_traits import enum_declaration
117 from type_traits import enum_traits
118
119 from type_traits import is_class
120 from type_traits import class_traits
121 from type_traits import is_class_declaration
122 from type_traits import class_declaration_traits
123
124
125 from type_traits import is_bool
126 from type_traits import is_same
127 from type_traits import is_void
128 from type_traits import is_void_pointer
129 from type_traits import is_const
130 from type_traits import base_type
131 from type_traits import is_array
132 from type_traits import is_pointer
133 from type_traits import is_volatile
134 from type_traits import is_integral
135 from type_traits import is_reference
136 from type_traits import is_arithmetic
137 from type_traits import is_fundamental
138 from type_traits import is_floating_point
139 from type_traits import is_base_and_derived
140 from type_traits import is_convertible
141 from type_traits import is_noncopyable
142 from type_traits import is_std_string
143 from type_traits import is_std_wstring
144 from type_traits import is_std_ostream
145 from type_traits import is_std_wostream
146 from type_traits import is_calldef_pointer
147
148 from type_traits import is_unary_operator
149 from type_traits import is_binary_operator
150
151 from type_traits import array_size
152 from type_traits import array_item_type
153
154 from type_traits import remove_cv
155 from type_traits import remove_const
156 from type_traits import remove_alias
157 from type_traits import remove_pointer
158 from type_traits import remove_volatile
159 from type_traits import remove_reference
160 from type_traits import remove_declarated
161
162 from type_traits import has_destructor
163 from type_traits import has_public_less
164 from type_traits import has_copy_constructor
165 has_trivial_copy = has_copy_constructor
166 from type_traits import has_public_equal
167 from type_traits import has_public_assign
168 from type_traits import has_public_destructor
169 from type_traits import has_public_constructor
170 from type_traits import has_trivial_constructor
171 from type_traits import find_trivial_constructor
172 from type_traits import has_public_binary_operator
173 from type_traits import has_any_non_copyconstructor
174
175 from type_traits import auto_ptr_traits
176 from type_traits import smart_pointer_traits
177
178 from container_traits import list_traits
179 from container_traits import deque_traits
180 from container_traits import queue_traits
181 from container_traits import priority_queue_traits
182 from container_traits import vector_traits
183 from container_traits import stack_traits
184 from container_traits import map_traits
185 from container_traits import multimap_traits
186 from container_traits import hash_map_traits
187 from container_traits import hash_multimap_traits
188 from container_traits import set_traits
189 from container_traits import hash_set_traits
190 from container_traits import multiset_traits
191 from container_traits import hash_multiset_traits
192 from container_traits import find_container_traits
193
194 from function_traits import is_same_function
195
196 all_container_traits = container_traits.container_traits
197 """tuple of all STD container traits classes"""
198
199 sequential_container_traits = \
200 [
201 list_traits
202 , deque_traits
203 , queue_traits
204 , priority_queue_traits
205 , vector_traits
206 , stack_traits
207 , set_traits
208 , hash_set_traits
209 , multiset_traits
210 , hash_multiset_traits
211 ]
212 """list, that contains all STD container traits classes"""
213
214
215 import templates
216 import call_invocation
217
218 from filtering import filtering
219
220 from decl_factory import decl_factory_t
221
222 from matchers import matcher_base_t
223 from matchers import or_matcher_t
224 from matchers import and_matcher_t
225 from matchers import not_matcher_t
226 from matchers import declaration_matcher_t
227 from matchers import calldef_matcher_t
228 from matchers import namespace_matcher_t
229 from matchers import variable_matcher_t
230 from matchers import regex_matcher_t
231 from matchers import access_type_matcher_t
232 from matchers import operator_matcher_t
233 from matchers import custom_matcher_t
234 from matchers import virtuality_type_matcher_t
235
236
237 or_matcher = or_matcher_t
238 """see L{or_matcher} for documentation"""
239 and_matcher = and_matcher_t
240 """see L{and_matcher} for documentation"""
241 not_matcher = not_matcher_t
242 """see L{not_matcher} for documentation"""
243 declaration_matcher = declaration_matcher_t
244 """see L{declaration_matcher} for documentation"""
245 calldef_matcher = calldef_matcher_t
246 """see L{calldef_matcher} for documentation"""
247 namespace_matcher = namespace_matcher_t
248 """see L{namespace_matcher} for documentation"""
249 variable_matcher = variable_matcher_t
250 """see L{variable_matcher} for documentation"""
251 regex_matcher = regex_matcher_t
252 """see L{regex_matcher} for documentation"""
253 access_type_matcher = access_type_matcher_t
254 """see L{access_type_matcher} for documentation"""
255 operator_matcher = operator_matcher_t
256 """see L{operator_matcher} for documentation"""
257 custom_matcher = custom_matcher_t
258 """see L{custom_matcher} for documentation"""
259 virtuality_type_matcher = virtuality_type_matcher_t
260 """see L{virtuality_type_matcher} for documentation"""
261
262 from matcher import matcher
263
264 from mdecl_wrapper import mdecl_wrapper_t
265
266 from decl_printer import decl_printer_t
267 from decl_printer import print_declarations
268
269
270 import scopedef
271
272 scopedef.scopedef_t._impl_all_decl_types = \
273 [
274 scopedef.scopedef_t
275 , enumeration_t
276 , namespace_t
277 , class_t
278 , class_declaration_t
279 , typedef_t
280 , variable_t
281 , calldef_t
282 , member_calldef_t
283 , free_calldef_t
284 , operator_t
285 , member_function_t
286 , constructor_t
287 , destructor_t
288 , member_operator_t
289 , casting_operator_t
290 , free_function_t
291 , free_operator_t
292 ]
293
294 __impl_matchers = scopedef.scopedef_t._impl_matchers
295 __impl_decl_types = scopedef.scopedef_t._impl_decl_types
296
297 __impl_matchers[ scopedef.scopedef_t.decl ] = declaration_matcher_t
298
299 __impl_matchers[ scopedef.scopedef_t.class_ ] = declaration_matcher_t
300 __impl_decl_types[ scopedef.scopedef_t.class_ ] = class_t
301
302 __impl_matchers[ scopedef.scopedef_t.variable ] = variable_matcher_t
303
304 __impl_matchers[ scopedef.scopedef_t.calldef ] = calldef_matcher_t
305 __impl_decl_types[ scopedef.scopedef_t.calldef ] = calldef_t
306
307 __impl_matchers[ scopedef.scopedef_t.operator ] = operator_matcher_t
308 __impl_decl_types[ scopedef.scopedef_t.operator ] = operator_t
309
310 __impl_matchers[ scopedef.scopedef_t.member_function ] = calldef_matcher_t
311 __impl_decl_types[ scopedef.scopedef_t.member_function ] = member_function_t
312
313 __impl_matchers[ scopedef.scopedef_t.constructor ] = calldef_matcher_t
314 __impl_decl_types[ scopedef.scopedef_t.constructor ] = constructor_t
315
316 __impl_matchers[ scopedef.scopedef_t.member_operator ] = operator_matcher_t
317 __impl_decl_types[ scopedef.scopedef_t.member_operator ] = member_operator_t
318
319 __impl_matchers[ scopedef.scopedef_t.member_operator ] = operator_matcher_t
320 __impl_decl_types[ scopedef.scopedef_t.member_operator ] = member_operator_t
321
322 __impl_matchers[ scopedef.scopedef_t.casting_operator ] = calldef_matcher_t
323 __impl_decl_types[ scopedef.scopedef_t.casting_operator ] = casting_operator_t
324
325 __impl_matchers[ scopedef.scopedef_t.enumeration ] = declaration_matcher_t
326 __impl_decl_types[ scopedef.scopedef_t.enumeration ] = enumeration_t
327
328 __impl_matchers[ scopedef.scopedef_t.typedef ] = declaration_matcher_t
329 __impl_decl_types[ scopedef.scopedef_t.typedef ] = typedef_t
330
331 __impl_matchers[ namespace_t.namespace ] = namespace_matcher_t
332
333 __impl_matchers[ namespace_t.free_function ] = calldef_matcher_t
334 __impl_decl_types[ namespace_t.free_function ] = free_function_t
335
336 __impl_matchers[ namespace_t.free_operator ] = operator_matcher_t
337 __impl_decl_types[ namespace_t.free_operator ] = free_operator_t
338