Browse Source

* Add TNoRefCountObject (delphi compatibility)

Michaël Van Canneyt 2 years ago
parent
commit
b8738944ed
2 changed files with 35 additions and 0 deletions
  1. 27 0
      rtl/inc/objpas.inc
  2. 8 0
      rtl/inc/objpash.inc

+ 27 - 0
rtl/inc/objpas.inc

@@ -1165,6 +1165,33 @@
         result:=longint(E_NOINTERFACE);
         result:=longint(E_NOINTERFACE);
     end;
     end;
 
 
+{****************************************************************************
+                               TNoRefCountObject
+****************************************************************************}
+
+    function TNoRefCountObject.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 TNoRefCountObject._AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+
+      begin
+         Result:=-1;
+      end;
+
+    function TNoRefCountObject._Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+
+      begin
+         Result:=-1;
+      end;
+
+
+
 {****************************************************************************
 {****************************************************************************
                                TCustomAttribute
                                TCustomAttribute
 ****************************************************************************}
 ****************************************************************************}

+ 8 - 0
rtl/inc/objpash.inc

@@ -334,6 +334,14 @@
            function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
            function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;virtual; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
          end;
          end;
 
 
+       TNoRefCountObject =  class(TObject, IInterface)
+         protected
+           function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+           function _AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+           function _Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+       end;
+                   
+
        { some pointer definitions }
        { some pointer definitions }
        PUnknown = ^IUnknown;
        PUnknown = ^IUnknown;
        PPUnknown = ^PUnknown;
        PPUnknown = ^PUnknown;