Skip to content

Commit 36c76a3

Browse files
committed
fix: rtti
1 parent af24f04 commit 36c76a3

1 file changed

Lines changed: 19 additions & 31 deletions

File tree

include/REX/W32/RTTI.h

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace REX::W32
88

99
struct RTTIClassHierarchyDescriptor;
1010

11-
struct RTTIBaseClassDescriptor2
11+
struct RTTIBaseClassDescriptor
1212
{
1313
enum class Attribute : std::uint32_t
1414
{
@@ -29,22 +29,16 @@ namespace REX::W32
2929
std::int32_t pDisp; // 0x04
3030
std::int32_t vDisp; // 0x08
3131
};
32-
static_assert(sizeof(PMD) == 0xC);
32+
static_assert(sizeof(PMD) == 0x0C);
3333

3434
// members
35-
RTTITypeDescriptor* typeDescriptor; // 0x00
36-
std::uint32_t numContainedBases; // 0x08
37-
PMD where; // 0x0C
38-
TEnumSet<Attribute> attributes; // 0x18
39-
const RTTIClassHierarchyDescriptor* classDescriptor; // 0x1C
35+
std::uint32_t typeDescriptor; // 0x00
36+
std::uint32_t numContainedBases; // 0x04
37+
PMD where; // 0x08
38+
TEnumSet<Attribute> attributes; // 0x14
39+
std::uint32_t classDescriptor; // 0x18
4040
};
41-
static_assert(sizeof(RTTIBaseClassDescriptor2) == 0x28);
42-
43-
struct RTTIBaseClassArray
44-
{
45-
const RTTIBaseClassDescriptor2* arrayOfBaseClassDescriptors[];
46-
};
47-
static_assert(sizeof(RTTIBaseClassArray) == 0x8);
41+
static_assert(sizeof(RTTIBaseClassDescriptor) == 0x1C);
4842

4943
struct RTTIClassHierarchyDescriptor
5044
{
@@ -57,28 +51,22 @@ namespace REX::W32
5751
};
5852

5953
// members
60-
std::uint32_t signature; // 0x00
61-
TEnumSet<Attribute> attributes; // 0x04
62-
std::uint32_t numBaseClasses; // 0x08
63-
const RTTIBaseClassDescriptor2* baseClassArray; // 0x10
54+
std::uint32_t signature; // 0x00
55+
TEnumSet<Attribute> attributes; // 0x04
56+
std::uint32_t numBaseClasses; // 0x08
57+
std::uint32_t baseClassArray; // 0x0C
6458
};
65-
static_assert(sizeof(RTTIClassHierarchyDescriptor) == 0x18);
59+
static_assert(sizeof(RTTIClassHierarchyDescriptor) == 0x10);
6660

6761
struct RTTICompleteObjectLocator
6862
{
69-
enum class Signature : std::uint32_t
70-
{
71-
x86 = 0,
72-
x64 = 1
73-
};
74-
7563
// members
76-
Signature signature; // 0x00
64+
std::uint32_t signature; // 0x00
7765
std::uint32_t offset; // 0x04
78-
std::uint32_t ctorDispOffset; // 0x08
79-
RTTITypeDescriptor* typeDescriptor; // 0x10
80-
const RTTIClassHierarchyDescriptor* classDescriptor; // 0x18
81-
const RTTICompleteObjectLocator* self; // 0x20
66+
std::uint32_t cdOffset; // 0x08
67+
std::uint32_t typeDescriptor; // 0x0C
68+
std::uint32_t classDescriptor; // 0x10
69+
std::uint32_t self; // 0x14
8270
};
83-
static_assert(sizeof(RTTICompleteObjectLocator) == 0x28);
71+
static_assert(sizeof(RTTICompleteObjectLocator) == 0x18);
8472
}

0 commit comments

Comments
 (0)