Browse Source

+ more olevariant type cast wrappers

git-svn-id: trunk@1168 -
florian 20 years ago
parent
commit
372141e19d
2 changed files with 162 additions and 53 deletions
  1. 157 47
      rtl/inc/variant.inc
  2. 5 6
      rtl/inc/varianth.inc

+ 157 - 47
rtl/inc/variant.inc

@@ -16,7 +16,7 @@
 
 var
    variantmanager : tvariantmanager;
-   
+
 procedure printmissingvariantunit;
   begin
     writeln(stderr);
@@ -25,8 +25,8 @@ procedure printmissingvariantunit;
     writeln(stderr,'as one of the first units.');
     writeln(stderr);
   end;
-  
-  
+
+
 procedure invalidvariantop;
   begin
      printmissingvariantunit;
@@ -39,8 +39,8 @@ procedure invalidvariantopnovariants;
     printmissingvariantunit;
     HandleErrorFrame(221,get_frame);
   end;
-  
-  
+
+
 procedure vardisperror;
   begin
     printmissingvariantunit;
@@ -486,8 +486,8 @@ operator :=(const source : olevariant) dest : variant;{$ifdef SYSTEMINLINE}inlin
   begin
     tvardata(result):=tvardata(source);
   end;
-  
-    
+
+
 operator :=(const source : variant) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromvar(dest,source);
@@ -628,49 +628,159 @@ operator :=(const source : olevariant) dest : byte;{$ifdef SYSTEMINLINE}inline;{
       endless recursion }
     dest:=variantmanager.vartoint(variant(tvardata(source)));
   end;
-  
-    
+
+
 operator :=(const source : olevariant) dest : shortint;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoint(variant(tvardata(source)));
   end;
-  
-    
+
+
 operator :=(const source : olevariant) dest : word;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoint(variant(tvardata(source)));
   end;
-  
-    
+
+
 operator :=(const source : olevariant) dest : smallint;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoint(variant(tvardata(source)));
   end;
-  
-    
+
+
 operator :=(const source : olevariant) dest : dword;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoint(variant(tvardata(source)));
   end;
-  
-    
+
+
 operator :=(const source : olevariant) dest : longint;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoint(variant(tvardata(source)));
   end;
-  
-    
+
+
 operator :=(const source : olevariant) dest : qword;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoint64(variant(tvardata(source)));
   end;
-  
+
 
 operator :=(const source : olevariant) dest : int64;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     dest:=variantmanager.vartoword64(variant(tvardata(source)));
   end;
-    
+
+
+{ Boolean }
+operator :=(const source : olevariant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartobool(variant(tvardata(source)));
+  end;
+
+
+operator :=(const source : olevariant) dest : wordbool;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartobool(variant(tvardata(source)));
+  end;
+
+
+operator :=(const source : olevariant) dest : longbool;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartobool(variant(tvardata(source)));
+  end;
+
+
+{ Chars }
+operator :=(const source : olevariant) dest : char;{$ifdef SYSTEMINLINE}inline;{$endif}
+  var
+    S : String;
+  begin
+    VariantManager.VarToPStr(S,Source);
+    If Length(S)>0 then
+      Dest:=S[1]
+    else
+      Dest:=#0;
+  end;
+
+
+operator :=(const source : olevariant) dest : widechar;{$ifdef SYSTEMINLINE}inline;{$endif}
+  Var
+    WS : WideString;
+  begin
+    VariantManager.VarToWStr(WS,Source);
+    If Length(WS)>0 then
+      Dest:=WS[1]
+    else
+      Dest:=#0;
+  end;
+
+
+{ Strings }
+operator :=(const source : olevariant) dest : shortstring;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    variantmanager.vartopstr(dest,variant(tvardata(source)));
+  end;
+
+
+operator :=(const source : olevariant) dest : ansistring;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    variantmanager.vartolstr(dest,variant(tvardata(source)));
+  end;
+
+
+operator :=(const source : olevariant) dest : widestring;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    variantmanager.vartowstr(dest,variant(tvardata(source)));
+  end;
+
+
+{ Floats }
+{$ifdef SUPPORT_SINGLE}
+operator :=(const source : olevariant) dest : single;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartoreal(variant(tvardata(source)));
+  end;
+{$endif SUPPORT_SINGLE}
+
+
+{$ifdef SUPPORT_DOUBLE}
+operator :=(const source : olevariant) dest : double;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartoreal(variant(tvardata(source)));
+  end;
+{$endif SUPPORT_DOUBLE}
+
+
+{$ifdef SUPPORT_EXTENDED}
+operator :=(const source : olevariant) dest : extended;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartoreal(variant(tvardata(source)));
+  end;
+{$endif SUPPORT_EXTENDED}
+
+
+{$ifdef SUPPORT_COMP}
+operator :=(const source : olevariant) dest : comp;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartoreal(variant(tvardata(source)));
+  end;
+
+{$endif SUPPORT_COMP}
+
+{ Misc. }
+operator :=(const source : olevariant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartocurr(variant(tvardata(source)));
+  end;
+
+
+operator :=(const source : olevariant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    dest:=variantmanager.vartotdatetime(variant(tvardata(source)));
+  end;
+
+
 {**********************************************************************
                           to OLEVariant assignments
  **********************************************************************}
@@ -679,62 +789,62 @@ operator :=(const source : byte) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : shortint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : word) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : smallint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : dword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : longint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : qword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
-  
+
+
 operator :=(const source : int64) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromint(dest,source,1);
   end;
-  
+
 { Boolean }
 operator :=(const source : boolean) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.varfromBool(variant(tvardata(dest)),Source);
    end;
 
-    
+
 operator :=(const source : wordbool) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.varfromBool(variant(tvardata(Dest)),Source);
    end;
 
-    
+
 operator :=(const source : longbool) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.varfromBool(variant(tvardata(Dest)),Source);
@@ -746,32 +856,32 @@ operator :=(const source : char) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{
   begin
     variantmanager.olevarfrompstr(dest,source);
   end;
-  
-  
+
+
 operator :=(const source : widechar) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.varfromwstr(variant(tvardata(dest)),source);
   end;
-  
-  
+
+
 { Strings }
 operator :=(const source : shortstring) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfrompstr(dest,source);
   end;
-  
-  
+
+
 operator :=(const source : ansistring) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.olevarfromlstr(dest,source);
   end;
-  
-  
+
+
 operator :=(const source : widestring) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
     variantmanager.varfromwstr(variant(tvardata(dest)),source);
   end;
-  
+
 
 {**********************************************************************
                       Variant manager functions

+ 5 - 6
rtl/inc/varianth.inc

@@ -286,7 +286,7 @@ operator :=(const source : variant) dest : double;{$ifdef SYSTEMINLINE}inline;{$
 {$ifdef SUPPORT_EXTENDED}
 operator :=(const source : variant) dest : extended;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_EXTENDED}
-{$ifdef SUPPORT_EXTENDED}
+{$ifdef SUPPORT_COMP}
 operator :=(const source : variant) dest : comp;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_COMP}
 
@@ -328,7 +328,7 @@ procedure VarCast(var dest : variant;const source : variant;vartype : longint);
 {**********************************************************************
                         from OLEVariant assignments
  **********************************************************************}
- 
+
 { Integer }
 operator :=(const source : olevariant) dest : byte;{$ifdef SYSTEMINLINE}inline;{$endif}
 operator :=(const source : olevariant) dest : shortint;{$ifdef SYSTEMINLINE}inline;{$endif}
@@ -339,7 +339,6 @@ operator :=(const source : olevariant) dest : longint;{$ifdef SYSTEMINLINE}inlin
 operator :=(const source : olevariant) dest : qword;{$ifdef SYSTEMINLINE}inline;{$endif}
 operator :=(const source : olevariant) dest : int64;{$ifdef SYSTEMINLINE}inline;{$endif}
 
-{
 { Boolean }
 operator :=(const source : olevariant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
 operator :=(const source : olevariant) dest : wordbool;{$ifdef SYSTEMINLINE}inline;{$endif}
@@ -364,18 +363,18 @@ operator :=(const source : olevariant) dest : double;{$ifdef SYSTEMINLINE}inline
 {$ifdef SUPPORT_EXTENDED}
 operator :=(const source : olevariant) dest : extended;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_EXTENDED}
-{$ifdef SUPPORT_EXTENDED}
+{$ifdef SUPPORT_COMP}
 operator :=(const source : olevariant) dest : comp;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_COMP}
 
 { Misc. }
 operator :=(const source : olevariant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
 operator :=(const source : olevariant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
-}
+
 {**********************************************************************
                          to OLEVariant assignments
  **********************************************************************}
- 
+
 { Integer }
 operator :=(const source : byte) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
 operator :=(const source : shortint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}