Virtual method table layout.
Source position: objpash.inc line 140
type TVmt = record |
||
public |
||
vInstanceSize: SizeInt; |
|
Class instance size. |
vInstanceSize2: SizeInt; |
|
Duplicate of class instance size (should equal -vInstanceSize). |
vParentRef: PPVmt; |
|
Parent reference. |
vClassName: PShortString; |
|
Pointer to shortstring with classname. |
vDynamicTable: Pointer; |
|
Pointer to table with dynamic methods. |
vMethodTable: Pointer; |
|
Pointer to table with virtual methods. |
vFieldTable: Pointer; |
|
Pointer to table with field information. |
vTypeInfo: Pointer; |
|
Pointer to class type info record. |
vInitTable: Pointer; |
|
Pointer to initialization information. |
vAutoTable: Pointer; |
|
Pointer to Automation interfaces table. |
vIntfTable: pinterfacetable; |
|
Pointer to interfaces table. |
vMsgStrPtr: pstringmessagetable; |
|
Pointer to string message dispatch table. |
vDestroy: CodePointer; |
|
Pointer to destructor. |
vNewInstance: CodePointer; |
|
Pointer to NewInstance method. |
vFreeInstance: CodePointer; |
|
Pointer to FreeInstance method. |
vSafeCallException: CodePointer; |
|
? |
vDefaultHandler: CodePointer; |
|
Pointer to default message handler. |
vAfterConstruction: CodePointer; |
|
Pointer to afterconstruction method. |
vBeforeDestruction: CodePointer; |
|
Pointer to beforeconstruction method. |
vDefaultHandlerStr: CodePointer; |
|
Pointer to default string message handler. |
vDispatch: CodePointer; |
|
Dispatch method pointer. |
vDispatchStr: CodePointer; |
|
DispatchStr method pointer. |
vEquals: CodePointer; |
|
Equals method pointer. |
vGetHashCode: CodePointer; |
|
GetHashCode method pointer. |
vToString: CodePointer; |
|
ToString method pointer. |
|
Pointer to parent VMT. |
|
|
||
end; |
TVMT is a record describing the VMT of a class. It's various fields represent the available information in the VMT, as far as it is common to all classes.
|
Pointer to TVMT record. |