* 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:
Jonas Maebe 2009-02-28 17:08:47 +00:00
parent e9d8726f07
commit e9fcae46d9
3 changed files with 35 additions and 72 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;