2 Permission is granted to use, modify, and / or redistribute at will.
4 This includes removing authorship notices, re-use of code parts in
5 other software (with or without giving credit), and / or creating a
6 commercial product based on it.
8 This permission is not revocable by the author.
10 This software is provided as-is. Use it at your own risk. There is
11 no warranty whatsoever, neither expressed nor implied, and by using
12 this software you accept that the author(s) shall not be held liable
13 for any loss of data, loss of service, or other damages, be they
14 incidental or consequential. Your only option other than accepting
15 this is not to use the software at all.
17 #ifndef _LIGHTLIBCPP_CXXABI_H
18 #define _LIGHTLIBCPP_CXXABI_H
22 #include <typeinfo> // std::type_info
28 * \brief internal namespace of the C++ ABI
31 * \brief intern verwendeter Namensraum der C++ ABI
36 /** \addtogroup lightlibcpp_cxxabi_rtti */
41 * \brief Base class for the runtime type information of the builtin types
44 * \brief Basisklasse für die Laufzeittypinformation der eingebauten Typen
47 class __fundamental_type_info
: public std::type_info
53 * \note Needed to generate vtables and type information for this class
54 * and type information for the builtin types
58 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
59 * und Typinformationen für die eingebauten Typen zu generieren
62 virtual ~__fundamental_type_info();
67 * \brief Base class for the runtime type information of array types
70 * \brief Basisklasse für die Laufzeittypinformationen von Arraytypen
73 class __array_type_info
: public std::type_info
79 * \note Needed to generate vtables and type information for this class
83 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
87 virtual ~__array_type_info();
92 * \brief Base class for the runtime type information of (non-member)
96 * \brief Basisklasse für die Laufzeittypinformationen von (nicht-member)
100 class __function_type_info
: public std::type_info
106 * \note Needed to generate vtables and type information for this class
110 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
114 virtual ~__function_type_info();
119 * \brief Base class for the runtime type information of enumeration types
122 * \brief Basisklasse für die Laufzeittypinformationen von Enumerationstypen
125 class __enum_type_info
: public std::type_info
131 * \note Needed to generate vtables and type information for this class
135 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
139 virtual ~__enum_type_info();
144 * \brief Base class for the runtime type information of class types
147 * \brief Basiskalsse für die Laufzeittypinformationen von Klassentypen
150 class __class_type_info
: public std::type_info
156 * \note Needed to generate vtables and type information for this class
160 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
164 virtual ~__class_type_info();
169 * \brief Base class for the runtime type information of class types with
173 * \brief Basisklasse für die Laufzeittypinformationen von Klassentypen mit
177 class __si_class_type_info
: public __class_type_info
182 * pointer to the type information of the base class
185 * Zeiger auf die Typinformationen der Basisklasse
188 const __class_type_info
* __base_type
;
193 * \note Needed to generate vtables and type information for this class
197 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
201 virtual ~__si_class_type_info();
206 * \brief Information about a base class in a inheritance hierarchy with
207 * multiple inheritance
210 * \brief Informationen über eine Basisklasse in einer Vererbungshierarchie
211 * mit Mehrfachvererbung
214 struct __base_class_type_info
219 * pointer to the type information of the base class
222 * Zeiger auf die Typinformationen der Basisklasse
225 const __class_type_info
* __base_type
;
229 * flags describing the precise type of the inheritance, see
230 * __base_class_type_info::__offset_flags_masks
233 * Flags die den genauen Vererbungstyp angeben, siehe
234 * __base_class_type_info::__offset_flags_masks
239 /** \todo document */
240 enum __offset_flags_masks
242 /** \todo document */
243 __virtual_mask
= 0x01,
244 /** \todo document */
245 __public_mask
= 0x02,
246 /** \todo document */
251 /** \todo document */
252 class __vmi_class_type_info
: public __class_type_info
255 /** \todo document */
256 unsigned int __flags
;
257 /** \todo document */
258 unsigned int __base_count
;
259 /** \todo document */
260 __base_class_type_info __base_info
[1];
262 /** \todo document */
265 /** \todo document */
266 __non_diamond_repeat_mask
= 0x01,
267 /** \todo document */
268 __diamond_shaped_mask
= 0x02
274 * \note Needed to generate vtables and type information for this class
278 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
282 virtual ~__vmi_class_type_info();
287 * \brief Base class for the runtime type information of pointer types
288 * except pointer to non-member functions
291 * \brief Basisklasse für die Laufzeittypinformationen von Zeigertypen
292 * außer Zeiger auf nicht-Memberfunktionen
295 class __pbase_type_info
: public std::type_info
300 * flags describing the precise type of the pointer, see __pbase_type_info::__masks
303 * Flags die den genauen Typ des Zeigers angeben, siehe __pbase_type_info::__masks
306 unsigned int __flags
;
310 * pointer to the type information of the type pointed to
313 * Zeiger auf die Typinformationen des Typs auf den der Zeiger zeigt
316 const std::type_info
* __pointee
;
320 * flags of the __flags variable
323 * Flags für die __flags Variable
332 __volatile_mask
= 0x02,
335 __restrict_mask
= 0x04,
339 * incomplete type information
342 * unvollständige Typinformationen
345 __incomplete_mask
= 0x08,
349 * incomplete type information for a class type
352 * unvollständige Typinformationen für einen Klassentyp
355 __incomplete_class_mask
= 0x10
361 * \note Needed to generate vtables and type information for this class
365 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
369 virtual ~__pbase_type_info();
374 * \brief Base class for the runtime type information of pointer types
375 * except pointer to member
378 * \brief Basisklasse für die Laufzeittypinformationen von Zeigertypen
379 * außer Zeiger auf Klassenmember
382 class __pointer_type_info
: public __pbase_type_info
388 * \note Needed to generate vtables and type information for this class
392 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
396 virtual ~__pointer_type_info();
401 * \brief Base class for the runtime type information of pointer-to-member
405 * \brief Basisklasse für die Laufzeittypinformationen von Zeiger-auf-Member
409 class __pointer_to_member_type_info
: public __pbase_type_info
414 * pointer to the type information of the class of the pointer-to-member
417 * Zeiger auf die Typinformationen der Klasse des Zeigers-auf-Member
420 const __class_type_info
* __context
;
425 * \note Needed to generate vtables and type information for this class
429 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
433 virtual ~__pointer_to_member_type_info();
443 * \brief Namespace of the C++ ABI
445 * This namespace contains additionally to those members listed here all
446 * members of the __cxxabiv1 namespace.
449 * \brief Namensraum der C++ ABI
451 * Dieser Namensraum zusätzlich zu den hier gelisteten alle Elemente aus dem
452 * Namensraum __cxxabiv1 .
457 // Lift all classes from __cxxabiv1 to the abi namespace
458 using namespace __cxxabiv1
;