Skip to content

TVmt

Virtual method table layout.

Declaration

Source position: objpash.inc line 158

type
  TVmt = record
    vInstanceSize: SizeInt = Int64;
    vInstanceSize2: SizeInt = Int64;
    vParentRef: PPVmt = ^PVmt;
    vClassName: PShortString = ^ShortString;
    vDynamicTable: Pointer;
    vMethodTable: Pointer;
    vFieldTable: Pointer;
    vTypeInfo: Pointer;
    vInitTable: Pointer;
    vAutoTable: Pointer;
    vIntfTable: pinterfacetable = ^tinterfacetable;
    vMsgStrPtr: pstringmessagetable = ^TStringMessageTable;
    vDestroy: CodePointer = Pointer;
    vNewInstance: CodePointer = Pointer;
    vFreeInstance: CodePointer = Pointer;
    vSafeCallException: CodePointer = Pointer;
    vDefaultHandler: CodePointer = Pointer;
    vAfterConstruction: CodePointer = Pointer;
    vBeforeDestruction: CodePointer = Pointer;
    vDefaultHandlerStr: CodePointer = Pointer;
    vDispatch: CodePointer = Pointer;
    vDispatchStr: CodePointer = Pointer;
    vEquals: CodePointer = Pointer;
    vGetHashCode: CodePointer = Pointer;
    vToString: CodePointer = Pointer;
    property vParent: PVmt; {r}
  end;

Description

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.

See also

Name Description
PVmt Pointer to TVMT record.