21#ifndef __MSVCRT_CPPEXCEPT_H
22#define __MSVCRT_CPPEXCEPT_H
26#define CXX_FRAME_MAGIC_VC6 0x19930520
27#define CXX_FRAME_MAGIC_VC7 0x19930521
28#define CXX_FRAME_MAGIC_VC8 0x19930522
29#define CXX_EXCEPTION 0xe06d7363
31#define FUNC_DESCR_SYNCHRONOUS 1
82#define CLASS_IS_SIMPLE_TYPE 1
83#define CLASS_HAS_VIRTUAL_BASE_CLASS 4
121 unsigned int destructor;
122 unsigned int custom_handler;
123 unsigned int type_info_table;
132 if (!
info)
return "{}";
140 if (!
object)
return NULL;
149 offset_ptr = (
int *)(*(
char **)
object + off->
vbase_offset);
150 object = (
char *)
object + *offset_ptr;
158#define DEFINE_EXCEPTION_TYPE_INFO(type, base_no, cl1, cl2) \
160static const cxx_type_info type ## _cxx_type_info = { \
162 & type ##_type_info, \
165 (cxx_copy_ctor)THISCALL(MSVCRT_ ## type ##_copy_ctor) \
168static const cxx_type_info_table type ## _type_info_table = { \
171 & type ## _cxx_type_info, \
177static const cxx_exception_type type ## _exception_type = { \
179 (cxx_copy_ctor)THISCALL(MSVCRT_ ## type ## _dtor), \
181 & type ## _type_info_table \
186#define DEFINE_EXCEPTION_TYPE_INFO(type, base_no, cl1, cl2) \
188static cxx_type_info type ## _cxx_type_info = { \
196static cxx_type_info_table type ## _type_info_table = { \
205static cxx_exception_type type ##_exception_type = { \
212static void init_ ## type ## _cxx(char *base) \
214 type ## _cxx_type_info.type_info = (char *)&type ## _type_info - base; \
215 type ## _cxx_type_info.copy_ctor = (char *)MSVCRT_ ## type ## _copy_ctor - base; \
216 type ## _type_info_table.info[0] = (char *)&type ## _cxx_type_info - base; \
217 type ## _type_info_table.info[1] = (char *)cl1 - base; \
218 type ## _type_info_table.info[2] = (char *)cl2 - base; \
219 type ## _exception_type.destructor = (char *)MSVCRT_ ## type ## _dtor - base; \
220 type ## _exception_type.type_info_table = (char *)&type ## _type_info_table - base; \
const char * wine_dbg_sprintf(const char *format,...)
struct _EXCEPTION_RECORD * PEXCEPTION_RECORD
int CDECL _XcptFilter(NTSTATUS, PEXCEPTION_POINTERS)
struct __type_info type_info
static const char * dbgstr_type_info(const type_info *info)
void(* cxx_copy_ctor)(void)
struct __exception exception
struct __cxx_type_info_table cxx_type_info_table
struct __cxx_exception_type cxx_exception_type
DWORD(* cxx_exc_custom_handler)(PEXCEPTION_RECORD, cxx_exception_frame *, PCONTEXT, EXCEPTION_REGISTRATION_RECORD **, const cxx_function_descr *, int nested_trylevel, EXCEPTION_REGISTRATION_RECORD *nested_frame, DWORD unknown3)
struct __cxx_type_info cxx_type_info
void WINAPI _CxxThrowException(exception *, const cxx_exception_type *)
static void * get_this_pointer(const this_ptr_offsets *off, void *object)
cxx_exc_custom_handler custom_handler
const cxx_type_info_table * type_info_table
const type_info * type_info
void(* cxx_copy_ctor)(void)
DWORD(* cxx_exc_custom_handler)(PEXCEPTION_RECORD, struct __cxx_exception_frame *, PCONTEXT, EXCEPTION_REGISTRATION_RECORD **, const struct __cxx_function_descr *, int nested_trylevel, EXCEPTION_REGISTRATION_RECORD *nested_frame, DWORD unknown3)