* 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 ReadListBegin;
procedure ReadListEnd; procedure ReadListEnd;
function ReadRootComponent(ARoot: TComponent): TComponent; function ReadRootComponent(ARoot: TComponent): TComponent;
function ReadVariant: tvardata; function ReadVariant: Variant;
function ReadString: string; function ReadString: string;
function ReadWideString: WideString; function ReadWideString: WideString;
function ReadUnicodeString: UnicodeString; function ReadUnicodeString: UnicodeString;
@ -1175,7 +1175,7 @@ type
procedure WriteIdent(const Ident: string); virtual; abstract; procedure WriteIdent(const Ident: string); virtual; abstract;
procedure WriteInteger(Value: Int64); virtual; abstract; procedure WriteInteger(Value: Int64); virtual; abstract;
procedure WriteUInt64(Value: QWord); 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 WriteMethodName(const Name: String); virtual; abstract;
procedure WriteSet(Value: LongInt; SetType: Pointer); virtual; abstract; procedure WriteSet(Value: LongInt; SetType: Pointer); virtual; abstract;
procedure WriteString(const Value: String); virtual; abstract; procedure WriteString(const Value: String); virtual; abstract;
@ -1233,7 +1233,7 @@ type
procedure WriteString(const Value: String); override; procedure WriteString(const Value: String); override;
procedure WriteWideString(const Value: WideString); override; procedure WriteWideString(const Value: WideString); override;
procedure WriteUnicodeString(const Value: UnicodeString); override; procedure WriteUnicodeString(const Value: UnicodeString); override;
procedure WriteVariant(const VarValue: tvardata);override; procedure WriteVariant(const VarValue: Variant);override;
end; end;
TTextObjectWriter = class(TAbstractObjectWriter) TTextObjectWriter = class(TAbstractObjectWriter)
@ -1304,7 +1304,7 @@ type
procedure WriteString(const Value: string); procedure WriteString(const Value: string);
procedure WriteWideString(const Value: WideString); procedure WriteWideString(const Value: WideString);
procedure WriteUnicodeString(const Value: UnicodeString); procedure WriteUnicodeString(const Value: UnicodeString);
procedure WriteVariant(const VarValue: tvardata); procedure WriteVariant(const VarValue: Variant);
property RootAncestor: TComponent read FRootAncestor write FRootAncestor; property RootAncestor: TComponent read FRootAncestor write FRootAncestor;
property OnFindAncestor: TFindAncestorEvent read FOnFindAncestor write FOnFindAncestor; property OnFindAncestor: TFindAncestorEvent read FOnFindAncestor write FOnFindAncestor;
property OnWriteMethodProperty: TWriteMethodPropertyEvent read FOnWriteMethodProperty write FOnWriteMethodProperty; property OnWriteMethodProperty: TWriteMethodPropertyEvent read FOnWriteMethodProperty write FOnWriteMethodProperty;

View File

@ -1075,7 +1075,7 @@ begin
CheckValue(vaNull); CheckValue(vaNull);
end; end;
function TReader.ReadVariant: tvardata; function TReader.ReadVariant: variant;
var var
nv: TValueType; nv: TValueType;
begin begin
@ -1089,72 +1089,53 @@ begin
case nv of case nv of
vaNil: vaNil:
begin begin
Result.vtype:=varEmpty; Result:=system.unassigned;
end; end;
vaNull: vaNull:
begin begin
Result.vtype:=varNull; Result:=system.null;
end; end;
{ all integer sizes must be split for big endian systems } { all integer sizes must be split for big endian systems }
vaInt8: vaInt8,vaInt16,vaInt32:
begin begin
Result.vtype:=varShortInt; Result:=ReadInteger;
Result.vShortInt:=ReadInteger;
end;
vaInt16:
begin
Result.vtype:=varSmallInt;
Result.vSmallInt:=ReadInteger;
end;
vaInt32:
begin
Result.vtype:=varInteger;
Result.vInteger:=ReadInteger;
end; end;
vaInt64: vaInt64:
begin begin
Result.vtype:=varInt64; Result:=ReadInt64;
Result.vInt64:=ReadInt64;
end; end;
vaQWord: vaQWord:
begin begin
Result.vtype:=varQWord; Result:=QWord(ReadInt64);
Result.vInt64:=ReadInt64;
end; end;
vaFalse,vaTrue: vaFalse,vaTrue:
begin begin
Result.vtype:=varBoolean; Result:=(nv<>vaFalse);
Result.vBoolean:=(nv<>vaFalse);
end; end;
vaCurrency: vaCurrency:
begin begin
Result.vtype:=varCurrency; Result:=ReadCurrency;
Result.vCurrency:=ReadCurrency;
end; end;
{$ifndef fpunone} {$ifndef fpunone}
vaSingle: vaSingle:
begin begin
Result.vtype:=varSingle; Result:=ReadSingle;
Result.vSingle:=ReadSingle;
end; end;
vaExtended: vaExtended:
begin begin
Result.vtype:=varDouble; Result:=ReadFloat;
Result.vDouble:=ReadFloat;
end; end;
vaDate: vaDate:
begin begin
Result.vtype:=varDate; Result:=ReadDate;
Result.vDate:=ReadDate;
end; end;
{$endif fpunone} {$endif fpunone}
vaWString,vaUString,vaUTF8String: vaWString,vaUString,vaUTF8String:
begin begin
Result.vtype:=varOlestr; Result:=ReadWideString;
WideString(Pointer(Result.volestr)):=ReadWideString;
end; end;
else else
raise EReadError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(Result.vtype)]); raise EReadError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(nv)]);
end; end;
end; end;
@ -1274,7 +1255,6 @@ var
Method: TMethod; Method: TMethod;
Handled: Boolean; Handled: Boolean;
TmpStr: String; TmpStr: String;
VarTemp: tvardata;
begin begin
if not Assigned(PPropInfo(PropInfo)^.SetProc) then if not Assigned(PPropInfo(PropInfo)^.SetProc) then
raise EReadError.Create(SReadOnlyProperty); raise EReadError.Create(SReadOnlyProperty);
@ -1346,9 +1326,7 @@ begin
SetWideStrProp(Instance,PropInfo,ReadWideString); SetWideStrProp(Instance,PropInfo,ReadWideString);
tkVariant: tkVariant:
begin begin
{ can't use variant() typecast, pulls in variant unit } SetVariantProp(Instance,PropInfo,ReadVariant);
VarTemp:=ReadVariant;
SetVariantProp(Instance,PropInfo,PVariant(@VarTemp)^);
end; end;
tkClass: tkClass:
case FDriver.NextValue of case FDriver.NextValue of

View File

@ -373,9 +373,9 @@ begin
end; end;
end; end;
procedure TBinaryObjectWriter.WriteVariant(const VarValue: tvardata); procedure TBinaryObjectWriter.WriteVariant(const VarValue: variant);
begin begin
case VarValue.vtype of case tvardata(VarValue).vtype of
varEmpty: varEmpty:
begin begin
WriteValue(vaNil); WriteValue(vaNil);
@ -385,58 +385,42 @@ begin
WriteValue(vaNull); WriteValue(vaNull);
end; end;
{ all integer sizes must be split for big endian systems } { all integer sizes must be split for big endian systems }
varShortInt: varShortInt,varSmallInt,varInteger,varInt64:
begin begin
WriteInteger(VarValue.vshortint); WriteInteger(VarValue);
end;
varSmallInt:
begin
WriteInteger(VarValue.vsmallint);
end;
varInteger:
begin
WriteInteger(VarValue.vinteger);
end;
varInt64:
begin
WriteInteger(VarValue.vint64);
end; end;
varQWord: varQWord:
begin begin
WriteUInt64(qword(VarValue.vint64)); WriteUInt64(VarValue);
end; end;
varBoolean: varBoolean:
begin begin
WriteBoolean(VarValue.vboolean); WriteBoolean(VarValue);
end; end;
varCurrency: varCurrency:
begin begin
WriteCurrency(VarValue.vcurrency); WriteCurrency(VarValue);
end; end;
{$ifndef fpunone} {$ifndef fpunone}
varSingle: varSingle:
begin begin
WriteSingle(VarValue.vsingle); WriteSingle(VarValue);
end; end;
varDouble: varDouble:
begin begin
WriteFloat(VarValue.vdouble); WriteFloat(VarValue);
end; end;
varDate: varDate:
begin begin
WriteDate(VarValue.vdate); WriteDate(VarValue);
end; end;
{$endif fpunone} {$endif fpunone}
varOleStr: varOleStr,varString:
begin begin
WriteWideString(widestring(pointer(VarValue.volestr))); WriteWideString(VarValue);
end;
varString:
begin
WriteWideString(AnsiString(VarValue.vstring));
end; end;
else else
raise EWriteError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(VarValue.vtype)]); raise EWriteError.CreateFmt(SUnsupportedPropertyVariantType, [Ord(tvardata(VarValue).vtype)]);
end; end;
end; end;
@ -818,7 +802,7 @@ begin
Driver.WriteInteger(Value); Driver.WriteInteger(Value);
end; end;
procedure TWriter.WriteVariant(const VarValue: tvardata); procedure TWriter.WriteVariant(const VarValue: Variant);
begin begin
Driver.WriteVariant(VarValue); Driver.WriteVariant(VarValue);
end; end;
@ -1038,7 +1022,8 @@ begin
if (CompareByte(VarValue,DefVarValue,sizeof(VarValue)) <> 0) then if (CompareByte(VarValue,DefVarValue,sizeof(VarValue)) <> 0) then
begin begin
Driver.BeginProperty(FPropPath + PPropInfo(PropInfo)^.Name); Driver.BeginProperty(FPropPath + PPropInfo(PropInfo)^.Name);
WriteVariant(VarValue); { can't use variant() typecast, pulls in variants unit }
WriteVariant(pvariant(@VarValue)^);
Driver.EndProperty; Driver.EndProperty;
end; end;
end; end;