You've already forked lazarus-ccr
client : new TCP transport implementation ( using synapse library ) in synapse_tcp_protocol.pas
server : TCP server implementatiion ( using synapse library ) in synapse_tcp_server.pas Delphi : first binary format support bugs fix in the WSDL generation for the server side git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@158 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -11,7 +11,7 @@
|
|||||||
}
|
}
|
||||||
unit base_binary_formatter;
|
unit base_binary_formatter;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
{$DEFINE wst_binary_header}
|
{$DEFINE wst_binary_header}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
@ -154,7 +154,7 @@ type
|
|||||||
const ADataType : TDataType
|
const ADataType : TDataType
|
||||||
):PDataBuffer;override;
|
):PDataBuffer;override;
|
||||||
function CreateInnerBuffer(const ADataType : TDataType):PDataBuffer;override;
|
function CreateInnerBuffer(const ADataType : TDataType):PDataBuffer;override;
|
||||||
function GetInnerBuffer():PDataBuffer;
|
function GetInnerBuffer():PDataBuffer;overload;override;
|
||||||
procedure NilCurrentScope();override;
|
procedure NilCurrentScope();override;
|
||||||
function IsCurrentScopeNil():Boolean;override;
|
function IsCurrentScopeNil():Boolean;override;
|
||||||
End;
|
End;
|
||||||
@ -169,7 +169,7 @@ type
|
|||||||
{$IFDEF wst_binary_header}
|
{$IFDEF wst_binary_header}
|
||||||
FHeaderEnterCount : Integer;
|
FHeaderEnterCount : Integer;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
private
|
protected
|
||||||
function GetCurrentScope: String;
|
function GetCurrentScope: String;
|
||||||
function GetCurrentScopeObject():PDataBuffer;
|
function GetCurrentScopeObject():PDataBuffer;
|
||||||
procedure SetSerializationStyle(const ASerializationStyle : TSerializationStyle);
|
procedure SetSerializationStyle(const ASerializationStyle : TSerializationStyle);
|
||||||
@ -315,8 +315,8 @@ type
|
|||||||
procedure SaveToStream(AStream : TStream);
|
procedure SaveToStream(AStream : TStream);
|
||||||
procedure LoadFromStream(AStream : TStream);
|
procedure LoadFromStream(AStream : TStream);
|
||||||
|
|
||||||
procedure Error(Const AMsg:string);
|
procedure Error(Const AMsg:string);overload;
|
||||||
procedure Error(Const AMsg:string; Const AArgs : array of const);
|
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
TDBGPinterProc = procedure(const AMsg:string);
|
TDBGPinterProc = procedure(const AMsg:string);
|
||||||
@ -339,6 +339,8 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
{$INCLUDE wst_rtl_imp.inc}
|
||||||
|
|
||||||
procedure PrintObj(const ARoot: PDataBuffer; const ALevel : Integer; const APrinterProc : TDBGPinterProc);
|
procedure PrintObj(const ARoot: PDataBuffer; const ALevel : Integer; const APrinterProc : TDBGPinterProc);
|
||||||
Var
|
Var
|
||||||
p : PObjectBufferItem;
|
p : PObjectBufferItem;
|
||||||
@ -418,7 +420,7 @@ Var
|
|||||||
p : PObjectBufferItem;
|
p : PObjectBufferItem;
|
||||||
Begin
|
Begin
|
||||||
If ( AOwner^.DataType = dtObject ) Then Begin
|
If ( AOwner^.DataType = dtObject ) Then Begin
|
||||||
p := GetMem(SizeOf(PObjectBufferItem^));
|
p := wst_GetMem(SizeOf(TObjectBufferItem));
|
||||||
p^.Data := AChildData;
|
p^.Data := AChildData;
|
||||||
p^.Next := Nil;
|
p^.Next := Nil;
|
||||||
If Assigned(AOwner^.ObjectData^.Head) Then Begin
|
If Assigned(AOwner^.ObjectData^.Head) Then Begin
|
||||||
@ -446,8 +448,8 @@ function CreateObjBuffer(
|
|||||||
var
|
var
|
||||||
resLen, i : Integer;
|
resLen, i : Integer;
|
||||||
begin
|
begin
|
||||||
resLen := SizeOf(PDataBuffer^);
|
resLen := SizeOf(TDataBuffer);
|
||||||
Result := GetMem(resLen);
|
Result := wst_GetMem(resLen);
|
||||||
Try
|
Try
|
||||||
FillChar(Result^,resLen,#0);
|
FillChar(Result^,resLen,#0);
|
||||||
Result^.Name := AName;
|
Result^.Name := AName;
|
||||||
@ -455,15 +457,15 @@ begin
|
|||||||
Case Result^.DataType Of
|
Case Result^.DataType Of
|
||||||
dtString :
|
dtString :
|
||||||
Begin
|
Begin
|
||||||
i := SizeOf(PStringBuffer^);
|
i := SizeOf(TStringBuffer);
|
||||||
Result^.StrData := GetMem(i);
|
Result^.StrData := wst_GetMem(i);
|
||||||
FillChar(Result^.StrData^,i,#0);
|
FillChar(Result^.StrData^,i,#0);
|
||||||
Result^.StrData^.Data := '';
|
Result^.StrData^.Data := '';
|
||||||
End;
|
End;
|
||||||
dtObject :
|
dtObject :
|
||||||
Begin
|
Begin
|
||||||
Result^.ObjectData := GetMem(SizeOf(PObjectBuffer^));
|
Result^.ObjectData := wst_GetMem(SizeOf(TObjectBuffer));
|
||||||
FillChar(Result^.ObjectData^,SizeOf(PObjectBuffer^),#0);
|
FillChar(Result^.ObjectData^,SizeOf(TObjectBuffer),#0);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
If Assigned(AOwner) Then
|
If Assigned(AOwner) Then
|
||||||
@ -484,18 +486,18 @@ Var
|
|||||||
i, resLen : Integer;
|
i, resLen : Integer;
|
||||||
begin
|
begin
|
||||||
Assert(ALength>=0);
|
Assert(ALength>=0);
|
||||||
resLen := SizeOf(PDataBuffer^);
|
resLen := SizeOf(TDataBuffer);
|
||||||
Result := GetMem(resLen);
|
Result := wst_GetMem(resLen);
|
||||||
Try
|
Try
|
||||||
FillChar(Result^,resLen,#0);
|
FillChar(Result^,resLen,#0);
|
||||||
Result^.Name := AName;
|
Result^.Name := AName;
|
||||||
Result^.DataType := dtArray;
|
Result^.DataType := dtArray;
|
||||||
Result^.ArrayData := GetMem(SizeOf(PArrayBuffer^));
|
Result^.ArrayData := wst_GetMem(SizeOf(TArrayBuffer));
|
||||||
FillChar(Result^.ArrayData^,SizeOf(PArrayBuffer^),#0);
|
FillChar(Result^.ArrayData^,SizeOf(TArrayBuffer),#0);
|
||||||
Result^.ArrayData^.Count := ALength;
|
Result^.ArrayData^.Count := ALength;
|
||||||
If ( ALength > 0 ) Then Begin
|
If ( ALength > 0 ) Then Begin
|
||||||
i := ALength*SizeOf(PDataBuffer);
|
i := ALength*SizeOf(PDataBuffer);
|
||||||
Result^.ArrayData^.Items := GetMem(i);
|
Result^.ArrayData^.Items := wst_GetMem(i);
|
||||||
FillChar(Result^.ArrayData^.Items^[0],i,#0);
|
FillChar(Result^.ArrayData^.Items^[0],i,#0);
|
||||||
End Else Begin
|
End Else Begin
|
||||||
Result^.ArrayData^.Items := Nil;
|
Result^.ArrayData^.Items := Nil;
|
||||||
@ -669,7 +671,7 @@ Begin
|
|||||||
End;
|
End;
|
||||||
dtArray :
|
dtArray :
|
||||||
Begin
|
Begin
|
||||||
eltLen := SizeOf(PDataBuffer^);
|
eltLen := SizeOf(TDataBuffer);
|
||||||
For j := 0 to Pred(AOwner^.ArrayData^.Count) Do Begin
|
For j := 0 to Pred(AOwner^.ArrayData^.Count) Do Begin
|
||||||
ClearObj(AOwner^.ArrayData^.Items^[j]);
|
ClearObj(AOwner^.ArrayData^.Items^[j]);
|
||||||
Freemem(AOwner^.ArrayData^.Items^[j],eltLen);
|
Freemem(AOwner^.ArrayData^.Items^[j],eltLen);
|
||||||
@ -679,7 +681,7 @@ Begin
|
|||||||
Freemem(AOwner^.ArrayData^.Items,i);
|
Freemem(AOwner^.ArrayData^.Items,i);
|
||||||
AOwner^.ArrayData^.Items := Nil;
|
AOwner^.ArrayData^.Items := Nil;
|
||||||
ClearObjectBuffer(AOwner^.ArrayData^.Attributes);
|
ClearObjectBuffer(AOwner^.ArrayData^.Attributes);
|
||||||
i := SizeOf(PArrayBuffer^);
|
i := SizeOf(TArrayBuffer);
|
||||||
Freemem(AOwner^.ArrayData,i);
|
Freemem(AOwner^.ArrayData,i);
|
||||||
AOwner^.ArrayData := Nil;
|
AOwner^.ArrayData := Nil;
|
||||||
End;
|
End;
|
||||||
@ -829,7 +831,7 @@ end;
|
|||||||
|
|
||||||
function TBaseBinaryFormatter.HasScope(): Boolean;
|
function TBaseBinaryFormatter.HasScope(): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := Assigned(FStack.Peek);
|
Result := ( FStack.Peek <> nil );
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBaseBinaryFormatter.CheckScope();
|
procedure TBaseBinaryFormatter.CheckScope();
|
||||||
@ -1121,12 +1123,12 @@ Var
|
|||||||
floatDt : TFloat_Extended_10;
|
floatDt : TFloat_Extended_10;
|
||||||
begin
|
begin
|
||||||
Case ATypeInfo^.Kind Of
|
Case ATypeInfo^.Kind Of
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
strData := String(AData);
|
strData := String(AData);
|
||||||
PutStr(AName,ATypeInfo,strData);
|
PutStr(AName,ATypeInfo,strData);
|
||||||
End;
|
End;
|
||||||
tkInt64,tkQWord :
|
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
int64Data := Int64(AData);
|
int64Data := Int64(AData);
|
||||||
PutInt64(AName,ATypeInfo,int64Data);
|
PutInt64(AName,ATypeInfo,int64Data);
|
||||||
@ -1136,27 +1138,40 @@ begin
|
|||||||
objData := TObject(AData);
|
objData := TObject(AData);
|
||||||
PutObj(AName,ATypeInfo,objData);
|
PutObj(AName,ATypeInfo,objData);
|
||||||
End;
|
End;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
Begin
|
Begin
|
||||||
boolData := Boolean(AData);
|
boolData := Boolean(AData);
|
||||||
PutBool(AName,ATypeInfo,boolData);
|
PutBool(AName,ATypeInfo,boolData);
|
||||||
End;
|
End;
|
||||||
|
{$ENDIF}
|
||||||
tkInteger, tkEnumeration :
|
tkInteger, tkEnumeration :
|
||||||
Begin
|
begin
|
||||||
enumData := 0;
|
{$IFNDEF FPC}
|
||||||
Case GetTypeData(ATypeInfo)^.OrdType Of
|
if ( ATypeInfo^.Kind = tkEnumeration ) and
|
||||||
otSByte : enumData := ShortInt(AData);
|
( GetTypeData(ATypeInfo)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
otUByte : enumData := Byte(AData);
|
then begin
|
||||||
otSWord : enumData := SmallInt(AData);
|
boolData := Boolean(AData);
|
||||||
otUWord : enumData := Word(AData);
|
PutBool(AName,ATypeInfo,boolData);
|
||||||
otSLong : enumData := LongInt(AData);
|
end else begin
|
||||||
otULong : enumData := LongWord(AData);
|
{$ENDIF}
|
||||||
End;
|
enumData := 0;
|
||||||
If ( ATypeInfo^.Kind = tkInteger ) Then
|
Case GetTypeData(ATypeInfo)^.OrdType Of
|
||||||
PutInt(AName,ATypeInfo,enumData)
|
otSByte : enumData := ShortInt(AData);
|
||||||
Else
|
otUByte : enumData := Byte(AData);
|
||||||
PutEnum(AName,ATypeInfo,enumData);
|
otSWord : enumData := SmallInt(AData);
|
||||||
End;
|
otUWord : enumData := Word(AData);
|
||||||
|
otSLong : enumData := LongInt(AData);
|
||||||
|
otULong : enumData := LongWord(AData);
|
||||||
|
End;
|
||||||
|
If ( ATypeInfo^.Kind = tkInteger ) Then
|
||||||
|
PutInt(AName,ATypeInfo,enumData)
|
||||||
|
Else
|
||||||
|
PutEnum(AName,ATypeInfo,enumData);
|
||||||
|
{$IFNDEF FPC}
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
Begin
|
Begin
|
||||||
floatDt := 0;
|
floatDt := 0;
|
||||||
@ -1186,7 +1201,7 @@ var
|
|||||||
begin
|
begin
|
||||||
CheckScope();
|
CheckScope();
|
||||||
case ATypeInfo^.Kind of
|
case ATypeInfo^.Kind of
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
strData := string(AData);
|
strData := string(AData);
|
||||||
StackTop().CreateInnerBuffer(dtString)^.StrData^.Data := strData;
|
StackTop().CreateInnerBuffer(dtString)^.StrData^.Data := strData;
|
||||||
@ -1196,20 +1211,24 @@ begin
|
|||||||
int64SData := Int64(AData);
|
int64SData := Int64(AData);
|
||||||
StackTop().CreateInnerBuffer(dtInt64S)^.Int64S := int64SData;
|
StackTop().CreateInnerBuffer(dtInt64S)^.Int64S := int64SData;
|
||||||
end;
|
end;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkQWord :
|
tkQWord :
|
||||||
begin
|
begin
|
||||||
int64UData := QWord(AData);
|
int64UData := QWord(AData);
|
||||||
StackTop().CreateInnerBuffer(dtInt64U)^.Int64U := int64UData;
|
StackTop().CreateInnerBuffer(dtInt64U)^.Int64U := int64UData;
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
tkClass :
|
tkClass :
|
||||||
begin
|
begin
|
||||||
raise EBinaryFormatterException.Create('Inner Scope value must be a "simple type" value.');
|
raise EBinaryFormatterException.Create('Inner Scope value must be a "simple type" value.');
|
||||||
end;
|
end;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
begin
|
begin
|
||||||
boolData := Boolean(AData);
|
boolData := Boolean(AData);
|
||||||
StackTop().CreateInnerBuffer(dtBool)^.BoolData := boolData;
|
StackTop().CreateInnerBuffer(dtBool)^.BoolData := boolData;
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
tkInteger :
|
tkInteger :
|
||||||
begin
|
begin
|
||||||
enumData := 0;
|
enumData := 0;
|
||||||
@ -1248,16 +1267,27 @@ begin
|
|||||||
end;
|
end;
|
||||||
tkEnumeration :
|
tkEnumeration :
|
||||||
begin
|
begin
|
||||||
enumData := 0;
|
{$IFNDEF FPC}
|
||||||
case GetTypeData(ATypeInfo)^.OrdType of
|
if ( ATypeInfo^.Kind = tkEnumeration ) and
|
||||||
otSByte : enumData := ShortInt(AData);
|
( GetTypeData(ATypeInfo)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
otUByte : enumData := Byte(AData);
|
then begin
|
||||||
otSWord : enumData := SmallInt(AData);
|
boolData := Boolean(AData);
|
||||||
otUWord : enumData := Word(AData);
|
StackTop().CreateInnerBuffer(dtBool)^.BoolData := boolData;
|
||||||
otSLong : enumData := LongInt(AData);
|
end else begin
|
||||||
otULong : enumData := LongWord(AData);
|
{$ENDIF}
|
||||||
|
enumData := 0;
|
||||||
|
case GetTypeData(ATypeInfo)^.OrdType of
|
||||||
|
otSByte : enumData := ShortInt(AData);
|
||||||
|
otUByte : enumData := Byte(AData);
|
||||||
|
otSWord : enumData := SmallInt(AData);
|
||||||
|
otUWord : enumData := Word(AData);
|
||||||
|
otSLong : enumData := LongInt(AData);
|
||||||
|
otULong : enumData := LongWord(AData);
|
||||||
|
end;
|
||||||
|
StackTop().CreateInnerBuffer(dtEnum)^.EnumData := enumData;
|
||||||
|
{$IFNDEF FPC}
|
||||||
end;
|
end;
|
||||||
StackTop().CreateInnerBuffer(dtEnum)^.EnumData := enumData;
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
begin
|
begin
|
||||||
@ -1309,13 +1339,13 @@ Var
|
|||||||
floatDt : TFloat_Extended_10;
|
floatDt : TFloat_Extended_10;
|
||||||
begin
|
begin
|
||||||
Case ATypeInfo^.Kind Of
|
Case ATypeInfo^.Kind Of
|
||||||
tkInt64, tkQWord :
|
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
int64Data := 0;
|
int64Data := 0;
|
||||||
GetInt64(ATypeInfo,AName,int64Data);
|
GetInt64(ATypeInfo,AName,int64Data);
|
||||||
Int64(AData) := int64Data;
|
Int64(AData) := int64Data;
|
||||||
End;
|
End;
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
strData := '';
|
strData := '';
|
||||||
GetStr(ATypeInfo,AName,strData);
|
GetStr(ATypeInfo,AName,strData);
|
||||||
@ -1327,27 +1357,41 @@ begin
|
|||||||
GetObj(ATypeInfo,AName,objData);
|
GetObj(ATypeInfo,AName,objData);
|
||||||
TObject(AData) := objData;
|
TObject(AData) := objData;
|
||||||
End;
|
End;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
Begin
|
Begin
|
||||||
boolData := False;
|
boolData := False;
|
||||||
GetBool(ATypeInfo,AName,boolData);
|
GetBool(ATypeInfo,AName,boolData);
|
||||||
Boolean(AData) := boolData;
|
Boolean(AData) := boolData;
|
||||||
End;
|
End;
|
||||||
|
{$ENDIF}
|
||||||
tkInteger, tkEnumeration :
|
tkInteger, tkEnumeration :
|
||||||
Begin
|
Begin
|
||||||
enumData := 0;
|
{$IFNDEF FPC}
|
||||||
If ( ATypeInfo^.Kind = tkInteger ) Then
|
if ( ATypeInfo^.Kind = tkEnumeration ) and
|
||||||
GetInt(ATypeInfo,AName,enumData)
|
( GetTypeData(ATypeInfo)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
Else
|
then begin
|
||||||
GetEnum(ATypeInfo,AName,enumData);
|
boolData := False;
|
||||||
Case GetTypeData(ATypeInfo)^.OrdType Of
|
GetBool(ATypeInfo,AName,boolData);
|
||||||
otSByte : ShortInt(AData) := enumData;
|
Boolean(AData) := boolData;
|
||||||
otUByte : Byte(AData) := enumData;
|
end else begin
|
||||||
otSWord : SmallInt(AData) := enumData;
|
{$ENDIF}
|
||||||
otUWord : Word(AData) := enumData;
|
enumData := 0;
|
||||||
otSLong : LongInt(AData) := enumData;
|
If ( ATypeInfo^.Kind = tkInteger ) Then
|
||||||
otULong : LongWord(AData) := enumData;
|
GetInt(ATypeInfo,AName,enumData)
|
||||||
End;
|
Else
|
||||||
|
GetEnum(ATypeInfo,AName,enumData);
|
||||||
|
Case GetTypeData(ATypeInfo)^.OrdType Of
|
||||||
|
otSByte : ShortInt(AData) := enumData;
|
||||||
|
otUByte : Byte(AData) := enumData;
|
||||||
|
otSWord : SmallInt(AData) := enumData;
|
||||||
|
otUWord : Word(AData) := enumData;
|
||||||
|
otSLong : LongInt(AData) := enumData;
|
||||||
|
otULong : LongWord(AData) := enumData;
|
||||||
|
End;
|
||||||
|
{$IFNDEF FPC}
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
End;
|
End;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
Begin
|
Begin
|
||||||
@ -1375,11 +1419,19 @@ begin
|
|||||||
dataBuffer := StackTop().GetInnerBuffer();
|
dataBuffer := StackTop().GetInnerBuffer();
|
||||||
Case ATypeInfo^.Kind Of
|
Case ATypeInfo^.Kind Of
|
||||||
tkInt64 : Int64(AData) := dataBuffer^.Int64S;
|
tkInt64 : Int64(AData) := dataBuffer^.Int64S;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkQWord : QWord(AData) := dataBuffer^.Int64U;
|
tkQWord : QWord(AData) := dataBuffer^.Int64U;
|
||||||
tkLString,
|
{$ENDIF}
|
||||||
tkAString : string(AData) := dataBuffer^.StrData^.Data;
|
|
||||||
|
tkLString
|
||||||
|
{$IFDEF FPC},
|
||||||
|
tkAString
|
||||||
|
{$ENDIF} : string(AData) := dataBuffer^.StrData^.Data;
|
||||||
|
|
||||||
tkClass : raise EBinaryFormatterException.Create('Inner Scope value must be a "simple type" value.');
|
tkClass : raise EBinaryFormatterException.Create('Inner Scope value must be a "simple type" value.');
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool : Boolean(AData) := dataBuffer^.BoolData;
|
tkBool : Boolean(AData) := dataBuffer^.BoolData;
|
||||||
|
{$ENDIF}
|
||||||
tkInteger :
|
tkInteger :
|
||||||
begin
|
begin
|
||||||
case GetTypeData(ATypeInfo)^.OrdType Of
|
case GetTypeData(ATypeInfo)^.OrdType Of
|
||||||
@ -1393,14 +1445,24 @@ begin
|
|||||||
end;
|
end;
|
||||||
tkEnumeration :
|
tkEnumeration :
|
||||||
begin
|
begin
|
||||||
case GetTypeData(ATypeInfo)^.OrdType Of
|
{$IFNDEF FPC}
|
||||||
otSByte : ShortInt(AData) := dataBuffer^.EnumData;
|
if ( ATypeInfo^.Kind = tkEnumeration ) and
|
||||||
otUByte : Byte(AData) := dataBuffer^.EnumData;
|
( GetTypeData(ATypeInfo)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
otSWord : SmallInt(AData) := dataBuffer^.EnumData;
|
then begin
|
||||||
otUWord : Word(AData) := dataBuffer^.EnumData;
|
Boolean(AData) := dataBuffer^.BoolData;
|
||||||
otSLong : LongInt(AData) := dataBuffer^.EnumData;
|
end else begin
|
||||||
otULong : LongWord(AData) := dataBuffer^.EnumData;
|
{$ENDIF}
|
||||||
|
case GetTypeData(ATypeInfo)^.OrdType Of
|
||||||
|
otSByte : ShortInt(AData) := dataBuffer^.EnumData;
|
||||||
|
otUByte : Byte(AData) := dataBuffer^.EnumData;
|
||||||
|
otSWord : SmallInt(AData) := dataBuffer^.EnumData;
|
||||||
|
otUWord : Word(AData) := dataBuffer^.EnumData;
|
||||||
|
otSLong : LongInt(AData) := dataBuffer^.EnumData;
|
||||||
|
otULong : LongWord(AData) := dataBuffer^.EnumData;
|
||||||
|
end;
|
||||||
|
{$IFNDEF FPC}
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
begin
|
begin
|
||||||
|
@ -12,18 +12,20 @@
|
|||||||
}
|
}
|
||||||
unit base_service_intf;
|
unit base_service_intf;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, TypInfo, Contnrs;
|
Classes, SysUtils, TypInfo, Contnrs;
|
||||||
|
|
||||||
|
{$INCLUDE wst_delphi.inc}
|
||||||
|
|
||||||
const
|
const
|
||||||
stBase = 0;
|
stBase = 0;
|
||||||
stObject = stBase + 1;
|
stObject = stBase + 1;
|
||||||
stArray = stBase + 2;
|
stArray = stBase + 2;
|
||||||
|
|
||||||
sARRAY_ITEM = 'item';
|
sARRAY_ITEM = 'item';
|
||||||
sARRAY_STYLE = 'style';
|
sARRAY_STYLE = 'style';
|
||||||
|
|
||||||
@ -32,6 +34,7 @@ const
|
|||||||
sEmbedded = 'embedded';
|
sEmbedded = 'embedded';
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ standart data types defines }
|
{ standart data types defines }
|
||||||
anyURI = type string;
|
anyURI = type string;
|
||||||
token = type string;
|
token = type string;
|
||||||
@ -179,8 +182,8 @@ type
|
|||||||
procedure LoadFromStream(AStream : TStream);
|
procedure LoadFromStream(AStream : TStream);
|
||||||
|
|
||||||
// This procedures will raise exceptions!!!
|
// This procedures will raise exceptions!!!
|
||||||
procedure Error(Const AMsg:string);
|
procedure Error(Const AMsg:string);overload;
|
||||||
procedure Error(Const AMsg:string; Const AArgs : array of const);
|
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
{ TSimpleCallContext }
|
{ TSimpleCallContext }
|
||||||
@ -563,6 +566,7 @@ type
|
|||||||
class function GetItemTypeInfo():PTypeInfo;override;
|
class function GetItemTypeInfo():PTypeInfo;override;
|
||||||
|
|
||||||
constructor Create();override;
|
constructor Create();override;
|
||||||
|
procedure Assign(Source: TPersistent); override;
|
||||||
|
|
||||||
procedure SetLength(Const ANewSize : Integer);override;
|
procedure SetLength(Const ANewSize : Integer);override;
|
||||||
Property Item[AIndex:Integer] : TBaseRemotable Read GetItem;Default;
|
Property Item[AIndex:Integer] : TBaseRemotable Read GetItem;Default;
|
||||||
@ -959,7 +963,7 @@ type
|
|||||||
function FindFactory(const AName: string): IItemFactory;
|
function FindFactory(const AName: string): IItemFactory;
|
||||||
procedure Register(
|
procedure Register(
|
||||||
const AName : string;
|
const AName : string;
|
||||||
const AFactory : IItemFactory
|
AFactory : IItemFactory
|
||||||
);
|
);
|
||||||
protected
|
protected
|
||||||
property Count : Integer read GetCount;
|
property Count : Integer read GetCount;
|
||||||
@ -1075,8 +1079,8 @@ type
|
|||||||
TStoredPropertyManager = class(TInterfacedObject,IPropertyManager)
|
TStoredPropertyManager = class(TInterfacedObject,IPropertyManager)
|
||||||
private
|
private
|
||||||
FData : TStringList;
|
FData : TStringList;
|
||||||
procedure Error(Const AMsg:string);
|
procedure Error(Const AMsg:string);overload;
|
||||||
procedure Error(Const AMsg:string; Const AArgs : array of const);
|
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
|
||||||
protected
|
protected
|
||||||
procedure SetProperty(Const AName,AValue:string);
|
procedure SetProperty(Const AName,AValue:string);
|
||||||
procedure SetProperties(Const APropsStr:string);
|
procedure SetProperties(Const APropsStr:string);
|
||||||
@ -1198,6 +1202,7 @@ begin
|
|||||||
r.Register(sXSD_NS,TypeInfo(TComplexBooleanContentRemotable),'boolean').AddPascalSynonym('TComplexBooleanContentRemotable');
|
r.Register(sXSD_NS,TypeInfo(TComplexBooleanContentRemotable),'boolean').AddPascalSynonym('TComplexBooleanContentRemotable');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF FPC}
|
||||||
function IsStoredPropClass(AClass : TClass;PropInfo : PPropInfo) : TPropStoreType;
|
function IsStoredPropClass(AClass : TClass;PropInfo : PPropInfo) : TPropStoreType;
|
||||||
begin
|
begin
|
||||||
case (PropInfo^.PropProcs shr 4) and 3 of
|
case (PropInfo^.PropProcs shr 4) and 3 of
|
||||||
@ -1215,6 +1220,38 @@ begin
|
|||||||
Result := pstOptional;
|
Result := pstOptional;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$ELSE}
|
||||||
|
function IsStoredPropClass(AClass : TClass;PropInfo : PPropInfo) : TPropStoreType;
|
||||||
|
{var
|
||||||
|
b : PByte;
|
||||||
|
begin
|
||||||
|
if ( ( PropInfo^.StoredProc and $0FFFFFF00 ) = 0 ) then begin
|
||||||
|
if LongBool(PropInfo^.StoredProc) then // constante
|
||||||
|
Result := pstAlways
|
||||||
|
else
|
||||||
|
Result := pstNever;
|
||||||
|
end else begin
|
||||||
|
b := PByte(PropInfo^.StoredProc);
|
||||||
|
Inc(b,3);
|
||||||
|
if ( b^ < $FE ) then begin //StaticMethod
|
||||||
|
Result := pstOptional;
|
||||||
|
end else ( b^ > $FE ) begin Field
|
||||||
|
end else begin // virtual method
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;}
|
||||||
|
begin
|
||||||
|
if ( ( Cardinal(PropInfo^.StoredProc) and $0FFFFFF00 ) = 0 ) then begin
|
||||||
|
if LongBool(PropInfo^.StoredProc) then begin
|
||||||
|
Result := pstAlways
|
||||||
|
end else begin
|
||||||
|
Result := pstNever;
|
||||||
|
end;
|
||||||
|
end else begin
|
||||||
|
Result := pstOptional;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
{ TBaseRemotable }
|
{ TBaseRemotable }
|
||||||
|
|
||||||
@ -1428,7 +1465,7 @@ begin
|
|||||||
typRegItem := GetTypeRegistry().ItemByTypeInfo[ATypeInfo];
|
typRegItem := GetTypeRegistry().ItemByTypeInfo[ATypeInfo];
|
||||||
for i := 0 to Pred(propCount) do begin
|
for i := 0 to Pred(propCount) do begin
|
||||||
p := propList^[i];
|
p := propList^[i];
|
||||||
pt := p^.PropType;
|
pt := p^.PropType{$IFNDEF FPC}^{$ENDIF};
|
||||||
if IsStoredProp(AObject,p) then begin
|
if IsStoredProp(AObject,p) then begin
|
||||||
if IsAttributeProperty(p^.Name) then begin
|
if IsAttributeProperty(p^.Name) then begin
|
||||||
if ( ss <> ssAttibuteSerialization ) then
|
if ( ss <> ssAttibuteSerialization ) then
|
||||||
@ -1441,12 +1478,12 @@ begin
|
|||||||
AStore.SetSerializationStyle(ss);
|
AStore.SetSerializationStyle(ss);
|
||||||
prpName := typRegItem.GetExternalPropertyName(p^.Name);
|
prpName := typRegItem.GetExternalPropertyName(p^.Name);
|
||||||
case pt^.Kind of
|
case pt^.Kind of
|
||||||
tkInt64,tkQWord :
|
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
int64Data := GetOrdProp(AObject,p^.Name);
|
int64Data := GetOrdProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,int64Data);
|
AStore.Put(prpName,pt,int64Data);
|
||||||
end;
|
end;
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
strData := GetStrProp(AObject,p^.Name);
|
strData := GetStrProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,strData);
|
AStore.Put(prpName,pt,strData);
|
||||||
@ -1456,59 +1493,72 @@ begin
|
|||||||
objData := GetObjectProp(AObject,p^.Name);
|
objData := GetObjectProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,objData);
|
AStore.Put(prpName,pt,objData);
|
||||||
end;
|
end;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
begin
|
begin
|
||||||
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
||||||
AStore.Put(prpName,pt,boolData);
|
AStore.Put(prpName,pt,boolData);
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
tkEnumeration,tkInteger :
|
tkEnumeration,tkInteger :
|
||||||
begin
|
begin
|
||||||
FillChar(enumData,SizeOf(enumData),#0);
|
{$IFNDEF FPC}
|
||||||
case GetTypeData(p^.PropType)^.OrdType of
|
if ( pt^.Kind = tkEnumeration ) and
|
||||||
otSByte :
|
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
begin
|
then begin
|
||||||
enumData.ShortIntData := ShortInt(GetOrdProp(AObject,p^.Name));
|
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
||||||
AStore.Put(prpName,pt,enumData.ShortIntData);
|
AStore.Put(prpName,pt,boolData);
|
||||||
end;
|
end else begin
|
||||||
otUByte :
|
{$ENDIF}
|
||||||
begin
|
FillChar(enumData,SizeOf(enumData),#0);
|
||||||
enumData.ByteData := Byte(GetOrdProp(AObject,p^.Name));
|
case GetTypeData(pt)^.OrdType of
|
||||||
AStore.Put(prpName,pt,enumData.ByteData);
|
otSByte :
|
||||||
end;
|
begin
|
||||||
otSWord :
|
enumData.ShortIntData := ShortInt(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(prpName,pt,enumData.ShortIntData);
|
||||||
enumData.SmallIntData := SmallInt(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(prpName,pt,enumData.SmallIntData);
|
otUByte :
|
||||||
end;
|
begin
|
||||||
otUWord :
|
enumData.ByteData := Byte(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(prpName,pt,enumData.ByteData);
|
||||||
enumData.WordData := Word(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(prpName,pt,enumData.WordData);
|
otSWord :
|
||||||
end;
|
begin
|
||||||
otSLong :
|
enumData.SmallIntData := SmallInt(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(prpName,pt,enumData.SmallIntData);
|
||||||
enumData.SLongIntData := LongInt(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(prpName,pt,enumData.SLongIntData);
|
otUWord :
|
||||||
end;
|
begin
|
||||||
otULong :
|
enumData.WordData := Word(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(prpName,pt,enumData.WordData);
|
||||||
enumData.ULongIntData := LongWord(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(prpName,pt,enumData.ULongIntData);
|
otSLong :
|
||||||
end;
|
begin
|
||||||
|
enumData.SLongIntData := LongInt(GetOrdProp(AObject,p^.Name));
|
||||||
|
AStore.Put(prpName,pt,enumData.SLongIntData);
|
||||||
|
end;
|
||||||
|
otULong :
|
||||||
|
begin
|
||||||
|
enumData.ULongIntData := LongWord(GetOrdProp(AObject,p^.Name));
|
||||||
|
AStore.Put(prpName,pt,enumData.ULongIntData);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$IFNDEF FPC}
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
begin
|
begin
|
||||||
FillChar(floatDt,SizeOf(floatDt),#0);
|
FillChar(floatDt,SizeOf(floatDt),#0);
|
||||||
case GetTypeData(p^.PropType)^.FloatType of
|
case GetTypeData(pt)^.FloatType of
|
||||||
ftSingle :
|
ftSingle :
|
||||||
begin
|
begin
|
||||||
floatDt.SingleData := Single(GetFloatProp(AObject,p^.Name));
|
floatDt.SingleData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,floatDt.SingleData);
|
AStore.Put(prpName,pt,floatDt.SingleData);
|
||||||
end;
|
end;
|
||||||
ftDouble :
|
ftDouble :
|
||||||
begin
|
begin
|
||||||
floatDt.DoubleData := Double(GetFloatProp(AObject,p^.Name));
|
floatDt.DoubleData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,floatDt.DoubleData);
|
AStore.Put(prpName,pt,floatDt.DoubleData);
|
||||||
end;
|
end;
|
||||||
ftExtended :
|
ftExtended :
|
||||||
@ -1518,12 +1568,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
ftCurr :
|
ftCurr :
|
||||||
begin
|
begin
|
||||||
floatDt.CurrencyData := Currency(GetFloatProp(AObject,p^.Name));
|
floatDt.CurrencyData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,floatDt.CurrencyData);
|
AStore.Put(prpName,pt,floatDt.CurrencyData);
|
||||||
end;
|
end;
|
||||||
ftComp :
|
ftComp :
|
||||||
begin
|
begin
|
||||||
floatDt.CompData := Comp(GetFloatProp(AObject,p^.Name));
|
floatDt.CompData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(prpName,pt,floatDt.CompData);
|
AStore.Put(prpName,pt,floatDt.CompData);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1585,7 +1635,7 @@ begin
|
|||||||
p := propList^[i];
|
p := propList^[i];
|
||||||
persistType := IsStoredPropClass(objTypeData^.ClassType,p);
|
persistType := IsStoredPropClass(objTypeData^.ClassType,p);
|
||||||
If ( persistType in [pstOptional,pstAlways] ) Then Begin
|
If ( persistType in [pstOptional,pstAlways] ) Then Begin
|
||||||
pt := p^.PropType;
|
pt := p^.PropType{$IFNDEF FPC}^{$ENDIF};
|
||||||
propName := typRegItem.GetExternalPropertyName(p^.Name);
|
propName := typRegItem.GetExternalPropertyName(p^.Name);
|
||||||
if IsAttributeProperty(p^.Name) then begin
|
if IsAttributeProperty(p^.Name) then begin
|
||||||
ss := ssAttibuteSerialization;
|
ss := ssAttibuteSerialization;
|
||||||
@ -1596,21 +1646,23 @@ begin
|
|||||||
AStore.SetSerializationStyle(ss);
|
AStore.SetSerializationStyle(ss);
|
||||||
try
|
try
|
||||||
Case pt^.Kind Of
|
Case pt^.Kind Of
|
||||||
tkInt64,tkQWord :
|
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,int64Data);
|
AStore.Get(pt,propName,int64Data);
|
||||||
SetOrdProp(AObject,p^.Name,int64Data);
|
SetOrdProp(AObject,p^.Name,int64Data);
|
||||||
End;
|
End;
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC}, tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,strData);
|
AStore.Get(pt,propName,strData);
|
||||||
SetStrProp(AObject,p^.Name,strData);
|
SetStrProp(AObject,p^.Name,strData);
|
||||||
End;
|
End;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,boolData);
|
AStore.Get(pt,propName,boolData);
|
||||||
SetOrdProp(AObject,p^.Name,Ord(boolData));
|
SetOrdProp(AObject,p^.Name,Ord(boolData));
|
||||||
End;
|
End;
|
||||||
|
{$ENDIF}
|
||||||
tkClass :
|
tkClass :
|
||||||
Begin
|
Begin
|
||||||
objData := GetObjectProp(AObject,p^.Name);
|
objData := GetObjectProp(AObject,p^.Name);
|
||||||
@ -1626,45 +1678,56 @@ begin
|
|||||||
End;
|
End;
|
||||||
tkEnumeration,tkInteger :
|
tkEnumeration,tkInteger :
|
||||||
Begin
|
Begin
|
||||||
FillChar(enumData,SizeOf(enumData),#0);
|
{$IFNDEF FPC}
|
||||||
Case GetTypeData(p^.PropType)^.OrdType Of
|
if ( pt^.Kind = tkEnumeration ) and
|
||||||
otSByte :
|
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
Begin
|
then begin
|
||||||
AStore.Get(pt,propName,enumData.ShortIntData);
|
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
||||||
int64Data := enumData.ShortIntData;
|
AStore.Put(propName,pt,boolData);
|
||||||
End;
|
end else begin
|
||||||
otUByte :
|
{$ENDIF}
|
||||||
Begin
|
FillChar(enumData,SizeOf(enumData),#0);
|
||||||
AStore.Get(pt,propName,enumData.ByteData);
|
Case GetTypeData(pt)^.OrdType Of
|
||||||
int64Data := enumData.ByteData;
|
otSByte :
|
||||||
End;
|
Begin
|
||||||
otSWord :
|
AStore.Get(pt,propName,enumData.ShortIntData);
|
||||||
Begin
|
int64Data := enumData.ShortIntData;
|
||||||
AStore.Get(pt,propName,enumData.SmallIntData);
|
End;
|
||||||
int64Data := enumData.SmallIntData;
|
otUByte :
|
||||||
End;
|
Begin
|
||||||
otUWord :
|
AStore.Get(pt,propName,enumData.ByteData);
|
||||||
Begin
|
int64Data := enumData.ByteData;
|
||||||
AStore.Get(pt,propName,enumData.WordData);
|
End;
|
||||||
int64Data := enumData.WordData;
|
otSWord :
|
||||||
End;
|
Begin
|
||||||
otSLong:
|
AStore.Get(pt,propName,enumData.SmallIntData);
|
||||||
Begin
|
int64Data := enumData.SmallIntData;
|
||||||
AStore.Get(pt,propName,enumData.SLongIntData);
|
End;
|
||||||
int64Data := enumData.SLongIntData;
|
otUWord :
|
||||||
End;
|
Begin
|
||||||
otULong :
|
AStore.Get(pt,propName,enumData.WordData);
|
||||||
Begin
|
int64Data := enumData.WordData;
|
||||||
AStore.Get(pt,propName,enumData.ULongIntData);
|
End;
|
||||||
int64Data := enumData.ULongIntData;
|
otSLong:
|
||||||
End;
|
Begin
|
||||||
End;
|
AStore.Get(pt,propName,enumData.SLongIntData);
|
||||||
|
int64Data := enumData.SLongIntData;
|
||||||
|
End;
|
||||||
|
otULong :
|
||||||
|
Begin
|
||||||
|
AStore.Get(pt,propName,enumData.ULongIntData);
|
||||||
|
int64Data := enumData.ULongIntData;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
{$IFNDEF FPC}
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
SetOrdProp(AObject,p^.Name,int64Data);
|
SetOrdProp(AObject,p^.Name,int64Data);
|
||||||
End;
|
End;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
Begin
|
Begin
|
||||||
FillChar(floatDt,SizeOf(floatBuffer),#0);
|
FillChar(floatDt,SizeOf(floatBuffer),#0);
|
||||||
Case GetTypeData(p^.PropType)^.FloatType Of
|
Case GetTypeData(pt)^.FloatType Of
|
||||||
ftSingle :
|
ftSingle :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,floatBuffer.SingleData);
|
AStore.Get(pt,propName,floatBuffer.SingleData);
|
||||||
@ -1817,6 +1880,27 @@ begin
|
|||||||
FArray := Nil;
|
FArray := Nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBaseObjectArrayRemotable.Assign(Source: TPersistent);
|
||||||
|
var
|
||||||
|
src : TBaseObjectArrayRemotable;
|
||||||
|
i, c : PtrInt;
|
||||||
|
begin
|
||||||
|
if Assigned(Source) then begin
|
||||||
|
if Source.InheritsFrom(TBaseObjectArrayRemotable) then begin
|
||||||
|
src := TBaseObjectArrayRemotable(Source);
|
||||||
|
c := src.Length;
|
||||||
|
SetLength(c);
|
||||||
|
for i := 0 to Pred(c) do begin
|
||||||
|
Item[i].Assign(src.Item[i]);
|
||||||
|
end;
|
||||||
|
end else begin
|
||||||
|
inherited Assign(Source);
|
||||||
|
end;
|
||||||
|
end else begin
|
||||||
|
SetLength(0);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TBaseObjectArrayRemotable.SetLength(const ANewSize: Integer);
|
procedure TBaseObjectArrayRemotable.SetLength(const ANewSize: Integer);
|
||||||
var
|
var
|
||||||
i,oldLen : Integer;
|
i,oldLen : Integer;
|
||||||
@ -1889,7 +1973,7 @@ end;
|
|||||||
|
|
||||||
procedure TBaseFactoryRegistry.Register(
|
procedure TBaseFactoryRegistry.Register(
|
||||||
const AName : string;
|
const AName : string;
|
||||||
const AFactory : IItemFactory
|
AFactory : IItemFactory
|
||||||
);
|
);
|
||||||
begin
|
begin
|
||||||
Assert(Assigned(AFactory));
|
Assert(Assigned(AFactory));
|
||||||
@ -3217,6 +3301,7 @@ var
|
|||||||
i, propCount, propListLen : Integer;
|
i, propCount, propListLen : Integer;
|
||||||
p, sp : PPropInfo;
|
p, sp : PPropInfo;
|
||||||
selfTypeInfo : PTypeInfo;
|
selfTypeInfo : PTypeInfo;
|
||||||
|
srcObj, dstObj : TObject;
|
||||||
begin
|
begin
|
||||||
if not Assigned(Source) then
|
if not Assigned(Source) then
|
||||||
Exit;
|
Exit;
|
||||||
@ -3232,12 +3317,30 @@ begin
|
|||||||
Assigned(p^.SetProc)
|
Assigned(p^.SetProc)
|
||||||
then begin
|
then begin
|
||||||
case p^.PropType^.Kind of
|
case p^.PropType^.Kind of
|
||||||
tkInt64,tkQWord, tkBool, tkEnumeration,tkInteger :
|
tkInt64{$IFDEF FPC},tkQWord, tkBool{$ENDIF}, tkEnumeration,tkInteger :
|
||||||
SetOrdProp(Self,p,GetOrdProp(Source,p^.Name));
|
SetOrdProp(Self,p,GetOrdProp(Source,p^.Name));
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC}, tkAString{$ENDIF} :
|
||||||
SetStrProp(Self,p,GetStrProp(Source,p^.Name));
|
SetStrProp(Self,p,GetStrProp(Source,p^.Name));
|
||||||
tkClass :
|
tkClass :
|
||||||
SetObjectProp(Self,p,GetObjectProp(Source,p^.Name));
|
begin
|
||||||
|
srcObj := GetObjectProp(Source,p^.Name);
|
||||||
|
dstObj := GetObjectProp(Self,p^.Name);
|
||||||
|
if ( not Assigned(dstObj) ) and
|
||||||
|
( Assigned(srcObj) and srcObj.InheritsFrom(TAbstractComplexRemotable) )
|
||||||
|
then begin
|
||||||
|
dstObj := TAbstractComplexRemotableClass(srcObj.ClassType).Create();
|
||||||
|
SetObjectProp(Self,p,dstObj);
|
||||||
|
end;
|
||||||
|
if Assigned(dstObj) then begin
|
||||||
|
if ( srcObj = nil ) then begin
|
||||||
|
FreeAndNil(dstObj);
|
||||||
|
SetObjectProp(Self,p,dstObj);
|
||||||
|
end else begin
|
||||||
|
if dstObj.InheritsFrom(TPersistent) and srcObj.InheritsFrom(TPersistent) then
|
||||||
|
TPersistent(dstObj).Assign(TPersistent(srcObj));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
SetFloatProp(Self,p,GetFloatProp(Source,p^.Name));
|
SetFloatProp(Self,p,GetFloatProp(Source,p^.Name));
|
||||||
end;
|
end;
|
||||||
@ -3288,16 +3391,16 @@ begin
|
|||||||
AStore.SetSerializationStyle(ssAttibuteSerialization);
|
AStore.SetSerializationStyle(ssAttibuteSerialization);
|
||||||
for i := 0 to Pred(propCount) do begin
|
for i := 0 to Pred(propCount) do begin
|
||||||
p := propList^[i];
|
p := propList^[i];
|
||||||
pt := p^.PropType;
|
pt := p^.PropType{$IFNDEF FPC}^{$ENDIF};
|
||||||
propName := tr.ItemByTypeInfo[pt].GetExternalPropertyName(p^.Name);
|
propName := tr.ItemByTypeInfo[pt].GetExternalPropertyName(p^.Name);
|
||||||
if IsStoredProp(AObject,p) then begin
|
if IsStoredProp(AObject,p) then begin
|
||||||
case pt^.Kind of
|
case pt^.Kind of
|
||||||
tkInt64,tkQWord :
|
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
int64Data := GetOrdProp(AObject,p^.Name);
|
int64Data := GetOrdProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,int64Data);
|
AStore.Put(propName,pt,int64Data);
|
||||||
end;
|
end;
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
strData := GetStrProp(AObject,p^.Name);
|
strData := GetStrProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,strData);
|
AStore.Put(propName,pt,strData);
|
||||||
@ -3307,59 +3410,72 @@ begin
|
|||||||
objData := GetObjectProp(AObject,p^.Name);
|
objData := GetObjectProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,objData);
|
AStore.Put(propName,pt,objData);
|
||||||
end;
|
end;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
begin
|
begin
|
||||||
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
||||||
AStore.Put(propName,pt,boolData);
|
AStore.Put(propName,pt,boolData);
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
tkEnumeration,tkInteger :
|
tkEnumeration,tkInteger :
|
||||||
begin
|
begin
|
||||||
FillChar(enumData,SizeOf(enumData),#0);
|
{$IFNDEF FPC}
|
||||||
case GetTypeData(p^.PropType)^.OrdType of
|
if ( pt^.Kind = tkEnumeration ) and
|
||||||
otSByte :
|
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
|
||||||
begin
|
then begin
|
||||||
enumData.ShortIntData := ShortInt(GetOrdProp(AObject,p^.Name));
|
boolData := Boolean(GetOrdProp(AObject,p^.Name));
|
||||||
AStore.Put(propName,pt,enumData.ShortIntData);
|
AStore.Put(propName,pt,boolData);
|
||||||
end;
|
end else begin
|
||||||
otUByte :
|
{$ENDIF}
|
||||||
begin
|
FillChar(enumData,SizeOf(enumData),#0);
|
||||||
enumData.ByteData := Byte(GetOrdProp(AObject,p^.Name));
|
case GetTypeData(pt)^.OrdType of
|
||||||
AStore.Put(propName,pt,enumData.ByteData);
|
otSByte :
|
||||||
end;
|
begin
|
||||||
otSWord :
|
enumData.ShortIntData := ShortInt(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(propName,pt,enumData.ShortIntData);
|
||||||
enumData.SmallIntData := SmallInt(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(propName,pt,enumData.SmallIntData);
|
otUByte :
|
||||||
end;
|
begin
|
||||||
otUWord :
|
enumData.ByteData := Byte(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(propName,pt,enumData.ByteData);
|
||||||
enumData.WordData := Word(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(propName,pt,enumData.WordData);
|
otSWord :
|
||||||
end;
|
begin
|
||||||
otSLong :
|
enumData.SmallIntData := SmallInt(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(propName,pt,enumData.SmallIntData);
|
||||||
enumData.SLongIntData := LongInt(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(propName,pt,enumData.SLongIntData);
|
otUWord :
|
||||||
end;
|
begin
|
||||||
otULong :
|
enumData.WordData := Word(GetOrdProp(AObject,p^.Name));
|
||||||
begin
|
AStore.Put(propName,pt,enumData.WordData);
|
||||||
enumData.ULongIntData := LongWord(GetOrdProp(AObject,p^.Name));
|
end;
|
||||||
AStore.Put(propName,pt,enumData.ULongIntData);
|
otSLong :
|
||||||
end;
|
begin
|
||||||
|
enumData.SLongIntData := LongInt(GetOrdProp(AObject,p^.Name));
|
||||||
|
AStore.Put(propName,pt,enumData.SLongIntData);
|
||||||
|
end;
|
||||||
|
otULong :
|
||||||
|
begin
|
||||||
|
enumData.ULongIntData := LongWord(GetOrdProp(AObject,p^.Name));
|
||||||
|
AStore.Put(propName,pt,enumData.ULongIntData);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$IFNDEF FPC}
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
tkFloat :
|
tkFloat :
|
||||||
begin
|
begin
|
||||||
FillChar(floatDt,SizeOf(floatDt),#0);
|
FillChar(floatDt,SizeOf(floatDt),#0);
|
||||||
case GetTypeData(p^.PropType)^.FloatType of
|
case GetTypeData(pt)^.FloatType of
|
||||||
ftSingle :
|
ftSingle :
|
||||||
begin
|
begin
|
||||||
floatDt.SingleData := Single(GetFloatProp(AObject,p^.Name));
|
floatDt.SingleData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,floatDt.SingleData);
|
AStore.Put(propName,pt,floatDt.SingleData);
|
||||||
end;
|
end;
|
||||||
ftDouble :
|
ftDouble :
|
||||||
begin
|
begin
|
||||||
floatDt.DoubleData := Double(GetFloatProp(AObject,p^.Name));
|
floatDt.DoubleData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,floatDt.DoubleData);
|
AStore.Put(propName,pt,floatDt.DoubleData);
|
||||||
end;
|
end;
|
||||||
ftExtended :
|
ftExtended :
|
||||||
@ -3369,12 +3485,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
ftCurr :
|
ftCurr :
|
||||||
begin
|
begin
|
||||||
floatDt.CurrencyData := Currency(GetFloatProp(AObject,p^.Name));
|
floatDt.CurrencyData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,floatDt.CurrencyData);
|
AStore.Put(propName,pt,floatDt.CurrencyData);
|
||||||
end;
|
end;
|
||||||
ftComp :
|
ftComp :
|
||||||
begin
|
begin
|
||||||
floatDt.CompData := Comp(GetFloatProp(AObject,p^.Name));
|
floatDt.CompData := GetFloatProp(AObject,p^.Name);
|
||||||
AStore.Put(propName,pt,floatDt.CompData);
|
AStore.Put(propName,pt,floatDt.CompData);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -3436,25 +3552,27 @@ begin
|
|||||||
p := propList^[i];
|
p := propList^[i];
|
||||||
persistType := IsStoredPropClass(objTypeData^.ClassType,p);
|
persistType := IsStoredPropClass(objTypeData^.ClassType,p);
|
||||||
If ( persistType in [pstOptional,pstAlways] ) Then Begin
|
If ( persistType in [pstOptional,pstAlways] ) Then Begin
|
||||||
pt := p^.PropType;
|
pt := p^.PropType{$IFNDEF FPC}^{$ENDIF};
|
||||||
propName := tr.ItemByTypeInfo[pt].GetExternalPropertyName(p^.Name);
|
propName := tr.ItemByTypeInfo[pt].GetExternalPropertyName(p^.Name);
|
||||||
try
|
try
|
||||||
Case pt^.Kind Of
|
Case pt^.Kind Of
|
||||||
tkInt64,tkQWord :
|
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,int64Data);
|
AStore.Get(pt,propName,int64Data);
|
||||||
SetOrdProp(AObject,p^.Name,int64Data);
|
SetOrdProp(AObject,p^.Name,int64Data);
|
||||||
End;
|
End;
|
||||||
tkLString, tkAString :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,strData);
|
AStore.Get(pt,propName,strData);
|
||||||
SetStrProp(AObject,p^.Name,strData);
|
SetStrProp(AObject,p^.Name,strData);
|
||||||
End;
|
End;
|
||||||
|
{$IFDEF FPC}
|
||||||
tkBool :
|
tkBool :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,boolData);
|
AStore.Get(pt,propName,boolData);
|
||||||
SetOrdProp(AObject,p^.Name,Ord(boolData));
|
SetOrdProp(AObject,p^.Name,Ord(boolData));
|
||||||
End;
|
End;
|
||||||
|
{$ENDIF}
|
||||||
tkClass :
|
tkClass :
|
||||||
Begin
|
Begin
|
||||||
objData := GetObjectProp(AObject,p^.Name);
|
objData := GetObjectProp(AObject,p^.Name);
|
||||||
@ -3471,7 +3589,7 @@ begin
|
|||||||
tkEnumeration,tkInteger :
|
tkEnumeration,tkInteger :
|
||||||
Begin
|
Begin
|
||||||
FillChar(enumData,SizeOf(enumData),#0);
|
FillChar(enumData,SizeOf(enumData),#0);
|
||||||
Case GetTypeData(p^.PropType)^.OrdType Of
|
Case GetTypeData(pt)^.OrdType Of
|
||||||
otSByte :
|
otSByte :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,enumData.ShortIntData);
|
AStore.Get(pt,propName,enumData.ShortIntData);
|
||||||
@ -3508,7 +3626,7 @@ begin
|
|||||||
tkFloat :
|
tkFloat :
|
||||||
Begin
|
Begin
|
||||||
FillChar(floatDt,SizeOf(floatBuffer),#0);
|
FillChar(floatDt,SizeOf(floatBuffer),#0);
|
||||||
Case GetTypeData(p^.PropType)^.FloatType Of
|
Case GetTypeData(pt)^.FloatType Of
|
||||||
ftSingle :
|
ftSingle :
|
||||||
Begin
|
Begin
|
||||||
AStore.Get(pt,propName,floatBuffer.SingleData);
|
AStore.Get(pt,propName,floatBuffer.SingleData);
|
||||||
|
@ -118,7 +118,7 @@ Type
|
|||||||
function CreateList(const ANodeName : string):TDOMNodeList;override;
|
function CreateList(const ANodeName : string):TDOMNodeList;override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TSOAPEncodingStyle = ( Encoded, Literal );
|
TSOAPEncodingStyle = ( Literal, Encoded );
|
||||||
TSOAPDocumentStyle = ( RPC, Document );
|
TSOAPDocumentStyle = ( RPC, Document );
|
||||||
|
|
||||||
{$M+}
|
{$M+}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
unit binary_formatter;
|
unit binary_formatter;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
@ -12,12 +12,14 @@
|
|||||||
}
|
}
|
||||||
unit binary_streamer;
|
unit binary_streamer;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils;
|
Classes, SysUtils, Types;
|
||||||
|
|
||||||
|
{$INCLUDE wst_delphi.inc}
|
||||||
|
|
||||||
Const
|
Const
|
||||||
MAX_ARRAY_LENGTH = 1024*1024;
|
MAX_ARRAY_LENGTH = 1024*1024;
|
||||||
@ -79,7 +81,7 @@ Type
|
|||||||
function ReadBool():TBoolData;
|
function ReadBool():TBoolData;
|
||||||
function ReadEnum():TEnumData;
|
function ReadEnum():TEnumData;
|
||||||
function ReadStr():TStringData;
|
function ReadStr():TStringData;
|
||||||
|
|
||||||
function ReadSingle():TFloat_Single_4;
|
function ReadSingle():TFloat_Single_4;
|
||||||
function ReadDouble():TFloat_Double_8;
|
function ReadDouble():TFloat_Double_8;
|
||||||
function ReadExtended():TFloat_Extended_10;
|
function ReadExtended():TFloat_Extended_10;
|
||||||
@ -90,19 +92,19 @@ Type
|
|||||||
function CreateBinaryWriter(AStream : TStream):IDataStore;
|
function CreateBinaryWriter(AStream : TStream):IDataStore;
|
||||||
|
|
||||||
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF ENDIAN_BIG}inline;{$ENDIF}
|
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF ENDIAN_BIG}inline;{$ENDIF}
|
||||||
function Reverse_16(AValue:Word):Word;inline;
|
function Reverse_16(AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
function Reverse_32(AValue:DWord):DWord;inline;
|
function Reverse_32(AValue:DWord):DWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
function Reverse_64(AValue:QWord):QWord;inline;
|
function Reverse_64(AValue:QWord):QWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
|
|
||||||
function Reverse_Single(AValue:Single):Single;inline;
|
function Reverse_Single(AValue:Single):Single;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
function Reverse_Double(AValue:Double):Double;inline;
|
function Reverse_Double(AValue:Double):Double;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
function Reverse_Extended(AValue:Extended):Extended;inline;
|
function Reverse_Extended(AValue:Extended):Extended;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
function Reverse_Currency(AValue:Currency):Currency;inline;
|
function Reverse_Currency(AValue:Currency):Currency;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{$IFDEF ENDIAN_BIG}
|
{$IFDEF ENDIAN_BIG}
|
||||||
procedure ReverseBytes(var AData; const ALength : Integer);inline;
|
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
{$ELSE} // assume ENDIAN_LITTLE
|
{$ELSE} // assume ENDIAN_LITTLE
|
||||||
@ -110,55 +112,55 @@ procedure ReverseBytes(var AData; const ALength : Integer);
|
|||||||
Var
|
Var
|
||||||
i,j : PtrInt;
|
i,j : PtrInt;
|
||||||
c : Byte;
|
c : Byte;
|
||||||
pDt : ^Byte;
|
pDt : {$IFDEF FPC}^Byte{$ELSE}PByteArray{$ENDIF};
|
||||||
begin
|
begin
|
||||||
pDt := @AData;
|
pDt := @AData;
|
||||||
j := ALength div 2;
|
j := ALength div 2;
|
||||||
For i := 0 To Pred(j) Do Begin
|
For i := 0 To Pred(j) Do Begin
|
||||||
c := pDt[i];
|
c := pDt{$IFNDEF FPC}^{$ENDIF}[i];
|
||||||
pDt[i] := pDt[(ALength - 1 ) - i];
|
pDt[i] := pDt[(ALength - 1 ) - i];
|
||||||
pDt[(ALength - 1 ) - i] := c;
|
pDt[(ALength - 1 ) - i] := c;
|
||||||
End;
|
End;
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
function Reverse_16(AValue:Word):Word;inline;
|
function Reverse_16(AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,2)
|
ReverseBytes(Result,2)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Reverse_32(AValue:DWord):DWord;inline;
|
function Reverse_32(AValue:DWord):DWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,4)
|
ReverseBytes(Result,4)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Reverse_64(AValue:QWord):QWord;inline;
|
function Reverse_64(AValue:QWord):QWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,8)
|
ReverseBytes(Result,8)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Reverse_Single(AValue:Single):Single;inline;
|
function Reverse_Single(AValue:Single):Single;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,4)
|
ReverseBytes(Result,4)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Reverse_Double(AValue:Double):Double;inline;
|
function Reverse_Double(AValue:Double):Double;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,8)
|
ReverseBytes(Result,8)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Reverse_Extended(AValue:Extended):Extended;inline;
|
function Reverse_Extended(AValue:Extended):Extended;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,10);
|
ReverseBytes(Result,10);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Reverse_Currency(AValue:Currency):Currency;inline;
|
function Reverse_Currency(AValue:Currency):Currency;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
begin
|
begin
|
||||||
Result := AValue;
|
Result := AValue;
|
||||||
ReverseBytes(Result,8);
|
ReverseBytes(Result,8);
|
||||||
@ -248,6 +250,7 @@ begin
|
|||||||
FStream.Write(AData,SizeOf(AData));
|
FStream.Write(AData,SizeOf(AData));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF FPC}
|
||||||
procedure TDataStore.WriteInt16U(const AData: TInt16U);
|
procedure TDataStore.WriteInt16U(const AData: TInt16U);
|
||||||
begin
|
begin
|
||||||
FStream.Write(Reverse_16(AData),SizeOf(AData));
|
FStream.Write(Reverse_16(AData),SizeOf(AData));
|
||||||
@ -277,6 +280,55 @@ procedure TDataStore.WriteInt64S(const AData: TInt64S);
|
|||||||
begin
|
begin
|
||||||
FStream.Write(Reverse_64(AData),SizeOf(AData));
|
FStream.Write(Reverse_64(AData),SizeOf(AData));
|
||||||
end;
|
end;
|
||||||
|
{$ELSE}
|
||||||
|
procedure TDataStore.WriteInt16U(const AData: TInt16U);
|
||||||
|
var
|
||||||
|
bffr : TInt16U;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_16(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteInt16S(const AData: TInt16S);
|
||||||
|
var
|
||||||
|
bffr : TInt16U;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_16(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteInt32U(const AData: TInt32U);
|
||||||
|
var
|
||||||
|
bffr : TInt32U;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_32(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteInt32S(const AData: TInt32S);
|
||||||
|
var
|
||||||
|
bffr : TInt32U;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_32(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteInt64U(const AData: TInt64U);
|
||||||
|
var
|
||||||
|
bffr : TInt64U;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_64(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteInt64S(const AData: TInt64S);
|
||||||
|
var
|
||||||
|
bffr : TInt64U;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_64(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
procedure TDataStore.WriteBool(const AData: TBoolData);
|
procedure TDataStore.WriteBool(const AData: TBoolData);
|
||||||
Var
|
Var
|
||||||
@ -304,6 +356,7 @@ begin
|
|||||||
FStream.Write(AData[1],i);
|
FStream.Write(AData[1],i);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF FPC}
|
||||||
procedure TDataStore.WriteSingle(const AData: TFloat_Single_4);
|
procedure TDataStore.WriteSingle(const AData: TFloat_Single_4);
|
||||||
begin
|
begin
|
||||||
FStream.Write(Reverse_Single(AData),SizeOf(AData));
|
FStream.Write(Reverse_Single(AData),SizeOf(AData));
|
||||||
@ -323,6 +376,39 @@ procedure TDataStore.WriteCurrency(const AData: TFloat_Currency_8);
|
|||||||
begin
|
begin
|
||||||
FStream.Write(Reverse_Currency(AData),SizeOf(AData));
|
FStream.Write(Reverse_Currency(AData),SizeOf(AData));
|
||||||
end;
|
end;
|
||||||
|
{$ELSE}
|
||||||
|
procedure TDataStore.WriteSingle(const AData: TFloat_Single_4);
|
||||||
|
var
|
||||||
|
bffr : TFloat_Single_4;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_Single(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteDouble(const AData: TFloat_Double_8);
|
||||||
|
var
|
||||||
|
bffr : TFloat_Double_8;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_Double(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteExtended(const AData: TFloat_Extended_10);
|
||||||
|
var
|
||||||
|
bffr : TFloat_Extended_10;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_Extended(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataStore.WriteCurrency(const AData: TFloat_Currency_8);
|
||||||
|
var
|
||||||
|
bffr : TFloat_Currency_8;
|
||||||
|
begin
|
||||||
|
bffr := Reverse_Currency(AData);
|
||||||
|
FStream.Write(bffr,SizeOf(AData));
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
constructor TDataStore.Create(AStream: TStream);
|
constructor TDataStore.Create(AStream: TStream);
|
||||||
begin
|
begin
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
unit ics_tcp_protocol;
|
unit ics_tcp_protocol;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -138,8 +138,8 @@ begin
|
|||||||
FAllDataRead := False;
|
FAllDataRead := False;
|
||||||
FPropMngr := TPublishedPropertyManager.Create(Self);
|
FPropMngr := TPublishedPropertyManager.Create(Self);
|
||||||
FConnection := TWSocket.Create(Nil);
|
FConnection := TWSocket.Create(Nil);
|
||||||
FConnection.OnDataAvailable := @DataAvailable;
|
FConnection.OnDataAvailable := {$IFDEF FPC}@{$ENDIF}DataAvailable;
|
||||||
FConnection.OnBgException := @BgExceptionHandler;
|
FConnection.OnBgException := {$IFDEF FPC}@{$ENDIF}BgExceptionHandler;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TTCPTransport.Destroy();
|
destructor TTCPTransport.Destroy();
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
unit imp_utils;
|
unit imp_utils;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -30,8 +30,8 @@ Type
|
|||||||
TPublishedPropertyManager = class(TInterfacedObject,IPropertyManager)
|
TPublishedPropertyManager = class(TInterfacedObject,IPropertyManager)
|
||||||
Private
|
Private
|
||||||
FParent : TObject;
|
FParent : TObject;
|
||||||
procedure Error(Const AMsg:string);
|
procedure Error(Const AMsg:string);overload;
|
||||||
procedure Error(Const AMsg:string; Const AArgs : array of const);
|
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
|
||||||
Protected
|
Protected
|
||||||
procedure SetProperty(Const AName,AValue:string);
|
procedure SetProperty(Const AName,AValue:string);
|
||||||
procedure SetProperties(Const APropsStr:string);
|
procedure SetProperties(Const APropsStr:string);
|
||||||
@ -87,11 +87,11 @@ begin
|
|||||||
pinf := GetPropInfo(FParent,AName);
|
pinf := GetPropInfo(FParent,AName);
|
||||||
If Assigned(pinf) And Assigned(pinf^.SetProc) Then Begin
|
If Assigned(pinf) And Assigned(pinf^.SetProc) Then Begin
|
||||||
Case pinf^.PropType^.Kind of
|
Case pinf^.PropType^.Kind of
|
||||||
tkSString,tkLString,tkAString,tkWString:
|
tkLString{$IFDEF FPC},tkSString,tkAString{$ENDIF},tkWString:
|
||||||
SetStrProp(FParent,pinf,AValue);
|
SetStrProp(FParent,pinf,AValue);
|
||||||
tkEnumeration :
|
tkEnumeration :
|
||||||
SetEnumProp(FParent,pinf,AValue);
|
SetEnumProp(FParent,pinf,AValue);
|
||||||
tkInteger,tkInt64,tkQWord:
|
tkInteger,tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
If TryStrToInt64(AValue,int64Val) Then
|
If TryStrToInt64(AValue,int64Val) Then
|
||||||
SetOrdProp(FParent,AName,int64Val);
|
SetOrdProp(FParent,AName,int64Val);
|
||||||
@ -127,11 +127,11 @@ begin
|
|||||||
pinf := GetPropInfo(FParent,AName);
|
pinf := GetPropInfo(FParent,AName);
|
||||||
If Assigned(pinf) And Assigned(pinf^.SetProc) Then Begin
|
If Assigned(pinf) And Assigned(pinf^.SetProc) Then Begin
|
||||||
Case pinf^.PropType^.Kind of
|
Case pinf^.PropType^.Kind of
|
||||||
tkSString,tkLString,tkAString,tkWString:
|
tkLString{$IFDEF FPC},tkSString,tkAString{$ENDIF},tkWString:
|
||||||
Result := GetStrProp(FParent,pinf);
|
Result := GetStrProp(FParent,pinf);
|
||||||
tkEnumeration :
|
tkEnumeration :
|
||||||
Result := GetEnumProp(FParent,pinf);
|
Result := GetEnumProp(FParent,pinf);
|
||||||
tkInteger,tkInt64,tkQWord:
|
tkInteger,tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
|
||||||
Result := IntToStr(GetOrdProp(FParent,pinf));
|
Result := IntToStr(GetOrdProp(FParent,pinf));
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
@ -147,9 +147,9 @@ begin
|
|||||||
Try
|
Try
|
||||||
For i := 0 To Pred(propListLen) Do Begin
|
For i := 0 To Pred(propListLen) Do Begin
|
||||||
If ( propList^[i]^.PropType^.Kind in
|
If ( propList^[i]^.PropType^.Kind in
|
||||||
[ tkSString,tkLString,tkAString,tkWString,
|
[ tkLString{$IFDEF FPC},tkSString,tkAString{$ENDIF},tkWString,
|
||||||
tkEnumeration,
|
tkEnumeration,
|
||||||
tkInteger,tkInt64,tkQWord
|
tkInteger,tkInt64{$IFDEF FPC},tkQWord{$ENDIF}
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
Then
|
Then
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
unit metadata_repository;
|
unit metadata_repository;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -115,10 +115,12 @@ type
|
|||||||
|
|
||||||
function GetServiceDefaultAddress(AServiceTyp : PTypeInfo):string;
|
function GetServiceDefaultAddress(AServiceTyp : PTypeInfo):string;
|
||||||
function GetServiceDefaultFormatProperties(AServiceTyp : PTypeInfo):string;
|
function GetServiceDefaultFormatProperties(AServiceTyp : PTypeInfo):string;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses wst_resources_imp, binary_streamer, imp_utils;
|
uses wst_resources_imp, binary_streamer, imp_utils;
|
||||||
|
|
||||||
|
{$INCLUDE wst_rtl_imp.inc}
|
||||||
|
|
||||||
const sADDRESS = 'Address';
|
const sADDRESS = 'Address';
|
||||||
function GetServiceDefaultAddress(AServiceTyp : PTypeInfo):string;
|
function GetServiceDefaultAddress(AServiceTyp : PTypeInfo):string;
|
||||||
var
|
var
|
||||||
@ -178,7 +180,7 @@ var
|
|||||||
begin
|
begin
|
||||||
if not Assigned(AProps) then
|
if not Assigned(AProps) then
|
||||||
Exit;
|
Exit;
|
||||||
c := SizeOf(PPropertyData^);
|
c := SizeOf(TPropertyData);
|
||||||
p := AProps;
|
p := AProps;
|
||||||
while Assigned(p) do begin
|
while Assigned(p) do begin
|
||||||
q := p;
|
q := p;
|
||||||
@ -198,12 +200,12 @@ begin
|
|||||||
Result := nil;
|
Result := nil;
|
||||||
if not Assigned(AProps) then
|
if not Assigned(AProps) then
|
||||||
Exit;
|
Exit;
|
||||||
c := SizeOf(PPropertyData^);
|
c := SizeOf(TPropertyData);
|
||||||
q0 := GetMem(c);
|
q0 := wst_GetMem(c);
|
||||||
q := q0;
|
q := q0;
|
||||||
p := AProps;
|
p := AProps;
|
||||||
while Assigned(p) do begin
|
while Assigned(p) do begin
|
||||||
q^.Next := GetMem(c);
|
q^.Next := wst_GetMem(c);
|
||||||
FillChar(q^.Next^,c,#0);
|
FillChar(q^.Next^,c,#0);
|
||||||
q := q^.Next;
|
q := q^.Next;
|
||||||
q^.Name := p^.Name;
|
q^.Name := p^.Name;
|
||||||
@ -234,15 +236,15 @@ function Add(
|
|||||||
) : PPropertyData;
|
) : PPropertyData;
|
||||||
begin
|
begin
|
||||||
if not Assigned(AProps) then begin
|
if not Assigned(AProps) then begin
|
||||||
AProps := GetMem(SizeOf(PPropertyData^));
|
AProps := wst_GetMem(SizeOf(TPropertyData));
|
||||||
FillChar(AProps^,SizeOf(PPropertyData^),#0);
|
FillChar(AProps^,SizeOf(TPropertyData),#0);
|
||||||
AProps^.Next := nil;
|
AProps^.Next := nil;
|
||||||
Result := AProps;
|
Result := AProps;
|
||||||
end else begin
|
end else begin
|
||||||
Result := Find(AProps,APropName);
|
Result := Find(AProps,APropName);
|
||||||
if not Assigned(Result) then begin
|
if not Assigned(Result) then begin
|
||||||
Result := GetMem(SizeOf(PPropertyData^));
|
Result := wst_GetMem(SizeOf(TPropertyData));
|
||||||
FillChar(Result^,SizeOf(PPropertyData^),#0);
|
FillChar(Result^,SizeOf(TPropertyData),#0);
|
||||||
Result^.Next := AProps;
|
Result^.Next := AProps;
|
||||||
AProps := Result;
|
AProps := Result;
|
||||||
end;
|
end;
|
||||||
@ -259,7 +261,7 @@ procedure ClearService(AService : PService; const AFreeService : Boolean);
|
|||||||
begin
|
begin
|
||||||
cc := AOperation^.ParamsCount;
|
cc := AOperation^.ParamsCount;
|
||||||
if ( cc > 0 ) then begin
|
if ( cc > 0 ) then begin
|
||||||
Freemem(AOperation^.Params, cc * SizeOf(POperationParam^) );
|
Freemem(AOperation^.Params, cc * SizeOf(TOperationParam) );
|
||||||
end;
|
end;
|
||||||
ClearProperties(AOperation^.Properties);
|
ClearProperties(AOperation^.Properties);
|
||||||
end;
|
end;
|
||||||
@ -274,15 +276,17 @@ begin
|
|||||||
if ( k > 0 ) then begin
|
if ( k > 0 ) then begin
|
||||||
po := AService^.Operations;
|
po := AService^.Operations;
|
||||||
for j := 0 to Pred(k) do begin
|
for j := 0 to Pred(k) do begin
|
||||||
ClearOperation(@(po[j]));
|
//ClearOperation(@(po[j]));
|
||||||
|
ClearOperation(po);
|
||||||
|
Inc(po);
|
||||||
end;
|
end;
|
||||||
Freemem(AService^.Operations, k * SizeOf(PServiceOperation^) );
|
Freemem(AService^.Operations, k * SizeOf(TServiceOperation) );
|
||||||
AService^.Operations := nil;
|
AService^.Operations := nil;
|
||||||
ClearProperties(AService^.Properties);
|
ClearProperties(AService^.Properties);
|
||||||
AService^.Properties := nil;
|
AService^.Properties := nil;
|
||||||
end;
|
end;
|
||||||
if AFreeService then
|
if AFreeService then
|
||||||
Freemem(AService,SizeOf(PService^));
|
Freemem(AService,SizeOf(TService));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure ClearRepositoryData(var ARepository : PServiceRepository);
|
procedure ClearRepositoryData(var ARepository : PServiceRepository);
|
||||||
@ -295,11 +299,13 @@ begin
|
|||||||
if ( c > 0 ) then begin
|
if ( c > 0 ) then begin
|
||||||
ps := ARepository^.Services;
|
ps := ARepository^.Services;
|
||||||
for i := 0 to Pred(c) do begin
|
for i := 0 to Pred(c) do begin
|
||||||
ClearService(@(ps[i]),false);
|
//ClearService(@(ps[i]),false);
|
||||||
|
ClearService(ps,false);
|
||||||
|
Inc(ps);
|
||||||
end;
|
end;
|
||||||
Freemem(ARepository^.Services, c * SizeOf(PService^) );
|
Freemem(ARepository^.Services, c * SizeOf(TService) );
|
||||||
end;
|
end;
|
||||||
Freemem(ARepository,SizeOf(PServiceRepository^));
|
Freemem(ARepository,SizeOf(TServiceRepository));
|
||||||
ARepository := nil;
|
ARepository := nil;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -330,12 +336,14 @@ var
|
|||||||
AOperation^.Properties := nil;
|
AOperation^.Properties := nil;
|
||||||
cc := rdr.ReadInt8U();
|
cc := rdr.ReadInt8U();
|
||||||
if ( cc > 0 ) then begin
|
if ( cc > 0 ) then begin
|
||||||
AOperation^.Params := GetMem( cc * SizeOf(POperationParam^) );
|
AOperation^.Params := wst_GetMem( cc * SizeOf(TOperationParam) );
|
||||||
FillChar(AOperation^.Params^, cc * SizeOf(POperationParam^), #0);
|
FillChar(AOperation^.Params^, cc * SizeOf(TOperationParam), #0);
|
||||||
AOperation^.ParamsCount := cc;
|
AOperation^.ParamsCount := cc;
|
||||||
pp := AOperation^.Params;
|
pp := AOperation^.Params;
|
||||||
for ii := 0 to Pred(cc) do begin
|
for ii := 0 to Pred(cc) do begin
|
||||||
LoadParam(@(pp[ii]));
|
//LoadParam(@(pp[ii]));
|
||||||
|
LoadParam(pp);
|
||||||
|
Inc(pp);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -348,12 +356,14 @@ var
|
|||||||
AService^.Properties := nil;
|
AService^.Properties := nil;
|
||||||
k := rdr.ReadInt8U();
|
k := rdr.ReadInt8U();
|
||||||
if ( k > 0 ) then begin
|
if ( k > 0 ) then begin
|
||||||
AService^.Operations := GetMem( k * SizeOf(PServiceOperation^) );
|
AService^.Operations := wst_GetMem( k * SizeOf(TServiceOperation) );
|
||||||
AService^.OperationsCount := k;
|
AService^.OperationsCount := k;
|
||||||
FillChar(AService^.Operations^,k * SizeOf(PServiceOperation^), #0);
|
FillChar(AService^.Operations^,k * SizeOf(TServiceOperation), #0);
|
||||||
po := AService^.Operations;
|
po := AService^.Operations;
|
||||||
for j := 0 to Pred(k) do begin
|
for j := 0 to Pred(k) do begin
|
||||||
LoadOperation(@(po[j]));
|
//LoadOperation(@(po[j]));
|
||||||
|
LoadOperation(po);
|
||||||
|
Inc(po);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -369,19 +379,21 @@ begin
|
|||||||
buf := rdr.ReadStr();
|
buf := rdr.ReadStr();
|
||||||
if ( sWST_SIGNATURE <> buf ) then
|
if ( sWST_SIGNATURE <> buf ) then
|
||||||
raise EMetadataException.CreateFmt('Invalid Metadata signature : "%s"',[buf]);
|
raise EMetadataException.CreateFmt('Invalid Metadata signature : "%s"',[buf]);
|
||||||
c := SizeOf(PServiceRepository^);
|
c := SizeOf(TServiceRepository);
|
||||||
ARepository := GetMem(c);
|
ARepository := wst_GetMem(c);
|
||||||
try
|
try
|
||||||
FillChar(ARepository^,c,#0);
|
FillChar(ARepository^,c,#0);
|
||||||
ARepository^.Name := rdr.ReadStr();
|
ARepository^.Name := rdr.ReadStr();
|
||||||
c := rdr.ReadInt8U();
|
c := rdr.ReadInt8U();
|
||||||
if ( c > 0 ) then begin
|
if ( c > 0 ) then begin
|
||||||
ARepository^.Services := GetMem( c * SizeOf(PService^) );
|
ARepository^.Services := wst_GetMem( c * SizeOf(TService) );
|
||||||
ARepository^.ServicesCount := c;
|
ARepository^.ServicesCount := c;
|
||||||
FillChar(ARepository^.Services^,c * SizeOf(PService^),#0);
|
FillChar(ARepository^.Services^,c * SizeOf(TService),#0);
|
||||||
ps := ARepository^.Services;
|
ps := ARepository^.Services;
|
||||||
for i := 0 to Pred(c) do begin
|
for i := 0 to Pred(c) do begin
|
||||||
LoadService(@(ps[i]));
|
//LoadService(@(ps[i]));
|
||||||
|
LoadService(ps);
|
||||||
|
Inc(ps);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Result := c;
|
Result := c;
|
||||||
@ -403,36 +415,44 @@ procedure CopyService(ASrcService,ADestService : PService);
|
|||||||
|
|
||||||
var
|
var
|
||||||
ii, cc : LongInt;
|
ii, cc : LongInt;
|
||||||
pp : POperationParam;
|
ppSrc, pp : POperationParam;
|
||||||
begin
|
begin
|
||||||
ADstOperation^.Name := ASrcOperation^.Name;
|
ADstOperation^.Name := ASrcOperation^.Name;
|
||||||
ADstOperation^.Properties := CloneProperties(ASrcOperation^.Properties);
|
ADstOperation^.Properties := CloneProperties(ASrcOperation^.Properties);
|
||||||
cc := ASrcOperation^.ParamsCount;
|
cc := ASrcOperation^.ParamsCount;
|
||||||
if ( cc > 0 ) then begin
|
if ( cc > 0 ) then begin
|
||||||
ADstOperation^.Params := GetMem( cc * SizeOf(POperationParam^) );
|
ADstOperation^.Params := wst_GetMem( cc * SizeOf(TOperationParam) );
|
||||||
FillChar(ADstOperation^.Params^, cc * SizeOf(POperationParam^), #0);
|
FillChar(ADstOperation^.Params^, cc * SizeOf(TOperationParam), #0);
|
||||||
ADstOperation^.ParamsCount := cc;
|
ADstOperation^.ParamsCount := cc;
|
||||||
|
ppSrc := ASrcOperation^.Params;
|
||||||
pp := ADstOperation^.Params;
|
pp := ADstOperation^.Params;
|
||||||
for ii := 0 to Pred(cc) do begin
|
for ii := 0 to Pred(cc) do begin
|
||||||
CopyParam(@(ASrcOperation^.Params[ii]),@(pp[ii]));
|
//CopyParam(@(ASrcOperation^.Params[ii]),@(pp[ii]));
|
||||||
|
CopyParam(ppSrc,pp);
|
||||||
|
Inc(ppSrc);
|
||||||
|
Inc(pp);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
j, k : LongInt;
|
j, k : LongInt;
|
||||||
po : PServiceOperation;
|
poSrc, po : PServiceOperation;
|
||||||
begin
|
begin
|
||||||
ADestService^.Name := ASrcService^.Name;
|
ADestService^.Name := ASrcService^.Name;
|
||||||
ADestService^.Properties := CloneProperties(ASrcService^.Properties);
|
ADestService^.Properties := CloneProperties(ASrcService^.Properties);
|
||||||
k := ASrcService^.OperationsCount;
|
k := ASrcService^.OperationsCount;
|
||||||
if ( k > 0 ) then begin
|
if ( k > 0 ) then begin
|
||||||
ADestService^.Operations := GetMem( k * SizeOf(PServiceOperation^) );
|
ADestService^.Operations := wst_GetMem( k * SizeOf(TServiceOperation) );
|
||||||
ADestService^.OperationsCount := k;
|
ADestService^.OperationsCount := k;
|
||||||
FillChar(ADestService^.Operations^,k * SizeOf(PServiceOperation^), #0);
|
FillChar(ADestService^.Operations^,k * SizeOf(TServiceOperation), #0);
|
||||||
po := ADestService^.Operations;
|
po := ADestService^.Operations;
|
||||||
|
poSrc := ASrcService^.Operations;
|
||||||
for j := 0 to Pred(k) do begin
|
for j := 0 to Pred(k) do begin
|
||||||
CopyOperation(@(ASrcService^.Operations[j]),@(po[j]));
|
//CopyOperation(@(ASrcService^.Operations[j]),@(po[j]));
|
||||||
|
CopyOperation(poSrc,po);
|
||||||
|
Inc(poSrc);
|
||||||
|
Inc(po);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -441,8 +461,8 @@ function CloneService(const ASrcService : PService) : PService;
|
|||||||
var
|
var
|
||||||
c : Integer;
|
c : Integer;
|
||||||
begin
|
begin
|
||||||
c := SizeOf(PService^);
|
c := SizeOf(TService);
|
||||||
Result := GetMem(c);
|
Result := wst_GetMem(c);
|
||||||
FillChar(Result^,c,#0);
|
FillChar(Result^,c,#0);
|
||||||
CopyService(ASrcService,Result);
|
CopyService(ASrcService,Result);
|
||||||
end;
|
end;
|
||||||
@ -453,13 +473,13 @@ procedure CloneRepository(
|
|||||||
);
|
);
|
||||||
var
|
var
|
||||||
i, c : LongInt;
|
i, c : LongInt;
|
||||||
ps : PService;
|
psSrc, ps : PService;
|
||||||
begin
|
begin
|
||||||
ADest := nil;
|
ADest := nil;
|
||||||
if not Assigned(ASource) then
|
if not Assigned(ASource) then
|
||||||
Exit;
|
Exit;
|
||||||
c := SizeOf(PServiceRepository^);
|
c := SizeOf(TServiceRepository);
|
||||||
ADest := GetMem(c);
|
ADest := wst_GetMem(c);
|
||||||
try
|
try
|
||||||
FillChar(ADest^,c,#0);
|
FillChar(ADest^,c,#0);
|
||||||
ADest^.Name := ASource^.Name;
|
ADest^.Name := ASource^.Name;
|
||||||
@ -467,12 +487,14 @@ begin
|
|||||||
ADest^.RootAddress := ASource^.RootAddress;
|
ADest^.RootAddress := ASource^.RootAddress;
|
||||||
c := ASource^.ServicesCount;
|
c := ASource^.ServicesCount;
|
||||||
if ( c > 0 ) then begin
|
if ( c > 0 ) then begin
|
||||||
ADest^.Services := GetMem( c * SizeOf(PService^) );
|
ADest^.Services := wst_GetMem( c * SizeOf(TService) );
|
||||||
ADest^.ServicesCount := c;
|
ADest^.ServicesCount := c;
|
||||||
FillChar(ADest^.Services^,c * SizeOf(PService^),#0);
|
FillChar(ADest^.Services^,c * SizeOf(TService),#0);
|
||||||
ps := ADest^.Services;
|
ps := ADest^.Services;
|
||||||
|
psSrc := ASource^.Services;
|
||||||
for i := 0 to Pred(c) do begin
|
for i := 0 to Pred(c) do begin
|
||||||
CopyService(@(ASource^.Services[i]),@(ps[i]));
|
//CopyService(@(ASource^.Services[i]),@(ps[i]));
|
||||||
|
CopyService(psSrc,ps);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
except
|
except
|
||||||
@ -679,12 +701,16 @@ function FindService(
|
|||||||
) : PService;
|
) : PService;
|
||||||
var
|
var
|
||||||
i : Integer;
|
i : Integer;
|
||||||
|
srv : PService;
|
||||||
begin
|
begin
|
||||||
|
srv := ARep^.Services;
|
||||||
for i := 0 to Pred(ARep^.ServicesCount) do begin
|
for i := 0 to Pred(ARep^.ServicesCount) do begin
|
||||||
if AnsiSameText(AServiceName,ARep^.Services[i].Name) then begin
|
//if AnsiSameText(AServiceName,ARep^.Services[i].Name) then begin
|
||||||
Result := @(ARep^.Services[i]);
|
if AnsiSameText(AServiceName,srv^.Name) then begin
|
||||||
|
Result := srv;
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
Inc(srv);
|
||||||
end;
|
end;
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
@ -716,12 +742,15 @@ function FindOperation(
|
|||||||
) : PServiceOperation;
|
) : PServiceOperation;
|
||||||
var
|
var
|
||||||
i : Integer;
|
i : Integer;
|
||||||
|
sop : PServiceOperation;
|
||||||
begin
|
begin
|
||||||
|
sop := AServ^.Operations;
|
||||||
for i := 0 to Pred(AServ^.OperationsCount) do begin
|
for i := 0 to Pred(AServ^.OperationsCount) do begin
|
||||||
if AnsiSameText(AOperationName,AServ^.Operations[i].Name) then begin
|
if AnsiSameText(AOperationName,sop^.Name) then begin
|
||||||
Result := @(AServ^.Operations[i]);
|
Result := sop;
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
Inc(sop);
|
||||||
end;
|
end;
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
@ -762,11 +791,9 @@ begin
|
|||||||
if ( i < 0 ) then
|
if ( i < 0 ) then
|
||||||
i := InternalLoadRepository(ARepName);
|
i := InternalLoadRepository(ARepName);
|
||||||
rp := FRepositories[i];
|
rp := FRepositories[i];
|
||||||
for i := 0 to Pred(rp^.ServicesCount) do begin
|
Result := FindService(rp,AServiceName);
|
||||||
if AnsiSameText(AServiceName,rp^.Services[i].Name) then begin
|
if ( Result <> nil ) then begin
|
||||||
Result := CloneService(@(rp^.Services[i]));
|
Result := CloneService(Result);
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
unit metadata_service;
|
unit metadata_service;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ This unit has been produced by ws_helper.
|
|||||||
Date : "12/11/2006 11:12".
|
Date : "12/11/2006 11:12".
|
||||||
}
|
}
|
||||||
unit metadata_service_binder;
|
unit metadata_service_binder;
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses SysUtils, Classes, base_service_intf, server_service_intf, metadata_service;
|
uses SysUtils, Classes, base_service_intf, server_service_intf, metadata_service;
|
||||||
|
@ -5,7 +5,7 @@ This unit has been produced by ws_helper.
|
|||||||
Date : "01/07/2006 22:14".
|
Date : "01/07/2006 22:14".
|
||||||
}
|
}
|
||||||
Unit metadata_service_imp;
|
Unit metadata_service_imp;
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
Interface
|
Interface
|
||||||
|
|
||||||
Uses SysUtils, Classes,
|
Uses SysUtils, Classes,
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
unit metadata_wsdl;
|
unit metadata_wsdl;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -138,6 +138,9 @@ const
|
|||||||
sWSDL_TYPE = sTYPE;
|
sWSDL_TYPE = sTYPE;
|
||||||
sWSDL_TYPES = 'types';
|
sWSDL_TYPES = 'types';
|
||||||
|
|
||||||
|
sFORMAT_Input_EncodingStyle = 'FORMAT_Input_EncodingStyle';
|
||||||
|
sFORMAT_Input_EncodingStyleURI = 'FORMAT_Input_EncodingStyleURI';
|
||||||
|
|
||||||
var
|
var
|
||||||
WsdlTypeHandlerRegistryInst : IWsdlTypeHandlerRegistry;
|
WsdlTypeHandlerRegistryInst : IWsdlTypeHandlerRegistry;
|
||||||
|
|
||||||
@ -290,7 +293,7 @@ begin
|
|||||||
if FindAttributeByValueInNode(ANameSpace,AWsdlDocument.DocumentElement,Result,0,sXMLNS) then begin
|
if FindAttributeByValueInNode(ANameSpace,AWsdlDocument.DocumentElement,Result,0,sXMLNS) then begin
|
||||||
Result := Copy(Result,Length(sXMLNS+':')+1,MaxInt);
|
Result := Copy(Result,Length(sXMLNS+':')+1,MaxInt);
|
||||||
end else begin
|
end else begin
|
||||||
Result := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.Count]) ;
|
Result := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ;
|
||||||
AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,Result]),ANameSpace);
|
AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,Result]),ANameSpace);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -395,24 +398,39 @@ procedure GenerateWSDL(AMdtdRep : PServiceRepository; ADoc : TDOMDocument);
|
|||||||
var
|
var
|
||||||
opNode, inNode, outNode, bdyNode : TDOMElement;
|
opNode, inNode, outNode, bdyNode : TDOMElement;
|
||||||
strBuff : string;
|
strBuff : string;
|
||||||
|
propData : PPropertyData;
|
||||||
|
encdStyl,encdStylURI : string;
|
||||||
begin
|
begin
|
||||||
strBuff := Format('%s:%s',[sSOAP,sWSDL_OPERATION]);
|
strBuff := Format('%s:%s',[sSOAP,sWSDL_OPERATION]);
|
||||||
CreateElement(strBuff,ABndngNode,ADoc).SetAttribute(sSOAP_ACTION,Format('%s/%s%s',[AMdtdRep^.NameSpace,AService^.Name,AOperation^.Name]));
|
//CreateElement(strBuff,ABndngNode,ADoc).SetAttribute(sSOAP_ACTION,Format('%s/%s%s',[AMdtdRep^.NameSpace,AService^.Name,AOperation^.Name]));
|
||||||
opNode := CreateElement(sWSDL_OPERATION,ABndngNode,ADoc);
|
opNode := CreateElement(sWSDL_OPERATION,ABndngNode,ADoc);
|
||||||
opNode.SetAttribute(sWSDL_NAME,AOperation^.Name);
|
opNode.SetAttribute(sWSDL_NAME,AOperation^.Name);
|
||||||
|
CreateElement(strBuff,opNode,ADoc).SetAttribute(sSOAP_ACTION,Format('%s/%s%s',[AMdtdRep^.NameSpace,AService^.Name,AOperation^.Name]));
|
||||||
inNode := CreateElement(sWSDL_INPUT,opNode,ADoc);
|
inNode := CreateElement(sWSDL_INPUT,opNode,ADoc);
|
||||||
strBuff := Format('%s:%s',[sSOAP,sBODY]);
|
strBuff := Format('%s:%s',[sSOAP,sBODY]);
|
||||||
bdyNode := CreateElement(strBuff,inNode,ADoc);
|
bdyNode := CreateElement(strBuff,inNode,ADoc);
|
||||||
bdyNode.SetAttribute(sSOAP_USE,sSOAP_ENCODED);
|
encdStyl := 'literal';
|
||||||
|
encdStylURI := '';
|
||||||
|
propData := Find(AOperation^.Properties,sFORMAT_Input_EncodingStyle);
|
||||||
|
if Assigned(propData) and ( Length(Trim(propData^.Data)) > 0 ) then begin
|
||||||
|
encdStyl := Trim(propData^.Data);
|
||||||
|
end;
|
||||||
|
bdyNode.SetAttribute(sSOAP_USE,encdStyl);
|
||||||
bdyNode.SetAttribute(sNAME_SPACE,Format('%s',[AMdtdRep^.NameSpace]));
|
bdyNode.SetAttribute(sNAME_SPACE,Format('%s',[AMdtdRep^.NameSpace]));
|
||||||
bdyNode.SetAttribute(sSOAP_ENCODING_STYLE,sSOAP_ENC_NS);
|
propData := Find(AOperation^.Properties,sFORMAT_Input_EncodingStyleURI);
|
||||||
|
if Assigned(propData) and ( Length(Trim(propData^.Data)) > 0 ) then begin
|
||||||
|
encdStylURI := Trim(propData^.Data);
|
||||||
|
end;
|
||||||
|
if ( Length(encdStylURI) > 0 ) then
|
||||||
|
bdyNode.SetAttribute(sSOAP_ENCODING_STYLE,encdStylURI);
|
||||||
|
|
||||||
outNode := CreateElement(sWSDL_OUTPUT,opNode,ADoc);
|
outNode := CreateElement(sWSDL_OUTPUT,opNode,ADoc);
|
||||||
strBuff := Format('%s:%s',[sSOAP,sBODY]);
|
strBuff := Format('%s:%s',[sSOAP,sBODY]);
|
||||||
bdyNode := CreateElement(strBuff,outNode,ADoc);
|
bdyNode := CreateElement(strBuff,outNode,ADoc);
|
||||||
bdyNode.SetAttribute(sSOAP_USE,sSOAP_ENCODED);
|
bdyNode.SetAttribute(sSOAP_USE,encdStyl);
|
||||||
bdyNode.SetAttribute(sNAME_SPACE,Format('%s',[AMdtdRep^.NameSpace]));
|
bdyNode.SetAttribute(sNAME_SPACE,Format('%s',[AMdtdRep^.NameSpace]));
|
||||||
bdyNode.SetAttribute(sSOAP_ENCODING_STYLE,sSOAP_ENC_NS);
|
if ( Length(encdStylURI) > 0 ) then
|
||||||
|
bdyNode.SetAttribute(sSOAP_ENCODING_STYLE,encdStylURI);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -651,7 +669,7 @@ begin
|
|||||||
if FindAttributeByValueInNode(typItm.NameSpace,AWsdlDocument.DocumentElement,ns_shortName) then begin
|
if FindAttributeByValueInNode(typItm.NameSpace,AWsdlDocument.DocumentElement,ns_shortName) then begin
|
||||||
ns_shortName := Copy(ns_shortName,Length(sXMLNS+':')+1,MaxInt);
|
ns_shortName := Copy(ns_shortName,Length(sXMLNS+':')+1,MaxInt);
|
||||||
end else begin
|
end else begin
|
||||||
ns_shortName := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.Count]) ;
|
ns_shortName := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ;
|
||||||
AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,ns_shortName]),typItm.NameSpace);
|
AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,ns_shortName]),typItm.NameSpace);
|
||||||
end;
|
end;
|
||||||
defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement;
|
defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement;
|
||||||
@ -749,7 +767,7 @@ procedure TBaseArrayRemotable_TypeHandler.Generate(
|
|||||||
if FindAttributeByValueInNode(ANameSpace,AWsdlDocument.DocumentElement,Result,0,sXMLNS) then begin
|
if FindAttributeByValueInNode(ANameSpace,AWsdlDocument.DocumentElement,Result,0,sXMLNS) then begin
|
||||||
Result := Copy(Result,Length(sXMLNS+':')+1,MaxInt);
|
Result := Copy(Result,Length(sXMLNS+':')+1,MaxInt);
|
||||||
end else begin
|
end else begin
|
||||||
Result := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.Count]) ;
|
Result := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ;
|
||||||
AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,Result]),ANameSpace);
|
AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,Result]),ANameSpace);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
1
wst/trunk/samples/extract_binder.bat
Normal file
1
wst/trunk/samples/extract_binder.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
..\..\wst\ws_helper\ws_helper -b -o. "user_service_intf.wsdl" >extract_bind.res.txt
|
1
wst/trunk/samples/extract_imp.bat
Normal file
1
wst/trunk/samples/extract_imp.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
..\..\wst\ws_helper\ws_helper -i -o. "user_service_intf.wsdl" >extract_imp.res.txt
|
1
wst/trunk/samples/extract_intf.bat
Normal file
1
wst/trunk/samples/extract_intf.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
..\..\wst\ws_helper\ws_helper -uA -p -o. "user_service_intf.wsdl" >extract_intf.res.txt
|
1
wst/trunk/samples/extract_proxy.bat
Normal file
1
wst/trunk/samples/extract_proxy.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
..\..\wst\ws_helper\ws_helper -p -o. "user_service_intf.wsdl" >extract_proxy.res.txt
|
77
wst/trunk/samples/tcp_server/imp_helper.pas
Normal file
77
wst/trunk/samples/tcp_server/imp_helper.pas
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
unit imp_helper;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils,
|
||||||
|
base_service_intf,
|
||||||
|
base_binary_formatter;
|
||||||
|
|
||||||
|
|
||||||
|
procedure SaveObjectToStream(AObject : TPersistent; AStream : TStream);
|
||||||
|
procedure LoadObjectFromStream(AObject : TPersistent; AStream : TStream);
|
||||||
|
|
||||||
|
procedure SaveObjectToFile(AObject : TPersistent; const AFileName : string);
|
||||||
|
procedure LoadObjectFromFile(AObject : TPersistent; const AFileName : string);
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses TypInfo;
|
||||||
|
|
||||||
|
procedure SaveObjectToFile(AObject : TPersistent; const AFileName : string);
|
||||||
|
var
|
||||||
|
strm : TFileStream;
|
||||||
|
begin
|
||||||
|
if FileExists(AFileName) then
|
||||||
|
DeleteFile(AFileName);
|
||||||
|
strm := TFileStream.Create(AFileName,fmCreate);
|
||||||
|
try
|
||||||
|
SaveObjectToStream(AObject,strm);
|
||||||
|
finally
|
||||||
|
strm.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure LoadObjectFromFile(AObject : TPersistent; const AFileName : string);
|
||||||
|
var
|
||||||
|
strm : TFileStream;
|
||||||
|
begin
|
||||||
|
if not FileExists(AFileName) then
|
||||||
|
raise Exception.CreateFmt('File not found : "%s"',[AFileName]);
|
||||||
|
strm := TFileStream.Create(AFileName,fmOpenRead);
|
||||||
|
try
|
||||||
|
LoadObjectFromStream(AObject,strm);
|
||||||
|
finally
|
||||||
|
strm.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SaveObjectToStream(AObject : TPersistent; AStream : TStream);
|
||||||
|
var
|
||||||
|
srlzr : IFormatterBase;
|
||||||
|
begin
|
||||||
|
srlzr := TBaseBinaryFormatter.Create();
|
||||||
|
srlzr.BeginObject('root',TypeInfo(TPersistent));
|
||||||
|
srlzr.Put('object',PTypeInfo(AObject.ClassInfo),AObject);
|
||||||
|
srlzr.EndScope();
|
||||||
|
srlzr.SaveToStream(AStream);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure LoadObjectFromStream(AObject : TPersistent; AStream : TStream);
|
||||||
|
var
|
||||||
|
srlzr : IFormatterBase;
|
||||||
|
nme : string;
|
||||||
|
begin
|
||||||
|
srlzr := TBaseBinaryFormatter.Create();
|
||||||
|
srlzr.LoadFromStream(AStream);
|
||||||
|
nme := 'root';
|
||||||
|
srlzr.BeginObjectRead(nme,TypeInfo(TPersistent));
|
||||||
|
nme := 'object';
|
||||||
|
srlzr.Get(PTypeInfo(AObject.ClassInfo),nme,AObject);
|
||||||
|
srlzr.EndScopeRead();
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
354
wst/trunk/samples/tcp_server/tcp_server.lpi
Normal file
354
wst/trunk/samples/tcp_server/tcp_server.lpi
Normal file
@ -0,0 +1,354 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Version Value="5"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<MainUnitHasUsesSectionForAllUnits Value="False"/>
|
||||||
|
<MainUnitHasCreateFormStatements Value="False"/>
|
||||||
|
<MainUnitHasTitleStatement Value="False"/>
|
||||||
|
</Flags>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<IconPath Value="./"/>
|
||||||
|
<TargetFileExt Value=".exe"/>
|
||||||
|
<ActiveEditorIndexAtStart Value="0"/>
|
||||||
|
</General>
|
||||||
|
<VersionInfo>
|
||||||
|
<ProjectVersion Value=""/>
|
||||||
|
</VersionInfo>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
<IgnoreBinaries Value="False"/>
|
||||||
|
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||||
|
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<local>
|
||||||
|
<FormatVersion Value="1"/>
|
||||||
|
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||||
|
</local>
|
||||||
|
</RunParams>
|
||||||
|
<Units Count="36">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="tcp_server.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="tcp_server"/>
|
||||||
|
<CursorPos X="28" Y="25"/>
|
||||||
|
<TopLine Value="17"/>
|
||||||
|
<EditorIndex Value="0"/>
|
||||||
|
<UsageCount Value="64"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="synapse_tcp_server.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="synapse_tcp_server"/>
|
||||||
|
<CursorPos X="42" Y="211"/>
|
||||||
|
<TopLine Value="197"/>
|
||||||
|
<UsageCount Value="64"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\classesh.inc"/>
|
||||||
|
<CursorPos X="26" Y="686"/>
|
||||||
|
<TopLine Value="672"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win\sysosh.inc"/>
|
||||||
|
<CursorPos X="3" Y="25"/>
|
||||||
|
<TopLine Value="4"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit3>
|
||||||
|
<Unit4>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\others_package\synapse\blcksock.pas"/>
|
||||||
|
<UnitName Value="blcksock"/>
|
||||||
|
<CursorPos X="1" Y="2407"/>
|
||||||
|
<TopLine Value="2395"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit4>
|
||||||
|
<Unit5>
|
||||||
|
<Filename Value="..\..\binary_streamer.pas"/>
|
||||||
|
<UnitName Value="binary_streamer"/>
|
||||||
|
<CursorPos X="37" Y="13"/>
|
||||||
|
<TopLine Value="178"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
|
<UnitName Value="server_service_soap"/>
|
||||||
|
<CursorPos X="35" Y="29"/>
|
||||||
|
<TopLine Value="8"/>
|
||||||
|
<UsageCount Value="22"/>
|
||||||
|
</Unit6>
|
||||||
|
<Unit7>
|
||||||
|
<Filename Value="..\..\server_binary_formatter.pas"/>
|
||||||
|
<UnitName Value="server_binary_formatter"/>
|
||||||
|
<CursorPos X="24" Y="22"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit7>
|
||||||
|
<Unit8>
|
||||||
|
<Filename Value="..\..\metadata_service.pas"/>
|
||||||
|
<UnitName Value="metadata_service"/>
|
||||||
|
<CursorPos X="96" Y="118"/>
|
||||||
|
<TopLine Value="103"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit8>
|
||||||
|
<Unit9>
|
||||||
|
<Filename Value="..\..\metadata_service_imp.pas"/>
|
||||||
|
<UnitName Value="metadata_service_imp"/>
|
||||||
|
<CursorPos X="1" Y="39"/>
|
||||||
|
<TopLine Value="28"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit9>
|
||||||
|
<Unit10>
|
||||||
|
<Filename Value="..\..\metadata_service_binder.pas"/>
|
||||||
|
<UnitName Value="metadata_service_binder"/>
|
||||||
|
<CursorPos X="69" Y="11"/>
|
||||||
|
<TopLine Value="9"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit10>
|
||||||
|
<Unit11>
|
||||||
|
<Filename Value="..\user_service_intf.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="user_service_intf"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="174"/>
|
||||||
|
<EditorIndex Value="3"/>
|
||||||
|
<UsageCount Value="64"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit11>
|
||||||
|
<Unit12>
|
||||||
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
|
<UnitName Value="base_service_intf"/>
|
||||||
|
<CursorPos X="38" Y="569"/>
|
||||||
|
<TopLine Value="551"/>
|
||||||
|
<UsageCount Value="24"/>
|
||||||
|
<Bookmarks Count="1">
|
||||||
|
<Item0 X="19" Y="545" ID="0"/>
|
||||||
|
</Bookmarks>
|
||||||
|
</Unit12>
|
||||||
|
<Unit13>
|
||||||
|
<Filename Value="..\..\wst_rtti_filter\std_cursors.pas"/>
|
||||||
|
<UnitName Value="std_cursors"/>
|
||||||
|
<CursorPos X="1" Y="48"/>
|
||||||
|
<TopLine Value="36"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="31"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit13>
|
||||||
|
<Unit14>
|
||||||
|
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
|
||||||
|
<UnitName Value="cursor_intf"/>
|
||||||
|
<CursorPos X="3" Y="27"/>
|
||||||
|
<TopLine Value="15"/>
|
||||||
|
<UsageCount Value="24"/>
|
||||||
|
</Unit14>
|
||||||
|
<Unit15>
|
||||||
|
<Filename Value="..\user_service_intf_binder.pas"/>
|
||||||
|
<UnitName Value="user_service_intf_binder"/>
|
||||||
|
<CursorPos X="70" Y="11"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<UsageCount Value="32"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit15>
|
||||||
|
<Unit16>
|
||||||
|
<Filename Value="..\user_service_intf.wst"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
<SyntaxHighlighter Value="None"/>
|
||||||
|
</Unit16>
|
||||||
|
<Unit17>
|
||||||
|
<Filename Value="..\..\metadata_repository.pas"/>
|
||||||
|
<UnitName Value="metadata_repository"/>
|
||||||
|
<CursorPos X="37" Y="571"/>
|
||||||
|
<TopLine Value="562"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit17>
|
||||||
|
<Unit18>
|
||||||
|
<Filename Value="..\..\wst_resources_imp.pas"/>
|
||||||
|
<UnitName Value="wst_resources_imp"/>
|
||||||
|
<CursorPos X="15" Y="63"/>
|
||||||
|
<TopLine Value="45"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit18>
|
||||||
|
<Unit19>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\except.inc"/>
|
||||||
|
<CursorPos X="3" Y="95"/>
|
||||||
|
<TopLine Value="73"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit19>
|
||||||
|
<Unit20>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\setjump.inc"/>
|
||||||
|
<CursorPos X="1" Y="36"/>
|
||||||
|
<TopLine Value="16"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit20>
|
||||||
|
<Unit21>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\objpas.inc"/>
|
||||||
|
<CursorPos X="1" Y="76"/>
|
||||||
|
<TopLine Value="64"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit21>
|
||||||
|
<Unit22>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\collect.inc"/>
|
||||||
|
<CursorPos X="1" Y="264"/>
|
||||||
|
<TopLine Value="252"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit22>
|
||||||
|
<Unit23>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\lists.inc"/>
|
||||||
|
<CursorPos X="1" Y="381"/>
|
||||||
|
<TopLine Value="369"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit23>
|
||||||
|
<Unit24>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\system.inc"/>
|
||||||
|
<CursorPos X="1" Y="674"/>
|
||||||
|
<TopLine Value="662"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit24>
|
||||||
|
<Unit25>
|
||||||
|
<Filename Value="..\..\server_service_intf.pas"/>
|
||||||
|
<UnitName Value="server_service_intf"/>
|
||||||
|
<CursorPos X="16" Y="346"/>
|
||||||
|
<TopLine Value="323"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit25>
|
||||||
|
<Unit26>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\i386.inc"/>
|
||||||
|
<CursorPos X="1" Y="1125"/>
|
||||||
|
<TopLine Value="1113"/>
|
||||||
|
<UsageCount Value="6"/>
|
||||||
|
</Unit26>
|
||||||
|
<Unit27>
|
||||||
|
<Filename Value="..\user_service_intf_imp.pas"/>
|
||||||
|
<UnitName Value="user_service_intf_imp"/>
|
||||||
|
<CursorPos X="72" Y="128"/>
|
||||||
|
<TopLine Value="108"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
|
<UsageCount Value="32"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit27>
|
||||||
|
<Unit28>
|
||||||
|
<Filename Value="..\..\service_intf.pas"/>
|
||||||
|
<UnitName Value="service_intf"/>
|
||||||
|
<CursorPos X="15" Y="23"/>
|
||||||
|
<TopLine Value="19"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit28>
|
||||||
|
<Unit29>
|
||||||
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
|
<UnitName Value="base_soap_formatter"/>
|
||||||
|
<CursorPos X="65" Y="313"/>
|
||||||
|
<TopLine Value="304"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit29>
|
||||||
|
<Unit30>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\typinfo.pp"/>
|
||||||
|
<UnitName Value="typinfo"/>
|
||||||
|
<CursorPos X="11" Y="247"/>
|
||||||
|
<TopLine Value="226"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit30>
|
||||||
|
<Unit31>
|
||||||
|
<Filename Value="..\..\base_binary_formatter.pas"/>
|
||||||
|
<UnitName Value="base_binary_formatter"/>
|
||||||
|
<CursorPos X="3" Y="1063"/>
|
||||||
|
<TopLine Value="1055"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit31>
|
||||||
|
<Unit32>
|
||||||
|
<Filename Value="imp_helper.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="imp_helper"/>
|
||||||
|
<CursorPos X="1" Y="44"/>
|
||||||
|
<TopLine Value="32"/>
|
||||||
|
<EditorIndex Value="1"/>
|
||||||
|
<UsageCount Value="33"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit32>
|
||||||
|
<Unit33>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\persist.inc"/>
|
||||||
|
<CursorPos X="3" Y="36"/>
|
||||||
|
<TopLine Value="32"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit33>
|
||||||
|
<Unit34>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\streams.inc"/>
|
||||||
|
<CursorPos X="43" Y="511"/>
|
||||||
|
<TopLine Value="506"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit34>
|
||||||
|
<Unit35>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win\sysutils.pp"/>
|
||||||
|
<UnitName Value="sysutils"/>
|
||||||
|
<CursorPos X="1" Y="326"/>
|
||||||
|
<TopLine Value="314"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit35>
|
||||||
|
</Units>
|
||||||
|
<JumpHistory Count="0" HistoryIndex="-1"/>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="5"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="tcp_server.exe"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="C:\Programmes\lazarus\wst\"/>
|
||||||
|
<OtherUnitFiles Value="C:\Programmes\lazarus\wst\;C:\Programmes\lazarus\wst\wst_rtti_filter\;$(LazarusDir)\others_package\synapse\;C:\Programmes\lazarus\wst\samples\"/>
|
||||||
|
<UnitOutputDirectory Value="obj"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<CodeGeneration>
|
||||||
|
<Generate Value="Faster"/>
|
||||||
|
</CodeGeneration>
|
||||||
|
<Other>
|
||||||
|
<CompilerPath Value="$(CompPath)"/>
|
||||||
|
</Other>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<BreakPoints Count="5">
|
||||||
|
<Item1>
|
||||||
|
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
|
||||||
|
<Line Value="230"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
|
||||||
|
<Line Value="193"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
|
||||||
|
<Line Value="198"/>
|
||||||
|
</Item3>
|
||||||
|
<Item4>
|
||||||
|
<Source Value="..\..\ws_helper\wsdl2pas_imp.pas"/>
|
||||||
|
<Line Value="606"/>
|
||||||
|
</Item4>
|
||||||
|
<Item5>
|
||||||
|
<Source Value="..\user_service_intf_imp.pas"/>
|
||||||
|
<Line Value="176"/>
|
||||||
|
</Item5>
|
||||||
|
</BreakPoints>
|
||||||
|
<Watches Count="2">
|
||||||
|
<Item1>
|
||||||
|
<Expression Value="locStrFilter"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Expression Value="i"/>
|
||||||
|
</Item2>
|
||||||
|
</Watches>
|
||||||
|
<Exceptions Count="2">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item2>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
45
wst/trunk/samples/tcp_server/tcp_server.pas
Normal file
45
wst/trunk/samples/tcp_server/tcp_server.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
This file is part of the Web Service Toolkit
|
||||||
|
Copyright (c) 2006 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.
|
||||||
|
}
|
||||||
|
program tcp_server;
|
||||||
|
|
||||||
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils,
|
||||||
|
base_service_intf, server_service_soap,
|
||||||
|
base_binary_formatter, server_binary_formatter,
|
||||||
|
metadata_service, metadata_service_imp, metadata_service_binder,
|
||||||
|
synapse_tcp_server,
|
||||||
|
|
||||||
|
user_service_intf, user_service_intf_binder, user_service_intf_imp , imp_helper;
|
||||||
|
|
||||||
|
|
||||||
|
var
|
||||||
|
listnerThread : TServerListnerThread;
|
||||||
|
begin
|
||||||
|
SetLogger(TConsoleLogger.Create());
|
||||||
|
|
||||||
|
Server_service_RegisterBinaryFormat();
|
||||||
|
Server_service_RegisterSoapFormat();
|
||||||
|
Server_service_RegisterWSTMetadataServiceService();
|
||||||
|
RegisterWSTMetadataServiceImplementationFactory();
|
||||||
|
|
||||||
|
Server_service_RegisterUserServiceService();
|
||||||
|
RegisterUserServiceImplementationFactory();
|
||||||
|
|
||||||
|
Logger().Log('WST sample TCP Server listning on "%s"',[sSERVER_PORT]);
|
||||||
|
Logger().Log('Hit <enter> to stop.');
|
||||||
|
listnerThread := TServerListnerThread.Create();
|
||||||
|
ReadLn;
|
||||||
|
end.
|
||||||
|
|
124
wst/trunk/samples/user_client/umain.lfm
Normal file
124
wst/trunk/samples/user_client/umain.lfm
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
object fMain: TfMain
|
||||||
|
Left = 379
|
||||||
|
Height = 382
|
||||||
|
Top = 283
|
||||||
|
Width = 651
|
||||||
|
HorzScrollBar.Page = 650
|
||||||
|
VertScrollBar.Page = 381
|
||||||
|
ActiveControl = Grid
|
||||||
|
Caption = 'fMain'
|
||||||
|
ClientHeight = 382
|
||||||
|
ClientWidth = 651
|
||||||
|
Position = poMainFormCenter
|
||||||
|
object Panel1: TPanel
|
||||||
|
Height = 182
|
||||||
|
Top = 200
|
||||||
|
Width = 651
|
||||||
|
Align = alClient
|
||||||
|
BevelInner = bvLowered
|
||||||
|
Caption = 'Panel1'
|
||||||
|
ClientHeight = 182
|
||||||
|
ClientWidth = 651
|
||||||
|
TabOrder = 0
|
||||||
|
object Grid: TTIGrid
|
||||||
|
Left = 2
|
||||||
|
Height = 178
|
||||||
|
Top = 2
|
||||||
|
Width = 647
|
||||||
|
Align = alClient
|
||||||
|
AutoFillColumns = True
|
||||||
|
BorderSpacing.CellAlignHorizontal = ccaRightBottom
|
||||||
|
BorderStyle = bsNone
|
||||||
|
Filter = [tkInteger, tkChar, tkEnumeration, tkFloat, tkSString, tkLString, tkAString, tkWString, tkVariant, tkWChar, tkBool, tkInt64, tkQWord]
|
||||||
|
FixedColor = clBtnFace
|
||||||
|
Flat = True
|
||||||
|
OnGetObject = GridGetObject
|
||||||
|
OnGetObjectCount = GridGetObjectCount
|
||||||
|
OnGetObjectName = GridGetObjectName
|
||||||
|
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goColSizing, goRowMoving, goColMoving, goColSpanning, goDblClickAutoSize, goFixedRowNumbering, goScrollKeepVisible]
|
||||||
|
ParentColor = False
|
||||||
|
PropertyOrder.Strings = (
|
||||||
|
'Name'
|
||||||
|
'Category'
|
||||||
|
'Preferences'
|
||||||
|
'eMail'
|
||||||
|
)
|
||||||
|
TabOrder = 0
|
||||||
|
TabStop = True
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object GroupBox1: TGroupBox
|
||||||
|
Height = 200
|
||||||
|
Width = 651
|
||||||
|
Align = alTop
|
||||||
|
ClientHeight = 178
|
||||||
|
ClientWidth = 647
|
||||||
|
TabOrder = 1
|
||||||
|
object btnSearch: TButton
|
||||||
|
Left = 500
|
||||||
|
Height = 35
|
||||||
|
Top = -1
|
||||||
|
Width = 131
|
||||||
|
Action = actSearch
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object btnAdd: TButton
|
||||||
|
Left = 500
|
||||||
|
Height = 35
|
||||||
|
Top = 42
|
||||||
|
Width = 131
|
||||||
|
Action = actNew
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object btnAdd1: TButton
|
||||||
|
Left = 500
|
||||||
|
Height = 35
|
||||||
|
Top = 87
|
||||||
|
Width = 131
|
||||||
|
Action = actUpdate
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object btnAdd2: TButton
|
||||||
|
Left = 500
|
||||||
|
Height = 35
|
||||||
|
Top = 132
|
||||||
|
Width = 131
|
||||||
|
Action = actDelete
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object AL: TActionList
|
||||||
|
left = 99
|
||||||
|
top = 56
|
||||||
|
object actNew: TAction
|
||||||
|
Caption = 'Create User'
|
||||||
|
DisableIfNoHandler = True
|
||||||
|
OnExecute = actNewExecute
|
||||||
|
end
|
||||||
|
object actUpdate: TAction
|
||||||
|
Caption = 'Update User'
|
||||||
|
DisableIfNoHandler = True
|
||||||
|
OnExecute = actUpdateExecute
|
||||||
|
OnUpdate = actUpdateUpdate
|
||||||
|
end
|
||||||
|
object actDelete: TAction
|
||||||
|
Caption = 'Delete'
|
||||||
|
DisableIfNoHandler = True
|
||||||
|
OnExecute = actDeleteExecute
|
||||||
|
OnUpdate = actUpdateUpdate
|
||||||
|
end
|
||||||
|
object actSearch: TAction
|
||||||
|
Caption = 'Get List'
|
||||||
|
DisableIfNoHandler = True
|
||||||
|
OnExecute = actSearchExecute
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
44
wst/trunk/samples/user_client/umain.lrs
Normal file
44
wst/trunk/samples/user_client/umain.lrs
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
|
||||||
|
|
||||||
|
LazarusResources.Add('TfMain','FORMDATA',[
|
||||||
|
'TPF0'#6'TfMain'#5'fMain'#4'Left'#3'{'#1#6'Height'#3'~'#1#3'Top'#3#27#1#5'Wid'
|
||||||
|
+'th'#3#139#2#18'HorzScrollBar.Page'#3#138#2#18'VertScrollBar.Page'#3'}'#1#13
|
||||||
|
+'ActiveControl'#7#4'Grid'#7'Caption'#6#5'fMain'#12'ClientHeight'#3'~'#1#11'C'
|
||||||
|
+'lientWidth'#3#139#2#8'Position'#7#16'poMainFormCenter'#0#6'TPanel'#6'Panel1'
|
||||||
|
+#6'Height'#3#182#0#3'Top'#3#200#0#5'Width'#3#139#2#5'Align'#7#8'alClient'#10
|
||||||
|
+'BevelInner'#7#9'bvLowered'#7'Caption'#6#6'Panel1'#12'ClientHeight'#3#182#0
|
||||||
|
+#11'ClientWidth'#3#139#2#8'TabOrder'#2#0#0#7'TTIGrid'#4'Grid'#4'Left'#2#2#6
|
||||||
|
+'Height'#3#178#0#3'Top'#2#2#5'Width'#3#135#2#5'Align'#7#8'alClient'#15'AutoF'
|
||||||
|
+'illColumns'#9'!BorderSpacing.CellAlignHorizontal'#7#14'ccaRightBottom'#11'B'
|
||||||
|
+'orderStyle'#7#6'bsNone'#6'Filter'#11#9'tkInteger'#6'tkChar'#13'tkEnumeratio'
|
||||||
|
+'n'#7'tkFloat'#9'tkSString'#9'tkLString'#9'tkAString'#9'tkWString'#9'tkVaria'
|
||||||
|
+'nt'#7'tkWChar'#6'tkBool'#7'tkInt64'#7'tkQWord'#0#10'FixedColor'#7#9'clBtnFa'
|
||||||
|
+'ce'#4'Flat'#9#11'OnGetObject'#7#13'GridGetObject'#16'OnGetObjectCount'#7#18
|
||||||
|
+'GridGetObjectCount'#15'OnGetObjectName'#7#17'GridGetObjectName'#7'Options'
|
||||||
|
+#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13
|
||||||
|
+'goRangeSelect'#19'goDrawFocusSelected'#11'goColSizing'#11'goRowMoving'#11'g'
|
||||||
|
+'oColMoving'#13'goColSpanning'#18'goDblClickAutoSize'#19'goFixedRowNumbering'
|
||||||
|
+#19'goScrollKeepVisible'#0#11'ParentColor'#8#21'PropertyOrder.Strings'#1#6#4
|
||||||
|
+'Name'#6#8'Category'#6#11'Preferences'#6#5'eMail'#0#8'TabOrder'#2#0#7'TabSto'
|
||||||
|
+'p'#9#0#0#0#9'TGroupBox'#9'GroupBox1'#6'Height'#3#200#0#5'Width'#3#139#2#5'A'
|
||||||
|
+'lign'#7#5'alTop'#12'ClientHeight'#3#178#0#11'ClientWidth'#3#135#2#8'TabOrde'
|
||||||
|
+'r'#2#1#0#7'TButton'#9'btnSearch'#4'Left'#3#244#1#6'Height'#2'#'#3'Top'#2#255
|
||||||
|
+#5'Width'#3#131#0#6'Action'#7#9'actSearch'#7'Anchors'#11#5'akTop'#7'akRight'
|
||||||
|
+#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#0#0#0#7'TButton'#6'btnAdd'
|
||||||
|
+#4'Left'#3#244#1#6'Height'#2'#'#3'Top'#2'*'#5'Width'#3#131#0#6'Action'#7#6'a'
|
||||||
|
+'ctNew'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4
|
||||||
|
+#8'TabOrder'#2#1#0#0#7'TButton'#7'btnAdd1'#4'Left'#3#244#1#6'Height'#2'#'#3
|
||||||
|
+'Top'#2'W'#5'Width'#3#131#0#6'Action'#7#9'actUpdate'#7'Anchors'#11#5'akTop'#7
|
||||||
|
+'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#7'TButton'
|
||||||
|
+#7'btnAdd2'#4'Left'#3#244#1#6'Height'#2'#'#3'Top'#3#132#0#5'Width'#3#131#0#6
|
||||||
|
+'Action'#7#9'actDelete'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing'
|
||||||
|
+'.InnerBorder'#2#4#8'TabOrder'#2#3#0#0#0#11'TActionList'#2'AL'#4'left'#2'c'#3
|
||||||
|
+'top'#2'8'#0#7'TAction'#6'actNew'#7'Caption'#6#11'Create User'#18'DisableIfN'
|
||||||
|
+'oHandler'#9#9'OnExecute'#7#13'actNewExecute'#0#0#7'TAction'#9'actUpdate'#7
|
||||||
|
+'Caption'#6#11'Update User'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actUp'
|
||||||
|
+'dateExecute'#8'OnUpdate'#7#15'actUpdateUpdate'#0#0#7'TAction'#9'actDelete'#7
|
||||||
|
+'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actDeleteEx'
|
||||||
|
+'ecute'#8'OnUpdate'#7#15'actUpdateUpdate'#0#0#7'TAction'#9'actSearch'#7'Capt'
|
||||||
|
+'ion'#6#8'Get List'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actSearchExec'
|
||||||
|
+'ute'#0#0#0#0
|
||||||
|
]);
|
169
wst/trunk/samples/user_client/umain.pas
Normal file
169
wst/trunk/samples/user_client/umain.pas
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
unit umain;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, RTTIGrids,
|
||||||
|
ExtCtrls, StdCtrls, user_service_intf, Buttons, ActnList;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TfMain }
|
||||||
|
|
||||||
|
TfMain = class(TForm)
|
||||||
|
actDelete: TAction;
|
||||||
|
actSearch: TAction;
|
||||||
|
actUpdate: TAction;
|
||||||
|
actNew: TAction;
|
||||||
|
AL: TActionList;
|
||||||
|
btnAdd1: TButton;
|
||||||
|
btnAdd2: TButton;
|
||||||
|
btnSearch: TButton;
|
||||||
|
btnAdd: TButton;
|
||||||
|
GroupBox1: TGroupBox;
|
||||||
|
Panel1: TPanel;
|
||||||
|
Grid: TTIGrid;
|
||||||
|
procedure actDeleteExecute(Sender: TObject);
|
||||||
|
procedure actNewExecute(Sender: TObject);
|
||||||
|
procedure actSearchExecute(Sender: TObject);
|
||||||
|
procedure actUpdateExecute(Sender: TObject);
|
||||||
|
procedure actUpdateUpdate(Sender: TObject);
|
||||||
|
procedure GridGetObject(Sender: TTICustomGrid; Index: integer;
|
||||||
|
var TIObject: TPersistent);
|
||||||
|
procedure GridGetObjectCount(Sender: TTICustomGrid; ListObject: TObject;
|
||||||
|
var ObjCount: integer);
|
||||||
|
procedure GridGetObjectName(Sender: TObject; Index: integer;
|
||||||
|
TIObject: TPersistent; var ObjName: string);
|
||||||
|
private
|
||||||
|
FUserService : UserService;
|
||||||
|
function CreateObj():UserService;
|
||||||
|
function GetObjectIndex() : Integer;
|
||||||
|
public
|
||||||
|
FUsers : TUserArray;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
fMain: TfMain;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses user_service_intf_proxy, synapse_tcp_protocol, synapse_http_protocol,
|
||||||
|
soap_formatter, binary_formatter, user_edit_imp ;
|
||||||
|
|
||||||
|
{ TfMain }
|
||||||
|
|
||||||
|
procedure TfMain.GridGetObjectCount(Sender: TTICustomGrid;
|
||||||
|
ListObject: TObject; var ObjCount: integer);
|
||||||
|
begin
|
||||||
|
if ( FUsers = nil ) then
|
||||||
|
ObjCount := 0
|
||||||
|
else
|
||||||
|
ObjCount := FUsers.Length;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.GridGetObjectName(Sender: TObject; Index: integer;
|
||||||
|
TIObject: TPersistent; var ObjName: string);
|
||||||
|
begin
|
||||||
|
if ( TIObject <> nil ) then
|
||||||
|
ObjName := (TIObject as TUser).UserName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TfMain.CreateObj(): UserService;
|
||||||
|
begin
|
||||||
|
if ( FUserService = nil ) then begin
|
||||||
|
FUserService := TUserService_Proxy.Create(
|
||||||
|
'UserService',
|
||||||
|
'binary:',
|
||||||
|
'TCP:Address=127.0.0.1;Port=1234;target=UserService'
|
||||||
|
);
|
||||||
|
end;
|
||||||
|
Result := FUserService;
|
||||||
|
end;
|
||||||
|
|
||||||
|
type TCrakGrid = class(TTIGrid);
|
||||||
|
function TfMain.GetObjectIndex(): Integer;
|
||||||
|
begin
|
||||||
|
Result := TCrakGrid(Grid).Row - 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.GridGetObject(Sender: TTICustomGrid; Index: integer;
|
||||||
|
var TIObject: TPersistent);
|
||||||
|
begin
|
||||||
|
TIObject := FUsers[Index];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.actNewExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
obj : TUser;
|
||||||
|
f : TfUserEdit;
|
||||||
|
begin
|
||||||
|
obj := nil;
|
||||||
|
f := TfUserEdit.Create(Application);
|
||||||
|
try
|
||||||
|
obj := TUser.Create();
|
||||||
|
if f.UpdateObject(obj) then begin
|
||||||
|
CreateObj().Add(obj);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(obj);
|
||||||
|
f.Release();
|
||||||
|
actSearch.Execute();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.actSearchExecute(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FreeAndNil(FUsers);
|
||||||
|
FUsers := CreateObj().GetList();
|
||||||
|
Grid.ListObject := FUsers;
|
||||||
|
Grid.Invalidate();
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.actDeleteExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
i : Integer;
|
||||||
|
begin
|
||||||
|
i := GetObjectIndex();
|
||||||
|
if ( i >= 0 ) then begin
|
||||||
|
try
|
||||||
|
CreateObj().Delete(FUsers[i].UserName);
|
||||||
|
finally
|
||||||
|
actSearch.Execute();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.actUpdateExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
i : Integer;
|
||||||
|
obj : TUser;
|
||||||
|
f : TfUserEdit;
|
||||||
|
begin
|
||||||
|
i := GetObjectIndex();
|
||||||
|
if ( i >= 0 ) then begin
|
||||||
|
obj := FUsers[i];
|
||||||
|
f := TfUserEdit.Create(Application);
|
||||||
|
try
|
||||||
|
if f.UpdateObject(obj) then begin
|
||||||
|
CreateObj().Update(obj);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
f.Release();
|
||||||
|
actSearch.Execute();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfMain.actUpdateUpdate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
TAction(Sender).Enabled := ( GetObjectIndex() >= 0 );
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
{$I umain.lrs}
|
||||||
|
|
||||||
|
SYNAPSE_RegisterTCP_Transport();
|
||||||
|
SYNAPSE_RegisterHTTP_Transport();
|
||||||
|
|
||||||
|
end.
|
362
wst/trunk/samples/user_client/user_client.lpi
Normal file
362
wst/trunk/samples/user_client/user_client.lpi
Normal file
@ -0,0 +1,362 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Version Value="5"/>
|
||||||
|
<General>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<IconPath Value="./"/>
|
||||||
|
<TargetFileExt Value=".exe"/>
|
||||||
|
<ActiveEditorIndexAtStart Value="7"/>
|
||||||
|
</General>
|
||||||
|
<VersionInfo>
|
||||||
|
<ProjectVersion Value=""/>
|
||||||
|
</VersionInfo>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
<IgnoreBinaries Value="False"/>
|
||||||
|
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||||
|
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<local>
|
||||||
|
<FormatVersion Value="1"/>
|
||||||
|
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||||
|
</local>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages Count="2">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="RunTimeTypeInfoControls"/>
|
||||||
|
<MinVersion Minor="1" Valid="True"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item2>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units Count="21">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="user_client.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="user_client"/>
|
||||||
|
<CursorPos X="9" Y="9"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="44"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<ComponentName Value="fMain"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ResourceFilename Value="umain.lrs"/>
|
||||||
|
<UnitName Value="umain"/>
|
||||||
|
<CursorPos X="44" Y="130"/>
|
||||||
|
<TopLine Value="116"/>
|
||||||
|
<EditorIndex Value="0"/>
|
||||||
|
<UsageCount Value="44"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="..\user_service_intf.pas"/>
|
||||||
|
<UnitName Value="user_service_intf"/>
|
||||||
|
<CursorPos X="64" Y="30"/>
|
||||||
|
<TopLine Value="25"/>
|
||||||
|
<EditorIndex Value="6"/>
|
||||||
|
<UsageCount Value="23"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="..\user_service_intf_proxy.pas"/>
|
||||||
|
<UnitName Value="user_service_intf_proxy"/>
|
||||||
|
<CursorPos X="24" Y="21"/>
|
||||||
|
<TopLine Value="13"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="23"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit3>
|
||||||
|
<Unit4>
|
||||||
|
<Filename Value="..\..\synapse_tcp_protocol.pas"/>
|
||||||
|
<UnitName Value="synapse_tcp_protocol"/>
|
||||||
|
<CursorPos X="58" Y="28"/>
|
||||||
|
<TopLine Value="23"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
|
<UsageCount Value="23"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit4>
|
||||||
|
<Unit5>
|
||||||
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
|
<UnitName Value="base_service_intf"/>
|
||||||
|
<CursorPos X="1" Y="3316"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<UsageCount Value="23"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\components\rtticontrols\rttigrids.pas"/>
|
||||||
|
<UnitName Value="RTTIGrids"/>
|
||||||
|
<CursorPos X="13" Y="680"/>
|
||||||
|
<TopLine Value="663"/>
|
||||||
|
<UsageCount Value="12"/>
|
||||||
|
</Unit6>
|
||||||
|
<Unit7>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\lcl\grids.pas"/>
|
||||||
|
<UnitName Value="Grids"/>
|
||||||
|
<CursorPos X="14" Y="829"/>
|
||||||
|
<TopLine Value="494"/>
|
||||||
|
<UsageCount Value="12"/>
|
||||||
|
</Unit7>
|
||||||
|
<Unit8>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win32\classes.pp"/>
|
||||||
|
<UnitName Value="Classes"/>
|
||||||
|
<CursorPos X="7" Y="29"/>
|
||||||
|
<TopLine Value="19"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit8>
|
||||||
|
<Unit9>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\types.pp"/>
|
||||||
|
<UnitName Value="types"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="268"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit9>
|
||||||
|
<Unit10>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\typinfo.pp"/>
|
||||||
|
<UnitName Value="typinfo"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1276"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit10>
|
||||||
|
<Unit11>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<ComponentName Value="fUserEdit"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ResourceFilename Value="user_edit_imp.lrs"/>
|
||||||
|
<UnitName Value="user_edit_imp"/>
|
||||||
|
<CursorPos X="19" Y="27"/>
|
||||||
|
<TopLine Value="27"/>
|
||||||
|
<EditorIndex Value="7"/>
|
||||||
|
<UsageCount Value="37"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit11>
|
||||||
|
<Unit12>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\components\rtticontrols\rttictrls.pas"/>
|
||||||
|
<UnitName Value="RTTICtrls"/>
|
||||||
|
<CursorPos X="3" Y="2239"/>
|
||||||
|
<TopLine Value="2237"/>
|
||||||
|
<UsageCount Value="12"/>
|
||||||
|
</Unit12>
|
||||||
|
<Unit13>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\lcl\interfaces\win32\interfaces.pp"/>
|
||||||
|
<UnitName Value="Interfaces"/>
|
||||||
|
<CursorPos X="25" Y="40"/>
|
||||||
|
<TopLine Value="22"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit13>
|
||||||
|
<Unit14>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\lcl\interfaces\win32\win32int.pp"/>
|
||||||
|
<UnitName Value="Win32Int"/>
|
||||||
|
<CursorPos X="34" Y="50"/>
|
||||||
|
<TopLine Value="246"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit14>
|
||||||
|
<Unit15>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\resh.inc"/>
|
||||||
|
<CursorPos X="3" Y="10"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit15>
|
||||||
|
<Unit16>
|
||||||
|
<Filename Value="user_edit_imp.lrs"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit16>
|
||||||
|
<Unit17>
|
||||||
|
<Filename Value="..\..\binary_formatter.pas"/>
|
||||||
|
<UnitName Value="binary_formatter"/>
|
||||||
|
<CursorPos X="58" Y="132"/>
|
||||||
|
<TopLine Value="113"/>
|
||||||
|
<EditorIndex Value="3"/>
|
||||||
|
<UsageCount Value="15"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit17>
|
||||||
|
<Unit18>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\lcl\controls.pp"/>
|
||||||
|
<UnitName Value="Controls"/>
|
||||||
|
<CursorPos X="15" Y="1653"/>
|
||||||
|
<TopLine Value="1635"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit18>
|
||||||
|
<Unit19>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\ideintf\propedits.pp"/>
|
||||||
|
<UnitName Value="PropEdits"/>
|
||||||
|
<CursorPos X="49" Y="4174"/>
|
||||||
|
<TopLine Value="4157"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit19>
|
||||||
|
<Unit20>
|
||||||
|
<Filename Value="..\..\base_binary_formatter.pas"/>
|
||||||
|
<UnitName Value="base_binary_formatter"/>
|
||||||
|
<CursorPos X="1" Y="1511"/>
|
||||||
|
<TopLine Value="1497"/>
|
||||||
|
<EditorIndex Value="1"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit20>
|
||||||
|
</Units>
|
||||||
|
<JumpHistory Count="23" HistoryIndex="22">
|
||||||
|
<Position1>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="126" Column="27" TopLine="114"/>
|
||||||
|
</Position1>
|
||||||
|
<Position2>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="120" Column="17" TopLine="106"/>
|
||||||
|
</Position2>
|
||||||
|
<Position3>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="79" Column="36" TopLine="77"/>
|
||||||
|
</Position3>
|
||||||
|
<Position4>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="27" Column="5" TopLine="26"/>
|
||||||
|
</Position4>
|
||||||
|
<Position5>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="151" Column="22" TopLine="75"/>
|
||||||
|
</Position5>
|
||||||
|
<Position6>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="29" Column="49" TopLine="28"/>
|
||||||
|
</Position6>
|
||||||
|
<Position7>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="31" Column="48" TopLine="14"/>
|
||||||
|
</Position7>
|
||||||
|
<Position8>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="159" Column="3" TopLine="141"/>
|
||||||
|
</Position8>
|
||||||
|
<Position9>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="120" Column="1" TopLine="117"/>
|
||||||
|
</Position9>
|
||||||
|
<Position10>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="85" Column="38" TopLine="142"/>
|
||||||
|
</Position10>
|
||||||
|
<Position11>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="158" Column="51" TopLine="142"/>
|
||||||
|
</Position11>
|
||||||
|
<Position12>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="25" Column="15" TopLine="1"/>
|
||||||
|
</Position12>
|
||||||
|
<Position13>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="25" Column="18" TopLine="10"/>
|
||||||
|
</Position13>
|
||||||
|
<Position14>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="25" Column="18" TopLine="10"/>
|
||||||
|
</Position14>
|
||||||
|
<Position15>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="25" Column="19" TopLine="10"/>
|
||||||
|
</Position15>
|
||||||
|
<Position16>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="25" Column="19" TopLine="10"/>
|
||||||
|
</Position16>
|
||||||
|
<Position17>
|
||||||
|
<Filename Value="..\user_service_intf_proxy.pas"/>
|
||||||
|
<Caret Line="21" Column="24" TopLine="13"/>
|
||||||
|
</Position17>
|
||||||
|
<Position18>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="158" Column="51" TopLine="1"/>
|
||||||
|
</Position18>
|
||||||
|
<Position19>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="69" Column="44" TopLine="55"/>
|
||||||
|
</Position19>
|
||||||
|
<Position20>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="130" Column="44" TopLine="116"/>
|
||||||
|
</Position20>
|
||||||
|
<Position21>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="25" Column="19" TopLine="13"/>
|
||||||
|
</Position21>
|
||||||
|
<Position22>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="26" Column="23" TopLine="13"/>
|
||||||
|
</Position22>
|
||||||
|
<Position23>
|
||||||
|
<Filename Value="user_edit_imp.pas"/>
|
||||||
|
<Caret Line="27" Column="22" TopLine="13"/>
|
||||||
|
</Position23>
|
||||||
|
</JumpHistory>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="5"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="user_client.exe"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<OtherUnitFiles Value="C:\Programmes\lazarus\wst\samples\;$(LazarusDir)\others_package\synapse\;C:\Programmes\lazarus\wst\"/>
|
||||||
|
<UnitOutputDirectory Value="obj"/>
|
||||||
|
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<CodeGeneration>
|
||||||
|
<Generate Value="Faster"/>
|
||||||
|
</CodeGeneration>
|
||||||
|
<Linking>
|
||||||
|
<Options>
|
||||||
|
<Win32>
|
||||||
|
<GraphicApplication Value="True"/>
|
||||||
|
</Win32>
|
||||||
|
</Options>
|
||||||
|
</Linking>
|
||||||
|
<Other>
|
||||||
|
<CompilerPath Value="$(CompPath)"/>
|
||||||
|
</Other>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<BreakPoints Count="4">
|
||||||
|
<Item1>
|
||||||
|
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
|
||||||
|
<Line Value="230"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
|
||||||
|
<Line Value="193"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
|
||||||
|
<Line Value="198"/>
|
||||||
|
</Item3>
|
||||||
|
<Item4>
|
||||||
|
<Source Value="..\..\ws_helper\wsdl2pas_imp.pas"/>
|
||||||
|
<Line Value="606"/>
|
||||||
|
</Item4>
|
||||||
|
</BreakPoints>
|
||||||
|
<Watches Count="2">
|
||||||
|
<Item1>
|
||||||
|
<Expression Value="locStrFilter"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Expression Value="i"/>
|
||||||
|
</Item2>
|
||||||
|
</Watches>
|
||||||
|
<Exceptions Count="2">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item2>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
19
wst/trunk/samples/user_client/user_client.lpr
Normal file
19
wst/trunk/samples/user_client/user_client.lpr
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
program user_client;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
||||||
|
cthreads,
|
||||||
|
{$ENDIF}{$ENDIF}
|
||||||
|
Interfaces, // this includes the LCL widgetset
|
||||||
|
Forms
|
||||||
|
, umain, RunTimeTypeInfoControls, user_edit_imp;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TfMain, fMain);
|
||||||
|
Application.CreateForm(TfUserEdit, fUserEdit);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
||||||
|
|
124
wst/trunk/samples/user_client/user_edit_imp.lfm
Normal file
124
wst/trunk/samples/user_client/user_edit_imp.lfm
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
object fUserEdit: TfUserEdit
|
||||||
|
Left = 395
|
||||||
|
Height = 241
|
||||||
|
Top = 199
|
||||||
|
Width = 400
|
||||||
|
HorzScrollBar.Page = 399
|
||||||
|
VertScrollBar.Page = 240
|
||||||
|
ActiveControl = btnOk
|
||||||
|
BorderIcons = [biSystemMenu]
|
||||||
|
BorderStyle = bsDialog
|
||||||
|
Caption = 'User Edit'
|
||||||
|
ClientHeight = 241
|
||||||
|
ClientWidth = 400
|
||||||
|
Position = poMainFormCenter
|
||||||
|
object Panel1: TPanel
|
||||||
|
Height = 50
|
||||||
|
Top = 191
|
||||||
|
Width = 400
|
||||||
|
Align = alBottom
|
||||||
|
ClientHeight = 50
|
||||||
|
ClientWidth = 400
|
||||||
|
TabOrder = 0
|
||||||
|
object btnOk: TButton
|
||||||
|
Left = 224
|
||||||
|
Height = 35
|
||||||
|
Top = 6
|
||||||
|
Width = 75
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
Caption = 'OK'
|
||||||
|
Default = True
|
||||||
|
ModalResult = 1
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object Button2: TButton
|
||||||
|
Left = 312
|
||||||
|
Height = 35
|
||||||
|
Top = 6
|
||||||
|
Width = 75
|
||||||
|
BorderSpacing.InnerBorder = 4
|
||||||
|
Cancel = True
|
||||||
|
Caption = 'Cancel'
|
||||||
|
ModalResult = 2
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel2: TPanel
|
||||||
|
Height = 191
|
||||||
|
Width = 400
|
||||||
|
Align = alClient
|
||||||
|
ClientHeight = 191
|
||||||
|
ClientWidth = 400
|
||||||
|
TabOrder = 1
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 16
|
||||||
|
Height = 18
|
||||||
|
Top = 18
|
||||||
|
Width = 36
|
||||||
|
Caption = 'Name'
|
||||||
|
Color = clNone
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
Left = 16
|
||||||
|
Height = 18
|
||||||
|
Top = 53
|
||||||
|
Width = 34
|
||||||
|
Caption = 'e-Mail'
|
||||||
|
Color = clNone
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label3: TLabel
|
||||||
|
Left = 16
|
||||||
|
Height = 18
|
||||||
|
Top = 88
|
||||||
|
Width = 58
|
||||||
|
Caption = 'Category'
|
||||||
|
Color = clNone
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label4: TLabel
|
||||||
|
Left = 17
|
||||||
|
Height = 18
|
||||||
|
Top = 120
|
||||||
|
Width = 72
|
||||||
|
Caption = 'Preferences'
|
||||||
|
Color = clNone
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object edtName: TTIEdit
|
||||||
|
Left = 80
|
||||||
|
Height = 23
|
||||||
|
Top = 16
|
||||||
|
Width = 304
|
||||||
|
Link.TIPropertyName = 'UserName'
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object edteMail: TTIEdit
|
||||||
|
Left = 80
|
||||||
|
Height = 23
|
||||||
|
Top = 53
|
||||||
|
Width = 304
|
||||||
|
Link.TIPropertyName = 'eMail'
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object edtCategory: TTIComboBox
|
||||||
|
Left = 80
|
||||||
|
Height = 24
|
||||||
|
Top = 88
|
||||||
|
Width = 160
|
||||||
|
Link.TIPropertyName = 'Category'
|
||||||
|
MaxLength = 0
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object edtPreferences: TTIEdit
|
||||||
|
Left = 17
|
||||||
|
Height = 23
|
||||||
|
Top = 146
|
||||||
|
Width = 368
|
||||||
|
Link.TIPropertyName = 'Preferences'
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
34
wst/trunk/samples/user_client/user_edit_imp.lrs
Normal file
34
wst/trunk/samples/user_client/user_edit_imp.lrs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
|
||||||
|
|
||||||
|
LazarusResources.Add('TfUserEdit','FORMDATA',[
|
||||||
|
'TPF0'#10'TfUserEdit'#9'fUserEdit'#4'Left'#3#139#1#6'Height'#3#241#0#3'Top'#3
|
||||||
|
+#199#0#5'Width'#3#144#1#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page'
|
||||||
|
+#3#240#0#13'ActiveControl'#7#5'btnOk'#11'BorderIcons'#11#12'biSystemMenu'#0
|
||||||
|
+#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#9'User Edit'#12'ClientHeight'#3
|
||||||
|
+#241#0#11'ClientWidth'#3#144#1#8'Position'#7#16'poMainFormCenter'#0#6'TPanel'
|
||||||
|
+#6'Panel1'#6'Height'#2'2'#3'Top'#3#191#0#5'Width'#3#144#1#5'Align'#7#8'alBot'
|
||||||
|
+'tom'#12'ClientHeight'#2'2'#11'ClientWidth'#3#144#1#8'TabOrder'#2#0#0#7'TBut'
|
||||||
|
+'ton'#5'btnOk'#4'Left'#3#224#0#6'Height'#2'#'#3'Top'#2#6#5'Width'#2'K'#25'Bo'
|
||||||
|
+'rderSpacing.InnerBorder'#2#4#7'Caption'#6#2'OK'#7'Default'#9#11'ModalResult'
|
||||||
|
+#2#1#8'TabOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3'8'#1#6'Height'#2'#'
|
||||||
|
+#3'Top'#2#6#5'Width'#2'K'#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Ca'
|
||||||
|
+'ption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#1#0#0#0#6'TPanel'#6'Pa'
|
||||||
|
+'nel2'#6'Height'#3#191#0#5'Width'#3#144#1#5'Align'#7#8'alClient'#12'ClientHe'
|
||||||
|
+'ight'#3#191#0#11'ClientWidth'#3#144#1#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'
|
||||||
|
+#4'Left'#2#16#6'Height'#2#18#3'Top'#2#18#5'Width'#2'$'#7'Caption'#6#4'Name'#5
|
||||||
|
+'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#16#6
|
||||||
|
+'Height'#2#18#3'Top'#2'5'#5'Width'#2'"'#7'Caption'#6#6'e-Mail'#5'Color'#7#6
|
||||||
|
+'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#16#6'Height'#2
|
||||||
|
+#18#3'Top'#2'X'#5'Width'#2':'#7'Caption'#6#8'Category'#5'Color'#7#6'clNone'
|
||||||
|
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#17#6'Height'#2#18#3'Top'
|
||||||
|
+#2'x'#5'Width'#2'H'#7'Caption'#6#11'Preferences'#5'Color'#7#6'clNone'#11'Par'
|
||||||
|
+'entColor'#8#0#0#7'TTIEdit'#7'edtName'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2
|
||||||
|
+#16#5'Width'#3'0'#1#19'Link.TIPropertyName'#6#8'UserName'#8'TabOrder'#2#0#0#0
|
||||||
|
+#7'TTIEdit'#8'edteMail'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'5'#5'Width'#3'0'
|
||||||
|
+#1#19'Link.TIPropertyName'#6#5'eMail'#8'TabOrder'#2#1#0#0#11'TTIComboBox'#11
|
||||||
|
+'edtCategory'#4'Left'#2'P'#6'Height'#2#24#3'Top'#2'X'#5'Width'#3#160#0#19'Li'
|
||||||
|
+'nk.TIPropertyName'#6#8'Category'#9'MaxLength'#2#0#5'Style'#7#14'csDropDownL'
|
||||||
|
+'ist'#8'TabOrder'#2#2#0#0#7'TTIEdit'#14'edtPreferences'#4'Left'#2#17#6'Heigh'
|
||||||
|
+'t'#2#23#3'Top'#3#146#0#5'Width'#3'p'#1#19'Link.TIPropertyName'#6#11'Prefere'
|
||||||
|
+'nces'#8'TabOrder'#2#3#0#0#0#0
|
||||||
|
]);
|
73
wst/trunk/samples/user_client/user_edit_imp.pas
Normal file
73
wst/trunk/samples/user_client/user_edit_imp.pas
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
unit user_edit_imp;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||||
|
Buttons, StdCtrls, RTTICtrls, user_service_intf;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TfUserEdit }
|
||||||
|
|
||||||
|
TfUserEdit = class(TForm)
|
||||||
|
btnOk: TButton;
|
||||||
|
Button2: TButton;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
Label3: TLabel;
|
||||||
|
Label4: TLabel;
|
||||||
|
Panel1: TPanel;
|
||||||
|
Panel2: TPanel;
|
||||||
|
edtCategory: TTIComboBox;
|
||||||
|
edtName: TTIEdit;
|
||||||
|
edteMail: TTIEdit;
|
||||||
|
edtPreferences: TTIEdit;
|
||||||
|
private
|
||||||
|
FInfos: TUser;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner : TComponent);override;
|
||||||
|
destructor Destroy();override;
|
||||||
|
property Infos : TUser read FInfos;
|
||||||
|
function UpdateObject( AUser : TUser ) : Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
fUserEdit: TfUserEdit;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{ TfUserEdit }
|
||||||
|
|
||||||
|
constructor TfUserEdit.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
FInfos := TUser.Create();
|
||||||
|
edtName.Link.TIObject := FInfos;
|
||||||
|
edteMail.Link.TIObject := FInfos;
|
||||||
|
edtPreferences.Link.TIObject := FInfos;
|
||||||
|
edtCategory.Link.TIObject := FInfos;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TfUserEdit.Destroy();
|
||||||
|
begin
|
||||||
|
FreeAndNil(FInfos);
|
||||||
|
inherited Destroy();
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TfUserEdit.UpdateObject(AUser: TUser): Boolean;
|
||||||
|
begin
|
||||||
|
Infos.Assign(AUser);
|
||||||
|
Result := ( ShowModal() = mrOK );
|
||||||
|
if Result then begin
|
||||||
|
AUser.Assign(Infos);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
{$I user_edit_imp.lrs}
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
216
wst/trunk/samples/user_service_intf.pas
Normal file
216
wst/trunk/samples/user_service_intf.pas
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
{
|
||||||
|
This unit has been produced by ws_helper.
|
||||||
|
Input unit name : "user_service_intf".
|
||||||
|
This unit name : "user_service_intf".
|
||||||
|
Date : "02/05/2007 20:07".
|
||||||
|
}
|
||||||
|
unit user_service_intf;
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses SysUtils, Classes, TypInfo, base_service_intf, service_intf;
|
||||||
|
|
||||||
|
const
|
||||||
|
sNAME_SPACE = 'urn:UserService';
|
||||||
|
sUNIT_NAME = 'user_service_intf';
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
TUser = class;
|
||||||
|
TUserArray = class;
|
||||||
|
|
||||||
|
TUserCategory = (
|
||||||
|
Normal
|
||||||
|
,Admin
|
||||||
|
);
|
||||||
|
|
||||||
|
TUser = class(TBaseComplexRemotable)
|
||||||
|
private
|
||||||
|
FCategory : TUserCategory;
|
||||||
|
FUserName : string;
|
||||||
|
FeMail : string;
|
||||||
|
FPreferences : string;
|
||||||
|
published
|
||||||
|
property Category : TUserCategory read FCategory write FCategory;
|
||||||
|
property UserName : string read FUserName write FUserName;
|
||||||
|
property eMail : string read FeMail write FeMail;
|
||||||
|
property Preferences : string read FPreferences write FPreferences;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TUserArray = class(TBaseObjectArrayRemotable)
|
||||||
|
private
|
||||||
|
function GetItem(AIndex: Integer): TUser;
|
||||||
|
public
|
||||||
|
class function GetItemClass():TBaseRemotableClass;override;
|
||||||
|
property Item[AIndex:Integer] : TUser Read GetItem;Default;
|
||||||
|
end;
|
||||||
|
|
||||||
|
UserService = interface(IInvokable)
|
||||||
|
['{CA6F6192-C3DE-4D9C-B3DF-E616376A0DC9}']
|
||||||
|
function GetList():TUserArray;
|
||||||
|
procedure Add(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
procedure Update(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
function Find(
|
||||||
|
Const AName : string
|
||||||
|
):TUser;
|
||||||
|
function Delete(
|
||||||
|
Const AName : string
|
||||||
|
):boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register_user_service_intf_ServiceMetadata();
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
uses metadata_repository;
|
||||||
|
|
||||||
|
{ TUserArray }
|
||||||
|
|
||||||
|
function TUserArray.GetItem(AIndex: Integer): TUser;
|
||||||
|
begin
|
||||||
|
Result := Inherited GetItem(AIndex) As TUser;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TUserArray.GetItemClass(): TBaseRemotableClass;
|
||||||
|
begin
|
||||||
|
Result:= TUser;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure Register_user_service_intf_ServiceMetadata();
|
||||||
|
var
|
||||||
|
mm : IModuleMetadataMngr;
|
||||||
|
begin
|
||||||
|
mm := GetModuleMetadataMngr();
|
||||||
|
mm.SetRepositoryNameSpace(sUNIT_NAME, sNAME_SPACE);
|
||||||
|
mm.SetServiceCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'TRANSPORT_Address',
|
||||||
|
'http://127.0.0.1:8000/services/UserService'
|
||||||
|
);
|
||||||
|
mm.SetServiceCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'FORMAT_Style',
|
||||||
|
'rpc'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'GetList',
|
||||||
|
'TRANSPORT_soapAction',
|
||||||
|
'urn:UserService/UserServiceGetList'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'GetList',
|
||||||
|
'FORMAT_Input_EncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'GetList',
|
||||||
|
'FORMAT_OutputEncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Add',
|
||||||
|
'TRANSPORT_soapAction',
|
||||||
|
'urn:UserService/UserServiceAdd'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Add',
|
||||||
|
'FORMAT_Input_EncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Add',
|
||||||
|
'FORMAT_OutputEncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Update',
|
||||||
|
'TRANSPORT_soapAction',
|
||||||
|
'urn:UserService/UserServiceUpdate'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Update',
|
||||||
|
'FORMAT_Input_EncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Update',
|
||||||
|
'FORMAT_OutputEncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Find',
|
||||||
|
'TRANSPORT_soapAction',
|
||||||
|
'urn:UserService/UserServiceFind'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Find',
|
||||||
|
'FORMAT_Input_EncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Find',
|
||||||
|
'FORMAT_OutputEncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Delete',
|
||||||
|
'TRANSPORT_soapAction',
|
||||||
|
'urn:UserService/UserServiceDelete'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Delete',
|
||||||
|
'FORMAT_Input_EncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
mm.SetOperationCustomData(
|
||||||
|
sUNIT_NAME,
|
||||||
|
'UserService',
|
||||||
|
'Delete',
|
||||||
|
'FORMAT_OutputEncodingStyle',
|
||||||
|
'literal'
|
||||||
|
);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
initialization
|
||||||
|
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserCategory),'TUserCategory');
|
||||||
|
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUser),'TUser');
|
||||||
|
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserArray),'TUserArray');
|
||||||
|
GetTypeRegistry().ItemByTypeInfo[TypeInfo(TUserArray)].RegisterExternalPropertyName(sARRAY_ITEM,'item');
|
||||||
|
|
||||||
|
|
||||||
|
End.
|
129
wst/trunk/samples/user_service_intf.wsdl
Normal file
129
wst/trunk/samples/user_service_intf.wsdl
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<definitions name="user_service_intf" targetNamespace="urn:UserService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:UserService" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
||||||
|
<types>
|
||||||
|
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:UserService">
|
||||||
|
<xsd:simpleType name="TUserCategory">
|
||||||
|
<xsd:restriction base="xsd:string">
|
||||||
|
<xsd:enumeration value="Normal"/>
|
||||||
|
<xsd:enumeration value="Admin"/>
|
||||||
|
</xsd:restriction>
|
||||||
|
</xsd:simpleType>
|
||||||
|
<xsd:element name="TUser">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="Category" type="tns:TUserCategory" minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element name="eMail" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element name="Preferences" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="TUserArray">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="item" type="tns:TUser" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
</types>
|
||||||
|
<message name="GetList"/>
|
||||||
|
<message name="GetListResponse">
|
||||||
|
<part name="result" type="tns:TUserArray"/>
|
||||||
|
</message>
|
||||||
|
<message name="Add">
|
||||||
|
<part name="AUser" type="tns:TUser"/>
|
||||||
|
</message>
|
||||||
|
<message name="AddResponse"/>
|
||||||
|
<message name="Update">
|
||||||
|
<part name="AUser" type="tns:TUser"/>
|
||||||
|
</message>
|
||||||
|
<message name="UpdateResponse"/>
|
||||||
|
<message name="Find">
|
||||||
|
<part name="AName" type="xsd:string"/>
|
||||||
|
</message>
|
||||||
|
<message name="FindResponse">
|
||||||
|
<part name="result" type="tns:TUser"/>
|
||||||
|
</message>
|
||||||
|
<message name="Delete">
|
||||||
|
<part name="AName" type="xsd:string"/>
|
||||||
|
</message>
|
||||||
|
<message name="DeleteResponse">
|
||||||
|
<part name="result" type="xsd:boolean"/>
|
||||||
|
</message>
|
||||||
|
<portType name="UserService">
|
||||||
|
<operation name="GetList">
|
||||||
|
<input message="tns:GetList"/>
|
||||||
|
<output message="tns:GetListResponse"/>
|
||||||
|
</operation>
|
||||||
|
<operation name="Add">
|
||||||
|
<input message="tns:Add"/>
|
||||||
|
<output message="tns:AddResponse"/>
|
||||||
|
</operation>
|
||||||
|
<operation name="Update">
|
||||||
|
<input message="tns:Update"/>
|
||||||
|
<output message="tns:UpdateResponse"/>
|
||||||
|
</operation>
|
||||||
|
<operation name="Find">
|
||||||
|
<input message="tns:Find"/>
|
||||||
|
<output message="tns:FindResponse"/>
|
||||||
|
</operation>
|
||||||
|
<operation name="Delete">
|
||||||
|
<input message="tns:Delete"/>
|
||||||
|
<output message="tns:DeleteResponse"/>
|
||||||
|
</operation>
|
||||||
|
</portType>
|
||||||
|
<binding name="UserServiceBinding" type="tns:UserService">
|
||||||
|
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<operation name="GetList">
|
||||||
|
<soap:operation soapAction="urn:UserService/UserServiceGetList"/>
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
<operation name="Add">
|
||||||
|
<soap:operation soapAction="urn:UserService/UserServiceAdd"/>
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
<operation name="Update">
|
||||||
|
<soap:operation soapAction="urn:UserService/UserServiceUpdate"/>
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
<operation name="Find">
|
||||||
|
<soap:operation soapAction="urn:UserService/UserServiceFind"/>
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
<operation name="Delete">
|
||||||
|
<soap:operation soapAction="urn:UserService/UserServiceDelete"/>
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal" namespace="urn:UserService"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</binding>
|
||||||
|
<service name="UserService">
|
||||||
|
<port name="UserServicePort" binding="tns:UserServiceBinding">
|
||||||
|
<soap:address location="http://127.0.0.1:8000/services/UserService"/>
|
||||||
|
</port>
|
||||||
|
</service>
|
||||||
|
</definitions>
|
75
wst/trunk/samples/user_service_intf_.pas
Normal file
75
wst/trunk/samples/user_service_intf_.pas
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
unit user_service_intf;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, base_service_intf;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
TUserCategory = ( Normal, Admin );
|
||||||
|
|
||||||
|
{ TUser }
|
||||||
|
|
||||||
|
TUser = class(TBaseComplexRemotable)
|
||||||
|
private
|
||||||
|
FCategory: TUserCategory;
|
||||||
|
FeMail: string;
|
||||||
|
FName: string;
|
||||||
|
FPreferences: string;
|
||||||
|
published
|
||||||
|
property Category : TUserCategory read FCategory write FCategory;
|
||||||
|
property Name : string read FName write FName;
|
||||||
|
property eMail : string read FeMail write FeMail;
|
||||||
|
property Preferences : string read FPreferences write FPreferences;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TUserArray }
|
||||||
|
|
||||||
|
TUserArray = class(TBaseObjectArrayRemotable)
|
||||||
|
private
|
||||||
|
function GetUser(AIndex: Integer): TUser;
|
||||||
|
public
|
||||||
|
class function GetItemClass():TBaseRemotableClass;override;
|
||||||
|
Property Item[AIndex:Integer] : TUser Read GetUser;Default;
|
||||||
|
End;
|
||||||
|
|
||||||
|
UserService = interface(IInvokable)
|
||||||
|
['{101F2CA7-19FC-4A73-AA98-F13FCDA75EE1}']
|
||||||
|
function GetList():TUserArray;
|
||||||
|
procedure Add(AUser : TUser);
|
||||||
|
function Find(const AName : string):TUser;
|
||||||
|
function Delete(const AName : string):Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register_user_service_intf_NameSpace();
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses metadata_repository;
|
||||||
|
|
||||||
|
procedure Register_user_service_intf_NameSpace();
|
||||||
|
begin
|
||||||
|
GetModuleMetadataMngr().SetRepositoryNameSpace('user_service_intf','urn:UserService');
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TUserArray }
|
||||||
|
|
||||||
|
function TUserArray.GetUser(AIndex: Integer): TUser;
|
||||||
|
begin
|
||||||
|
Result := GetItem(AIndex) as TUser;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TUserArray.GetItemClass(): TBaseRemotableClass;
|
||||||
|
begin
|
||||||
|
Result := TUser;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
GetTypeRegistry().Register('urn:UserService',TypeInfo(TUserCategory),'TUserCategory');
|
||||||
|
GetTypeRegistry().Register('urn:UserService',TypeInfo(TUser),'TUser');
|
||||||
|
GetTypeRegistry().Register('urn:UserService',TypeInfo(TUserArray),'TUserArray');
|
||||||
|
|
||||||
|
end.
|
227
wst/trunk/samples/user_service_intf_binder.pas
Normal file
227
wst/trunk/samples/user_service_intf_binder.pas
Normal file
@ -0,0 +1,227 @@
|
|||||||
|
{
|
||||||
|
This unit has been produced by ws_helper.
|
||||||
|
Input unit name : "user_service_intf".
|
||||||
|
This unit name : "user_service_intf_binder".
|
||||||
|
Date : "02/05/2007 20:07".
|
||||||
|
}
|
||||||
|
unit user_service_intf_binder;
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses SysUtils, Classes, base_service_intf, server_service_intf, user_service_intf;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
|
||||||
|
TUserService_ServiceBinder=class(TBaseServiceBinder)
|
||||||
|
Protected
|
||||||
|
procedure GetListHandler(AFormatter:IFormatterResponse);
|
||||||
|
procedure AddHandler(AFormatter:IFormatterResponse);
|
||||||
|
procedure UpdateHandler(AFormatter:IFormatterResponse);
|
||||||
|
procedure FindHandler(AFormatter:IFormatterResponse);
|
||||||
|
procedure DeleteHandler(AFormatter:IFormatterResponse);
|
||||||
|
Public
|
||||||
|
constructor Create();
|
||||||
|
End;
|
||||||
|
|
||||||
|
TUserService_ServiceBinderFactory = class(TInterfacedObject,IItemFactory)
|
||||||
|
protected
|
||||||
|
function CreateInstance():IInterface;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure Server_service_RegisterUserServiceService();
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
uses TypInfo, wst_resources_imp,metadata_repository;
|
||||||
|
|
||||||
|
{ TUserService_ServiceBinder implementation }
|
||||||
|
procedure TUserService_ServiceBinder.GetListHandler(AFormatter:IFormatterResponse);
|
||||||
|
Var
|
||||||
|
cllCntrl : ICallControl;
|
||||||
|
tmpObj : UserService;
|
||||||
|
callCtx : ICallContext;
|
||||||
|
strPrmName : string;
|
||||||
|
procName,trgName : string;
|
||||||
|
returnVal : TUserArray;
|
||||||
|
Begin
|
||||||
|
callCtx := GetCallContext();
|
||||||
|
If ( PTypeInfo(TypeInfo(TUserArray))^.Kind in [tkClass,tkInterface] ) Then
|
||||||
|
Pointer(returnVal) := Nil;
|
||||||
|
|
||||||
|
|
||||||
|
tmpObj := Self.GetFactory().CreateInstance() as UserService;
|
||||||
|
if Supports(tmpObj,ICallControl,cllCntrl) then
|
||||||
|
cllCntrl.SetCallContext(GetCallContext());
|
||||||
|
|
||||||
|
returnVal := tmpObj.GetList();
|
||||||
|
If ( PTypeInfo(TypeInfo(TUserArray))^.Kind = tkClass ) And Assigned(Pointer(returnVal)) Then
|
||||||
|
callCtx.AddObjectToFree(TObject(returnVal));
|
||||||
|
|
||||||
|
procName := AFormatter.GetCallProcedureName();
|
||||||
|
trgName := AFormatter.GetCallTarget();
|
||||||
|
AFormatter.Clear();
|
||||||
|
AFormatter.BeginCallResponse(procName,trgName);
|
||||||
|
AFormatter.Put('result',TypeInfo(TUserArray),returnVal);
|
||||||
|
AFormatter.EndCallResponse();
|
||||||
|
|
||||||
|
callCtx := Nil;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_ServiceBinder.AddHandler(AFormatter:IFormatterResponse);
|
||||||
|
Var
|
||||||
|
cllCntrl : ICallControl;
|
||||||
|
tmpObj : UserService;
|
||||||
|
callCtx : ICallContext;
|
||||||
|
strPrmName : string;
|
||||||
|
procName,trgName : string;
|
||||||
|
AUser : TUser;
|
||||||
|
Begin
|
||||||
|
callCtx := GetCallContext();
|
||||||
|
TObject(AUser) := Nil;
|
||||||
|
|
||||||
|
strPrmName := 'AUser'; AFormatter.Get(TypeInfo(TUser),strPrmName,AUser);
|
||||||
|
If Assigned(Pointer(AUser)) Then
|
||||||
|
callCtx.AddObjectToFree(TObject(AUser));
|
||||||
|
|
||||||
|
tmpObj := Self.GetFactory().CreateInstance() as UserService;
|
||||||
|
if Supports(tmpObj,ICallControl,cllCntrl) then
|
||||||
|
cllCntrl.SetCallContext(GetCallContext());
|
||||||
|
|
||||||
|
tmpObj.Add(AUser);
|
||||||
|
|
||||||
|
procName := AFormatter.GetCallProcedureName();
|
||||||
|
trgName := AFormatter.GetCallTarget();
|
||||||
|
AFormatter.Clear();
|
||||||
|
AFormatter.BeginCallResponse(procName,trgName);
|
||||||
|
AFormatter.EndCallResponse();
|
||||||
|
|
||||||
|
callCtx := Nil;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_ServiceBinder.UpdateHandler(AFormatter:IFormatterResponse);
|
||||||
|
Var
|
||||||
|
cllCntrl : ICallControl;
|
||||||
|
tmpObj : UserService;
|
||||||
|
callCtx : ICallContext;
|
||||||
|
strPrmName : string;
|
||||||
|
procName,trgName : string;
|
||||||
|
AUser : TUser;
|
||||||
|
Begin
|
||||||
|
callCtx := GetCallContext();
|
||||||
|
TObject(AUser) := Nil;
|
||||||
|
|
||||||
|
strPrmName := 'AUser'; AFormatter.Get(TypeInfo(TUser),strPrmName,AUser);
|
||||||
|
If Assigned(Pointer(AUser)) Then
|
||||||
|
callCtx.AddObjectToFree(TObject(AUser));
|
||||||
|
|
||||||
|
tmpObj := Self.GetFactory().CreateInstance() as UserService;
|
||||||
|
if Supports(tmpObj,ICallControl,cllCntrl) then
|
||||||
|
cllCntrl.SetCallContext(GetCallContext());
|
||||||
|
|
||||||
|
tmpObj.Update(AUser);
|
||||||
|
|
||||||
|
procName := AFormatter.GetCallProcedureName();
|
||||||
|
trgName := AFormatter.GetCallTarget();
|
||||||
|
AFormatter.Clear();
|
||||||
|
AFormatter.BeginCallResponse(procName,trgName);
|
||||||
|
AFormatter.EndCallResponse();
|
||||||
|
|
||||||
|
callCtx := Nil;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_ServiceBinder.FindHandler(AFormatter:IFormatterResponse);
|
||||||
|
Var
|
||||||
|
cllCntrl : ICallControl;
|
||||||
|
tmpObj : UserService;
|
||||||
|
callCtx : ICallContext;
|
||||||
|
strPrmName : string;
|
||||||
|
procName,trgName : string;
|
||||||
|
AName : string;
|
||||||
|
returnVal : TUser;
|
||||||
|
Begin
|
||||||
|
callCtx := GetCallContext();
|
||||||
|
TObject(returnVal) := Nil;
|
||||||
|
|
||||||
|
strPrmName := 'AName'; AFormatter.Get(TypeInfo(string),strPrmName,AName);
|
||||||
|
|
||||||
|
tmpObj := Self.GetFactory().CreateInstance() as UserService;
|
||||||
|
if Supports(tmpObj,ICallControl,cllCntrl) then
|
||||||
|
cllCntrl.SetCallContext(GetCallContext());
|
||||||
|
|
||||||
|
returnVal := tmpObj.Find(AName);
|
||||||
|
If Assigned(TObject(returnVal)) Then
|
||||||
|
callCtx.AddObjectToFree(TObject(returnVal));
|
||||||
|
|
||||||
|
procName := AFormatter.GetCallProcedureName();
|
||||||
|
trgName := AFormatter.GetCallTarget();
|
||||||
|
AFormatter.Clear();
|
||||||
|
AFormatter.BeginCallResponse(procName,trgName);
|
||||||
|
AFormatter.Put('result',TypeInfo(TUser),returnVal);
|
||||||
|
AFormatter.EndCallResponse();
|
||||||
|
|
||||||
|
callCtx := Nil;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_ServiceBinder.DeleteHandler(AFormatter:IFormatterResponse);
|
||||||
|
Var
|
||||||
|
cllCntrl : ICallControl;
|
||||||
|
tmpObj : UserService;
|
||||||
|
callCtx : ICallContext;
|
||||||
|
strPrmName : string;
|
||||||
|
procName,trgName : string;
|
||||||
|
AName : string;
|
||||||
|
returnVal : boolean;
|
||||||
|
Begin
|
||||||
|
callCtx := GetCallContext();
|
||||||
|
|
||||||
|
strPrmName := 'AName'; AFormatter.Get(TypeInfo(string),strPrmName,AName);
|
||||||
|
|
||||||
|
tmpObj := Self.GetFactory().CreateInstance() as UserService;
|
||||||
|
if Supports(tmpObj,ICallControl,cllCntrl) then
|
||||||
|
cllCntrl.SetCallContext(GetCallContext());
|
||||||
|
|
||||||
|
returnVal := tmpObj.Delete(AName);
|
||||||
|
|
||||||
|
procName := AFormatter.GetCallProcedureName();
|
||||||
|
trgName := AFormatter.GetCallTarget();
|
||||||
|
AFormatter.Clear();
|
||||||
|
AFormatter.BeginCallResponse(procName,trgName);
|
||||||
|
AFormatter.Put('result',TypeInfo(boolean),returnVal);
|
||||||
|
AFormatter.EndCallResponse();
|
||||||
|
|
||||||
|
callCtx := Nil;
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
constructor TUserService_ServiceBinder.Create();
|
||||||
|
Begin
|
||||||
|
Inherited Create(GetServiceImplementationRegistry().FindFactory('UserService'));
|
||||||
|
RegisterVerbHandler('GetList',@GetListHandler);
|
||||||
|
RegisterVerbHandler('Add',@AddHandler);
|
||||||
|
RegisterVerbHandler('Update',@UpdateHandler);
|
||||||
|
RegisterVerbHandler('Find',@FindHandler);
|
||||||
|
RegisterVerbHandler('Delete',@DeleteHandler);
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
{ TUserService_ServiceBinderFactory }
|
||||||
|
function TUserService_ServiceBinderFactory.CreateInstance():IInterface;
|
||||||
|
Begin
|
||||||
|
Result := TUserService_ServiceBinder.Create() as IInterface;
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
procedure Server_service_RegisterUserServiceService();
|
||||||
|
Begin
|
||||||
|
GetServerServiceRegistry().Register('UserService',TUserService_ServiceBinderFactory.Create() as IItemFactory);
|
||||||
|
End;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
|
||||||
|
{$IF DECLARED(Register_user_service_intf_NameSpace)}
|
||||||
|
Register_user_service_intf_NameSpace();
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
{$i user_service_intf.wst}
|
||||||
|
|
||||||
|
End.
|
202
wst/trunk/samples/user_service_intf_imp.pas
Normal file
202
wst/trunk/samples/user_service_intf_imp.pas
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
{
|
||||||
|
This unit has been produced by ws_helper.
|
||||||
|
Input unit name : "user_service_intf".
|
||||||
|
This unit name : "user_service_intf_imp".
|
||||||
|
Date : "30/04/2007 00:07".
|
||||||
|
}
|
||||||
|
Unit user_service_intf_imp;
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
Interface
|
||||||
|
|
||||||
|
Uses SysUtils, Classes,
|
||||||
|
base_service_intf, server_service_intf, server_service_imputils,
|
||||||
|
user_service_intf, cursor_intf;
|
||||||
|
|
||||||
|
Type
|
||||||
|
|
||||||
|
|
||||||
|
{ TUserService_ServiceImp }
|
||||||
|
|
||||||
|
TUserService_ServiceImp=class(TBaseServiceImplementation,UserService)
|
||||||
|
Protected
|
||||||
|
function GetList():TUserArray;
|
||||||
|
procedure Add(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
procedure Update(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
function Find(
|
||||||
|
Const AName : string
|
||||||
|
):TUser;
|
||||||
|
function Delete(
|
||||||
|
Const AName : string
|
||||||
|
):boolean;
|
||||||
|
End;
|
||||||
|
|
||||||
|
const sDATA_FILE_NAME = 'sample.data';
|
||||||
|
|
||||||
|
procedure RegisterUserServiceImplementationFactory();
|
||||||
|
procedure SaveDataToFile(const AFileName : string);
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
uses Contnrs, std_cursors, rtti_filters, imp_helper;
|
||||||
|
|
||||||
|
var
|
||||||
|
FUserList : TObjectList = nil;
|
||||||
|
FUserCursor : IObjectCursor = nil;
|
||||||
|
|
||||||
|
procedure FillArrayFromCursor(ACursor: IObjectCursor;ARes: TUserArray);
|
||||||
|
var
|
||||||
|
i, c : Integer;
|
||||||
|
begin
|
||||||
|
ACursor.Reset();
|
||||||
|
c := 0;
|
||||||
|
while ACursor.MoveNext() do begin
|
||||||
|
Inc(c);
|
||||||
|
end;
|
||||||
|
ARes.SetLength(c);
|
||||||
|
i := 0;
|
||||||
|
ACursor.Reset();
|
||||||
|
while ACursor.MoveNext() do begin
|
||||||
|
ARes[i].Assign(ACursor.GetCurrent() as TUser);
|
||||||
|
Inc(i);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TUserService_ServiceImp implementation }
|
||||||
|
function TUserService_ServiceImp.GetList():TUserArray;
|
||||||
|
var
|
||||||
|
locCrs : IObjectCursor;
|
||||||
|
srcUsr, locUsr : TUser;
|
||||||
|
Begin
|
||||||
|
Result := TUserArray.Create();
|
||||||
|
try
|
||||||
|
FillArrayFromCursor(FUserCursor.Clone() as IObjectCursor,Result);
|
||||||
|
except
|
||||||
|
FreeAndNil(Result);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
SaveDataToFile(sDATA_FILE_NAME);
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_ServiceImp.Add(Const AUser : TUser);
|
||||||
|
var
|
||||||
|
locObj : TUser;
|
||||||
|
Begin
|
||||||
|
locObj := Find(AUser.UserName);
|
||||||
|
if ( locObj <> nil ) then
|
||||||
|
raise Exception.CreateFmt('Duplicated user : "%s"',[AUser.UserName]);
|
||||||
|
locObj := TUser.Create();
|
||||||
|
locObj.Assign(AUser);
|
||||||
|
FUserList.Add(locObj);
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_ServiceImp.Update(const AUser: TUser);
|
||||||
|
var
|
||||||
|
locCrs : IObjectCursor;
|
||||||
|
Begin
|
||||||
|
locCrs := FUserCursor.Clone() as IObjectCursor;
|
||||||
|
locCrs.Reset();
|
||||||
|
locCrs := CreateCursorOn(locCrs,ParseFilter(Format('%s=%s',['UserName',QuotedStr(AUser.UserName)]),TUser));
|
||||||
|
if locCrs.MoveNext() then begin
|
||||||
|
(locCrs.GetCurrent() as TUser).Assign(AUser);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TUserService_ServiceImp.Find(Const AName : string):TUser;
|
||||||
|
var
|
||||||
|
locCrs : IObjectCursor;
|
||||||
|
Begin
|
||||||
|
Result := nil;
|
||||||
|
locCrs := FUserCursor.Clone() as IObjectCursor;
|
||||||
|
locCrs.Reset();
|
||||||
|
locCrs := CreateCursorOn(locCrs,ParseFilter(Format('%s=%s',['UserName',QuotedStr(AName)]),TUser));
|
||||||
|
if locCrs.MoveNext() then begin
|
||||||
|
Result := TUser.Create();
|
||||||
|
Result.Assign(locCrs.GetCurrent() as TUser);
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
function TUserService_ServiceImp.Delete(Const AName : string):boolean;
|
||||||
|
var
|
||||||
|
locCrs : IObjectCursor;
|
||||||
|
Begin
|
||||||
|
Result := False;
|
||||||
|
locCrs := FUserCursor.Clone() as IObjectCursor;
|
||||||
|
locCrs.Reset();
|
||||||
|
locCrs := CreateCursorOn(locCrs,ParseFilter(Format('%s=%s',['UserName',QuotedStr(AName)]),TUser));
|
||||||
|
if locCrs.MoveNext() then begin
|
||||||
|
FUserList.Delete(FUserList.IndexOf(locCrs.GetCurrent() as TUser));
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure RegisterUserServiceImplementationFactory();
|
||||||
|
Begin
|
||||||
|
GetServiceImplementationRegistry().Register('UserService',TImplementationFactory.Create(TUserService_ServiceImp) as IServiceImplementationFactory);
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure FillSampleData();
|
||||||
|
var
|
||||||
|
locUser : TUser;
|
||||||
|
begin
|
||||||
|
locUser := TUser.Create();
|
||||||
|
locUser.UserName := 'Lazarus FreePascal';
|
||||||
|
locUser.eMail := 'Lazarus@FreePascal.wst';
|
||||||
|
FUserList.Add(locUser);
|
||||||
|
locUser := TUser.Create();
|
||||||
|
locUser.UserName := 'Inoussa OUEDRAOGO';
|
||||||
|
locUser.eMail := 'sample@example.wst';
|
||||||
|
FUserList.Add(locUser);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure FillDataFromFile(const AFileName : string);
|
||||||
|
var
|
||||||
|
objArray : TUserArray;
|
||||||
|
i : PtrInt;
|
||||||
|
obj : TUser;
|
||||||
|
begin
|
||||||
|
objArray := TUserArray.Create();
|
||||||
|
try
|
||||||
|
LoadObjectFromFile(objArray,AFileName);
|
||||||
|
FUserList.Clear();
|
||||||
|
for i := 0 to Pred(objArray.Length) do begin
|
||||||
|
obj := TUser.Create();
|
||||||
|
FUserList.Add(obj);
|
||||||
|
obj.Assign(objArray[i]);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(objArray);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SaveDataToFile(const AFileName : string);
|
||||||
|
var
|
||||||
|
objArray : TUserArray;
|
||||||
|
begin
|
||||||
|
objArray := TUserArray.Create();
|
||||||
|
try
|
||||||
|
FUserCursor.Reset();
|
||||||
|
FillArrayFromCursor(FUserCursor,objArray);
|
||||||
|
SaveObjectToFile(objArray,AFileName);
|
||||||
|
finally
|
||||||
|
FreeAndNil(objArray);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
FUserList := TObjectList.Create(True);
|
||||||
|
FUserCursor := TObjectListCursor.Create(FUserList);
|
||||||
|
if FileExists(sDATA_FILE_NAME) then
|
||||||
|
FillDataFromFile(sDATA_FILE_NAME)
|
||||||
|
else
|
||||||
|
FillSampleData();
|
||||||
|
|
||||||
|
finalization
|
||||||
|
if Assigned(FUserCursor) then
|
||||||
|
SaveDataToFile(sDATA_FILE_NAME);
|
||||||
|
FUserCursor := nil;
|
||||||
|
FreeAndNil(FUserList);
|
||||||
|
|
||||||
|
end.
|
174
wst/trunk/samples/user_service_intf_proxy.pas
Normal file
174
wst/trunk/samples/user_service_intf_proxy.pas
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
{
|
||||||
|
This unit has been produced by ws_helper.
|
||||||
|
Input unit name : "user_service_intf".
|
||||||
|
This unit name : "user_service_intf_proxy".
|
||||||
|
Date : "02/05/2007 20:07".
|
||||||
|
}
|
||||||
|
Unit user_service_intf_proxy;
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
Interface
|
||||||
|
|
||||||
|
Uses SysUtils, Classes, TypInfo, base_service_intf, service_intf, user_service_intf;
|
||||||
|
|
||||||
|
Type
|
||||||
|
|
||||||
|
|
||||||
|
TUserService_Proxy=class(TBaseProxy,UserService)
|
||||||
|
Protected
|
||||||
|
class function GetServiceType() : PTypeInfo;override;
|
||||||
|
function GetList():TUserArray;
|
||||||
|
procedure Add(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
procedure Update(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
function Find(
|
||||||
|
Const AName : string
|
||||||
|
):TUser;
|
||||||
|
function Delete(
|
||||||
|
Const AName : string
|
||||||
|
):boolean;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function wst_CreateInstance_UserService(const AFormat : string = 'SOAP:'; const ATransport : string = 'HTTP:'):UserService;
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
uses wst_resources_imp, metadata_repository;
|
||||||
|
|
||||||
|
|
||||||
|
Function wst_CreateInstance_UserService(const AFormat : string; const ATransport : string):UserService;
|
||||||
|
Begin
|
||||||
|
Result := TUserService_Proxy.Create('UserService',AFormat+GetServiceDefaultFormatProperties(TypeInfo(UserService)),ATransport + 'address=' + GetServiceDefaultAddress(TypeInfo(UserService)));
|
||||||
|
End;
|
||||||
|
|
||||||
|
{ TUserService_Proxy implementation }
|
||||||
|
|
||||||
|
class function TUserService_Proxy.GetServiceType() : PTypeInfo;
|
||||||
|
begin
|
||||||
|
result := TypeInfo(UserService);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TUserService_Proxy.GetList():TUserArray;
|
||||||
|
Var
|
||||||
|
locSerializer : IFormatterClient;
|
||||||
|
strPrmName : string;
|
||||||
|
Begin
|
||||||
|
locSerializer := GetSerializer();
|
||||||
|
Try
|
||||||
|
locSerializer.BeginCall('GetList', GetTarget(),(Self as ICallContext));
|
||||||
|
locSerializer.EndCall();
|
||||||
|
|
||||||
|
MakeCall();
|
||||||
|
|
||||||
|
locSerializer.BeginCallRead((Self as ICallContext));
|
||||||
|
TObject(Result) := Nil;
|
||||||
|
strPrmName := 'result';
|
||||||
|
locSerializer.Get(TypeInfo(TUserArray), strPrmName, Result);
|
||||||
|
|
||||||
|
Finally
|
||||||
|
locSerializer.Clear();
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_Proxy.Add(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
Var
|
||||||
|
locSerializer : IFormatterClient;
|
||||||
|
strPrmName : string;
|
||||||
|
Begin
|
||||||
|
locSerializer := GetSerializer();
|
||||||
|
Try
|
||||||
|
locSerializer.BeginCall('Add', GetTarget(),(Self as ICallContext));
|
||||||
|
locSerializer.Put('AUser', TypeInfo(TUser), AUser);
|
||||||
|
locSerializer.EndCall();
|
||||||
|
|
||||||
|
MakeCall();
|
||||||
|
|
||||||
|
locSerializer.BeginCallRead((Self as ICallContext));
|
||||||
|
|
||||||
|
Finally
|
||||||
|
locSerializer.Clear();
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
procedure TUserService_Proxy.Update(
|
||||||
|
Const AUser : TUser
|
||||||
|
);
|
||||||
|
Var
|
||||||
|
locSerializer : IFormatterClient;
|
||||||
|
strPrmName : string;
|
||||||
|
Begin
|
||||||
|
locSerializer := GetSerializer();
|
||||||
|
Try
|
||||||
|
locSerializer.BeginCall('Update', GetTarget(),(Self as ICallContext));
|
||||||
|
locSerializer.Put('AUser', TypeInfo(TUser), AUser);
|
||||||
|
locSerializer.EndCall();
|
||||||
|
|
||||||
|
MakeCall();
|
||||||
|
|
||||||
|
locSerializer.BeginCallRead((Self as ICallContext));
|
||||||
|
|
||||||
|
Finally
|
||||||
|
locSerializer.Clear();
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
function TUserService_Proxy.Find(
|
||||||
|
Const AName : string
|
||||||
|
):TUser;
|
||||||
|
Var
|
||||||
|
locSerializer : IFormatterClient;
|
||||||
|
strPrmName : string;
|
||||||
|
Begin
|
||||||
|
locSerializer := GetSerializer();
|
||||||
|
Try
|
||||||
|
locSerializer.BeginCall('Find', GetTarget(),(Self as ICallContext));
|
||||||
|
locSerializer.Put('AName', TypeInfo(string), AName);
|
||||||
|
locSerializer.EndCall();
|
||||||
|
|
||||||
|
MakeCall();
|
||||||
|
|
||||||
|
locSerializer.BeginCallRead((Self as ICallContext));
|
||||||
|
TObject(Result) := Nil;
|
||||||
|
strPrmName := 'result';
|
||||||
|
locSerializer.Get(TypeInfo(TUser), strPrmName, Result);
|
||||||
|
|
||||||
|
Finally
|
||||||
|
locSerializer.Clear();
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
function TUserService_Proxy.Delete(
|
||||||
|
Const AName : string
|
||||||
|
):boolean;
|
||||||
|
Var
|
||||||
|
locSerializer : IFormatterClient;
|
||||||
|
strPrmName : string;
|
||||||
|
Begin
|
||||||
|
locSerializer := GetSerializer();
|
||||||
|
Try
|
||||||
|
locSerializer.BeginCall('Delete', GetTarget(),(Self as ICallContext));
|
||||||
|
locSerializer.Put('AName', TypeInfo(string), AName);
|
||||||
|
locSerializer.EndCall();
|
||||||
|
|
||||||
|
MakeCall();
|
||||||
|
|
||||||
|
locSerializer.BeginCallRead((Self as ICallContext));
|
||||||
|
strPrmName := 'result';
|
||||||
|
locSerializer.Get(TypeInfo(boolean), strPrmName, Result);
|
||||||
|
|
||||||
|
Finally
|
||||||
|
locSerializer.Clear();
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
initialization
|
||||||
|
{$i user_service_intf.wst}
|
||||||
|
|
||||||
|
{$IF DECLARED(Register_user_service_intf_ServiceMetadata)}
|
||||||
|
Register_user_service_intf_ServiceMetadata();
|
||||||
|
{$ENDIF}
|
||||||
|
End.
|
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
unit server_binary_formatter;
|
unit server_binary_formatter;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
unit server_service_intf;
|
unit server_service_intf;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
unit server_service_soap;
|
unit server_service_soap;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
{ Base service interface }
|
{ Base service interface }
|
||||||
|
|
||||||
unit service_intf;
|
unit service_intf;
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -109,13 +109,13 @@ Type
|
|||||||
constructor Create(
|
constructor Create(
|
||||||
Const ATarget : String; // the target service
|
Const ATarget : String; // the target service
|
||||||
Const AProtocol : IServiceProtocol
|
Const AProtocol : IServiceProtocol
|
||||||
);virtual;
|
);overload;virtual;
|
||||||
(* A User friendly constructor *)
|
(* A User friendly constructor *)
|
||||||
constructor Create(
|
constructor Create(
|
||||||
Const ATarget : String;
|
Const ATarget : String;
|
||||||
Const AProtocolData : string;
|
Const AProtocolData : string;
|
||||||
Const ATransportData : string
|
Const ATransportData : string
|
||||||
);virtual;
|
);overload;virtual;
|
||||||
destructor Destroy();override;
|
destructor Destroy();override;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ Type
|
|||||||
):Boolean;
|
):Boolean;
|
||||||
procedure Register(
|
procedure Register(
|
||||||
const ATransportName : string;
|
const ATransportName : string;
|
||||||
const AFactory : IItemFactory
|
AFactory : IItemFactory
|
||||||
);
|
);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
@ -168,8 +168,8 @@ begin
|
|||||||
sd := mm.GetServiceMetadata(GetTypeData(GetServiceType())^.IntfUnit,GetServiceType()^.Name);
|
sd := mm.GetServiceMetadata(GetTypeData(GetServiceType())^.IntfUnit,GetServiceType()^.Name);
|
||||||
try
|
try
|
||||||
Assert(Assigned(sd));
|
Assert(Assigned(sd));
|
||||||
|
opd := sd^.Operations;
|
||||||
for i := 0 to Pred(sd^.OperationsCount) do begin
|
for i := 0 to Pred(sd^.OperationsCount) do begin
|
||||||
opd := @(sd^.Operations[i]);
|
|
||||||
strFormatBuffer := '';
|
strFormatBuffer := '';
|
||||||
strTransportBuffer := '';
|
strTransportBuffer := '';
|
||||||
pd := opd^.Properties;
|
pd := opd^.Properties;
|
||||||
@ -194,6 +194,7 @@ begin
|
|||||||
Delete(strTransportBuffer,Length(strTransportBuffer),1);
|
Delete(strTransportBuffer,Length(strTransportBuffer),1);
|
||||||
FOperationsProperties.Values[opd^.Name + '_' + sTRANSPORT] := strTransportBuffer;
|
FOperationsProperties.Values[opd^.Name + '_' + sTRANSPORT] := strTransportBuffer;
|
||||||
end;
|
end;
|
||||||
|
Inc(opd);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
mm.ClearServiceMetadata(sd);
|
mm.ClearServiceMetadata(sd);
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
unit synapse_http_protocol;
|
unit synapse_http_protocol;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
//{$DEFINE WST_DBG}
|
//{$DEFINE WST_DBG}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
148
wst/trunk/synapse_tcp_protocol.pas
Normal file
148
wst/trunk/synapse_tcp_protocol.pas
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
{
|
||||||
|
This file is part of the Web Service Toolkit
|
||||||
|
Copyright (c) 2006 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.
|
||||||
|
}
|
||||||
|
unit synapse_tcp_protocol;
|
||||||
|
|
||||||
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils,
|
||||||
|
service_intf, imp_utils, base_service_intf,
|
||||||
|
blcksock;
|
||||||
|
|
||||||
|
Const
|
||||||
|
sTRANSPORT_NAME = 'TCP';
|
||||||
|
|
||||||
|
Type
|
||||||
|
|
||||||
|
ETCPException = class(EServiceException)
|
||||||
|
End;
|
||||||
|
|
||||||
|
{$M+}
|
||||||
|
{ TTCPTransport }
|
||||||
|
TTCPTransport = class(TSimpleFactoryItem,ITransport)
|
||||||
|
Private
|
||||||
|
FPropMngr : IPropertyManager;
|
||||||
|
FConnection : TTCPBlockSocket;
|
||||||
|
FContentType : string;
|
||||||
|
FTarget: string;
|
||||||
|
FAddress : string;
|
||||||
|
FPort : string;
|
||||||
|
FDefaultTimeOut: Integer;
|
||||||
|
public
|
||||||
|
constructor Create();override;
|
||||||
|
destructor Destroy();override;
|
||||||
|
function GetPropertyManager():IPropertyManager;
|
||||||
|
procedure SendAndReceive(ARequest,AResponse:TStream);
|
||||||
|
Published
|
||||||
|
property Target : string Read FTarget Write FTarget;
|
||||||
|
property ContentType : string Read FContentType Write FContentType;
|
||||||
|
property Address : string Read FAddress Write FAddress;
|
||||||
|
property Port : string Read FPort Write FPort;
|
||||||
|
property DefaultTimeOut : Integer read FDefaultTimeOut write FDefaultTimeOut;
|
||||||
|
End;
|
||||||
|
{$M+}
|
||||||
|
|
||||||
|
procedure SYNAPSE_RegisterTCP_Transport();
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses binary_streamer, Math;
|
||||||
|
|
||||||
|
{ TTCPTransport }
|
||||||
|
|
||||||
|
constructor TTCPTransport.Create();
|
||||||
|
begin
|
||||||
|
FPropMngr := TPublishedPropertyManager.Create(Self);
|
||||||
|
FConnection := TTCPBlockSocket.Create();
|
||||||
|
FConnection.RaiseExcept := True;
|
||||||
|
FDefaultTimeOut := 90000;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TTCPTransport.Destroy();
|
||||||
|
begin
|
||||||
|
FreeAndNil(FConnection);
|
||||||
|
FPropMngr := Nil;
|
||||||
|
inherited Destroy();
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TTCPTransport.GetPropertyManager(): IPropertyManager;
|
||||||
|
begin
|
||||||
|
Result := FPropMngr;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTCPTransport.SendAndReceive(ARequest, AResponse: TStream);
|
||||||
|
Var
|
||||||
|
wrtr : IDataStore;
|
||||||
|
buffStream : TMemoryStream;
|
||||||
|
strBuff : string;
|
||||||
|
bufferLen : LongInt;
|
||||||
|
i, j, c : PtrInt;
|
||||||
|
{$IFDEF WST_DBG}
|
||||||
|
s : string;
|
||||||
|
{$ENDIF WST_DBG}
|
||||||
|
begin
|
||||||
|
buffStream := TMemoryStream.Create();
|
||||||
|
Try
|
||||||
|
wrtr := CreateBinaryWriter(buffStream);
|
||||||
|
wrtr.WriteInt32S(0);
|
||||||
|
wrtr.WriteStr(Target);
|
||||||
|
wrtr.WriteStr(ContentType);
|
||||||
|
SetLength(strBuff,ARequest.Size);
|
||||||
|
ARequest.Position := 0;
|
||||||
|
ARequest.Read(strBuff[1],Length(strBuff));
|
||||||
|
wrtr.WriteStr(strBuff);
|
||||||
|
buffStream.Position := 0;
|
||||||
|
wrtr.WriteInt32S(buffStream.Size-4);
|
||||||
|
|
||||||
|
if ( FConnection.Socket = NOT(0) ) then
|
||||||
|
FConnection.Connect(Address,Port);
|
||||||
|
FConnection.SendBuffer(buffStream.Memory,buffStream.Size);
|
||||||
|
|
||||||
|
bufferLen := 0;
|
||||||
|
FConnection.RecvBufferEx(@bufferLen,SizeOf(bufferLen),DefaultTimeOut);
|
||||||
|
FConnection.ExceptCheck();
|
||||||
|
bufferLen := Reverse_32(bufferLen);
|
||||||
|
AResponse.Size := bufferLen;
|
||||||
|
if ( bufferLen > 0 ) then begin
|
||||||
|
c := 0;
|
||||||
|
i := 1024;
|
||||||
|
if ( i > bufferLen ) then
|
||||||
|
i := bufferLen;
|
||||||
|
SetLength(strBuff,i);
|
||||||
|
repeat
|
||||||
|
j := FConnection.RecvBufferEx(@(strBuff[1]),i,DefaultTimeOut);
|
||||||
|
FConnection.ExceptCheck();
|
||||||
|
AResponse.Write(strBuff[1],j);
|
||||||
|
Inc(c,j);
|
||||||
|
i := Min(1024,(bufferLen-c));
|
||||||
|
until ( i =0 ) or ( j <= 0 );
|
||||||
|
end;
|
||||||
|
AResponse.Position := 0;
|
||||||
|
{$IFDEF WST_DBG}
|
||||||
|
i := AResponse.Position;
|
||||||
|
SetLength(s,AResponse.Size);
|
||||||
|
AResponse.Read(s[1],AResponse.Size);
|
||||||
|
WriteLn(s);
|
||||||
|
{$ENDIF WST_DBG}
|
||||||
|
Finally
|
||||||
|
buffStream.Free();
|
||||||
|
End;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SYNAPSE_RegisterTCP_Transport();
|
||||||
|
begin
|
||||||
|
GetTransportRegistry().Register(sTRANSPORT_NAME,TSimpleItemFactory.Create(TTCPTransport) as IItemFactory);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
257
wst/trunk/synapse_tcp_server.pas
Normal file
257
wst/trunk/synapse_tcp_server.pas
Normal file
@ -0,0 +1,257 @@
|
|||||||
|
{
|
||||||
|
This file is part of the Web Service Toolkit
|
||||||
|
Copyright (c) 2006 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.
|
||||||
|
}
|
||||||
|
unit synapse_tcp_server;
|
||||||
|
|
||||||
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, blcksock, synsock;
|
||||||
|
|
||||||
|
const
|
||||||
|
sSERVER_PORT = '1234';
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
ILogger = interface
|
||||||
|
['{CA357B9A-604F-4603-96FA-65D445837E80}']
|
||||||
|
procedure Log(const AMsg : string);overload;
|
||||||
|
procedure Log(const AMsg : string;const AArgs : array of const);overload;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TClientHandlerThread }
|
||||||
|
|
||||||
|
TClientHandlerThread = class(TThread)
|
||||||
|
private
|
||||||
|
FDefaultTimeOut: Integer;
|
||||||
|
FSocketObject : TTCPBlockSocket;
|
||||||
|
FSocketHandle : TSocket;
|
||||||
|
FInputStream : TMemoryStream;
|
||||||
|
FOutputStream : TMemoryStream;
|
||||||
|
private
|
||||||
|
procedure ClearBuffers();
|
||||||
|
function ReadInputBuffer():Integer;
|
||||||
|
procedure SendOutputBuffer();
|
||||||
|
public
|
||||||
|
constructor Create (ASocketHandle : TSocket);
|
||||||
|
destructor Destroy();override;
|
||||||
|
procedure Execute(); override;
|
||||||
|
property DefaultTimeOut : Integer read FDefaultTimeOut write FDefaultTimeOut;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TServerListnerThread }
|
||||||
|
|
||||||
|
TServerListnerThread = class(TThread)
|
||||||
|
private
|
||||||
|
FDefaultTimeOut: Integer;
|
||||||
|
FSocketObject : TTCPBlockSocket;
|
||||||
|
public
|
||||||
|
constructor Create();
|
||||||
|
destructor Destroy(); override;
|
||||||
|
procedure Execute(); override;
|
||||||
|
property DefaultTimeOut : Integer read FDefaultTimeOut write FDefaultTimeOut;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TConsoleLogger }
|
||||||
|
|
||||||
|
TConsoleLogger = class(TInterfacedObject,IInterface,ILogger)
|
||||||
|
protected
|
||||||
|
procedure Log(const AMsg : string);overload;
|
||||||
|
procedure Log(const AMsg : string;const AArgs : array of const);overload;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Logger():ILogger ;
|
||||||
|
function SetLogger(ALogger : ILogger):ILogger ;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses binary_streamer, server_service_intf, server_service_imputils;
|
||||||
|
|
||||||
|
var FLoggerInst : ILogger = nil;
|
||||||
|
function SetLogger(ALogger : ILogger):ILogger ;
|
||||||
|
begin
|
||||||
|
Result := FLoggerInst;
|
||||||
|
FLoggerInst := ALogger;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Logger():ILogger ;
|
||||||
|
begin
|
||||||
|
Result := FLoggerInst;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TConsoleLogger }
|
||||||
|
|
||||||
|
procedure TConsoleLogger.Log(const AMsg: string);
|
||||||
|
begin
|
||||||
|
WriteLn(AMsg);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TConsoleLogger.Log(const AMsg: string; const AArgs: array of const);
|
||||||
|
begin
|
||||||
|
WriteLn(Format(AMsg,AArgs));
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TClientHandlerThread }
|
||||||
|
|
||||||
|
procedure TClientHandlerThread.ClearBuffers();
|
||||||
|
begin
|
||||||
|
FInputStream.Size := 0;
|
||||||
|
FOutputStream.Size := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TClientHandlerThread.ReadInputBuffer(): Integer;
|
||||||
|
var
|
||||||
|
strBuff : string;
|
||||||
|
bufferLen : LongInt;
|
||||||
|
i, j, c : PtrInt;
|
||||||
|
begin
|
||||||
|
FInputStream.Size := 0;
|
||||||
|
Result := 0;
|
||||||
|
bufferLen := 0;
|
||||||
|
FSocketObject.RecvBufferEx(@bufferLen,SizeOf(bufferLen),DefaultTimeOut);
|
||||||
|
FSocketObject.ExceptCheck();
|
||||||
|
bufferLen := Reverse_32(bufferLen);
|
||||||
|
FInputStream.Size := bufferLen;
|
||||||
|
if ( bufferLen > 0 ) then begin
|
||||||
|
c := 0;
|
||||||
|
i := 1024;
|
||||||
|
if ( i > bufferLen ) then
|
||||||
|
i := bufferLen;
|
||||||
|
SetLength(strBuff,i);
|
||||||
|
repeat
|
||||||
|
j := FSocketObject.RecvBufferEx(@(strBuff[1]),i,DefaultTimeOut);
|
||||||
|
FSocketObject.ExceptCheck();
|
||||||
|
FInputStream.Write(strBuff[1],j);
|
||||||
|
Inc(c,j);
|
||||||
|
if ( ( bufferLen - c ) > 1024 ) then
|
||||||
|
i := 1024
|
||||||
|
else
|
||||||
|
i := bufferLen - c;
|
||||||
|
until ( i = 0 ) or ( j <= 0 );
|
||||||
|
end;
|
||||||
|
FInputStream.Position := 0;
|
||||||
|
Result := FInputStream.Size;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TClientHandlerThread.SendOutputBuffer();
|
||||||
|
begin
|
||||||
|
FSocketObject.SendBuffer(FOutputStream.Memory,FOutputStream.Size);
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TClientHandlerThread.Create(ASocketHandle: TSocket);
|
||||||
|
begin
|
||||||
|
FSocketHandle := ASocketHandle;
|
||||||
|
FreeOnTerminate := True;
|
||||||
|
FDefaultTimeOut := 90000;
|
||||||
|
inherited Create(False);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TClientHandlerThread.Destroy();
|
||||||
|
begin
|
||||||
|
FreeAndNil(FOutputStream);
|
||||||
|
FreeAndNil(FInputStream);
|
||||||
|
inherited Destroy();
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TClientHandlerThread.Execute();
|
||||||
|
var
|
||||||
|
wrtr : IDataStore;
|
||||||
|
rdr : IDataStoreReader;
|
||||||
|
buff, trgt,ctntyp : string;
|
||||||
|
rqst : IRequestBuffer;
|
||||||
|
i : PtrUInt;
|
||||||
|
begin
|
||||||
|
FInputStream := TMemoryStream.Create();
|
||||||
|
FOutputStream := TMemoryStream.Create();
|
||||||
|
FSocketObject := TTCPBlockSocket.Create();
|
||||||
|
try
|
||||||
|
FSocketObject.RaiseExcept := True;
|
||||||
|
try
|
||||||
|
FSocketObject.Socket := FSocketHandle;
|
||||||
|
FSocketObject.GetSins();
|
||||||
|
while not Terminated do begin
|
||||||
|
FOutputStream.Size := 0;
|
||||||
|
if ( ReadInputBuffer() >= SizeOf(LongInt) ) then begin
|
||||||
|
rdr := CreateBinaryReader(FInputStream);
|
||||||
|
trgt := rdr.ReadStr();
|
||||||
|
ctntyp := rdr.ReadStr();
|
||||||
|
buff := rdr.ReadStr();
|
||||||
|
rdr := nil;
|
||||||
|
FInputStream.Size := 0;
|
||||||
|
FInputStream.Write(buff[1],Length(buff));
|
||||||
|
FInputStream.Position := 0;
|
||||||
|
rqst := TRequestBuffer.Create(trgt,ctntyp,FInputStream,FOutputStream);
|
||||||
|
HandleServiceRequest(rqst);
|
||||||
|
i := FOutputStream.Size;
|
||||||
|
SetLength(buff,i);
|
||||||
|
FOutputStream.Position := 0;
|
||||||
|
FOutputStream.Read(buff[1],i);
|
||||||
|
FOutputStream.Size := 0;
|
||||||
|
wrtr := CreateBinaryWriter(FOutputStream);
|
||||||
|
wrtr.WriteStr(buff);
|
||||||
|
SendOutputBuffer();
|
||||||
|
ClearBuffers();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on e : Exception do begin
|
||||||
|
Logger().Log('Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(FSocketObject);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TServerListnerThread }
|
||||||
|
|
||||||
|
constructor TServerListnerThread.Create();
|
||||||
|
begin
|
||||||
|
FSocketObject := TTCPBlockSocket.Create();
|
||||||
|
FreeOnTerminate := True;
|
||||||
|
FDefaultTimeOut := 1000;
|
||||||
|
inherited Create(false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TServerListnerThread.Destroy();
|
||||||
|
begin
|
||||||
|
FreeAndNil(FSocketObject);
|
||||||
|
inherited Destroy();
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerListnerThread.Execute();
|
||||||
|
var
|
||||||
|
ClientSock : TSocket;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
FSocketObject.RaiseExcept := True;
|
||||||
|
FSocketObject.CreateSocket();
|
||||||
|
FSocketObject.SetLinger(True,10);
|
||||||
|
FSocketObject.Bind('0.0.0.0',sSERVER_PORT);
|
||||||
|
FSocketObject.Listen();
|
||||||
|
while not Terminated do begin
|
||||||
|
if FSocketObject.CanRead(DefaultTimeOut) then begin
|
||||||
|
ClientSock := FSocketObject.Accept();
|
||||||
|
TClientHandlerThread.Create(ClientSock);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on e : Exception do begin
|
||||||
|
Logger().Log('Listner Thread Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]);
|
||||||
|
Logger().Log('Listner stoped.');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -1,6 +1,13 @@
|
|||||||
unit calculator;
|
unit calculator;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$IFDEF FPC}
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
{$DEFINE HAS_QWORD}
|
||||||
|
{$DEFINE USE_INLINE}
|
||||||
|
{$ELSE}
|
||||||
|
{$UNDEF HAS_QWORD}
|
||||||
|
{$UNDEF USE_INLINE}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
uses SysUtils,
|
uses SysUtils,
|
||||||
|
@ -59,7 +59,7 @@ begin
|
|||||||
try
|
try
|
||||||
if not Assigned(FObj) then
|
if not Assigned(FObj) then
|
||||||
FObj := TCalculator_Proxy.Create(
|
FObj := TCalculator_Proxy.Create(
|
||||||
'Calculator', // Target
|
'ICalculator', // Target
|
||||||
edtFormat.Text,//'SOAP',//'binary', // Protocol Data
|
edtFormat.Text,//'SOAP',//'binary', // Protocol Data
|
||||||
edtAddress.Text
|
edtAddress.Text
|
||||||
//'http:Address=http://127.0.0.1:8000/services/ICalculator'
|
//'http:Address=http://127.0.0.1:8000/services/ICalculator'
|
||||||
@ -126,7 +126,7 @@ end;
|
|||||||
procedure Tfmain.FormCreate(Sender: TObject);
|
procedure Tfmain.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FObj := Nil;
|
FObj := Nil;
|
||||||
//ICS_RegisterTCP_Transport();
|
ICS_RegisterTCP_Transport();
|
||||||
ICS_RegisterHTTP_Transport();
|
ICS_RegisterHTTP_Transport();
|
||||||
LIB_Register_Transport();
|
LIB_Register_Transport();
|
||||||
//SYNAPSE_RegisterHTTP_Transport();
|
//SYNAPSE_RegisterHTTP_Transport();
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=".exe"/>
|
<TargetFileExt Value=".exe"/>
|
||||||
<ActiveEditorIndexAtStart Value="3"/>
|
<ActiveEditorIndexAtStart Value="0"/>
|
||||||
</General>
|
</General>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
@ -41,8 +41,8 @@
|
|||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ResourceFilename Value="main_unit.lrs"/>
|
<ResourceFilename Value="main_unit.lrs"/>
|
||||||
<UnitName Value="main_unit"/>
|
<UnitName Value="main_unit"/>
|
||||||
<CursorPos X="40" Y="42"/>
|
<CursorPos X="3" Y="129"/>
|
||||||
<TopLine Value="25"/>
|
<TopLine Value="109"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="82"/>
|
<UsageCount Value="82"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
@ -60,8 +60,8 @@
|
|||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="calculator_proxy"/>
|
<UnitName Value="calculator_proxy"/>
|
||||||
<CursorPos X="20" Y="39"/>
|
<CursorPos X="20" Y="39"/>
|
||||||
<TopLine Value="25"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="3"/>
|
||||||
<UsageCount Value="82"/>
|
<UsageCount Value="82"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
@ -318,78 +318,16 @@
|
|||||||
<Unit40>
|
<Unit40>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
||||||
<UnitName Value="DOM"/>
|
<UnitName Value="DOM"/>
|
||||||
<CursorPos X="32" Y="210"/>
|
<CursorPos X="40" Y="373"/>
|
||||||
<TopLine Value="356"/>
|
<TopLine Value="356"/>
|
||||||
<EditorIndex Value="3"/>
|
|
||||||
<UsageCount Value="11"/>
|
<UsageCount Value="11"/>
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit40>
|
</Unit40>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="16" HistoryIndex="15">
|
<JumpHistory Count="1" HistoryIndex="0">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="main_unit.pas"/>
|
<Filename Value="main_unit.pas"/>
|
||||||
<Caret Line="42" Column="40" TopLine="25"/>
|
<Caret Line="42" Column="40" TopLine="25"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
|
||||||
<Filename Value="..\..\..\soap_formatter.pas"/>
|
|
||||||
<Caret Line="20" Column="33" TopLine="4"/>
|
|
||||||
</Position2>
|
|
||||||
<Position3>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position3>
|
|
||||||
<Position4>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="63" Column="20" TopLine="49"/>
|
|
||||||
</Position4>
|
|
||||||
<Position5>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="78" Column="5" TopLine="64"/>
|
|
||||||
</Position5>
|
|
||||||
<Position6>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="84" Column="51" TopLine="70"/>
|
|
||||||
</Position6>
|
|
||||||
<Position7>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="88" Column="98" TopLine="74"/>
|
|
||||||
</Position7>
|
|
||||||
<Position8>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="106" Column="44" TopLine="92"/>
|
|
||||||
</Position8>
|
|
||||||
<Position9>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="112" Column="28" TopLine="98"/>
|
|
||||||
</Position9>
|
|
||||||
<Position10>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="117" Column="9" TopLine="103"/>
|
|
||||||
</Position10>
|
|
||||||
<Position11>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="179" Column="28" TopLine="151"/>
|
|
||||||
</Position11>
|
|
||||||
<Position12>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="193" Column="9" TopLine="177"/>
|
|
||||||
</Position12>
|
|
||||||
<Position13>
|
|
||||||
<Filename Value="..\..\..\soap_formatter.pas"/>
|
|
||||||
<Caret Line="21" Column="53" TopLine="4"/>
|
|
||||||
</Position13>
|
|
||||||
<Position14>
|
|
||||||
<Filename Value="..\..\..\soap_formatter.pas"/>
|
|
||||||
<Caret Line="125" Column="24" TopLine="115"/>
|
|
||||||
</Position14>
|
|
||||||
<Position15>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="1266" Column="20" TopLine="1264"/>
|
|
||||||
</Position15>
|
|
||||||
<Position16>
|
|
||||||
<Filename Value="..\..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
|
||||||
<Caret Line="975" Column="24" TopLine="962"/>
|
|
||||||
</Position16>
|
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
@ -422,7 +360,7 @@
|
|||||||
</Other>
|
</Other>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
<Debugging>
|
<Debugging>
|
||||||
<BreakPoints Count="6">
|
<BreakPoints Count="5">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Source Value="..\..\..\..\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
|
<Source Value="..\..\..\..\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
|
||||||
<Line Value="15"/>
|
<Line Value="15"/>
|
||||||
@ -443,10 +381,6 @@
|
|||||||
<Source Value="..\..\..\..\basic_binder.pas"/>
|
<Source Value="..\..\..\..\basic_binder.pas"/>
|
||||||
<Line Value="62"/>
|
<Line Value="62"/>
|
||||||
</Item5>
|
</Item5>
|
||||||
<Item6>
|
|
||||||
<Source Value="main_unit.pas"/>
|
|
||||||
<Line Value="54"/>
|
|
||||||
</Item6>
|
|
||||||
</BreakPoints>
|
</BreakPoints>
|
||||||
<Watches Count="1">
|
<Watches Count="1">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
43
wst/trunk/tests/delphi/test_binary/test_binary.cfg
Normal file
43
wst/trunk/tests/delphi/test_binary/test_binary.cfg
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
-$A8
|
||||||
|
-$B-
|
||||||
|
-$C+
|
||||||
|
-$D+
|
||||||
|
-$E-
|
||||||
|
-$F-
|
||||||
|
-$G+
|
||||||
|
-$H+
|
||||||
|
-$I+
|
||||||
|
-$J-
|
||||||
|
-$K-
|
||||||
|
-$L+
|
||||||
|
-$M-
|
||||||
|
-$N+
|
||||||
|
-$O+
|
||||||
|
-$P+
|
||||||
|
-$Q-
|
||||||
|
-$R-
|
||||||
|
-$S-
|
||||||
|
-$T-
|
||||||
|
-$U-
|
||||||
|
-$V+
|
||||||
|
-$W-
|
||||||
|
-$X+
|
||||||
|
-$YD
|
||||||
|
-$Z1
|
||||||
|
-cg
|
||||||
|
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||||
|
-H+
|
||||||
|
-W+
|
||||||
|
-M
|
||||||
|
-$M16384,1048576
|
||||||
|
-K$00400000
|
||||||
|
-N"obj"
|
||||||
|
-LE"c:\program files\borland\delphi7\Projects\Bpl"
|
||||||
|
-LN"c:\program files\borland\delphi7\Projects\Bpl"
|
||||||
|
-U"C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator;C:\lazarusClean\others_package\synapse"
|
||||||
|
-O"C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator;C:\lazarusClean\others_package\synapse"
|
||||||
|
-I"C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator;C:\lazarusClean\others_package\synapse"
|
||||||
|
-R"C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator;C:\lazarusClean\others_package\synapse"
|
||||||
|
-w-UNSAFE_TYPE
|
||||||
|
-w-UNSAFE_CODE
|
||||||
|
-w-UNSAFE_CAST
|
157
wst/trunk/tests/delphi/test_binary/test_binary.dof
Normal file
157
wst/trunk/tests/delphi/test_binary/test_binary.dof
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
[FileVersion]
|
||||||
|
Version=7.0
|
||||||
|
[Compiler]
|
||||||
|
A=8
|
||||||
|
B=0
|
||||||
|
C=1
|
||||||
|
D=1
|
||||||
|
E=0
|
||||||
|
F=0
|
||||||
|
G=1
|
||||||
|
H=1
|
||||||
|
I=1
|
||||||
|
J=0
|
||||||
|
K=0
|
||||||
|
L=1
|
||||||
|
M=0
|
||||||
|
N=1
|
||||||
|
O=1
|
||||||
|
P=1
|
||||||
|
Q=0
|
||||||
|
R=0
|
||||||
|
S=0
|
||||||
|
T=0
|
||||||
|
U=0
|
||||||
|
V=1
|
||||||
|
W=0
|
||||||
|
X=1
|
||||||
|
Y=1
|
||||||
|
Z=1
|
||||||
|
ShowHints=1
|
||||||
|
ShowWarnings=1
|
||||||
|
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||||
|
NamespacePrefix=
|
||||||
|
SymbolDeprecated=1
|
||||||
|
SymbolLibrary=1
|
||||||
|
SymbolPlatform=1
|
||||||
|
UnitLibrary=1
|
||||||
|
UnitPlatform=1
|
||||||
|
UnitDeprecated=1
|
||||||
|
HResultCompat=1
|
||||||
|
HidingMember=1
|
||||||
|
HiddenVirtual=1
|
||||||
|
Garbage=1
|
||||||
|
BoundsError=1
|
||||||
|
ZeroNilCompat=1
|
||||||
|
StringConstTruncated=1
|
||||||
|
ForLoopVarVarPar=1
|
||||||
|
TypedConstVarPar=1
|
||||||
|
AsgToTypedConst=1
|
||||||
|
CaseLabelRange=1
|
||||||
|
ForVariable=1
|
||||||
|
ConstructingAbstract=1
|
||||||
|
ComparisonFalse=1
|
||||||
|
ComparisonTrue=1
|
||||||
|
ComparingSignedUnsigned=1
|
||||||
|
CombiningSignedUnsigned=1
|
||||||
|
UnsupportedConstruct=1
|
||||||
|
FileOpen=1
|
||||||
|
FileOpenUnitSrc=1
|
||||||
|
BadGlobalSymbol=1
|
||||||
|
DuplicateConstructorDestructor=1
|
||||||
|
InvalidDirective=1
|
||||||
|
PackageNoLink=1
|
||||||
|
PackageThreadVar=1
|
||||||
|
ImplicitImport=1
|
||||||
|
HPPEMITIgnored=1
|
||||||
|
NoRetVal=1
|
||||||
|
UseBeforeDef=1
|
||||||
|
ForLoopVarUndef=1
|
||||||
|
UnitNameMismatch=1
|
||||||
|
NoCFGFileFound=1
|
||||||
|
MessageDirective=1
|
||||||
|
ImplicitVariants=1
|
||||||
|
UnicodeToLocale=1
|
||||||
|
LocaleToUnicode=1
|
||||||
|
ImagebaseMultiple=1
|
||||||
|
SuspiciousTypecast=1
|
||||||
|
PrivatePropAccessor=1
|
||||||
|
UnsafeType=0
|
||||||
|
UnsafeCode=0
|
||||||
|
UnsafeCast=0
|
||||||
|
[Linker]
|
||||||
|
MapFile=0
|
||||||
|
OutputObjs=0
|
||||||
|
ConsoleApp=1
|
||||||
|
DebugInfo=0
|
||||||
|
RemoteSymbols=0
|
||||||
|
MinStackSize=16384
|
||||||
|
MaxStackSize=1048576
|
||||||
|
ImageBase=4194304
|
||||||
|
ExeDescription=
|
||||||
|
[Directories]
|
||||||
|
OutputDir=
|
||||||
|
UnitOutputDir=obj
|
||||||
|
PackageDLLOutputDir=
|
||||||
|
PackageDCPOutputDir=
|
||||||
|
SearchPath=C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator;C:\lazarusClean\others_package\synapse
|
||||||
|
Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;FIBDBMidas7;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;dxForumLibD7;cxLibraryVCLD7;cxPageControlVCLD7;dxBarD7;dxComnD7;dxBarDBNavD7;dxBarExtItemsD7;dxBarExtDBItemsD7;dxsbD7;dxmdsD7;dxdbtrD7;dxtrmdD7;dxorgcD7;dxdborD7;dxEdtrD7;EQTLD7;ECQDBCD7;EQDBTLD7;EQGridD7;dxGrEdD7;dxExELD7;dxELibD7;cxEditorsVCLD7;cxGridVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;dxPSCoreD7;dxPsPrVwAdvD7;dxPSLnksD7;dxPSTeeChartD7;dxPSDBTeeChartD7;dxPSdxDBTVLnkD7;dxPSdxOCLnkD7;dxPSdxDBOCLnkD7;dxPScxGridLnkD7;dxPSTLLnkD7;qrpt
|
||||||
|
Conditionals=
|
||||||
|
DebugSourceDirs=
|
||||||
|
UsePackages=0
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
Launcher=
|
||||||
|
UseLauncher=0
|
||||||
|
DebugCWD=
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=C:\Program Files\Borland\Delphi7\Bin\
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=0
|
||||||
|
AutoIncBuild=0
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=0
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=1036
|
||||||
|
CodePage=1252
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=
|
||||||
|
FileDescription=
|
||||||
|
FileVersion=1.0.0.0
|
||||||
|
InternalName=
|
||||||
|
LegalCopyright=
|
||||||
|
LegalTrademarks=
|
||||||
|
OriginalFilename=
|
||||||
|
ProductName=
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=
|
||||||
|
[Excluded Packages]
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxDBTLLnkD7.bpl=ExpressPrinting System ReportLink for ExpressQuantumDBTreeList by Developer Express Inc.
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxDBGrLnkD7.bpl=ExpressPrinting System ReportLink for ExpressQuantumGrid by Developer Express Inc.
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxInsLnkD7.bpl=ExpressPrinting System ReportLink for ExpressInspector by Developer Express Inc.
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxOILnkD7.bpl=ExpressPrinting System ReportLink for ExpressRTTIInspector by Developer Express Inc.
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxMVLnkD7.bpl=ExpressPrinting System ReportLink for ExpressMasterView by Developer Express Inc.
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxFCLnkD7.bpl=ExpressPrinting System ReportLinks for ExpressFlowChart by Developer Express Inc.
|
||||||
|
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPScxSSLnkD7.bpl=ExpressPrinting System ReportLink for ExpressSpreadSheet by Developer Express Inc.
|
||||||
|
[HistoryLists\hlUnitAliases]
|
||||||
|
Count=1
|
||||||
|
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||||
|
[HistoryLists\hlSearchPath]
|
||||||
|
Count=5
|
||||||
|
Item0=C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator;C:\lazarusClean\others_package\synapse
|
||||||
|
Item1=C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32;C:\Programmes\lazarus\wst\tests\calculator
|
||||||
|
Item2=C:\Programmes\lazarus\wst;C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32
|
||||||
|
Item3=C:\Programmes\lazarus\wst
|
||||||
|
Item4=..\
|
||||||
|
[HistoryLists\hlUnitOutputDirectory]
|
||||||
|
Count=1
|
||||||
|
Item0=obj
|
71
wst/trunk/tests/delphi/test_binary/test_binary.dpr
Normal file
71
wst/trunk/tests/delphi/test_binary/test_binary.dpr
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
program test_binary;
|
||||||
|
|
||||||
|
{$APPTYPE CONSOLE}
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils,
|
||||||
|
Classes,
|
||||||
|
base_service_intf,
|
||||||
|
service_intf,
|
||||||
|
base_binary_formatter,
|
||||||
|
binary_formatter,
|
||||||
|
//ics_tcp_protocol,
|
||||||
|
calculator,
|
||||||
|
calculator_proxy,
|
||||||
|
TypInfo,
|
||||||
|
synapse_http_protocol,
|
||||||
|
synapse_tcp_protocol;
|
||||||
|
|
||||||
|
Var
|
||||||
|
calcObj : ICalculator;
|
||||||
|
i, j, k : Integer;
|
||||||
|
rk : TBinaryArgsResult;
|
||||||
|
vA : TBinaryArgsResultArray;
|
||||||
|
msgProt, s : string;
|
||||||
|
begin
|
||||||
|
msgProt := 'binary';
|
||||||
|
Writeln('USED Msg protocol = ',msgProt);
|
||||||
|
//ICS_RegisterTCP_Transport();
|
||||||
|
SYNAPSE_RegisterTCP_Transport();
|
||||||
|
|
||||||
|
rk := nil;
|
||||||
|
Try
|
||||||
|
Try
|
||||||
|
calcObj := TCalculator_Proxy.Create(
|
||||||
|
'ICalculator', // Target
|
||||||
|
msgProt,//'SOAP',//'binary', // Protocol Data
|
||||||
|
'TCP:Address=127.0.0.1;Port=1234;target=ICalculator' // Transport Data
|
||||||
|
);
|
||||||
|
WriteLn('Calculator test.');
|
||||||
|
while True do begin
|
||||||
|
Write('Enter A = '); ReadLn(i);
|
||||||
|
Write('Enter B = '); ReadLn(j);
|
||||||
|
k := calcObj.DivInt(i,j);
|
||||||
|
Write(' A / B = '); WriteLn(k);
|
||||||
|
rk := calcObj.AddInt(i,j);
|
||||||
|
WriteLn(Format(' ( %d %s %d ) = %d',[rk.Arg_A, rk.Arg_OP, rk.Arg_B, rk.Arg_R]));
|
||||||
|
WriteLn('----------------------------------------------');
|
||||||
|
vA := calcObj.DoAllOperations(i,j);
|
||||||
|
Try
|
||||||
|
For i := 0 To Pred(vA.Length) Do
|
||||||
|
WriteLn(Format(' ( %d %s %d ) = %d; OP=%s',[vA[i].Arg_A, vA[i].Arg_OP, vA[i].Arg_B, vA[i].Arg_R,GetEnumName(TypeInfo(TCalc_Op),Ord(vA[i].Arg_OpEnum))]));
|
||||||
|
Finally
|
||||||
|
vA.Free();
|
||||||
|
End;
|
||||||
|
Write('Stop now Y/N: ');
|
||||||
|
Readln(s);
|
||||||
|
s := UpperCase(Trim(s));
|
||||||
|
if ( Length(s) > 0 ) and ( s[1] = 'Y' ) then
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
Except
|
||||||
|
On E : Exception Do Begin
|
||||||
|
WriteLn('Oups:');
|
||||||
|
WriteLn(E.Message);
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
Finally
|
||||||
|
rk.Free();
|
||||||
|
End;
|
||||||
|
ReadLn;
|
||||||
|
end.
|
@ -64,7 +64,9 @@ uses base_service_intf,
|
|||||||
server_service_soap, server_binary_formatter,
|
server_service_soap, server_binary_formatter,
|
||||||
metadata_repository, metadata_wsdl, DOM, XMLWrite,
|
metadata_repository, metadata_wsdl, DOM, XMLWrite,
|
||||||
calculator, calculator_binder, calculator_imp,
|
calculator, calculator_binder, calculator_imp,
|
||||||
metadata_service, metadata_service_binder, metadata_service_imp;
|
metadata_service, metadata_service_binder, metadata_service_imp,
|
||||||
|
|
||||||
|
user_service_intf, user_service_intf_binder, user_service_intf_imp;
|
||||||
|
|
||||||
const
|
const
|
||||||
sSEPARATOR = '/';
|
sSEPARATOR = '/';
|
||||||
@ -275,6 +277,9 @@ begin
|
|||||||
FHTTPServerObject.ServerSoftware := 'Web Service Toolkit Sample WebServer';
|
FHTTPServerObject.ServerSoftware := 'Web Service Toolkit Sample WebServer';
|
||||||
FHTTPServerObject.Active := True;
|
FHTTPServerObject.Active := True;
|
||||||
FHTTPServerObject.OnCommandGet := @Handler_CommandGet;
|
FHTTPServerObject.OnCommandGet := @Handler_CommandGet;
|
||||||
|
|
||||||
|
Server_service_RegisterUserServiceService();
|
||||||
|
RegisterUserServiceImplementationFactory();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TwstWebApplication.Destroy();
|
destructor TwstWebApplication.Destroy();
|
||||||
@ -298,4 +303,7 @@ initialization
|
|||||||
|
|
||||||
Server_service_RegisterWSTMetadataServiceService();
|
Server_service_RegisterWSTMetadataServiceService();
|
||||||
RegisterWSTMetadataServiceImplementationFactory();
|
RegisterWSTMetadataServiceImplementationFactory();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=".exe"/>
|
<TargetFileExt Value=".exe"/>
|
||||||
<ActiveEditorIndexAtStart Value="3"/>
|
<ActiveEditorIndexAtStart Value="13"/>
|
||||||
</General>
|
</General>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
@ -31,22 +31,24 @@
|
|||||||
<PackageName Value="indylaz"/>
|
<PackageName Value="indylaz"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="73">
|
<Units Count="83">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="wst_http_server.pas"/>
|
<Filename Value="wst_http_server.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="wst_http_server"/>
|
<UnitName Value="wst_http_server"/>
|
||||||
<CursorPos X="30" Y="29"/>
|
<CursorPos X="1" Y="40"/>
|
||||||
<TopLine Value="13"/>
|
<TopLine Value="18"/>
|
||||||
|
<EditorIndex Value="13"/>
|
||||||
<UsageCount Value="202"/>
|
<UsageCount Value="202"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="app_object.pas"/>
|
<Filename Value="app_object.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="app_object"/>
|
<UnitName Value="app_object"/>
|
||||||
<CursorPos X="1" Y="238"/>
|
<CursorPos X="43" Y="69"/>
|
||||||
<TopLine Value="224"/>
|
<TopLine Value="50"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="202"/>
|
<UsageCount Value="202"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
@ -55,107 +57,107 @@
|
|||||||
<UnitName Value="IdSocketHandle"/>
|
<UnitName Value="IdSocketHandle"/>
|
||||||
<CursorPos X="9" Y="126"/>
|
<CursorPos X="9" Y="126"/>
|
||||||
<TopLine Value="118"/>
|
<TopLine Value="118"/>
|
||||||
<UsageCount Value="7"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
<Unit3>
|
<Unit3>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdComponent.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdComponent.pas"/>
|
||||||
<UnitName Value="IdComponent"/>
|
<UnitName Value="IdComponent"/>
|
||||||
<CursorPos X="27" Y="64"/>
|
<CursorPos X="27" Y="64"/>
|
||||||
<TopLine Value="50"/>
|
<TopLine Value="50"/>
|
||||||
<UsageCount Value="7"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
<Unit4>
|
<Unit4>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdCompilerDefines.inc"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdCompilerDefines.inc"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="7"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit4>
|
</Unit4>
|
||||||
<Unit5>
|
<Unit5>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Core\IdContext.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Core\IdContext.pas"/>
|
||||||
<UnitName Value="IdContext"/>
|
<UnitName Value="IdContext"/>
|
||||||
<CursorPos X="3" Y="81"/>
|
<CursorPos X="3" Y="81"/>
|
||||||
<TopLine Value="70"/>
|
<TopLine Value="70"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit5>
|
</Unit5>
|
||||||
<Unit6>
|
<Unit6>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdCustomHTTPServer.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdCustomHTTPServer.pas"/>
|
||||||
<UnitName Value="IdCustomHTTPServer"/>
|
<UnitName Value="IdCustomHTTPServer"/>
|
||||||
<CursorPos X="16" Y="167"/>
|
<CursorPos X="16" Y="167"/>
|
||||||
<TopLine Value="148"/>
|
<TopLine Value="148"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit6>
|
</Unit6>
|
||||||
<Unit7>
|
<Unit7>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdHTTPHeaderInfo.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdHTTPHeaderInfo.pas"/>
|
||||||
<UnitName Value="IdHTTPHeaderInfo"/>
|
<UnitName Value="IdHTTPHeaderInfo"/>
|
||||||
<CursorPos X="25" Y="127"/>
|
<CursorPos X="25" Y="127"/>
|
||||||
<TopLine Value="99"/>
|
<TopLine Value="99"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit7>
|
</Unit7>
|
||||||
<Unit8>
|
<Unit8>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdGlobal.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdGlobal.pas"/>
|
||||||
<UnitName Value="IdGlobal"/>
|
<UnitName Value="IdGlobal"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="7"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit8>
|
</Unit8>
|
||||||
<Unit9>
|
<Unit9>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdBaseComponent.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdBaseComponent.pas"/>
|
||||||
<UnitName Value="IdBaseComponent"/>
|
<UnitName Value="IdBaseComponent"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="69"/>
|
<TopLine Value="69"/>
|
||||||
<UsageCount Value="7"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit9>
|
</Unit9>
|
||||||
<Unit10>
|
<Unit10>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\win32\classes.pp"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\win32\classes.pp"/>
|
||||||
<UnitName Value="Classes"/>
|
<UnitName Value="Classes"/>
|
||||||
<CursorPos X="14" Y="35"/>
|
<CursorPos X="14" Y="35"/>
|
||||||
<TopLine Value="19"/>
|
<TopLine Value="19"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit10>
|
</Unit10>
|
||||||
<Unit11>
|
<Unit11>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\classes\classesh.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\classes\classesh.inc"/>
|
||||||
<CursorPos X="14" Y="566"/>
|
<CursorPos X="14" Y="566"/>
|
||||||
<TopLine Value="554"/>
|
<TopLine Value="554"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit11>
|
</Unit11>
|
||||||
<Unit12>
|
<Unit12>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\classes\streams.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\classes\streams.inc"/>
|
||||||
<CursorPos X="7" Y="143"/>
|
<CursorPos X="7" Y="143"/>
|
||||||
<TopLine Value="118"/>
|
<TopLine Value="118"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit12>
|
</Unit12>
|
||||||
<Unit13>
|
<Unit13>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdResourceStringsProtocols.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdResourceStringsProtocols.pas"/>
|
||||||
<UnitName Value="IdResourceStringsProtocols"/>
|
<UnitName Value="IdResourceStringsProtocols"/>
|
||||||
<CursorPos X="3" Y="900"/>
|
<CursorPos X="3" Y="900"/>
|
||||||
<TopLine Value="889"/>
|
<TopLine Value="889"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit13>
|
</Unit13>
|
||||||
<Unit14>
|
<Unit14>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdURI.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdURI.pas"/>
|
||||||
<UnitName Value="IdURI"/>
|
<UnitName Value="IdURI"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="37"/>
|
<TopLine Value="37"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit14>
|
</Unit14>
|
||||||
<Unit15>
|
<Unit15>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\wstringh.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\wstringh.inc"/>
|
||||||
<CursorPos X="11" Y="30"/>
|
<CursorPos X="11" Y="30"/>
|
||||||
<TopLine Value="19"/>
|
<TopLine Value="19"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit15>
|
</Unit15>
|
||||||
<Unit16>
|
<Unit16>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\wstrings.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\wstrings.inc"/>
|
||||||
<CursorPos X="3" Y="938"/>
|
<CursorPos X="3" Y="938"/>
|
||||||
<TopLine Value="934"/>
|
<TopLine Value="934"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit16>
|
</Unit16>
|
||||||
<Unit17>
|
<Unit17>
|
||||||
<Filename Value="..\..\server_service_intf.pas"/>
|
<Filename Value="..\..\server_service_intf.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="server_service_intf"/>
|
<UnitName Value="server_service_intf"/>
|
||||||
<CursorPos X="56" Y="332"/>
|
<CursorPos X="1" Y="511"/>
|
||||||
<TopLine Value="319"/>
|
<TopLine Value="500"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Bookmarks Count="2">
|
<Bookmarks Count="2">
|
||||||
<Item0 X="28" Y="60" ID="0"/>
|
<Item0 X="28" Y="60" ID="0"/>
|
||||||
@ -166,12 +168,14 @@
|
|||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="base_service_intf"/>
|
<UnitName Value="base_service_intf"/>
|
||||||
<CursorPos X="75" Y="817"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="811"/>
|
<TopLine Value="82"/>
|
||||||
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="201"/>
|
<UsageCount Value="201"/>
|
||||||
<Bookmarks Count="1">
|
<Bookmarks Count="1">
|
||||||
<Item0 X="52" Y="707" ID="1"/>
|
<Item0 X="52" Y="707" ID="1"/>
|
||||||
</Bookmarks>
|
</Bookmarks>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit18>
|
</Unit18>
|
||||||
<Unit19>
|
<Unit19>
|
||||||
<Filename Value="..\..\server_service_imputils.pas"/>
|
<Filename Value="..\..\server_service_imputils.pas"/>
|
||||||
@ -193,63 +197,67 @@
|
|||||||
<Filename Value="..\..\server_service_soap.pas"/>
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="server_service_soap"/>
|
<UnitName Value="server_service_soap"/>
|
||||||
<CursorPos X="3" Y="160"/>
|
<CursorPos X="14" Y="22"/>
|
||||||
<TopLine Value="113"/>
|
<TopLine Value="13"/>
|
||||||
|
<EditorIndex Value="9"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit21>
|
</Unit21>
|
||||||
<Unit22>
|
<Unit22>
|
||||||
<Filename Value="..\tcp_server\calculator\calculator.pas"/>
|
<Filename Value="..\tcp_server\calculator\calculator.pas"/>
|
||||||
<UnitName Value="calculator"/>
|
<UnitName Value="calculator"/>
|
||||||
<CursorPos X="5" Y="84"/>
|
<CursorPos X="5" Y="84"/>
|
||||||
<TopLine Value="65"/>
|
<TopLine Value="65"/>
|
||||||
<UsageCount Value="165"/>
|
<UsageCount Value="164"/>
|
||||||
</Unit22>
|
</Unit22>
|
||||||
<Unit23>
|
<Unit23>
|
||||||
<Filename Value="..\tcp_server\calculator\srv\calculator_imp.pas"/>
|
<Filename Value="..\tcp_server\calculator\srv\calculator_imp.pas"/>
|
||||||
<UnitName Value="calculator_imp"/>
|
<UnitName Value="calculator_imp"/>
|
||||||
<CursorPos X="24" Y="18"/>
|
<CursorPos X="24" Y="18"/>
|
||||||
<TopLine Value="14"/>
|
<TopLine Value="14"/>
|
||||||
<UsageCount Value="126"/>
|
<UsageCount Value="125"/>
|
||||||
</Unit23>
|
</Unit23>
|
||||||
<Unit24>
|
<Unit24>
|
||||||
<Filename Value="..\tcp_server\calculator\srv\calculator_binder.pas"/>
|
<Filename Value="..\tcp_server\calculator\srv\calculator_binder.pas"/>
|
||||||
<UnitName Value="calculator_binder"/>
|
<UnitName Value="calculator_binder"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="165"/>
|
<UsageCount Value="164"/>
|
||||||
</Unit24>
|
</Unit24>
|
||||||
<Unit25>
|
<Unit25>
|
||||||
<Filename Value="..\..\base_binary_formatter.pas"/>
|
<Filename Value="..\..\base_binary_formatter.pas"/>
|
||||||
<UnitName Value="base_binary_formatter"/>
|
<UnitName Value="base_binary_formatter"/>
|
||||||
<CursorPos X="1" Y="925"/>
|
<CursorPos X="1" Y="925"/>
|
||||||
<TopLine Value="913"/>
|
<TopLine Value="913"/>
|
||||||
<UsageCount Value="13"/>
|
<UsageCount Value="12"/>
|
||||||
</Unit25>
|
</Unit25>
|
||||||
<Unit26>
|
<Unit26>
|
||||||
<Filename Value="D:\Lazarus\lcl\lresources.pp"/>
|
<Filename Value="D:\Lazarus\lcl\lresources.pp"/>
|
||||||
<UnitName Value="LResources"/>
|
<UnitName Value="LResources"/>
|
||||||
<CursorPos X="25" Y="272"/>
|
<CursorPos X="25" Y="272"/>
|
||||||
<TopLine Value="258"/>
|
<TopLine Value="258"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit26>
|
</Unit26>
|
||||||
<Unit27>
|
<Unit27>
|
||||||
<Filename Value="..\..\metadata_wsdl.pas"/>
|
<Filename Value="..\..\metadata_wsdl.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="metadata_wsdl"/>
|
<UnitName Value="metadata_wsdl"/>
|
||||||
<CursorPos X="39" Y="549"/>
|
<CursorPos X="30" Y="410"/>
|
||||||
<TopLine Value="537"/>
|
<TopLine Value="396"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
<UsageCount Value="201"/>
|
<UsageCount Value="201"/>
|
||||||
<Bookmarks Count="1">
|
<Bookmarks Count="1">
|
||||||
<Item0 X="23" Y="440" ID="3"/>
|
<Item0 X="23" Y="458" ID="3"/>
|
||||||
</Bookmarks>
|
</Bookmarks>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit27>
|
</Unit27>
|
||||||
<Unit28>
|
<Unit28>
|
||||||
<Filename Value="..\..\metadata_repository.pas"/>
|
<Filename Value="..\..\metadata_repository.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="metadata_repository"/>
|
<UnitName Value="metadata_repository"/>
|
||||||
<CursorPos X="1" Y="309"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="247"/>
|
<TopLine Value="91"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="201"/>
|
<UsageCount Value="201"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit28>
|
</Unit28>
|
||||||
@ -258,179 +266,183 @@
|
|||||||
<UnitName Value="DOM"/>
|
<UnitName Value="DOM"/>
|
||||||
<CursorPos X="15" Y="475"/>
|
<CursorPos X="15" Y="475"/>
|
||||||
<TopLine Value="472"/>
|
<TopLine Value="472"/>
|
||||||
<UsageCount Value="7"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit29>
|
</Unit29>
|
||||||
<Unit30>
|
<Unit30>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\fcl\xml\xmlwrite.pp"/>
|
<Filename Value="D:\Lazarus\fpcsrc\fcl\xml\xmlwrite.pp"/>
|
||||||
<UnitName Value="XMLWrite"/>
|
<UnitName Value="XMLWrite"/>
|
||||||
<CursorPos X="15" Y="74"/>
|
<CursorPos X="15" Y="74"/>
|
||||||
<TopLine Value="50"/>
|
<TopLine Value="50"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit30>
|
</Unit30>
|
||||||
<Unit31>
|
<Unit31>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\typinfo.pp"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\typinfo.pp"/>
|
||||||
<UnitName Value="typinfo"/>
|
<UnitName Value="typinfo"/>
|
||||||
<CursorPos X="7" Y="73"/>
|
<CursorPos X="7" Y="73"/>
|
||||||
<TopLine Value="96"/>
|
<TopLine Value="96"/>
|
||||||
<UsageCount Value="12"/>
|
<UsageCount Value="11"/>
|
||||||
</Unit31>
|
</Unit31>
|
||||||
<Unit32>
|
<Unit32>
|
||||||
<Filename Value="..\..\base_soap_formatter.pas"/>
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
<UnitName Value="base_soap_formatter"/>
|
<UnitName Value="base_soap_formatter"/>
|
||||||
<CursorPos X="1" Y="249"/>
|
<CursorPos X="21" Y="121"/>
|
||||||
<TopLine Value="235"/>
|
<TopLine Value="109"/>
|
||||||
|
<EditorIndex Value="10"/>
|
||||||
<UsageCount Value="59"/>
|
<UsageCount Value="59"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit32>
|
</Unit32>
|
||||||
<Unit33>
|
<Unit33>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\objpash.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\objpash.inc"/>
|
||||||
<CursorPos X="40" Y="165"/>
|
<CursorPos X="40" Y="165"/>
|
||||||
<TopLine Value="279"/>
|
<TopLine Value="279"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit33>
|
</Unit33>
|
||||||
<Unit34>
|
<Unit34>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\objpas.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\inc\objpas.inc"/>
|
||||||
<CursorPos X="11" Y="351"/>
|
<CursorPos X="11" Y="351"/>
|
||||||
<TopLine Value="345"/>
|
<TopLine Value="345"/>
|
||||||
<UsageCount Value="3"/>
|
<UsageCount Value="2"/>
|
||||||
</Unit34>
|
</Unit34>
|
||||||
<Unit35>
|
<Unit35>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdHTTPServer.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdHTTPServer.pas"/>
|
||||||
<UnitName Value="IdHTTPServer"/>
|
<UnitName Value="IdHTTPServer"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="8"/>
|
||||||
</Unit35>
|
</Unit35>
|
||||||
<Unit36>
|
<Unit36>
|
||||||
<Filename Value="D:\lazarusClean\lcl\lresources.pp"/>
|
<Filename Value="D:\lazarusClean\lcl\lresources.pp"/>
|
||||||
<UnitName Value="LResources"/>
|
<UnitName Value="LResources"/>
|
||||||
<CursorPos X="3" Y="934"/>
|
<CursorPos X="3" Y="934"/>
|
||||||
<TopLine Value="931"/>
|
<TopLine Value="931"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit36>
|
</Unit36>
|
||||||
<Unit37>
|
<Unit37>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdSysVCL.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdSysVCL.pas"/>
|
||||||
<UnitName Value="IdSysVCL"/>
|
<UnitName Value="IdSysVCL"/>
|
||||||
<CursorPos X="1" Y="176"/>
|
<CursorPos X="1" Y="176"/>
|
||||||
<TopLine Value="165"/>
|
<TopLine Value="165"/>
|
||||||
<UsageCount Value="2"/>
|
<UsageCount Value="1"/>
|
||||||
</Unit37>
|
</Unit37>
|
||||||
<Unit38>
|
<Unit38>
|
||||||
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdStackBSDBase.pas"/>
|
<Filename Value="D:\Lazarus\others_package\indy\indy-10.2.0.1\fpc\System\IdStackBSDBase.pas"/>
|
||||||
<UnitName Value="IdStackBSDBase"/>
|
<UnitName Value="IdStackBSDBase"/>
|
||||||
<CursorPos X="35" Y="456"/>
|
<CursorPos X="35" Y="456"/>
|
||||||
<TopLine Value="446"/>
|
<TopLine Value="446"/>
|
||||||
<UsageCount Value="2"/>
|
<UsageCount Value="1"/>
|
||||||
</Unit38>
|
</Unit38>
|
||||||
<Unit39>
|
<Unit39>
|
||||||
<Filename Value="..\tcp_server\calculator\srv\calculator.lrs"/>
|
<Filename Value="..\tcp_server\calculator\srv\calculator.lrs"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit39>
|
</Unit39>
|
||||||
<Unit40>
|
<Unit40>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\fcl\xml\xmlwrite.pp"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\fcl\xml\xmlwrite.pp"/>
|
||||||
<UnitName Value="XMLWrite"/>
|
<UnitName Value="XMLWrite"/>
|
||||||
<CursorPos X="11" Y="28"/>
|
<CursorPos X="11" Y="28"/>
|
||||||
<TopLine Value="16"/>
|
<TopLine Value="16"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="8"/>
|
||||||
</Unit40>
|
</Unit40>
|
||||||
<Unit41>
|
<Unit41>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\classesh.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\classesh.inc"/>
|
||||||
<CursorPos X="52" Y="298"/>
|
<CursorPos X="52" Y="298"/>
|
||||||
<TopLine Value="278"/>
|
<TopLine Value="278"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit41>
|
</Unit41>
|
||||||
<Unit42>
|
<Unit42>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\stringl.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\stringl.inc"/>
|
||||||
<CursorPos X="19" Y="636"/>
|
<CursorPos X="19" Y="636"/>
|
||||||
<TopLine Value="634"/>
|
<TopLine Value="634"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit42>
|
</Unit42>
|
||||||
<Unit43>
|
<Unit43>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstrh.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||||
<CursorPos X="10" Y="80"/>
|
<CursorPos X="10" Y="80"/>
|
||||||
<TopLine Value="69"/>
|
<TopLine Value="69"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit43>
|
</Unit43>
|
||||||
<Unit44>
|
<Unit44>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstr.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstr.inc"/>
|
||||||
<CursorPos X="37" Y="453"/>
|
<CursorPos X="37" Y="453"/>
|
||||||
<TopLine Value="451"/>
|
<TopLine Value="451"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit44>
|
</Unit44>
|
||||||
<Unit45>
|
<Unit45>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\lists.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\lists.inc"/>
|
||||||
<CursorPos X="3" Y="370"/>
|
<CursorPos X="3" Y="370"/>
|
||||||
<TopLine Value="368"/>
|
<TopLine Value="368"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit45>
|
</Unit45>
|
||||||
<Unit46>
|
<Unit46>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\objpas.pp"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\objpas.pp"/>
|
||||||
<UnitName Value="objpas"/>
|
<UnitName Value="objpas"/>
|
||||||
<CursorPos X="8" Y="26"/>
|
<CursorPos X="8" Y="26"/>
|
||||||
<TopLine Value="14"/>
|
<TopLine Value="14"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit46>
|
</Unit46>
|
||||||
<Unit47>
|
<Unit47>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\typinfo.pp"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\typinfo.pp"/>
|
||||||
<UnitName Value="typinfo"/>
|
<UnitName Value="typinfo"/>
|
||||||
<CursorPos X="3" Y="741"/>
|
<CursorPos X="3" Y="741"/>
|
||||||
<TopLine Value="705"/>
|
<TopLine Value="705"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit47>
|
</Unit47>
|
||||||
<Unit48>
|
<Unit48>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\wstringh.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\wstringh.inc"/>
|
||||||
<CursorPos X="5" Y="67"/>
|
<CursorPos X="5" Y="67"/>
|
||||||
<TopLine Value="42"/>
|
<TopLine Value="42"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit48>
|
</Unit48>
|
||||||
<Unit49>
|
<Unit49>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\wstrings.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\wstrings.inc"/>
|
||||||
<CursorPos X="3" Y="825"/>
|
<CursorPos X="3" Y="825"/>
|
||||||
<TopLine Value="820"/>
|
<TopLine Value="820"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit49>
|
</Unit49>
|
||||||
<Unit50>
|
<Unit50>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\win32\classes.pp"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\win32\classes.pp"/>
|
||||||
<UnitName Value="Classes"/>
|
<UnitName Value="Classes"/>
|
||||||
<CursorPos X="38" Y="2"/>
|
<CursorPos X="38" Y="2"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="3"/>
|
<UsageCount Value="2"/>
|
||||||
</Unit50>
|
</Unit50>
|
||||||
<Unit51>
|
<Unit51>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\writer.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\writer.inc"/>
|
||||||
<CursorPos X="3" Y="585"/>
|
<CursorPos X="3" Y="585"/>
|
||||||
<TopLine Value="579"/>
|
<TopLine Value="579"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit51>
|
</Unit51>
|
||||||
<Unit52>
|
<Unit52>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\compon.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\compon.inc"/>
|
||||||
<CursorPos X="25" Y="367"/>
|
<CursorPos X="25" Y="367"/>
|
||||||
<TopLine Value="364"/>
|
<TopLine Value="364"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit52>
|
</Unit52>
|
||||||
<Unit53>
|
<Unit53>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\fcl\xml\dom.pp"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\fcl\xml\dom.pp"/>
|
||||||
<UnitName Value="DOM"/>
|
<UnitName Value="DOM"/>
|
||||||
<CursorPos X="15" Y="269"/>
|
<CursorPos X="15" Y="269"/>
|
||||||
<TopLine Value="258"/>
|
<TopLine Value="258"/>
|
||||||
<UsageCount Value="2"/>
|
<UsageCount Value="1"/>
|
||||||
</Unit53>
|
</Unit53>
|
||||||
<Unit54>
|
<Unit54>
|
||||||
<Filename Value="..\..\metadata_service.pas"/>
|
<Filename Value="..\..\metadata_service.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="metadata_service"/>
|
<UnitName Value="metadata_service"/>
|
||||||
<CursorPos X="25" Y="147"/>
|
<CursorPos X="81" Y="121"/>
|
||||||
<TopLine Value="145"/>
|
<TopLine Value="212"/>
|
||||||
<UsageCount Value="187"/>
|
<UsageCount Value="197"/>
|
||||||
</Unit54>
|
</Unit54>
|
||||||
<Unit55>
|
<Unit55>
|
||||||
<Filename Value="..\..\metadata_service_imp.pas"/>
|
<Filename Value="..\..\metadata_service_imp.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="metadata_service_imp"/>
|
<UnitName Value="metadata_service_imp"/>
|
||||||
<CursorPos X="63" Y="107"/>
|
<CursorPos X="13" Y="8"/>
|
||||||
<TopLine Value="86"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="186"/>
|
<EditorIndex Value="3"/>
|
||||||
|
<UsageCount Value="196"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit55>
|
</Unit55>
|
||||||
<Unit56>
|
<Unit56>
|
||||||
<Filename Value="..\..\metadata_service_binder.pas"/>
|
<Filename Value="..\..\metadata_service_binder.pas"/>
|
||||||
@ -438,98 +450,98 @@
|
|||||||
<UnitName Value="metadata_service_binder"/>
|
<UnitName Value="metadata_service_binder"/>
|
||||||
<CursorPos X="1" Y="53"/>
|
<CursorPos X="1" Y="53"/>
|
||||||
<TopLine Value="46"/>
|
<TopLine Value="46"/>
|
||||||
<EditorIndex Value="1"/>
|
<UsageCount Value="196"/>
|
||||||
<UsageCount Value="186"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit56>
|
</Unit56>
|
||||||
<Unit57>
|
<Unit57>
|
||||||
<Filename Value="..\..\metadata_service.lrs"/>
|
<Filename Value="..\..\metadata_service.lrs"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="4"/>
|
<UsageCount Value="3"/>
|
||||||
</Unit57>
|
</Unit57>
|
||||||
<Unit58>
|
<Unit58>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\persist.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\classes\persist.inc"/>
|
||||||
<CursorPos X="3" Y="37"/>
|
<CursorPos X="3" Y="37"/>
|
||||||
<TopLine Value="117"/>
|
<TopLine Value="117"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit58>
|
</Unit58>
|
||||||
<Unit59>
|
<Unit59>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\rtlconsts.pp"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\rtlconsts.pp"/>
|
||||||
<UnitName Value="RtlConsts"/>
|
<UnitName Value="RtlConsts"/>
|
||||||
<CursorPos X="7" Y="1"/>
|
<CursorPos X="7" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit59>
|
</Unit59>
|
||||||
<Unit60>
|
<Unit60>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\rtlconst.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\rtlconst.inc"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit60>
|
</Unit60>
|
||||||
<Unit61>
|
<Unit61>
|
||||||
<Filename Value="..\calculator\srv\calculator_imp.pas"/>
|
<Filename Value="..\calculator\srv\calculator_imp.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="calculator_imp"/>
|
<UnitName Value="calculator_imp"/>
|
||||||
<CursorPos X="40" Y="135"/>
|
<CursorPos X="74" Y="12"/>
|
||||||
<TopLine Value="111"/>
|
<TopLine Value="115"/>
|
||||||
<EditorIndex Value="0"/>
|
<UsageCount Value="133"/>
|
||||||
<UsageCount Value="123"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit61>
|
</Unit61>
|
||||||
<Unit62>
|
<Unit62>
|
||||||
<Filename Value="..\calculator\srv\calculator_binder.pas"/>
|
<Filename Value="..\calculator\srv\calculator_binder.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="calculator_binder"/>
|
<UnitName Value="calculator_binder"/>
|
||||||
<CursorPos X="13" Y="31"/>
|
<CursorPos X="16" Y="205"/>
|
||||||
<TopLine Value="17"/>
|
<TopLine Value="165"/>
|
||||||
<UsageCount Value="123"/>
|
<EditorIndex Value="12"/>
|
||||||
|
<UsageCount Value="133"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit62>
|
</Unit62>
|
||||||
<Unit63>
|
<Unit63>
|
||||||
<Filename Value="..\calculator\calculator.pas"/>
|
<Filename Value="..\calculator\calculator.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="calculator"/>
|
<UnitName Value="calculator"/>
|
||||||
<CursorPos X="31" Y="98"/>
|
<CursorPos X="44" Y="19"/>
|
||||||
<TopLine Value="51"/>
|
<TopLine Value="79"/>
|
||||||
<UsageCount Value="123"/>
|
<EditorIndex Value="11"/>
|
||||||
|
<UsageCount Value="133"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit63>
|
</Unit63>
|
||||||
<Unit64>
|
<Unit64>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\heaph.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\heaph.inc"/>
|
||||||
<CursorPos X="10" Y="96"/>
|
<CursorPos X="10" Y="96"/>
|
||||||
<TopLine Value="83"/>
|
<TopLine Value="83"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit64>
|
</Unit64>
|
||||||
<Unit65>
|
<Unit65>
|
||||||
<Filename Value="..\..\imp_utils.pas"/>
|
<Filename Value="..\..\imp_utils.pas"/>
|
||||||
<UnitName Value="imp_utils"/>
|
<UnitName Value="imp_utils"/>
|
||||||
<CursorPos X="1" Y="55"/>
|
<CursorPos X="1" Y="55"/>
|
||||||
<TopLine Value="43"/>
|
<TopLine Value="43"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit65>
|
</Unit65>
|
||||||
<Unit66>
|
<Unit66>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\sysutils\intfh.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\sysutils\intfh.inc"/>
|
||||||
<CursorPos X="10" Y="27"/>
|
<CursorPos X="10" Y="27"/>
|
||||||
<TopLine Value="9"/>
|
<TopLine Value="9"/>
|
||||||
<UsageCount Value="4"/>
|
<UsageCount Value="3"/>
|
||||||
</Unit66>
|
</Unit66>
|
||||||
<Unit67>
|
<Unit67>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\win\sysutils.pp"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\win\sysutils.pp"/>
|
||||||
<UnitName Value="sysutils"/>
|
<UnitName Value="sysutils"/>
|
||||||
<CursorPos X="8" Y="33"/>
|
<CursorPos X="8" Y="33"/>
|
||||||
<TopLine Value="34"/>
|
<TopLine Value="34"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit67>
|
</Unit67>
|
||||||
<Unit68>
|
<Unit68>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\sysutils\sysutilh.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\sysutils\sysutilh.inc"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="214"/>
|
<TopLine Value="214"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit68>
|
</Unit68>
|
||||||
<Unit69>
|
<Unit69>
|
||||||
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\classes\stringl.inc"/>
|
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\classes\stringl.inc"/>
|
||||||
<CursorPos X="3" Y="1063"/>
|
<CursorPos X="3" Y="1063"/>
|
||||||
<TopLine Value="1060"/>
|
<TopLine Value="1060"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit69>
|
</Unit69>
|
||||||
<Unit70>
|
<Unit70>
|
||||||
<Filename Value="..\calculator\srv\logger_extension.pas"/>
|
<Filename Value="..\calculator\srv\logger_extension.pas"/>
|
||||||
@ -537,80 +549,118 @@
|
|||||||
<UnitName Value="logger_extension"/>
|
<UnitName Value="logger_extension"/>
|
||||||
<CursorPos X="32" Y="11"/>
|
<CursorPos X="32" Y="11"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="36"/>
|
<UsageCount Value="46"/>
|
||||||
</Unit70>
|
</Unit70>
|
||||||
<Unit71>
|
<Unit71>
|
||||||
<Filename Value="..\..\soap_formatter.pas"/>
|
<Filename Value="..\..\soap_formatter.pas"/>
|
||||||
<UnitName Value="soap_formatter"/>
|
<UnitName Value="soap_formatter"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="13"/>
|
<UsageCount Value="12"/>
|
||||||
</Unit71>
|
</Unit71>
|
||||||
<Unit72>
|
<Unit72>
|
||||||
<Filename Value="..\..\service_intf.pas"/>
|
<Filename Value="..\..\service_intf.pas"/>
|
||||||
<UnitName Value="service_intf"/>
|
<UnitName Value="service_intf"/>
|
||||||
<CursorPos X="58" Y="47"/>
|
<CursorPos X="58" Y="47"/>
|
||||||
<TopLine Value="34"/>
|
<TopLine Value="34"/>
|
||||||
<UsageCount Value="13"/>
|
<UsageCount Value="12"/>
|
||||||
</Unit72>
|
</Unit72>
|
||||||
|
<Unit73>
|
||||||
|
<Filename Value="user_service_intf_binder.pas"/>
|
||||||
|
<UnitName Value="user_service_intf_binder"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="7"/>
|
||||||
|
<UsageCount Value="15"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit73>
|
||||||
|
<Unit74>
|
||||||
|
<Filename Value="user_service_intf_imp.pas"/>
|
||||||
|
<UnitName Value="user_service_intf_imp"/>
|
||||||
|
<CursorPos X="3" Y="56"/>
|
||||||
|
<TopLine Value="54"/>
|
||||||
|
<EditorIndex Value="6"/>
|
||||||
|
<UsageCount Value="15"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit74>
|
||||||
|
<Unit75>
|
||||||
|
<Filename Value="user_service_intf.wst"/>
|
||||||
|
<CursorPos X="56" Y="4"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
<SyntaxHighlighter Value="None"/>
|
||||||
|
</Unit75>
|
||||||
|
<Unit76>
|
||||||
|
<Filename Value="user_service_intf.pas"/>
|
||||||
|
<UnitName Value="user_service_intf"/>
|
||||||
|
<CursorPos X="21" Y="43"/>
|
||||||
|
<TopLine Value="33"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="15"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit76>
|
||||||
|
<Unit77>
|
||||||
|
<Filename Value="..\calculator\srv\calculator.wst"/>
|
||||||
|
<CursorPos X="35" Y="6"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
<SyntaxHighlighter Value="None"/>
|
||||||
|
</Unit77>
|
||||||
|
<Unit78>
|
||||||
|
<Filename Value="..\..\wst_resources_imp.pas"/>
|
||||||
|
<UnitName Value="wst_resources_imp"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit78>
|
||||||
|
<Unit79>
|
||||||
|
<Filename Value="..\..\wst.inc"/>
|
||||||
|
<CursorPos X="21" Y="6"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit79>
|
||||||
|
<Unit80>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\classesh.inc"/>
|
||||||
|
<CursorPos X="14" Y="408"/>
|
||||||
|
<TopLine Value="396"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit80>
|
||||||
|
<Unit81>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||||
|
<CursorPos X="10" Y="77"/>
|
||||||
|
<TopLine Value="65"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
</Unit81>
|
||||||
|
<Unit82>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysstr.inc"/>
|
||||||
|
<CursorPos X="3" Y="185"/>
|
||||||
|
<TopLine Value="189"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit82>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="14" HistoryIndex="13">
|
<JumpHistory Count="5" HistoryIndex="4">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="app_object.pas"/>
|
<Filename Value="..\..\metadata_wsdl.pas"/>
|
||||||
<Caret Line="238" Column="26" TopLine="224"/>
|
<Caret Line="369" Column="44" TopLine="358"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="app_object.pas"/>
|
<Filename Value="user_service_intf_imp.pas"/>
|
||||||
<Caret Line="239" Column="1" TopLine="225"/>
|
<Caret Line="70" Column="1" TopLine="29"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="app_object.pas"/>
|
<Filename Value="user_service_intf_imp.pas"/>
|
||||||
<Caret Line="240" Column="1" TopLine="226"/>
|
<Caret Line="23" Column="15" TopLine="12"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="app_object.pas"/>
|
<Filename Value="user_service_intf_imp.pas"/>
|
||||||
<Caret Line="241" Column="1" TopLine="227"/>
|
<Caret Line="21" Column="3" TopLine="17"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="app_object.pas"/>
|
<Filename Value="wst_http_server.pas"/>
|
||||||
<Caret Line="242" Column="1" TopLine="228"/>
|
<Caret Line="22" Column="24" TopLine="1"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="243" Column="1" TopLine="229"/>
|
|
||||||
</Position6>
|
|
||||||
<Position7>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="245" Column="1" TopLine="240"/>
|
|
||||||
</Position7>
|
|
||||||
<Position8>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="246" Column="1" TopLine="232"/>
|
|
||||||
</Position8>
|
|
||||||
<Position9>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="247" Column="36" TopLine="243"/>
|
|
||||||
</Position9>
|
|
||||||
<Position10>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position10>
|
|
||||||
<Position11>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="71" Column="20" TopLine="57"/>
|
|
||||||
</Position11>
|
|
||||||
<Position12>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="247" Column="1" TopLine="233"/>
|
|
||||||
</Position12>
|
|
||||||
<Position13>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="248" Column="1" TopLine="234"/>
|
|
||||||
</Position13>
|
|
||||||
<Position14>
|
|
||||||
<Filename Value="app_object.pas"/>
|
|
||||||
<Caret Line="238" Column="1" TopLine="224"/>
|
|
||||||
</Position14>
|
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
@ -638,7 +688,7 @@
|
|||||||
</Other>
|
</Other>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
<Debugging>
|
<Debugging>
|
||||||
<BreakPoints Count="5">
|
<BreakPoints Count="4">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Source Value="..\..\metadata_wsdl.pas"/>
|
<Source Value="..\..\metadata_wsdl.pas"/>
|
||||||
<Line Value="459"/>
|
<Line Value="459"/>
|
||||||
@ -652,13 +702,9 @@
|
|||||||
<Line Value="431"/>
|
<Line Value="431"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
<Item4>
|
<Item4>
|
||||||
<Source Value="..\..\metadata_wsdl.pas"/>
|
|
||||||
<Line Value="181"/>
|
|
||||||
</Item4>
|
|
||||||
<Item5>
|
|
||||||
<Source Value="..\..\server_service_intf.pas"/>
|
<Source Value="..\..\server_service_intf.pas"/>
|
||||||
<Line Value="630"/>
|
<Line Value="630"/>
|
||||||
</Item5>
|
</Item4>
|
||||||
</BreakPoints>
|
</BreakPoints>
|
||||||
<Exceptions Count="2">
|
<Exceptions Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=".exe"/>
|
<TargetFileExt Value=".exe"/>
|
||||||
<ActiveEditorIndexAtStart Value="3"/>
|
<ActiveEditorIndexAtStart Value="8"/>
|
||||||
</General>
|
</General>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
@ -26,15 +26,15 @@
|
|||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="41">
|
<Units Count="42">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="tcp_gui_server.lpr"/>
|
<Filename Value="tcp_gui_server.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="tcp_gui_server"/>
|
<UnitName Value="tcp_gui_server"/>
|
||||||
<CursorPos X="1" Y="16"/>
|
<CursorPos X="1" Y="16"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="9"/>
|
<EditorIndex Value="10"/>
|
||||||
<UsageCount Value="131"/>
|
<UsageCount Value="132"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
@ -46,17 +46,17 @@
|
|||||||
<CursorPos X="51" Y="90"/>
|
<CursorPos X="51" Y="90"/>
|
||||||
<TopLine Value="73"/>
|
<TopLine Value="73"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="131"/>
|
<UsageCount Value="132"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
<Unit2>
|
<Unit2>
|
||||||
<Filename Value="server_unit.pas"/>
|
<Filename Value="server_unit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="server_unit"/>
|
<UnitName Value="server_unit"/>
|
||||||
<CursorPos X="48" Y="14"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="243"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="5"/>
|
<EditorIndex Value="6"/>
|
||||||
<UsageCount Value="131"/>
|
<UsageCount Value="132"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
<Unit3>
|
<Unit3>
|
||||||
@ -233,19 +233,19 @@
|
|||||||
<Unit28>
|
<Unit28>
|
||||||
<Filename Value="..\..\server_service_intf.pas"/>
|
<Filename Value="..\..\server_service_intf.pas"/>
|
||||||
<UnitName Value="server_service_intf"/>
|
<UnitName Value="server_service_intf"/>
|
||||||
<CursorPos X="1" Y="202"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="195"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="6"/>
|
<EditorIndex Value="7"/>
|
||||||
<UsageCount Value="46"/>
|
<UsageCount Value="47"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit28>
|
</Unit28>
|
||||||
<Unit29>
|
<Unit29>
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
<UnitName Value="base_service_intf"/>
|
<UnitName Value="base_service_intf"/>
|
||||||
<CursorPos X="46" Y="224"/>
|
<CursorPos X="13" Y="965"/>
|
||||||
<TopLine Value="235"/>
|
<TopLine Value="963"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="4"/>
|
||||||
<UsageCount Value="40"/>
|
<UsageCount Value="41"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit29>
|
</Unit29>
|
||||||
<Unit30>
|
<Unit30>
|
||||||
@ -293,10 +293,10 @@
|
|||||||
<Filename Value="..\calculator\calculator.pas"/>
|
<Filename Value="..\calculator\calculator.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="calculator"/>
|
<UnitName Value="calculator"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="9" Y="10"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="24"/>
|
<UsageCount Value="25"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit35>
|
</Unit35>
|
||||||
<Unit36>
|
<Unit36>
|
||||||
@ -305,8 +305,8 @@
|
|||||||
<UnitName Value="calculator_imp"/>
|
<UnitName Value="calculator_imp"/>
|
||||||
<CursorPos X="48" Y="117"/>
|
<CursorPos X="48" Y="117"/>
|
||||||
<TopLine Value="110"/>
|
<TopLine Value="110"/>
|
||||||
<EditorIndex Value="8"/>
|
<EditorIndex Value="9"/>
|
||||||
<UsageCount Value="24"/>
|
<UsageCount Value="25"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit36>
|
</Unit36>
|
||||||
<Unit37>
|
<Unit37>
|
||||||
@ -315,7 +315,7 @@
|
|||||||
<UnitName Value="calculator_binder"/>
|
<UnitName Value="calculator_binder"/>
|
||||||
<CursorPos X="80" Y="174"/>
|
<CursorPos X="80" Y="174"/>
|
||||||
<TopLine Value="170"/>
|
<TopLine Value="170"/>
|
||||||
<UsageCount Value="24"/>
|
<UsageCount Value="25"/>
|
||||||
</Unit37>
|
</Unit37>
|
||||||
<Unit38>
|
<Unit38>
|
||||||
<Filename Value="..\..\metadata_service.pas"/>
|
<Filename Value="..\..\metadata_service.pas"/>
|
||||||
@ -323,7 +323,7 @@
|
|||||||
<CursorPos X="36" Y="89"/>
|
<CursorPos X="36" Y="89"/>
|
||||||
<TopLine Value="114"/>
|
<TopLine Value="114"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="3"/>
|
||||||
<UsageCount Value="12"/>
|
<UsageCount Value="13"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit38>
|
</Unit38>
|
||||||
<Unit39>
|
<Unit39>
|
||||||
@ -332,71 +332,52 @@
|
|||||||
<CursorPos X="62" Y="17"/>
|
<CursorPos X="62" Y="17"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="2"/>
|
||||||
<UsageCount Value="12"/>
|
<UsageCount Value="13"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit39>
|
</Unit39>
|
||||||
<Unit40>
|
<Unit40>
|
||||||
<Filename Value="..\..\metadata_service_binder.pas"/>
|
<Filename Value="..\..\metadata_service_binder.pas"/>
|
||||||
<UnitName Value="metadata_service_binder"/>
|
<UnitName Value="metadata_service_binder"/>
|
||||||
<CursorPos X="61" Y="29"/>
|
<CursorPos X="61" Y="29"/>
|
||||||
<TopLine Value="19"/>
|
<TopLine Value="10"/>
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="12"/>
|
<UsageCount Value="13"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit40>
|
</Unit40>
|
||||||
|
<Unit41>
|
||||||
|
<Filename Value="..\..\wst.inc"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit41>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="11" HistoryIndex="10">
|
<JumpHistory Count="4" HistoryIndex="3">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="umain.pas"/>
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
<Caret Line="42" Column="60" TopLine="37"/>
|
<Caret Line="1952" Column="32" TopLine="1939"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="tcp_gui_server.lpr"/>
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
<Caret Line="3" Column="25" TopLine="1"/>
|
<Caret Line="1954" Column="8" TopLine="1939"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="..\..\metadata_service.pas"/>
|
<Filename Value="..\calculator\calculator.pas"/>
|
||||||
<Caret Line="252" Column="23" TopLine="227"/>
|
<Caret Line="1" Column="1" TopLine="1"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="..\..\metadata_service.pas"/>
|
<Filename Value="..\calculator\calculator.pas"/>
|
||||||
<Caret Line="159" Column="23" TopLine="134"/>
|
<Caret Line="3" Column="2" TopLine="1"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
|
||||||
<Filename Value="..\..\metadata_service.pas"/>
|
|
||||||
<Caret Line="252" Column="23" TopLine="227"/>
|
|
||||||
</Position5>
|
|
||||||
<Position6>
|
|
||||||
<Filename Value="umain.pas"/>
|
|
||||||
<Caret Line="43" Column="38" TopLine="43"/>
|
|
||||||
</Position6>
|
|
||||||
<Position7>
|
|
||||||
<Filename Value="tcp_gui_server.lpr"/>
|
|
||||||
<Caret Line="16" Column="1" TopLine="1"/>
|
|
||||||
</Position7>
|
|
||||||
<Position8>
|
|
||||||
<Filename Value="..\..\metadata_service_imp.pas"/>
|
|
||||||
<Caret Line="17" Column="62" TopLine="1"/>
|
|
||||||
</Position8>
|
|
||||||
<Position9>
|
|
||||||
<Filename Value="umain.pas"/>
|
|
||||||
<Caret Line="43" Column="53" TopLine="24"/>
|
|
||||||
</Position9>
|
|
||||||
<Position10>
|
|
||||||
<Filename Value="umain.pas"/>
|
|
||||||
<Caret Line="31" Column="15" TopLine="24"/>
|
|
||||||
</Position10>
|
|
||||||
<Position11>
|
|
||||||
<Filename Value="..\..\metadata_service.pas"/>
|
|
||||||
<Caret Line="89" Column="36" TopLine="80"/>
|
|
||||||
</Position11>
|
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
<Version Value="5"/>
|
<Version Value="5"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
<OtherUnitFiles Value="c:\LazarusClean\others_package\ics\latest_distr\Delphi\Vc32\;..\calculator\;..\calculator\srv\;..\..\"/>
|
<OtherUnitFiles Value="c:\LazarusClean\others_package\ics\latest_distr\Delphi\Vc32\;..\calculator\;..\calculator\srv\;..\..\;..\"/>
|
||||||
<UnitOutputDirectory Value="obj"/>
|
<UnitOutputDirectory Value="obj"/>
|
||||||
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
|
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
|
||||||
</SearchPaths>
|
</SearchPaths>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=".exe"/>
|
<TargetFileExt Value=".exe"/>
|
||||||
<ActiveEditorIndexAtStart Value="0"/>
|
<ActiveEditorIndexAtStart Value="11"/>
|
||||||
</General>
|
</General>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
<PackageName Value="FPCUnitTestRunner"/>
|
<PackageName Value="FPCUnitTestRunner"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="38">
|
<Units Count="42">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="wst_test_suite.lpr"/>
|
<Filename Value="wst_test_suite.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
@ -40,9 +40,9 @@
|
|||||||
<Filename Value="testformatter_unit.pas"/>
|
<Filename Value="testformatter_unit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="testformatter_unit"/>
|
<UnitName Value="testformatter_unit"/>
|
||||||
<CursorPos X="30" Y="1693"/>
|
<CursorPos X="38" Y="1359"/>
|
||||||
<TopLine Value="1662"/>
|
<TopLine Value="1348"/>
|
||||||
<EditorIndex Value="8"/>
|
<EditorIndex Value="11"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
@ -50,9 +50,9 @@
|
|||||||
<Filename Value="..\..\server_service_soap.pas"/>
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="server_service_soap"/>
|
<UnitName Value="server_service_soap"/>
|
||||||
<CursorPos X="34" Y="126"/>
|
<CursorPos X="38" Y="29"/>
|
||||||
<TopLine Value="109"/>
|
<TopLine Value="18"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="7"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
@ -62,7 +62,7 @@
|
|||||||
<UnitName Value="soap_formatter"/>
|
<UnitName Value="soap_formatter"/>
|
||||||
<CursorPos X="34" Y="145"/>
|
<CursorPos X="34" Y="145"/>
|
||||||
<TopLine Value="125"/>
|
<TopLine Value="125"/>
|
||||||
<EditorIndex Value="5"/>
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
@ -70,9 +70,9 @@
|
|||||||
<Filename Value="..\..\base_binary_formatter.pas"/>
|
<Filename Value="..\..\base_binary_formatter.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="base_binary_formatter"/>
|
<UnitName Value="base_binary_formatter"/>
|
||||||
<CursorPos X="14" Y="279"/>
|
<CursorPos X="26" Y="1573"/>
|
||||||
<TopLine Value="268"/>
|
<TopLine Value="1562"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="4"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit4>
|
</Unit4>
|
||||||
@ -81,7 +81,7 @@
|
|||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="base_service_intf"/>
|
<UnitName Value="base_service_intf"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="28"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Bookmarks Count="2">
|
<Bookmarks Count="2">
|
||||||
@ -94,9 +94,9 @@
|
|||||||
<Filename Value="..\..\base_soap_formatter.pas"/>
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="base_soap_formatter"/>
|
<UnitName Value="base_soap_formatter"/>
|
||||||
<CursorPos X="14" Y="87"/>
|
<CursorPos X="15" Y="441"/>
|
||||||
<TopLine Value="73"/>
|
<TopLine Value="430"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="6"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit6>
|
</Unit6>
|
||||||
@ -104,9 +104,9 @@
|
|||||||
<Filename Value="..\..\binary_formatter.pas"/>
|
<Filename Value="..\..\binary_formatter.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="binary_formatter"/>
|
<UnitName Value="binary_formatter"/>
|
||||||
<CursorPos X="22" Y="132"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="118"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="6"/>
|
<EditorIndex Value="9"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit7>
|
</Unit7>
|
||||||
@ -124,7 +124,7 @@
|
|||||||
<UnitName Value="server_binary_formatter"/>
|
<UnitName Value="server_binary_formatter"/>
|
||||||
<CursorPos X="22" Y="100"/>
|
<CursorPos X="22" Y="100"/>
|
||||||
<TopLine Value="86"/>
|
<TopLine Value="86"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="10"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit9>
|
</Unit9>
|
||||||
@ -141,7 +141,7 @@
|
|||||||
<UnitName Value="typinfo"/>
|
<UnitName Value="typinfo"/>
|
||||||
<CursorPos X="15" Y="579"/>
|
<CursorPos X="15" Y="579"/>
|
||||||
<TopLine Value="565"/>
|
<TopLine Value="565"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit11>
|
</Unit11>
|
||||||
<Unit12>
|
<Unit12>
|
||||||
<Filename Value="testmetadata_unit.pas"/>
|
<Filename Value="testmetadata_unit.pas"/>
|
||||||
@ -175,9 +175,9 @@
|
|||||||
<Filename Value="..\..\metadata_wsdl.pas"/>
|
<Filename Value="..\..\metadata_wsdl.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="metadata_wsdl"/>
|
<UnitName Value="metadata_wsdl"/>
|
||||||
<CursorPos X="3" Y="764"/>
|
<CursorPos X="71" Y="293"/>
|
||||||
<TopLine Value="775"/>
|
<TopLine Value="280"/>
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="3"/>
|
||||||
<UsageCount Value="206"/>
|
<UsageCount Value="206"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit15>
|
</Unit15>
|
||||||
@ -186,13 +186,13 @@
|
|||||||
<UnitName Value="DOM"/>
|
<UnitName Value="DOM"/>
|
||||||
<CursorPos X="15" Y="429"/>
|
<CursorPos X="15" Y="429"/>
|
||||||
<TopLine Value="413"/>
|
<TopLine Value="413"/>
|
||||||
<UsageCount Value="4"/>
|
<UsageCount Value="3"/>
|
||||||
</Unit16>
|
</Unit16>
|
||||||
<Unit17>
|
<Unit17>
|
||||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysutilh.inc"/>
|
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysutilh.inc"/>
|
||||||
<CursorPos X="13" Y="235"/>
|
<CursorPos X="13" Y="235"/>
|
||||||
<TopLine Value="215"/>
|
<TopLine Value="215"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit17>
|
</Unit17>
|
||||||
<Unit18>
|
<Unit18>
|
||||||
<Filename Value="..\..\server_service_intf.pas"/>
|
<Filename Value="..\..\server_service_intf.pas"/>
|
||||||
@ -200,45 +200,45 @@
|
|||||||
<UnitName Value="server_service_intf"/>
|
<UnitName Value="server_service_intf"/>
|
||||||
<CursorPos X="35" Y="379"/>
|
<CursorPos X="35" Y="379"/>
|
||||||
<TopLine Value="397"/>
|
<TopLine Value="397"/>
|
||||||
<UsageCount Value="153"/>
|
<UsageCount Value="162"/>
|
||||||
</Unit18>
|
</Unit18>
|
||||||
<Unit19>
|
<Unit19>
|
||||||
<Filename Value="..\..\service_intf.pas"/>
|
<Filename Value="..\..\service_intf.pas"/>
|
||||||
<UnitName Value="service_intf"/>
|
<UnitName Value="service_intf"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="23"/>
|
<TopLine Value="23"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="8"/>
|
||||||
</Unit19>
|
</Unit19>
|
||||||
<Unit20>
|
<Unit20>
|
||||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
|
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
|
||||||
<CursorPos X="3" Y="316"/>
|
<CursorPos X="3" Y="316"/>
|
||||||
<TopLine Value="304"/>
|
<TopLine Value="304"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit20>
|
</Unit20>
|
||||||
<Unit21>
|
<Unit21>
|
||||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
|
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
|
||||||
<CursorPos X="3" Y="407"/>
|
<CursorPos X="3" Y="407"/>
|
||||||
<TopLine Value="404"/>
|
<TopLine Value="404"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit21>
|
</Unit21>
|
||||||
<Unit22>
|
<Unit22>
|
||||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
|
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
|
||||||
<UnitName Value="contnrs"/>
|
<UnitName Value="contnrs"/>
|
||||||
<CursorPos X="3" Y="474"/>
|
<CursorPos X="3" Y="474"/>
|
||||||
<TopLine Value="471"/>
|
<TopLine Value="471"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit22>
|
</Unit22>
|
||||||
<Unit23>
|
<Unit23>
|
||||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
|
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
|
||||||
<CursorPos X="27" Y="121"/>
|
<CursorPos X="27" Y="121"/>
|
||||||
<TopLine Value="104"/>
|
<TopLine Value="104"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit23>
|
</Unit23>
|
||||||
<Unit24>
|
<Unit24>
|
||||||
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpas.inc"/>
|
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpas.inc"/>
|
||||||
<CursorPos X="9" Y="166"/>
|
<CursorPos X="9" Y="166"/>
|
||||||
<TopLine Value="142"/>
|
<TopLine Value="142"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit24>
|
</Unit24>
|
||||||
<Unit25>
|
<Unit25>
|
||||||
<Filename Value="D:\Lazarus\components\fpcunit\guitestrunner.pas"/>
|
<Filename Value="D:\Lazarus\components\fpcunit\guitestrunner.pas"/>
|
||||||
@ -247,60 +247,60 @@
|
|||||||
<UnitName Value="GuiTestRunner"/>
|
<UnitName Value="GuiTestRunner"/>
|
||||||
<CursorPos X="34" Y="32"/>
|
<CursorPos X="34" Y="32"/>
|
||||||
<TopLine Value="25"/>
|
<TopLine Value="25"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit25>
|
</Unit25>
|
||||||
<Unit26>
|
<Unit26>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\fpcunit.pp"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\fpcunit.pp"/>
|
||||||
<UnitName Value="fpcunit"/>
|
<UnitName Value="fpcunit"/>
|
||||||
<CursorPos X="21" Y="94"/>
|
<CursorPos X="21" Y="94"/>
|
||||||
<TopLine Value="83"/>
|
<TopLine Value="83"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit26>
|
</Unit26>
|
||||||
<Unit27>
|
<Unit27>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\DUnitCompatibleInterface.inc"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\DUnitCompatibleInterface.inc"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="4"/>
|
<TopLine Value="4"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit27>
|
</Unit27>
|
||||||
<Unit28>
|
<Unit28>
|
||||||
<Filename Value="..\..\imp_utils.pas"/>
|
<Filename Value="..\..\imp_utils.pas"/>
|
||||||
<UnitName Value="imp_utils"/>
|
<UnitName Value="imp_utils"/>
|
||||||
<CursorPos X="15" Y="36"/>
|
<CursorPos X="15" Y="36"/>
|
||||||
<TopLine Value="22"/>
|
<TopLine Value="22"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit28>
|
</Unit28>
|
||||||
<Unit29>
|
<Unit29>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
|
||||||
<UnitName Value="DOM"/>
|
<UnitName Value="DOM"/>
|
||||||
<CursorPos X="3" Y="51"/>
|
<CursorPos X="3" Y="51"/>
|
||||||
<TopLine Value="41"/>
|
<TopLine Value="41"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="9"/>
|
||||||
</Unit29>
|
</Unit29>
|
||||||
<Unit30>
|
<Unit30>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\typinfo.pp"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\typinfo.pp"/>
|
||||||
<UnitName Value="typinfo"/>
|
<UnitName Value="typinfo"/>
|
||||||
<CursorPos X="33" Y="192"/>
|
<CursorPos X="33" Y="192"/>
|
||||||
<TopLine Value="186"/>
|
<TopLine Value="186"/>
|
||||||
<UsageCount Value="3"/>
|
<UsageCount Value="2"/>
|
||||||
</Unit30>
|
</Unit30>
|
||||||
<Unit31>
|
<Unit31>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\xmlread.pp"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\xmlread.pp"/>
|
||||||
<UnitName Value="XMLRead"/>
|
<UnitName Value="XMLRead"/>
|
||||||
<CursorPos X="43" Y="13"/>
|
<CursorPos X="43" Y="13"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="4"/>
|
<UsageCount Value="3"/>
|
||||||
</Unit31>
|
</Unit31>
|
||||||
<Unit32>
|
<Unit32>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\datih.inc"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\datih.inc"/>
|
||||||
<CursorPos X="10" Y="109"/>
|
<CursorPos X="10" Y="109"/>
|
||||||
<TopLine Value="107"/>
|
<TopLine Value="107"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit32>
|
</Unit32>
|
||||||
<Unit33>
|
<Unit33>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\dati.inc"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\dati.inc"/>
|
||||||
<CursorPos X="46" Y="130"/>
|
<CursorPos X="46" Y="130"/>
|
||||||
<TopLine Value="122"/>
|
<TopLine Value="122"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit33>
|
</Unit33>
|
||||||
<Unit34>
|
<Unit34>
|
||||||
<Filename Value="test_parserdef.pas"/>
|
<Filename Value="test_parserdef.pas"/>
|
||||||
@ -308,63 +308,62 @@
|
|||||||
<UnitName Value="test_parserdef"/>
|
<UnitName Value="test_parserdef"/>
|
||||||
<CursorPos X="93" Y="76"/>
|
<CursorPos X="93" Y="76"/>
|
||||||
<TopLine Value="11"/>
|
<TopLine Value="11"/>
|
||||||
<UsageCount Value="73"/>
|
<UsageCount Value="82"/>
|
||||||
</Unit34>
|
</Unit34>
|
||||||
<Unit35>
|
<Unit35>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\testutils.pp"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\testutils.pp"/>
|
||||||
<UnitName Value="testutils"/>
|
<UnitName Value="testutils"/>
|
||||||
<CursorPos X="34" Y="25"/>
|
<CursorPos X="34" Y="25"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit35>
|
</Unit35>
|
||||||
<Unit36>
|
<Unit36>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\testregistry.pp"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\testregistry.pp"/>
|
||||||
<UnitName Value="testregistry"/>
|
<UnitName Value="testregistry"/>
|
||||||
<CursorPos X="18" Y="17"/>
|
<CursorPos X="18" Y="17"/>
|
||||||
<TopLine Value="16"/>
|
<TopLine Value="16"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit36>
|
</Unit36>
|
||||||
<Unit37>
|
<Unit37>
|
||||||
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
|
||||||
<CursorPos X="26" Y="134"/>
|
<CursorPos X="8" Y="190"/>
|
||||||
<TopLine Value="141"/>
|
<TopLine Value="133"/>
|
||||||
<UsageCount Value="8"/>
|
<EditorIndex Value="1"/>
|
||||||
|
<UsageCount Value="14"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit37>
|
</Unit37>
|
||||||
|
<Unit38>
|
||||||
|
<Filename Value="..\..\wst.inc"/>
|
||||||
|
<CursorPos X="21" Y="7"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<UsageCount Value="14"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit38>
|
||||||
|
<Unit39>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\objpas.pp"/>
|
||||||
|
<UnitName Value="objpas"/>
|
||||||
|
<CursorPos X="47" Y="64"/>
|
||||||
|
<TopLine Value="38"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit39>
|
||||||
|
<Unit40>
|
||||||
|
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\heaph.inc"/>
|
||||||
|
<CursorPos X="43" Y="100"/>
|
||||||
|
<TopLine Value="83"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="12"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit40>
|
||||||
|
<Unit41>
|
||||||
|
<Filename Value="..\test_fpc\interface_problem\interface_problem.pas"/>
|
||||||
|
<UnitName Value="interface_problem"/>
|
||||||
|
<CursorPos X="1" Y="10"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
</Unit41>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="8" HistoryIndex="7">
|
<JumpHistory Count="0" HistoryIndex="-1"/>
|
||||||
<Position1>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="119" Column="3" TopLine="132"/>
|
|
||||||
</Position1>
|
|
||||||
<Position2>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="825" Column="90" TopLine="817"/>
|
|
||||||
</Position2>
|
|
||||||
<Position3>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="3944" Column="90" TopLine="3937"/>
|
|
||||||
</Position3>
|
|
||||||
<Position4>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position4>
|
|
||||||
<Position5>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="1125" Column="66" TopLine="1112"/>
|
|
||||||
</Position5>
|
|
||||||
<Position6>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="36" Column="9" TopLine="25"/>
|
|
||||||
</Position6>
|
|
||||||
<Position7>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="1129" Column="37" TopLine="1115"/>
|
|
||||||
</Position7>
|
|
||||||
<Position8>
|
|
||||||
<Filename Value="..\..\base_service_intf.pas"/>
|
|
||||||
<Caret Line="1127" Column="72" TopLine="1113"/>
|
|
||||||
</Position8>
|
|
||||||
</JumpHistory>
|
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
<Version Value="5"/>
|
<Version Value="5"/>
|
||||||
@ -390,7 +389,8 @@
|
|||||||
</Debugging>
|
</Debugging>
|
||||||
</Linking>
|
</Linking>
|
||||||
<Other>
|
<Other>
|
||||||
<CustomOptions Value="-Xi"/>
|
<CustomOptions Value="-Xi
|
||||||
|
"/>
|
||||||
<CompilerPath Value="$(CompPath)"/>
|
<CompilerPath Value="$(CompPath)"/>
|
||||||
</Other>
|
</Other>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=""/>
|
<TargetFileExt Value=""/>
|
||||||
<ActiveEditorIndexAtStart Value="3"/>
|
<ActiveEditorIndexAtStart Value="8"/>
|
||||||
</General>
|
</General>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
@ -33,21 +33,23 @@
|
|||||||
<PackageName Value="FCL"/>
|
<PackageName Value="FCL"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="33">
|
<Units Count="35">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="ws_helper.pas"/>
|
<Filename Value="ws_helper.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="ws_helper"/>
|
<UnitName Value="ws_helper"/>
|
||||||
<CursorPos X="1" Y="122"/>
|
<CursorPos X="23" Y="104"/>
|
||||||
<TopLine Value="35"/>
|
<TopLine Value="86"/>
|
||||||
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="ws_parser.pas"/>
|
<Filename Value="ws_parser.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="ws_parser"/>
|
<UnitName Value="ws_parser"/>
|
||||||
<CursorPos X="1" Y="437"/>
|
<CursorPos X="15" Y="457"/>
|
||||||
<TopLine Value="417"/>
|
<TopLine Value="445"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="7"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
@ -71,8 +73,8 @@
|
|||||||
<Filename Value="parserdefs.pas"/>
|
<Filename Value="parserdefs.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="parserdefs"/>
|
<UnitName Value="parserdefs"/>
|
||||||
<CursorPos X="14" Y="225"/>
|
<CursorPos X="58" Y="452"/>
|
||||||
<TopLine Value="204"/>
|
<TopLine Value="431"/>
|
||||||
<EditorIndex Value="5"/>
|
<EditorIndex Value="5"/>
|
||||||
<UsageCount Value="200"/>
|
<UsageCount Value="200"/>
|
||||||
<Bookmarks Count="1">
|
<Bookmarks Count="1">
|
||||||
@ -94,7 +96,7 @@
|
|||||||
<Filename Value="ws_helper.lpi"/>
|
<Filename Value="ws_helper.lpi"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
<SyntaxHighlighter Value="None"/>
|
<SyntaxHighlighter Value="None"/>
|
||||||
</Unit5>
|
</Unit5>
|
||||||
<Unit6>
|
<Unit6>
|
||||||
@ -102,21 +104,21 @@
|
|||||||
<UnitName Value="Classes"/>
|
<UnitName Value="Classes"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit6>
|
</Unit6>
|
||||||
<Unit7>
|
<Unit7>
|
||||||
<Filename Value="usr\share\fpcsrc\rtl\objpas\strutils.pp"/>
|
<Filename Value="usr\share\fpcsrc\rtl\objpas\strutils.pp"/>
|
||||||
<UnitName Value="strutils"/>
|
<UnitName Value="strutils"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit7>
|
</Unit7>
|
||||||
<Unit8>
|
<Unit8>
|
||||||
<Filename Value="usr\share\fpcsrc\rtl\unix\sysutils.pp"/>
|
<Filename Value="usr\share\fpcsrc\rtl\unix\sysutils.pp"/>
|
||||||
<UnitName Value="sysutils"/>
|
<UnitName Value="sysutils"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="6"/>
|
<UsageCount Value="5"/>
|
||||||
</Unit8>
|
</Unit8>
|
||||||
<Unit9>
|
<Unit9>
|
||||||
<Filename Value="source_utils.pas"/>
|
<Filename Value="source_utils.pas"/>
|
||||||
@ -131,19 +133,19 @@
|
|||||||
<UnitName Value="strutils"/>
|
<UnitName Value="strutils"/>
|
||||||
<CursorPos X="23" Y="246"/>
|
<CursorPos X="23" Y="246"/>
|
||||||
<TopLine Value="246"/>
|
<TopLine Value="246"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit10>
|
</Unit10>
|
||||||
<Unit11>
|
<Unit11>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstrh.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||||
<CursorPos X="10" Y="74"/>
|
<CursorPos X="10" Y="74"/>
|
||||||
<TopLine Value="70"/>
|
<TopLine Value="70"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit11>
|
</Unit11>
|
||||||
<Unit12>
|
<Unit12>
|
||||||
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstr.inc"/>
|
<Filename Value="D:\lazarusClean\fpcsrc\rtl\objpas\sysutils\sysstr.inc"/>
|
||||||
<CursorPos X="3" Y="185"/>
|
<CursorPos X="3" Y="185"/>
|
||||||
<TopLine Value="180"/>
|
<TopLine Value="180"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit12>
|
</Unit12>
|
||||||
<Unit13>
|
<Unit13>
|
||||||
<Filename Value="command_line_parser.pas"/>
|
<Filename Value="command_line_parser.pas"/>
|
||||||
@ -182,7 +184,7 @@
|
|||||||
<UnitName Value="Classes"/>
|
<UnitName Value="Classes"/>
|
||||||
<CursorPos X="1" Y="47"/>
|
<CursorPos X="1" Y="47"/>
|
||||||
<TopLine Value="5"/>
|
<TopLine Value="5"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit17>
|
</Unit17>
|
||||||
<Unit18>
|
<Unit18>
|
||||||
<Filename Value="..\wsdl_to_pascal\wsdl2pas_imp.pas"/>
|
<Filename Value="..\wsdl_to_pascal\wsdl2pas_imp.pas"/>
|
||||||
@ -198,16 +200,16 @@
|
|||||||
<CursorPos X="1" Y="564"/>
|
<CursorPos X="1" Y="564"/>
|
||||||
<TopLine Value="543"/>
|
<TopLine Value="543"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="2"/>
|
||||||
<UsageCount Value="65"/>
|
<UsageCount Value="69"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit19>
|
</Unit19>
|
||||||
<Unit20>
|
<Unit20>
|
||||||
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
|
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
|
||||||
<UnitName Value="dom_cursors"/>
|
<UnitName Value="dom_cursors"/>
|
||||||
<CursorPos X="24" Y="71"/>
|
<CursorPos X="60" Y="14"/>
|
||||||
<TopLine Value="4"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="3"/>
|
||||||
<UsageCount Value="91"/>
|
<UsageCount Value="95"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit20>
|
</Unit20>
|
||||||
<Unit21>
|
<Unit21>
|
||||||
@ -216,28 +218,28 @@
|
|||||||
<CursorPos X="1" Y="113"/>
|
<CursorPos X="1" Y="113"/>
|
||||||
<TopLine Value="97"/>
|
<TopLine Value="97"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="4"/>
|
||||||
<UsageCount Value="93"/>
|
<UsageCount Value="97"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit21>
|
</Unit21>
|
||||||
<Unit22>
|
<Unit22>
|
||||||
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysstrh.inc"/>
|
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||||
<CursorPos X="10" Y="100"/>
|
<CursorPos X="10" Y="100"/>
|
||||||
<TopLine Value="86"/>
|
<TopLine Value="86"/>
|
||||||
<UsageCount Value="22"/>
|
<UsageCount Value="21"/>
|
||||||
</Unit22>
|
</Unit22>
|
||||||
<Unit23>
|
<Unit23>
|
||||||
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
|
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
|
||||||
<CursorPos X="14" Y="151"/>
|
<CursorPos X="14" Y="151"/>
|
||||||
<TopLine Value="137"/>
|
<TopLine Value="137"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit23>
|
</Unit23>
|
||||||
<Unit24>
|
<Unit24>
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
<Filename Value="wsdl2pas_imp.pas"/>
|
||||||
<UnitName Value="wsdl2pas_imp"/>
|
<UnitName Value="wsdl2pas_imp"/>
|
||||||
<CursorPos X="28" Y="639"/>
|
<CursorPos X="49" Y="1189"/>
|
||||||
<TopLine Value="635"/>
|
<TopLine Value="1180"/>
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="84"/>
|
<UsageCount Value="88"/>
|
||||||
<Bookmarks Count="2">
|
<Bookmarks Count="2">
|
||||||
<Item0 X="21" Y="732" ID="3"/>
|
<Item0 X="21" Y="732" ID="3"/>
|
||||||
<Item1 X="50" Y="633" ID="5"/>
|
<Item1 X="50" Y="633" ID="5"/>
|
||||||
@ -249,175 +251,77 @@
|
|||||||
<UnitName Value="getopts"/>
|
<UnitName Value="getopts"/>
|
||||||
<CursorPos X="1" Y="231"/>
|
<CursorPos X="1" Y="231"/>
|
||||||
<TopLine Value="218"/>
|
<TopLine Value="218"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="8"/>
|
||||||
</Unit25>
|
</Unit25>
|
||||||
<Unit26>
|
<Unit26>
|
||||||
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\packages\fcl-xml\src\dom.pp"/>
|
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\packages\fcl-xml\src\dom.pp"/>
|
||||||
<UnitName Value="DOM"/>
|
<UnitName Value="DOM"/>
|
||||||
<CursorPos X="27" Y="41"/>
|
<CursorPos X="27" Y="41"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="5"/>
|
<UsageCount Value="4"/>
|
||||||
</Unit26>
|
</Unit26>
|
||||||
<Unit27>
|
<Unit27>
|
||||||
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\packages\fcl-base\src\inc\avl_tree.pp"/>
|
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\packages\fcl-base\src\inc\avl_tree.pp"/>
|
||||||
<UnitName Value="AVL_Tree"/>
|
<UnitName Value="AVL_Tree"/>
|
||||||
<CursorPos X="54" Y="156"/>
|
<CursorPos X="54" Y="156"/>
|
||||||
<TopLine Value="332"/>
|
<TopLine Value="332"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit27>
|
</Unit27>
|
||||||
<Unit28>
|
<Unit28>
|
||||||
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
|
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
|
||||||
<UnitName Value="contnrs"/>
|
<UnitName Value="contnrs"/>
|
||||||
<CursorPos X="30" Y="685"/>
|
<CursorPos X="30" Y="685"/>
|
||||||
<TopLine Value="683"/>
|
<TopLine Value="683"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit28>
|
</Unit28>
|
||||||
<Unit29>
|
<Unit29>
|
||||||
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
|
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
|
||||||
<CursorPos X="3" Y="29"/>
|
<CursorPos X="3" Y="29"/>
|
||||||
<TopLine Value="27"/>
|
<TopLine Value="27"/>
|
||||||
<UsageCount Value="1"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit29>
|
</Unit29>
|
||||||
<Unit30>
|
<Unit30>
|
||||||
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysstr.inc"/>
|
<Filename Value="..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysstr.inc"/>
|
||||||
<CursorPos X="1" Y="689"/>
|
<CursorPos X="1" Y="689"/>
|
||||||
<TopLine Value="686"/>
|
<TopLine Value="686"/>
|
||||||
<UsageCount Value="22"/>
|
<UsageCount Value="21"/>
|
||||||
</Unit30>
|
</Unit30>
|
||||||
<Unit31>
|
<Unit31>
|
||||||
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\rtl\objpas\sysutils\syswideh.inc"/>
|
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\rtl\objpas\sysutils\syswideh.inc"/>
|
||||||
<CursorPos X="10" Y="30"/>
|
<CursorPos X="10" Y="30"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit31>
|
</Unit31>
|
||||||
<Unit32>
|
<Unit32>
|
||||||
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\rtl\objpas\sysutils\syswide.inc"/>
|
<Filename Value="..\..\..\..\lazarus211\fpc\2.1.1\source\rtl\objpas\sysutils\syswide.inc"/>
|
||||||
<CursorPos X="5" Y="92"/>
|
<CursorPos X="5" Y="92"/>
|
||||||
<TopLine Value="90"/>
|
<TopLine Value="90"/>
|
||||||
<UsageCount Value="8"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit32>
|
</Unit32>
|
||||||
|
<Unit33>
|
||||||
|
<Filename Value="..\..\..\..\lazarus23_213\others_package\indy\indy-10.2.0.1\lazarus\IdDsnCoreResourceStrings.pas"/>
|
||||||
|
<UnitName Value="IdDsnCoreResourceStrings"/>
|
||||||
|
<CursorPos X="9" Y="76"/>
|
||||||
|
<TopLine Value="64"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit33>
|
||||||
|
<Unit34>
|
||||||
|
<Filename Value="..\..\..\..\lazarus23_213\others_package\indy\indy-10.2.0.1\fpc\System\IdGlobal.pas"/>
|
||||||
|
<UnitName Value="IdGlobal"/>
|
||||||
|
<CursorPos X="44" Y="989"/>
|
||||||
|
<TopLine Value="981"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit34>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="30" HistoryIndex="29">
|
<JumpHistory Count="2" HistoryIndex="1">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
|
||||||
<Caret Line="675" Column="69" TopLine="662"/>
|
<Caret Line="5" Column="19" TopLine="1"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="688" Column="50" TopLine="674"/>
|
|
||||||
</Position2>
|
|
||||||
<Position3>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position3>
|
|
||||||
<Position4>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="187" Column="54" TopLine="172"/>
|
|
||||||
</Position4>
|
|
||||||
<Position5>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="646" Column="36" TopLine="626"/>
|
|
||||||
</Position5>
|
|
||||||
<Position6>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position6>
|
|
||||||
<Position7>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="144" Column="55" TopLine="131"/>
|
|
||||||
</Position7>
|
|
||||||
<Position8>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="498" Column="26" TopLine="485"/>
|
|
||||||
</Position8>
|
|
||||||
<Position9>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="507" Column="69" TopLine="494"/>
|
|
||||||
</Position9>
|
|
||||||
<Position10>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="157" Column="15" TopLine="142"/>
|
|
||||||
</Position10>
|
|
||||||
<Position11>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="293" Column="23" TopLine="280"/>
|
|
||||||
</Position11>
|
|
||||||
<Position12>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="366" Column="23" TopLine="353"/>
|
|
||||||
</Position12>
|
|
||||||
<Position13>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="669" Column="25" TopLine="656"/>
|
|
||||||
</Position13>
|
|
||||||
<Position14>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="265" Column="22" TopLine="254"/>
|
|
||||||
</Position14>
|
|
||||||
<Position15>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="288" Column="30" TopLine="269"/>
|
|
||||||
</Position15>
|
|
||||||
<Position16>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="540" Column="26" TopLine="527"/>
|
|
||||||
</Position16>
|
|
||||||
<Position17>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position17>
|
|
||||||
<Position18>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="185" Column="58" TopLine="172"/>
|
|
||||||
</Position18>
|
|
||||||
<Position19>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="675" Column="69" TopLine="662"/>
|
|
||||||
</Position19>
|
|
||||||
<Position20>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="688" Column="50" TopLine="674"/>
|
|
||||||
</Position20>
|
|
||||||
<Position21>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position21>
|
|
||||||
<Position22>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="186" Column="67" TopLine="172"/>
|
|
||||||
</Position22>
|
|
||||||
<Position23>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="187" Column="67" TopLine="174"/>
|
|
||||||
</Position23>
|
|
||||||
<Position24>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="601" Column="41" TopLine="588"/>
|
|
||||||
</Position24>
|
|
||||||
<Position25>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="693" Column="35" TopLine="680"/>
|
|
||||||
</Position25>
|
|
||||||
<Position26>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="1"/>
|
|
||||||
</Position26>
|
|
||||||
<Position27>
|
|
||||||
<Filename Value="wsdl2pas_imp.pas"/>
|
|
||||||
<Caret Line="186" Column="22" TopLine="173"/>
|
|
||||||
</Position27>
|
|
||||||
<Position28>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="1" Column="1" TopLine="16"/>
|
|
||||||
</Position28>
|
|
||||||
<Position29>
|
|
||||||
<Filename Value="generator.pas"/>
|
|
||||||
<Caret Line="290" Column="59" TopLine="277"/>
|
|
||||||
</Position29>
|
|
||||||
<Position30>
|
|
||||||
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
|
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
|
||||||
<Caret Line="172" Column="1" TopLine="151"/>
|
<Caret Line="222" Column="75" TopLine="211"/>
|
||||||
</Position30>
|
</Position2>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
@ -454,6 +454,7 @@ begin
|
|||||||
FStream := AStream;
|
FStream := AStream;
|
||||||
FTokenizer := TParser.Create(FStream);
|
FTokenizer := TParser.Create(FStream);
|
||||||
FSymbolTable := ASymbolTable;
|
FSymbolTable := ASymbolTable;
|
||||||
|
FSymbolTable.Add(CreateWstInterfaceSymbolTable());
|
||||||
FCurrentSymbol := Nil;
|
FCurrentSymbol := Nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
11
wst/trunk/wst.inc
Normal file
11
wst/trunk/wst.inc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{$IFDEF FPC}
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
{$DEFINE HAS_QWORD}
|
||||||
|
{$DEFINE USE_INLINE}
|
||||||
|
{$IF (FPC_VERSION = 2) and (FPC_RELEASE > 0)}
|
||||||
|
{$define FPC_211}
|
||||||
|
{$ENDIF}
|
||||||
|
{$ELSE}
|
||||||
|
{$UNDEF HAS_QWORD}
|
||||||
|
{$UNDEF USE_INLINE}
|
||||||
|
{$ENDIF}
|
8
wst/trunk/wst_delphi.inc
Normal file
8
wst/trunk/wst_delphi.inc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{$IFNDEF HAS_QWORD}
|
||||||
|
type
|
||||||
|
QWord = type Int64;
|
||||||
|
DWORD = LongWord;
|
||||||
|
PtrInt = Cardinal;
|
||||||
|
PByteArray = ^ByteArray;
|
||||||
|
ByteArray = array[0..$effffff] of Byte;
|
||||||
|
{$ENDIF}
|
@ -1,6 +1,6 @@
|
|||||||
unit wst_resources_imp;
|
unit wst_resources_imp;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$INCLUDE wst.inc}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -17,8 +17,8 @@ type
|
|||||||
Procedure Assign(Source : TPersistent); override;
|
Procedure Assign(Source : TPersistent); override;
|
||||||
Function HasResource(Const AName : String) : Boolean; virtual; abstract;
|
Function HasResource(Const AName : String) : Boolean; virtual; abstract;
|
||||||
Function ResourceAsString(Const AName : String) : String; virtual; abstract;
|
Function ResourceAsString(Const AName : String) : String; virtual; abstract;
|
||||||
Procedure AddResource(Const AName,AValue : String); virtual; Abstract;
|
Procedure AddResource(Const AName,AValue : String); overload;virtual; Abstract;
|
||||||
Procedure AddResource(const Name: AnsiString; Values: array of string);
|
Procedure AddResource(const Name: AnsiString; Values: array of string);overload;
|
||||||
Procedure GetResourceList(List : TStrings); virtual; abstract;
|
Procedure GetResourceList(List : TStrings); virtual; abstract;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
8
wst/trunk/wst_rtl_imp.inc
Normal file
8
wst/trunk/wst_rtl_imp.inc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
function wst_GetMem(Size : PtrInt) : Pointer;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||||||
|
begin
|
||||||
|
{$IFDEF FPC}
|
||||||
|
Result := GetMem(Size);
|
||||||
|
{$ELSE}
|
||||||
|
GetMem(Result,Size);
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
Reference in New Issue
Block a user