#ifndef __CXXABI_H
#define __CXXABI_H 1
#ifdef __cplusplus
#include <typeinfo>
namespace __cxxabiv1
{
class __fundamental_type_info
: public std::type_info
{
public:
virtual ~__fundamental_type_info ();
public:
explicit __fundamental_type_info (const char *__n)
: std::type_info (__n)
{ }
};
class __array_type_info
: public std::type_info
{
protected:
virtual ~__array_type_info ();
public:
explicit __array_type_info (const char *__n)
: std::type_info (__n)
{ }
};
class __function_type_info
: public std::type_info
{
public:
virtual ~__function_type_info ();
public:
explicit __function_type_info (const char *__n)
: std::type_info (__n)
{ }
protected:
virtual bool __is_function_p () const;
};
class __enum_type_info
: public std::type_info
{
public:
virtual ~__enum_type_info ();
public:
explicit __enum_type_info (const char *__n)
: std::type_info (__n)
{ }
};
class __pbase_type_info
: public std::type_info
{
public:
unsigned int __flags;
const std::type_info *__pointee;
public:
virtual ~__pbase_type_info ();
public:
explicit __pbase_type_info (const char *__n,
int __quals,
const std::type_info *__type)
: std::type_info (__n), __flags (__quals), __pointee (__type)
{ }
public:
enum __masks {
__const_mask = 0x1,
__volatile_mask = 0x2,
__restrict_mask = 0x4,
__incomplete_mask = 0x8,
__incomplete_class_mask = 0x10
};
protected:
virtual bool __do_catch (const std::type_info *__thr_type,
void **__thr_obj,
unsigned __outer) const;
protected:
inline virtual bool __pointer_catch (const __pbase_type_info *__thr_type,
void **__thr_obj,
unsigned __outer) const;
};
class __pointer_type_info
: public __pbase_type_info
{
public:
virtual ~__pointer_type_info ();
public:
explicit __pointer_type_info (const char *__n,
int __quals,
const std::type_info *__type)
: __pbase_type_info (__n, __quals, __type)
{ }
protected:
virtual bool __is_pointer_p () const;
protected:
virtual bool __pointer_catch (const __pbase_type_info *__thr_type,
void **__thr_obj,
unsigned __outer) const;
};
class __pointer_to_member_type_info
: public __pbase_type_info
{
public:
__class_type_info *__context;
public:
virtual ~__pointer_to_member_type_info ();
public:
explicit __pointer_to_member_type_info (const char *__n,
int __quals,
const std::type_info *__type,
__class_type_info *__klass)
: __pbase_type_info (__n, __quals, __type), __context (__klass)
{ }
protected:
virtual bool __pointer_catch (const __pbase_type_info *__thr_type,
void **__thr_obj,
unsigned __outer) const;
};
class __class_type_info;
class __base_class_type_info
{
public:
const __class_type_info* __base_type;
long __offset_flags;
public:
enum __offset_flags_masks {
__virtual_mask = 0x1,
__public_mask = 0x2,
__hwm_bit = 2,
__offset_shift = 8
};
public:
bool __is_virtual_p () const
{ return __offset_flags & __virtual_mask; }
bool __is_public_p () const
{ return __offset_flags & __public_mask; }
__PTRDIFF_TYPE__ __offset () const
{
return static_cast<__PTRDIFF_TYPE__> (__offset_flags) >> __offset_shift;
}
};
class __class_type_info
: public std::type_info
{
public:
virtual ~__class_type_info ();
public:
explicit __class_type_info (const char *__n)
: type_info (__n)
{ }
public:
enum __sub_kind
{
__unknown = 0,
__not_contained,
__contained_ambig,
__contained_virtual_mask = __base_class_type_info::__virtual_mask,
__contained_public_mask = __base_class_type_info::__public_mask,
__contained_mask = 1 << __base_class_type_info::__hwm_bit,
__contained_private = __contained_mask,
__contained_public = __contained_mask | __contained_public_mask
};
public:
struct __upcast_result;
struct __dyncast_result;
protected:
virtual bool __do_upcast (const __class_type_info *__dst_type, void **__obj_ptr) const;
protected:
virtual bool __do_catch (const type_info *__thr_type, void **__thr_obj,
unsigned __outer) const;
public:
virtual bool __do_upcast (const __class_type_info *__dst,
const void *__obj,
__upcast_result &__restrict __result) const;
public:
inline __sub_kind __find_public_src (__PTRDIFF_TYPE__ __src2dst,
const void *__obj_ptr,
const __class_type_info *__src_type,
const void *__src_ptr) const;
public:
virtual bool __do_dyncast (__PTRDIFF_TYPE__ __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;
public:
virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
const void *__obj_ptr,
const __class_type_info *__src_type,
const void *__src_ptr) const;
};
class __si_class_type_info
: public __class_type_info
{
public:
const __class_type_info *__base_type;
public:
virtual ~__si_class_type_info ();
public:
explicit __si_class_type_info (const char *__n,
const __class_type_info *__base)
: __class_type_info (__n), __base_type (__base)
{ }
protected:
virtual bool __do_dyncast (__PTRDIFF_TYPE__ __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_TYPE__ __src2dst,
const void *__obj_ptr,
const __class_type_info *__src_type,
const void *__sub_ptr) const;
virtual bool __do_upcast (const __class_type_info *__dst,
const void *__obj,
__upcast_result &__restrict __result) const;
};
class __vmi_class_type_info : public __class_type_info {
public:
unsigned int __flags;
unsigned int __base_count;
__base_class_type_info __base_info[1];
public:
virtual ~__vmi_class_type_info ();
public:
explicit __vmi_class_type_info (const char *__n,
int ___flags)
: __class_type_info (__n), __flags (___flags), __base_count (0)
{ }
public:
enum __flags_masks {
__non_diamond_repeat_mask = 0x1,
__diamond_shaped_mask = 0x2,
non_public_base_mask = 0x4,
public_base_mask = 0x8,
__flags_unknown_mask = 0x10
};
protected:
virtual bool __do_dyncast (__PTRDIFF_TYPE__ __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_TYPE__ __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;
};
extern "C"
void *__dynamic_cast (const void *__src_ptr,
const __class_type_info *__src_type,
const __class_type_info *__dst_type,
__PTRDIFF_TYPE__ __src2dst);
extern "C"
void *__cxa_vec_new (__SIZE_TYPE__ __element_count,
__SIZE_TYPE__ __element_size,
__SIZE_TYPE__ __padding_size,
void (*__constructor) (void *),
void (*__destructor) (void *));
extern "C"
void *__cxa_vec_new2 (__SIZE_TYPE__ __element_count,
__SIZE_TYPE__ __element_size,
__SIZE_TYPE__ __padding_size,
void (*__constructor) (void *),
void (*__destructor) (void *),
void *(*__alloc) (__SIZE_TYPE__),
void (*__dealloc) (void *));
extern "C"
void *__cxa_vec_new3 (__SIZE_TYPE__ __element_count,
__SIZE_TYPE__ __element_size,
__SIZE_TYPE__ __padding_size,
void (*__constructor) (void *),
void (*__destructor) (void *),
void *(*__alloc) (__SIZE_TYPE__),
void (*__dealloc) (void *, __SIZE_TYPE__));
extern "C"
void __cxa_vec_ctor (void *__array_address,
__SIZE_TYPE__ __element_count,
__SIZE_TYPE__ __element_size,
void (*__constructor) (void *),
void (*__destructor) (void *));
extern "C"
void __cxa_vec_cctor (void *dest_array,
void *src_array,
__SIZE_TYPE__ element_count,
__SIZE_TYPE__ element_size,
void (*constructor) (void *, void *),
void (*destructor) (void *));
extern "C"
void __cxa_vec_dtor (void *__array_address,
__SIZE_TYPE__ __element_count,
__SIZE_TYPE__ __element_size,
void (*__destructor) (void *));
extern "C"
void __cxa_vec_cleanup (void *__array_address,
__SIZE_TYPE__ __element_count,
__SIZE_TYPE__ __element_size,
void (*__destructor) (void *));
extern "C"
void __cxa_vec_delete (void *__array_address,
__SIZE_TYPE__ __element_size,
__SIZE_TYPE__ __padding_size,
void (*__destructor) (void *));
extern "C"
void __cxa_vec_delete2 (void *__array_address,
__SIZE_TYPE__ __element_size,
__SIZE_TYPE__ __padding_size,
void (*__destructor) (void *),
void (*__dealloc) (void *));
extern "C"
void __cxa_vec_delete3 (void *__array_address,
__SIZE_TYPE__ __element_size,
__SIZE_TYPE__ __padding_size,
void (*__destructor) (void *),
void (*__dealloc) (void *, __SIZE_TYPE__));
__extension__ typedef int __guard __attribute__((mode (__DI__)));
extern "C"
int __cxa_guard_acquire (__guard *);
extern "C"
void __cxa_guard_release (__guard *);
extern "C"
void __cxa_guard_abort (__guard *);
extern "C" void
__cxa_pure_virtual (void);
extern "C" void
__cxa_bad_cast ();
extern "C" void
__cxa_bad_typeid ();
extern "C" int
__cxa_atexit (void (*)(void *), void *, void *);
extern "C" int
__cxa_finalize (void *);
extern "C"
char *__cxa_demangle (const char *__mangled_name,
char *__output_buffer,
__SIZE_TYPE__ *__length,
int *__status);
extern "C"
std::type_info *__cxa_current_exception_type ();
}
namespace abi = __cxxabiv1;
#else
#endif
#endif