msvcp90: Add helpers for creating base class RTTI.
Suggested by Piotr Caban.
Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit f3f948a5a3
)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
This commit is contained in:
parent
1a38fd0a54
commit
95154afde7
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
#ifndef __x86_64__
|
#ifndef __x86_64__
|
||||||
|
|
||||||
#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \
|
#define DEFINE_RTTI_BASE(name, base_classes_no, mangled_name) \
|
||||||
static type_info name ## _type_info = { \
|
static type_info name ## _type_info = { \
|
||||||
&MSVCP_type_info_vtable, \
|
&MSVCP_type_info_vtable, \
|
||||||
NULL, \
|
NULL, \
|
||||||
|
@ -58,7 +58,10 @@ static const rtti_base_descriptor name ## _rtti_base_descriptor = { \
|
||||||
base_classes_no, \
|
base_classes_no, \
|
||||||
{ 0, -1, 0}, \
|
{ 0, -1, 0}, \
|
||||||
64 \
|
64 \
|
||||||
}; \
|
};
|
||||||
|
|
||||||
|
#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \
|
||||||
|
DEFINE_RTTI_BASE(name, base_classes_no, mangled_name) \
|
||||||
\
|
\
|
||||||
static const rtti_base_array name ## _rtti_base_array = { \
|
static const rtti_base_array name ## _rtti_base_array = { \
|
||||||
{ \
|
{ \
|
||||||
|
@ -122,7 +125,7 @@ static const cxx_exception_type type ## _cxx_type = { \
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \
|
#define __DEFINE_RTTI_BASE(name, base_classes_no, mangled_name) \
|
||||||
static type_info name ## _type_info = { \
|
static type_info name ## _type_info = { \
|
||||||
&MSVCP_type_info_vtable, \
|
&MSVCP_type_info_vtable, \
|
||||||
NULL, \
|
NULL, \
|
||||||
|
@ -134,7 +137,18 @@ static rtti_base_descriptor name ## _rtti_base_descriptor = { \
|
||||||
base_classes_no, \
|
base_classes_no, \
|
||||||
{ 0, -1, 0}, \
|
{ 0, -1, 0}, \
|
||||||
64 \
|
64 \
|
||||||
}; \
|
};
|
||||||
|
|
||||||
|
#define DEFINE_RTTI_BASE(name, base_classes_no, mangled_name) \
|
||||||
|
__DEFINE_RTTI_BASE(name, base_classes_no, mangled_name) \
|
||||||
|
\
|
||||||
|
static void init_ ## name ## _rtti(char *base) \
|
||||||
|
{ \
|
||||||
|
name ## _rtti_base_descriptor.type_descriptor = (char*)&name ## _type_info - base; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \
|
||||||
|
__DEFINE_RTTI_BASE(name, base_classes_no, mangled_name) \
|
||||||
\
|
\
|
||||||
static rtti_base_array name ## _rtti_base_array = { \
|
static rtti_base_array name ## _rtti_base_array = { \
|
||||||
{ \
|
{ \
|
||||||
|
|
Loading…
Reference in New Issue