diff options
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_ios_arm/rtti.h | 274 |
1 files changed, 136 insertions, 138 deletions
diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/rtti.h b/bridges/source/cpp_uno/gcc3_ios_arm/rtti.h index ec8ea8e2bbbf..fd8ef3715082 100644 --- a/bridges/source/cpp_uno/gcc3_ios_arm/rtti.h +++ b/bridges/source/cpp_uno/gcc3_ios_arm/rtti.h @@ -6,17 +6,15 @@ // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2, or (at your option) // any later version. -// // GCC is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// // You should have received a copy of the GNU General Public License // along with GCC; see the file COPYING. If not, write to // the Free Software Foundation, 51 Franklin Street, Fifth Floor, // Boston, MA 02110-1301, USA. - +// // As a special exception, you may use this file as part of a free software // library without restriction. Specifically, if other files instantiate // templates or use macros or inline functions from this file, or you compile @@ -25,10 +23,10 @@ // the GNU General Public License. This exception does not however // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - +// // Written by Nathan Sidwell, Codesourcery LLC, <nathan@codesourcery.com> #ifndef __RTTI_H -#define __RTTI_H +#define __RTTI_H #include <typeinfo> @@ -38,10 +36,10 @@ namespace __cxxabiv1 class __fundamental_type_info : public std::type_info { public: - explicit + explicit __fundamental_type_info(const char* __n) : std::type_info(__n) { } - virtual + virtual ~__fundamental_type_info(); }; @@ -49,10 +47,10 @@ namespace __cxxabiv1 class __array_type_info : public std::type_info { public: - explicit + explicit __array_type_info(const char* __n) : std::type_info(__n) { } - virtual + virtual ~__array_type_info(); }; @@ -60,15 +58,15 @@ namespace __cxxabiv1 class __function_type_info : public std::type_info { public: - explicit + explicit __function_type_info(const char* __n) : std::type_info(__n) { } - virtual + virtual ~__function_type_info(); protected: // Implementation defined member function. - virtual bool + virtual bool __is_function_p() const; }; @@ -76,10 +74,10 @@ namespace __cxxabiv1 class __enum_type_info : public std::type_info { public: - explicit + explicit __enum_type_info(const char* __n) : std::type_info(__n) { } - virtual + virtual ~__enum_type_info(); }; @@ -87,26 +85,26 @@ namespace __cxxabiv1 class __pbase_type_info : public std::type_info { public: - unsigned int __flags; // Qualification of the target object. - const std::type_info* __pointee; // Type of pointed to object. + unsigned int __flags; // Qualification of the target object. + const std::type_info* __pointee; // Type of pointed to object. - explicit - __pbase_type_info(const char* __n, int __quals, - const std::type_info* __type) + explicit + __pbase_type_info(const char* __n, int __quals, + const std::type_info* __type) : std::type_info(__n), __flags(__quals), __pointee(__type) { } - - virtual + + virtual ~__pbase_type_info(); // Implementation defined type. - enum __masks + enum __masks { - __const_mask = 0x1, - __volatile_mask = 0x2, - __restrict_mask = 0x4, - __incomplete_mask = 0x8, - __incomplete_class_mask = 0x10 + __const_mask = 0x1, + __volatile_mask = 0x2, + __restrict_mask = 0x4, + __incomplete_mask = 0x8, + __incomplete_class_mask = 0x10 }; protected: @@ -116,36 +114,36 @@ namespace __cxxabiv1 operator=(const __pbase_type_info&); // Implementation defined member functions. - virtual bool - __do_catch(const std::type_info* __thr_type, void** __thr_obj, - unsigned int __outer) const; + virtual bool + __do_catch(const std::type_info* __thr_type, void** __thr_obj, + unsigned int __outer) const; - inline virtual bool + inline virtual bool __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, - unsigned __outer) const; + unsigned __outer) const; }; // Type information for simple pointers. class __pointer_type_info : public __pbase_type_info { public: - explicit - __pointer_type_info(const char* __n, int __quals, - const std::type_info* __type) + explicit + __pointer_type_info(const char* __n, int __quals, + const std::type_info* __type) : __pbase_type_info (__n, __quals, __type) { } - virtual + virtual ~__pointer_type_info(); protected: // Implementation defined member functions. - virtual bool + virtual bool __is_pointer_p() const; - virtual bool - __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, - unsigned __outer) const; + virtual bool + __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, + unsigned __outer) const; }; class __class_type_info; @@ -156,13 +154,13 @@ namespace __cxxabiv1 public: __class_type_info* __context; // Class of the member. - explicit + explicit __pointer_to_member_type_info(const char* __n, int __quals, - const std::type_info* __type, - __class_type_info* __klass) + const std::type_info* __type, + __class_type_info* __klass) : __pbase_type_info(__n, __quals, __type), __context(__klass) { } - virtual + virtual ~__pointer_to_member_type_info(); protected: @@ -172,38 +170,38 @@ namespace __cxxabiv1 operator=(const __pointer_to_member_type_info&); // Implementation defined member function. - virtual bool + virtual bool __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, - unsigned __outer) const; + unsigned __outer) const; }; // Helper class for __vmi_class_type. class __base_class_type_info { public: - const __class_type_info* __base_type; // Base class type. - long __offset_flags; // Offset and info. + const __class_type_info* __base_type; // Base class type. + long __offset_flags; // Offset and info. - enum __offset_flags_masks + enum __offset_flags_masks { - __virtual_mask = 0x1, - __public_mask = 0x2, - __hwm_bit = 2, - __offset_shift = 8 // Bits to shift offset. + __virtual_mask = 0x1, + __public_mask = 0x2, + __hwm_bit = 2, + __offset_shift = 8 // Bits to shift offset. }; - + // Implementation defined member functions. - bool + bool __is_virtual_p() const { return __offset_flags & __virtual_mask; } - bool + bool __is_public_p() const { return __offset_flags & __public_mask; } - ptrdiff_t + ptrdiff_t __offset() const - { + { // This shift, being of a signed type, is implementation // defined. GCC implements such shifts as arithmetic, which is // what we want. @@ -215,10 +213,10 @@ namespace __cxxabiv1 class __class_type_info : public std::type_info { public: - explicit + explicit __class_type_info (const char *__n) : type_info(__n) { } - virtual + virtual ~__class_type_info (); // Implementation defined types. @@ -228,27 +226,27 @@ namespace __cxxabiv1 // not publicly contained. enum __sub_kind { - // We have no idea. - __unknown = 0, - - // Not contained within us (in some circumstances this might - // mean not contained publicly) - __not_contained, - - // Contained ambiguously. - __contained_ambig, - - // Via a virtual path. - __contained_virtual_mask = __base_class_type_info::__virtual_mask, - - // Via a public path. - __contained_public_mask = __base_class_type_info::__public_mask, - - // Contained within us. - __contained_mask = 1 << __base_class_type_info::__hwm_bit, - - __contained_private = __contained_mask, - __contained_public = __contained_mask | __contained_public_mask + // We have no idea. + __unknown = 0, + + // Not contained within us (in some circumstances this might + // mean not contained publicly) + __not_contained, + + // Contained ambiguously. + __contained_ambig, + + // Via a virtual path. + __contained_virtual_mask = __base_class_type_info::__virtual_mask, + + // Via a public path. + __contained_public_mask = __base_class_type_info::__public_mask, + + // Contained within us. + __contained_mask = 1 << __base_class_type_info::__hwm_bit, + + __contained_private = __contained_mask, + __contained_public = __contained_mask | __contained_public_mask }; struct __upcast_result; @@ -256,19 +254,19 @@ namespace __cxxabiv1 protected: // Implementation defined member functions. - virtual bool + virtual bool __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const; - virtual bool - __do_catch(const type_info* __thr_type, void** __thr_obj, - unsigned __outer) const; + virtual bool + __do_catch(const type_info* __thr_type, void** __thr_obj, + unsigned __outer) const; public: - // Helper for upcast. See if DST is us, or one of our bases. - // Return false if not found, true if found. - virtual bool + // Helper for upcast. See if DST is us, or one of our bases. + // Return false if not found, true if found. + virtual bool __do_upcast(const __class_type_info* __dst, const void* __obj, - __upcast_result& __restrict __result) const; + __upcast_result& __restrict __result) const; // Indicate whether SRC_PTR of type SRC_TYPE is contained publicly // within OBJ_PTR. OBJ_PTR points to a base object of our type, @@ -276,10 +274,10 @@ namespace __cxxabiv1 // objects might be contained within this type. If SRC_PTR is one // of our SRC_TYPE bases, indicate the virtuality. Returns // not_contained for non containment or private containment. - inline __sub_kind + inline __sub_kind __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, - const __class_type_info* __src_type, - const void* __src_ptr) const; + const __class_type_info* __src_type, + const void* __src_ptr) const; // Helper for dynamic cast. ACCESS_PATH gives the access from the // most derived object to this base. DST_TYPE indicates the @@ -288,20 +286,20 @@ namespace __cxxabiv1 // started from and SRC_PTR points to that base within the most // derived object. Fill in RESULT with what we find. Return true // if we have located an ambiguous match. - virtual bool + virtual bool __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path, - const __class_type_info* __dst_type, const void* __obj_ptr, - const __class_type_info* __src_type, const void* __src_ptr, - __dyncast_result& __result) const; - + const __class_type_info* __dst_type, const void* __obj_ptr, + const __class_type_info* __src_type, const void* __src_ptr, + __dyncast_result& __result) const; + // Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE // bases are inherited by the type started from -- which is not // necessarily the current type. The current type will be a base // of the destination type. OBJ_PTR points to the current base. - virtual __sub_kind + virtual __sub_kind __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, - const __class_type_info* __src_type, - const void* __src_ptr) const; + const __class_type_info* __src_type, + const void* __src_ptr) const; }; // Type information for a class with a single non-virtual base. @@ -310,11 +308,11 @@ namespace __cxxabiv1 public: const __class_type_info* __base_type; - explicit + explicit __si_class_type_info(const char *__n, const __class_type_info *__base) : __class_type_info(__n), __base_type(__base) { } - virtual + virtual ~__si_class_type_info(); protected: @@ -324,65 +322,65 @@ namespace __cxxabiv1 operator=(const __si_class_type_info&); // Implementation defined member functions. - virtual bool + virtual bool __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path, - const __class_type_info* __dst_type, const void* __obj_ptr, - const __class_type_info* __src_type, const void* __src_ptr, - __dyncast_result& __result) const; + const __class_type_info* __dst_type, const void* __obj_ptr, + const __class_type_info* __src_type, const void* __src_ptr, + __dyncast_result& __result) const; - virtual __sub_kind + virtual __sub_kind __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, - const __class_type_info* __src_type, - const void* __sub_ptr) const; + const __class_type_info* __src_type, + const void* __sub_ptr) const; - virtual bool + virtual bool __do_upcast(const __class_type_info*__dst, const void*__obj, - __upcast_result& __restrict __result) const; + __upcast_result& __restrict __result) const; }; // Type information for a class with multiple and/or virtual bases. - class __vmi_class_type_info : public __class_type_info + class __vmi_class_type_info : public __class_type_info { public: - unsigned int __flags; // Details about the class hierarchy. - unsigned int __base_count; // Number of direct bases. + unsigned int __flags; // Details about the class hierarchy. + unsigned int __base_count; // Number of direct bases. // The array of bases uses the trailing array struct hack so this // class is not constructable with a normal constructor. It is // internally generated by the compiler. - __base_class_type_info __base_info[1]; // Array of bases. + __base_class_type_info __base_info[1]; // Array of bases. - explicit + explicit __vmi_class_type_info(const char* __n, int ___flags) : __class_type_info(__n), __flags(___flags), __base_count(0) { } - virtual + virtual ~__vmi_class_type_info(); // Implementation defined types. - enum __flags_masks + enum __flags_masks { - __non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base. - __diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance. - __flags_unknown_mask = 0x10 + __non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base. + __diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance. + __flags_unknown_mask = 0x10 }; protected: // Implementation defined member functions. - virtual bool + virtual bool __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path, - const __class_type_info* __dst_type, const void* __obj_ptr, - const __class_type_info* __src_type, const void* __src_ptr, - __dyncast_result& __result) const; - - virtual __sub_kind - __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, - const __class_type_info* __src_type, - const void* __src_ptr) const; - - virtual bool + const __class_type_info* __dst_type, const void* __obj_ptr, + const __class_type_info* __src_type, const void* __src_ptr, + __dyncast_result& __result) const; + + virtual __sub_kind + __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, + const __class_type_info* __src_type, + const void* __src_ptr) const; + + virtual bool __do_upcast(const __class_type_info* __dst, const void* __obj, - __upcast_result& __restrict __result) const; + __upcast_result& __restrict __result) const; }; // Dynamic cast runtime. @@ -394,9 +392,9 @@ namespace __cxxabiv1 // -3: src_type is a multiple public non-virtual base of dst_type extern "C" void* __dynamic_cast(const void* __src_ptr, // Starting object. - const __class_type_info* __src_type, // Static type of object. - const __class_type_info* __dst_type, // Desired target type. - ptrdiff_t __src2dst); // How src and dst are related. + const __class_type_info* __src_type, // Static type of object. + const __class_type_info* __dst_type, // Desired target type. + ptrdiff_t __src2dst); // How src and dst are related. // Returns the type_info for the currently handled exception [15.3/8], or @@ -405,8 +403,8 @@ namespace __cxxabiv1 __cxa_current_exception_type(); } // namespace __cxxabiv1 -// User programs should use the alias `abi'. +// User programs should use the alias `abi'. namespace abi = __cxxabiv1; -#endif // __RTTI_H +#endif // __RTTI_H |