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 #ifndef _LIGHTLIBCPP_NO_RTTI
38 /** \addtogroup lightlibcpp_cxxabi_rtti */
43 * \brief Base class for the runtime type information of the builtin types
46 * \brief Basisklasse für die Laufzeittypinformation der eingebauten Typen
49 class __fundamental_type_info
: public std::type_info
55 * \note Needed to generate vtables and type information for this class
56 * and type information for the builtin types
60 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
61 * und Typinformationen für die eingebauten Typen zu generieren
64 virtual ~__fundamental_type_info();
69 * \brief Base class for the runtime type information of array types
72 * \brief Basisklasse für die Laufzeittypinformationen von Arraytypen
75 class __array_type_info
: public std::type_info
81 * \note Needed to generate vtables and type information for this class
85 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
89 virtual ~__array_type_info();
94 * \brief Base class for the runtime type information of (non-member)
98 * \brief Basisklasse für die Laufzeittypinformationen von (nicht-member)
102 class __function_type_info
: public std::type_info
108 * \note Needed to generate vtables and type information for this class
112 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
116 virtual ~__function_type_info();
121 * \brief Base class for the runtime type information of enumeration types
124 * \brief Basisklasse für die Laufzeittypinformationen von Enumerationstypen
127 class __enum_type_info
: public std::type_info
133 * \note Needed to generate vtables and type information for this class
137 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
141 virtual ~__enum_type_info();
146 * \brief Base class for the runtime type information of class types
149 * \brief Basiskalsse für die Laufzeittypinformationen von Klassentypen
152 class __class_type_info
: public std::type_info
158 * \note Needed to generate vtables and type information for this class
162 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
166 virtual ~__class_type_info();
171 * \brief Base class for the runtime type information of class types with
175 * \brief Basisklasse für die Laufzeittypinformationen von Klassentypen mit
179 class __si_class_type_info
: public __class_type_info
184 * pointer to the type information of the base class
187 * Zeiger auf die Typinformationen der Basisklasse
190 const __class_type_info
* __base_type
;
195 * \note Needed to generate vtables and type information for this class
199 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
203 virtual ~__si_class_type_info();
208 * \brief Information about a base class in a inheritance hierarchy with
209 * multiple inheritance
212 * \brief Informationen über eine Basisklasse in einer Vererbungshierarchie
213 * mit Mehrfachvererbung
216 struct __base_class_type_info
221 * pointer to the type information of the base class
224 * Zeiger auf die Typinformationen der Basisklasse
227 const __class_type_info
* __base_type
;
231 * flags describing the precise type of the inheritance, see
232 * __base_class_type_info::__offset_flags_masks
235 * Flags die den genauen Vererbungstyp angeben, siehe
236 * __base_class_type_info::__offset_flags_masks
241 /** \todo document */
242 enum __offset_flags_masks
244 /** \todo document */
245 __virtual_mask
= 0x01,
246 /** \todo document */
247 __public_mask
= 0x02,
248 /** \todo document */
253 /** \todo document */
254 class __vmi_class_type_info
: public __class_type_info
257 /** \todo document */
258 unsigned int __flags
;
259 /** \todo document */
260 unsigned int __base_count
;
261 /** \todo document */
262 __base_class_type_info __base_info
[1];
264 /** \todo document */
267 /** \todo document */
268 __non_diamond_repeat_mask
= 0x01,
269 /** \todo document */
270 __diamond_shaped_mask
= 0x02
276 * \note Needed to generate vtables and type information for this class
280 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
284 virtual ~__vmi_class_type_info();
289 * \brief Base class for the runtime type information of pointer types
290 * except pointer to non-member functions
293 * \brief Basisklasse für die Laufzeittypinformationen von Zeigertypen
294 * außer Zeiger auf nicht-Memberfunktionen
297 class __pbase_type_info
: public std::type_info
302 * flags describing the precise type of the pointer, see __pbase_type_info::__masks
305 * Flags die den genauen Typ des Zeigers angeben, siehe __pbase_type_info::__masks
308 unsigned int __flags
;
312 * pointer to the type information of the type pointed to
315 * Zeiger auf die Typinformationen des Typs auf den der Zeiger zeigt
318 const std::type_info
* __pointee
;
322 * flags of the __flags variable
325 * Flags für die __flags Variable
334 __volatile_mask
= 0x02,
337 __restrict_mask
= 0x04,
341 * incomplete type information
344 * unvollständige Typinformationen
347 __incomplete_mask
= 0x08,
351 * incomplete type information for a class type
354 * unvollständige Typinformationen für einen Klassentyp
357 __incomplete_class_mask
= 0x10
363 * \note Needed to generate vtables and type information for this class
367 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
371 virtual ~__pbase_type_info();
376 * \brief Base class for the runtime type information of pointer types
377 * except pointer to member
380 * \brief Basisklasse für die Laufzeittypinformationen von Zeigertypen
381 * außer Zeiger auf Klassenmember
384 class __pointer_type_info
: public __pbase_type_info
390 * \note Needed to generate vtables and type information for this class
394 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
398 virtual ~__pointer_type_info();
403 * \brief Base class for the runtime type information of pointer-to-member
407 * \brief Basisklasse für die Laufzeittypinformationen von Zeiger-auf-Member
411 class __pointer_to_member_type_info
: public __pbase_type_info
416 * pointer to the type information of the class of the pointer-to-member
419 * Zeiger auf die Typinformationen der Klasse des Zeigers-auf-Member
422 const __class_type_info
* __context
;
427 * \note Needed to generate vtables and type information for this class
431 * \note Wird benötigt um vtables und Typinformationen für diese Klasse
435 virtual ~__pointer_to_member_type_info();
447 * \brief Namespace of the C++ ABI
449 * This namespace contains additionally to those members listed here all
450 * members of the __cxxabiv1 namespace.
453 * \brief Namensraum der C++ ABI
455 * Dieser Namensraum zusätzlich zu den hier gelisteten alle Elemente aus dem
456 * Namensraum __cxxabiv1 .
461 // Lift all classes from __cxxabiv1 to the abi namespace
462 using namespace __cxxabiv1
;
466 /** \addtogroup lightlibcpp_cxxabi_pure_virtual */
473 * This function is called at runtime if a pure virtual function is being
474 * called not overwritten by any derived class.
476 * __cxa_pure_virtual() does not return to the caller.
479 * Diese Funktion wird zur Laufzeit aufgerufen, falls eine rein-virtuelle
480 * Funktion zum Zeitpunkt des Aufrufs von keiner abgeleiteten Klasse
481 * überschrieben wird.
483 * __cxa_pure_virtual() kehrt nicht zum Aufrufenden zurück.
486 void __cxa_pure_virtual() _LIGHTLIBCPP_NORETURN
;