mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-21 13:52:35 +02:00
+ init/cleaning code for variants added
This commit is contained in:
parent
66c9656f3c
commit
bd211ce900
@ -202,6 +202,10 @@ begin
|
|||||||
tkInterface:
|
tkInterface:
|
||||||
Intf_Incr_Ref(PPointer(Data)^);
|
Intf_Incr_Ref(PPointer(Data)^);
|
||||||
{$endif HASINTF}
|
{$endif HASINTF}
|
||||||
|
{$ifdef HASVARIANT}
|
||||||
|
tkVariant:
|
||||||
|
variant_addref(PVariant(Data)^);
|
||||||
|
{$endif HASVARIANT}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -231,6 +235,10 @@ begin
|
|||||||
tkInterface:
|
tkInterface:
|
||||||
Intf_Decr_Ref(PPointer(Data)^);
|
Intf_Decr_Ref(PPointer(Data)^);
|
||||||
{$endif HASINTF}
|
{$endif HASINTF}
|
||||||
|
{$ifdef HASVARIANT}
|
||||||
|
tkVariant:
|
||||||
|
variant_clear(PVariant(Data)^);
|
||||||
|
{$endif HASVARIANT}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -247,7 +255,10 @@ procedure fpc_finalize_array(data,typeinfo : pointer;count,size : longint); [Pub
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.19 2004-11-02 15:52:04 florian
|
Revision 1.20 2005-01-08 20:43:44 florian
|
||||||
|
+ init/cleaning code for variants added
|
||||||
|
|
||||||
|
Revision 1.19 2004/11/02 15:52:04 florian
|
||||||
* fixed rtti reading of arrays for 64 bit
|
* fixed rtti reading of arrays for 64 bit
|
||||||
|
|
||||||
Revision 1.18 2004/10/26 15:02:51 peter
|
Revision 1.18 2004/10/26 15:02:51 peter
|
||||||
|
@ -34,27 +34,33 @@ procedure vardisperror;
|
|||||||
Compiler helper routines.
|
Compiler helper routines.
|
||||||
---------------------------------------------------------------------}
|
---------------------------------------------------------------------}
|
||||||
|
|
||||||
|
|
||||||
procedure varclear(var v : tvardata);
|
procedure varclear(var v : tvardata);
|
||||||
begin
|
begin
|
||||||
if not(v.vtype in [varempty,varerror,varnull]) then
|
if not(v.vtype in [varempty,varerror,varnull]) then
|
||||||
invalidvariantop;
|
invalidvariantop;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure variant_init(var v : variant);[Public,Alias:'FPC_VARIANT_INIT'];
|
|
||||||
|
|
||||||
|
procedure variant_init(var v : variant);[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 }
|
||||||
fillchar(v,sizeof(variant),0);
|
fillchar(v,sizeof(variant),0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure variant_clear(var v : variant);[Public,Alias:'FPC_VARIANT_CLEAR'];
|
|
||||||
|
|
||||||
|
procedure variant_clear(var v : variant);[Public,Alias:'FPC_VARIANT_CLEAR'];
|
||||||
begin
|
begin
|
||||||
variantmanager.varclear(v);
|
variantmanager.varclear(v);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure variant_addref(var v : variant);[Public,Alias:'FPC_VARIANT_ADDREF'];
|
||||||
|
begin
|
||||||
|
variantmanager.varaddref(v);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
Procedure fpc_write_text_variant(Len : Longint;var f : Text;const v : variant); iocheck; [Public,Alias:'FPC_WRITE_TEXT_VARIANT']; compilerproc;
|
Procedure fpc_write_text_variant(Len : Longint;var f : Text;const v : variant); iocheck; [Public,Alias:'FPC_WRITE_TEXT_VARIANT']; compilerproc;
|
||||||
Begin
|
Begin
|
||||||
If (InOutRes<>0) then
|
If (InOutRes<>0) then
|
||||||
@ -616,7 +622,10 @@ procedure initvariantmanager;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.20 2005-01-07 21:15:46 florian
|
Revision 1.21 2005-01-08 20:43:44 florian
|
||||||
|
+ init/cleaning code for variants added
|
||||||
|
|
||||||
|
Revision 1.20 2005/01/07 21:15:46 florian
|
||||||
+ basic rtl support for variant <-> interface implemented
|
+ basic rtl support for variant <-> interface implemented
|
||||||
|
|
||||||
Revision 1.19 2004/12/05 11:49:06 florian
|
Revision 1.19 2004/12/05 11:49:06 florian
|
||||||
|
Loading…
Reference in New Issue
Block a user