mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 04:39:34 +02:00
+ (ole)variant<->error type conversion
+ DynArraySetLength + DynArrayFromVariant git-svn-id: trunk@1608 -
This commit is contained in:
parent
65590e912a
commit
c5f82ba6de
@ -140,6 +140,7 @@ procedure fpc_dynarray_incr_ref(p : pointer);[Public,Alias:'FPC_DYNARRAY_INCR_RE
|
|||||||
{ provide local access to dynarr_decr_ref for dynarr_setlength }
|
{ provide local access to dynarr_decr_ref for dynarr_setlength }
|
||||||
procedure fpc_dynarray_incr_ref(p : pointer); [external name 'FPC_DYNARRAY_INCR_REF'];
|
procedure fpc_dynarray_incr_ref(p : pointer); [external name 'FPC_DYNARRAY_INCR_REF'];
|
||||||
|
|
||||||
|
|
||||||
{ provide local access to dynarr_setlength }
|
{ provide local access to dynarr_setlength }
|
||||||
procedure int_dynarray_setlength(var p : pointer;pti : pointer;
|
procedure int_dynarray_setlength(var p : pointer;pti : pointer;
|
||||||
dimcount : dword;dims : pdynarrayindex);[external name 'FPC_DYNARR_SETLENGTH'];
|
dimcount : dword;dims : pdynarrayindex);[external name 'FPC_DYNARR_SETLENGTH'];
|
||||||
@ -337,3 +338,8 @@ function fpc_dynarray_copy(psrc : pointer;ti : pointer;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure DynArraySetLength(var a: Pointer; typeInfo: Pointer; dimCnt: SizeInt; lengthVec: PSizeInt);
|
||||||
|
begin
|
||||||
|
int_dynarray_setlength(a,typeInfo,dimCnt,lengthVec);
|
||||||
|
end;
|
||||||
|
|
||||||
|
@ -28,3 +28,5 @@ type
|
|||||||
eletype : pdynarraytypeinfo;
|
eletype : pdynarraytypeinfo;
|
||||||
vartype : longint;
|
vartype : longint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure DynArraySetLength(var a: Pointer; typeInfo: Pointer; dimCnt: SizeInt; lengthVec: PSizeInt);
|
||||||
|
@ -150,21 +150,18 @@ function fpc_interface_to_variant(const i : iinterface) : variant;compilerproc;
|
|||||||
{ Integer }
|
{ Integer }
|
||||||
|
|
||||||
operator :=(const source : byte) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : word) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Variantmanager.varfromInt(Dest,Source,2);
|
Variantmanager.varfromInt(Dest,Source,2);
|
||||||
end;
|
end;
|
||||||
@ -304,6 +301,12 @@ operator :=(const source : tdatetime) dest : variant;{$ifdef SYSTEMINLINE}inline
|
|||||||
VariantManager.VarFromTDateTime(Dest,Source);
|
VariantManager.VarFromTDateTime(Dest,Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
operator :=(const source : error) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
begin
|
||||||
|
Variantmanager.varfromInt(Dest,Source,-sizeof(error));
|
||||||
|
end;
|
||||||
|
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
from Variant assignments
|
from Variant assignments
|
||||||
**********************************************************************}
|
**********************************************************************}
|
||||||
@ -318,38 +321,33 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
operator :=(const source : variant) dest : shortint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : variant) dest : qword;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
@ -471,15 +469,15 @@ end;
|
|||||||
|
|
||||||
{ Misc. }
|
{ Misc. }
|
||||||
operator :=(const source : variant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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;{$ifdef SYSTEMINLINE}inline;{$endif}
|
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}
|
operator :=(const source : olevariant) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
@ -493,6 +491,11 @@ operator :=(const source : variant) dest : olevariant;{$ifdef SYSTEMINLINE}inlin
|
|||||||
variantmanager.olevarfromvar(dest,source);
|
variantmanager.olevarfromvar(dest,source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
operator :=(const source : variant) dest : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
begin
|
||||||
|
dest:=variantmanager.vartoint(source);
|
||||||
|
end;
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
Operators
|
Operators
|
||||||
**********************************************************************}
|
**********************************************************************}
|
||||||
@ -781,6 +784,11 @@ operator :=(const source : olevariant) dest : tdatetime;{$ifdef SYSTEMINLINE}inl
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
operator :=(const source : olevariant) dest : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
begin
|
||||||
|
dest:=variantmanager.vartoint(variant(tvardata(source)));
|
||||||
|
end;
|
||||||
|
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
to OLEVariant assignments
|
to OLEVariant assignments
|
||||||
**********************************************************************}
|
**********************************************************************}
|
||||||
@ -793,43 +801,43 @@ operator :=(const source : byte) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{
|
|||||||
|
|
||||||
operator :=(const source : shortint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : shortint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,-1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : word) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : word) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : smallint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : smallint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,-2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : dword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : dword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,4);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : longint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : longint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,-4);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : qword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : qword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,8);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
operator :=(const source : int64) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : int64) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
begin
|
begin
|
||||||
variantmanager.olevarfromint(dest,source,1);
|
variantmanager.olevarfromint(dest,source,-8);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Boolean }
|
{ Boolean }
|
||||||
@ -928,6 +936,11 @@ operator :=(const source : tdatetime) dest : olevariant;{$ifdef SYSTEMINLINE}inl
|
|||||||
variantmanager.varfromtdatetime(variant(tvardata(dest)),source);
|
variantmanager.varfromtdatetime(variant(tvardata(dest)),source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
operator :=(const source : error) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
begin
|
||||||
|
variantmanager.olevarfromint(dest,source,-sizeof(error));
|
||||||
|
end;
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
Variant manager functions
|
Variant manager functions
|
||||||
**********************************************************************}
|
**********************************************************************}
|
||||||
|
@ -247,6 +247,7 @@ operator :=(const source : comp) dest : variant;{$ifdef SYSTEMINLINE}inline;{$en
|
|||||||
{ Misc. }
|
{ Misc. }
|
||||||
operator :=(const source : currency) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : currency) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
operator :=(const source : tdatetime) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : tdatetime) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
operator :=(const source : error) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
from Variant assignments
|
from Variant assignments
|
||||||
@ -296,6 +297,7 @@ operator :=(const source : variant) dest : olevariant;{$ifdef SYSTEMINLINE}inlin
|
|||||||
{ Misc. }
|
{ Misc. }
|
||||||
operator :=(const source : variant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : variant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
operator :=(const source : variant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : variant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
operator :=(const source : variant) dest : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
Operators
|
Operators
|
||||||
@ -370,6 +372,7 @@ operator :=(const source : olevariant) dest : comp;{$ifdef SYSTEMINLINE}inline;{
|
|||||||
{ Misc. }
|
{ Misc. }
|
||||||
operator :=(const source : olevariant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : olevariant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
operator :=(const source : olevariant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : olevariant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
operator :=(const source : olevariant) dest : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
to OLEVariant assignments
|
to OLEVariant assignments
|
||||||
@ -416,6 +419,7 @@ operator :=(const source : comp) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{
|
|||||||
{ Misc. }
|
{ Misc. }
|
||||||
operator :=(const source : currency) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : currency) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
operator :=(const source : tdatetime) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
operator :=(const source : tdatetime) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
operator :=(const source : error) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||||
|
|
||||||
{**********************************************************************
|
{**********************************************************************
|
||||||
OLEVariant Operators
|
OLEVariant Operators
|
||||||
|
Loading…
Reference in New Issue
Block a user