ReactOS 0.4.16-dev-457-g087979e
cxx.h File Reference
#include "cppexcept.h"
Include dependency graph for cxx.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _rtti_base_descriptor
 
struct  _rtti_base_array
 
struct  _rtti_object_hierarchy
 
struct  _rtti_object_locator
 

Macros

#define VTABLE_ADD_FUNC(name)   "\t.long " THISCALL_NAME(name) "\n"
 
#define __ASM_VTABLE(name, funcs)
 
#define DEFINE_RTTI_BASE(name, base_classes_no, mangled_name)
 
#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name)
 
#define DEFINE_RTTI_DATA0(name, off, mangled_name)    DEFINE_RTTI_DATA(name, off, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)
 
#define DEFINE_RTTI_DATA1(name, off, cl1, mangled_name)    DEFINE_RTTI_DATA(name, off, 1, cl1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)
 
#define DEFINE_RTTI_DATA2(name, off, cl1, cl2, mangled_name)    DEFINE_RTTI_DATA(name, off, 2, cl1, cl2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)
 
#define DEFINE_RTTI_DATA3(name, off, cl1, cl2, cl3, mangled_name)    DEFINE_RTTI_DATA(name, off, 3, cl1, cl2, cl3, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)
 
#define DEFINE_RTTI_DATA4(name, off, cl1, cl2, cl3, cl4, mangled_name)    DEFINE_RTTI_DATA(name, off, 4, cl1, cl2, cl3, cl4, NULL, NULL, NULL, NULL, NULL, mangled_name)
 
#define DEFINE_RTTI_DATA8(name, off, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, mangled_name)    DEFINE_RTTI_DATA(name, off, 8, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, NULL, mangled_name)
 
#define DEFINE_RTTI_DATA9(name, off, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name)    DEFINE_RTTI_DATA(name, off, 9, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name)
 
#define CALL_VTBL_FUNC(this, off, ret, type, args)   ((ret (__thiscall***)type)this)[0][off/4]args
 
#define CREATE_TYPE_INFO_VTABLE
 

Typedefs

typedef struct _rtti_base_descriptor rtti_base_descriptor
 
typedef struct _rtti_base_array rtti_base_array
 
typedef struct _rtti_object_hierarchy rtti_object_hierarchy
 
typedef struct _rtti_object_locator rtti_object_locator
 

Functions

exception *__thiscall exception_ctor (exception *, const char **)
 

Variables

const vtable_ptr type_info_vtable
 

Macro Definition Documentation

◆ __ASM_VTABLE

#define __ASM_VTABLE (   name,
  funcs 
)
Value:
__asm__(".data\n" \
"\t.balign 4\n" \
"\t.long " __ASM_NAME(#name "_rtti") "\n" \
"\t.globl " __ASM_NAME(#name "_vtable") "\n" \
__ASM_NAME(#name "_vtable") ":\n" \
funcs "\n\t.text")
#define __ASM_NAME(name)
Definition: config.h:934
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
static struct __wine_debug_functions funcs
Definition: debug.c:59
Definition: name.c:39

Definition at line 40 of file cxx.h.

◆ CALL_VTBL_FUNC

#define CALL_VTBL_FUNC (   this,
  off,
  ret,
  type,
  args 
)    ((ret (__thiscall***)type)this)[0][off/4]args

Definition at line 281 of file cxx.h.

◆ CREATE_TYPE_INFO_VTABLE

#define CREATE_TYPE_INFO_VTABLE
Value:
void * __thiscall type_info_vector_dtor(type_info * _this, unsigned int flags) \
{ \
if (flags & 2) \
{ \
/* we have an array, with the number of elements stored before the first object */ \
INT_PTR i, *ptr = (INT_PTR *)_this - 1; \
\
for (i = *ptr - 1; i >= 0; i--) free(_this[i].name); \
free(ptr); \
} \
else \
{ \
free(_this->name); \
if (flags & 1) free(_this); \
} \
return _this; \
} \
\
DEFINE_RTTI_DATA0( type_info, 0, ".?AVtype_info@@" ) \
\
__ASM_BLOCK_BEGIN(type_info_vtables) \
__ASM_VTABLE(type_info, \
#define VTABLE_ADD_FUNC(name)
Definition: cxx.h:38
#define free
Definition: debug_ros.c:5
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static PVOID ptr
Definition: dispmode.c:27
#define __thiscall
Definition: cpp.c:43
#define DEFINE_THISCALL_WRAPPER(func, args)
Definition: msvc-thiscall.c:2
#define __ASM_BLOCK_END
Definition: asm.h:60
int32_t INT_PTR
Definition: typedefs.h:64
void *__thiscall type_info_vector_dtor(type_info *_this, unsigned int flags)

Definition at line 293 of file cxx.h.

◆ DEFINE_RTTI_BASE

#define DEFINE_RTTI_BASE (   name,
  base_classes_no,
  mangled_name 
)
Value:
static type_info name ## _type_info = { \
NULL, \
mangled_name \
}; \
\
base_classes_no, \
{ 0, -1, 0}, \
64 \
};
const vtable_ptr type_info_vtable
#define NULL
Definition: types.h:112

Definition at line 53 of file cxx.h.

◆ DEFINE_RTTI_DATA

#define DEFINE_RTTI_DATA (   name,
  off,
  base_classes_no,
  cl1,
  cl2,
  cl3,
  cl4,
  cl5,
  cl6,
  cl7,
  cl8,
  cl9,
  mangled_name 
)

Definition at line 67 of file cxx.h.

◆ DEFINE_RTTI_DATA0

#define DEFINE_RTTI_DATA0 (   name,
  off,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)

Definition at line 179 of file cxx.h.

◆ DEFINE_RTTI_DATA1

#define DEFINE_RTTI_DATA1 (   name,
  off,
  cl1,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 1, cl1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)

Definition at line 181 of file cxx.h.

◆ DEFINE_RTTI_DATA2

#define DEFINE_RTTI_DATA2 (   name,
  off,
  cl1,
  cl2,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 2, cl1, cl2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)

Definition at line 183 of file cxx.h.

◆ DEFINE_RTTI_DATA3

#define DEFINE_RTTI_DATA3 (   name,
  off,
  cl1,
  cl2,
  cl3,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 3, cl1, cl2, cl3, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name)

Definition at line 185 of file cxx.h.

◆ DEFINE_RTTI_DATA4

#define DEFINE_RTTI_DATA4 (   name,
  off,
  cl1,
  cl2,
  cl3,
  cl4,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 4, cl1, cl2, cl3, cl4, NULL, NULL, NULL, NULL, NULL, mangled_name)

Definition at line 187 of file cxx.h.

◆ DEFINE_RTTI_DATA8

#define DEFINE_RTTI_DATA8 (   name,
  off,
  cl1,
  cl2,
  cl3,
  cl4,
  cl5,
  cl6,
  cl7,
  cl8,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 8, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, NULL, mangled_name)

Definition at line 189 of file cxx.h.

◆ DEFINE_RTTI_DATA9

#define DEFINE_RTTI_DATA9 (   name,
  off,
  cl1,
  cl2,
  cl3,
  cl4,
  cl5,
  cl6,
  cl7,
  cl8,
  cl9,
  mangled_name 
)     DEFINE_RTTI_DATA(name, off, 9, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name)

Definition at line 191 of file cxx.h.

◆ VTABLE_ADD_FUNC

#define VTABLE_ADD_FUNC (   name)    "\t.long " THISCALL_NAME(name) "\n"

Definition at line 38 of file cxx.h.

Typedef Documentation

◆ rtti_base_array

◆ rtti_base_descriptor

◆ rtti_object_hierarchy

◆ rtti_object_locator

Function Documentation

◆ exception_ctor()

exception *__thiscall exception_ctor ( exception _this,
const char **  name 
)

Definition at line 130 of file cpp.c.

131{
132 TRACE("(%p,%s)\n", _this, *name);
133 return __exception_ctor(_this, *name, &exception_vtable);
134}
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by __ExceptionPtrRethrow().

Variable Documentation

◆ type_info_vtable

const vtable_ptr type_info_vtable
extern