+ variant<->currency/tdatetime operators

This commit is contained in:
florian 2005-04-28 19:34:19 +00:00
parent 5e038a1b53
commit db865d1e51
2 changed files with 32 additions and 20 deletions

View File

@ -60,8 +60,8 @@ procedure variant_addref(var v : tvardata);[Public,Alias:'FPC_VARIANT_ADDREF'];
if assigned(VarAddRefProc) then
VarAddRefProc(v);
end;
{ using pointers as argument here makes life for the compiler easier }
{ using pointers as argument here makes life for the compiler easier }
procedure fpc_variant_copy(d,s : pointer);compilerproc;
begin
if assigned(VarCopyProc) then
@ -91,8 +91,8 @@ procedure fpc_vararray_get(var d : variant;const s : variant;indices : psizeint;
begin
d:=variantmanager.vararrayget(s,len,indices);
end;
procedure fpc_vararray_put(var d : variant;const s : variant;indices : psizeint;len : sizeint);compilerproc;
begin
variantmanager.vararrayput(d,s,len,indices);
@ -274,15 +274,17 @@ end;
{ Misc. }
{ Fixme!!!
operator :=(const source : currency) dest : variant;
begin
VariantManager.VarFromCurr(Dest,Source);
end;
operator :=(const source : tdatetime) dest : variant;
begin
VariantManager.VarFromTDateTime(Dest,Source);
end;
}
{**********************************************************************
from Variant assignments
**********************************************************************}
@ -447,20 +449,21 @@ begin
end;
{$endif SUPPORT_COMP}
{ Misc. }
operator :=(const source : variant) dest : currency;
begin
dest:=variantmanager.vartocurr(source);
end;
(* FIXME !!!
operator :=(const source : variant) dest : tdatetime;
{$ifdef HASOVERLOADASSIGNBYUNIQUERESULT}
operator :=(const source : variant) dest : tdatetime;
begin
dest:=variantmanager.currtovar(source);
dest:=variantmanager.vartotdatetime(source);
end;
*)
{$endif HASOVERLOADASSIGNBYUNIQUERESULT}
{**********************************************************************
Operators
**********************************************************************}
@ -524,7 +527,7 @@ operator /(const op1,op2 : variant) dest : variant;
dest:=op1;
variantmanager.varop(dest,op2,opdivide);
end;
operator **(const op1,op2 : variant) dest : variant;
begin
dest:=op1;
@ -578,7 +581,7 @@ procedure VarArrayRedim(var A: Variant; HighBound: SizeInt);
begin
variantmanager.vararrayredim(a,highbound);
end;
{**********************************************************************
Variant manager functions
@ -624,7 +627,10 @@ procedure initvariantmanager;
{
$Log$
Revision 1.29 2005-04-10 20:24:31 florian
Revision 1.30 2005-04-28 19:34:19 florian
+ variant<->currency/tdatetime operators
Revision 1.29 2005/04/10 20:24:31 florian
+ basic operators (int, real and string) for variants implemented
Revision 1.28 2005/04/10 09:22:38 florian

View File

@ -35,7 +35,7 @@ const
varword = 18;
varlongword = 19;
varint64 = 20;
varqword = 21;
varqword = 21;
varstrarg = $48;
varstring = $100;
@ -131,6 +131,7 @@ type
vartoword64 : function(const v : variant) : qword;
vartobool : function(const v : variant) : boolean;
vartoreal : function(const v : variant) : extended;
vartotdatetime : function(const v : variant) : tdatetime;
vartocurr : function(const v : variant) : currency;
vartopstr : procedure(var s ;const v : variant);
vartolstr : procedure(var s : ansistring;const v : variant);
@ -145,6 +146,8 @@ type
varfromint64 : procedure(var dest : variant;const source : int64);
varfromword64 : procedure(var dest : variant;const source : qword);
varfromreal : procedure(var dest : variant;const source : extended);
varfromtdatetime : procedure(var dest : Variant;const source : TDateTime);
varfromcurr : procedure(var dest : Variant;const source : Currency);
varfrompstr: procedure(var dest : variant; const source : ShortString);
varfromlstr: procedure(var dest : variant; const source : ansistring);
varfromwstr: procedure(var dest : variant; const source : WideString);
@ -241,10 +244,9 @@ operator :=(const source : comp) dest : variant;
{$endif SUPPORT_COMP}
{ Misc. }
{ Fixme!!!!
operator :=(const source : currency) dest : variant;
operator :=(const source : tdatetime) dest : variant;
}
{**********************************************************************
from Variant assignments
**********************************************************************}
@ -289,9 +291,10 @@ operator :=(const source : variant) dest : comp;
{ Misc. }
operator :=(const source : variant) dest : currency;
{ Fixme!!!!
{$ifdef HASOVERLOADASSIGNBYUNIQUERESULT}
operator :=(const source : variant) dest : tdatetime;
}
{$endif HASOVERLOADASSIGNBYUNIQUERESULT}
{**********************************************************************
Operators
**********************************************************************}
@ -321,7 +324,10 @@ procedure VarArrayRedim(var A: Variant; HighBound: SizeInt);
{
$Log$
Revision 1.23 2005-04-10 20:24:31 florian
Revision 1.24 2005-04-28 19:34:19 florian
+ variant<->currency/tdatetime operators
Revision 1.23 2005/04/10 20:24:31 florian
+ basic operators (int, real and string) for variants implemented
Revision 1.22 2005/04/10 09:22:38 florian