TObject = class public constructor Create; procedure Free; procedure DisposeOf; { $IFNDEF AUTOREFCOUNT} inline; { $ENDIF} class function InitInstance(Instance: Pointer): TObject { $IFDEF AUTOREFCOUNT} unsafe { $ENDIF}; procedure CleanupInstance; function ClassType: TClass; inline; class function ClassName: string; class function ClassNameIs(const Name: string): Boolean; class function ClassParent: TClass; class function ClassInfo: Pointer; inline; class function InstanceSize: Integer; inline; class function InheritsFrom(AClass: TClass): Boolean; class function MethodAddress(const Name: _ShortStr): Pointer; overload; class function MethodAddress(const Name: string): Pointer; overload; class function MethodName(Address: Pointer): string; class function QualifiedClassName: string; function FieldAddress(const Name: _ShortStr): Pointer; overload; function FieldAddress(const Name: string): Pointer; overload; function GetInterface(const IID: TGUID; out Obj): Boolean; class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry; class function GetInterfaceTable: PInterfaceTable; inline; class function UnitName: string; class function UnitScope: string;{ $IFDEF AUTOREFCOUNT} function __ObjAddRef: Integer; virtual; function __ObjRelease: Integer; virtual;{ $ENDIF} function Equals(Obj: TObject): Boolean; virtual; function GetHashCode: Integer; virtual; function ToString: string; virtual; function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; virtual; procedure AfterConstruction; virtual; procedure BeforeDestruction; virtual; procedure Dispatch(var Message); virtual; procedure DefaultHandler(var Message); virtual; class function NewInstance: TObject { $IFDEF AUTOREFCOUNT} unsafe { $ENDIF}; virtual; procedure FreeInstance; virtual;{ $IFDEF AUTOREFCOUNT} protected{ $ENDIF} destructor Destroy; virtual;{ $IFDEF CPP_ABI_SUPPORT} procedure CPP_ABI_1; virtual; procedure CPP_ABI_2; virtual; procedure CPP_ABI_3; virtual;{ $ENDIF !CPP_ABI_SUPPORT} protected function GetDisposed: Boolean; inline; procedure CheckDisposed; { $IFNDEF AUTOREFCOUNT} inline; { $ENDIF}{ $IFDEF AUTOREFCOUNT} private const objDestroyingFlag = Integer($80000000); objDisposedFlag = Integer($40000000); protected [Volatile] FRefCount: Integer; class procedure __MarkDestroying(const Obj); static; inline; class function __SetDisposed(const Obj): Boolean; static; inline; public property RefCount: Integer read FRefCount;{ $ENDIF AUTOREFCOUNT} property Disposed: Boolean read GetDisposed; end;