You've already forked lazarus-ccr
Record support :
- Field may be hidden by calling SetFieldSerializationVisibility() - Field may be mapped to XML Attribute by calling RegisterAttributeProperty() Some methods and routines have been marked "inline". By default the "inline" modifier is not enable. To enable it uncomment the "//{$DEFINE USE_INLINE}" line in wst_global.inc. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@244 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -16,7 +16,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Contnrs, TypInfo,
|
||||
base_service_intf, binary_streamer;
|
||||
base_service_intf, binary_streamer, wst_types;
|
||||
|
||||
{$DEFINE wst_binary_header}
|
||||
|
||||
@ -30,8 +30,11 @@ const
|
||||
|
||||
type
|
||||
EBinaryFormatterException = class(EServiceException)
|
||||
End;
|
||||
end;
|
||||
|
||||
EBinaryException = class(EBaseRemoteException)
|
||||
end;
|
||||
|
||||
TDataName = AnsiString;
|
||||
TDataType = (
|
||||
dtInt8U, dtInt8S,
|
||||
@ -178,94 +181,94 @@ type
|
||||
protected
|
||||
function HasScope():Boolean;
|
||||
procedure CheckScope();
|
||||
procedure ClearStack();
|
||||
procedure PushStack(AScopeObject : PDataBuffer;Const AScopeType : TScopeType = stObject);
|
||||
function StackTop():TStackItem;
|
||||
function PopStack():TStackItem;
|
||||
function GetRootData() : PDataBuffer;
|
||||
procedure ClearStack();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PushStack(AScopeObject : PDataBuffer;Const AScopeType : TScopeType = stObject);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function StackTop():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PopStack():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetRootData() : PDataBuffer;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
protected
|
||||
procedure PutFloat(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TFloat_Extended_10
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutInt(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TInt64S
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutStr(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : String
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutEnum(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TEnumData
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutBool(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Boolean
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutInt64(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Int64
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutObj(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TObject
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutRecord(
|
||||
const AName : string;
|
||||
const ATypeInfo : PTypeInfo;
|
||||
const AData : Pointer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
function GetDataBuffer(var AName : String):PDataBuffer;
|
||||
function GetDataBuffer(var AName : String):PDataBuffer;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetEnum(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TEnumData
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetBool(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Boolean
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetFloat(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TFloat_Extended_10
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetInt(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TInt64S
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetInt64(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Int64
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetStr(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : String
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetObj(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TObject
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetRecord(
|
||||
const ATypeInfo : PTypeInfo;
|
||||
var AName : String;
|
||||
var AData : Pointer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
public
|
||||
constructor Create();override;
|
||||
destructor Destroy();override;
|
||||
|
@ -1097,7 +1097,7 @@ type
|
||||
FPool : TIntfPool;
|
||||
FTimeOut: PtrUInt;
|
||||
private
|
||||
procedure PreparePool();
|
||||
procedure PreparePool();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure SetPooled(const AValue: Boolean);
|
||||
procedure SetPoolMax(const AValue: PtrInt);
|
||||
procedure SetPoolMin(const AValue: PtrInt);
|
||||
@ -1138,7 +1138,7 @@ type
|
||||
FExternalNames : TStrings;
|
||||
FInternalNames : TStrings;
|
||||
private
|
||||
procedure CreateInternalObjects();
|
||||
procedure CreateInternalObjects();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
public
|
||||
constructor Create(
|
||||
ANameSpace : string;
|
||||
@ -1146,12 +1146,12 @@ type
|
||||
Const ADeclaredName : string = ''
|
||||
);
|
||||
destructor Destroy();override;
|
||||
function AddPascalSynonym(const ASynonym : string):TTypeRegistryItem;//inline;
|
||||
function IsSynonym(const APascalTypeName : string):Boolean;//inline;
|
||||
function AddPascalSynonym(const ASynonym : string):TTypeRegistryItem;
|
||||
function IsSynonym(const APascalTypeName : string):Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
procedure RegisterExternalPropertyName(const APropName, AExtPropName : string);
|
||||
function GetExternalPropertyName(const APropName : string) : string;
|
||||
function GetInternalPropertyName(const AExtPropName : string) : string;
|
||||
function GetExternalPropertyName(const APropName : string) : string;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetInternalPropertyName(const AExtPropName : string) : string;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
procedure RegisterObject(const APropName : string; const AObject : TObject);
|
||||
function GetObject(const APropName : string) : TObject;
|
||||
@ -1167,8 +1167,8 @@ type
|
||||
TTypeRegistry = class
|
||||
Private
|
||||
FList : TObjectList;
|
||||
function GetCount: Integer;
|
||||
function GetItemByIndex(Index: Integer): TTypeRegistryItem;
|
||||
function GetCount: Integer;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetItemByIndex(Index: Integer): TTypeRegistryItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetItemByTypeInfo(Index: PTypeInfo): TTypeRegistryItem;
|
||||
Public
|
||||
constructor Create();
|
||||
@ -1222,8 +1222,18 @@ const
|
||||
PROP_LIST_DELIMITER = ';';
|
||||
FIELDS_STRING = '__FIELDS__';
|
||||
|
||||
function GetTypeRegistry():TTypeRegistry;
|
||||
function GetTypeRegistry():TTypeRegistry;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure RegisterStdTypes();
|
||||
procedure RegisterAttributeProperty(
|
||||
const ATypeInfo : PTypeInfo; // must be tkClass or tkRecord
|
||||
const AProperty : shortstring
|
||||
);
|
||||
procedure SetFieldSerializationVisibility(
|
||||
const ATypeInfo : PTypeInfo; // must be tkRecord
|
||||
const AField : shortstring;
|
||||
const AVisibility : Boolean
|
||||
);
|
||||
|
||||
|
||||
function IsStoredPropClass(AClass : TClass;PropInfo : PPropInfo) : TPropStoreType;
|
||||
|
||||
@ -1336,6 +1346,62 @@ begin
|
||||
r.Register(sXSD_NS,TypeInfo(TComplexBooleanContentRemotable),'boolean').AddPascalSynonym('TComplexBooleanContentRemotable');
|
||||
end;
|
||||
|
||||
procedure SetFieldSerializationVisibility(
|
||||
const ATypeInfo : PTypeInfo; // must be tkRecord
|
||||
const AField : shortstring;
|
||||
const AVisibility : Boolean
|
||||
);
|
||||
var
|
||||
recordData : TRecordRttiDataObject;
|
||||
begin
|
||||
if Assigned(ATypeInfo) and ( ATypeInfo^.Kind = tkRecord ) and
|
||||
( not IsStrEmpty(AField) )
|
||||
then begin
|
||||
recordData := GetTypeRegistry().ItemByTypeInfo[ATypeInfo].GetObject(FIELDS_STRING) as TRecordRttiDataObject;
|
||||
if Assigned(recordData) then begin
|
||||
recordData.GetField(AField)^.Visible := AVisibility;
|
||||
end else begin
|
||||
raise EServiceConfigException.CreateFmt('Record extended RTTI informations not found in type registry : "%s".',[ATypeInfo^.Name]);
|
||||
end;
|
||||
end else begin
|
||||
raise EServiceConfigException.Create('Invalid parameters.');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure RegisterAttributeProperty(
|
||||
const ATypeInfo : PTypeInfo;
|
||||
const AProperty : shortstring
|
||||
);
|
||||
var
|
||||
ok : Boolean;
|
||||
recordData : TRecordRttiDataObject;
|
||||
begin
|
||||
ok := False;
|
||||
if Assigned(ATypeInfo) and
|
||||
( not IsStrEmpty(AProperty) )
|
||||
then begin
|
||||
case ATypeInfo^.Kind of
|
||||
tkClass :
|
||||
begin
|
||||
if GetTypeData(ATypeInfo)^.ClassType.InheritsFrom(TAbstractComplexRemotable) then begin
|
||||
TAbstractComplexRemotableClass(GetTypeData(ATypeInfo)^.ClassType).RegisterAttributeProperty(AProperty);
|
||||
ok := True;
|
||||
end;
|
||||
end;
|
||||
tkRecord :
|
||||
begin
|
||||
recordData := GetTypeRegistry().ItemByTypeInfo[ATypeInfo].GetObject(FIELDS_STRING) as TRecordRttiDataObject;
|
||||
if Assigned(recordData) then begin
|
||||
recordData.GetField(AProperty)^.IsAttribute := True;
|
||||
ok := True;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if not ok then
|
||||
raise EServiceConfigException.Create('Invalid parameters.');
|
||||
end;
|
||||
|
||||
{$IFDEF FPC}
|
||||
function IsStoredPropClass(AClass : TClass;PropInfo : PPropInfo) : TPropStoreType;
|
||||
begin
|
||||
@ -2392,7 +2458,7 @@ begin
|
||||
inherited Destroy();
|
||||
end;
|
||||
|
||||
function TTypeRegistryItem.AddPascalSynonym(const ASynonym: string):TTypeRegistryItem; //inline;
|
||||
function TTypeRegistryItem.AddPascalSynonym(const ASynonym: string):TTypeRegistryItem;
|
||||
begin
|
||||
Result := Self;
|
||||
if AnsiSameText(ASynonym,DataType^.Name) then
|
||||
@ -2405,7 +2471,7 @@ begin
|
||||
FSynonymTable.Add(AnsiLowerCase(ASynonym));
|
||||
end;
|
||||
|
||||
function TTypeRegistryItem.IsSynonym(const APascalTypeName: string): Boolean;//inline;
|
||||
function TTypeRegistryItem.IsSynonym(const APascalTypeName: string): Boolean;
|
||||
begin
|
||||
Result := AnsiSameText(APascalTypeName,DataType^.Name);
|
||||
if ( not Result ) and Assigned(FSynonymTable) then
|
||||
@ -4614,64 +4680,66 @@ begin
|
||||
ss := AStore.GetSerializationStyle();
|
||||
for i := 0 to Pred(typData^.FieldCount) do begin
|
||||
p := @(typData^.Fields[i]);
|
||||
pt := p^.TypeInfo^;//{$IFNDEF FPC}^{$ENDIF};
|
||||
{if IsAttributeProperty(p^.Name) then begin
|
||||
if ( ss <> ssAttibuteSerialization ) then
|
||||
ss := ssAttibuteSerialization;
|
||||
end else begin
|
||||
if ( ss <> ssNodeSerialization ) then
|
||||
ss := ssNodeSerialization;
|
||||
end;
|
||||
if ( ss <> AStore.GetSerializationStyle() ) then
|
||||
AStore.SetSerializationStyle(ss);}
|
||||
AStore.SetSerializationStyle(ssNodeSerialization);
|
||||
prpName := typRegItem.GetExternalPropertyName(p^.Name);
|
||||
recFieldAddress := recStart;
|
||||
Inc(recFieldAddress,p^.Offset);
|
||||
case pt^.Kind of
|
||||
tkInt64 : AStore.Put(prpName,pt,PInt64(recFieldAddress)^);
|
||||
{$IFDEF HAS_QWORD}
|
||||
tkQWord : AStore.Put(prpName,pt,PQWord(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} : AStore.Put(prpName,pt,PString(recFieldAddress)^);
|
||||
tkClass : AStore.Put(prpName,pt,PObject(recFieldAddress)^);
|
||||
tkRecord : AStore.Put(prpName,pt,Pointer(recFieldAddress)^);
|
||||
{$IFDEF FPC}
|
||||
tkBool : AStore.Put(prpName,pt,PBoolean(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkEnumeration,tkInteger :
|
||||
begin
|
||||
{$IFNDEF FPC}
|
||||
if ( pt^.Kind = tkEnumeration ) and
|
||||
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||
then begin
|
||||
AStore.Put(prpName,pt,PBoolean(recFieldAddress)^);
|
||||
end else begin
|
||||
if p^.Visible then begin
|
||||
pt := p^.TypeInfo^;
|
||||
if p^.IsAttribute then begin
|
||||
if ( ss <> ssAttibuteSerialization ) then
|
||||
ss := ssAttibuteSerialization;
|
||||
end else begin
|
||||
if ( ss <> ssNodeSerialization ) then
|
||||
ss := ssNodeSerialization;
|
||||
end;
|
||||
if ( ss <> AStore.GetSerializationStyle() ) then
|
||||
AStore.SetSerializationStyle(ss);
|
||||
AStore.SetSerializationStyle(ss);
|
||||
prpName := typRegItem.GetExternalPropertyName(p^.Name);
|
||||
recFieldAddress := recStart;
|
||||
Inc(recFieldAddress,p^.Offset);
|
||||
case pt^.Kind of
|
||||
tkInt64 : AStore.Put(prpName,pt,PInt64(recFieldAddress)^);
|
||||
{$IFDEF HAS_QWORD}
|
||||
tkQWord : AStore.Put(prpName,pt,PQWord(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
case GetTypeData(pt)^.OrdType of
|
||||
otSByte : AStore.Put(prpName,pt,PShortInt(recFieldAddress)^);
|
||||
otUByte : AStore.Put(prpName,pt,PByte(recFieldAddress)^);
|
||||
otSWord : AStore.Put(prpName,pt,PSmallInt(recFieldAddress)^);
|
||||
otUWord : AStore.Put(prpName,pt,PWord(recFieldAddress)^);
|
||||
otSLong : AStore.Put(prpName,pt,PLongint(recFieldAddress)^);
|
||||
otULong : AStore.Put(prpName,pt,PLongWord(recFieldAddress)^);
|
||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} : AStore.Put(prpName,pt,PString(recFieldAddress)^);
|
||||
tkClass : AStore.Put(prpName,pt,PObject(recFieldAddress)^);
|
||||
tkRecord : AStore.Put(prpName,pt,Pointer(recFieldAddress)^);
|
||||
{$IFDEF FPC}
|
||||
tkBool : AStore.Put(prpName,pt,PBoolean(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkEnumeration,tkInteger :
|
||||
begin
|
||||
{$IFNDEF FPC}
|
||||
if ( pt^.Kind = tkEnumeration ) and
|
||||
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||
then begin
|
||||
AStore.Put(prpName,pt,PBoolean(recFieldAddress)^);
|
||||
end else begin
|
||||
{$ENDIF}
|
||||
case GetTypeData(pt)^.OrdType of
|
||||
otSByte : AStore.Put(prpName,pt,PShortInt(recFieldAddress)^);
|
||||
otUByte : AStore.Put(prpName,pt,PByte(recFieldAddress)^);
|
||||
otSWord : AStore.Put(prpName,pt,PSmallInt(recFieldAddress)^);
|
||||
otUWord : AStore.Put(prpName,pt,PWord(recFieldAddress)^);
|
||||
otSLong : AStore.Put(prpName,pt,PLongint(recFieldAddress)^);
|
||||
otULong : AStore.Put(prpName,pt,PLongWord(recFieldAddress)^);
|
||||
end;
|
||||
{$IFNDEF FPC}
|
||||
end;
|
||||
{$IFNDEF FPC}
|
||||
{$ENDIF}
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
tkFloat :
|
||||
begin
|
||||
case GetTypeData(pt)^.FloatType of
|
||||
ftSingle : AStore.Put(prpName,pt,PSingle(recFieldAddress)^);
|
||||
ftDouble : AStore.Put(prpName,pt,PDouble(recFieldAddress)^);
|
||||
ftExtended : AStore.Put(prpName,pt,PExtended(recFieldAddress)^);
|
||||
ftCurr : AStore.Put(prpName,pt,PCurrency(recFieldAddress)^);
|
||||
{$IFDEF HAS_COMP}
|
||||
ftComp : AStore.Put(prpName,pt,PComp(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkFloat :
|
||||
begin
|
||||
case GetTypeData(pt)^.FloatType of
|
||||
ftSingle : AStore.Put(prpName,pt,PSingle(recFieldAddress)^);
|
||||
ftDouble : AStore.Put(prpName,pt,PDouble(recFieldAddress)^);
|
||||
ftExtended : AStore.Put(prpName,pt,PExtended(recFieldAddress)^);
|
||||
ftCurr : AStore.Put(prpName,pt,PCurrency(recFieldAddress)^);
|
||||
{$IFDEF HAS_COMP}
|
||||
ftComp : AStore.Put(prpName,pt,PComp(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -4694,7 +4762,6 @@ var
|
||||
pt : PTypeInfo;
|
||||
propName : String;
|
||||
p : PRecordFieldInfo;
|
||||
persistType : TPropStoreType;
|
||||
oldSS,ss : TSerializationStyle;
|
||||
typRegItem : TTypeRegistryItem;
|
||||
typDataObj : TObject;
|
||||
@ -4718,70 +4785,71 @@ begin
|
||||
recStart := PByte(ARecord);
|
||||
for i := 0 to Pred(typData^.FieldCount) do begin
|
||||
p := @(typData^.Fields[i]);
|
||||
persistType := pstOptional;// IsStoredPropClass(objTypeData^.ClassType,p);
|
||||
pt := p^.TypeInfo^;//{$IFNDEF FPC}^{$ENDIF};
|
||||
propName := typRegItem.GetExternalPropertyName(p^.Name);
|
||||
{if IsAttributeProperty(p^.Name) then begin
|
||||
ss := ssAttibuteSerialization;
|
||||
end else begin
|
||||
ss := ssNodeSerialization;
|
||||
end;
|
||||
if ( ss <> AStore.GetSerializationStyle() ) then
|
||||
AStore.SetSerializationStyle(ss);}
|
||||
AStore.SetSerializationStyle(ssNodeSerialization);
|
||||
recFieldAddress := recStart;
|
||||
Inc(recFieldAddress,p^.Offset);
|
||||
try
|
||||
Case pt^.Kind Of
|
||||
tkInt64 : AStore.Get(pt,propName,PInt64(recFieldAddress)^);
|
||||
{$IFDEF HAS_QWORD}
|
||||
tkQWord : AStore.Get(pt,propName,PQWord(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkLString{$IFDEF FPC}, tkAString{$ENDIF} : AStore.Get(pt,propName,PString(recFieldAddress)^);
|
||||
{$IFDEF FPC}
|
||||
tkBool : AStore.Get(pt,propName,PBoolean(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkClass : AStore.Get(pt,propName,PObject(recFieldAddress)^);
|
||||
tkRecord : AStore.Get(pt,propName,Pointer(recFieldAddress)^);
|
||||
tkEnumeration,tkInteger :
|
||||
Begin
|
||||
{$IFNDEF FPC}
|
||||
if ( pt^.Kind = tkEnumeration ) and
|
||||
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||
then begin
|
||||
AStore.Get(pt,propName,PBoolean(recFieldAddress)^);
|
||||
end else begin
|
||||
{$ENDIF}
|
||||
case GetTypeData(pt)^.OrdType Of
|
||||
otSByte : AStore.Get(pt,propName,PShortInt(recFieldAddress)^);
|
||||
otUByte : AStore.Get(pt,propName,PByte(recFieldAddress)^);
|
||||
otSWord : AStore.Get(pt,propName,PSmallInt(recFieldAddress)^);
|
||||
otUWord : AStore.Get(pt,propName,PWord(recFieldAddress)^);
|
||||
otSLong : AStore.Get(pt,propName,PLongint(recFieldAddress)^);
|
||||
otULong : AStore.Get(pt,propName,PLongWord(recFieldAddress)^);
|
||||
end;
|
||||
{$IFNDEF FPC}
|
||||
end;
|
||||
{$ENDIF}
|
||||
End;
|
||||
tkFloat :
|
||||
begin
|
||||
case GetTypeData(pt)^.FloatType of
|
||||
ftSingle : AStore.Get(pt,propName,PSingle(recFieldAddress)^);
|
||||
ftDouble : AStore.Get(pt,propName,PDouble(recFieldAddress)^);
|
||||
ftExtended : AStore.Get(pt,propName,PExtended(recFieldAddress)^);
|
||||
ftCurr : AStore.Get(pt,propName,PCurrency(recFieldAddress)^);
|
||||
{$IFDEF HAS_COMP}
|
||||
ftComp : AStore.Get(pt,propName,PComp(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
End;
|
||||
except
|
||||
on E : EServiceException do begin
|
||||
if ( persistType = pstAlways ) then
|
||||
raise;
|
||||
if p^.Visible then begin
|
||||
pt := p^.TypeInfo^;
|
||||
propName := typRegItem.GetExternalPropertyName(p^.Name);
|
||||
if p^.IsAttribute then begin
|
||||
ss := ssAttibuteSerialization;
|
||||
end else begin
|
||||
ss := ssNodeSerialization;
|
||||
end;
|
||||
if ( ss <> AStore.GetSerializationStyle() ) then
|
||||
AStore.SetSerializationStyle(ss);
|
||||
AStore.SetSerializationStyle(ss);
|
||||
recFieldAddress := recStart;
|
||||
Inc(recFieldAddress,p^.Offset);
|
||||
//try
|
||||
Case pt^.Kind Of
|
||||
tkInt64 : AStore.Get(pt,propName,PInt64(recFieldAddress)^);
|
||||
{$IFDEF HAS_QWORD}
|
||||
tkQWord : AStore.Get(pt,propName,PQWord(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkLString{$IFDEF FPC}, tkAString{$ENDIF} : AStore.Get(pt,propName,PString(recFieldAddress)^);
|
||||
{$IFDEF FPC}
|
||||
tkBool : AStore.Get(pt,propName,PBoolean(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
tkClass : AStore.Get(pt,propName,PObject(recFieldAddress)^);
|
||||
tkRecord : AStore.Get(pt,propName,Pointer(recFieldAddress)^);
|
||||
tkEnumeration,tkInteger :
|
||||
Begin
|
||||
{$IFNDEF FPC}
|
||||
if ( pt^.Kind = tkEnumeration ) and
|
||||
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||
then begin
|
||||
AStore.Get(pt,propName,PBoolean(recFieldAddress)^);
|
||||
end else begin
|
||||
{$ENDIF}
|
||||
case GetTypeData(pt)^.OrdType Of
|
||||
otSByte : AStore.Get(pt,propName,PShortInt(recFieldAddress)^);
|
||||
otUByte : AStore.Get(pt,propName,PByte(recFieldAddress)^);
|
||||
otSWord : AStore.Get(pt,propName,PSmallInt(recFieldAddress)^);
|
||||
otUWord : AStore.Get(pt,propName,PWord(recFieldAddress)^);
|
||||
otSLong : AStore.Get(pt,propName,PLongint(recFieldAddress)^);
|
||||
otULong : AStore.Get(pt,propName,PLongWord(recFieldAddress)^);
|
||||
end;
|
||||
{$IFNDEF FPC}
|
||||
end;
|
||||
{$ENDIF}
|
||||
End;
|
||||
tkFloat :
|
||||
begin
|
||||
case GetTypeData(pt)^.FloatType of
|
||||
ftSingle : AStore.Get(pt,propName,PSingle(recFieldAddress)^);
|
||||
ftDouble : AStore.Get(pt,propName,PDouble(recFieldAddress)^);
|
||||
ftExtended : AStore.Get(pt,propName,PExtended(recFieldAddress)^);
|
||||
ftCurr : AStore.Get(pt,propName,PCurrency(recFieldAddress)^);
|
||||
{$IFDEF HAS_COMP}
|
||||
ftComp : AStore.Get(pt,propName,PComp(recFieldAddress)^);
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
End;
|
||||
{except
|
||||
on E : EServiceException do begin
|
||||
if ( persistType = pstAlways ) then
|
||||
raise;
|
||||
end;
|
||||
end;}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
@ -139,12 +139,12 @@ type
|
||||
FKeepedEncoding : TSOAPEncodingStyle;
|
||||
FSerializationStyle : TSerializationStyle;
|
||||
|
||||
procedure InternalClear(const ACreateDoc : Boolean);
|
||||
procedure InternalClear(const ACreateDoc : Boolean);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
function NextNameSpaceCounter():Integer;//inline;
|
||||
function HasScope():Boolean;//inline;
|
||||
function NextNameSpaceCounter():Integer;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function HasScope():Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
procedure CheckScope();//inline;
|
||||
procedure CheckScope();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function InternalPutData(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
@ -154,89 +154,89 @@ type
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TEnumIntType
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutBool(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Boolean
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutInt64(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Int64
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutStr(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : String
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutFloat(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Extended
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutObj(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TObject
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutRecord(
|
||||
const AName : string;
|
||||
const ATypeInfo : PTypeInfo;
|
||||
const AData : Pointer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
function GetNodeValue(var AName : String):DOMString;
|
||||
procedure GetEnum(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TEnumIntType
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetBool(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Boolean
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
{$IFDEF FPC}
|
||||
procedure GetInt(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Integer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
{$ENDIF}
|
||||
procedure GetInt64(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Int64
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetFloat(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Extended
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetStr(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : String
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetObj(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TObject
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetRecord(
|
||||
const ATypeInfo : PTypeInfo;
|
||||
var AName : String;
|
||||
var AData : Pointer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
protected
|
||||
function GetXmlDoc():TwstXMLDocument;
|
||||
function PushStack(AScopeObject : TDOMNode):TStackItem;overload;
|
||||
function GetXmlDoc():TwstXMLDocument;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PushStack(AScopeObject : TDOMNode):TStackItem;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PushStack(
|
||||
AScopeObject : TDOMNode;
|
||||
const AStyle : TArrayStyle;
|
||||
const AItemName : string
|
||||
):TStackItem;overload;
|
||||
):TStackItem;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function FindAttributeByValueInNode(
|
||||
Const AAttValue : String;
|
||||
Const ANode : TDOMNode;
|
||||
@ -252,13 +252,13 @@ type
|
||||
function GetNameSpaceShortName(
|
||||
const ANameSpace : string;
|
||||
const ACreateIfNotFound : Boolean
|
||||
):shortstring;
|
||||
):shortstring;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
protected
|
||||
function GetCurrentScope():String;
|
||||
function GetCurrentScopeObject():TDOMElement;
|
||||
function StackTop():TStackItem;
|
||||
function PopStack():TStackItem;
|
||||
procedure ClearStack();
|
||||
function StackTop():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PopStack():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure ClearStack();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure BeginScope(
|
||||
Const AScopeName,ANameSpace : string;
|
||||
Const ANameSpaceShortName : string ;
|
||||
|
@ -150,66 +150,66 @@ type
|
||||
FStack : TObjectStack;
|
||||
FSerializationStyle: TSerializationStyle;
|
||||
private
|
||||
procedure InternalClear(const ACreateDoc : Boolean);
|
||||
procedure InternalClear(const ACreateDoc : Boolean);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
function HasScope():Boolean;//inline;
|
||||
function HasScope():Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
procedure CheckScope();//inline;
|
||||
procedure CheckScope();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function InternalPutData(
|
||||
const AName : string;
|
||||
const AType : TXmlRpcDataType;
|
||||
const AData : string
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutEnum(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TEnumIntType
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
{$IFDEF FPC}
|
||||
function PutBool(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Boolean
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
{$ENDIF}
|
||||
function PutInt64(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Int64
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutStr(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : String
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PutFloat(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : Extended
|
||||
):TDOMNode;
|
||||
):TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutObj(
|
||||
Const AName : String;
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Const AData : TObject
|
||||
);
|
||||
); {$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure PutRecord(
|
||||
const AName : string;
|
||||
const ATypeInfo : PTypeInfo;
|
||||
const AData : Pointer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
function GetNodeValue(var AName : String):DOMString;
|
||||
procedure GetEnum(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TEnumIntType
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
{$IFDEF FPC}
|
||||
procedure GetBool(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Boolean
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetInt(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
@ -220,36 +220,36 @@ type
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Int64
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetFloat(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : Extended
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetStr(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : String
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetObj(
|
||||
Const ATypeInfo : PTypeInfo;
|
||||
Var AName : String;
|
||||
Var AData : TObject
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure GetRecord(
|
||||
const ATypeInfo : PTypeInfo;
|
||||
var AName : String;
|
||||
var AData : Pointer
|
||||
);
|
||||
);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
protected
|
||||
function GetXmlDoc():TXMLDocument;
|
||||
function PushStack(AScopeObject : TDOMNode):TStackItem;overload;
|
||||
function GetXmlDoc():TXMLDocument;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PushStack(AScopeObject : TDOMNode):TStackItem;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PushStack(
|
||||
AScopeObject : TDOMNode;
|
||||
const AStyle : TArrayStyle;
|
||||
const AItemName : string
|
||||
):TStackItem;overload;
|
||||
function PushStackParams(AScopeObject : TDOMNode) : TStackItem;
|
||||
):TStackItem;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PushStackParams(AScopeObject : TDOMNode) : TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function FindAttributeByValueInNode(
|
||||
Const AAttValue : String;
|
||||
Const ANode : TDOMNode;
|
||||
@ -264,10 +264,10 @@ type
|
||||
function FindAttributeByNameInScope(Const AAttName : String):String;
|
||||
protected
|
||||
function GetCurrentScope():String;
|
||||
function GetCurrentScopeObject():TDOMElement;
|
||||
function StackTop():TStackItem;
|
||||
function PopStack():TStackItem;
|
||||
procedure ClearStack();
|
||||
function GetCurrentScopeObject():TDOMElement;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function StackTop():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function PopStack():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure ClearStack();{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure BeginScope(
|
||||
Const AScopeName,ANameSpace : string;
|
||||
Const ANameSpaceShortName : string ;
|
||||
|
@ -100,7 +100,7 @@ end;
|
||||
procedure TBinaryFormatter.BeginCallRead(ACallContext : ICallContext);
|
||||
Var
|
||||
s,nme : string;
|
||||
e : EBaseRemoteException;
|
||||
e : EBinaryException;
|
||||
begin
|
||||
ClearStack();
|
||||
PushStack(GetRootData(),stObject);
|
||||
@ -109,7 +109,7 @@ begin
|
||||
s := StackTop().GetByIndex(0)^.Name;
|
||||
If AnsiSameText(s,'Fault') Then Begin
|
||||
BeginObjectRead(s,nil);
|
||||
e := EBaseRemoteException.Create('');
|
||||
e := EBinaryException.Create('');
|
||||
Try
|
||||
nme := 'faultcode';
|
||||
Get(TypeInfo(string),nme,s);
|
||||
|
@ -17,10 +17,7 @@ unit binary_streamer;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Types;
|
||||
|
||||
{$INCLUDE wst.inc}
|
||||
{$INCLUDE wst_delphi.inc}
|
||||
Classes, SysUtils, Types, wst_types;
|
||||
|
||||
Const
|
||||
MAX_ARRAY_LENGTH = 1024*1024;
|
||||
@ -30,7 +27,7 @@ Type
|
||||
TInt8U = Byte; TInt8S = ShortInt;
|
||||
TInt16U = Word; TInt16S = SmallInt;
|
||||
TInt32U = LongWord; TInt32S = LongInt;
|
||||
TInt64S = Int64;TInt64U = QWord;
|
||||
TInt64S = Int64; TInt64U = QWord;
|
||||
TBoolData = Boolean;
|
||||
TEnumData = Int64;
|
||||
TStringData = AnsiString;
|
||||
@ -89,8 +86,8 @@ Type
|
||||
function ReadCurrency():TFloat_Currency_8;
|
||||
End;
|
||||
|
||||
function CreateBinaryReader(AStream : TStream):IDataStoreReader;
|
||||
function CreateBinaryWriter(AStream : TStream):IDataStore;
|
||||
function CreateBinaryReader(AStream : TStream):IDataStoreReader;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function CreateBinaryWriter(AStream : TStream):IDataStore;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF USE_INLINE}{$IFDEF ENDIAN_BIG}inline;{$ENDIF}{$ENDIF}
|
||||
function Reverse_16(const AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
@ -29,8 +29,8 @@ Type
|
||||
TPublishedPropertyManager = class(TInterfacedObject,IPropertyManager)
|
||||
Private
|
||||
FParent : TObject;
|
||||
procedure Error(Const AMsg:string);overload;
|
||||
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
|
||||
procedure Error(Const AMsg:string);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
Protected
|
||||
procedure SetProperty(Const AName,AValue:string);
|
||||
procedure SetProperties(Const APropsStr:string);
|
||||
@ -42,7 +42,7 @@ Type
|
||||
constructor Create(AParent : TObject);
|
||||
End;
|
||||
|
||||
function IsStrEmpty(Const AStr:String):Boolean;
|
||||
function IsStrEmpty(Const AStr:String):Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetToken(var ABuffer : string; const ADelimiter : string): string;
|
||||
function ExtractOptionName(const ACompleteName : string):string;
|
||||
|
||||
|
@ -27,6 +27,8 @@ type
|
||||
Name : shortstring;
|
||||
TypeInfo : PPTypeInfo;
|
||||
Offset : PtrUInt;
|
||||
IsAttribute : Boolean;
|
||||
Visible : Boolean;
|
||||
end;
|
||||
|
||||
PRecordTypeData = ^TRecordTypeData;
|
||||
@ -44,6 +46,8 @@ type
|
||||
constructor Create(const AData : PRecordTypeData; const AFieldList : string);
|
||||
destructor Destroy();override;
|
||||
function GetRecordTypeData() : PRecordTypeData;
|
||||
function FindField(const AFieldName : shortstring) : PRecordFieldInfo;
|
||||
function GetField(const AFieldName : shortstring) : PRecordFieldInfo;
|
||||
end;
|
||||
|
||||
function MakeRecordTypeInfo(ARawTypeInfo : PTypeInfo) : PRecordTypeData;
|
||||
@ -182,6 +186,7 @@ begin
|
||||
fieldInfo := @(resBuffer^.Fields[(i - 1)]);
|
||||
fieldInfo^.TypeInfo := fld^.TypeInfo;
|
||||
fieldInfo^.Offset := fld^.Offset;
|
||||
fieldInfo^.Visible := True;
|
||||
end;
|
||||
Result := resBuffer;
|
||||
end;
|
||||
@ -258,6 +263,7 @@ begin
|
||||
Inc(Temp,sizeof(Info));
|
||||
Offset := PLongint(Temp)^;
|
||||
fieldInfo^.Offset := Offset;
|
||||
fieldInfo^.Visible := True;
|
||||
Inc(Temp,sizeof(Offset));
|
||||
end;
|
||||
Result := resBuffer;
|
||||
@ -306,6 +312,30 @@ begin
|
||||
Result := PRecordTypeData(Data);
|
||||
end;
|
||||
|
||||
function TRecordRttiDataObject.FindField(const AFieldName : shortstring) : PRecordFieldInfo;
|
||||
var
|
||||
i : PtrInt;
|
||||
locData : PRecordTypeData;
|
||||
locField : shortstring;
|
||||
begin
|
||||
Result := nil;
|
||||
locData := PRecordTypeData(Data);
|
||||
locField := UpperCase(AFieldName);
|
||||
for i := 0 to Pred(locData^.FieldCount) do begin
|
||||
if ( locField = UpperCase(locData^.Fields[i].Name) ) then begin
|
||||
Result := @(locData^.Fields[i]);
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRecordRttiDataObject.GetField(const AFieldName : shortstring) : PRecordFieldInfo;
|
||||
begin
|
||||
Result := FindField(AFieldName);
|
||||
if ( Result = nil ) then
|
||||
raise Exception.CreateFmt('"%s" is not a field of "%s".',[AFieldName,GetRecordTypeData()^.Name]);
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$IFDEF WST_RECORD_RTTI}
|
||||
RawTypeInfoList := TList.Create();
|
||||
|
@ -12,7 +12,7 @@
|
||||
<MainUnit Value="0"/>
|
||||
<IconPath Value=".\"/>
|
||||
<TargetFileExt Value=".exe"/>
|
||||
<ActiveEditorIndexAtStart Value="1"/>
|
||||
<ActiveEditorIndexAtStart Value="2"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
@ -35,7 +35,7 @@
|
||||
<PackageName Value="indylaz"/>
|
||||
</Item1>
|
||||
</RequiredPackages>
|
||||
<Units Count="72">
|
||||
<Units Count="73">
|
||||
<Unit0>
|
||||
<Filename Value="http_server.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -421,8 +421,8 @@
|
||||
<Unit53>
|
||||
<Filename Value="..\..\config_objects.pas"/>
|
||||
<UnitName Value="config_objects"/>
|
||||
<CursorPos X="74" Y="99"/>
|
||||
<TopLine Value="85"/>
|
||||
<CursorPos X="19" Y="14"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<UsageCount Value="27"/>
|
||||
<Loaded Value="True"/>
|
||||
@ -555,8 +555,19 @@
|
||||
<TopLine Value="176"/>
|
||||
<UsageCount Value="13"/>
|
||||
</Unit71>
|
||||
<Unit72>
|
||||
<Filename Value="..\..\wst_global.inc"/>
|
||||
<CursorPos X="35" Y="3"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit72>
|
||||
</Units>
|
||||
<JumpHistory Count="0" HistoryIndex="-1"/>
|
||||
<JumpHistory Count="1" HistoryIndex="0">
|
||||
<Position1>
|
||||
<Filename Value="..\..\config_objects.pas"/>
|
||||
<Caret Line="14" Column="19" TopLine="1"/>
|
||||
</Position1>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="5"/>
|
||||
|
@ -355,16 +355,7 @@
|
||||
<UsageCount Value="10"/>
|
||||
</Unit42>
|
||||
</Units>
|
||||
<JumpHistory Count="2" HistoryIndex="1">
|
||||
<Position1>
|
||||
<Filename Value="user_client_console.pas"/>
|
||||
<Caret Line="252" Column="5" TopLine="250"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="user_client_console.pas"/>
|
||||
<Caret Line="8" Column="111" TopLine="1"/>
|
||||
</Position2>
|
||||
</JumpHistory>
|
||||
<JumpHistory Count="0" HistoryIndex="-1"/>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="5"/>
|
||||
|
@ -20,18 +20,12 @@ uses
|
||||
base_service_intf, server_service_intf,
|
||||
base_binary_formatter;
|
||||
|
||||
{$INCLUDE wst.inc}
|
||||
{$INCLUDE wst_delphi.inc}
|
||||
|
||||
|
||||
const
|
||||
sBINARY_CONTENT_TYPE = 'binary';
|
||||
sPROTOCOL_NAME = sBINARY_CONTENT_TYPE;
|
||||
|
||||
procedure Server_service_RegisterBinaryFormat();
|
||||
|
||||
implementation
|
||||
|
||||
Type
|
||||
type
|
||||
|
||||
{ TBinaryFormatter }
|
||||
|
||||
@ -51,6 +45,12 @@ Type
|
||||
);
|
||||
procedure EndExceptionList();
|
||||
End;
|
||||
|
||||
procedure Server_service_RegisterBinaryFormat();
|
||||
|
||||
implementation
|
||||
|
||||
Type
|
||||
|
||||
{ TBinaryFormatterFactory }
|
||||
|
||||
|
@ -85,10 +85,10 @@ Type
|
||||
private
|
||||
procedure LoadProperties();
|
||||
protected
|
||||
function GetTarget():String;
|
||||
function GetSerializer() : IFormatterClient;
|
||||
function GetCallHandler() : ICallMaker;
|
||||
function GetTransport() : ITransport;
|
||||
function GetTarget():String;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetSerializer() : IFormatterClient;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetCallHandler() : ICallMaker;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetTransport() : ITransport;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
procedure MakeCall();
|
||||
class function GetServiceType() : PTypeInfo;virtual;abstract;
|
||||
|
||||
@ -147,8 +147,8 @@ Type
|
||||
);
|
||||
End;
|
||||
|
||||
function GetFormaterRegistry():IFormaterQueryRegistry;
|
||||
function GetTransportRegistry():ITransportRegistry;
|
||||
function GetFormaterRegistry():IFormaterQueryRegistry;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
function GetTransportRegistry():ITransportRegistry;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||
|
||||
implementation
|
||||
uses imp_utils, metadata_repository;
|
||||
|
@ -1,3 +1,14 @@
|
||||
{ This file is part of the Web Service Toolkit
|
||||
Copyright (c) 2006, 2007 by Inoussa OUEDRAOGO
|
||||
|
||||
This file is provide under modified LGPL licence
|
||||
( the files COPYING.modifiedLGPL and COPYING.LGPL).
|
||||
|
||||
|
||||
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.
|
||||
}
|
||||
{$INCLUDE wst_global.inc}
|
||||
unit test_utilities;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
This file is part of the Web Service Toolkit
|
||||
Copyright (c) 2006 by Inoussa OUEDRAOGO
|
||||
Copyright (c) 2006, 2007 by Inoussa OUEDRAOGO
|
||||
|
||||
This file is provide under modified LGPL licence
|
||||
( the files COPYING.modifiedLGPL and COPYING.LGPL).
|
||||
@ -503,6 +503,17 @@ type
|
||||
procedure ExceptBlock_server();
|
||||
procedure ExceptBlock_client();
|
||||
end;
|
||||
|
||||
{ TTest_BinaryFormatterExceptionBlock }
|
||||
|
||||
TTest_BinaryFormatterExceptionBlock = class(TTestCase)
|
||||
protected
|
||||
function CreateFormatter():IFormatterResponse;
|
||||
function CreateFormatterClient():IFormatterClient;
|
||||
published
|
||||
procedure ExceptBlock_server();
|
||||
procedure ExceptBlock_client();
|
||||
end;
|
||||
|
||||
implementation
|
||||
uses base_binary_formatter, base_soap_formatter, base_xmlrpc_formatter, record_rtti,
|
||||
@ -514,7 +525,8 @@ uses base_binary_formatter, base_soap_formatter, base_xmlrpc_formatter, record_r
|
||||
, DOM, XMLRead, wst_fpc_xml
|
||||
{$ENDIF}
|
||||
, server_service_soap, soap_formatter,
|
||||
server_service_xmlrpc, xmlrpc_formatter;
|
||||
server_service_xmlrpc, xmlrpc_formatter,
|
||||
binary_streamer, server_binary_formatter, binary_formatter;
|
||||
|
||||
function TTestFormatterSimpleType.Support_ComplextType_with_SimpleContent( ): Boolean;
|
||||
begin
|
||||
@ -3725,6 +3737,130 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TTest_BinaryFormatterExceptionBlock }
|
||||
|
||||
function TTest_BinaryFormatterExceptionBlock.CreateFormatter() : IFormatterResponse;
|
||||
begin
|
||||
Result := server_binary_formatter.TBinaryFormatter.Create() as IFormatterResponse;
|
||||
end;
|
||||
|
||||
function TTest_BinaryFormatterExceptionBlock.CreateFormatterClient() : IFormatterClient;
|
||||
begin
|
||||
Result := binary_formatter.TBinaryFormatter.Create() as IFormatterClient;
|
||||
end;
|
||||
|
||||
function loc_FindObj(const AOwner: PDataBuffer; const AName : TDataName) : PDataBuffer;
|
||||
Var
|
||||
p : PObjectBufferItem;
|
||||
Begin
|
||||
Assert(AOwner^.DataType >= dtObject);
|
||||
Result := Nil;
|
||||
p:= AOwner^.ObjectData^.Head;
|
||||
While Assigned(p) Do Begin
|
||||
If AnsiSameText(AName,p^.Data^.Name) Then Begin
|
||||
Result := p^.Data;
|
||||
Exit;
|
||||
End;
|
||||
p := p^.Next;
|
||||
End;
|
||||
End;
|
||||
|
||||
procedure TTest_BinaryFormatterExceptionBlock.ExceptBlock_server();
|
||||
const VAL_CODE = '1210'; VAL_MSG = 'This is a sample exception message.';
|
||||
var
|
||||
f : IFormatterResponse;
|
||||
strm : TMemoryStream;
|
||||
root, bodyNode, faultNode, tmpNode : PDataBuffer;
|
||||
excpt_code, excpt_msg : string;
|
||||
begin
|
||||
root := nil;
|
||||
f := CreateFormatter();
|
||||
f.BeginExceptionList(VAL_CODE,VAL_MSG);
|
||||
f.EndExceptionList();
|
||||
strm := TMemoryStream.Create();
|
||||
try
|
||||
f.SaveToStream(strm);
|
||||
strm.Position := 0;
|
||||
root := LoadObjectFromStream(CreateBinaryReader(strm));
|
||||
Check(Assigned(root));
|
||||
CheckEquals(Ord(dtObject), Ord(root^.DataType),'root^.DataType');
|
||||
Check(Assigned(root^.ObjectData),'root^.ObjectData');
|
||||
CheckEquals(False,root^.ObjectData^.NilObject,'root^.NilObject');
|
||||
Check(root^.ObjectData^.Count > 0, 'root^.Count');
|
||||
bodyNode := root^.ObjectData^.Head^.Data;
|
||||
Check(Assigned(bodyNode),'body');
|
||||
CheckEquals(Ord(dtObject), Ord(bodyNode^.DataType),'body.DataType');
|
||||
CheckEquals(False,bodyNode^.ObjectData^.NilObject,'body.NilObject');
|
||||
Check(bodyNode^.ObjectData^.Count > 0, 'body.Count');
|
||||
|
||||
faultNode := bodyNode^.ObjectData^.Head^.Data;
|
||||
Check(Assigned(faultNode),'fault');
|
||||
CheckEquals(Ord(dtObject), Ord(faultNode^.DataType),'fault.DataType');
|
||||
CheckEquals(False,faultNode^.ObjectData^.NilObject,'fault.NilObject');
|
||||
Check(faultNode^.ObjectData^.Count > 0, 'fault.Count');
|
||||
|
||||
tmpNode := loc_FindObj(faultNode,'faultcode');
|
||||
Check(Assigned(tmpNode),'faultcode');
|
||||
CheckEquals(Ord(dtString), Ord(tmpNode^.DataType),'faultcode.DataType');
|
||||
excpt_code := tmpNode^.StrData^.Data;
|
||||
CheckEquals(VAL_CODE,excpt_code,'faultCode');
|
||||
|
||||
tmpNode := loc_FindObj(faultNode,'faultstring');
|
||||
Check(Assigned(tmpNode),'faultstring');
|
||||
CheckEquals(Ord(dtString), Ord(tmpNode^.DataType),'faultstring.DataType');
|
||||
excpt_msg := tmpNode^.StrData^.Data;
|
||||
CheckEquals(VAL_MSG,excpt_msg,'faultString');
|
||||
finally
|
||||
FreeAndNil(strm);
|
||||
ClearObj(root);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTest_BinaryFormatterExceptionBlock.ExceptBlock_client();
|
||||
const
|
||||
VAL_CODE = '1210'; VAL_MSG = 'This is a sample exception message.';
|
||||
var
|
||||
f : IFormatterClient;
|
||||
strm : TMemoryStream;
|
||||
root, bodyNode, faultNode, tmpNode : PDataBuffer;
|
||||
excpt_code, excpt_msg : string;
|
||||
locStore : IDataStore;
|
||||
begin
|
||||
excpt_code := '';
|
||||
excpt_msg := '';
|
||||
root := CreateObjBuffer(dtObject,'ROOT');
|
||||
try
|
||||
bodyNode := CreateObjBuffer(dtObject,'Body',root);
|
||||
faultNode := CreateObjBuffer(dtObject,'Fault',bodyNode);
|
||||
CreateObjBuffer(dtString,'faultCode',faultNode)^.StrData^.Data := VAL_CODE;
|
||||
CreateObjBuffer(dtString,'faultString',faultNode)^.StrData^.Data := VAL_MSG;
|
||||
f := CreateFormatterClient();
|
||||
strm := TMemoryStream.Create();
|
||||
try
|
||||
locStore := CreateBinaryWriter(strm);
|
||||
SaveObjectToStream(root,locStore);
|
||||
locStore := nil;
|
||||
strm.Position := 0;
|
||||
f.LoadFromStream(strm);
|
||||
try
|
||||
f.BeginCallRead(nil);
|
||||
Check(False,'BeginCallRead() should raise an exception.');
|
||||
except
|
||||
on e : EBinaryException do begin
|
||||
excpt_code := e.FaultCode;
|
||||
excpt_msg := e.FaultString;
|
||||
end;
|
||||
end;
|
||||
CheckEquals(VAL_CODE,excpt_code,'faultCode');
|
||||
CheckEquals(VAL_MSG,excpt_msg,'faultString');
|
||||
finally
|
||||
FreeAndNil(strm);
|
||||
end;
|
||||
finally
|
||||
ClearObj(root);
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterStdTypes();
|
||||
GetTypeRegistry().Register(sXSD_NS,TypeInfo(TTestEnum),'TTestEnum').RegisterExternalPropertyName('teOne', '1');
|
||||
@ -3766,6 +3902,8 @@ initialization
|
||||
{$IFDEF WST_RECORD_RTTI}
|
||||
GetTypeRegistry().ItemByTypeInfo[TypeInfo(TTestRecord)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(__TTestRecord_TYPEINFO_FUNC__()),GetTypeRegistry().ItemByTypeInfo[TypeInfo(TTestRecord)].GetExternalPropertyName('__FIELDS__')));
|
||||
{$ENDIF WST_RECORD_RTTI}
|
||||
RegisterAttributeProperty(TypeInfo(TTestSmallRecord),'fieldWord');
|
||||
RegisterAttributeProperty(TypeInfo(TTestRecord),'fieldWord');
|
||||
|
||||
{$IFDEF FPC}
|
||||
RegisterTest(TTestArray);
|
||||
@ -3782,6 +3920,7 @@ initialization
|
||||
RegisterTest(TTestXmlRpcFormatter);
|
||||
RegisterTest(TTest_SoapFormatterExceptionBlock);
|
||||
RegisterTest(TTest_XmlRpcFormatterExceptionBlock);
|
||||
RegisterTest(TTest_BinaryFormatterExceptionBlock);
|
||||
{$ELSE}
|
||||
RegisterTest(TTestArray.Suite);
|
||||
RegisterTest(TTestSOAPFormatter.Suite);
|
||||
@ -3797,6 +3936,7 @@ initialization
|
||||
RegisterTest(TTestXmlRpcFormatter.Suite);
|
||||
RegisterTest(TTest_SoapFormatterExceptionBlock.Suite);
|
||||
RegisterTest(TTest_XmlRpcFormatterExceptionBlock.Suite);
|
||||
RegisterTest(TTest_BinaryFormatterExceptionBlock.Suite);
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
<PackageName Value="FPCUnitTestRunner"/>
|
||||
</Item1>
|
||||
</RequiredPackages>
|
||||
<Units Count="74">
|
||||
<Units Count="75">
|
||||
<Unit0>
|
||||
<Filename Value="wst_test_suite.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -40,12 +40,12 @@
|
||||
<Filename Value="testformatter_unit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="testformatter_unit"/>
|
||||
<CursorPos X="3" Y="901"/>
|
||||
<TopLine Value="890"/>
|
||||
<EditorIndex Value="11"/>
|
||||
<CursorPos X="27" Y="3935"/>
|
||||
<TopLine Value="3914"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Bookmarks Count="1">
|
||||
<Item0 X="17" Y="1046" ID="3"/>
|
||||
<Item0 X="17" Y="1058" ID="3"/>
|
||||
</Bookmarks>
|
||||
<Loaded Value="True"/>
|
||||
</Unit1>
|
||||
@ -55,27 +55,23 @@
|
||||
<UnitName Value="server_service_soap"/>
|
||||
<CursorPos X="8" Y="182"/>
|
||||
<TopLine Value="161"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="..\..\soap_formatter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="soap_formatter"/>
|
||||
<CursorPos X="31" Y="148"/>
|
||||
<TopLine Value="148"/>
|
||||
<EditorIndex Value="8"/>
|
||||
<CursorPos X="33" Y="31"/>
|
||||
<TopLine Value="22"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="..\..\base_binary_formatter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="base_binary_formatter"/>
|
||||
<CursorPos X="31" Y="19"/>
|
||||
<TopLine Value="13"/>
|
||||
<EditorIndex Value="14"/>
|
||||
<CursorPos X="28" Y="223"/>
|
||||
<TopLine Value="211"/>
|
||||
<EditorIndex Value="8"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit4>
|
||||
@ -83,8 +79,8 @@
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="base_service_intf"/>
|
||||
<CursorPos X="19" Y="10"/>
|
||||
<TopLine Value="10"/>
|
||||
<CursorPos X="26" Y="1232"/>
|
||||
<TopLine Value="1220"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Bookmarks Count="2">
|
||||
@ -97,42 +93,36 @@
|
||||
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="base_soap_formatter"/>
|
||||
<CursorPos X="3" Y="1127"/>
|
||||
<TopLine Value="1116"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<CursorPos X="29" Y="225"/>
|
||||
<TopLine Value="209"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="..\..\binary_formatter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="binary_formatter"/>
|
||||
<CursorPos X="12" Y="108"/>
|
||||
<TopLine Value="103"/>
|
||||
<EditorIndex Value="15"/>
|
||||
<CursorPos X="28" Y="112"/>
|
||||
<TopLine Value="48"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="..\..\binary_streamer.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="binary_streamer"/>
|
||||
<CursorPos X="1" Y="14"/>
|
||||
<CursorPos X="95" Y="90"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Bookmarks Count="1">
|
||||
<Item0 X="38" Y="490" ID="2"/>
|
||||
<Item0 X="38" Y="487" ID="2"/>
|
||||
</Bookmarks>
|
||||
<Loaded Value="True"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="..\..\server_binary_formatter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="server_binary_formatter"/>
|
||||
<CursorPos X="22" Y="21"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="9"/>
|
||||
<CursorPos X="9" Y="123"/>
|
||||
<TopLine Value="27"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit9>
|
||||
@ -175,9 +165,9 @@
|
||||
<Filename Value="..\..\metadata_wsdl.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="metadata_wsdl"/>
|
||||
<CursorPos X="1" Y="22"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="16"/>
|
||||
<CursorPos X="43" Y="869"/>
|
||||
<TopLine Value="834"/>
|
||||
<EditorIndex Value="9"/>
|
||||
<UsageCount Value="206"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit14>
|
||||
@ -186,63 +176,63 @@
|
||||
<UnitName Value="DOM"/>
|
||||
<CursorPos X="15" Y="429"/>
|
||||
<TopLine Value="413"/>
|
||||
<UsageCount Value="3"/>
|
||||
<UsageCount Value="2"/>
|
||||
</Unit15>
|
||||
<Unit16>
|
||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysutilh.inc"/>
|
||||
<CursorPos X="13" Y="235"/>
|
||||
<TopLine Value="215"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit16>
|
||||
<Unit17>
|
||||
<Filename Value="..\..\server_service_intf.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="server_service_intf"/>
|
||||
<CursorPos X="25" Y="14"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<TopLine Value="97"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<UsageCount Value="203"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit17>
|
||||
<Unit18>
|
||||
<Filename Value="..\..\service_intf.pas"/>
|
||||
<UnitName Value="service_intf"/>
|
||||
<CursorPos X="15" Y="15"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="13"/>
|
||||
<UsageCount Value="16"/>
|
||||
<CursorPos X="15" Y="22"/>
|
||||
<TopLine Value="10"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<UsageCount Value="23"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit18>
|
||||
<Unit19>
|
||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
|
||||
<CursorPos X="3" Y="316"/>
|
||||
<TopLine Value="304"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit19>
|
||||
<Unit20>
|
||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
|
||||
<CursorPos X="3" Y="407"/>
|
||||
<TopLine Value="404"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit20>
|
||||
<Unit21>
|
||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
|
||||
<UnitName Value="contnrs"/>
|
||||
<CursorPos X="3" Y="474"/>
|
||||
<TopLine Value="471"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit21>
|
||||
<Unit22>
|
||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
|
||||
<CursorPos X="27" Y="121"/>
|
||||
<TopLine Value="104"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit22>
|
||||
<Unit23>
|
||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpas.inc"/>
|
||||
<CursorPos X="9" Y="166"/>
|
||||
<TopLine Value="142"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit23>
|
||||
<Unit24>
|
||||
<Filename Value="D:\Lazarus\components\fpcunit\guitestrunner.pas"/>
|
||||
@ -251,22 +241,22 @@
|
||||
<UnitName Value="GuiTestRunner"/>
|
||||
<CursorPos X="34" Y="32"/>
|
||||
<TopLine Value="25"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit24>
|
||||
<Unit25>
|
||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\fpcunit.pp"/>
|
||||
<UnitName Value="fpcunit"/>
|
||||
<CursorPos X="21" Y="94"/>
|
||||
<TopLine Value="83"/>
|
||||
<UsageCount Value="5"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit25>
|
||||
<Unit26>
|
||||
<Filename Value="..\..\imp_utils.pas"/>
|
||||
<UnitName Value="imp_utils"/>
|
||||
<CursorPos X="15" Y="50"/>
|
||||
<TopLine Value="8"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<UsageCount Value="10"/>
|
||||
<CursorPos X="12" Y="47"/>
|
||||
<TopLine Value="182"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<UsageCount Value="15"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit26>
|
||||
<Unit27>
|
||||
@ -274,7 +264,7 @@
|
||||
<UnitName Value="XMLRead"/>
|
||||
<CursorPos X="43" Y="13"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="3"/>
|
||||
<UsageCount Value="2"/>
|
||||
</Unit27>
|
||||
<Unit28>
|
||||
<Filename Value="test_parserdef.pas"/>
|
||||
@ -282,168 +272,166 @@
|
||||
<UnitName Value="test_parserdef"/>
|
||||
<CursorPos X="93" Y="76"/>
|
||||
<TopLine Value="11"/>
|
||||
<UsageCount Value="198"/>
|
||||
<UsageCount Value="200"/>
|
||||
</Unit28>
|
||||
<Unit29>
|
||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
|
||||
<CursorPos X="8" Y="190"/>
|
||||
<TopLine Value="133"/>
|
||||
<UsageCount Value="4"/>
|
||||
<UsageCount Value="3"/>
|
||||
</Unit29>
|
||||
<Unit30>
|
||||
<Filename Value="..\..\wst.inc"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit30>
|
||||
<Unit31>
|
||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\heaph.inc"/>
|
||||
<CursorPos X="43" Y="100"/>
|
||||
<TopLine Value="83"/>
|
||||
<UsageCount Value="2"/>
|
||||
<UsageCount Value="1"/>
|
||||
</Unit31>
|
||||
<Unit32>
|
||||
<Filename Value="..\test_fpc\interface_problem\interface_problem.pas"/>
|
||||
<UnitName Value="interface_problem"/>
|
||||
<CursorPos X="1" Y="10"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit32>
|
||||
<Unit33>
|
||||
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="base_xmlrpc_formatter"/>
|
||||
<CursorPos X="32" Y="64"/>
|
||||
<TopLine Value="49"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<UsageCount Value="136"/>
|
||||
<Loaded Value="True"/>
|
||||
<CursorPos X="35" Y="355"/>
|
||||
<TopLine Value="330"/>
|
||||
<UsageCount Value="151"/>
|
||||
</Unit33>
|
||||
<Unit34>
|
||||
<Filename Value="..\..\ws_helper\pscanner.pp"/>
|
||||
<UnitName Value="PScanner"/>
|
||||
<CursorPos X="19" Y="505"/>
|
||||
<TopLine Value="491"/>
|
||||
<UsageCount Value="17"/>
|
||||
<UsageCount Value="16"/>
|
||||
</Unit34>
|
||||
<Unit35>
|
||||
<Filename Value="..\..\ws_helper\pascal_parser_intf.pas"/>
|
||||
<UnitName Value="pascal_parser_intf"/>
|
||||
<CursorPos X="62" Y="296"/>
|
||||
<TopLine Value="296"/>
|
||||
<UsageCount Value="27"/>
|
||||
<UsageCount Value="26"/>
|
||||
</Unit35>
|
||||
<Unit36>
|
||||
<Filename Value="..\..\ws_helper\pastree.pp"/>
|
||||
<UnitName Value="PasTree"/>
|
||||
<CursorPos X="18" Y="254"/>
|
||||
<TopLine Value="243"/>
|
||||
<UsageCount Value="17"/>
|
||||
<UsageCount Value="16"/>
|
||||
</Unit36>
|
||||
<Unit37>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\packages\fcl-xml\src\dom.pp"/>
|
||||
<UnitName Value="DOM"/>
|
||||
<CursorPos X="38" Y="225"/>
|
||||
<TopLine Value="203"/>
|
||||
<UsageCount Value="16"/>
|
||||
<UsageCount Value="15"/>
|
||||
</Unit37>
|
||||
<Unit38>
|
||||
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
|
||||
<UnitName Value="cursor_intf"/>
|
||||
<CursorPos X="3" Y="75"/>
|
||||
<TopLine Value="70"/>
|
||||
<UsageCount Value="8"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit38>
|
||||
<Unit39>
|
||||
<Filename Value="..\..\wst_rtti_filter\dom_cursors.pas"/>
|
||||
<UnitName Value="dom_cursors"/>
|
||||
<CursorPos X="3" Y="182"/>
|
||||
<TopLine Value="180"/>
|
||||
<UsageCount Value="8"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit39>
|
||||
<Unit40>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\packages\fcl-fpcunit\src\fpcunit.pp"/>
|
||||
<UnitName Value="fpcunit"/>
|
||||
<CursorPos X="1" Y="446"/>
|
||||
<TopLine Value="434"/>
|
||||
<UsageCount Value="6"/>
|
||||
<UsageCount Value="5"/>
|
||||
</Unit40>
|
||||
<Unit41>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\i386\i386.inc"/>
|
||||
<CursorPos X="1" Y="1284"/>
|
||||
<TopLine Value="1268"/>
|
||||
<UsageCount Value="5"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit41>
|
||||
<Unit42>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\objpas\classes\streams.inc"/>
|
||||
<CursorPos X="1" Y="107"/>
|
||||
<TopLine Value="95"/>
|
||||
<UsageCount Value="5"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit42>
|
||||
<Unit43>
|
||||
<Filename Value="..\..\semaphore.pas"/>
|
||||
<UnitName Value="semaphore"/>
|
||||
<CursorPos X="3" Y="30"/>
|
||||
<TopLine Value="23"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit43>
|
||||
<Unit44>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
|
||||
<UnitName Value="DOM"/>
|
||||
<CursorPos X="14" Y="351"/>
|
||||
<TopLine Value="336"/>
|
||||
<UsageCount Value="8"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit44>
|
||||
<Unit45>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win32\system.pp"/>
|
||||
<UnitName Value="System"/>
|
||||
<CursorPos X="22" Y="33"/>
|
||||
<TopLine Value="18"/>
|
||||
<UsageCount Value="6"/>
|
||||
<UsageCount Value="5"/>
|
||||
</Unit45>
|
||||
<Unit46>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-base\src\inc\contnrs.pp"/>
|
||||
<UnitName Value="contnrs"/>
|
||||
<CursorPos X="3" Y="964"/>
|
||||
<TopLine Value="962"/>
|
||||
<UsageCount Value="5"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit46>
|
||||
<Unit47>
|
||||
<Filename Value="..\..\wst_delphi.inc"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit47>
|
||||
<Unit48>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\strutils.pp"/>
|
||||
<UnitName Value="strutils"/>
|
||||
<CursorPos X="10" Y="29"/>
|
||||
<TopLine Value="14"/>
|
||||
<UsageCount Value="5"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit48>
|
||||
<Unit49>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
|
||||
<CursorPos X="20" Y="168"/>
|
||||
<TopLine Value="166"/>
|
||||
<UsageCount Value="5"/>
|
||||
<CursorPos X="26" Y="173"/>
|
||||
<TopLine Value="156"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit49>
|
||||
<Unit50>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpas.inc"/>
|
||||
<CursorPos X="11" Y="442"/>
|
||||
<TopLine Value="556"/>
|
||||
<UsageCount Value="5"/>
|
||||
<CursorPos X="11" Y="333"/>
|
||||
<TopLine Value="375"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit50>
|
||||
<Unit51>
|
||||
<Filename Value="..\..\wst_fpc_xml.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="wst_fpc_xml"/>
|
||||
<CursorPos X="3" Y="53"/>
|
||||
<TopLine Value="51"/>
|
||||
<UsageCount Value="82"/>
|
||||
<CursorPos X="65" Y="85"/>
|
||||
<TopLine Value="56"/>
|
||||
<UsageCount Value="97"/>
|
||||
</Unit51>
|
||||
<Unit52>
|
||||
<Filename Value="..\..\wst_global.inc"/>
|
||||
<CursorPos X="20" Y="11"/>
|
||||
<CursorPos X="3" Y="4"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit52>
|
||||
@ -452,16 +440,16 @@
|
||||
<UnitName Value="CustApp"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="5"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit53>
|
||||
<Unit54>
|
||||
<Filename Value="test_utilities.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="test_utilities"/>
|
||||
<CursorPos X="71" Y="3"/>
|
||||
<TopLine Value="3"/>
|
||||
<EditorIndex Value="17"/>
|
||||
<UsageCount Value="73"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="10"/>
|
||||
<UsageCount Value="88"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit54>
|
||||
<Unit55>
|
||||
@ -469,60 +457,60 @@
|
||||
<UnitName Value="fpcunit"/>
|
||||
<CursorPos X="66" Y="231"/>
|
||||
<TopLine Value="231"/>
|
||||
<UsageCount Value="13"/>
|
||||
<UsageCount Value="12"/>
|
||||
</Unit55>
|
||||
<Unit56>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\testregistry.pp"/>
|
||||
<UnitName Value="testregistry"/>
|
||||
<CursorPos X="11" Y="32"/>
|
||||
<TopLine Value="17"/>
|
||||
<UsageCount Value="15"/>
|
||||
<UsageCount Value="14"/>
|
||||
</Unit56>
|
||||
<Unit57>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\testdecorator.pp"/>
|
||||
<UnitName Value="testdecorator"/>
|
||||
<CursorPos X="3" Y="30"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="7"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit57>
|
||||
<Unit58>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\DUnitCompatibleInterface.inc"/>
|
||||
<CursorPos X="21" Y="9"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="12"/>
|
||||
<UsageCount Value="11"/>
|
||||
</Unit58>
|
||||
<Unit59>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\typinfo.pp"/>
|
||||
<UnitName Value="typinfo"/>
|
||||
<CursorPos X="79" Y="218"/>
|
||||
<TopLine Value="203"/>
|
||||
<UsageCount Value="10"/>
|
||||
<CursorPos X="53" Y="41"/>
|
||||
<TopLine Value="37"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit59>
|
||||
<Unit60>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||
<CursorPos X="89" Y="122"/>
|
||||
<TopLine Value="106"/>
|
||||
<UsageCount Value="9"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit60>
|
||||
<Unit61>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysinth.inc"/>
|
||||
<CursorPos X="24" Y="63"/>
|
||||
<TopLine Value="46"/>
|
||||
<UsageCount Value="9"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit61>
|
||||
<Unit62>
|
||||
<Filename Value="..\..\ws_helper\wsdl2pas_imp.pas"/>
|
||||
<UnitName Value="wsdl2pas_imp"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="31"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit62>
|
||||
<Unit63>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus2204\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
||||
<UnitName Value="DOM"/>
|
||||
<CursorPos X="3" Y="196"/>
|
||||
<TopLine Value="191"/>
|
||||
<UsageCount Value="8"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit63>
|
||||
<Unit64>
|
||||
<Filename Value="..\..\type_lib_edtr\umoduleedit.pas"/>
|
||||
@ -532,7 +520,7 @@
|
||||
<UnitName Value="umoduleedit"/>
|
||||
<CursorPos X="47" Y="21"/>
|
||||
<TopLine Value="18"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit64>
|
||||
<Unit65>
|
||||
<Filename Value="..\..\type_lib_edtr\ubindingedit.pas"/>
|
||||
@ -542,7 +530,7 @@
|
||||
<UnitName Value="ubindingedit"/>
|
||||
<CursorPos X="41" Y="21"/>
|
||||
<TopLine Value="18"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit65>
|
||||
<Unit66>
|
||||
<Filename Value="..\..\type_lib_edtr\ufarrayedit.pas"/>
|
||||
@ -552,7 +540,7 @@
|
||||
<UnitName Value="ufarrayedit"/>
|
||||
<CursorPos X="41" Y="9"/>
|
||||
<TopLine Value="5"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit66>
|
||||
<Unit67>
|
||||
<Filename Value="..\..\type_lib_edtr\uftypealiasedit.pas"/>
|
||||
@ -562,7 +550,7 @@
|
||||
<UnitName Value="uftypealiasedit"/>
|
||||
<CursorPos X="22" Y="9"/>
|
||||
<TopLine Value="7"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit67>
|
||||
<Unit68>
|
||||
<Filename Value="..\..\type_lib_edtr\ufrmsaveoption.pas"/>
|
||||
@ -572,22 +560,22 @@
|
||||
<UnitName Value="ufrmsaveoption"/>
|
||||
<CursorPos X="22" Y="9"/>
|
||||
<TopLine Value="6"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit68>
|
||||
<Unit69>
|
||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysutilh.inc"/>
|
||||
<CursorPos X="4" Y="64"/>
|
||||
<TopLine Value="64"/>
|
||||
<UsageCount Value="8"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit69>
|
||||
<Unit70>
|
||||
<Filename Value="..\..\server_service_xmlrpc.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="server_service_xmlrpc"/>
|
||||
<CursorPos X="14" Y="144"/>
|
||||
<TopLine Value="136"/>
|
||||
<EditorIndex Value="10"/>
|
||||
<UsageCount Value="27"/>
|
||||
<CursorPos X="10" Y="131"/>
|
||||
<TopLine Value="116"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<UsageCount Value="42"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit70>
|
||||
<Unit71>
|
||||
@ -595,52 +583,152 @@
|
||||
<UnitName Value="XMLRead"/>
|
||||
<CursorPos X="6" Y="37"/>
|
||||
<TopLine Value="31"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit71>
|
||||
<Unit72>
|
||||
<Filename Value="..\..\xmlrpc_formatter.pas"/>
|
||||
<UnitName Value="xmlrpc_formatter"/>
|
||||
<CursorPos X="31" Y="131"/>
|
||||
<TopLine Value="116"/>
|
||||
<EditorIndex Value="12"/>
|
||||
<UsageCount Value="12"/>
|
||||
<Loaded Value="True"/>
|
||||
<UsageCount Value="11"/>
|
||||
</Unit72>
|
||||
<Unit73>
|
||||
<Filename Value="..\..\record_rtti.pas"/>
|
||||
<UnitName Value="record_rtti"/>
|
||||
<CursorPos X="3" Y="248"/>
|
||||
<TopLine Value="13"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="265"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<UsageCount Value="10"/>
|
||||
<UsageCount Value="17"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit73>
|
||||
<Unit74>
|
||||
<Filename Value="..\..\wst_rtl_imp.inc"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit74>
|
||||
</Units>
|
||||
<JumpHistory Count="6" HistoryIndex="5">
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1211" Column="10" TopLine="1211"/>
|
||||
<Caret Line="4784" Column="33" TopLine="4769"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
<Caret Line="1356" Column="38" TopLine="1346"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="4614" Column="1" TopLine="4572"/>
|
||||
<Caret Line="1403" Column="82" TopLine="1388"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="..\..\server_binary_formatter.pas"/>
|
||||
<Caret Line="121" Column="11" TopLine="111"/>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1422" Column="82" TopLine="1406"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="..\..\server_binary_formatter.pas"/>
|
||||
<Caret Line="21" Column="22" TopLine="1"/>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1816" Column="31" TopLine="1795"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="..\..\base_binary_formatter.pas"/>
|
||||
<Caret Line="19" Column="31" TopLine="13"/>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="3848" Column="31" TopLine="3827"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="4784" Column="55" TopLine="4778"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1191" Column="17" TopLine="1176"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1231" Column="32" TopLine="1216"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1228" Column="13" TopLine="1213"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1191" Column="32" TopLine="1176"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1235" Column="84" TopLine="1220"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1403" Column="82" TopLine="1388"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1421" Column="82" TopLine="1406"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1816" Column="31" TopLine="1789"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="3848" Column="31" TopLine="3827"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="4786" Column="25" TopLine="4777"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1359" Column="50" TopLine="1337"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="4783" Column="27" TopLine="4761"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="1359" Column="47" TopLine="1337"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="4740" Column="9" TopLine="4668"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="4808" Column="35" TopLine="4794"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="..\..\base_service_intf.pas"/>
|
||||
<Caret Line="180" Column="15" TopLine="177"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="..\..\server_service_xmlrpc.pas"/>
|
||||
<Caret Line="144" Column="14" TopLine="130"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="testformatter_unit.pas"/>
|
||||
<Caret Line="3890" Column="49" TopLine="3890"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="testformatter_unit.pas"/>
|
||||
<Caret Line="1483" Column="30" TopLine="1465"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="testformatter_unit.pas"/>
|
||||
<Caret Line="3538" Column="39" TopLine="3538"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="..\..\record_rtti.pas"/>
|
||||
<Caret Line="265" Column="32" TopLine="232"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -7,6 +7,7 @@
|
||||
{$UNDEF USE_INLINE}
|
||||
{$DEFINE WST_RECORD_RTTI}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF CPU86}
|
||||
{$DEFINE HAS_COMP}
|
||||
{$ENDIF}
|
||||
|
Reference in New Issue
Block a user