Expand description
§RTTI Structure Overview
ASCII art representing the RTTI (Run-Time Type Information) structure in C++.
- C++ src: https://godbolt.org/z/xn5f96E9s
- AA ref: https://www.openrce.org/articles/full_view/23
+------------------+
+-------------+ | A::RTTI Complete |
+---------+ | A::vftable | | Object Locator |
| class A | |-------------| |------------------|
|---------| | &A_meta |->| signature (0) | +-------------------------+ +-------------------------------+
| _vfptr |->| &A::A_virt1 | | offset (0) | | A::RTTI Type Descriptor | | A::RTTI Base Class Descriptor |
| a1 | | &A::A_virt2 | | cdOffset (0) | |-------------------------| |-------------------------------|
+---------+ +-------------+ | pTypeDescriptor |-------->| pVFTable |-->| pTypeDescriptor |<-------+
| pClassDescriptor |---+ | spare | | numContainedBases (0) | |
+------------------+ | | name (?AVA@@) | | PMD where (0, -1, 0) | |
| +-------------------------+ | attributes (0) | |
| +-------------------------------+ |
| +------------------------------------+ |
| | A::RTTI Class Hierarchy Descriptor | |
| |------------------------------------| |
+---->| signature (0) | +--------------------------+ |
| attributes (0) | | A::RTTI Base Class Array | |
| numBaseClasses (1) | |--------------------------| |
| pBaseClassArray |-->| &A_BCD |--+
+------------------------------------+ +--------------------------+
+------------------+
+-------------+ | B::RTTI Complete |
+---------+ | B::vftable | | Object Locator |
| class B | |-------------| |------------------|
|---------| | &B_meta |->| signature (0) | +-------------------------+ +-------------------------------+
| _vfptr |->| &B::B_virt1 | | offset (0) | | B::RTTI Type Descriptor | | B::RTTI Base Class Descriptor |
| b1 | | &B::B_virt2 | | cdOffset (0) | |-------------------------| |-------------------------------|
| b2 | +-------------+ | pTypeDescriptor |-------->| pVFTable |-->| pTypeDescriptor |<-------+
+---------+ | pClassDescriptor |---+ | spare | | numContainedBases (0) | |
+------------------+ | | name (?AVA@@) | | PMD where (0, -1, 0) | |
| +-------------------------+ | attributes (0) | |
| +-------------------------------+ |
| +------------------------------------+ |
| | B::RTTI Class Hierarchy Descriptor | |
| |------------------------------------| |
+---->| signature (0) | +--------------------------+ |
| attributes (0) | | B::RTTI Base Class Array | |
| numBaseClasses (1) | |--------------------------| |
| pBaseClassArray |-->| &B_BCD |--+
+------------------------------------+ +--------------------------+
+----------------------+
+------------------+ | C::RTTI Complete |
+----------+ | C::vftable for A | | Object Locator for A |
| class C | |------------------| |----------------------|
|----------| | &C_meta_A |--->| signature (0) | +-------------------------+ +-------------------------------+
| _vfptr_A |--> | &C::A_virt1 | | offset (0) | | C::RTTI Type Descriptor | | C::RTTI Base Class Descriptor |
| a1 | | &C::A_virt2 | | cdOffset (0) | |-------------------------| |-------------------------------|
| _vfptr_B |-+ +------------------+ | pTypeDescriptor |----->| pVFTable |-->| pTypeDescriptor |
| b1 | | | pClassDescriptor |--+ | spare | | numContainedBases (2) |
| b2 | | +----------------------+ | | name (?AVC@@) | | PMD where (8, -1, 0) |
| c1 | | +----------------------+ | +-------------------------+ | attributes (0) |
+----------+ | +------------------+ | C::RTTI Complete | | +-------------------------------+
| | C::vftable for B | | Object Locator for B | |
| |------------------| |----------------------| |
+-> | &C_meta_A |-->| signature (0) | |
| &C::A_virt1 | | offset (8) | | +----------------------+
| &C::A_virt2 | | cdOffset (0) | | | C::RTTI Class |
+------------------+ | pTypeDescriptor | | | Hierarchy Descriptor |
| pClassDescriptor | | |----------------------|
+----------------------+ +->| signature (0) | +------------------------------------+
| attributes (1) | | C::RTTI Base Class Array |
| numBaseClasses (3) | |------------------------------------|
| pBaseClassArray |->| &C_BCD -> C::RTTI Base Class Desc. |
+----------------------+ | &A_BCD -> A::RTTI Base Class Desc. |
| &B_BCD -> B::RTTI Base Class Desc. |
+------------------------------------+
Modules§
Structs§
Enums§
Functions§
- rt_
dynamic_ ⚠cast - RTTI Dynamic Cast function
- skyrim_
cast ⚠ - Safety