mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-27 10:51:35 +01: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 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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user