Sfoglia il codice sorgente

+ basic rtl support for variant <-> interface implemented

florian 20 anni fa
parent
commit
13c5439bb1
2 ha cambiato i file con 25 aggiunte e 4 eliminazioni
  1. 6 1
      rtl/inc/compproc.inc
  2. 19 3
      rtl/inc/variant.inc

+ 6 - 1
rtl/inc/compproc.inc

@@ -208,6 +208,8 @@ Procedure fpc_Write_Text_WideChar(Len : Longint;var t : Text;c : WideChar); comp
 procedure fpc_write_text_variant(Len : Longint;var f : Text;const v : variant); compilerproc;
 function fpc_variant_to_dynarray(const v : variant;typeinfo : pointer) : pointer;compilerproc;
 function fpc_dynarray_to_variant(dynarr : pointer;typeinfo : pointer) : variant;compilerproc;
+function fpc_variant_to_interface(const v : variant) : iinterface;compilerproc;
+function fpc_interface_to_variant(const i : iinterface) : variant;compilerproc;
 {$endif HASVARIANT}
 
 Procedure fpc_Read_End(var f:Text); compilerproc;
@@ -356,7 +358,10 @@ function fpc_qword_to_double(q: qword): double; compilerproc;
 
 {
   $Log$
-  Revision 1.63  2005-01-06 13:39:59  florian
+  Revision 1.64  2005-01-07 21:15:46  florian
+    + basic rtl support for variant <-> interface implemented
+
+  Revision 1.63  2005/01/06 13:39:59  florian
     * widecharray patch from Peter
 
   Revision 1.62  2004/12/05 11:49:06  florian

+ 19 - 3
rtl/inc/variant.inc

@@ -66,7 +66,7 @@ Begin
         variantmanager.write0variant(f,v)
       else
         variantmanager.writevariant(f,v,len);
-    fmInput: 
+    fmInput:
       InOutRes:=105
     else InOutRes:=103;
   end;
@@ -77,13 +77,26 @@ function fpc_variant_to_dynarray(const v : variant;typeinfo : pointer) : pointer
   begin
     variantmanager.vartodynarray(result,v,typeinfo);
   end;
-  
+
 
 function fpc_dynarray_to_variant(dynarr : pointer;typeinfo : pointer) : variant;compilerproc;
   begin
     variantmanager.varfromdynarray(result,dynarr,typeinfo);
   end;
 
+
+function fpc_variant_to_interface(const v : variant) : iinterface;compilerproc;
+  begin
+  	variantmanager.vartointf(result,v);
+  end;
+
+
+function fpc_interface_to_variant(const i : iinterface) : variant;compilerproc;
+  begin
+  	variantmanager.varfromintf(result,i);
+  end;
+
+
 { ---------------------------------------------------------------------
     Overloaded operators.
   ---------------------------------------------------------------------}
@@ -603,7 +616,10 @@ procedure initvariantmanager;
 
 {
   $Log$
-  Revision 1.19  2004-12-05 11:49:06  florian
+  Revision 1.20  2005-01-07 21:15:46  florian
+    + basic rtl support for variant <-> interface implemented
+
+  Revision 1.19  2004/12/05 11:49:06  florian
     * implemented helper for variant<->dyn. array type cast
 
   Revision 1.18  2004/08/18 21:03:35  florian