msvcp90: Use macro to define RTTI data.
This commit is contained in:
parent
5761bb5d7d
commit
9c65376dcf
|
@ -209,41 +209,7 @@ const char* __thiscall MSVCP_what_exception(exception * this)
|
||||||
return this->name ? this->name : "Unknown exception";
|
return this->name ? this->name : "Unknown exception";
|
||||||
}
|
}
|
||||||
|
|
||||||
static const type_info bad_alloc_type_info = {
|
DEFINE_RTTI_DATA(bad_alloc, 0, 1, &exception_rtti_base_descriptor, NULL, NULL, ".?AVbad_alloc@std@@");
|
||||||
&MSVCP_bad_alloc_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVbad_alloc@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor bad_alloc_rtti_base_descriptor = {
|
|
||||||
&bad_alloc_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array bad_alloc_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&bad_alloc_rtti_base_descriptor,
|
|
||||||
&exception_rtti_base_descriptor,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy bad_alloc_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&bad_alloc_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator bad_alloc_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&bad_alloc_type_info,
|
|
||||||
&bad_alloc_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const cxx_type_info bad_alloc_cxx_type_info = {
|
static const cxx_type_info bad_alloc_cxx_type_info = {
|
||||||
0,
|
0,
|
||||||
|
@ -334,41 +300,7 @@ const char* __thiscall MSVCP_logic_error_what(logic_error *this)
|
||||||
return MSVCP_basic_string_char_c_str(&this->str);
|
return MSVCP_basic_string_char_c_str(&this->str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const type_info logic_error_type_info = {
|
DEFINE_RTTI_DATA(logic_error, 0, 1, &exception_rtti_base_descriptor, NULL, NULL, ".?AVlogic_error@std@@");
|
||||||
&MSVCP_logic_error_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVlogic_error@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor logic_error_rtti_base_descriptor = {
|
|
||||||
&logic_error_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array logic_error_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&logic_error_rtti_base_descriptor,
|
|
||||||
&exception_rtti_base_descriptor,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy logic_error_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&logic_error_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator logic_error_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&logic_error_type_info,
|
|
||||||
&logic_error_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const cxx_type_info logic_error_cxx_type_info = {
|
static const cxx_type_info logic_error_cxx_type_info = {
|
||||||
0,
|
0,
|
||||||
|
@ -425,41 +357,7 @@ void* __thiscall MSVCP_length_error_vector_dtor(
|
||||||
return MSVCP_logic_error_vector_dtor(this, flags);
|
return MSVCP_logic_error_vector_dtor(this, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const type_info length_error_type_info = {
|
DEFINE_RTTI_DATA(length_error, 0, 2, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, NULL, ".?AVlength_error@std@@");
|
||||||
&MSVCP_length_error_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVlength_error@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor length_error_rtti_base_descriptor = {
|
|
||||||
&length_error_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array length_error_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&length_error_rtti_base_descriptor,
|
|
||||||
&logic_error_rtti_base_descriptor,
|
|
||||||
&exception_rtti_base_descriptor
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy length_error_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&length_error_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator length_error_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&length_error_type_info,
|
|
||||||
&length_error_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const cxx_type_info length_error_cxx_type_info = {
|
static const cxx_type_info length_error_cxx_type_info = {
|
||||||
0,
|
0,
|
||||||
|
@ -516,41 +414,7 @@ void* __thiscall MSVCP_out_of_range_vector_dtor(
|
||||||
return MSVCP_logic_error_vector_dtor(this, flags);
|
return MSVCP_logic_error_vector_dtor(this, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const type_info out_of_range_type_info = {
|
DEFINE_RTTI_DATA(out_of_range, 0, 2, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, NULL, ".?AVout_of_range@std@@");
|
||||||
&MSVCP_out_of_range_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVout_of_range@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor out_of_range_rtti_base_descriptor = {
|
|
||||||
&out_of_range_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array out_of_range_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&out_of_range_rtti_base_descriptor,
|
|
||||||
&logic_error_rtti_base_descriptor,
|
|
||||||
&exception_rtti_base_descriptor
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy out_of_range_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&out_of_range_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator out_of_range_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&out_of_range_type_info,
|
|
||||||
&out_of_range_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const cxx_type_info out_of_range_cxx_type_info = {
|
static const cxx_type_info out_of_range_cxx_type_info = {
|
||||||
0,
|
0,
|
||||||
|
@ -607,41 +471,7 @@ void* __thiscall MSVCP_invalid_argument_vector_dtor(
|
||||||
return MSVCP_logic_error_vector_dtor(this, flags);
|
return MSVCP_logic_error_vector_dtor(this, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const type_info invalid_argument_type_info = {
|
DEFINE_RTTI_DATA(invalid_argument, 0, 2, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, NULL, ".?AVinvalid_argument@std@@");
|
||||||
&MSVCP_invalid_argument_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVinvalid_argument@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor invalid_argument_rtti_base_descriptor = {
|
|
||||||
&invalid_argument_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array invalid_argument_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&invalid_argument_rtti_base_descriptor,
|
|
||||||
&logic_error_rtti_base_descriptor,
|
|
||||||
&exception_rtti_base_descriptor
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy invalid_argument_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&invalid_argument_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator invalid_argument_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&invalid_argument_type_info,
|
|
||||||
&invalid_argument_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const cxx_type_info invalid_argument_cxx_type_info = {
|
static const cxx_type_info invalid_argument_cxx_type_info = {
|
||||||
0,
|
0,
|
||||||
|
@ -725,41 +555,7 @@ void* __thiscall MSVCP_runtime_error_vector_dtor(
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const type_info runtime_error_type_info = {
|
DEFINE_RTTI_DATA(runtime_error, 0, 1, &exception_rtti_base_descriptor, NULL, NULL, ".?AVruntime_error@std@@");
|
||||||
&MSVCP_runtime_error_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVruntime_error@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor runtime_error_rtti_base_descriptor = {
|
|
||||||
&runtime_error_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array runtime_error_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&runtime_error_rtti_base_descriptor,
|
|
||||||
&exception_rtti_base_descriptor,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy runtime_error_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&runtime_error_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator runtime_error_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&runtime_error_type_info,
|
|
||||||
&runtime_error_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const cxx_type_info runtime_error_cxx_type_info = {
|
static const cxx_type_info runtime_error_cxx_type_info = {
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -154,25 +154,12 @@ extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
|
||||||
/* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
|
/* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
|
||||||
extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
|
extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
|
||||||
|
|
||||||
static const type_info ios_base_type_info = {
|
|
||||||
&MSVCP_ios_base_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AVios_base@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor ios_base_rtti_base_descriptor = {
|
|
||||||
&ios_base_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info iosb_type_info = {
|
static const type_info iosb_type_info = {
|
||||||
&MSVCP_ios_base_vtable,
|
&MSVCP_ios_base_vtable,
|
||||||
NULL,
|
NULL,
|
||||||
".?AV?$_Iosb@H@std@@"
|
".?AV?$_Iosb@H@std@@"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const rtti_base_descriptor iosb_rtti_base_descriptor = {
|
static const rtti_base_descriptor iosb_rtti_base_descriptor = {
|
||||||
&iosb_type_info,
|
&iosb_type_info,
|
||||||
0,
|
0,
|
||||||
|
@ -180,137 +167,13 @@ static const rtti_base_descriptor iosb_rtti_base_descriptor = {
|
||||||
64
|
64
|
||||||
};
|
};
|
||||||
|
|
||||||
static const rtti_base_array ios_base_rtti_base_array = {
|
DEFINE_RTTI_DATA(ios_base, 0, 1, &iosb_rtti_base_descriptor, NULL, NULL, ".?AV?$_Iosb@H@std@@");
|
||||||
{
|
DEFINE_RTTI_DATA(basic_ios_char, 0, 2, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
|
||||||
&ios_base_rtti_base_descriptor,
|
NULL, ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@");
|
||||||
&iosb_rtti_base_descriptor,
|
DEFINE_RTTI_DATA(basic_streambuf_char, 0, 0, NULL, NULL, NULL,
|
||||||
NULL
|
".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@");
|
||||||
}
|
DEFINE_RTTI_DATA(basic_ostream_char, 4, 3, &basic_ios_char_rtti_base_descriptor, &ios_base_rtti_base_descriptor,
|
||||||
};
|
&iosb_rtti_base_descriptor, ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@");
|
||||||
|
|
||||||
static const rtti_object_hierarchy ios_base_type_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&ios_base_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator ios_base_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&ios_base_type_info,
|
|
||||||
&ios_base_type_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info basic_ios_char_type_info = {
|
|
||||||
&MSVCP_basic_ios_char_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor basic_ios_char_rtti_base_descriptor = {
|
|
||||||
&basic_ios_char_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0 },
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array basic_ios_char_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&basic_ios_char_rtti_base_descriptor,
|
|
||||||
&ios_base_rtti_base_descriptor,
|
|
||||||
&iosb_rtti_base_descriptor
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy basic_ios_char_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&basic_ios_char_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator basic_ios_char_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&basic_ios_char_type_info,
|
|
||||||
&basic_ios_char_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info basic_streambuf_char_type_info = {
|
|
||||||
&MSVCP_basic_streambuf_char_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor basic_streambuf_char_rtti_base_descriptor = {
|
|
||||||
&basic_streambuf_char_type_info,
|
|
||||||
0,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array basic_streambuf_char_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&basic_streambuf_char_rtti_base_descriptor,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy basic_streambuf_char_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
&basic_streambuf_char_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator basic_streambuf_char_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&basic_streambuf_char_type_info,
|
|
||||||
&basic_streambuf_char_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info basic_ostream_char_type_info = {
|
|
||||||
&MSVCP_basic_ostream_char_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor basic_ostream_char_rtti_base_descriptor = {
|
|
||||||
&basic_ostream_char_type_info,
|
|
||||||
3,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array basic_ostream_char_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&basic_ostream_char_rtti_base_descriptor,
|
|
||||||
&basic_ios_char_rtti_base_descriptor,
|
|
||||||
&ios_base_rtti_base_descriptor,
|
|
||||||
&iosb_rtti_base_descriptor
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy basic_ostream_char_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
4,
|
|
||||||
&basic_ostream_char_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator basic_ostream_char_rtti = {
|
|
||||||
0,
|
|
||||||
4,
|
|
||||||
0,
|
|
||||||
&basic_ostream_char_type_info,
|
|
||||||
&basic_ostream_char_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifndef __GNUC__
|
#ifndef __GNUC__
|
||||||
void __asm_dummy_vtables(void) {
|
void __asm_dummy_vtables(void) {
|
||||||
|
|
|
@ -2356,264 +2356,13 @@ static const rtti_base_descriptor locale_facet_rtti_base_descriptor = {
|
||||||
64
|
64
|
||||||
};
|
};
|
||||||
|
|
||||||
static const type_info collate_char_type_info = {
|
DEFINE_RTTI_DATA(collate_char, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$collate@D@std@@");
|
||||||
&MSVCP_collate_char_vtable,
|
DEFINE_RTTI_DATA(collate_wchar, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$collate@_W@std@@");
|
||||||
NULL,
|
DEFINE_RTTI_DATA(collate_short, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$collate@G@std@@");
|
||||||
".?AV?$collate@D@std@@"
|
DEFINE_RTTI_DATA(ctype_base, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AUctype_base@std@@");
|
||||||
};
|
DEFINE_RTTI_DATA(ctype_char, 0, 2, &ctype_base_rtti_base_descriptor, &locale_facet_rtti_base_descriptor, NULL, ".?AV?$ctype@D@std@@");
|
||||||
|
DEFINE_RTTI_DATA(ctype_wchar, 0, 2, &ctype_base_rtti_base_descriptor, &locale_facet_rtti_base_descriptor, NULL, ".?AV?$ctype@_W@std@@");
|
||||||
static const rtti_base_descriptor collate_char_rtti_base_descriptor = {
|
DEFINE_RTTI_DATA(ctype_short, 0, 2, &ctype_base_rtti_base_descriptor, &locale_facet_rtti_base_descriptor, NULL, ".?AV?$ctype@G@std@@");
|
||||||
&collate_char_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array collate_char_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&collate_char_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy collate_char_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&collate_char_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator collate_char_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&collate_char_type_info,
|
|
||||||
&collate_char_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info collate_wchar_type_info = {
|
|
||||||
&MSVCP_collate_wchar_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$collate@_W@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor collate_wchar_rtti_base_descriptor = {
|
|
||||||
&collate_wchar_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array collate_wchar_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&collate_wchar_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy collate_wchar_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&collate_wchar_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator collate_wchar_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&collate_wchar_type_info,
|
|
||||||
&collate_wchar_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info collate_short_type_info = {
|
|
||||||
&MSVCP_collate_short_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$collate@G@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor collate_short_rtti_base_descriptor = {
|
|
||||||
&collate_short_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array collate_short_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&collate_short_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy collate_short_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&collate_short_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator collate_short_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&collate_short_type_info,
|
|
||||||
&collate_short_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info ctype_base_type_info = {
|
|
||||||
&MSVCP_ctype_base_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AUctype_base@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor ctype_base_rtti_base_descriptor = {
|
|
||||||
&ctype_base_type_info,
|
|
||||||
1,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array ctype_base_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&ctype_base_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy ctype_base_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
&ctype_base_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator ctype_base_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&ctype_base_type_info,
|
|
||||||
&ctype_base_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info ctype_char_type_info = {
|
|
||||||
&MSVCP_ctype_char_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$ctype@D@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor ctype_char_rtti_base_descriptor = {
|
|
||||||
&ctype_char_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array ctype_char_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&ctype_char_rtti_base_descriptor,
|
|
||||||
&ctype_base_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy ctype_char_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&ctype_char_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator ctype_char_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&ctype_char_type_info,
|
|
||||||
&ctype_char_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info ctype_wchar_type_info = {
|
|
||||||
&MSVCP_ctype_wchar_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$ctype@_W@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor ctype_wchar_rtti_base_descriptor = {
|
|
||||||
&ctype_wchar_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array ctype_wchar_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&ctype_wchar_rtti_base_descriptor,
|
|
||||||
&ctype_base_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy ctype_wchar_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&ctype_wchar_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator ctype_wchar_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&ctype_wchar_type_info,
|
|
||||||
&ctype_wchar_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
static const type_info ctype_short_type_info = {
|
|
||||||
&MSVCP_ctype_short_vtable,
|
|
||||||
NULL,
|
|
||||||
".?AV?$ctype@G@std@@"
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_descriptor ctype_short_rtti_base_descriptor = {
|
|
||||||
&ctype_short_type_info,
|
|
||||||
2,
|
|
||||||
{ 0, -1, 0},
|
|
||||||
64
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_base_array ctype_short_rtti_base_array = {
|
|
||||||
{
|
|
||||||
&ctype_short_rtti_base_descriptor,
|
|
||||||
&ctype_base_rtti_base_descriptor,
|
|
||||||
&locale_facet_rtti_base_descriptor,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const rtti_object_hierarchy ctype_short_hierarchy = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
&ctype_short_rtti_base_array
|
|
||||||
};
|
|
||||||
|
|
||||||
const rtti_object_locator ctype_short_rtti = {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
&ctype_short_type_info,
|
|
||||||
&ctype_short_hierarchy
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifndef __GNUC__
|
#ifndef __GNUC__
|
||||||
void __asm_dummy_vtables(void) {
|
void __asm_dummy_vtables(void) {
|
||||||
|
|
|
@ -92,6 +92,44 @@ extern void* (__cdecl *MSVCRT_set_new_handler)(void*);
|
||||||
|
|
||||||
#endif /* _WIN64 */
|
#endif /* _WIN64 */
|
||||||
|
|
||||||
|
#define DEFINE_RTTI_DATA(name, off, base_classes, cl1, cl2, cl3, mangled_name) \
|
||||||
|
static const type_info name ## _type_info = { \
|
||||||
|
&MSVCP_ ## name ## _vtable, \
|
||||||
|
NULL, \
|
||||||
|
mangled_name \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
static const rtti_base_descriptor name ## _rtti_base_descriptor = { \
|
||||||
|
&name ##_type_info, \
|
||||||
|
base_classes, \
|
||||||
|
{ 0, -1, 0}, \
|
||||||
|
64 \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
static const rtti_base_array name ## _rtti_base_array = { \
|
||||||
|
{ \
|
||||||
|
&name ## _rtti_base_descriptor, \
|
||||||
|
cl1, \
|
||||||
|
cl2, \
|
||||||
|
cl3 \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
static const rtti_object_hierarchy name ## _hierarchy = { \
|
||||||
|
0, \
|
||||||
|
0, \
|
||||||
|
base_classes+1, \
|
||||||
|
&name ## _rtti_base_array \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
const rtti_object_locator name ## _rtti = { \
|
||||||
|
0, \
|
||||||
|
off, \
|
||||||
|
0, \
|
||||||
|
&name ## _type_info, \
|
||||||
|
&name ## _hierarchy \
|
||||||
|
}
|
||||||
|
|
||||||
/* exception object */
|
/* exception object */
|
||||||
typedef void (*vtable_ptr)(void);
|
typedef void (*vtable_ptr)(void);
|
||||||
typedef struct __exception
|
typedef struct __exception
|
||||||
|
|
Loading…
Reference in New Issue