fpc/rtl/inc/variant.inc
2001-08-19 21:02:01 +00:00

280 lines
5.5 KiB
PHP

{
$Id$
This file is part of the Free Pascal run time library.
Copyright (c) 2001 by the Free Pascal development team
This include file contains the implementation for variants
support in FPC as far as it is part of the system unit
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
procedure variant_init(var v : variant);[Public,Alias:'FPC_VARIANT_INIT'];
begin
variantmanager.varinit(v);
end;
procedure variant_clear(var v : variant);[Public,Alias:'FPC_VARIANT_CLEAR'];
begin
variantmanager.varclear(v);
end;
{ Integer }
operator :=(const source : byte) dest : variant;
begin
end;
operator :=(const source : shortint) dest : variant;
begin
end;
operator :=(const source : word) dest : variant;
begin
end;
operator :=(const source : smallint) dest : variant;
begin
end;
operator :=(const source : dword) dest : variant;
begin
end;
operator :=(const source : longint) dest : variant;
begin
end;
operator :=(const source : qword) dest : variant;
begin
end;
operator :=(const source : int64) dest : variant;
begin
end;
{ Boolean }
operator :=(const source : boolean) dest : variant;
begin
end;
operator :=(const source : wordbool) dest : variant;
begin
end;
operator :=(const source : longbool) dest : variant;
begin
end;
{ Chars }
operator :=(const source : char) dest : variant;
begin
end;
operator :=(const source : widechar) dest : variant;
begin
end;
{ Strings }
operator :=(const source : shortstring) dest : variant;
begin
end;
operator :=(const source : ansistring) dest : variant;
begin
end;
operator :=(const source : widestring) dest : variant;
begin
end;
{ Floats }
operator :=(const source : single) dest : variant;
begin
end;
operator :=(const source : double) dest : variant;
begin
end;
operator :=(const source : extended) dest : variant;
begin
end;
operator :=(const source : comp) dest : variant;
begin
end;
{ Misc. }
{ Fixme!!!
operator :=(const source : currency) dest : variant;
begin
end;
operator :=(const source : tdatetime) dest : variant;
begin
end;
}
{**********************************************************************
from Variant assignments
**********************************************************************}
{ Integer }
operator :=(const source : variant) dest : byte;
begin
dest:=variantmanager.vartoint(source);
end;
operator :=(const source : variant) dest : shortint;
begin
dest:=variantmanager.vartoint(source);
end;
operator :=(const source : variant) dest : word;
var
l : longint;
begin
dest:=variantmanager.vartoint(source);
end;
operator :=(const source : variant) dest : smallint;
var
l : longint;
begin
dest:=variantmanager.vartoint(source);
end;
operator :=(const source : variant) dest : dword;
begin
dest:=variantmanager.vartoint(source);
end;
operator :=(const source : variant) dest : longint;
begin
dest:=variantmanager.vartoint(source);
end;
operator :=(const source : variant) dest : qword;
begin
dest:=variantmanager.vartoword64(source);
end;
operator :=(const source : variant) dest : int64;
begin
dest:=variantmanager.vartoint64(source);
end;
{ Boolean }
operator :=(const source : variant) dest : boolean;
begin
dest:=variantmanager.vartobool(source);
end;
operator :=(const source : variant) dest : wordbool;
begin
dest:=variantmanager.vartobool(source);
end;
operator :=(const source : variant) dest : longbool;
begin
dest:=variantmanager.vartobool(source);
end;
{ Chars }
operator :=(const source : variant) dest : char;
begin
end;
operator :=(const source : variant) dest : widechar;
begin
end;
{ Strings }
operator :=(const source : variant) dest : shortstring;
begin
end;
operator :=(const source : variant) dest : ansistring;
begin
variantmanager.vartolstr(dest,source);
end;
operator :=(const source : variant) dest : widestring;
begin
variantmanager.vartowstr(dest,source);
end;
{ Floats }
operator :=(const source : variant) dest : single;
begin
dest:=variantmanager.vartoreal(source);
end;
operator :=(const source : variant) dest : double;
begin
dest:=variantmanager.vartoreal(source);
end;
operator :=(const source : variant) dest : extended;
begin
dest:=variantmanager.vartoreal(source);
end;
operator :=(const source : variant) dest : comp;
begin
dest:=comp(variantmanager.vartoreal(source));
end;
{ Misc. }
{ FIXME !!!!!!!
operator :=(const source : variant) dest : currency;
begin
dest:=variantmanager.vartocurr(source);
end;
operator :=(const source : variant) dest : tdatetime;
begin
end;
}
procedure invalidvariantop;
begin
Runerror(221);
end;
procedure varclear(var v : tvardata);
begin
if not(v.vtype in [varempty,varerror,varnull]) then
invalidvariantop;
end;
procedure initvariantmanager;
var
i : longint;
begin
for i:=0 to (sizeof(tvariantmanager) div sizeof(pointer))-1 do
ppointer(@variantmanager+i*sizeof(pointer))^:=@invalidvariantop;
pointer(variantmanager.varclear):=@varclear
end;
{
$Log$
Revision 1.1 2001-08-19 21:02:01 florian
* fixed and added a lot of stuff to get the Jedi DX( headers
compiled
}