Browse Source

* made variant operators inlined
* fixed some inline directives
+ variant<->olevariant cast operators

git-svn-id: trunk@632 -

florian 20 years ago
parent
commit
30769ea013
3 changed files with 147 additions and 138 deletions
  1. 6 10
      rtl/inc/systemh.inc
  2. 75 65
      rtl/inc/variant.inc
  3. 66 63
      rtl/inc/varianth.inc

+ 6 - 10
rtl/inc/systemh.inc

@@ -1,8 +1,8 @@
 {
 {
+    This file contains the OS independent declarations of the system unit
+    
     This file is part of the Free Pascal Run time library.
     This file is part of the Free Pascal Run time library.
-    Copyright (c) 1999-2000 by the Free Pascal development team
-
-    This File contains the OS independent declarations of the system unit
+    Copyright (c) 1999-2005 by the Free Pascal development team
 
 
     See the File COPYING.FPC, included in this distribution,
     See the File COPYING.FPC, included in this distribution,
     for details about the copyright.
     for details about the copyright.
@@ -27,12 +27,8 @@
 {$endif}
 {$endif}
 
 
 { Using inlining for small system functions/wrappers }
 { Using inlining for small system functions/wrappers }
-{$ifdef HASINLINE}
-  {$inline on}
-  {$define SYSTEMINLINE}
-{$endif}
-
-{ Use threadvars when the compiler supports it }
+{$inline on}
+{$define SYSTEMINLINE}
 
 
 { don't use FPU registervariables on the i386 }
 { don't use FPU registervariables on the i386 }
 {$ifdef CPUI386}
 {$ifdef CPUI386}
@@ -594,7 +590,7 @@ function get_caller_frame(framebp:pointer):pointer;{$ifdef SYSTEMINLINE}inline;{
 Function IOResult:Word;{$ifdef SYSTEMINLINE}inline;{$endif}
 Function IOResult:Word;{$ifdef SYSTEMINLINE}inline;{$endif}
 Function Sptr:Pointer;{$ifdef SYSTEMINLINE}inline;{$endif}[internconst:fpc_in_const_ptr];
 Function Sptr:Pointer;{$ifdef SYSTEMINLINE}inline;{$endif}[internconst:fpc_in_const_ptr];
 Function GetProcessID:SizeUInt;
 Function GetProcessID:SizeUInt;
-Function GetThreadID:TThreadID;
+Function GetThreadID:TThreadID;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 
 
 {*****************************************************************************
 {*****************************************************************************

+ 75 - 65
rtl/inc/variant.inc

@@ -149,72 +149,72 @@ function fpc_interface_to_variant(const i : iinterface) : variant;compilerproc;
 
 
 { Integer }
 { Integer }
 
 
-operator :=(const source : byte) dest : variant;
+operator :=(const source : byte) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   Variantmanager.varfromInt(Dest,Source,1);
   Variantmanager.varfromInt(Dest,Source,1);
 end;
 end;
 
 
 
 
-operator :=(const source : shortint) dest : variant;
+operator :=(const source : shortint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   Variantmanager.varfromInt(Dest,Source,-1);
   Variantmanager.varfromInt(Dest,Source,-1);
 end;
 end;
 
 
 
 
-operator :=(const source : word) dest : variant;
+operator :=(const source : word) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   Variantmanager.varfromInt(Dest,Source,2);
   Variantmanager.varfromInt(Dest,Source,2);
 end;
 end;
 
 
 
 
-operator :=(const source : smallint) dest : variant;
+operator :=(const source : smallint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   Variantmanager.varfromInt(Dest,Source,-2);
   Variantmanager.varfromInt(Dest,Source,-2);
 end;
 end;
 
 
 
 
-operator :=(const source : dword) dest : variant;
+operator :=(const source : dword) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   Variantmanager.varfromInt(Dest,Source,4);
   Variantmanager.varfromInt(Dest,Source,4);
 end;
 end;
 
 
 
 
-operator :=(const source : longint) dest : variant;
+operator :=(const source : longint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   Variantmanager.varfromInt(Dest,Source,-4);
   Variantmanager.varfromInt(Dest,Source,-4);
 end;
 end;
 
 
 
 
-operator :=(const source : qword) dest : variant;
+operator :=(const source : qword) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   Variantmanager.varfromWord64(Dest,Source);
   Variantmanager.varfromWord64(Dest,Source);
 end;
 end;
 
 
 
 
-operator :=(const source : int64) dest : variant;
+operator :=(const source : int64) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   Variantmanager.varfromInt64(Dest,Source);
   Variantmanager.varfromInt64(Dest,Source);
 end;
 end;
 
 
 { Boolean }
 { Boolean }
 
 
-operator :=(const source : boolean) dest : variant;
+operator :=(const source : boolean) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   Variantmanager.varfromBool(Dest,Source);
   Variantmanager.varfromBool(Dest,Source);
 end;
 end;
 
 
 
 
-operator :=(const source : wordbool) dest : variant;
+operator :=(const source : wordbool) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   Variantmanager.varfromBool(Dest,Boolean(Source));
   Variantmanager.varfromBool(Dest,Boolean(Source));
 end;
 end;
 
 
 
 
-operator :=(const source : longbool) dest : variant;
+operator :=(const source : longbool) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   Variantmanager.varfromBool(Dest,Boolean(Source));
   Variantmanager.varfromBool(Dest,Boolean(Source));
@@ -223,14 +223,14 @@ end;
 
 
 { Chars }
 { Chars }
 
 
-operator :=(const source : char) dest : variant;
+operator :=(const source : char) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.VarFromPStr(Dest,Source);
   VariantManager.VarFromPStr(Dest,Source);
 end;
 end;
 
 
 
 
-operator :=(const source : widechar) dest : variant;
+operator :=(const source : widechar) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.VarFromWStr(Dest,Source);
   VariantManager.VarFromWStr(Dest,Source);
@@ -238,21 +238,21 @@ end;
 
 
 { Strings }
 { Strings }
 
 
-operator :=(const source : shortstring) dest : variant;
+operator :=(const source : shortstring) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.VarFromPStr(Dest,Source);
   VariantManager.VarFromPStr(Dest,Source);
 end;
 end;
 
 
 
 
-operator :=(const source : ansistring) dest : variant;
+operator :=(const source : ansistring) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.VarFromLStr(Dest,Source);
   VariantManager.VarFromLStr(Dest,Source);
 end;
 end;
 
 
 
 
-operator :=(const source : widestring) dest : variant;
+operator :=(const source : widestring) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.VarFromWStr(Dest,Source);
   VariantManager.VarFromWStr(Dest,Source);
@@ -261,7 +261,7 @@ end;
 { Floats }
 { Floats }
 
 
 {$ifdef SUPPORT_SINGLE}
 {$ifdef SUPPORT_SINGLE}
-operator :=(const source : single) dest : variant;
+operator :=(const source : single) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   VariantManager.VarFromReal(Dest,Source);
   VariantManager.VarFromReal(Dest,Source);
 end;
 end;
@@ -269,7 +269,7 @@ end;
 
 
 
 
 {$ifdef SUPPORT_DOUBLE}
 {$ifdef SUPPORT_DOUBLE}
-operator :=(const source : double) dest : variant;
+operator :=(const source : double) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   VariantManager.VarFromReal(Dest,Source);
   VariantManager.VarFromReal(Dest,Source);
 end;
 end;
@@ -277,7 +277,7 @@ end;
 
 
 
 
 {$ifdef SUPPORT_EXTENDED}
 {$ifdef SUPPORT_EXTENDED}
-operator :=(const source : extended) dest : variant;
+operator :=(const source : extended) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   VariantManager.VarFromReal(Dest,Source);
   VariantManager.VarFromReal(Dest,Source);
 end;
 end;
@@ -285,7 +285,7 @@ end;
 
 
 
 
 {$ifdef SUPPORT_COMP}
 {$ifdef SUPPORT_COMP}
-Operator :=(const source : comp) dest : variant;
+Operator :=(const source : comp) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   VariantManager.VarFromReal(Dest,Source);
   VariantManager.VarFromReal(Dest,Source);
 end;
 end;
@@ -293,13 +293,13 @@ end;
 
 
 
 
 { Misc. }
 { Misc. }
-operator :=(const source : currency) dest : variant;
+operator :=(const source : currency) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
     VariantManager.VarFromCurr(Dest,Source);
     VariantManager.VarFromCurr(Dest,Source);
   end;
   end;
 
 
 
 
-operator :=(const source : tdatetime) dest : variant;
+operator :=(const source : tdatetime) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
     VariantManager.VarFromTDateTime(Dest,Source);
     VariantManager.VarFromTDateTime(Dest,Source);
   end;
   end;
@@ -310,56 +310,56 @@ operator :=(const source : tdatetime) dest : variant;
 
 
 { Integer }
 { Integer }
 
 
-operator :=(const source : variant) dest : byte;
+operator :=(const source : variant) dest : byte;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint(source);
   dest:=variantmanager.vartoint(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : shortint;
+operator :=(const source : variant) dest : shortint;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint(source);
   dest:=variantmanager.vartoint(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : word;
+operator :=(const source : variant) dest : word;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint(source);
   dest:=variantmanager.vartoint(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : smallint;
+operator :=(const source : variant) dest : smallint;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint(source);
   dest:=variantmanager.vartoint(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : dword;
+operator :=(const source : variant) dest : dword;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint(source);
   dest:=variantmanager.vartoint(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : longint;
+operator :=(const source : variant) dest : longint;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint(source);
   dest:=variantmanager.vartoint(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : qword;
+operator :=(const source : variant) dest : qword;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoword64(source);
   dest:=variantmanager.vartoword64(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : int64;
+operator :=(const source : variant) dest : int64;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartoint64(source);
   dest:=variantmanager.vartoint64(source);
@@ -368,21 +368,21 @@ end;
 
 
 { Boolean }
 { Boolean }
 
 
-operator :=(const source : variant) dest : boolean;
+operator :=(const source : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartobool(source);
   dest:=variantmanager.vartobool(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : wordbool;
+operator :=(const source : variant) dest : wordbool;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   dest:=variantmanager.vartobool(source);
   dest:=variantmanager.vartobool(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : longbool;
+operator :=(const source : variant) dest : longbool;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
    dest:=variantmanager.vartobool(source);
    dest:=variantmanager.vartobool(source);
@@ -391,7 +391,7 @@ end;
 
 
 { Chars }
 { Chars }
 
 
-operator :=(const source : variant) dest : char;
+operator :=(const source : variant) dest : char;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 Var
 Var
   S : String;
   S : String;
@@ -403,7 +403,7 @@ begin
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : widechar;
+operator :=(const source : variant) dest : widechar;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 Var
 Var
   WS : WideString;
   WS : WideString;
@@ -417,19 +417,19 @@ end;
 
 
 { Strings }
 { Strings }
 
 
-operator :=(const source : variant) dest : shortstring;
+operator :=(const source : variant) dest : shortstring;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.VarToPStr(Dest,Source);
   VariantManager.VarToPStr(Dest,Source);
 end;
 end;
 
 
-operator :=(const source : variant) dest : ansistring;
+operator :=(const source : variant) dest : ansistring;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   VariantManager.vartolstr(dest,source);
   VariantManager.vartolstr(dest,source);
 end;
 end;
 
 
-operator :=(const source : variant) dest : widestring;
+operator :=(const source : variant) dest : widestring;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 begin
 begin
   variantmanager.vartowstr(dest,source);
   variantmanager.vartowstr(dest,source);
@@ -438,7 +438,7 @@ end;
 { Floats }
 { Floats }
 
 
 {$ifdef SUPPORT_SINGLE}
 {$ifdef SUPPORT_SINGLE}
-operator :=(const source : variant) dest : single;
+operator :=(const source : variant) dest : single;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   dest:=variantmanager.vartoreal(source);
   dest:=variantmanager.vartoreal(source);
 end;
 end;
@@ -446,7 +446,7 @@ end;
 
 
 
 
 {$ifdef SUPPORT_DOUBLE}
 {$ifdef SUPPORT_DOUBLE}
-operator :=(const source : variant) dest : double;
+operator :=(const source : variant) dest : double;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   dest:=variantmanager.vartoreal(source);
   dest:=variantmanager.vartoreal(source);
 end;
 end;
@@ -454,7 +454,7 @@ end;
 
 
 
 
 {$ifdef SUPPORT_EXTENDED}
 {$ifdef SUPPORT_EXTENDED}
-operator :=(const source : variant) dest : extended;
+operator :=(const source : variant) dest : extended;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   dest:=variantmanager.vartoreal(source);
   dest:=variantmanager.vartoreal(source);
 end;
 end;
@@ -462,7 +462,7 @@ end;
 
 
 
 
 {$ifdef SUPPORT_COMP}
 {$ifdef SUPPORT_COMP}
-operator :=(const source : variant) dest : comp;
+operator :=(const source : variant) dest : comp;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   dest:=comp(variantmanager.vartoreal(source));
   dest:=comp(variantmanager.vartoreal(source));
 end;
 end;
@@ -470,126 +470,138 @@ end;
 
 
 
 
 { Misc. }
 { Misc. }
-operator :=(const source : variant) dest : currency;
+operator :=(const source : variant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   dest:=variantmanager.vartocurr(source);
   dest:=variantmanager.vartocurr(source);
 end;
 end;
 
 
 
 
-operator :=(const source : variant) dest : tdatetime;
+operator :=(const source : variant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
 begin
 begin
   dest:=variantmanager.vartotdatetime(source);
   dest:=variantmanager.vartotdatetime(source);
 end;
 end;
 
 
+
+operator :=(const source : olevariant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    tvardata(result):=tvardata(source);
+  end;
+  
+    
+operator :=(const source : variant) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
+  begin
+    variantmanager.olevarfromvar(dest,source);
+  end;
+
 {**********************************************************************
 {**********************************************************************
                                Operators
                                Operators
  **********************************************************************}
  **********************************************************************}
 
 
-operator or(const op1,op2 : variant) dest : variant;
+operator or(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opor);
      variantmanager.varop(dest,op2,opor);
   end;
   end;
 
 
-operator and(const op1,op2 : variant) dest : variant;
+operator and(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opand);
      variantmanager.varop(dest,op2,opand);
   end;
   end;
 
 
-operator xor(const op1,op2 : variant) dest : variant;
+operator xor(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opxor);
      variantmanager.varop(dest,op2,opxor);
   end;
   end;
 
 
-operator not(const op : variant) dest : variant;
+operator not(const op : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op;
      dest:=op;
      variantmanager.varnot(dest);
      variantmanager.varnot(dest);
   end;
   end;
 
 
-operator shl(const op1,op2 : variant) dest : variant;
+operator shl(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opshiftleft);
      variantmanager.varop(dest,op2,opshiftleft);
   end;
   end;
 
 
-operator shr(const op1,op2 : variant) dest : variant;
+operator shr(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opshiftright);
      variantmanager.varop(dest,op2,opshiftright);
   end;
   end;
 
 
-operator +(const op1,op2 : variant) dest : variant;
+operator +(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opadd);
      variantmanager.varop(dest,op2,opadd);
   end;
   end;
 
 
-operator -(const op1,op2 : variant) dest : variant;
+operator -(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opsubtract);
      variantmanager.varop(dest,op2,opsubtract);
   end;
   end;
 
 
-operator *(const op1,op2 : variant) dest : variant;
+operator *(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opmultiply);
      variantmanager.varop(dest,op2,opmultiply);
   end;
   end;
 
 
-operator /(const op1,op2 : variant) dest : variant;
+operator /(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opdivide);
      variantmanager.varop(dest,op2,opdivide);
   end;
   end;
 
 
-operator **(const op1,op2 : variant) dest : variant;
+operator **(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,oppower);
      variantmanager.varop(dest,op2,oppower);
   end;
   end;
 
 
-operator div(const op1,op2 : variant) dest : variant;
+operator div(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opintdivide);
      variantmanager.varop(dest,op2,opintdivide);
   end;
   end;
 
 
-operator mod(const op1,op2 : variant) dest : variant;
+operator mod(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op1;
      dest:=op1;
      variantmanager.varop(dest,op2,opmodulus);
      variantmanager.varop(dest,op2,opmodulus);
   end;
   end;
 
 
-operator -(const op : variant) dest : variant;
+operator -(const op : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=op;
      dest:=op;
      variantmanager.varneg(dest);
      variantmanager.varneg(dest);
   end;
   end;
 
 
-operator =(const op1,op2 : variant) dest : boolean;
+operator =(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=variantmanager.cmpop(op1,op2,opcmpeq);
      dest:=variantmanager.cmpop(op1,op2,opcmpeq);
   end;
   end;
 
 
-operator <(const op1,op2 : variant) dest : boolean;
+operator <(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=variantmanager.cmpop(op1,op2,opcmplt);
      dest:=variantmanager.cmpop(op1,op2,opcmplt);
   end;
   end;
 
 
-operator >(const op1,op2 : variant) dest : boolean;
+operator >(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=variantmanager.cmpop(op1,op2,opcmpgt);
      dest:=variantmanager.cmpop(op1,op2,opcmpgt);
   end;
   end;
 
 
-operator >=(const op1,op2 : variant) dest : boolean;
+operator >=(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=variantmanager.cmpop(op1,op2,opcmpge);
      dest:=variantmanager.cmpop(op1,op2,opcmpge);
   end;
   end;
 
 
-operator <=(const op1,op2 : variant) dest : boolean;
+operator <=(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
   begin
   begin
      dest:=variantmanager.cmpop(op1,op2,opcmplt);
      dest:=variantmanager.cmpop(op1,op2,opcmplt);
   end;
   end;
@@ -646,5 +658,3 @@ procedure initvariantmanager;
        ppointer(@variantmanager+i*sizeof(pointer))^:=@invalidvariantopnovariants;
        ppointer(@variantmanager+i*sizeof(pointer))^:=@invalidvariantopnovariants;
      pointer(variantmanager.varclear):=@varclear
      pointer(variantmanager.varclear):=@varclear
   end;
   end;
-
-

+ 66 - 63
rtl/inc/varianth.inc

@@ -207,116 +207,119 @@ var
  **********************************************************************}
  **********************************************************************}
 
 
 { Integer }
 { Integer }
-operator :=(const source : byte) dest : variant;
-operator :=(const source : shortint) dest : variant;
-operator :=(const source : word) dest : variant;
-operator :=(const source : smallint) dest : variant;
-operator :=(const source : dword) dest : variant;
-operator :=(const source : longint) dest : variant;
-operator :=(const source : qword) dest : variant;
-operator :=(const source : int64) dest : variant;
+operator :=(const source : byte) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : shortint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : word) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : smallint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : dword) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : longint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : qword) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : int64) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Boolean }
 { Boolean }
-operator :=(const source : boolean) dest : variant;
-operator :=(const source : wordbool) dest : variant;
-operator :=(const source : longbool) dest : variant;
+operator :=(const source : boolean) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : wordbool) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : longbool) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Chars }
 { Chars }
-operator :=(const source : char) dest : variant;
-operator :=(const source : widechar) dest : variant;
+operator :=(const source : char) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : widechar) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Strings }
 { Strings }
-operator :=(const source : shortstring) dest : variant;
-operator :=(const source : ansistring) dest : variant;
-operator :=(const source : widestring) dest : variant;
+operator :=(const source : shortstring) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : ansistring) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : widestring) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Floats }
 { Floats }
 {$ifdef SUPPORT_SINGLE}
 {$ifdef SUPPORT_SINGLE}
-operator :=(const source : single) dest : variant;
+operator :=(const source : single) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_SINGLE}
 {$endif SUPPORT_SINGLE}
 {$ifdef SUPPORT_DOUBLE}
 {$ifdef SUPPORT_DOUBLE}
-operator :=(const source : double) dest : variant;
+operator :=(const source : double) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_DOUBLE}
 {$endif SUPPORT_DOUBLE}
 {$ifdef SUPPORT_EXTENDED}
 {$ifdef SUPPORT_EXTENDED}
-operator :=(const source : extended) dest : variant;
+operator :=(const source : extended) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_EXTENDED}
 {$endif SUPPORT_EXTENDED}
 {$ifdef SUPPORT_COMP}
 {$ifdef SUPPORT_COMP}
-operator :=(const source : comp) dest : variant;
+operator :=(const source : comp) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_COMP}
 {$endif SUPPORT_COMP}
 
 
 { Misc. }
 { Misc. }
-operator :=(const source : currency) dest : variant;
-operator :=(const source : tdatetime) dest : variant;
+operator :=(const source : currency) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : tdatetime) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 {**********************************************************************
 {**********************************************************************
                        from Variant assignments
                        from Variant assignments
  **********************************************************************}
  **********************************************************************}
 
 
 { Integer }
 { Integer }
-operator :=(const source : variant) dest : byte;
-operator :=(const source : variant) dest : shortint;
-operator :=(const source : variant) dest : word;
-operator :=(const source : variant) dest : smallint;
-operator :=(const source : variant) dest : dword;
-operator :=(const source : variant) dest : longint;
-operator :=(const source : variant) dest : qword;
-operator :=(const source : variant) dest : int64;
+operator :=(const source : variant) dest : byte;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : shortint;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : word;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : smallint;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : dword;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : longint;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : qword;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : int64;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Boolean }
 { Boolean }
-operator :=(const source : variant) dest : boolean;
-operator :=(const source : variant) dest : wordbool;
-operator :=(const source : variant) dest : longbool;
+operator :=(const source : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : wordbool;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : longbool;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Chars }
 { Chars }
-operator :=(const source : variant) dest : char;
-operator :=(const source : variant) dest : widechar;
+operator :=(const source : variant) dest : char;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : widechar;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Strings }
 { Strings }
-operator :=(const source : variant) dest : shortstring;
-operator :=(const source : variant) dest : ansistring;
-operator :=(const source : variant) dest : widestring;
+operator :=(const source : variant) dest : shortstring;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : ansistring;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : widestring;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { Floats }
 { Floats }
 {$ifdef SUPPORT_SINGLE}
 {$ifdef SUPPORT_SINGLE}
-operator :=(const source : variant) dest : single;
+operator :=(const source : variant) dest : single;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_SINGLE}
 {$endif SUPPORT_SINGLE}
 {$ifdef SUPPORT_DOUBLE}
 {$ifdef SUPPORT_DOUBLE}
-operator :=(const source : variant) dest : double;
+operator :=(const source : variant) dest : double;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_DOUBLE}
 {$endif SUPPORT_DOUBLE}
 {$ifdef SUPPORT_EXTENDED}
 {$ifdef SUPPORT_EXTENDED}
-operator :=(const source : variant) dest : extended;
+operator :=(const source : variant) dest : extended;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_EXTENDED}
 {$endif SUPPORT_EXTENDED}
 {$ifdef SUPPORT_EXTENDED}
 {$ifdef SUPPORT_EXTENDED}
-operator :=(const source : variant) dest : comp;
+operator :=(const source : variant) dest : comp;{$ifdef SYSTEMINLINE}inline;{$endif}
 {$endif SUPPORT_COMP}
 {$endif SUPPORT_COMP}
 
 
+operator :=(const source : olevariant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
+
 { Misc. }
 { Misc. }
-operator :=(const source : variant) dest : currency;
-operator :=(const source : variant) dest : tdatetime;
+operator :=(const source : variant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator :=(const source : variant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 {**********************************************************************
 {**********************************************************************
                          Operators
                          Operators
  **********************************************************************}
  **********************************************************************}
 
 
-operator or(const op1,op2 : variant) dest : variant;
-operator and(const op1,op2 : variant) dest : variant;
-operator xor(const op1,op2 : variant) dest : variant;
-operator not(const op : variant) dest : variant;
-operator shl(const op1,op2 : variant) dest : variant;
-operator shr(const op1,op2 : variant) dest : variant;
-operator +(const op1,op2 : variant) dest : variant;
-operator -(const op1,op2 : variant) dest : variant;
-operator *(const op1,op2 : variant) dest : variant;
-operator /(const op1,op2 : variant) dest : variant;
-operator **(const op1,op2 : variant) dest : variant;
-operator div(const op1,op2 : variant) dest : variant;
-operator mod(const op1,op2 : variant) dest : variant;
-operator -(const op : variant) dest : variant;
-operator =(const op1,op2 : variant) dest : boolean;
-operator <(const op1,op2 : variant) dest : boolean;
-operator >(const op1,op2 : variant) dest : boolean;
-operator >=(const op1,op2 : variant) dest : boolean;
-operator <=(const op1,op2 : variant) dest : boolean;
+operator or(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator and(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator xor(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator not(const op : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator shl(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator shr(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator +(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator -(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator *(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator /(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator **(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator div(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator mod(const op1,op2 : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator -(const op : variant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator =(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator <(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator >(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator >=(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
+operator <=(const op1,op2 : variant) dest : boolean;{$ifdef SYSTEMINLINE}inline;{$endif}
 
 
 { variant helpers }
 { variant helpers }
 procedure VarArrayRedim(var A: Variant; HighBound: SizeInt);
 procedure VarArrayRedim(var A: Variant; HighBound: SizeInt);