Commit 6bb9f200 authored by Alexandre Julliard's avatar Alexandre Julliard

msvcrt: Use macros to define RTTI data.

parent efd693c5
...@@ -709,46 +709,48 @@ __ASM_EXCEPTION_VTABLE(__non_rtti_object) ...@@ -709,46 +709,48 @@ __ASM_EXCEPTION_VTABLE(__non_rtti_object)
/* Static RTTI for exported objects */ /* Static RTTI for exported objects */
static const type_info exception_type_info = #define DEFINE_RTTI_DATA(name, base_classes, cl1, cl2, mangled_name) \
{ static const type_info name ## _type_info = { \
&MSVCRT_type_info_vtable, &MSVCRT_type_info_vtable, \
NULL, NULL, \
".?AVexception@@" mangled_name \
}; }; \
\
static const rtti_base_descriptor exception_rtti_base_descriptor = static const rtti_base_descriptor name ## _rtti_base_descriptor = { \
{ &name ##_type_info, \
&exception_type_info, base_classes, \
0, { 0, -1, 0}, \
{ 0, -1, 0 }, 0 \
0 }; \
}; \
static const rtti_base_array name ## _rtti_base_array = { \
static const rtti_base_array exception_rtti_base_array = { \
{ &name ## _rtti_base_descriptor, \
{ cl1, \
&exception_rtti_base_descriptor, cl2 \
NULL, } \
NULL }; \
} \
}; static const rtti_object_hierarchy name ## _hierarchy = { \
0, \
static const rtti_object_hierarchy exception_type_hierarchy = 0, \
{ base_classes+1, \
0, &name ## _rtti_base_array \
0, }; \
1, \
&exception_rtti_base_array const rtti_object_locator name ## _rtti = { \
}; 0, \
0, \
0, \
&name ## _type_info, \
&name ## _hierarchy \
}
const rtti_object_locator exception_rtti = DEFINE_RTTI_DATA( type_info, 0, NULL, NULL, ".?AVtype_info@@" );
{ DEFINE_RTTI_DATA( exception, 0, NULL, NULL, ".?AVexception@@" );
0, DEFINE_RTTI_DATA( bad_typeid, 1, &exception_rtti_base_descriptor, NULL, ".?AVbad_typeid@@" );
0, DEFINE_RTTI_DATA( bad_cast, 1, &exception_rtti_base_descriptor, NULL, ".?AVbad_cast@@" );
0, DEFINE_RTTI_DATA( __non_rtti_object, 2, &bad_typeid_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AV__non_rtti_object@@" );
&exception_type_info,
&exception_type_hierarchy
};
static const cxx_type_info exception_cxx_type_info = static const cxx_type_info exception_cxx_type_info =
{ {
...@@ -759,47 +761,6 @@ static const cxx_type_info exception_cxx_type_info = ...@@ -759,47 +761,6 @@ static const cxx_type_info exception_cxx_type_info =
(cxx_copy_ctor)THISCALL(MSVCRT_exception_copy_ctor) (cxx_copy_ctor)THISCALL(MSVCRT_exception_copy_ctor)
}; };
static const type_info bad_typeid_type_info =
{
&MSVCRT_type_info_vtable,
NULL,
".?AVbad_typeid@@"
};
static const rtti_base_descriptor bad_typeid_rtti_base_descriptor =
{
&bad_typeid_type_info,
1,
{ 0, -1, 0 },
0
};
static const rtti_base_array bad_typeid_rtti_base_array =
{
{
&bad_typeid_rtti_base_descriptor,
&exception_rtti_base_descriptor,
NULL
}
};
static const rtti_object_hierarchy bad_typeid_type_hierarchy =
{
0,
0,
2,
&bad_typeid_rtti_base_array
};
const rtti_object_locator bad_typeid_rtti =
{
0,
0,
0,
&bad_typeid_type_info,
&bad_typeid_type_hierarchy
};
static const cxx_type_info bad_typeid_cxx_type_info = static const cxx_type_info bad_typeid_cxx_type_info =
{ {
0, 0,
...@@ -809,47 +770,6 @@ static const cxx_type_info bad_typeid_cxx_type_info = ...@@ -809,47 +770,6 @@ static const cxx_type_info bad_typeid_cxx_type_info =
(cxx_copy_ctor)THISCALL(MSVCRT_bad_typeid_copy_ctor) (cxx_copy_ctor)THISCALL(MSVCRT_bad_typeid_copy_ctor)
}; };
static const type_info bad_cast_type_info =
{
&MSVCRT_type_info_vtable,
NULL,
".?AVbad_cast@@"
};
static const rtti_base_descriptor bad_cast_rtti_base_descriptor =
{
&bad_cast_type_info,
1,
{ 0, -1, 0 },
0
};
static const rtti_base_array bad_cast_rtti_base_array =
{
{
&bad_cast_rtti_base_descriptor,
&exception_rtti_base_descriptor,
NULL
}
};
static const rtti_object_hierarchy bad_cast_type_hierarchy =
{
0,
0,
2,
&bad_cast_rtti_base_array
};
const rtti_object_locator bad_cast_rtti =
{
0,
0,
0,
&bad_cast_type_info,
&bad_cast_type_hierarchy
};
static const cxx_type_info bad_cast_cxx_type_info = static const cxx_type_info bad_cast_cxx_type_info =
{ {
0, 0,
...@@ -859,47 +779,6 @@ static const cxx_type_info bad_cast_cxx_type_info = ...@@ -859,47 +779,6 @@ static const cxx_type_info bad_cast_cxx_type_info =
(cxx_copy_ctor)THISCALL(MSVCRT_bad_cast_copy_ctor) (cxx_copy_ctor)THISCALL(MSVCRT_bad_cast_copy_ctor)
}; };
static const type_info __non_rtti_object_type_info =
{
&MSVCRT_type_info_vtable,
NULL,
".?AV__non_rtti_object@@"
};
static const rtti_base_descriptor __non_rtti_object_rtti_base_descriptor =
{
&__non_rtti_object_type_info,
2,
{ 0, -1, 0 },
0
};
static const rtti_base_array __non_rtti_object_rtti_base_array =
{
{
&__non_rtti_object_rtti_base_descriptor,
&bad_typeid_rtti_base_descriptor,
&exception_rtti_base_descriptor
}
};
static const rtti_object_hierarchy __non_rtti_object_type_hierarchy =
{
0,
0,
3,
&__non_rtti_object_rtti_base_array
};
const rtti_object_locator __non_rtti_object_rtti =
{
0,
0,
0,
&__non_rtti_object_type_info,
&__non_rtti_object_type_hierarchy
};
static const cxx_type_info __non_rtti_object_cxx_type_info = static const cxx_type_info __non_rtti_object_cxx_type_info =
{ {
0, 0,
...@@ -909,47 +788,6 @@ static const cxx_type_info __non_rtti_object_cxx_type_info = ...@@ -909,47 +788,6 @@ static const cxx_type_info __non_rtti_object_cxx_type_info =
(cxx_copy_ctor)THISCALL(MSVCRT___non_rtti_object_copy_ctor) (cxx_copy_ctor)THISCALL(MSVCRT___non_rtti_object_copy_ctor)
}; };
static const type_info type_info_type_info =
{
&MSVCRT_type_info_vtable,
NULL,
".?AVtype_info@@"
};
static const rtti_base_descriptor type_info_rtti_base_descriptor =
{
&type_info_type_info,
0,
{ 0, -1, 0 },
0
};
static const rtti_base_array type_info_rtti_base_array =
{
{
&type_info_rtti_base_descriptor,
NULL,
NULL
}
};
static const rtti_object_hierarchy type_info_type_hierarchy =
{
0,
0,
1,
&type_info_rtti_base_array
};
const rtti_object_locator type_info_rtti =
{
0,
0,
0,
&type_info_type_info,
&type_info_type_hierarchy
};
/* /*
* Exception RTTI for cpp objects * Exception RTTI for cpp objects
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment