summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
Diffstat (limited to 'bridges')
-rw-r--r--bridges/source/cpp_uno/gcc3_ios_arm/rtti.h274
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