ReactOS  0.4.14-dev-606-g14ebc0b
cpp.c File Reference
#include <precomp.h>
#include <wine/exception.h>
#include <internal/wine/msvcrt.h>
#include <internal/wine/cppexcept.h>
Include dependency graph for cpp.c:

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 THISCALL(func)   func
 
#define THISCALL_NAME(func)   __ASM_NAME(#func)
 
#define DEFINE_THISCALL_WRAPPER(func, args)   /* nothing */
 

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

static const vtable_ptrget_vtable (void *obj)
 
static const rtti_object_locatorget_obj_locator (void *cppobj)
 
static void dump_obj_locator (const rtti_object_locator *ptr)
 
static void EXCEPTION_ctor (exception *_this, const char **name)
 
exception __stdcall MSVCRT_exception_ctor (exception *_this, const char **name)
 
exception __stdcall MSVCRT_exception_ctor_noalloc (exception *_this, char **name, int noalloc)
 
exception __stdcall MSVCRT_exception_copy_ctor (exception *_this, const exception *rhs)
 
exception __stdcall MSVCRT_exception_default_ctor (exception *_this)
 
void __stdcall MSVCRT_exception_dtor (exception *_this)
 
exception __stdcall MSVCRT_exception_opequals (exception *_this, const exception *rhs)
 
void *__stdcall MSVCRT_exception_vector_dtor (exception *_this, unsigned int flags)
 
void *__stdcall MSVCRT_exception_scalar_dtor (exception *_this, unsigned int flags)
 
const char *__stdcall MSVCRT_what_exception (exception *_this)
 
bad_typeid *__stdcall MSVCRT_bad_typeid_copy_ctor (bad_typeid *_this, const bad_typeid *rhs)
 
bad_typeid *__stdcall MSVCRT_bad_typeid_ctor (bad_typeid *_this, const char *name)
 
bad_typeid *__stdcall MSVCRT_bad_typeid_default_ctor (bad_typeid *_this)
 
void __stdcall MSVCRT_bad_typeid_dtor (bad_typeid *_this)
 
bad_typeid *__stdcall MSVCRT_bad_typeid_opequals (bad_typeid *_this, const bad_typeid *rhs)
 
void *__stdcall MSVCRT_bad_typeid_vector_dtor (bad_typeid *_this, unsigned int flags)
 
void *__stdcall MSVCRT_bad_typeid_scalar_dtor (bad_typeid *_this, unsigned int flags)
 
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_copy_ctor (__non_rtti_object *_this, const __non_rtti_object *rhs)
 
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_ctor (__non_rtti_object *_this, const char *name)
 
void __stdcall MSVCRT___non_rtti_object_dtor (__non_rtti_object *_this)
 
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_opequals (__non_rtti_object *_this, const __non_rtti_object *rhs)
 
void *__stdcall MSVCRT___non_rtti_object_vector_dtor (__non_rtti_object *_this, unsigned int flags)
 
void *__stdcall MSVCRT___non_rtti_object_scalar_dtor (__non_rtti_object *_this, unsigned int flags)
 
bad_cast *__stdcall MSVCRT_bad_cast_ctor (bad_cast *_this, const char **name)
 
bad_cast *__stdcall MSVCRT_bad_cast_copy_ctor (bad_cast *_this, const bad_cast *rhs)
 
bad_cast *__stdcall MSVCRT_bad_cast_ctor_charptr (bad_cast *_this, const char *name)
 
bad_cast *__stdcall MSVCRT_bad_cast_default_ctor (bad_cast *_this)
 
void __stdcall MSVCRT_bad_cast_dtor (bad_cast *_this)
 
bad_cast *__stdcall MSVCRT_bad_cast_opequals (bad_cast *_this, const bad_cast *rhs)
 
void *__stdcall MSVCRT_bad_cast_vector_dtor (bad_cast *_this, unsigned int flags)
 
void *__stdcall MSVCRT_bad_cast_scalar_dtor (bad_cast *_this, unsigned int flags)
 
int __stdcall MSVCRT_type_info_opequals_equals (type_info *_this, const type_info *rhs)
 
int __stdcall MSVCRT_type_info_opnot_equals (type_info *_this, const type_info *rhs)
 
int __stdcall MSVCRT_type_info_before (type_info *_this, const type_info *rhs)
 
void __stdcall MSVCRT_type_info_dtor (type_info *_this)
 
const char *__stdcall MSVCRT_type_info_name (type_info *_this)
 
const char *__stdcall MSVCRT_type_info_raw_name (type_info *_this)
 
void *__stdcall MSVCRT_type_info_vector_dtor (type_info *_this, unsigned int flags)
 
terminate_function CDECL MSVCRT_set_terminate (terminate_function func)
 
terminate_function CDECL _get_terminate (void)
 
unexpected_function CDECL MSVCRT_set_unexpected (unexpected_function func)
 
unexpected_function CDECL _get_unexpected (void)
 
_se_translator_function CDECL MSVCRT__set_se_translator (_se_translator_function func)
 
void CDECL MSVCRT_terminate (void)
 
void CDECL MSVCRT_unexpected (void)
 
const type_info *CDECL MSVCRT___RTtypeid (void *cppobj)
 
void *CDECL MSVCRT___RTDynamicCast (void *cppobj, int unknown, type_info *src, type_info *dst, int do_throw)
 
void *CDECL MSVCRT___RTCastToVoid (void *cppobj)
 

Variables

const vtable_ptr MSVCRT_exception_vtable
 
const vtable_ptr MSVCRT_bad_typeid_vtable
 
const vtable_ptr MSVCRT_bad_cast_vtable
 
const vtable_ptr MSVCRT___non_rtti_object_vtable
 
const vtable_ptr MSVCRT_type_info_vtable
 
static const type_info exception_type_info
 
static const rtti_base_descriptor exception_rtti_base_descriptor
 
static const rtti_base_array exception_rtti_base_array
 
static const rtti_object_hierarchy exception_type_hierarchy
 
const rtti_object_locator exception_rtti
 
static const cxx_type_info exception_cxx_type_info
 
static const type_info bad_typeid_type_info
 
static const rtti_base_descriptor bad_typeid_rtti_base_descriptor
 
static const rtti_base_array bad_typeid_rtti_base_array
 
static const rtti_object_hierarchy bad_typeid_type_hierarchy
 
const rtti_object_locator bad_typeid_rtti
 
static const cxx_type_info bad_typeid_cxx_type_info
 
static const type_info bad_cast_type_info
 
static const rtti_base_descriptor bad_cast_rtti_base_descriptor
 
static const rtti_base_array bad_cast_rtti_base_array
 
static const rtti_object_hierarchy bad_cast_type_hierarchy
 
const rtti_object_locator bad_cast_rtti
 
static const cxx_type_info bad_cast_cxx_type_info
 
static const type_info __non_rtti_object_type_info
 
static const rtti_base_descriptor __non_rtti_object_rtti_base_descriptor
 
static const rtti_base_array __non_rtti_object_rtti_base_array
 
static const rtti_object_hierarchy __non_rtti_object_type_hierarchy
 
const rtti_object_locator __non_rtti_object_rtti
 
static const cxx_type_info __non_rtti_object_cxx_type_info
 
static const type_info type_info_type_info
 
static const rtti_base_descriptor type_info_rtti_base_descriptor
 
static const rtti_base_array type_info_rtti_base_array
 
static const rtti_object_hierarchy type_info_type_hierarchy
 
const rtti_object_locator type_info_rtti
 
static const cxx_type_info_table bad_cast_type_info_table
 
static const cxx_exception_type bad_cast_exception_type
 
static const cxx_type_info_table bad_typeid_type_info_table
 
static const cxx_exception_type bad_typeid_exception_type
 
static const cxx_exception_type __non_rtti_object_exception_type
 

Macro Definition Documentation

◆ DEFINE_THISCALL_WRAPPER

#define DEFINE_THISCALL_WRAPPER (   func,
  args 
)    /* nothing */

Definition at line 83 of file cpp.c.

◆ THISCALL

#define THISCALL (   func)    func

Definition at line 81 of file cpp.c.

◆ THISCALL_NAME

#define THISCALL_NAME (   func)    __ASM_NAME(#func)

Definition at line 82 of file cpp.c.

Typedef Documentation

◆ rtti_base_array

◆ rtti_base_descriptor

◆ rtti_object_hierarchy

◆ rtti_object_locator

Function Documentation

◆ _get_terminate()

terminate_function CDECL _get_terminate ( void  )

Definition at line 1020 of file cpp.c.

1021 {
1023  return data->terminate_handler;
1024 }
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31

◆ _get_unexpected()

unexpected_function CDECL _get_unexpected ( void  )

Definition at line 1049 of file cpp.c.

1050 {
1052  return data->unexpected_handler;
1053 }
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31

◆ dump_obj_locator()

static void dump_obj_locator ( const rtti_object_locator ptr)
static

Definition at line 105 of file cpp.c.

106 {
107  int i;
108  const rtti_object_hierarchy *h = ptr->type_hierarchy;
109 
110  TRACE( "%p: sig=%08x base_offset=%08x flags=%08x type=%p %s hierarchy=%p\n",
111  ptr, ptr->signature, ptr->base_class_offset, ptr->flags,
112  ptr->type_descriptor, dbgstr_type_info(ptr->type_descriptor), ptr->type_hierarchy );
113  TRACE( " hierarchy: sig=%08x attr=%08x len=%d base classes=%p\n",
114  h->signature, h->attributes, h->array_len, h->base_classes );
115  for (i = 0; i < h->array_len; i++)
116  {
117  TRACE( " base class %p: num %d off %d,%d,%d attr %08x type %p %s\n",
118  h->base_classes->bases[i],
119  h->base_classes->bases[i]->num_base_classes,
120  h->base_classes->bases[i]->offsets.this_offset,
121  h->base_classes->bases[i]->offsets.vbase_descr,
122  h->base_classes->bases[i]->offsets.vbase_offset,
123  h->base_classes->bases[i]->attributes,
124  h->base_classes->bases[i]->type_descriptor,
125  dbgstr_type_info(h->base_classes->bases[i]->type_descriptor) );
126  }
127 }
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
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
static const char * dbgstr_type_info(const type_info *info)
Definition: cppexcept.h:128
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by MSVCRT___RTDynamicCast().

◆ EXCEPTION_ctor()

static void EXCEPTION_ctor ( exception _this,
const char **  name 
)
static

Definition at line 130 of file cpp.c.

131 {
133  if (*name)
134  {
135  size_t name_len = strlen(*name) + 1;
136  _this->name = MSVCRT_malloc(name_len);
137  memcpy(_this->name, *name, name_len);
138  _this->do_free = TRUE;
139  }
140  else
141  {
142  _this->name = NULL;
143  _this->do_free = FALSE;
144  }
145 }
#define TRUE
Definition: types.h:120
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
const vtable_ptr MSVCRT_exception_vtable
smooth NULL
Definition: ftsmooth.c:416
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
char * name
Definition: cpp.c:28
int do_free
Definition: cpp.c:29
Definition: name.c:38
vtable_ptr * vtable
Definition: cpp.c:27
void *__cdecl MSVCRT_malloc(MSVCRT_size_t)

Referenced by MSVCRT___non_rtti_object_ctor(), MSVCRT_bad_cast_ctor(), MSVCRT_bad_cast_ctor_charptr(), MSVCRT_bad_typeid_ctor(), MSVCRT_exception_copy_ctor(), MSVCRT_exception_ctor(), and MSVCRT_exception_default_ctor().

◆ get_obj_locator()

static const rtti_object_locator* get_obj_locator ( void cppobj)
inlinestatic

Definition at line 99 of file cpp.c.

100 {
101  const vtable_ptr *vtable = get_vtable( cppobj );
102  return (const rtti_object_locator *)vtable[-1];
103 }
static void * vtable[]
Definition: typelib.c:1231
static const vtable_ptr * get_vtable(void *obj)
Definition: cpp.c:94
void(* vtable_ptr)(void)
Definition: cpp.c:23

Referenced by MSVCRT___RTCastToVoid(), MSVCRT___RTDynamicCast(), and MSVCRT___RTtypeid().

◆ get_vtable()

static const vtable_ptr* get_vtable ( void obj)
inlinestatic

Definition at line 94 of file cpp.c.

95 {
96  return *(const vtable_ptr **)obj;
97 }
void(* vtable_ptr)(void)
Definition: cpp.c:23

Referenced by get_obj_locator().

◆ MSVCRT___non_rtti_object_copy_ctor()

__non_rtti_object* __stdcall MSVCRT___non_rtti_object_copy_ctor ( __non_rtti_object *  _this,
const __non_rtti_object *  rhs 
)

Definition at line 369 of file cpp.c.

371 {
372  TRACE("(%p %p)\n", _this, rhs);
373  MSVCRT_bad_typeid_copy_ctor(_this, rhs);
374  _this->vtable = &MSVCRT___non_rtti_object_vtable;
375  return _this;
376 }
const vtable_ptr MSVCRT___non_rtti_object_vtable
#define TRACE(s)
Definition: solgame.cpp:4
bad_typeid *__stdcall MSVCRT_bad_typeid_copy_ctor(bad_typeid *_this, const bad_typeid *rhs)
Definition: cpp.c:280

◆ MSVCRT___non_rtti_object_ctor()

__non_rtti_object* __stdcall MSVCRT___non_rtti_object_ctor ( __non_rtti_object *  _this,
const char name 
)

Definition at line 382 of file cpp.c.

384 {
385  TRACE("(%p %s)\n", _this, name);
386  EXCEPTION_ctor(_this, &name);
387  _this->vtable = &MSVCRT___non_rtti_object_vtable;
388  return _this;
389 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
const vtable_ptr MSVCRT___non_rtti_object_vtable
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:38

Referenced by MSVCRT___RTCastToVoid(), MSVCRT___RTDynamicCast(), and MSVCRT___RTtypeid().

◆ MSVCRT___non_rtti_object_dtor()

void __stdcall MSVCRT___non_rtti_object_dtor ( __non_rtti_object *  _this)

Definition at line 395 of file cpp.c.

396 {
397  TRACE("(%p)\n", _this);
398  MSVCRT_bad_typeid_dtor(_this);
399 }
#define TRACE(s)
Definition: solgame.cpp:4
void __stdcall MSVCRT_bad_typeid_dtor(bad_typeid *_this)
Definition: cpp.c:313

Referenced by MSVCRT___non_rtti_object_scalar_dtor(), and MSVCRT___non_rtti_object_vector_dtor().

◆ MSVCRT___non_rtti_object_opequals()

__non_rtti_object* __stdcall MSVCRT___non_rtti_object_opequals ( __non_rtti_object *  _this,
const __non_rtti_object *  rhs 
)

Definition at line 405 of file cpp.c.

407 {
408  TRACE("(%p %p)\n", _this, rhs);
409  MSVCRT_bad_typeid_opequals(_this, rhs);
410  return _this;
411 }
#define TRACE(s)
Definition: solgame.cpp:4
bad_typeid *__stdcall MSVCRT_bad_typeid_opequals(bad_typeid *_this, const bad_typeid *rhs)
Definition: cpp.c:323

◆ MSVCRT___non_rtti_object_scalar_dtor()

void* __stdcall MSVCRT___non_rtti_object_scalar_dtor ( __non_rtti_object *  _this,
unsigned int  flags 
)

Definition at line 440 of file cpp.c.

441 {
442  TRACE("(%p %x)\n", _this, flags);
444  if (flags & 1) MSVCRT_operator_delete(_this);
445  return _this;
446 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
void __stdcall MSVCRT___non_rtti_object_dtor(__non_rtti_object *_this)
Definition: cpp.c:395
#define TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161

◆ MSVCRT___non_rtti_object_vector_dtor()

void* __stdcall MSVCRT___non_rtti_object_vector_dtor ( __non_rtti_object *  _this,
unsigned int  flags 
)

Definition at line 417 of file cpp.c.

418 {
419  TRACE("(%p %x)\n", _this, flags);
420  if (flags & 2)
421  {
422  /* we have an array, with the number of elements stored before the first object */
423  int i, *ptr = (int *)_this - 1;
424 
425  for (i = *ptr - 1; i >= 0; i--) MSVCRT___non_rtti_object_dtor(_this + i);
427  }
428  else
429  {
431  if (flags & 1) MSVCRT_operator_delete(_this);
432  }
433  return _this;
434 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
void __stdcall MSVCRT___non_rtti_object_dtor(__non_rtti_object *_this)
Definition: cpp.c:395
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 TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161

◆ MSVCRT___RTCastToVoid()

void* CDECL MSVCRT___RTCastToVoid ( void cppobj)

Definition at line 1246 of file cpp.c.

1247 {
1248  void *ret;
1249 
1250  if (!cppobj) return NULL;
1251 
1252  __TRY
1253  {
1254  const rtti_object_locator *obj_locator = get_obj_locator( cppobj );
1255  ret = (char *)cppobj - obj_locator->base_class_offset;
1256  }
1258  {
1259  __non_rtti_object e;
1260  MSVCRT___non_rtti_object_ctor( &e, "Access violation - no RTTI data!" );
1262  return NULL;
1263  }
1264  __ENDTRY
1265  return ret;
1266 }
#define e
Definition: ke_i.h:82
smooth NULL
Definition: ftsmooth.c:416
#define __TRY
Definition: compat.h:70
void WINAPI _CxxThrowException(exception *object, const cxx_exception_type *type)
Definition: cppexcept.c:557
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_ctor(__non_rtti_object *_this, const char *name)
Definition: cpp.c:382
static const cxx_exception_type __non_rtti_object_exception_type
Definition: cpp.c:988
#define __ENDTRY
Definition: compat.h:72
int ret
static const rtti_object_locator * get_obj_locator(void *cppobj)
Definition: cpp.c:99
int base_class_offset
Definition: cpp.c:56
#define __EXCEPT_PAGE_FAULT
Definition: compat.h:71

◆ MSVCRT___RTDynamicCast()

void* CDECL MSVCRT___RTDynamicCast ( void cppobj,
int  unknown,
type_info src,
type_info dst,
int  do_throw 
)

Definition at line 1166 of file cpp.c.

1169 {
1170  void *ret;
1171 
1172  if (!cppobj) return NULL;
1173 
1174  TRACE("obj: %p unknown: %d src: %p %s dst: %p %s do_throw: %d)\n",
1175  cppobj, unknown, src, dbgstr_type_info(src), dst, dbgstr_type_info(dst), do_throw);
1176 
1177  /* To cast an object at runtime:
1178  * 1.Find out the true type of the object from the typeinfo at vtable[-1]
1179  * 2.Search for the destination type in the class hierarchy
1180  * 3.If destination type is found, return base object address + dest offset
1181  * Otherwise, fail the cast
1182  *
1183  * FIXME: the unknown parameter doesn't seem to be used for anything
1184  */
1185  __TRY
1186  {
1187  int i;
1188  const rtti_object_locator *obj_locator = get_obj_locator( cppobj );
1189  const rtti_object_hierarchy *obj_bases = obj_locator->type_hierarchy;
1190  const rtti_base_descriptor * const* base_desc = obj_bases->base_classes->bases;
1191 
1192  if (TRACE_ON(msvcrt)) dump_obj_locator(obj_locator);
1193 
1194  ret = NULL;
1195  for (i = 0; i < obj_bases->array_len; i++)
1196  {
1197  const type_info *typ = base_desc[i]->type_descriptor;
1198 
1199  if (!strcmp(typ->mangled, dst->mangled))
1200  {
1201  /* compute the correct this pointer for that base class */
1202  void *this_ptr = (char *)cppobj - obj_locator->base_class_offset;
1203  ret = get_this_pointer( &base_desc[i]->offsets, this_ptr );
1204  break;
1205  }
1206  }
1207  /* VC++ sets do_throw to 1 when the result of a dynamic_cast is assigned
1208  * to a reference, since references cannot be NULL.
1209  */
1210  if (!ret && do_throw)
1211  {
1212  const char *msg = "Bad dynamic_cast!";
1213  bad_cast e;
1214  MSVCRT_bad_cast_ctor( &e, &msg );
1216  }
1217  }
1219  {
1220  __non_rtti_object e;
1221  MSVCRT___non_rtti_object_ctor( &e, "Access violation - no RTTI data!" );
1223  return NULL;
1224  }
1225  __ENDTRY
1226  return ret;
1227 }
const type_info * type_descriptor
Definition: cpp.c:34
const rtti_base_descriptor * bases[3]
Definition: cpp.c:42
static const cxx_exception_type bad_cast_exception_type
Definition: cpp.c:962
bad_cast *__stdcall MSVCRT_bad_cast_ctor(bad_cast *_this, const char **name)
Definition: cpp.c:453
char mangled[16]
Definition: cpp.c:36
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
#define e
Definition: ke_i.h:82
smooth NULL
Definition: ftsmooth.c:416
static const char * dbgstr_type_info(const type_info *info)
Definition: cppexcept.h:128
#define __TRY
Definition: compat.h:70
void WINAPI _CxxThrowException(exception *object, const cxx_exception_type *type)
Definition: cppexcept.c:557
#define TRACE(s)
Definition: solgame.cpp:4
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_ctor(__non_rtti_object *_this, const char *name)
Definition: cpp.c:382
static const cxx_exception_type __non_rtti_object_exception_type
Definition: cpp.c:988
static void * get_this_pointer(const this_ptr_offsets *off, void *object)
Definition: cppexcept.h:136
Definition: id3.c:18
#define __ENDTRY
Definition: compat.h:72
int ret
const rtti_base_array * base_classes
Definition: cpp.c:50
static void dump_obj_locator(const rtti_object_locator *ptr)
Definition: cpp.c:105
GLenum src
Definition: glext.h:6340
const rtti_object_hierarchy * type_hierarchy
Definition: cpp.c:59
GLenum GLenum dst
Definition: glext.h:6340
static const rtti_object_locator * get_obj_locator(void *cppobj)
Definition: cpp.c:99
#define msg(x)
Definition: auth_time.c:54
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
int base_class_offset
Definition: cpp.c:56
#define TRACE_ON(x)
Definition: compat.h:65
#define __EXCEPT_PAGE_FAULT
Definition: compat.h:71

◆ MSVCRT___RTtypeid()

const type_info* CDECL MSVCRT___RTtypeid ( void cppobj)

Definition at line 1116 of file cpp.c.

1117 {
1118  const type_info *ret;
1119 
1120  if (!cppobj)
1121  {
1122  bad_typeid e;
1123  MSVCRT_bad_typeid_ctor( &e, "Attempted a typeid of NULL pointer!" );
1125  return NULL;
1126  }
1127 
1128  __TRY
1129  {
1130  const rtti_object_locator *obj_locator = get_obj_locator( cppobj );
1131  ret = obj_locator->type_descriptor;
1132  }
1134  {
1135  __non_rtti_object e;
1136  MSVCRT___non_rtti_object_ctor( &e, "Bad read pointer - no RTTI data!" );
1138  return NULL;
1139  }
1140  __ENDTRY
1141  return ret;
1142 }
bad_typeid *__stdcall MSVCRT_bad_typeid_ctor(bad_typeid *_this, const char *name)
Definition: cpp.c:292
#define e
Definition: ke_i.h:82
smooth NULL
Definition: ftsmooth.c:416
#define __TRY
Definition: compat.h:70
void WINAPI _CxxThrowException(exception *object, const cxx_exception_type *type)
Definition: cppexcept.c:557
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_ctor(__non_rtti_object *_this, const char *name)
Definition: cpp.c:382
static const cxx_exception_type __non_rtti_object_exception_type
Definition: cpp.c:988
#define __ENDTRY
Definition: compat.h:72
int ret
const type_info * type_descriptor
Definition: cpp.c:58
static const cxx_exception_type bad_typeid_exception_type
Definition: cpp.c:980
static const rtti_object_locator * get_obj_locator(void *cppobj)
Definition: cpp.c:99
#define __EXCEPT_PAGE_FAULT
Definition: compat.h:71

◆ MSVCRT__set_se_translator()

_se_translator_function CDECL MSVCRT__set_se_translator ( _se_translator_function  func)

Definition at line 1058 of file cpp.c.

1059 {
1061  _se_translator_function previous = data->se_translator;
1062  TRACE("(%p) returning %p\n",func,previous);
1063  data->se_translator = func;
1064  return previous;
1065 }
GLenum func
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
void(* _se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info)
Definition: eh.h:44
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31

◆ MSVCRT_bad_cast_copy_ctor()

bad_cast* __stdcall MSVCRT_bad_cast_copy_ctor ( bad_cast *  _this,
const bad_cast *  rhs 
)

Definition at line 465 of file cpp.c.

466 {
467  TRACE("(%p %p)\n", _this, rhs);
468  MSVCRT_exception_copy_ctor(_this, rhs);
469  _this->vtable = &MSVCRT_bad_cast_vtable;
470  return _this;
471 }
const vtable_ptr MSVCRT_bad_cast_vtable
#define TRACE(s)
Definition: solgame.cpp:4
exception __stdcall MSVCRT_exception_copy_ctor(exception *_this, const exception *rhs)
Definition: cpp.c:175

◆ MSVCRT_bad_cast_ctor()

bad_cast* __stdcall MSVCRT_bad_cast_ctor ( bad_cast *  _this,
const char **  name 
)

Definition at line 453 of file cpp.c.

454 {
455  TRACE("(%p %s)\n", _this, *name);
456  EXCEPTION_ctor(_this, name);
457  _this->vtable = &MSVCRT_bad_cast_vtable;
458  return _this;
459 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
const vtable_ptr MSVCRT_bad_cast_vtable
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:38

Referenced by MSVCRT___RTDynamicCast().

◆ MSVCRT_bad_cast_ctor_charptr()

bad_cast* __stdcall MSVCRT_bad_cast_ctor_charptr ( bad_cast *  _this,
const char name 
)

Definition at line 477 of file cpp.c.

478 {
479  TRACE("(%p %s)\n", _this, name);
480  EXCEPTION_ctor(_this, &name);
481  _this->vtable = &MSVCRT_bad_cast_vtable;
482  return _this;
483 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
const vtable_ptr MSVCRT_bad_cast_vtable
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:38

Referenced by MSVCRT_bad_cast_default_ctor().

◆ MSVCRT_bad_cast_default_ctor()

bad_cast* __stdcall MSVCRT_bad_cast_default_ctor ( bad_cast *  _this)

Definition at line 489 of file cpp.c.

490 {
491  return MSVCRT_bad_cast_ctor_charptr( _this, "bad cast" );
492 }
bad_cast *__stdcall MSVCRT_bad_cast_ctor_charptr(bad_cast *_this, const char *name)
Definition: cpp.c:477

◆ MSVCRT_bad_cast_dtor()

void __stdcall MSVCRT_bad_cast_dtor ( bad_cast *  _this)

Definition at line 498 of file cpp.c.

499 {
500  TRACE("(%p)\n", _this);
501  MSVCRT_exception_dtor(_this);
502 }
#define TRACE(s)
Definition: solgame.cpp:4
void __stdcall MSVCRT_exception_dtor(exception *_this)
Definition: cpp.c:208

Referenced by MSVCRT_bad_cast_scalar_dtor(), and MSVCRT_bad_cast_vector_dtor().

◆ MSVCRT_bad_cast_opequals()

bad_cast* __stdcall MSVCRT_bad_cast_opequals ( bad_cast *  _this,
const bad_cast *  rhs 
)

Definition at line 508 of file cpp.c.

509 {
510  TRACE("(%p %p)\n", _this, rhs);
511  MSVCRT_exception_opequals(_this, rhs);
512  return _this;
513 }
exception __stdcall MSVCRT_exception_opequals(exception *_this, const exception *rhs)
Definition: cpp.c:219
#define TRACE(s)
Definition: solgame.cpp:4

◆ MSVCRT_bad_cast_scalar_dtor()

void* __stdcall MSVCRT_bad_cast_scalar_dtor ( bad_cast *  _this,
unsigned int  flags 
)

Definition at line 542 of file cpp.c.

543 {
544  TRACE("(%p %x)\n", _this, flags);
545  MSVCRT_bad_cast_dtor(_this);
546  if (flags & 1) MSVCRT_operator_delete(_this);
547  return _this;
548 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
#define TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
void __stdcall MSVCRT_bad_cast_dtor(bad_cast *_this)
Definition: cpp.c:498

◆ MSVCRT_bad_cast_vector_dtor()

void* __stdcall MSVCRT_bad_cast_vector_dtor ( bad_cast *  _this,
unsigned int  flags 
)

Definition at line 519 of file cpp.c.

520 {
521  TRACE("(%p %x)\n", _this, flags);
522  if (flags & 2)
523  {
524  /* we have an array, with the number of elements stored before the first object */
525  int i, *ptr = (int *)_this - 1;
526 
527  for (i = *ptr - 1; i >= 0; i--) MSVCRT_bad_cast_dtor(_this + i);
529  }
530  else
531  {
532  MSVCRT_bad_cast_dtor(_this);
533  if (flags & 1) MSVCRT_operator_delete(_this);
534  }
535  return _this;
536 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
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 TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
void __stdcall MSVCRT_bad_cast_dtor(bad_cast *_this)
Definition: cpp.c:498

◆ MSVCRT_bad_typeid_copy_ctor()

bad_typeid* __stdcall MSVCRT_bad_typeid_copy_ctor ( bad_typeid *  _this,
const bad_typeid *  rhs 
)

Definition at line 280 of file cpp.c.

281 {
282  TRACE("(%p %p)\n", _this, rhs);
283  MSVCRT_exception_copy_ctor(_this, rhs);
284  _this->vtable = &MSVCRT_bad_typeid_vtable;
285  return _this;
286 }
const vtable_ptr MSVCRT_bad_typeid_vtable
#define TRACE(s)
Definition: solgame.cpp:4
exception __stdcall MSVCRT_exception_copy_ctor(exception *_this, const exception *rhs)
Definition: cpp.c:175

Referenced by MSVCRT___non_rtti_object_copy_ctor().

◆ MSVCRT_bad_typeid_ctor()

bad_typeid* __stdcall MSVCRT_bad_typeid_ctor ( bad_typeid *  _this,
const char name 
)

Definition at line 292 of file cpp.c.

293 {
294  TRACE("(%p %s)\n", _this, name);
295  EXCEPTION_ctor(_this, &name);
296  _this->vtable = &MSVCRT_bad_typeid_vtable;
297  return _this;
298 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
const vtable_ptr MSVCRT_bad_typeid_vtable
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:38

Referenced by MSVCRT___RTtypeid(), and MSVCRT_bad_typeid_default_ctor().

◆ MSVCRT_bad_typeid_default_ctor()

bad_typeid* __stdcall MSVCRT_bad_typeid_default_ctor ( bad_typeid *  _this)

Definition at line 304 of file cpp.c.

305 {
306  return MSVCRT_bad_typeid_ctor( _this, "bad typeid" );
307 }
bad_typeid *__stdcall MSVCRT_bad_typeid_ctor(bad_typeid *_this, const char *name)
Definition: cpp.c:292

◆ MSVCRT_bad_typeid_dtor()

void __stdcall MSVCRT_bad_typeid_dtor ( bad_typeid *  _this)

Definition at line 313 of file cpp.c.

314 {
315  TRACE("(%p)\n", _this);
316  MSVCRT_exception_dtor(_this);
317 }
#define TRACE(s)
Definition: solgame.cpp:4
void __stdcall MSVCRT_exception_dtor(exception *_this)
Definition: cpp.c:208

Referenced by MSVCRT___non_rtti_object_dtor(), MSVCRT_bad_typeid_scalar_dtor(), and MSVCRT_bad_typeid_vector_dtor().

◆ MSVCRT_bad_typeid_opequals()

bad_typeid* __stdcall MSVCRT_bad_typeid_opequals ( bad_typeid *  _this,
const bad_typeid *  rhs 
)

Definition at line 323 of file cpp.c.

324 {
325  TRACE("(%p %p)\n", _this, rhs);
326  MSVCRT_exception_opequals(_this, rhs);
327  return _this;
328 }
exception __stdcall MSVCRT_exception_opequals(exception *_this, const exception *rhs)
Definition: cpp.c:219
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by MSVCRT___non_rtti_object_opequals().

◆ MSVCRT_bad_typeid_scalar_dtor()

void* __stdcall MSVCRT_bad_typeid_scalar_dtor ( bad_typeid *  _this,
unsigned int  flags 
)

Definition at line 357 of file cpp.c.

358 {
359  TRACE("(%p %x)\n", _this, flags);
360  MSVCRT_bad_typeid_dtor(_this);
361  if (flags & 1) MSVCRT_operator_delete(_this);
362  return _this;
363 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
#define TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
void __stdcall MSVCRT_bad_typeid_dtor(bad_typeid *_this)
Definition: cpp.c:313

◆ MSVCRT_bad_typeid_vector_dtor()

void* __stdcall MSVCRT_bad_typeid_vector_dtor ( bad_typeid *  _this,
unsigned int  flags 
)

Definition at line 334 of file cpp.c.

335 {
336  TRACE("(%p %x)\n", _this, flags);
337  if (flags & 2)
338  {
339  /* we have an array, with the number of elements stored before the first object */
340  int i, *ptr = (int *)_this - 1;
341 
342  for (i = *ptr - 1; i >= 0; i--) MSVCRT_bad_typeid_dtor(_this + i);
344  }
345  else
346  {
347  MSVCRT_bad_typeid_dtor(_this);
348  if (flags & 1) MSVCRT_operator_delete(_this);
349  }
350  return _this;
351 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
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 TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
void __stdcall MSVCRT_bad_typeid_dtor(bad_typeid *_this)
Definition: cpp.c:313

◆ MSVCRT_exception_copy_ctor()

exception __stdcall MSVCRT_exception_copy_ctor ( exception _this,
const exception rhs 
)

Definition at line 175 of file cpp.c.

176 {
177  TRACE("(%p,%p)\n", _this, rhs);
178 
179  if (!rhs->do_free)
180  {
182  _this->name = rhs->name;
183  _this->do_free = FALSE;
184  }
185  else
186  EXCEPTION_ctor(_this, (const char**)&rhs->name);
187  TRACE("name = %s\n", _this->name);
188  return _this;
189 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
const vtable_ptr MSVCRT_exception_vtable
#define TRACE(s)
Definition: solgame.cpp:4
char * name
Definition: cpp.c:28
int do_free
Definition: cpp.c:29
vtable_ptr * vtable
Definition: cpp.c:27

Referenced by MSVCRT_bad_cast_copy_ctor(), MSVCRT_bad_typeid_copy_ctor(), and MSVCRT_exception_opequals().

◆ MSVCRT_exception_ctor()

exception __stdcall MSVCRT_exception_ctor ( exception _this,
const char **  name 
)

Definition at line 151 of file cpp.c.

152 {
153  TRACE("(%p,%s)\n", _this, *name);
154  EXCEPTION_ctor(_this, name);
155  return _this;
156 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:38

◆ MSVCRT_exception_ctor_noalloc()

exception __stdcall MSVCRT_exception_ctor_noalloc ( exception _this,
char **  name,
int  noalloc 
)

Definition at line 162 of file cpp.c.

163 {
164  TRACE("(%p,%s)\n", _this, *name);
166  _this->name = *name;
167  _this->do_free = FALSE;
168  return _this;
169 }
const vtable_ptr MSVCRT_exception_vtable
#define TRACE(s)
Definition: solgame.cpp:4
char * name
Definition: cpp.c:28
int do_free
Definition: cpp.c:29
Definition: name.c:38
vtable_ptr * vtable
Definition: cpp.c:27
GLuint const GLchar * name
Definition: glext.h:6031

◆ MSVCRT_exception_default_ctor()

exception __stdcall MSVCRT_exception_default_ctor ( exception _this)

Definition at line 195 of file cpp.c.

196 {
197  static const char* empty = NULL;
198 
199  TRACE("(%p)\n", _this);
200  EXCEPTION_ctor(_this, &empty);
201  return _this;
202 }
static void EXCEPTION_ctor(exception *_this, const char **name)
Definition: cpp.c:130
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
BOOL empty
Definition: button.c:170

◆ MSVCRT_exception_dtor()

void __stdcall MSVCRT_exception_dtor ( exception _this)

Definition at line 208 of file cpp.c.

209 {
210  TRACE("(%p)\n", _this);
212  if (_this->do_free) MSVCRT_free(_this->name);
213 }
void __cdecl MSVCRT_free(void *)
const vtable_ptr MSVCRT_exception_vtable
#define TRACE(s)
Definition: solgame.cpp:4
char * name
Definition: cpp.c:28
int do_free
Definition: cpp.c:29
vtable_ptr * vtable
Definition: cpp.c:27

Referenced by MSVCRT_bad_cast_dtor(), MSVCRT_bad_typeid_dtor(), MSVCRT_exception_opequals(), MSVCRT_exception_scalar_dtor(), and MSVCRT_exception_vector_dtor().

◆ MSVCRT_exception_opequals()

exception __stdcall MSVCRT_exception_opequals ( exception _this,
const exception rhs 
)

Definition at line 219 of file cpp.c.

220 {
221  TRACE("(%p %p)\n", _this, rhs);
222  if (_this != rhs)
223  {
224  MSVCRT_exception_dtor(_this);
225  MSVCRT_exception_copy_ctor(_this, rhs);
226  }
227  TRACE("name = %s\n", _this->name);
228  return _this;
229 }
#define TRACE(s)
Definition: solgame.cpp:4
exception __stdcall MSVCRT_exception_copy_ctor(exception *_this, const exception *rhs)
Definition: cpp.c:175
void __stdcall MSVCRT_exception_dtor(exception *_this)
Definition: cpp.c:208
char * name
Definition: cpp.c:28

Referenced by MSVCRT_bad_cast_opequals(), and MSVCRT_bad_typeid_opequals().

◆ MSVCRT_exception_scalar_dtor()

void* __stdcall MSVCRT_exception_scalar_dtor ( exception _this,
unsigned int  flags 
)

Definition at line 258 of file cpp.c.

259 {
260  TRACE("(%p %x)\n", _this, flags);
261  MSVCRT_exception_dtor(_this);
262  if (flags & 1) MSVCRT_operator_delete(_this);
263  return _this;
264 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
#define TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
void __stdcall MSVCRT_exception_dtor(exception *_this)
Definition: cpp.c:208

◆ MSVCRT_exception_vector_dtor()

void* __stdcall MSVCRT_exception_vector_dtor ( exception _this,
unsigned int  flags 
)

Definition at line 235 of file cpp.c.

236 {
237  TRACE("(%p %x)\n", _this, flags);
238  if (flags & 2)
239  {
240  /* we have an array, with the number of elements stored before the first object */
241  int i, *ptr = (int *)_this - 1;
242 
243  for (i = *ptr - 1; i >= 0; i--) MSVCRT_exception_dtor(_this + i);
245  }
246  else
247  {
248  MSVCRT_exception_dtor(_this);
249  if (flags & 1) MSVCRT_operator_delete(_this);
250  }
251  return _this;
252 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
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 TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
void __stdcall MSVCRT_exception_dtor(exception *_this)
Definition: cpp.c:208

◆ MSVCRT_set_terminate()

terminate_function CDECL MSVCRT_set_terminate ( terminate_function  func)

Definition at line 1008 of file cpp.c.

1009 {
1011  terminate_function previous = data->terminate_handler;
1012  TRACE("(%p) returning %p\n",func,previous);
1013  data->terminate_handler = func;
1014  return previous;
1015 }
GLenum func
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
void(__cdecl * terminate_function)(void)
Definition: eh.h:19
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31

◆ MSVCRT_set_unexpected()

unexpected_function CDECL MSVCRT_set_unexpected ( unexpected_function  func)

Definition at line 1037 of file cpp.c.

1038 {
1040  unexpected_function previous = data->unexpected_handler;
1041  TRACE("(%p) returning %p\n",func,previous);
1042  data->unexpected_handler = func;
1043  return previous;
1044 }
GLenum func
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
void(__cdecl * unexpected_function)(void)
Definition: eh.h:21
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31

◆ MSVCRT_terminate()

void CDECL MSVCRT_terminate ( void  )

Definition at line 1080 of file cpp.c.

1081 {
1083  if (data->terminate_handler) data->terminate_handler();
1084  abort();
1085 }
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31
#define abort()
Definition: i386-dis.c:35

Referenced by MSVCRT_unexpected().

◆ MSVCRT_type_info_before()

int __stdcall MSVCRT_type_info_before ( type_info _this,
const type_info rhs 
)

Definition at line 576 of file cpp.c.

577 {
578  int ret = strcmp(_this->mangled + 1, rhs->mangled + 1) < 0;
579  TRACE("(%p %p) returning %d\n", _this, rhs, ret);
580  return ret;
581 }
char mangled[16]
Definition: cpp.c:36
#define TRACE(s)
Definition: solgame.cpp:4
int ret
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469

◆ MSVCRT_type_info_dtor()

void __stdcall MSVCRT_type_info_dtor ( type_info _this)

Definition at line 587 of file cpp.c.

588 {
589  TRACE("(%p)\n", _this);
590  MSVCRT_free(_this->name);
591 }
void __cdecl MSVCRT_free(void *)
char * name
Definition: cpp.c:35
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by MSVCRT_type_info_vector_dtor().

◆ MSVCRT_type_info_name()

const char* __stdcall MSVCRT_type_info_name ( type_info _this)

Definition at line 597 of file cpp.c.

598 {
599  if (!_this->name)
600  {
601  /* Create and set the demangled name */
602  /* Note: mangled name in type_info struct always starts with a '.', while
603  * it isn't valid for mangled name.
604  * Is this '.' really part of the mangled name, or has it some other meaning ?
605  */
606  char* name = __unDName(0, _this->mangled + 1, 0,
608  if (name)
609  {
610  size_t len = strlen(name);
611 
612  /* It seems _unDName may leave blanks at the end of the demangled name */
613  while (len && name[--len] == ' ')
614  name[len] = '\0';
615 
616  if (InterlockedCompareExchangePointer((void**)&_this->name, name, NULL))
617  {
618  /* Another thread set this member since we checked above - use it */
619  MSVCRT_free(name);
620  }
621  }
622  }
623  TRACE("(%p) returning %s\n", _this, _this->name);
624  return _this->name;
625 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char *__cdecl __unDName(char *, const char *, int, malloc_func_t, free_func_t, unsigned short int)
Definition: undname.c:1645
void __cdecl MSVCRT_free(void *)
char mangled[16]
Definition: cpp.c:36
char * name
Definition: cpp.c:35
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define UNDNAME_NO_ARGUMENTS
Definition: dbghelp.h:1250
GLenum GLsizei len
Definition: glext.h:6722
#define UNDNAME_32_BIT_DECODE
Definition: dbghelp.h:1248
Definition: name.c:38
void *__cdecl MSVCRT_malloc(MSVCRT_size_t)

◆ MSVCRT_type_info_opequals_equals()

int __stdcall MSVCRT_type_info_opequals_equals ( type_info _this,
const type_info rhs 
)

Definition at line 554 of file cpp.c.

555 {
556  int ret = !strcmp(_this->mangled + 1, rhs->mangled + 1);
557  TRACE("(%p %p) returning %d\n", _this, rhs, ret);
558  return ret;
559 }
char mangled[16]
Definition: cpp.c:36
#define TRACE(s)
Definition: solgame.cpp:4
int ret
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469

◆ MSVCRT_type_info_opnot_equals()

int __stdcall MSVCRT_type_info_opnot_equals ( type_info _this,
const type_info rhs 
)

Definition at line 565 of file cpp.c.

566 {
567  int ret = !!strcmp(_this->mangled + 1, rhs->mangled + 1);
568  TRACE("(%p %p) returning %d\n", _this, rhs, ret);
569  return ret;
570 }
char mangled[16]
Definition: cpp.c:36
#define TRACE(s)
Definition: solgame.cpp:4
int ret
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469

◆ MSVCRT_type_info_raw_name()

const char* __stdcall MSVCRT_type_info_raw_name ( type_info _this)

Definition at line 631 of file cpp.c.

632 {
633  TRACE("(%p) returning %s\n", _this, _this->mangled);
634  return _this->mangled;
635 }
char mangled[16]
Definition: cpp.c:36
#define TRACE(s)
Definition: solgame.cpp:4

◆ MSVCRT_type_info_vector_dtor()

void* __stdcall MSVCRT_type_info_vector_dtor ( type_info _this,
unsigned int  flags 
)

Definition at line 639 of file cpp.c.

640 {
641  TRACE("(%p %x)\n", _this, flags);
642  if (flags & 2)
643  {
644  /* we have an array, with the number of elements stored before the first object */
645  int i, *ptr = (int *)_this - 1;
646 
647  for (i = *ptr - 1; i >= 0; i--) MSVCRT_type_info_dtor(_this + i);
649  }
650  else
651  {
652  MSVCRT_type_info_dtor(_this);
653  if (flags & 1) MSVCRT_operator_delete(_this);
654  }
655  return _this;
656 }
void __cdecl MSVCRT_operator_delete(void *)
Definition: heap.c:91
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 TRACE(s)
Definition: solgame.cpp:4
void __stdcall MSVCRT_type_info_dtor(type_info *_this)
Definition: cpp.c:587
GLbitfield flags
Definition: glext.h:7161

◆ MSVCRT_unexpected()

void CDECL MSVCRT_unexpected ( void  )

Definition at line 1090 of file cpp.c.

1091 {
1093  if (data->unexpected_handler) data->unexpected_handler();
1094  MSVCRT_terminate();
1095 }
void CDECL MSVCRT_terminate(void)
Definition: cpp.c:1080
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
thread_data_t * msvcrt_get_thread_data(void)
Definition: tls.c:31

◆ MSVCRT_what_exception()

const char* __stdcall MSVCRT_what_exception ( exception _this)

Definition at line 270 of file cpp.c.

271 {
272  TRACE("(%p) returning %s\n", _this, _this->name);
273  return _this->name ? _this->name : "Unknown exception";
274 }
#define TRACE(s)
Definition: solgame.cpp:4
char * name
Definition: cpp.c:28

Variable Documentation

◆ __non_rtti_object_cxx_type_info

const cxx_type_info __non_rtti_object_cxx_type_info
static
Initial value:
=
{
0,
{ 0, -1, 0 },
sizeof(exception),
}
#define THISCALL(func)
Definition: cpp.c:81
__non_rtti_object *__stdcall MSVCRT___non_rtti_object_copy_ctor(__non_rtti_object *_this, const __non_rtti_object *rhs)
Definition: cpp.c:369
struct __exception exception
static const type_info __non_rtti_object_type_info
Definition: cpp.c:858
void(* cxx_copy_ctor)(void)
Definition: cppexcept.h:49

Definition at line 899 of file cpp.c.

◆ __non_rtti_object_exception_type

const cxx_exception_type __non_rtti_object_exception_type
static
Initial value:
=
{
0,
}
void __stdcall MSVCRT___non_rtti_object_dtor(__non_rtti_object *_this)
Definition: cpp.c:395
#define THISCALL(func)
Definition: cpp.c:81
smooth NULL
Definition: ftsmooth.c:416
static const cxx_type_info_table bad_typeid_type_info_table
Definition: cpp.c:970

Definition at line 988 of file cpp.c.

Referenced by MSVCRT___RTCastToVoid(), MSVCRT___RTDynamicCast(), and MSVCRT___RTtypeid().

◆ __non_rtti_object_rtti

const rtti_object_locator __non_rtti_object_rtti
Initial value:
=
{
0,
0,
0,
}
static const rtti_object_hierarchy __non_rtti_object_type_hierarchy
Definition: cpp.c:882
static const type_info __non_rtti_object_type_info
Definition: cpp.c:858

Definition at line 890 of file cpp.c.

◆ __non_rtti_object_rtti_base_array

const rtti_base_array __non_rtti_object_rtti_base_array
static
Initial value:
=
{
{
}
}
static const rtti_base_descriptor __non_rtti_object_rtti_base_descriptor
Definition: cpp.c:865
static const rtti_base_descriptor bad_typeid_rtti_base_descriptor
Definition: cpp.c:765
static const rtti_base_descriptor exception_rtti_base_descriptor
Definition: cpp.c:715

Definition at line 873 of file cpp.c.

◆ __non_rtti_object_rtti_base_descriptor

const rtti_base_descriptor __non_rtti_object_rtti_base_descriptor
static
Initial value:
=
{
2,
{ 0, -1, 0 },
0
}
static const type_info __non_rtti_object_type_info
Definition: cpp.c:858

Definition at line 865 of file cpp.c.

◆ __non_rtti_object_type_hierarchy

const rtti_object_hierarchy __non_rtti_object_type_hierarchy
static
Initial value:
=
{
0,
0,
3,
}
static const rtti_base_array __non_rtti_object_rtti_base_array
Definition: cpp.c:873

Definition at line 882 of file cpp.c.

◆ __non_rtti_object_type_info

const type_info __non_rtti_object_type_info
static
Initial value:
=
{
".?AV__non_rtti_object@@"
}
smooth NULL
Definition: ftsmooth.c:416
const vtable_ptr MSVCRT_type_info_vtable

Definition at line 858 of file cpp.c.

◆ bad_cast_cxx_type_info

const cxx_type_info bad_cast_cxx_type_info
static
Initial value:
=
{
0,
{ 0, -1, 0 },
sizeof(exception),
}
#define THISCALL(func)
Definition: cpp.c:81
bad_cast *__stdcall MSVCRT_bad_cast_copy_ctor(bad_cast *_this, const bad_cast *rhs)
Definition: cpp.c:465
static const type_info bad_cast_type_info
Definition: cpp.c:808
struct __exception exception
void(* cxx_copy_ctor)(void)
Definition: cppexcept.h:49

Definition at line 849 of file cpp.c.

◆ bad_cast_exception_type

const cxx_exception_type bad_cast_exception_type
static
Initial value:
=
{
0,
}
static const cxx_type_info_table bad_cast_type_info_table
Definition: cpp.c:952
#define THISCALL(func)
Definition: cpp.c:81
smooth NULL
Definition: ftsmooth.c:416
void __stdcall MSVCRT_bad_cast_dtor(bad_cast *_this)
Definition: cpp.c:498

Definition at line 962 of file cpp.c.

Referenced by MSVCRT___RTDynamicCast().

◆ bad_cast_rtti

const rtti_object_locator bad_cast_rtti
Initial value:
=
{
0,
0,
0,
}
static const rtti_object_hierarchy bad_cast_type_hierarchy
Definition: cpp.c:832
static const type_info bad_cast_type_info
Definition: cpp.c:808

Definition at line 840 of file cpp.c.

◆ bad_cast_rtti_base_array

const rtti_base_array bad_cast_rtti_base_array
static
Initial value:
=
{
{
}
}
smooth NULL
Definition: ftsmooth.c:416
static const rtti_base_descriptor bad_cast_rtti_base_descriptor
Definition: cpp.c:815
static const rtti_base_descriptor exception_rtti_base_descriptor
Definition: cpp.c:715

Definition at line 823 of file cpp.c.

◆ bad_cast_rtti_base_descriptor

const rtti_base_descriptor bad_cast_rtti_base_descriptor
static
Initial value:
=
{
1,
{ 0, -1, 0 },
0
}
static const type_info bad_cast_type_info
Definition: cpp.c:808

Definition at line 815 of file cpp.c.

◆ bad_cast_type_hierarchy

const rtti_object_hierarchy bad_cast_type_hierarchy
static
Initial value:
=
{
0,
0,
2,
}
static const rtti_base_array bad_cast_rtti_base_array
Definition: cpp.c:823

Definition at line 832 of file cpp.c.

◆ bad_cast_type_info

const type_info bad_cast_type_info
static
Initial value:
=
{
".?AVbad_cast@@"
}
smooth NULL
Definition: ftsmooth.c:416
const vtable_ptr MSVCRT_type_info_vtable

Definition at line 808 of file cpp.c.

◆ bad_cast_type_info_table

const cxx_type_info_table bad_cast_type_info_table
static
Initial value:
=
{
3,
{
}
}
static const cxx_type_info bad_typeid_cxx_type_info
Definition: cpp.c:799
static const cxx_type_info __non_rtti_object_cxx_type_info
Definition: cpp.c:899
static const cxx_type_info exception_cxx_type_info
Definition: cpp.c:749

Definition at line 952 of file cpp.c.

◆ bad_typeid_cxx_type_info

const cxx_type_info bad_typeid_cxx_type_info
static
Initial value:
=
{
0,
{ 0, -1, 0 },
sizeof(exception),
}
#define THISCALL(func)
Definition: cpp.c:81
static const type_info bad_typeid_type_info
Definition: cpp.c:758
struct __exception exception
void(* cxx_copy_ctor)(void)
Definition: cppexcept.h:49
bad_typeid *__stdcall MSVCRT_bad_typeid_copy_ctor(bad_typeid *_this, const bad_typeid *rhs)
Definition: cpp.c:280

Definition at line 799 of file cpp.c.

◆ bad_typeid_exception_type

const cxx_exception_type bad_typeid_exception_type
static
Initial value:
=
{
0,
}
static const cxx_type_info_table bad_cast_type_info_table
Definition: cpp.c:952
#define THISCALL(func)
Definition: cpp.c:81
smooth NULL
Definition: ftsmooth.c:416
void __stdcall MSVCRT_bad_typeid_dtor(bad_typeid *_this)
Definition: cpp.c:313

Definition at line 980 of file cpp.c.

Referenced by MSVCRT___RTtypeid().

◆ bad_typeid_rtti

const rtti_object_locator bad_typeid_rtti
Initial value:
=
{
0,
0,
0,
}
static const type_info bad_typeid_type_info
Definition: cpp.c:758
static const rtti_object_hierarchy bad_typeid_type_hierarchy
Definition: cpp.c:782

Definition at line 790 of file cpp.c.

◆ bad_typeid_rtti_base_array

const rtti_base_array bad_typeid_rtti_base_array
static
Initial value:
=
{
{
}
}
smooth NULL
Definition: ftsmooth.c:416
static const rtti_base_descriptor bad_typeid_rtti_base_descriptor
Definition: cpp.c:765
static const rtti_base_descriptor exception_rtti_base_descriptor
Definition: cpp.c:715

Definition at line 773 of file cpp.c.

◆ bad_typeid_rtti_base_descriptor

const rtti_base_descriptor bad_typeid_rtti_base_descriptor
static
Initial value:
=
{
1,
{ 0, -1, 0 },
0
}
static const type_info bad_typeid_type_info
Definition: cpp.c:758

Definition at line 765 of file cpp.c.

◆ bad_typeid_type_hierarchy

const rtti_object_hierarchy bad_typeid_type_hierarchy
static
Initial value:
=
{
0,
0,
2,
}
static const rtti_base_array bad_typeid_rtti_base_array
Definition: cpp.c:773

Definition at line 782 of file cpp.c.

◆ bad_typeid_type_info

const type_info bad_typeid_type_info
static
Initial value:
=
{
".?AVbad_typeid@@"
}
smooth NULL
Definition: ftsmooth.c:416
const vtable_ptr MSVCRT_type_info_vtable

Definition at line 758 of file cpp.c.

◆ bad_typeid_type_info_table

const cxx_type_info_table bad_typeid_type_info_table
static
Initial value:
=
{
2,
{
}
}
smooth NULL
Definition: ftsmooth.c:416
static const cxx_type_info bad_cast_cxx_type_info
Definition: cpp.c:849
static const cxx_type_info exception_cxx_type_info
Definition: cpp.c:749

Definition at line 970 of file cpp.c.

◆ exception_cxx_type_info

const cxx_type_info exception_cxx_type_info
static
Initial value:
=
{
0,
{ 0, -1, 0 },
sizeof(exception),
}
#define THISCALL(func)
Definition: cpp.c:81
exception __stdcall MSVCRT_exception_copy_ctor(exception *_this, const exception *rhs)
Definition: cpp.c:175
struct __exception exception
void(* cxx_copy_ctor)(void)
Definition: cppexcept.h:49
static const type_info exception_type_info
Definition: cpp.c:708

Definition at line 749 of file cpp.c.

◆ exception_rtti

const rtti_object_locator exception_rtti
Initial value:
=
{
0,
0,
0,
}
static const rtti_object_hierarchy exception_type_hierarchy
Definition: cpp.c:732
static const type_info exception_type_info
Definition: cpp.c:708

Definition at line 740 of file cpp.c.

◆ exception_rtti_base_array

const rtti_base_array exception_rtti_base_array
static
Initial value:
=
{
{
}
}
smooth NULL
Definition: ftsmooth.c:416
static const rtti_base_descriptor exception_rtti_base_descriptor
Definition: cpp.c:715

Definition at line 723 of file cpp.c.

◆ exception_rtti_base_descriptor

const rtti_base_descriptor exception_rtti_base_descriptor
static
Initial value:
=
{
0,
{ 0, -1, 0 },
0
}
static const type_info exception_type_info
Definition: cpp.c:708

Definition at line 715 of file cpp.c.

◆ exception_type_hierarchy

const rtti_object_hierarchy exception_type_hierarchy
static
Initial value:
=
{
0,
0,
1,
}
static const rtti_base_array exception_rtti_base_array
Definition: cpp.c:723

Definition at line 732 of file cpp.c.

◆ exception_type_info

const type_info exception_type_info
static
Initial value:
=
{
".?AVexception@@"
}
smooth NULL
Definition: ftsmooth.c:416
const vtable_ptr MSVCRT_type_info_vtable

Definition at line 708 of file cpp.c.

◆ MSVCRT___non_rtti_object_vtable

const vtable_ptr MSVCRT___non_rtti_object_vtable

◆ MSVCRT_bad_cast_vtable

◆ MSVCRT_bad_typeid_vtable

const vtable_ptr MSVCRT_bad_typeid_vtable

◆ MSVCRT_exception_vtable

◆ MSVCRT_type_info_vtable

const vtable_ptr MSVCRT_type_info_vtable

◆ type_info_rtti

const rtti_object_locator type_info_rtti
Initial value:
=
{
0,
0,
0,
}
static const type_info type_info_type_info
Definition: cpp.c:908
static const rtti_object_hierarchy type_info_type_hierarchy
Definition: cpp.c:932

Definition at line 940 of file cpp.c.

◆ type_info_rtti_base_array

const rtti_base_array type_info_rtti_base_array
static
Initial value:
=
{
{
}
}
static const rtti_base_descriptor type_info_rtti_base_descriptor
Definition: cpp.c:915
smooth NULL
Definition: ftsmooth.c:416

Definition at line 923 of file cpp.c.

◆ type_info_rtti_base_descriptor

const rtti_base_descriptor type_info_rtti_base_descriptor
static
Initial value:
=
{
0,
{ 0, -1, 0 },
0
}
static const type_info type_info_type_info
Definition: cpp.c:908

Definition at line 915 of file cpp.c.

◆ type_info_type_hierarchy

const rtti_object_hierarchy type_info_type_hierarchy
static
Initial value:
=
{
0,
0,
1,
}
static const rtti_base_array type_info_rtti_base_array
Definition: cpp.c:923

Definition at line 932 of file cpp.c.

◆ type_info_type_info

const type_info type_info_type_info
static
Initial value:
=
{
".?AVtype_info@@"
}
smooth NULL
Definition: ftsmooth.c:416
const vtable_ptr MSVCRT_type_info_vtable

Definition at line 908 of file cpp.c.