mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 04:59:26 +02:00
* replaced "tvardata" with "variant" in the interface for streaming
variants (without pulling in the variants unit) git-svn-id: trunk@12824 -
This commit is contained in:
parent
e9d8726f07
commit
e9fcae46d9
@ -1123,7 +1123,7 @@ type
|
||||
procedure ReadListBegin;
|
||||
procedure ReadListEnd;
|
||||
function ReadRootComponent(ARoot: TComponent): TComponent;
|
||||
function ReadVariant: tvardata;
|
||||
function ReadVariant: Variant;
|
||||
function ReadString: string;
|
||||
function ReadWideString: WideString;
|
||||
function ReadUnicodeString: UnicodeString;
|
||||
@ -1175,7 +1175,7 @@ type
|
||||
procedure WriteIdent(const Ident: string); virtual; abstract;
|
||||
procedure WriteInteger(Value: Int64); virtual; abstract;
|
||||
procedure WriteUInt64(Value: QWord); virtual; abstract;
|
||||
procedure WriteVariant(const Value: tvardata); virtual; abstract;
|
||||
procedure WriteVariant(const Value: Variant); virtual; abstract;
|
||||
procedure WriteMethodName(const Name: String); virtual; abstract;
|
||||
procedure WriteSet(Value: LongInt; SetType: Pointer); virtual; abstract;
|
||||
procedure WriteString(const Value: String); virtual; abstract;
|
||||
@ -1233,7 +1233,7 @@ type
|
||||
procedure WriteString(const Value: String); override;
|
||||
procedure WriteWideString(const Value: WideString); override;
|
||||
procedure WriteUnicodeString(const Value: UnicodeString); override;
|
||||
procedure WriteVariant(const VarValue: tvardata);override;
|
||||
procedure WriteVariant(const VarValue: Variant);override;
|
||||
end;
|
||||
|
||||
TTextObjectWriter = class(TAbstractObjectWriter)
|
||||
@ -1304,7 +1304,7 @@ type
|
||||
procedure WriteString(const Value: string);
|
||||
procedure WriteWideString(const Value: WideString);
|
||||
procedure WriteUnicodeString(const Value: UnicodeString);
|
||||
procedure WriteVariant(const VarValue: tvardata);
|
||||
procedure WriteVariant(const VarValue: Variant);
|
||||
property RootAncestor: TComponent read FRootAncestor write FRootAncestor;
|
||||
property OnFindAncestor: TFindAncestorEvent read FOnFindAncestor write FOnFindAncestor;
|
||||
property OnWriteMethodProperty: TWriteMethodPropertyEvent read FOnWriteMethodProperty write FOnWriteMethodProperty;
|
||||
|
@ -1075,7 +1075,7 @@ begin
|
||||
CheckValue(vaNull);
|
||||
end;
|
||||
|
||||
function TReader.ReadVariant: tvardata;
|
||||
function TReader.ReadVariant: variant;
|
||||
var
|
||||
nv: TValueType;
|
||||
begin
|
||||
@ -1089,72 +1089,53 @@ begin
|
||||
case nv of
|
||||
vaNil:
|
||||
begin
|
||||
Result.vtype:=varEmpty;
|
||||
Result:=system.unassigned;
|
||||
end;
|
||||
vaNull:
|
||||
begin
|
||||
Result.vtype:=varNull;
|
||||
Result:=system.null;
|
||||
end;
|
||||
{ all integer sizes must be split for big endian systems }
|
||||
vaInt8:
|
||||
vaInt8,vaInt16,vaInt32:
|
||||
begin
|
||||
Result.vtype:=varShortInt;
|
||||
Result.vShortInt:=ReadInteger;
|
||||
end;
|
||||
vaInt16:
|
||||
begin
|
||||
Result.vtype:=varSmallInt;
|
||||
Result.vSmallInt:=ReadInteger;
|
||||
end;
|
||||
vaInt32:
|
||||
begin
|
||||
Result.vtype:=varInteger;
|
||||
Result.vInteger:=ReadInteger;
|
||||
Result:=ReadInteger;
|
||||
end;
|
||||
vaInt64:
|
||||
begin
|
||||
Result.vtype:=varInt64;
|
||||
Result.vInt64:=ReadInt64;
|
||||
Result:=ReadInt64;
|
||||
end;
|
||||
vaQWord:
|
||||
begin
|
||||
Result.vtype:=varQWord;
|
||||
Result.vInt64:=ReadInt64;
|
||||
Result:=QWord(ReadInt64);
|
||||
end;
|
||||
vaFalse,vaTrue:
|
||||
begin
|
||||
Result.vtype:=varBoolean;
|
||||
Result.vBoolean:=(nv<>vaFalse);
|
||||
Result:=(nv<>vaFalse);
|
||||
end;
|
||||
vaCurrency:
|
||||
begin
|
||||
Result.vtype:=varCurrency;
|
||||
Result.vCurrency:=ReadCurrency;
|
||||
Result:=ReadCurrency;
|
||||
end;
|
||||
{$ifndef fpunone}
|
||||
vaSingle:
|
||||
begin
|
||||
Result.vtype:=varSingle;
|
||||
Result.vSingle:=ReadSingle;
|
||||
Result:=ReadSingle;
|
||||
end;
|
||||
vaExtended:
|
||||
begin
|
||||
Result.vtype:=varDouble;
|
||||
Result.vDouble:=ReadFloat;
|
||||
Result:=ReadFloat;
|
||||
end;
|
||||
vaDate:
|
||||
begin
|
||||
Result.vtype:=varDate;
|
||||
Result.vDate:=ReadDate;
|
||||
Result:=ReadDate;
|
||||
end;
|
||||
{$endif fpunone}
|
||||
vaWString,vaUString,vaUTF8String:
|
||||
begin
|
||||
Result.vtype:=varOlestr;
|
||||
WideString(Pointer(Result.volestr)):=ReadWideString;
|
||||
Result:=ReadWideString;
|
||||
end;
|
||||
else
|
||||
raise EReadError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(Result.vtype)]);
|
||||
raise EReadError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(nv)]);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1274,7 +1255,6 @@ var
|
||||
Method: TMethod;
|
||||
Handled: Boolean;
|
||||
TmpStr: String;
|
||||
VarTemp: tvardata;
|
||||
begin
|
||||
if not Assigned(PPropInfo(PropInfo)^.SetProc) then
|
||||
raise EReadError.Create(SReadOnlyProperty);
|
||||
@ -1346,9 +1326,7 @@ begin
|
||||
SetWideStrProp(Instance,PropInfo,ReadWideString);
|
||||
tkVariant:
|
||||
begin
|
||||
{ can't use variant() typecast, pulls in variant unit }
|
||||
VarTemp:=ReadVariant;
|
||||
SetVariantProp(Instance,PropInfo,PVariant(@VarTemp)^);
|
||||
SetVariantProp(Instance,PropInfo,ReadVariant);
|
||||
end;
|
||||
tkClass:
|
||||
case FDriver.NextValue of
|
||||
|
@ -373,9 +373,9 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBinaryObjectWriter.WriteVariant(const VarValue: tvardata);
|
||||
procedure TBinaryObjectWriter.WriteVariant(const VarValue: variant);
|
||||
begin
|
||||
case VarValue.vtype of
|
||||
case tvardata(VarValue).vtype of
|
||||
varEmpty:
|
||||
begin
|
||||
WriteValue(vaNil);
|
||||
@ -385,58 +385,42 @@ begin
|
||||
WriteValue(vaNull);
|
||||
end;
|
||||
{ all integer sizes must be split for big endian systems }
|
||||
varShortInt:
|
||||
varShortInt,varSmallInt,varInteger,varInt64:
|
||||
begin
|
||||
WriteInteger(VarValue.vshortint);
|
||||
end;
|
||||
varSmallInt:
|
||||
begin
|
||||
WriteInteger(VarValue.vsmallint);
|
||||
end;
|
||||
varInteger:
|
||||
begin
|
||||
WriteInteger(VarValue.vinteger);
|
||||
end;
|
||||
varInt64:
|
||||
begin
|
||||
WriteInteger(VarValue.vint64);
|
||||
WriteInteger(VarValue);
|
||||
end;
|
||||
varQWord:
|
||||
begin
|
||||
WriteUInt64(qword(VarValue.vint64));
|
||||
WriteUInt64(VarValue);
|
||||
end;
|
||||
varBoolean:
|
||||
begin
|
||||
WriteBoolean(VarValue.vboolean);
|
||||
WriteBoolean(VarValue);
|
||||
end;
|
||||
varCurrency:
|
||||
begin
|
||||
WriteCurrency(VarValue.vcurrency);
|
||||
WriteCurrency(VarValue);
|
||||
end;
|
||||
{$ifndef fpunone}
|
||||
varSingle:
|
||||
begin
|
||||
WriteSingle(VarValue.vsingle);
|
||||
WriteSingle(VarValue);
|
||||
end;
|
||||
varDouble:
|
||||
begin
|
||||
WriteFloat(VarValue.vdouble);
|
||||
WriteFloat(VarValue);
|
||||
end;
|
||||
varDate:
|
||||
begin
|
||||
WriteDate(VarValue.vdate);
|
||||
WriteDate(VarValue);
|
||||
end;
|
||||
{$endif fpunone}
|
||||
varOleStr:
|
||||
varOleStr,varString:
|
||||
begin
|
||||
WriteWideString(widestring(pointer(VarValue.volestr)));
|
||||
end;
|
||||
varString:
|
||||
begin
|
||||
WriteWideString(AnsiString(VarValue.vstring));
|
||||
WriteWideString(VarValue);
|
||||
end;
|
||||
else
|
||||
raise EWriteError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(VarValue.vtype)]);
|
||||
raise EWriteError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(tvardata(VarValue).vtype)]);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -818,7 +802,7 @@ begin
|
||||
Driver.WriteInteger(Value);
|
||||
end;
|
||||
|
||||
procedure TWriter.WriteVariant(const VarValue: tvardata);
|
||||
procedure TWriter.WriteVariant(const VarValue: Variant);
|
||||
begin
|
||||
Driver.WriteVariant(VarValue);
|
||||
end;
|
||||
@ -1038,7 +1022,8 @@ begin
|
||||
if (CompareByte(VarValue,DefVarValue,sizeof(VarValue)) <> 0) then
|
||||
begin
|
||||
Driver.BeginProperty(FPropPath + PPropInfo(PropInfo)^.Name);
|
||||
WriteVariant(VarValue);
|
||||
{ can't use variant() typecast, pulls in variants unit }
|
||||
WriteVariant(pvariant(@VarValue)^);
|
||||
Driver.EndProperty;
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user