mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 19:39:31 +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 }
|
||||
procedure fpc_dynarray_incr_ref(p : pointer); [external name 'FPC_DYNARRAY_INCR_REF'];
|
||||
|
||||
|
||||
{ provide local access to dynarr_setlength }
|
||||
procedure int_dynarray_setlength(var p : pointer;pti : pointer;
|
||||
dimcount : dword;dims : pdynarrayindex);[external name 'FPC_DYNARR_SETLENGTH'];
|
||||
@ -337,3 +338,8 @@ function fpc_dynarray_copy(psrc : pointer;ti : pointer;
|
||||
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;
|
||||
vartype : longint;
|
||||
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 }
|
||||
|
||||
operator :=(const source : byte) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
Variantmanager.varfromInt(Dest,Source,1);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : shortint) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
Variantmanager.varfromInt(Dest,Source,-1);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : word) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
Variantmanager.varfromInt(Dest,Source,2);
|
||||
end;
|
||||
@ -304,6 +301,12 @@ operator :=(const source : tdatetime) dest : variant;{$ifdef SYSTEMINLINE}inline
|
||||
VariantManager.VarFromTDateTime(Dest,Source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : error) dest : variant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
Variantmanager.varfromInt(Dest,Source,-sizeof(error));
|
||||
end;
|
||||
|
||||
{**********************************************************************
|
||||
from Variant assignments
|
||||
**********************************************************************}
|
||||
@ -318,38 +321,33 @@ end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : shortint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : word;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : smallint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : dword;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : longint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : qword;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
@ -471,15 +469,15 @@ end;
|
||||
|
||||
{ Misc. }
|
||||
operator :=(const source : variant) dest : currency;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
dest:=variantmanager.vartocurr(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartocurr(source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : tdatetime;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
dest:=variantmanager.vartotdatetime(source);
|
||||
end;
|
||||
begin
|
||||
dest:=variantmanager.vartotdatetime(source);
|
||||
end;
|
||||
|
||||
|
||||
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);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : variant) dest : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
dest:=variantmanager.vartoint(source);
|
||||
end;
|
||||
{**********************************************************************
|
||||
Operators
|
||||
**********************************************************************}
|
||||
@ -781,6 +784,11 @@ operator :=(const source : olevariant) dest : tdatetime;{$ifdef SYSTEMINLINE}inl
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : olevariant) dest : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
dest:=variantmanager.vartoint(variant(tvardata(source)));
|
||||
end;
|
||||
|
||||
{**********************************************************************
|
||||
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}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,-1);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : word) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,2);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : smallint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,-2);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : dword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,4);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : longint) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,-4);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : qword) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,8);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : int64) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,1);
|
||||
variantmanager.olevarfromint(dest,source,-8);
|
||||
end;
|
||||
|
||||
{ Boolean }
|
||||
@ -928,6 +936,11 @@ operator :=(const source : tdatetime) dest : olevariant;{$ifdef SYSTEMINLINE}inl
|
||||
variantmanager.varfromtdatetime(variant(tvardata(dest)),source);
|
||||
end;
|
||||
|
||||
|
||||
operator :=(const source : error) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
begin
|
||||
variantmanager.olevarfromint(dest,source,-sizeof(error));
|
||||
end;
|
||||
{**********************************************************************
|
||||
Variant manager functions
|
||||
**********************************************************************}
|
||||
|
@ -247,6 +247,7 @@ operator :=(const source : comp) dest : variant;{$ifdef SYSTEMINLINE}inline;{$en
|
||||
{ Misc. }
|
||||
operator :=(const source : currency) 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
|
||||
@ -296,6 +297,7 @@ operator :=(const source : variant) dest : olevariant;{$ifdef SYSTEMINLINE}inlin
|
||||
{ Misc. }
|
||||
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 : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
{**********************************************************************
|
||||
Operators
|
||||
@ -370,6 +372,7 @@ operator :=(const source : olevariant) dest : comp;{$ifdef SYSTEMINLINE}inline;{
|
||||
{ Misc. }
|
||||
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 : error;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
{**********************************************************************
|
||||
to OLEVariant assignments
|
||||
@ -416,6 +419,7 @@ operator :=(const source : comp) dest : olevariant;{$ifdef SYSTEMINLINE}inline;{
|
||||
{ Misc. }
|
||||
operator :=(const source : currency) 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
|
||||
|
Loading…
Reference in New Issue
Block a user