mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 17:47:56 +02:00

to/from ppu, because it can be required while resolving type casts (mantis #22741) git-svn-id: trunk@22266 -
49 lines
1.2 KiB
ObjectPascal
49 lines
1.2 KiB
ObjectPascal
unit uw22741b;
|
|
{$mode objfpc}
|
|
|
|
interface
|
|
|
|
type
|
|
iBase = interface
|
|
function getSelf: tObject;
|
|
end;
|
|
|
|
tInterfaceObject= class(tObject, iBase)
|
|
public
|
|
function getSelf: tObject;
|
|
function queryInterface({$IFDEF FPC_HAS_CONSTREF}constRef{$ELSE}const{$ENDIF} iid: tGuid; out obj): longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; virtual;
|
|
function _addRef: longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; virtual;
|
|
function _release: longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; virtual;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
|
|
function tInterfaceObject.getSelf: tObject;
|
|
begin
|
|
result:= self;
|
|
end;
|
|
|
|
function tInterfaceObject.queryInterface({$IFDEF FPC_HAS_CONSTREF}constRef{$ELSE}const{$ENDIF} iid: tGuid; out obj): longint; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
begin
|
|
if getInterface(iId, obj) then
|
|
result:= S_OK
|
|
else
|
|
result:= longint(E_NOINTERFACE);
|
|
end;
|
|
|
|
function tInterfaceObject._addRef: longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
begin
|
|
result:= 1;
|
|
end;
|
|
|
|
function tInterfaceObject._release: longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
begin
|
|
result:= 1;
|
|
end;
|
|
|
|
|
|
end.
|
|
|