#ifndef __CXXABI_H
#define __CXXABI_H
#include <stddef.h>
#include <stdint.h>
namespace std {
class type_info; }
namespace __cxxabiv1 {
extern "C" {
extern void * __cxa_allocate_exception(size_t thrown_size) throw();
extern void __cxa_free_exception(void * thrown_exception) throw();
extern void __cxa_throw(void * thrown_exception, struct std::type_info * tinfo,
void (*dest)(void *));
extern void * __cxa_get_exception_ptr(void * exceptionObject) throw();
extern void * __cxa_begin_catch(void * exceptionObject) throw();
extern void __cxa_end_catch();
extern std::type_info * __cxa_current_exception_type();
extern void __cxa_rethrow();
extern void __cxa_bad_cast();
extern void __cxa_bad_typeid();
extern void __cxa_pure_virtual(void);
extern int __cxa_guard_acquire(uint64_t*);
extern void __cxa_guard_release(uint64_t*);
extern void __cxa_guard_abort(uint64_t*);
extern void* __cxa_vec_new(size_t element_count,
size_t element_size,
size_t padding_size,
void (*constructor)(void*),
void (*destructor)(void*) );
extern void* __cxa_vec_new2(size_t element_count,
size_t element_size,
size_t padding_size,
void (*constructor)(void*),
void (*destructor)(void*),
void* (*alloc)(size_t),
void (*dealloc)(void*) );
extern void* __cxa_vec_new3(size_t element_count,
size_t element_size,
size_t padding_size,
void (*constructor)(void*),
void (*destructor)(void*),
void* (*alloc)(size_t),
void (*dealloc)(void*, size_t) );
extern void __cxa_vec_ctor(void* array_address,
size_t element_count,
size_t element_size,
void (*constructor)(void*),
void (*destructor)(void*) );
extern void __cxa_vec_dtor(void* array_address,
size_t element_count,
size_t element_size,
void (*destructor)(void*) );
extern void __cxa_vec_cleanup(void* array_address,
size_t element_count,
size_t element_size,
void (*destructor)(void*) );
extern void __cxa_vec_delete(void* array_address,
size_t element_size,
size_t padding_size,
void (*destructor)(void*) );
extern void __cxa_vec_delete2(void* array_address,
size_t element_size,
size_t padding_size,
void (*destructor)(void*),
void (*dealloc)(void*) );
extern void __cxa_vec_delete3(void* __array_address,
size_t element_size,
size_t padding_size,
void (*destructor)(void*),
void (*dealloc) (void*, size_t));
extern void __cxa_vec_cctor(void* dest_array,
void* src_array,
size_t element_count,
size_t element_size,
void (*constructor) (void*, void*),
void (*destructor)(void*) );
extern int __cxa_atexit(void (*f)(void*), void* p, void* d);
extern int __cxa_finalize(void*);
extern char* __cxa_demangle(const char* mangled_name,
char* output_buffer,
size_t* length,
int* status);
} } namespace abi = __cxxabiv1;
namespace __cxxabiapple {
extern "C" {
extern void (*__cxa_terminate_handler)();
extern void (*__cxa_unexpected_handler)();
extern void (*__cxa_new_handler)();
extern void * __cxa_current_primary_exception() throw();
extern void __cxa_rethrow_primary_exception(void* primary_exception);
extern void __cxa_increment_exception_refcount(void* primary_exception) throw();
extern void __cxa_decrement_exception_refcount(void* primary_exception) throw();
extern bool __cxa_uncaught_exception() throw();
} }
#endif // __CXXABI_H