ReactOS 0.4.15-dev-7834-g00c4b3d
cppexcept.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  __type_info
 
struct  __exception
 
struct  __cxx_exception_frame
 
struct  __catchblock_info
 
struct  __tryblock_info
 
struct  __unwind_info
 
struct  __cxx_function_descr
 
struct  this_ptr_offsets
 
struct  __cxx_type_info
 
struct  __cxx_type_info_table
 
struct  __cxx_exception_type
 

Macros

#define CXX_FRAME_MAGIC_VC6   0x19930520
 
#define CXX_FRAME_MAGIC_VC7   0x19930521
 
#define CXX_FRAME_MAGIC_VC8   0x19930522
 
#define CXX_EXCEPTION   0xe06d7363
 
#define EH_NONCONTINUABLE   0x01
 
#define EH_UNWINDING   0x02
 
#define EH_EXIT_UNWIND   0x04
 
#define EH_STACK_INVALID   0x08
 
#define EH_NESTED_CALL   0x10
 
#define TYPE_FLAG_CONST   1
 
#define TYPE_FLAG_VOLATILE   2
 
#define TYPE_FLAG_REFERENCE   8
 
#define FUNC_DESCR_SYNCHRONOUS   1 /* synchronous exceptions only (built with /EHs) */
 
#define CLASS_IS_SIMPLE_TYPE   1
 
#define CLASS_HAS_VIRTUAL_BASE_CLASS   4
 

Typedefs

typedef void(* vtable_ptr) ()
 
typedef struct __type_info type_info
 
typedef struct __exception exception
 
typedef struct __cxx_exception_frame cxx_exception_frame
 
typedef struct __catchblock_info catchblock_info
 
typedef struct __tryblock_info tryblock_info
 
typedef struct __unwind_info unwind_info
 
typedef struct __cxx_function_descr cxx_function_descr
 
typedef void(* cxx_copy_ctor) (void)
 
typedef struct __cxx_type_info cxx_type_info
 
typedef struct __cxx_type_info_table cxx_type_info_table
 
typedef 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)
 
typedef struct __cxx_exception_type cxx_exception_type
 

Functions

void WINAPI _CxxThrowException (exception *, const cxx_exception_type *)
 
int CDECL _XcptFilter (NTSTATUS, PEXCEPTION_POINTERS)
 
int CDECL __CppXcptFilter (NTSTATUS, PEXCEPTION_POINTERS)
 
static const chardbgstr_type_info (const type_info *info)
 
static voidget_this_pointer (const this_ptr_offsets *off, void *object)
 

Macro Definition Documentation

◆ CLASS_HAS_VIRTUAL_BASE_CLASS

#define CLASS_HAS_VIRTUAL_BASE_CLASS   4

Definition at line 128 of file cppexcept.h.

◆ CLASS_IS_SIMPLE_TYPE

#define CLASS_IS_SIMPLE_TYPE   1

Definition at line 127 of file cppexcept.h.

◆ CXX_EXCEPTION

#define CXX_EXCEPTION   0xe06d7363

Definition at line 27 of file cppexcept.h.

◆ CXX_FRAME_MAGIC_VC6

#define CXX_FRAME_MAGIC_VC6   0x19930520

Definition at line 24 of file cppexcept.h.

◆ CXX_FRAME_MAGIC_VC7

#define CXX_FRAME_MAGIC_VC7   0x19930521

Definition at line 25 of file cppexcept.h.

◆ CXX_FRAME_MAGIC_VC8

#define CXX_FRAME_MAGIC_VC8   0x19930522

Definition at line 26 of file cppexcept.h.

◆ EH_EXIT_UNWIND

#define EH_EXIT_UNWIND   0x04

Definition at line 33 of file cppexcept.h.

◆ EH_NESTED_CALL

#define EH_NESTED_CALL   0x10

Definition at line 35 of file cppexcept.h.

◆ EH_NONCONTINUABLE

#define EH_NONCONTINUABLE   0x01

Definition at line 31 of file cppexcept.h.

◆ EH_STACK_INVALID

#define EH_STACK_INVALID   0x08

Definition at line 34 of file cppexcept.h.

◆ EH_UNWINDING

#define EH_UNWINDING   0x02

Definition at line 32 of file cppexcept.h.

◆ FUNC_DESCR_SYNCHRONOUS

#define FUNC_DESCR_SYNCHRONOUS   1 /* synchronous exceptions only (built with /EHs) */

Definition at line 106 of file cppexcept.h.

◆ TYPE_FLAG_CONST

#define TYPE_FLAG_CONST   1

Definition at line 71 of file cppexcept.h.

◆ TYPE_FLAG_REFERENCE

#define TYPE_FLAG_REFERENCE   8

Definition at line 73 of file cppexcept.h.

◆ TYPE_FLAG_VOLATILE

#define TYPE_FLAG_VOLATILE   2

Definition at line 72 of file cppexcept.h.

Typedef Documentation

◆ catchblock_info

◆ cxx_copy_ctor

typedef void(* cxx_copy_ctor) (void)

Definition at line 108 of file cppexcept.h.

◆ cxx_exc_custom_handler

typedef 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)

Definition at line 137 of file cppexcept.h.

◆ cxx_exception_frame

◆ cxx_exception_type

◆ cxx_function_descr

◆ cxx_type_info

◆ cxx_type_info_table

◆ exception

◆ tryblock_info

◆ type_info

◆ unwind_info

◆ vtable_ptr

typedef void(* vtable_ptr) ()

Definition at line 37 of file cppexcept.h.

Function Documentation

◆ __CppXcptFilter()

int CDECL __CppXcptFilter ( NTSTATUS  ,
PEXCEPTION_POINTERS   
)

◆ _CxxThrowException()

void WINAPI _CxxThrowException ( exception object,
const cxx_exception_type type 
)

Definition at line 1572 of file cpp.c.

1573{
1574 ULONG_PTR args[3];
1575
1577 args[1] = (ULONG_PTR)object;
1578 args[2] = (ULONG_PTR)type;
1580}
VOID WINAPI RaiseException(_In_ DWORD dwExceptionCode, _In_ DWORD dwExceptionFlags, _In_ DWORD nNumberOfArguments, _In_opt_ const ULONG_PTR *lpArguments)
Definition: except.c:700
#define ULONG_PTR
Definition: config.h:101
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define CXX_EXCEPTION
Definition: cppexcept.h:27
#define CXX_FRAME_MAGIC_VC6
Definition: cppexcept.h:24
Definition: match.c:390
#define EH_NONCONTINUABLE
Definition: stubs.h:32
uint32_t ULONG_PTR
Definition: typedefs.h:65

◆ _XcptFilter()

int CDECL _XcptFilter ( NTSTATUS  ex,
PEXCEPTION_POINTERS  ptr 
)

Definition at line 274 of file except.c.

275{
276 TRACE("(%08x,%p)\n", ex, ptr);
277 /* I assume ptr->ExceptionRecord->ExceptionCode is the same as ex */
279}
static PVOID ptr
Definition: dispmode.c:27
static LONG msvcrt_exception_filter(struct _EXCEPTION_POINTERS *except)
Definition: except.c:93
#define TRACE(s)
Definition: solgame.cpp:4
Definition: comerr.c:44

◆ dbgstr_type_info()

static const char * dbgstr_type_info ( const type_info info)
inlinestatic

Definition at line 155 of file cppexcept.h.

156{
157 if (!info) return "{}";
158 return wine_dbg_sprintf( "{vtable=%p name=%s (%s)}",
159 info->vtable, info->mangled, info->name ? info->name : "" );
160}
const char * wine_dbg_sprintf(const char *format,...)
Definition: compat.c:296

Referenced by dump_obj_locator(), and MSVCRT___RTDynamicCast().

◆ get_this_pointer()

static void * get_this_pointer ( const this_ptr_offsets off,
void object 
)
inlinestatic

Definition at line 163 of file cppexcept.h.

164{
165 if (!object) return NULL;
166
167 if (off->vbase_descr >= 0)
168 {
169 int *offset_ptr;
170
171 /* move this ptr to vbase descriptor */
172 object = (char *)object + off->vbase_descr;
173 /* and fetch additional offset from vbase descriptor */
174 offset_ptr = (int *)(*(char **)object + off->vbase_offset);
175 object = (char *)object + *offset_ptr;
176 }
177
178 object = (char *)object + off->this_offset;
179 return object;
180}
#define NULL
Definition: types.h:112

Referenced by MSVCRT___RTDynamicCast().