mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-11 18:49:14 +02:00
* several variant init./final. stuff fixed
This commit is contained in:
parent
fe4cb5e126
commit
99ebd46010
@ -139,7 +139,7 @@ begin
|
|||||||
recordrtti(data,typeinfo,@int_initialize);
|
recordrtti(data,typeinfo,@int_initialize);
|
||||||
{$ifdef HASVARIANT}
|
{$ifdef HASVARIANT}
|
||||||
tkVariant:
|
tkVariant:
|
||||||
variant_init(Variant(PVarData(Data)^));
|
variant_init(PVarData(Data)^);
|
||||||
{$endif HASVARIANT}
|
{$endif HASVARIANT}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -176,7 +176,7 @@ begin
|
|||||||
fpc_dynarray_decr_ref(PPointer(Data)^,TypeInfo);
|
fpc_dynarray_decr_ref(PPointer(Data)^,TypeInfo);
|
||||||
{$ifdef HASVARIANT}
|
{$ifdef HASVARIANT}
|
||||||
tkVariant:
|
tkVariant:
|
||||||
variant_clear(Variant(PVarData(Data)^))
|
variant_clear(PVarData(Data)^);
|
||||||
{$endif HASVARIANT}
|
{$endif HASVARIANT}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -204,7 +204,7 @@ begin
|
|||||||
{$endif HASINTF}
|
{$endif HASINTF}
|
||||||
{$ifdef HASVARIANT}
|
{$ifdef HASVARIANT}
|
||||||
tkVariant:
|
tkVariant:
|
||||||
variant_addref(PVariant(Data)^);
|
variant_addref(pvardata(Data)^);
|
||||||
{$endif HASVARIANT}
|
{$endif HASVARIANT}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -237,7 +237,7 @@ begin
|
|||||||
{$endif HASINTF}
|
{$endif HASINTF}
|
||||||
{$ifdef HASVARIANT}
|
{$ifdef HASVARIANT}
|
||||||
tkVariant:
|
tkVariant:
|
||||||
variant_clear(PVariant(Data)^);
|
variant_clear(pvardata(data)^);
|
||||||
{$endif HASVARIANT}
|
{$endif HASVARIANT}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -251,11 +251,12 @@ procedure fpc_finalize_array(data,typeinfo : pointer;count,size : longint); [Pub
|
|||||||
int_finalize(data+size*i,typeinfo);
|
int_finalize(data+size*i,typeinfo);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.20 2005-01-08 20:43:44 florian
|
Revision 1.21 2005-01-15 18:47:26 florian
|
||||||
|
* several variant init./final. stuff fixed
|
||||||
|
|
||||||
|
Revision 1.20 2005/01/08 20:43:44 florian
|
||||||
+ init/cleaning code for variants added
|
+ init/cleaning code for variants added
|
||||||
|
|
||||||
Revision 1.19 2004/11/02 15:52:04 florian
|
Revision 1.19 2004/11/02 15:52:04 florian
|
||||||
|
@ -41,7 +41,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure variant_init(var v : variant);[Public,Alias:'FPC_VARIANT_INIT'];
|
procedure variant_init(var v : tvardata);[Public,Alias:'FPC_VARIANT_INIT'];
|
||||||
begin
|
begin
|
||||||
{ calling the variant manager here is a problem because the static/global variants
|
{ calling the variant manager here is a problem because the static/global variants
|
||||||
are initialized while the variant manager isn't assigned }
|
are initialized while the variant manager isn't assigned }
|
||||||
@ -49,15 +49,17 @@ procedure variant_init(var v : variant);[Public,Alias:'FPC_VARIANT_INIT'];
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure variant_clear(var v : variant);[Public,Alias:'FPC_VARIANT_CLEAR'];
|
procedure variant_clear(var v : tvardata);[Public,Alias:'FPC_VARIANT_CLEAR'];
|
||||||
begin
|
begin
|
||||||
variantmanager.varclear(v);
|
if assigned(VarClearProc) then
|
||||||
|
VarClearProc(v)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure variant_addref(var v : variant);[Public,Alias:'FPC_VARIANT_ADDREF'];
|
procedure variant_addref(var v : tvardata);[Public,Alias:'FPC_VARIANT_ADDREF'];
|
||||||
begin
|
begin
|
||||||
variantmanager.varaddref(v);
|
if assigned(VarAddRefProc) then
|
||||||
|
VarAddRefProc(v);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -113,7 +115,6 @@ function fpc_interface_to_variant(const i : iinterface) : variant;compilerproc;
|
|||||||
operator :=(const source : byte) dest : variant;
|
operator :=(const source : byte) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt(Dest,Source,1);
|
Variantmanager.varfromInt(Dest,Source,1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -121,7 +122,6 @@ end;
|
|||||||
operator :=(const source : shortint) dest : variant;
|
operator :=(const source : shortint) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt(Dest,Source,-1);
|
Variantmanager.varfromInt(Dest,Source,-1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -129,56 +129,43 @@ end;
|
|||||||
operator :=(const source : word) dest : variant;
|
operator :=(const source : word) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt(Dest,Source,2);
|
Variantmanager.varfromInt(Dest,Source,2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : smallint) dest : variant;
|
operator :=(const source : smallint) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt(Dest,Source,-2);
|
Variantmanager.varfromInt(Dest,Source,-2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : dword) dest : variant;
|
operator :=(const source : dword) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt(Dest,Source,4);
|
Variantmanager.varfromInt(Dest,Source,4);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : longint) dest : variant;
|
operator :=(const source : longint) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
// Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt(Dest,Source,-4);
|
Variantmanager.varfromInt(Dest,Source,-4);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : qword) dest : variant;
|
operator :=(const source : qword) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromWord64(Dest,Source);
|
Variantmanager.varfromWord64(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : int64) dest : variant;
|
operator :=(const source : int64) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromInt64(Dest,Source);
|
Variantmanager.varfromInt64(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Boolean }
|
{ Boolean }
|
||||||
|
|
||||||
operator :=(const source : boolean) dest : variant;
|
operator :=(const source : boolean) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromBool(Dest,Source);
|
Variantmanager.varfromBool(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -186,7 +173,6 @@ end;
|
|||||||
operator :=(const source : wordbool) dest : variant;
|
operator :=(const source : wordbool) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromBool(Dest,Boolean(Source));
|
Variantmanager.varfromBool(Dest,Boolean(Source));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -194,7 +180,6 @@ end;
|
|||||||
operator :=(const source : longbool) dest : variant;
|
operator :=(const source : longbool) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
Variantmanager.varfromBool(Dest,Boolean(Source));
|
Variantmanager.varfromBool(Dest,Boolean(Source));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -204,7 +189,6 @@ end;
|
|||||||
operator :=(const source : char) dest : variant;
|
operator :=(const source : char) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromPStr(Dest,Source);
|
VariantManager.VarFromPStr(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -212,7 +196,6 @@ end;
|
|||||||
operator :=(const source : widechar) dest : variant;
|
operator :=(const source : widechar) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromWStr(Dest,Source);
|
VariantManager.VarFromWStr(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -221,7 +204,6 @@ end;
|
|||||||
operator :=(const source : shortstring) dest : variant;
|
operator :=(const source : shortstring) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromPStr(Dest,Source);
|
VariantManager.VarFromPStr(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -229,7 +211,6 @@ end;
|
|||||||
operator :=(const source : ansistring) dest : variant;
|
operator :=(const source : ansistring) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromLStr(Dest,Source);
|
VariantManager.VarFromLStr(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -237,7 +218,6 @@ end;
|
|||||||
operator :=(const source : widestring) dest : variant;
|
operator :=(const source : widestring) dest : variant;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromWStr(Dest,Source);
|
VariantManager.VarFromWStr(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -246,7 +226,6 @@ end;
|
|||||||
{$ifdef SUPPORT_SINGLE}
|
{$ifdef SUPPORT_SINGLE}
|
||||||
operator :=(const source : single) dest : variant;
|
operator :=(const source : single) dest : variant;
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromReal(Dest,Source);
|
VariantManager.VarFromReal(Dest,Source);
|
||||||
end;
|
end;
|
||||||
{$endif SUPPORT_SINGLE}
|
{$endif SUPPORT_SINGLE}
|
||||||
@ -255,7 +234,6 @@ end;
|
|||||||
{$ifdef SUPPORT_DOUBLE}
|
{$ifdef SUPPORT_DOUBLE}
|
||||||
operator :=(const source : double) dest : variant;
|
operator :=(const source : double) dest : variant;
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromReal(Dest,Source);
|
VariantManager.VarFromReal(Dest,Source);
|
||||||
end;
|
end;
|
||||||
{$endif SUPPORT_DOUBLE}
|
{$endif SUPPORT_DOUBLE}
|
||||||
@ -264,7 +242,6 @@ end;
|
|||||||
{$ifdef SUPPORT_EXTENDED}
|
{$ifdef SUPPORT_EXTENDED}
|
||||||
operator :=(const source : extended) dest : variant;
|
operator :=(const source : extended) dest : variant;
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromReal(Dest,Source);
|
VariantManager.VarFromReal(Dest,Source);
|
||||||
end;
|
end;
|
||||||
{$endif SUPPORT_EXTENDED}
|
{$endif SUPPORT_EXTENDED}
|
||||||
@ -273,7 +250,6 @@ end;
|
|||||||
{$ifdef SUPPORT_COMP}
|
{$ifdef SUPPORT_COMP}
|
||||||
Operator :=(const source : comp) dest : variant;
|
Operator :=(const source : comp) dest : variant;
|
||||||
begin
|
begin
|
||||||
Variant_Init(Dest);
|
|
||||||
VariantManager.VarFromReal(Dest,Source);
|
VariantManager.VarFromReal(Dest,Source);
|
||||||
end;
|
end;
|
||||||
{$endif SUPPORT_COMP}
|
{$endif SUPPORT_COMP}
|
||||||
@ -622,7 +598,10 @@ procedure initvariantmanager;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.21 2005-01-08 20:43:44 florian
|
Revision 1.22 2005-01-15 18:47:26 florian
|
||||||
|
* several variant init./final. stuff fixed
|
||||||
|
|
||||||
|
Revision 1.21 2005/01/08 20:43:44 florian
|
||||||
+ init/cleaning code for variants added
|
+ init/cleaning code for variants added
|
||||||
|
|
||||||
Revision 1.20 2005/01/07 21:15:46 florian
|
Revision 1.20 2005/01/07 21:15:46 florian
|
||||||
|
@ -186,6 +186,13 @@ procedure GetVariantManager(var VarMgr: TVariantManager);
|
|||||||
procedure SetVariantManager(const VarMgr: TVariantManager);
|
procedure SetVariantManager(const VarMgr: TVariantManager);
|
||||||
function IsVariantManagerSet: Boolean;
|
function IsVariantManagerSet: Boolean;
|
||||||
|
|
||||||
|
const
|
||||||
|
VarClearProc : procedure(var v : TVarData) = nil;
|
||||||
|
VarAddRefProc : procedure(var v : TVarData) = nil;
|
||||||
|
VarCopyProc : procedure(var d : TVarData;const s : TVarData) = nil;
|
||||||
|
VarToLStrProc : procedure(var d : AnsiString;const s : TVarData) = nil;
|
||||||
|
VarToWStrProc : procedure(var d : WideString;const s : TVarData) = nil;
|
||||||
|
|
||||||
var
|
var
|
||||||
VarDispProc : pointer;
|
VarDispProc : pointer;
|
||||||
DispCallByIDProc : pointer;
|
DispCallByIDProc : pointer;
|
||||||
@ -311,7 +318,10 @@ operator <=(const op1,op2 : variant) dest : boolean;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.16 2003-12-22 23:07:52 peter
|
Revision 1.17 2005-01-15 18:47:26 florian
|
||||||
|
* several variant init./final. stuff fixed
|
||||||
|
|
||||||
|
Revision 1.16 2003/12/22 23:07:52 peter
|
||||||
* fixed type of verror
|
* fixed type of verror
|
||||||
|
|
||||||
Revision 1.15 2003/12/10 01:36:39 florian
|
Revision 1.15 2003/12/10 01:36:39 florian
|
||||||
|
@ -69,7 +69,8 @@ begin
|
|||||||
case VType of
|
case VType of
|
||||||
varEmpty, varNull, varSmallint, varInteger, varSingle, varDouble,
|
varEmpty, varNull, varSmallint, varInteger, varSingle, varDouble,
|
||||||
varCurrency, varDate, varError, varBoolean, varByte,VarShortInt,
|
varCurrency, varDate, varError, varBoolean, varByte,VarShortInt,
|
||||||
varInt64, VarLongWord,VarQWord:;
|
varInt64, VarLongWord,VarQWord:
|
||||||
|
;
|
||||||
varOleStr:
|
varOleStr:
|
||||||
WideString(Pointer(VOleStr)):='';
|
WideString(Pointer(VOleStr)):='';
|
||||||
varDispatch,
|
varDispatch,
|
||||||
@ -709,7 +710,10 @@ end;
|
|||||||
{$endif HASVARIANT}
|
{$endif HASVARIANT}
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.12 2005-01-08 16:19:42 florian
|
Revision 1.13 2005-01-15 18:47:26 florian
|
||||||
|
* several variant init./final. stuff fixed
|
||||||
|
|
||||||
|
Revision 1.12 2005/01/08 16:19:42 florian
|
||||||
* made some variants stuff more readable
|
* made some variants stuff more readable
|
||||||
|
|
||||||
Revision 1.11 2004/04/28 20:48:20 peter
|
Revision 1.11 2004/04/28 20:48:20 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user