+ TStringBufferRemotable = reading a node's raw buffer

+ Better Delphi support : client & server( new )
    - SOAP, XMLRPC and BINARY formats

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@212 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-07-12 14:46:45 +00:00
parent d5bf30839b
commit 65f4a3dffd
84 changed files with 10759 additions and 7663 deletions

View File

@ -9,6 +9,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit base_binary_formatter;
interface
@ -311,6 +312,7 @@ type
const ATypeInfo : PTypeInfo;
var AData
);
function ReadBuffer(const AName : string) : string;
procedure SaveToStream(AStream : TStream);
procedure LoadFromStream(AStream : TStream);
@ -1193,7 +1195,7 @@ procedure TBaseBinaryFormatter.PutScopeInnerValue(
);
var
int64SData : Int64;
int64UData : QWord;
{$IFDEF FPC}int64UData : QWord;{$ENDIF}
strData : string;
boolData : Boolean;
enumData : TEnumData;
@ -1478,6 +1480,25 @@ begin
end;
end;
function TBaseBinaryFormatter.ReadBuffer (const AName : string ) : string;
Var
locStore : IDataStore;
bffr : PDataBuffer;
locName : string;
locStream : TStringStream;
begin
locName := AName;
bffr := GetDataBuffer(locName);
locStream := TStringStream.Create('');
try
locStore := CreateBinaryWriter(locStream);
SaveObjectToStream(bffr,locStore);
Result := locStream.DataString;
finally
locStream.Free();
end;
end;
procedure TBaseBinaryFormatter.SaveToStream(AStream: TStream);
Var
locStore : IDataStore;

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit base_service_intf;
interface
@ -90,7 +91,7 @@ type
IItemFactoryEx = interface(IItemFactory)
['{66B77926-7E45-4780-8FFB-FB78625EDC1D}']
procedure ReleaseInstance(var AInstance : IInterface);
procedure ReleaseInstance(var AInstance);
function GetPropertyManager(
const APropertyGroup : string;
const ACreateIfNotExists : Boolean
@ -178,6 +179,7 @@ type
const ATypeInfo : PTypeInfo;
var AData
);
function ReadBuffer(const AName : string) : string;
procedure SaveToStream(AStream : TStream);
procedure LoadFromStream(AStream : TStream);
@ -232,6 +234,29 @@ type
TAbstractSimpleRemotable = class(TBaseRemotable)
end;
{ TStringBufferRemotable }
TStringBufferRemotable = class(TAbstractSimpleRemotable)
private
FData : string;
public
class procedure Save(
AObject : TBaseRemotable;
AStore : IFormatterBase;
const AName : string;
const ATypeInfo : PTypeInfo
);override;
class procedure Load(
var AObject : TObject;
AStore : IFormatterBase;
var AName : string;
const ATypeInfo : PTypeInfo
);override;
procedure Assign(Source: TPersistent); override;
property Data : string read FData write FData;
end;
{ TBaseDateRemotable }
TBaseDateRemotable = class(TAbstractSimpleRemotable)
@ -1049,7 +1074,7 @@ type
procedure SetPoolMin(const AValue: PtrInt);
protected
function CreateInstance():IInterface;override;
procedure ReleaseInstance(var AInstance : IInterface);virtual;
procedure ReleaseInstance(var AInstance);virtual;
function GetPropertyManager(
const APropertyGroup : string;
const ACreateIfNotExists : Boolean
@ -2121,12 +2146,16 @@ begin
end;
end;
procedure TSimpleItemFactoryEx.ReleaseInstance(var AInstance: IInterface);
procedure TSimpleItemFactoryEx.ReleaseInstance(var AInstance);
var
tmpIntf : IInterface;
begin
tmpIntf := IInterface(AInstance);
Pointer(AInstance) := nil;
if Pooled then begin
FPool.Release(AInstance);
FPool.Release(tmpIntf);
end else begin
AInstance := nil;
tmpIntf := nil;
end;
end;
@ -3660,7 +3689,7 @@ Var
strData : String;
objData : TObject;
objDataCreateHere : Boolean;
boolData : Boolean;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
p : PPropInfo;
enumData : TEnumBuffer;
floatDt : TFloatExtendedType;
@ -4380,6 +4409,55 @@ begin
end;
end;
{ TStringBufferRemotable }
class procedure TStringBufferRemotable.Save (
AObject : TBaseRemotable;
AStore : IFormatterBase;
const AName : string;
const ATypeInfo : PTypeInfo
);
var
buffer : string;
begin
if ( AObject <> nil ) then
buffer := TStringBufferRemotable(AObject).Data
else
buffer := '';
AStore.Put(AName,TypeInfo(string),buffer);
end;
class procedure TStringBufferRemotable.Load (
var AObject : TObject;
AStore : IFormatterBase;
var AName : string;
const ATypeInfo : PTypeInfo
);
var
buffer : string;
locObj : TStringBufferRemotable;
begin
buffer := AStore.ReadBuffer(AName);
if ( AObject = nil ) then
AObject := Create();
writeLn;writeLn(AObject.ClassName);
locObj := AObject as TStringBufferRemotable;;
locObj.Data := buffer;
end;
procedure TStringBufferRemotable.Assign (Source : TPersistent );
begin
if ( Source = nil ) then begin
FData := '';
end else begin
if Source.InheritsFrom(TStringBufferRemotable) then
Self.Data := TStringBufferRemotable(Source).Data
else
inherited Assign(Source);
end;
end;
initialization
TypeRegistryInstance := TTypeRegistry.Create();
SerializeOptionsRegistryInstance := TSerializeOptionsRegistry.Create();

View File

@ -10,20 +10,19 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit base_soap_formatter;
{$mode objfpc}{$H+}
{$IF (FPC_VERSION = 2) and (FPC_RELEASE > 0)}
{$define FPC_211}
{$ENDIF}
interface
uses
Classes, SysUtils, TypInfo, Contnrs,
DOM,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sPROTOCOL_NAME = 'SOAP';
@ -43,7 +42,9 @@ const
sHEADER = 'Header';
sENVELOPE = 'Envelope';
Type
type
TwstXMLDocument = {$IFNDEF FPC}wst_delphi_xml.TXMLDocument{$ELSE}TXMLDocument{$ENDIF};
TEnumIntType = Int64;
@ -133,7 +134,7 @@ Type
FHeaderEnterCount : Integer;
FNameSpaceCounter : Integer;
FDoc : TXMLDocument;
FDoc : TwstXMLDocument;
FStack : TObjectStack;
FKeepedStyle : TSOAPDocumentStyle;
@ -156,11 +157,13 @@ Type
Const ATypeInfo : PTypeInfo;
Const AData : TEnumIntType
):TDOMNode;
{$IFDEF FPC}
function PutBool(
Const AName : String;
Const ATypeInfo : PTypeInfo;
Const AData : Boolean
):TDOMNode;
{$ENDIF}
function PutInt64(
Const AName : String;
Const ATypeInfo : PTypeInfo;
@ -188,6 +191,7 @@ Type
Var AName : String;
Var AData : TEnumIntType
);
{$IFDEF FPC}
procedure GetBool(
Const ATypeInfo : PTypeInfo;
Var AName : String;
@ -198,6 +202,7 @@ Type
Var AName : String;
Var AData : Integer
);
{$ENDIF}
procedure GetInt64(
Const ATypeInfo : PTypeInfo;
Var AName : String;
@ -219,7 +224,7 @@ Type
Var AData : TObject
);
protected
function GetXmlDoc():TXMLDocument;
function GetXmlDoc():TwstXMLDocument;
function PushStack(AScopeObject : TDOMNode):TStackItem;overload;
function PushStack(
AScopeObject : TDOMNode;
@ -326,12 +331,13 @@ Type
const ATypeInfo : PTypeInfo;
var AData
);
function ReadBuffer(const AName : string) : string;
procedure SaveToStream(AStream : TStream);
procedure LoadFromStream(AStream : TStream);
procedure Error(Const AMsg:string);
procedure Error(Const AMsg:string; Const AArgs : array of const);
procedure Error(Const AMsg:string);overload;
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
Published
property EncodingStyle : TSOAPEncodingStyle Read FEncodingStyle Write FEncodingStyle;
property ContentType : string Read FContentType Write FContentType;
@ -340,24 +346,8 @@ Type
{$M-}
implementation
Uses XMLWrite, XMLRead, StrUtils,
imp_utils;
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
var
chdLst : TDOMNodeList;
begin
if ANode.HasChildNodes then begin
chdLst := ANode.ChildNodes;
try
Result := chdLst.Count
finally
chdLst.Release();
end;
end else begin
Result := 0;
end;
end;
Uses {$IFNDEF FPC}XMLDoc,XMLIntf,{$ELSE}XMLWrite, XMLRead,wst_fpc_xml,{$ENDIF}
StrUtils, imp_utils;
{ TStackItem }
@ -396,7 +386,11 @@ end;
function TObjectStackItem.FindNode(var ANodeName: string): TDOMNode;
begin
Result:= ScopeObject.FindNode(ANodeName);
{$IFNDEF FPC}
Result := wst_delphi_xml.FindNode(ScopeObject,ANodeName);
{$ELSE}
Result := ScopeObject.FindNode(ANodeName);
{$ENDIF}
end;
{ TAbstractArrayStackItem }
@ -412,7 +406,7 @@ function TAbstractArrayStackItem.GetItemsCount(): Integer;
begin
EnsureListCreated();
if Assigned(FItemList) then begin
Result := FItemList.Count;
Result := GetNodeListCount(FItemList);
end else begin
Result := 0;
end;
@ -431,14 +425,14 @@ end;
destructor TAbstractArrayStackItem.Destroy();
begin
if Assigned(FItemList) then
FItemList.Release();
ReleaseDomNode(FItemList);
inherited Destroy();
end;
function TAbstractArrayStackItem.FindNode(var ANodeName: string): TDOMNode;
begin
EnsureListCreated();
if ( FIndex >= FItemList.Count ) then
if ( FIndex >= GetNodeListCount(FItemList) ) then
raise ESOAPException.CreateFmt('Index out of bound : %d; Node Name = "%s"; Parent Node = "%s"',[FIndex,ANodeName,ScopeObject.NodeName]);
Result:= FItemList.Item[FIndex];
Inc(FIndex);
@ -520,9 +514,9 @@ end;
procedure TSOAPBaseFormatter.InternalClear(const ACreateDoc: Boolean);
begin
ClearStack();
FreeAndNil(FDoc);
ReleaseDomNode(FDoc);
if ACreateDoc then
FDoc := TXMLDocument.Create();
FDoc := CreateDoc();
end;
function TSOAPBaseFormatter.NextNameSpaceCounter(): Integer;
@ -533,7 +527,7 @@ end;
function TSOAPBaseFormatter.HasScope(): Boolean;
begin
Result := Assigned(FStack.Peek);
Result := FStack.AtLeast(1);
end;
function TSOAPBaseFormatter.FindAttributeByValueInNode(
@ -705,6 +699,7 @@ begin
);
end;
{$IFDEF FPC}
function TSOAPBaseFormatter.PutBool(
const AName : String;
const ATypeInfo : PTypeInfo;
@ -713,6 +708,7 @@ function TSOAPBaseFormatter.PutBool(
begin
Result := InternalPutData(AName,ATypeInfo,LowerCase(BoolToStr(AData)));
end;
{$ENDIF}
function TSOAPBaseFormatter.PutInt64(
const AName : String;
@ -811,6 +807,7 @@ begin
AData := GetEnumValue(ATypeInfo,locBuffer)
End;
{$IFDEF FPC}
procedure TSOAPBaseFormatter.GetBool(
const ATypeInfo : PTypeInfo;
var AName : String;
@ -834,6 +831,7 @@ procedure TSOAPBaseFormatter.GetInt(
begin
AData := StrToIntDef(Trim(GetNodeValue(AName)),0);
end;
{$ENDIF}
procedure TSOAPBaseFormatter.GetInt64(
const ATypeInfo : PTypeInfo;
@ -871,7 +869,7 @@ begin
TBaseRemotableClass(GetTypeData(ATypeInfo)^.ClassType).Load(AData, Self,AName,ATypeInfo);
end;
function TSOAPBaseFormatter.GetXmlDoc(): TXMLDocument;
function TSOAPBaseFormatter.GetXmlDoc(): TwstXMLDocument;
begin
Result := FDoc;
end;
@ -904,13 +902,12 @@ begin
Inherited Create();
FContentType := sSOAP_CONTENT_TYPE;
FStack := TObjectStack.Create();
FDoc := TXMLDocument.Create();
FDoc.Encoding := 'UTF-8';
FDoc := CreateDoc();
end;
destructor TSOAPBaseFormatter.Destroy();
begin
FDoc.Free();
ReleaseDomNode(FDoc);
ClearStack();
FStack.Free();
inherited Destroy();
@ -1215,7 +1212,7 @@ end;
procedure TSOAPBaseFormatter.Prepare();
var
locDoc : TDOMDocument;
locDoc : TwstXMLDocument;
begin
locDoc := GetXmlDoc();
if Assigned(locDoc.DocumentElement) and
@ -1282,7 +1279,7 @@ begin
end;
end;
finally
chdLst.Release();
ReleaseDomNode(chdLst);
end;
end;
finally
@ -1339,17 +1336,17 @@ Var
int64Data : Int64;
strData : string;
objData : TObject;
boolData : Boolean;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
enumData : TEnumIntType;
floatDt : Extended;
begin
Case ATypeInfo^.Kind Of
tkInt64, tkQWord :
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
Begin
int64Data := Int64(AData);
PutInt64(AName,ATypeInfo,int64Data);
End;
tkLString, tkAString :
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
Begin
strData := String(AData);
PutStr(AName,ATypeInfo,strData);
@ -1359,11 +1356,13 @@ begin
objData := TObject(AData);
PutObj(AName,ATypeInfo,objData);
End;
{$IFDEF FPC}
tkBool :
Begin
boolData := Boolean(AData);
PutBool(AName,ATypeInfo,boolData);
End;
{$ENDIF}
tkInteger, tkEnumeration :
Begin
enumData := 0;
@ -1401,10 +1400,11 @@ procedure TSOAPBaseFormatter.PutScopeInnerValue(
);
Var
int64SData : Int64;
int64UData : QWord;
{$IFDEF FPC}
int64UData : QWord;
boolData : Boolean;
{$ENDIF}
strData : string;
objData : TObject;
boolData : Boolean;
enumData : TEnumIntType;
floatDt : Extended;
dataBuffer : string;
@ -1418,12 +1418,14 @@ begin
int64SData := Int64(AData);
dataBuffer := IntToStr(int64SData);
end;
{$IFDEF FPC}
tkQWord :
begin
int64UData := QWord(AData);
dataBuffer := IntToStr(int64UData);
end;
tkLString, tkAString :
{$ENDIF}
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
begin
strData := string(AData);
dataBuffer := strData;
@ -1432,11 +1434,13 @@ begin
begin
raise ESOAPException.Create('Inner Scope value must be a "simple type" value.');
end;
{$IFDEF FPC}
tkBool :
begin
boolData := Boolean(AData);
dataBuffer := BoolToStr(boolData);
end;
{$ENDIF}
tkInteger :
begin
case GetTypeData(ATypeInfo)^.OrdType of
@ -1511,18 +1515,18 @@ Var
int64Data : Int64;
strData : string;
objData : TObject;
boolData : Boolean;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
enumData : TEnumIntType;
floatDt : Extended;
begin
Case ATypeInfo^.Kind Of
tkInt64,tkQWord :
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
Begin
int64Data := 0;
GetInt64(ATypeInfo,AName,int64Data);
Int64(AData) := int64Data;
End;
tkLString, tkAString :
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
Begin
strData := '';
GetStr(ATypeInfo,AName,strData);
@ -1534,12 +1538,14 @@ begin
GetObj(ATypeInfo,AName,objData);
TObject(AData) := objData;
End;
{$IFDEF FPC}
tkBool :
Begin
boolData := False;
GetBool(ATypeInfo,AName,boolData);
Boolean(AData) := boolData;
End;
{$ENDIF}
tkInteger, tkEnumeration :
Begin
enumData := 0;
@ -1589,13 +1595,15 @@ begin
dataBuffer := StackTop().ScopeObject.NodeValue;
Case ATypeInfo^.Kind Of
tkInt64 : Int64(AData) := StrToInt64Def(Trim(dataBuffer),0);
{$IFDEF FPC}
tkQWord : QWord(AData) := StrToInt64Def(Trim(dataBuffer),0);
tkLString,
tkAString : string(AData) := dataBuffer;
{$ENDIF}
tkLString{$IFDEF FPC},tkAString{$ENDIF} : string(AData) := dataBuffer;
tkClass :
begin
raise ESOAPException.Create('Inner Scope value must be a "simple type" value.');
end;
{$IFDEF FPC}
tkBool :
begin
dataBuffer := LowerCase(Trim(dataBuffer));
@ -1604,6 +1612,7 @@ begin
else
Boolean(AData) := StrToBool(dataBuffer);
end;
{$ENDIF}
tkInteger, tkEnumeration :
begin
if ( ATypeInfo^.Kind = tkInteger ) then
@ -1633,6 +1642,34 @@ begin
end;
end;
function TSOAPBaseFormatter.ReadBuffer (const AName : string ) : string;
Var
locElt : TDOMNode;
namespaceShortName, strNodeName, s : string;
begin
strNodeName := AName;
if ( Style = Document ) then begin
namespaceShortName := Copy(FindAttributeByValueInScope(StackTop().NameSpace),AnsiPos(':',namespaceShortName) + 1,MaxInt);
if not IsStrEmpty(namespaceShortName) then begin
s := ExtractNameSpaceShortName(namespaceShortName);
if not IsStrEmpty(s) then
strNodeName := s + ':' + strNodeName;
end;
end;
if ( FSerializationStyle = ssNodeSerialization ) then begin
locElt := StackTop().FindNode(strNodeName);
end else begin
locElt := GetCurrentScopeObject().GetAttributeNode(strNodeName);
end;
if Assigned(locElt) then begin
Result := NodeToBuffer(locElt);
end else begin
Error('Param or Attribute not found : "%s"',[AName]);
end;
end;
procedure TSOAPBaseFormatter.SaveToStream(AStream: TStream);
begin
WriteXMLFile(FDoc,AStream);
@ -1664,7 +1701,7 @@ end;
function TScopedArrayStackItem.CreateList(const ANodeName : string): TDOMNodeList;
begin
if ScopeObject.HasChildNodes() then begin
Result := ScopeObject.GetChildNodes();
Result := ScopeObject.ChildNodes;
end else begin
Result := nil;
end;
@ -1675,11 +1712,14 @@ end;
function TEmbeddedArrayStackItem.CreateList(const ANodeName: string): TDOMNodeList;
begin
if ScopeObject.HasChildNodes() then begin
{$IFNDEF FPC}
Result := ScopeObject.childNodes;
{$ELSE}
Result := {$IFNDEF FPC_211}TDOMNodeList{$ELSE}TDOMElementList{$ENDIF}.Create(ScopeObject,ANodeName);
{$ENDIF}
end else begin
Result := nil;
end;
end;
end.

View File

@ -10,18 +10,19 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit base_xmlrpc_formatter;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
interface
uses
Classes, SysUtils, TypInfo, Contnrs,
DOM,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sPROTOCOL_NAME = 'XMLRPC';
@ -44,6 +45,8 @@ const
type
TwstXMLDocument = {$IFNDEF FPC}wst_delphi_xml.TXMLDocument{$ELSE}TXMLDocument{$ENDIF};
TEnumIntType = Int64;
TXmlRpcDataType = (
@ -63,14 +66,18 @@ type
EXmlRpcException = class(EBaseRemoteException)
end;
TFoundState = ( fsNone, fsFoundNonNil, fsFoundNil );
{ TStackItem }
TStackItem = class
private
FFoundState : TFoundState;
FScopeObject: TDOMNode;
FScopeType: TScopeType;
protected
function GetItemsCount() : Integer;virtual;
procedure SetFoundState(const AFoundState : TFoundState);
public
constructor Create(AScopeObject : TDOMNode;AScopeType : TScopeType);
function FindNode(var ANodeName : string):TDOMNode;virtual;abstract;
@ -81,6 +88,7 @@ type
property ScopeObject : TDOMNode Read FScopeObject;
property ScopeType : TScopeType Read FScopeType;
property ItemsCount : Integer read GetItemsCount;
property FoundState : TFoundState read FFoundState;
end;
{ TObjectStackItem }
@ -159,11 +167,13 @@ type
Const ATypeInfo : PTypeInfo;
Const AData : TEnumIntType
):TDOMNode;
{$IFDEF FPC}
function PutBool(
Const AName : String;
Const ATypeInfo : PTypeInfo;
Const AData : Boolean
):TDOMNode;
{$ENDIF}
function PutInt64(
Const AName : String;
Const ATypeInfo : PTypeInfo;
@ -191,6 +201,7 @@ type
Var AName : String;
Var AData : TEnumIntType
);
{$IFDEF FPC}
procedure GetBool(
Const ATypeInfo : PTypeInfo;
Var AName : String;
@ -201,6 +212,7 @@ type
Var AName : String;
Var AData : Integer
);
{$ENDIF}
procedure GetInt64(
Const ATypeInfo : PTypeInfo;
Var AName : String;
@ -318,44 +330,34 @@ type
const ATypeInfo : PTypeInfo;
var AData
);
function ReadBuffer(const AName : string) : string;
procedure SaveToStream(AStream : TStream);
procedure LoadFromStream(AStream : TStream);
procedure Error(Const AMsg:string);
procedure Error(Const AMsg:string; Const AArgs : array of const);
procedure Error(Const AMsg:string);overload;
procedure Error(Const AMsg:string; Const AArgs : array of const);overload;
published
property ContentType : string Read FContentType Write FContentType;
end;
{$M-}
implementation
Uses XMLWrite, XMLRead,
Uses {$IFNDEF FPC}XMLDoc,XMLIntf,{$ELSE}XMLWrite, XMLRead,wst_fpc_xml,{$ENDIF}
imp_utils;
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
var
chdLst : TDOMNodeList;
begin
if ANode.HasChildNodes then begin
chdLst := ANode.ChildNodes;
try
Result := chdLst.Count
finally
chdLst.Release();
end;
end else begin
Result := 0;
end;
end;
{ TStackItem }
function TStackItem.GetItemsCount: Integer;
function TStackItem.GetItemsCount(): Integer;
begin
Result := GetNodeItemsCount(ScopeObject);
end;
procedure TStackItem.SetFoundState (const AFoundState : TFoundState );
begin
FFoundState := AFoundState;
end;
constructor TStackItem.Create(AScopeObject: TDOMNode; AScopeType: TScopeType);
begin
FScopeObject := AScopeObject;
@ -378,7 +380,7 @@ begin
while ( not nodeFound ) and ( memberNode <> nil ) do begin
if memberNode.HasChildNodes() then begin
chilNodes := memberNode.ChildNodes;
for i := 0 to Pred(chilNodes.Count) do begin
for i := 0 to Pred(GetNodeListCount(chilNodes)) do begin
tmpNode := chilNodes.Item[i];
if AnsiSameText(sNAME,tmpNode.NodeName) and
( tmpNode.FirstChild <> nil ) and
@ -389,7 +391,11 @@ begin
end;
end;
if nodeFound then begin
{$IFNDEF FPC}
tmpNode := wst_delphi_xml.FindNode(memberNode,sVALUE);
{$ELSE}
tmpNode := memberNode.FindNode(sVALUE);
{$ENDIF}
if ( tmpNode <> nil ) and ( tmpNode.FirstChild <> nil ) then begin
Result := tmpNode.FirstChild;
Break;
@ -399,6 +405,14 @@ begin
memberNode := memberNode.NextSibling;
end;
end;
if ( Result <> nil ) then begin
if Result.HasChildNodes() then
SetFoundState(fsFoundNonNil)
else
SetFoundState(fsFoundNil);
end else begin
SetFoundState(fsNone);
end;
end;
function TObjectStackItem.CreateBuffer(
@ -406,7 +420,7 @@ function TObjectStackItem.CreateBuffer(
const ADataType: TXmlRpcDataType
): TDOMNode;
var
memberNode, nd, ndVal : TDOMNode;
memberNode, nd : TDOMNode;
begin
memberNode := ScopeObject.OwnerDocument.CreateElement(sMEMBER);
ScopeObject.AppendChild(memberNode);
@ -434,7 +448,7 @@ function TArrayStackItem.GetItemsCount(): Integer;
begin
EnsureListCreated();
if Assigned(FItemList) then begin
Result := FItemList.Count;
Result := GetNodeListCount(FItemList);
end else begin
Result := 0;
end;
@ -443,7 +457,7 @@ end;
function TArrayStackItem.CreateList(): TDOMNodeList;
begin
if ScopeObject.HasChildNodes() and ScopeObject.FirstChild.HasChildNodes() then begin
Result := ScopeObject.FirstChild.GetChildNodes();
Result := ScopeObject.FirstChild.ChildNodes;
end else begin
Result := nil;
end;
@ -452,17 +466,21 @@ end;
destructor TArrayStackItem.Destroy();
begin
if Assigned(FItemList) then
FItemList.Release();
ReleaseDomNode(FItemList);
inherited Destroy();
end;
function TArrayStackItem.FindNode(var ANodeName: string): TDOMNode;
begin
EnsureListCreated();
if ( FIndex >= FItemList.Count ) then
if ( FIndex >= GetNodeListCount(FItemList) ) then
raise EXmlRpcException.CreateFmt('Index out of bound : %d; Node Name = "%s"; Parent Node = "%s"',[FIndex,ANodeName,ScopeObject.NodeName]);
Result:= FItemList.Item[FIndex];
if Result.HasChildNodes() and Result.FirstChild.HasChildNodes() then begin
if Result.HasChildNodes() then begin
if Result.FirstChild.HasChildNodes() then
SetFoundState(fsFoundNonNil)
else
SetFoundState(fsFoundNil);
Result := Result.FirstChild;//.FirstChild;
Inc(FIndex);
ANodeName := Result.NodeName;
@ -476,7 +494,7 @@ function TArrayStackItem.CreateBuffer(
const ADataType: TXmlRpcDataType
): TDOMNode;
var
nd, ndVal : TDOMNode;
nd : TDOMNode;
begin
if ( FDataScope = nil ) then begin
FDataScope := ScopeObject.OwnerDocument.CreateElement(sDATA);
@ -553,14 +571,14 @@ end;
procedure TXmlRpcBaseFormatter.InternalClear(const ACreateDoc: Boolean);
begin
ClearStack();
FreeAndNil(FDoc);
ReleaseDomNode(FDoc);
if ACreateDoc then
FDoc := TXMLDocument.Create();
FDoc := CreateDoc();
end;
function TXmlRpcBaseFormatter.HasScope(): Boolean;
begin
Result := Assigned(FStack.Peek);
Result := FStack.AtLeast(1);
end;
function TXmlRpcBaseFormatter.FindAttributeByValueInNode(
@ -665,6 +683,7 @@ begin
);
end;
{$IFDEF FPC}
function TXmlRpcBaseFormatter.PutBool(
const AName : String;
const ATypeInfo : PTypeInfo;
@ -679,6 +698,7 @@ begin
v := '0';
Result := InternalPutData(AName,xdtBoolean,v);
end;
{$ENDIF}
function TXmlRpcBaseFormatter.PutInt64(
const AName : String;
@ -738,14 +758,20 @@ end;
function TXmlRpcBaseFormatter.GetNodeValue(var AName: string): DOMString;
var
locElt : TDOMNode;
stkTop : TStackItem;
begin
locElt := StackTop().FindNode(AName) as TDOMElement;
stkTop := StackTop();
locElt := stkTop.FindNode(AName) as TDOMElement;
if Assigned(locElt) then begin
if locElt.HasChildNodes then
if locElt.HasChildNodes then begin
Result := locElt.FirstChild.NodeValue
else
Result := locElt.NodeValue;
end else begin
if ( stkTop.FoundState = fsFoundNil ) then
Result := ''
else
Result := locElt.NodeValue;
end;
end else begin
Error('Param or Attribute not found : "%s"',[AName]);
end;
@ -766,6 +792,7 @@ begin
AData := GetEnumValue(ATypeInfo,locBuffer)
End;
{$IFDEF FPC}
procedure TXmlRpcBaseFormatter.GetBool(
const ATypeInfo : PTypeInfo;
var AName : String;
@ -789,6 +816,7 @@ procedure TXmlRpcBaseFormatter.GetInt(
begin
AData := StrToIntDef(Trim(GetNodeValue(AName)),0);
end;
{$ENDIF}
procedure TXmlRpcBaseFormatter.GetInt64(
const ATypeInfo : PTypeInfo;
@ -826,7 +854,7 @@ begin
TBaseRemotableClass(GetTypeData(ATypeInfo)^.ClassType).Load(AData, Self,AName,ATypeInfo);
end;
function TXmlRpcBaseFormatter.GetXmlDoc(): TXMLDocument;
function TXmlRpcBaseFormatter.GetXmlDoc(): TwstXMLDocument;
begin
Result := FDoc;
end;
@ -859,13 +887,12 @@ begin
Inherited Create();
FContentType := sXMLRPC_CONTENT_TYPE;
FStack := TObjectStack.Create();
FDoc := TXMLDocument.Create();
FDoc.Encoding := 'UTF-8';
FDoc := CreateDoc();
end;
destructor TXmlRpcBaseFormatter.Destroy();
begin
FDoc.Free();
ReleaseDomNode(FDoc);
ClearStack();
FStack.Free();
inherited Destroy();
@ -891,12 +918,8 @@ procedure TXmlRpcBaseFormatter.BeginArray(
const ABounds : Array Of Integer;
const AStyle : TArrayStyle
);
Var
typData : TTypeRegistryItem;
nmspc,nmspcSH : string;
var
i,j, k : Integer;
strNodeName : string;
xsiNmspcSH : string;
begin
if ( Length(ABounds) < 2 ) then begin
Error('Invalid array bounds.');
@ -1003,17 +1026,17 @@ Var
int64Data : Int64;
strData : string;
objData : TObject;
boolData : Boolean;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
enumData : TEnumIntType;
floatDt : Extended;
begin
Case ATypeInfo^.Kind Of
tkInt64, tkQWord :
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
Begin
int64Data := Int64(AData);
PutInt64(AName,ATypeInfo,int64Data);
End;
tkLString, tkAString :
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
Begin
strData := String(AData);
PutStr(AName,ATypeInfo,strData);
@ -1023,11 +1046,13 @@ begin
objData := TObject(AData);
PutObj(AName,ATypeInfo,objData);
End;
{$IFDEF FPC}
tkBool :
Begin
boolData := Boolean(AData);
PutBool(AName,ATypeInfo,boolData);
End;
{$ENDIF}
tkInteger, tkEnumeration :
Begin
enumData := 0;
@ -1065,10 +1090,11 @@ procedure TXmlRpcBaseFormatter.PutScopeInnerValue(
);
Var
int64SData : Int64;
int64UData : QWord;
{$IFDEF FPC}
int64UData : QWord;
boolData : Boolean;
{$ENDIF}
strData : string;
objData : TObject;
boolData : Boolean;
enumData : TEnumIntType;
floatDt : Extended;
dataBuffer : string;
@ -1082,12 +1108,14 @@ begin
int64SData := Int64(AData);
dataBuffer := IntToStr(int64SData);
end;
{$IFDEF FPC}
tkQWord :
begin
int64UData := QWord(AData);
dataBuffer := IntToStr(int64UData);
end;
tkLString, tkAString :
{$ENDIF}
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
begin
strData := string(AData);
dataBuffer := strData;
@ -1096,11 +1124,13 @@ begin
begin
raise EXmlRpcException.Create('Inner Scope value must be a "simple type" value.');
end;
{$IFDEF FPC}
tkBool :
begin
boolData := Boolean(AData);
dataBuffer := BoolToStr(boolData);
end;
{$ENDIF}
tkInteger :
begin
case GetTypeData(ATypeInfo)^.OrdType of
@ -1175,18 +1205,18 @@ Var
int64Data : Int64;
strData : string;
objData : TObject;
boolData : Boolean;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
enumData : TEnumIntType;
floatDt : Extended;
begin
Case ATypeInfo^.Kind Of
tkInt64,tkQWord :
tkInt64{$IFDEF FPC},tkQWord{$ENDIF} :
Begin
int64Data := 0;
GetInt64(ATypeInfo,AName,int64Data);
Int64(AData) := int64Data;
End;
tkLString, tkAString :
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
Begin
strData := '';
GetStr(ATypeInfo,AName,strData);
@ -1198,12 +1228,14 @@ begin
GetObj(ATypeInfo,AName,objData);
TObject(AData) := objData;
End;
{$IFDEF FPC}
tkBool :
Begin
boolData := False;
GetBool(ATypeInfo,AName,boolData);
Boolean(AData) := boolData;
End;
{$ENDIF}
tkInteger, tkEnumeration :
Begin
enumData := 0;
@ -1253,13 +1285,15 @@ begin
dataBuffer := StackTop().ScopeObject.NodeValue;
Case ATypeInfo^.Kind Of
tkInt64 : Int64(AData) := StrToInt64Def(Trim(dataBuffer),0);
{$IFDEF FPC}
tkQWord : QWord(AData) := StrToInt64Def(Trim(dataBuffer),0);
tkLString,
tkAString : string(AData) := dataBuffer;
{$ENDIF}
tkLString{$IFDEF FPC},tkAString{$ENDIF} : string(AData) := dataBuffer;
tkClass :
begin
raise EXmlRpcException.Create('Inner Scope value must be a "simple type" value.');
end;
{$IFDEF FPC}
tkBool :
begin
dataBuffer := LowerCase(Trim(dataBuffer));
@ -1268,6 +1302,7 @@ begin
else
Boolean(AData) := StrToBool(dataBuffer);
end;
{$ENDIF}
tkInteger, tkEnumeration :
begin
if ( ATypeInfo^.Kind = tkInteger ) then
@ -1297,6 +1332,23 @@ begin
end;
end;
function TXmlRpcBaseFormatter.ReadBuffer (const AName : string ) : string;
var
locElt : TDOMNode;
stkTop : TStackItem;
locName : string;
begin
stkTop := StackTop();
locName := AName;
locElt := stkTop.FindNode(locName);
if Assigned(locElt) then begin
Result := NodeToBuffer(locElt);
end else begin
Error('Param or Attribute not found : "%s"',[AName]);
end;
end;
procedure TXmlRpcBaseFormatter.SaveToStream(AStream: TStream);
begin
WriteXMLFile(FDoc,AStream);
@ -1337,7 +1389,7 @@ function TParamsArrayStackItem.GetItemsCount(): Integer;
begin
EnsureListCreated();
if Assigned(FItemList) then begin
Result := FItemList.Count;
Result := GetNodeListCount(FItemList);
end else begin
Result := 0;
end;
@ -1346,7 +1398,7 @@ end;
function TParamsArrayStackItem.CreateList(): TDOMNodeList;
begin
if ScopeObject.HasChildNodes() then begin
Result := ScopeObject.GetChildNodes();
Result := ScopeObject.ChildNodes;
end else begin
Result := nil;
end;
@ -1355,17 +1407,21 @@ end;
destructor TParamsArrayStackItem.Destroy();
begin
if Assigned(FItemList) then
FItemList.Release();
ReleaseDomNode(FItemList);
inherited Destroy();
end;
function TParamsArrayStackItem.FindNode(var ANodeName: string): TDOMNode;
begin
EnsureListCreated();
if ( FIndex >= FItemList.Count ) then
if ( FIndex >= GetNodeListCount(FItemList) ) then
raise EXmlRpcException.CreateFmt('Index out of bound : %d; Node Name = "%s"; Parent Node = "%s"',[FIndex,ANodeName,ScopeObject.NodeName]);
Result:= FItemList.Item[FIndex];
if Result.HasChildNodes() and Result.FirstChild.HasChildNodes() then begin
if Result.HasChildNodes() then begin
if Result.FirstChild.HasChildNodes() then
SetFoundState(fsFoundNonNil)
else
SetFoundState(fsFoundNil);
Result := Result.FirstChild.FirstChild;
Inc(FIndex);
ANodeName := Result.NodeName;

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit binary_formatter;
interface

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit binary_streamer;
interface
@ -90,20 +91,20 @@ Type
function CreateBinaryReader(AStream : TStream):IDataStoreReader;
function CreateBinaryWriter(AStream : TStream):IDataStore;
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF ENDIAN_BIG}inline;{$ENDIF}
function Reverse_16(AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_32(AValue:DWord):DWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_64(AValue:QWord):QWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF USE_INLINE}{$IFDEF ENDIAN_BIG}inline;{$ENDIF}{$ENDIF}
function Reverse_16(const AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_32(const AValue:DWord):DWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_64(const AValue:QWord):QWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Single(AValue:Single):Single;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Double(AValue:Double):Double;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Extended(AValue:Extended):Extended;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Currency(AValue:Currency):Currency;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Single(const AValue:Single):Single;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Double(const AValue:Double):Double;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Extended(const AValue:Extended):Extended;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Currency(const AValue:Currency):Currency;{$IFDEF USE_INLINE}inline;{$ENDIF}
implementation
{$IFDEF ENDIAN_BIG}
procedure ReverseBytes(var AData; const ALength : Integer);{$IFDEF USE_INLINE}inline;{$ENDIF}
procedure ReverseBytes(var AData; const ALength : Integer); {$IFDEF USE_INLINE}inline;{$ENDIF}
begin
end;
{$ELSE} // assume ENDIAN_LITTLE
@ -123,43 +124,43 @@ begin
end;
{$ENDIF}
function Reverse_16(AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_16(const AValue:Word):Word;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,2)
end;
function Reverse_32(AValue:DWord):DWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_32(const AValue:DWord):DWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,4)
end;
function Reverse_64(AValue:QWord):QWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_64(const AValue:QWord):QWord;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,8)
end;
function Reverse_Single(AValue:Single):Single;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Single(const AValue:Single):Single;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,4)
end;
function Reverse_Double(AValue:Double):Double;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Double(const AValue:Double):Double;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,8)
end;
function Reverse_Extended(AValue:Extended):Extended;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Extended(const AValue:Extended):Extended;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,10);
end;
function Reverse_Currency(AValue:Currency):Currency;{$IFDEF USE_INLINE}inline;{$ENDIF}
function Reverse_Currency(const AValue:Currency):Currency;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := AValue;
ReverseBytes(Result,8);
@ -355,7 +356,7 @@ begin
FStream.Write(AData[1],i);
end;
{$IFDEF FPC}
{
procedure TDataStore.WriteSingle(const AData: TFloat_Single_4);
begin
FStream.Write(Reverse_Single(AData),SizeOf(AData));
@ -375,7 +376,7 @@ procedure TDataStore.WriteCurrency(const AData: TFloat_Currency_8);
begin
FStream.Write(Reverse_Currency(AData),SizeOf(AData));
end;
{$ELSE}
}
procedure TDataStore.WriteSingle(const AData: TFloat_Single_4);
var
bffr : TFloat_Single_4;
@ -407,7 +408,6 @@ begin
bffr := Reverse_Currency(AData);
FStream.Write(bffr,SizeOf(AData));
end;
{$ENDIF}
constructor TDataStore.Create(AStream: TStream);
begin

View File

@ -10,10 +10,9 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit ics_http_protocol;
{$mode objfpc}{$H+}
{$DEFINE WST_DBG}
interface
@ -23,6 +22,9 @@ uses
service_intf, imp_utils, base_service_intf,
HttpProt;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Const
sTRANSPORT_NAME = 'HTTP';

View File

@ -10,10 +10,9 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit ics_tcp_protocol;
{$INCLUDE wst.inc}
interface
uses
@ -21,6 +20,9 @@ uses
service_intf, imp_utils, base_service_intf,
WSocket;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Const
sTRANSPORT_NAME = 'TCP';

View File

@ -46,12 +46,12 @@ object formImport: TformImport
Left = 9
Height = 23
Top = 31
Width = 416
Width = 412
Anchors = [akTop, akLeft, akRight]
TabOrder = 0
end
object Button2: TButton
Left = 443
Left = 439
Height = 25
Top = 31
Width = 40
@ -64,12 +64,12 @@ object formImport: TformImport
Left = 9
Height = 23
Top = 88
Width = 416
Width = 412
Anchors = [akTop, akLeft, akRight]
TabOrder = 2
end
object Button3: TButton
Left = 443
Left = 439
Height = 25
Top = 88
Width = 40

View File

@ -14,13 +14,13 @@ LazarusResources.Add('TformImport','FORMDATA',[
+'on File ( WSDL )'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#9#6'H'
+'eight'#2#14#3'Top'#2'E'#5'Width'#2'Q'#7'Caption'#6#16'Output directory'#11
+'ParentColor'#8#0#0#5'TEdit'#12'edtInputFile'#4'Left'#2#9#6'Height'#2#23#3'T'
+'op'#2#31#5'Width'#3#160#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'T'
+'abOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#187#1#6'Height'#2#25#3'Top'
+'op'#2#31#5'Width'#3#156#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'T'
+'abOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#183#1#6'Height'#2#25#3'Top'
+#2#31#5'Width'#2'('#6'Action'#7#11'actOpenFile'#7'Anchors'#11#5'akTop'#7'akR'
+'ight'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#1#0#0#5'TEdit'#12'e'
+'dtOutputDir'#4'Left'#2#9#6'Height'#2#23#3'Top'#2'X'#5'Width'#3#160#1#7'Anch'
+'dtOutputDir'#4'Left'#2#9#6'Height'#2#23#3'Top'#2'X'#5'Width'#3#156#1#7'Anch'
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#2#0#0#7'TButton'#7'Bu'
+'tton3'#4'Left'#3#187#1#6'Height'#2#25#3'Top'#2'X'#5'Width'#2'('#6'Action'#7
+'tton3'#4'Left'#3#183#1#6'Height'#2#25#3'Top'#2'X'#5'Width'#2'('#6'Action'#7
+#10'actOpenDir'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBo'
+'rder'#2#4#8'TabOrder'#2#3#0#0#9'TCheckBox'#15'edtAddToProject'#4'Left'#2#9#6
+'Height'#2#13#3'Top'#3#128#0#5'Width'#3#176#0#7'Caption'#6'"Add the generate'

View File

@ -270,7 +270,7 @@ begin
try
tree := ParseWsdlFile(edtInputFile.Text,@ShowStatusMessage);
try
srcMgnr := GenerateSource(tree,GetOptions(),otFileSystem,edtOutputDir.Text,@ShowStatusMessage);
srcMgnr := GenerateSource(tree,GetOptions(),otFileSystem,IncludeTrailingPathDelimiter(edtOutputDir.Text),@ShowStatusMessage);
ShowStatusMessage(mtInfo,'');
{$IFDEF WST_IDE}
openFlags := [];

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit imp_utils;
interface
@ -19,6 +20,7 @@ uses
base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Type

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit indy_http_protocol;
{$mode objfpc}{$H+}
@ -23,6 +24,9 @@ uses
service_intf, imp_utils, base_service_intf,
IdHTTP;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Const
sTRANSPORT_NAME = 'HTTP';

View File

@ -10,12 +10,14 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit library_base_intf;
interface
uses base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
RET_OK = 0;

View File

@ -1,3 +1,16 @@
{
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.
}
{$INCLUDE wst_global.inc}
unit library_imp_utils;
interface
@ -6,6 +19,7 @@ uses
Classes, SysUtils;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit library_protocol;
//{$DEFINE WST_DBG}
@ -22,6 +23,7 @@ uses
library_imp_utils;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sTRANSPORT_NAME = 'LIB';

View File

@ -10,16 +10,18 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit library_server_intf;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
library_base_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
function wstHandleRequest(
ARequestBuffer : IwstStream;
AErrorBuffer : Pointer;

View File

@ -10,7 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit metadata_repository;
interface
@ -19,6 +19,7 @@ uses
Classes, SysUtils, TypInfo;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sWST_SIGNATURE = 'WST_METADATA_0.2.2.0';

View File

@ -10,17 +10,17 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit metadata_service;
{$INCLUDE wst.inc}
interface
uses
Classes, SysUtils,
base_service_intf, metadata_repository;
{$INCLUDE wst.inc}
type
TWSTMtdOperationParam = class(TBaseComplexRemotable)

View File

@ -4,12 +4,16 @@ This unit has been produced by ws_helper.
This unit name : "metadata_service_binder".
Date : "12/11/2006 11:12".
}
{$INCLUDE wst_global.inc}
unit metadata_service_binder;
{$INCLUDE wst.inc}
interface
uses SysUtils, Classes, base_service_intf, server_service_intf, metadata_service;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
@ -108,8 +112,8 @@ End;
constructor TWSTMetadataService_ServiceBinder.Create();
Begin
Inherited Create(GetServiceImplementationRegistry().FindFactory('IWSTMetadataService'));
RegisterVerbHandler('GetRepositoryList',@GetRepositoryListHandler);
RegisterVerbHandler('GetRepositoryInfo',@GetRepositoryInfoHandler);
RegisterVerbHandler('GetRepositoryList',{$IFDEF FPC}@{$ENDIF}GetRepositoryListHandler);
RegisterVerbHandler('GetRepositoryInfo',{$IFDEF FPC}@{$ENDIF}GetRepositoryInfoHandler);
End;
@ -140,7 +144,7 @@ initialization
{$IF DECLARED(Register_metadata_service_NameSpace)}
Register_metadata_service_NameSpace();
{$ENDIF}
{$IFEND}
{$i metadata_service.wst}

View File

@ -4,13 +4,17 @@ This unit has been produced by ws_helper.
This unit name : "metadata_service_imp".
Date : "01/07/2006 22:14".
}
{$INCLUDE wst_global.inc}
Unit metadata_service_imp;
{$INCLUDE wst.inc}
Interface
Uses SysUtils, Classes,
base_service_intf, server_service_intf, server_service_imputils, metadata_service;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Type
@ -64,25 +68,37 @@ function TWSTMetadataService_ServiceImp.GetRepositoryInfo(Const AName : string):
var
ii, cc : Integer;
pprm : POperationParam;
begin
if Assigned(ARawOper) and Assigned(AObjOper) then begin
AObjOper.Name :=ARawOper^.Name;
cc := ARawOper^.ParamsCount;
AObjOper.Params.SetLength(cc);
for ii := 0 to Pred(cc) do
LoadParam(@(ARawOper^.Params[ii]),AObjOper.Params[ii]);
if ( cc > 0 ) then begin
pprm := ARawOper^.Params;
for ii := 0 to Pred(cc) do begin
LoadParam(pprm,AObjOper.Params[ii]);
Inc(pprm);
end;
end;
end;
end;
var
k, d : Integer;
pservOP : PServiceOperation;
begin
if Assigned(ARawServ) and Assigned(AObjServ) then begin
AObjServ.Name :=ARawServ^.Name;
d := ARawServ^.OperationsCount;
AObjServ.Operations.SetLength(d);
for k := 0 to Pred(d) do
LoadOperation(@(ARawServ^.Operations[k]),AObjServ.Operations[k]);
if ( d > 0 ) then begin
pservOP := ARawServ^.Operations;
for k := 0 to Pred(d) do begin
LoadOperation(pservOP,AObjServ.Operations[k]);
Inc(pservOP);
end;
end;
end;
end;
@ -90,6 +106,7 @@ var
repData : PServiceRepository;
mn : IModuleMetadataMngr;
i, c : Integer;
pserv : PService;
Begin
Result := nil;
mn := GetModuleMetadataMngr();
@ -103,8 +120,10 @@ Begin
c := repData^.ServicesCount;
Result.Services.SetLength(c);
if ( c > 0 ) then begin
pserv := repData^.Services;
for i := 0 to Pred(c) do begin
LoadService(@(repData^.Services[i]),Result.Services[i]);
LoadService(pserv,Result.Services[i]);
Inc(pserv);
end;
end;
except

View File

@ -4,12 +4,16 @@ This unit has been produced by ws_helper.
This unit name : "metadata_service_proxy".
Date : "12/11/2006 11:12".
}
{$INCLUDE wst_global.inc}
Unit metadata_service_proxy;
{$mode objfpc}{$H+}
Interface
Uses SysUtils, Classes, TypInfo, base_service_intf, service_intf, metadata_service;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Type

View File

@ -10,10 +10,11 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit metadata_wsdl;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
interface

View File

@ -10,10 +10,9 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit same_process_protocol;
{$mode objfpc}{$H+}
interface
uses
@ -21,6 +20,9 @@ uses
service_intf, imp_utils,
server_service_intf, server_service_imputils, base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Const
sTRANSPORT_NAME = 'SAME_PROCESS';

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
This unit has been produced by ws_helper.
Input unit name : "AWSECommerceService".
This unit name : "AWSECommerceService_proxy".
Date : "6-5-07 19:37:08".
Date : "11/07/2007 22:01:03".
}
Unit AWSECommerceService_proxy;
@ -18,61 +18,61 @@ Type
Protected
class function GetServiceType() : PTypeInfo;override;
function Help(
Const HelpParam : Help_Type
const HelpParam : Help_Type
):HelpResponse_Type;
function ItemSearch(
Const ItemSearchParam : ItemSearch_Type
const ItemSearchParam : ItemSearch_Type
):ItemSearchResponse_Type;
function ItemLookup(
Const ItemLookupParam : ItemLookup_Type
const ItemLookupParam : ItemLookup_Type
):ItemLookupResponse_Type;
function BrowseNodeLookup(
Const BrowseNodeLookupParam : BrowseNodeLookup_Type
const BrowseNodeLookupParam : BrowseNodeLookup_Type
):BrowseNodeLookupResponse_Type;
function ListSearch(
Const ListSearchParam : ListSearch_Type
const ListSearchParam : ListSearch_Type
):ListSearchResponse_Type;
function ListLookup(
Const ListLookupParam : ListLookup_Type
const ListLookupParam : ListLookup_Type
):ListLookupResponse_Type;
function CustomerContentSearch(
Const CustomerContentSearchParam : CustomerContentSearch_Type
const CustomerContentSearchParam : CustomerContentSearch_Type
):CustomerContentSearchResponse_Type;
function CustomerContentLookup(
Const CustomerContentLookupParam : CustomerContentLookup_Type
const CustomerContentLookupParam : CustomerContentLookup_Type
):CustomerContentLookupResponse_Type;
function SimilarityLookup(
Const SimilarityLookupParam : SimilarityLookup_Type
const SimilarityLookupParam : SimilarityLookup_Type
):SimilarityLookupResponse_Type;
function SellerLookup(
Const SellerLookupParam : SellerLookup_Type
const SellerLookupParam : SellerLookup_Type
):SellerLookupResponse_Type;
function CartGet(
Const CartGetParam : CartGet_Type
const CartGetParam : CartGet_Type
):CartGetResponse_Type;
function CartAdd(
Const CartAddParam : CartAdd_Type
const CartAddParam : CartAdd_Type
):CartAddResponse_Type;
function CartCreate(
Const CartCreateParam : CartCreate_Type
const CartCreateParam : CartCreate_Type
):CartCreateResponse_Type;
function CartModify(
Const CartModifyParam : CartModify_Type
const CartModifyParam : CartModify_Type
):CartModifyResponse_Type;
function CartClear(
Const CartClearParam : CartClear_Type
const CartClearParam : CartClear_Type
):CartClearResponse_Type;
function TransactionLookup(
Const TransactionLookupParam : TransactionLookup_Type
const TransactionLookupParam : TransactionLookup_Type
):TransactionLookupResponse_Type;
function SellerListingSearch(
Const SellerListingSearchParam : SellerListingSearch_Type
const SellerListingSearchParam : SellerListingSearch_Type
):SellerListingSearchResponse_Type;
function SellerListingLookup(
Const SellerListingLookupParam : SellerListingLookup_Type
const SellerListingLookupParam : SellerListingLookup_Type
):SellerListingLookupResponse_Type;
function MultiOperation(
Const MultiOperationParam : MultiOperationType
const MultiOperationParam : MultiOperation_Type
):MultiOperationResponse;
End;
@ -95,7 +95,7 @@ begin
end;
function TAWSECommerceServicePortType_Proxy.Help(
Const HelpParam : Help_Type
const HelpParam : Help_Type
):HelpResponse_Type;
Var
locSerializer : IFormatterClient;
@ -104,7 +104,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('Help', GetTarget(),(Self as ICallContext));
locSerializer.Put('Help', TypeInfo(Help_Type), HelpParam);
locSerializer.Put('HelpParam', TypeInfo(Help_Type), HelpParam);
locSerializer.EndCall();
MakeCall();
@ -120,7 +120,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.ItemSearch(
Const ItemSearchParam : ItemSearch_Type
const ItemSearchParam : ItemSearch_Type
):ItemSearchResponse_Type;
Var
locSerializer : IFormatterClient;
@ -129,7 +129,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('ItemSearch', GetTarget(),(Self as ICallContext));
locSerializer.Put('ItemSearch', TypeInfo(ItemSearch_Type), ItemSearchParam);
locSerializer.Put('ItemSearchParam', TypeInfo(ItemSearch_Type), ItemSearchParam);
locSerializer.EndCall();
MakeCall();
@ -145,7 +145,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.ItemLookup(
Const ItemLookupParam : ItemLookup_Type
const ItemLookupParam : ItemLookup_Type
):ItemLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -154,7 +154,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('ItemLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('ItemLookup', TypeInfo(ItemLookup_Type), ItemLookupParam);
locSerializer.Put('ItemLookupParam', TypeInfo(ItemLookup_Type), ItemLookupParam);
locSerializer.EndCall();
MakeCall();
@ -170,7 +170,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.BrowseNodeLookup(
Const BrowseNodeLookupParam : BrowseNodeLookup_Type
const BrowseNodeLookupParam : BrowseNodeLookup_Type
):BrowseNodeLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -179,7 +179,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('BrowseNodeLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('BrowseNodeLookup', TypeInfo(BrowseNodeLookup_Type), BrowseNodeLookupParam);
locSerializer.Put('BrowseNodeLookupParam', TypeInfo(BrowseNodeLookup_Type), BrowseNodeLookupParam);
locSerializer.EndCall();
MakeCall();
@ -195,7 +195,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.ListSearch(
Const ListSearchParam : ListSearch_Type
const ListSearchParam : ListSearch_Type
):ListSearchResponse_Type;
Var
locSerializer : IFormatterClient;
@ -204,7 +204,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('ListSearch', GetTarget(),(Self as ICallContext));
locSerializer.Put('ListSearch', TypeInfo(ListSearch_Type), ListSearchParam);
locSerializer.Put('ListSearchParam', TypeInfo(ListSearch_Type), ListSearchParam);
locSerializer.EndCall();
MakeCall();
@ -220,7 +220,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.ListLookup(
Const ListLookupParam : ListLookup_Type
const ListLookupParam : ListLookup_Type
):ListLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -229,7 +229,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('ListLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('ListLookup', TypeInfo(ListLookup_Type), ListLookupParam);
locSerializer.Put('ListLookupParam', TypeInfo(ListLookup_Type), ListLookupParam);
locSerializer.EndCall();
MakeCall();
@ -245,7 +245,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CustomerContentSearch(
Const CustomerContentSearchParam : CustomerContentSearch_Type
const CustomerContentSearchParam : CustomerContentSearch_Type
):CustomerContentSearchResponse_Type;
Var
locSerializer : IFormatterClient;
@ -254,7 +254,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CustomerContentSearch', GetTarget(),(Self as ICallContext));
locSerializer.Put('CustomerContentSearch', TypeInfo(CustomerContentSearch_Type), CustomerContentSearchParam);
locSerializer.Put('CustomerContentSearchParam', TypeInfo(CustomerContentSearch_Type), CustomerContentSearchParam);
locSerializer.EndCall();
MakeCall();
@ -270,7 +270,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CustomerContentLookup(
Const CustomerContentLookupParam : CustomerContentLookup_Type
const CustomerContentLookupParam : CustomerContentLookup_Type
):CustomerContentLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -279,7 +279,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CustomerContentLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('CustomerContentLookup', TypeInfo(CustomerContentLookup_Type), CustomerContentLookupParam);
locSerializer.Put('CustomerContentLookupParam', TypeInfo(CustomerContentLookup_Type), CustomerContentLookupParam);
locSerializer.EndCall();
MakeCall();
@ -295,7 +295,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.SimilarityLookup(
Const SimilarityLookupParam : SimilarityLookup_Type
const SimilarityLookupParam : SimilarityLookup_Type
):SimilarityLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -304,7 +304,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('SimilarityLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('SimilarityLookup', TypeInfo(SimilarityLookup_Type), SimilarityLookupParam);
locSerializer.Put('SimilarityLookupParam', TypeInfo(SimilarityLookup_Type), SimilarityLookupParam);
locSerializer.EndCall();
MakeCall();
@ -320,7 +320,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.SellerLookup(
Const SellerLookupParam : SellerLookup_Type
const SellerLookupParam : SellerLookup_Type
):SellerLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -329,7 +329,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('SellerLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('SellerLookup', TypeInfo(SellerLookup_Type), SellerLookupParam);
locSerializer.Put('SellerLookupParam', TypeInfo(SellerLookup_Type), SellerLookupParam);
locSerializer.EndCall();
MakeCall();
@ -345,7 +345,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CartGet(
Const CartGetParam : CartGet_Type
const CartGetParam : CartGet_Type
):CartGetResponse_Type;
Var
locSerializer : IFormatterClient;
@ -354,7 +354,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CartGet', GetTarget(),(Self as ICallContext));
locSerializer.Put('CartGet', TypeInfo(CartGet_Type), CartGetParam);
locSerializer.Put('CartGetParam', TypeInfo(CartGet_Type), CartGetParam);
locSerializer.EndCall();
MakeCall();
@ -370,7 +370,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CartAdd(
Const CartAddParam : CartAdd_Type
const CartAddParam : CartAdd_Type
):CartAddResponse_Type;
Var
locSerializer : IFormatterClient;
@ -379,7 +379,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CartAdd', GetTarget(),(Self as ICallContext));
locSerializer.Put('CartAdd', TypeInfo(CartAdd_Type), CartAddParam);
locSerializer.Put('CartAddParam', TypeInfo(CartAdd_Type), CartAddParam);
locSerializer.EndCall();
MakeCall();
@ -395,7 +395,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CartCreate(
Const CartCreateParam : CartCreate_Type
const CartCreateParam : CartCreate_Type
):CartCreateResponse_Type;
Var
locSerializer : IFormatterClient;
@ -404,7 +404,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CartCreate', GetTarget(),(Self as ICallContext));
locSerializer.Put('CartCreate', TypeInfo(CartCreate_Type), CartCreateParam);
locSerializer.Put('CartCreateParam', TypeInfo(CartCreate_Type), CartCreateParam);
locSerializer.EndCall();
MakeCall();
@ -420,7 +420,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CartModify(
Const CartModifyParam : CartModify_Type
const CartModifyParam : CartModify_Type
):CartModifyResponse_Type;
Var
locSerializer : IFormatterClient;
@ -429,7 +429,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CartModify', GetTarget(),(Self as ICallContext));
locSerializer.Put('CartModify', TypeInfo(CartModify_Type), CartModifyParam);
locSerializer.Put('CartModifyParam', TypeInfo(CartModify_Type), CartModifyParam);
locSerializer.EndCall();
MakeCall();
@ -445,7 +445,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.CartClear(
Const CartClearParam : CartClear_Type
const CartClearParam : CartClear_Type
):CartClearResponse_Type;
Var
locSerializer : IFormatterClient;
@ -454,7 +454,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('CartClear', GetTarget(),(Self as ICallContext));
locSerializer.Put('CartClear', TypeInfo(CartClear_Type), CartClearParam);
locSerializer.Put('CartClearParam', TypeInfo(CartClear_Type), CartClearParam);
locSerializer.EndCall();
MakeCall();
@ -470,7 +470,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.TransactionLookup(
Const TransactionLookupParam : TransactionLookup_Type
const TransactionLookupParam : TransactionLookup_Type
):TransactionLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -479,7 +479,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('TransactionLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('TransactionLookup', TypeInfo(TransactionLookup_Type), TransactionLookupParam);
locSerializer.Put('TransactionLookupParam', TypeInfo(TransactionLookup_Type), TransactionLookupParam);
locSerializer.EndCall();
MakeCall();
@ -495,7 +495,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.SellerListingSearch(
Const SellerListingSearchParam : SellerListingSearch_Type
const SellerListingSearchParam : SellerListingSearch_Type
):SellerListingSearchResponse_Type;
Var
locSerializer : IFormatterClient;
@ -504,7 +504,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('SellerListingSearch', GetTarget(),(Self as ICallContext));
locSerializer.Put('SellerListingSearch', TypeInfo(SellerListingSearch_Type), SellerListingSearchParam);
locSerializer.Put('SellerListingSearchParam', TypeInfo(SellerListingSearch_Type), SellerListingSearchParam);
locSerializer.EndCall();
MakeCall();
@ -520,7 +520,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.SellerListingLookup(
Const SellerListingLookupParam : SellerListingLookup_Type
const SellerListingLookupParam : SellerListingLookup_Type
):SellerListingLookupResponse_Type;
Var
locSerializer : IFormatterClient;
@ -529,7 +529,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('SellerListingLookup', GetTarget(),(Self as ICallContext));
locSerializer.Put('SellerListingLookup', TypeInfo(SellerListingLookup_Type), SellerListingLookupParam);
locSerializer.Put('SellerListingLookupParam', TypeInfo(SellerListingLookup_Type), SellerListingLookupParam);
locSerializer.EndCall();
MakeCall();
@ -545,7 +545,7 @@ Begin
End;
function TAWSECommerceServicePortType_Proxy.MultiOperation(
Const MultiOperationParam : MultiOperationType
const MultiOperationParam : MultiOperation_Type
):MultiOperationResponse;
Var
locSerializer : IFormatterClient;
@ -554,7 +554,7 @@ Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('MultiOperation', GetTarget(),(Self as ICallContext));
locSerializer.Put('MultiOperation', TypeInfo(MultiOperationType), MultiOperationParam);
locSerializer.Put('MultiOperationParam', TypeInfo(MultiOperation_Type), MultiOperationParam);
locSerializer.EndCall();
MakeCall();

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<PathDelim Value="/"/>
<PathDelim Value="\"/>
<Version Value="5"/>
<General>
<Flags>
@ -10,7 +10,7 @@
<MainUnitHasTitleStatement Value="False"/>
</Flags>
<MainUnit Value="0"/>
<IconPath Value="./"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
@ -19,6 +19,7 @@
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
@ -26,36 +27,36 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="6">
<Units Count="7">
<Unit0>
<Filename Value="amazon_sample.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="amazon_sample"/>
<CursorPos X="33" Y="12"/>
<CursorPos X="19" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="20"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="../../synapse_http_protocol.pas"/>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="9" Y="23"/>
<TopLine Value="2"/>
<EditorIndex Value="4"/>
<UsageCount Value="10"/>
<EditorIndex Value="5"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="AWSECommerceService.pas"/>
<UnitName Value="AWSECommerceService"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="10"/>
<CursorPos X="72" Y="20731"/>
<TopLine Value="20710"/>
<EditorIndex Value="3"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
@ -63,36 +64,46 @@
<UnitName Value="AWSECommerceService_proxy"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="10"/>
<EditorIndex Value="2"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="../../../../../lazarus23_213/others_package/synapse/httpsend.pas"/>
<Filename Value="..\..\..\..\..\lazarus23_213\others_package\synapse\httpsend.pas"/>
<UnitName Value="httpsend"/>
<CursorPos X="27" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit4>
<Unit5>
<Filename Value="../../base_service_intf.pas"/>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="1" Y="4148"/>
<TopLine Value="4118"/>
<EditorIndex Value="3"/>
<UsageCount Value="10"/>
<EditorIndex Value="4"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="..\..\semaphore.pas"/>
<UnitName Value="semaphore"/>
<CursorPos X="1" Y="140"/>
<TopLine Value="116"/>
<EditorIndex Value="1"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit6>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="amazon_sample"/>
</Target>
<SearchPaths>
<OtherUnitFiles Value="../../;$(LazarusDir)/others_package/synapse/"/>
<OtherUnitFiles Value="..\..\;$(LazarusDir)\others_package\synapse\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
<CodeGeneration>
@ -105,19 +116,19 @@
<Debugging>
<BreakPoints Count="4">
<Item1>
<Source Value="D:/lazarusClean/fpcsrc/rtl/inc/getopts.pp"/>
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="230"/>
</Item1>
<Item2>
<Source Value="D:/lazarusClean/fpcsrc/rtl/inc/getopts.pp"/>
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="193"/>
</Item2>
<Item3>
<Source Value="D:/lazarusClean/fpcsrc/rtl/inc/getopts.pp"/>
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="198"/>
</Item3>
<Item4>
<Source Value="../../ws_helper/wsdl2pas_imp.pas"/>
<Source Value="..\..\ws_helper\wsdl2pas_imp.pas"/>
<Line Value="606"/>
</Item4>
</BreakPoints>

View File

@ -34,10 +34,10 @@
-N"obj"
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"
-U"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse"
-O"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse"
-I"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse"
-R"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse"
-U"c:\program files\borland\delphi7\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\"
-O"c:\program files\borland\delphi7\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\"
-I"c:\program files\borland\delphi7\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\"
-R"c:\program files\borland\delphi7\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST

View File

@ -94,10 +94,10 @@ OutputDir=
UnitOutputDir=obj
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse
SearchPath=$(DELPHI)\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\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=
DebugSourceDirs=C:\Programmes\lazarus\wst\trunk\
UsePackages=0
[Parameters]
RunParams=
@ -146,11 +146,13 @@ C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSc
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[HistoryLists\hlSearchPath]
Count=4
Item0=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse
Item1=..\..\;..\..\..\
Item2=..\..\
Item3=..\
Count=6
Item0=$(DELPHI)\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\
Item1=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\
Item2=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse
Item3=..\..\;..\..\..\
Item4=..\..\
Item5=..\
[HistoryLists\hlUnitOutputDirectory]
Count=1
Item0=obj

View File

@ -3,13 +3,24 @@ program user_client_console;
{$APPTYPE CONSOLE}
uses
Classes, SysUtils, TypInfo,
Classes,
SysUtils,
TypInfo, ActiveX,
user_service_intf_proxy,
synapse_tcp_protocol, synapse_http_protocol, library_protocol,
synapse_tcp_protocol,
synapse_http_protocol,
library_protocol,
binary_formatter,
user_service_intf;
base_soap_formatter, soap_formatter,
base_xmlrpc_formatter, xmlrpc_formatter,
user_service_intf,
wst_delphi_xml in '..\..\..\wst_delphi_xml.pas';
{$INCLUDE wst.inc}
type
TUser = TUser_Type;
TUserCategory = TUserCategory_Type;
var
UserServiceInst : UserService;
@ -58,8 +69,9 @@ begin
end;
end;
procedure HandleAdd();
type TAddType = ( atAdd, atUpdate );
procedure HandleAdd(const AType :TAddType);
const CAPTIONS : array[TAddType] of string = ( 'Adding a user :', 'Updating a user :' );
function ReadItem(const APrompt : string; const ANonNull : Boolean):string ;
begin
Result := '';
@ -74,7 +86,7 @@ var
buff : string;
begin
buff := '';
WriteLn('Adding a user :');
WriteLn(CAPTIONS[AType]);
try
usr := TUser.Create();
try
@ -86,7 +98,10 @@ begin
usr.Category:= Normal;
usr.eMail := ReadItem('Enter user e-mail : ',False);
usr.Preferences := ReadItem('Enter user Preferences : ',False);
UserServiceInst.Add(usr);
if ( AType = atUpdate ) then
UserServiceInst.Update(usr)
else
UserServiceInst.Add(usr);
finally
FreeAndNil(usr);
end;
@ -112,28 +127,46 @@ begin
end;
end;
type TTransportType = ( ttLibrary, ttTCP, ttHTTP );
procedure CreateProxy(const ATransportType :TTransportType);
const ADDRESS_MAP : array[TTransportType] of string = (
'LIB:FileName=..\..\library_server\lib_server.dll;target=UserService',
'TCP:Address=127.0.0.1;Port=1234;target=UserService',
//'http:Address=http://127.0.0.1:8080/wst/services/UserService'
'http:Address=http://127.0.0.1:8000/services/UserService'
);
procedure HandleDeleteUser();
var
buff : string;
begin
buff := ADDRESS_MAP[ATransportType];
if ( ATransportType = ttLibrary ) then
Write('Enter User Name : ');
ReadLn(buff);
UserServiceInst.Delete(buff);
end;
type
TTransportType = ( ttLibrary, ttTCP, ttHTTP );
TFormatType = ( ftBinary, ftSoap, ftXmlRPC );
var
TransportType : TTransportType;
FormatValue : TFormatType;
procedure CreateProxy();
const ADDRESS_MAP : array[TTransportType] of string = (
'LIB:FileName=..\library_server\lib_server.dll;target=UserService',
'TCP:Address=127.0.0.1;Port=1234;target=UserService',
//'http:Address=http://127.0.0.1:8080/wst/services/UserService/?format=soap'
'http:Address=http://127.0.0.1:8000/services/UserService'
);
FORMAT_MAP : array[TFormatType] of string = ( 'binary', 'soap', 'xmlrpc' );
var
buff : string;
begin
if ( TransportType = ttHTTP ) then
buff := Format('%s/?format=%s',[ADDRESS_MAP[TransportType],FORMAT_MAP[FormatValue]])
else
buff := ADDRESS_MAP[TransportType];
if ( TransportType = ttLibrary ) then
buff := StringReplace(buff,'\',PathDelim,[rfReplaceAll, rfIgnoreCase]);
UserServiceInst := TUserService_Proxy.Create(
'UserService',
'binary:',
FORMAT_MAP[FormatValue] + ':',
buff
);
end;
function ReadTransportType():TTransportType;
procedure ReadTransportType();
var
buff : string;
begin
@ -149,9 +182,34 @@ begin
buff := UpperCase(Trim(buff));
if ( Length(buff) > 0 ) and ( buff[1] in ['L','T', 'H'] ) then begin
case buff[1] of
'L' : Result := ttLibrary;
'T' : Result := ttTCP;
'H' : Result := ttHTTP;
'L' : TransportType := ttLibrary;
'T' : TransportType := ttTCP;
'H' : TransportType := ttHTTP;
end;
Break;
end;
end;
end;
procedure ReadFormatType();
var
buff : string;
begin
WriteLn;
WriteLn('Select a messaging format : ');
WriteLn(' B : binary ( binary_formatter.pas )');
WriteLn(' S : soap ( soap_formatter.pas )');
WriteLn(' X : XmlRpc ( xmlrpc_formatter.pas )');
WriteLn;
Write('Your selection : ');
while True do begin
ReadLn(buff);
buff := UpperCase(Trim(buff));
if ( Length(buff) > 0 ) and ( buff[1] in ['B','S', 'X'] ) then begin
case buff[1] of
'B' : FormatValue := ftBinary;
'S' : FormatValue := ftSoap;
'X' : FormatValue := ftXmlRPC;
end;
Break;
end;
@ -160,36 +218,56 @@ end;
var
strBuffer : string;
tt : TTransportType;
begin
SYNAPSE_RegisterTCP_Transport();
SYNAPSE_RegisterHTTP_Transport();
LIB_Register_Transport();
WriteLn('Sample Application using Web Services Toolkit');
CreateProxy(ReadTransportType());
WriteLn('Menu :');
WriteLn(' L : Show the user list');
WriteLn(' A : Add a new user');
WriteLn(' F : Find a new');
WriteLn(' C : Change the communication protocol');
WriteLn(' X : Exit');
WriteLn;
Write('Choose a item : ');
while True do begin
strBuffer := '';
ReadLn(strBuffer);
strBuffer := UpperCase(Trim(strBuffer));
if ( Length(strBuffer) > 0 ) then begin
case strBuffer[1] of
'L' : HandleShowAll();
'A' : HandleAdd();
'F' : HandleFindUser();
'C' : CreateProxy(ReadTransportType());
'X' : Break;
CoInitialize(nil);
try
SYNAPSE_RegisterTCP_Transport();
SYNAPSE_RegisterHTTP_Transport();
LIB_Register_Transport();
WriteLn('Sample Application using Web Services Toolkit');
ReadFormatType();
ReadTransportType();
CreateProxy();
WriteLn('Menu :');
WriteLn(' L : Show the user list');
WriteLn(' A : Add a new user');
WriteLn(' U : Update a user');
WriteLn(' D : Delete a user');
WriteLn(' F : Find a new');
WriteLn(' C : Change the communication protocol');
WriteLn(' Z : Change the messaging format');
WriteLn(' X : Exit');
WriteLn;
Write('Choose a item : ');
while True do begin
strBuffer := '';
ReadLn(strBuffer);
strBuffer := UpperCase(Trim(strBuffer));
if ( Length(strBuffer) > 0 ) then begin
case strBuffer[1] of
'L' : HandleShowAll();
'A' : HandleAdd(atAdd);
'U' : HandleAdd(atUpdate);
'D' : HandleDeleteUser();
'F' : HandleFindUser();
'C' :
begin
ReadTransportType();
CreateProxy();
end;
'Z' :
begin
ReadFormatType();
CreateProxy();
end;
'X' : Break;
end;
WriteLn;
Write('Choose a item : ');
end;
WriteLn;
Write('Choose a item : ');
end;
finally
CoUninitialize();
end;
end.

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="5"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -34,108 +34,114 @@
<PackageName Value="indylaz"/>
</Item1>
</RequiredPackages>
<Units Count="21">
<Units Count="40">
<Unit0>
<Filename Value="http_server.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="http_server"/>
<CursorPos X="19" Y="14"/>
<CursorPos X="26" Y="14"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="30"/>
<UsageCount Value="56"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="app_object.pas"/>
<UnitName Value="app_object"/>
<CursorPos X="17" Y="217"/>
<TopLine Value="196"/>
<EditorIndex Value="1"/>
<UsageCount Value="15"/>
<CursorPos X="41" Y="68"/>
<TopLine Value="50"/>
<EditorIndex Value="3"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="64" Y="102"/>
<TopLine Value="85"/>
<EditorIndex Value="11"/>
<UsageCount Value="14"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="19"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\metadata_wsdl.pas"/>
<UnitName Value="metadata_wsdl"/>
<CursorPos X="56" Y="308"/>
<TopLine Value="296"/>
<EditorIndex Value="12"/>
<UsageCount Value="15"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="21"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="..\..\metadata_service_imp.pas"/>
<UnitName Value="metadata_service_imp"/>
<CursorPos X="73" Y="68"/>
<TopLine Value="54"/>
<UsageCount Value="9"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="8"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\user_service_intf_imp.pas"/>
<UnitName Value="user_service_intf_imp"/>
<CursorPos X="1" Y="178"/>
<CursorPos X="22" Y="161"/>
<TopLine Value="160"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<EditorIndex Value="16"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="..\user_service_intf_binder.pas"/>
<UnitName Value="user_service_intf_binder"/>
<CursorPos X="69" Y="11"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<CursorPos X="23" Y="291"/>
<TopLine Value="264"/>
<EditorIndex Value="4"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\user_service_intf.pas"/>
<UnitName Value="user_service_intf"/>
<CursorPos X="3" Y="87"/>
<TopLine Value="158"/>
<EditorIndex Value="4"/>
<UsageCount Value="12"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="180"/>
<EditorIndex Value="17"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\metadata_repository.pas"/>
<UnitName Value="metadata_repository"/>
<CursorPos X="5" Y="45"/>
<TopLine Value="99"/>
<EditorIndex Value="13"/>
<UsageCount Value="15"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="22"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
<Filename Value="..\..\semaphore.pas"/>
<UnitName Value="semaphore"/>
<CursorPos X="35" Y="85"/>
<TopLine Value="24"/>
<UsageCount Value="10"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="20"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
<Filename Value="..\..\server_service_intf.pas"/>
<UnitName Value="server_service_intf"/>
<CursorPos X="14" Y="268"/>
<TopLine Value="267"/>
<EditorIndex Value="8"/>
<UsageCount Value="14"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="15"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="..\..\server_service_soap.pas"/>
<UnitName Value="server_service_soap"/>
<CursorPos X="44" Y="196"/>
<TopLine Value="79"/>
<EditorIndex Value="5"/>
<UsageCount Value="14"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="12"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -143,17 +149,17 @@
<UnitName Value="base_soap_formatter"/>
<CursorPos X="17" Y="28"/>
<TopLine Value="13"/>
<EditorIndex Value="7"/>
<UsageCount Value="14"/>
<EditorIndex Value="14"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
<Filename Value="..\..\server_service_imputils.pas"/>
<UnitName Value="server_service_imputils"/>
<CursorPos X="25" Y="94"/>
<TopLine Value="68"/>
<EditorIndex Value="10"/>
<UsageCount Value="13"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="18"/>
<UsageCount Value="26"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@ -161,177 +167,189 @@
<UnitName Value="IdCustomHTTPServer"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\i386.inc"/>
<CursorPos X="49" Y="1252"/>
<TopLine Value="1231"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit15>
<Unit16>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="7"/>
</Unit16>
<Unit17>
<Filename Value="..\..\xmlrpc_formatter.pas"/>
<UnitName Value="xmlrpc_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="28"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit17>
<Unit18>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<UnitName Value="server_service_xmlrpc"/>
<CursorPos X="53" Y="177"/>
<TopLine Value="152"/>
<EditorIndex Value="2"/>
<UsageCount Value="12"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit18>
<Unit19>
<Filename Value="..\..\server_binary_formatter.pas"/>
<UnitName Value="server_binary_formatter"/>
<CursorPos X="50" Y="133"/>
<TopLine Value="109"/>
<EditorIndex Value="6"/>
<UsageCount Value="10"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="13"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
</Unit19>
<Unit20>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="3" Y="30"/>
<TopLine Value="15"/>
<EditorIndex Value="3"/>
<UsageCount Value="10"/>
<CursorPos X="18" Y="21"/>
<TopLine Value="1"/>
<EditorIndex Value="11"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
<Filename Value="..\..\..\..\..\..\lazarus23_213\others_package\indy\indy-10.2.0.1\fpc\Core\IdSocketHandle.pas"/>
<UnitName Value="IdSocketHandle"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
</Unit21>
<Unit22>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\indy\indy-10.2.0.1\lazarus\IdAboutVCL.pas"/>
<UnitName Value="IdAboutVCL"/>
<CursorPos X="19" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
</Unit22>
<Unit23>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\indy\indy-10.2.0.1\fpc\System\IdGlobal.pas"/>
<UnitName Value="IdGlobal"/>
<CursorPos X="59" Y="982"/>
<TopLine Value="981"/>
<UsageCount Value="9"/>
</Unit23>
<Unit24>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<CursorPos X="12" Y="852"/>
<TopLine Value="871"/>
<UsageCount Value="10"/>
</Unit24>
<Unit25>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\innr.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="42"/>
<UsageCount Value="9"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\i386\fastmove.inc"/>
<CursorPos X="11" Y="835"/>
<TopLine Value="821"/>
<UsageCount Value="10"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.inc"/>
<CursorPos X="11" Y="306"/>
<TopLine Value="285"/>
<EditorIndex Value="5"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
</Unit27>
<Unit28>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\generic.inc"/>
<CursorPos X="5" Y="1289"/>
<TopLine Value="1"/>
<UsageCount Value="16"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.fpd"/>
<CursorPos X="22" Y="17"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
</Unit29>
<Unit30>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="11" Y="66"/>
<TopLine Value="52"/>
<EditorIndex Value="1"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit31>
<Unit32>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstr.inc"/>
<CursorPos X="6" Y="44"/>
<TopLine Value="30"/>
<UsageCount Value="9"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win\sysosh.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="51"/>
<UsageCount Value="9"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="322"/>
<UsageCount Value="9"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\varianth.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
</Unit35>
<Unit36>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\rtti.inc"/>
<CursorPos X="21" Y="77"/>
<TopLine Value="77"/>
<EditorIndex Value="6"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
<Filename Value="..\..\metadata_service.pas"/>
<UnitName Value="metadata_service"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit37>
<Unit38>
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
<UnitName Value="cursor_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="10"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit38>
<Unit39>
<Filename Value="..\user_service_intf.wst"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<SyntaxHighlighter Value="None"/>
</Unit39>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="2020" Column="1" TopLine="2004"/>
</Position1>
<Position2>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1188" Column="13" TopLine="1173"/>
</Position3>
<Position4>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1272" Column="15" TopLine="1243"/>
</Position4>
<Position5>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1424" Column="44" TopLine="1408"/>
</Position5>
<Position6>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="351" Column="33" TopLine="330"/>
</Position6>
<Position7>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="266" Column="15" TopLine="251"/>
</Position7>
<Position8>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="359" Column="1" TopLine="336"/>
</Position8>
<Position9>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position9>
<Position10>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="351" Column="1" TopLine="336"/>
</Position10>
<Position11>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="371" Column="63" TopLine="348"/>
</Position11>
<Position12>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="253" Column="70" TopLine="244"/>
</Position12>
<Position13>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="260" Column="18" TopLine="244"/>
</Position13>
<Position14>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="314" Column="16" TopLine="306"/>
</Position14>
<Position15>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="306" Column="29" TopLine="291"/>
</Position15>
<Position16>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="260" Column="56" TopLine="260"/>
</Position16>
<Position17>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="306" Column="41" TopLine="306"/>
</Position17>
<Position18>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="260" Column="25" TopLine="260"/>
</Position18>
<Position19>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="306" Column="46" TopLine="306"/>
</Position19>
<Position20>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="310" Column="27" TopLine="295"/>
</Position20>
<Position21>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="365" Column="10" TopLine="356"/>
</Position21>
<Position22>
<Filename Value="..\..\server_service_intf.pas"/>
<Caret Line="364" Column="30" TopLine="349"/>
</Position22>
<Position23>
<Filename Value="..\..\server_service_soap.pas"/>
<Caret Line="21" Column="18" TopLine="31"/>
</Position23>
<Position24>
<Filename Value="..\..\server_service_soap.pas"/>
<Caret Line="196" Column="38" TopLine="171"/>
</Position24>
<Position25>
<Filename Value="..\..\server_binary_formatter.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position25>
<Position26>
<Filename Value="..\..\server_binary_formatter.pas"/>
<Caret Line="132" Column="37" TopLine="108"/>
</Position26>
<Position27>
<Filename Value="..\..\server_service_soap.pas"/>
<Caret Line="196" Column="44" TopLine="171"/>
</Position27>
<Position28>
<Filename Value="..\..\server_binary_formatter.pas"/>
<Caret Line="26" Column="41" TopLine="15"/>
</Position28>
<Position29>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<Caret Line="51" Column="55" TopLine="40"/>
</Position29>
<Position30>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<Caret Line="177" Column="37" TopLine="152"/>
</Position30>
</JumpHistory>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -340,8 +358,10 @@
<Filename Value="http_server"/>
</Target>
<SearchPaths>
<IncludeFiles Value="..\..\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Inc\"/>
<OtherUnitFiles Value="..\;..\..\;..\..\wst_rtti_filter\"/>
<UnitOutputDirectory Value="obj"/>
<SrcPath Value="$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Core\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Protocols\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\System\"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>

View File

@ -1,7 +1,6 @@
{$INCLUDE wst_global.inc}
unit imp_helper;
{$mode objfpc}{$H+}
interface
uses

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="0"/>
<ActiveEditorIndexAtStart Value="13"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -30,24 +30,24 @@
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="30">
<Units Count="35">
<Unit0>
<Filename Value="user_client_console.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="user_client_console"/>
<CursorPos X="40" Y="150"/>
<TopLine Value="133"/>
<CursorPos X="64" Y="30"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="53"/>
<UsageCount Value="64"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="..\user_service_intf_proxy.pas"/>
<UnitName Value="user_service_intf_proxy"/>
<CursorPos X="1" Y="68"/>
<TopLine Value="54"/>
<EditorIndex Value="6"/>
<UsageCount Value="25"/>
<CursorPos X="74" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
@ -55,26 +55,24 @@
<UnitName Value="synapse_tcp_protocol"/>
<CursorPos X="29" Y="132"/>
<TopLine Value="101"/>
<EditorIndex Value="9"/>
<UsageCount Value="27"/>
<EditorIndex Value="13"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="3" Y="31"/>
<TopLine Value="9"/>
<EditorIndex Value="4"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
<CursorPos X="38" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="28"/>
</Unit3>
<Unit4>
<Filename Value="..\user_service_intf.pas"/>
<UnitName Value="user_service_intf"/>
<CursorPos X="3" Y="3"/>
<CursorPos X="53" Y="11"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="24"/>
<EditorIndex Value="2"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
@ -82,184 +80,345 @@
<UnitName Value="blcksock"/>
<CursorPos X="60" Y="2413"/>
<TopLine Value="2393"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit5>
<Unit6>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="3"/>
<UsageCount Value="27"/>
<EditorIndex Value="4"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\..\library_protocol.pas"/>
<UnitName Value="library_protocol"/>
<CursorPos X="18" Y="5"/>
<TopLine Value="26"/>
<UsageCount Value="15"/>
<CursorPos X="1" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="5"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\finah.inc"/>
<CursorPos X="10" Y="33"/>
<TopLine Value="17"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit8>
<Unit9>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\fina.inc"/>
<CursorPos X="13" Y="112"/>
<TopLine Value="105"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit9>
<Unit10>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysutilh.inc"/>
<CursorPos X="33" Y="202"/>
<TopLine Value="188"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit10>
<Unit11>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win32\system.pp"/>
<UnitName Value="System"/>
<CursorPos X="20" Y="35"/>
<TopLine Value="21"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\fexpand.inc"/>
<CursorPos X="10" Y="86"/>
<TopLine Value="226"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit12>
<Unit13>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="54" Y="33"/>
<TopLine Value="19"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit13>
<Unit14>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="22"/>
<UsageCount Value="15"/>
<UsageCount Value="14"/>
</Unit14>
<Unit15>
<Filename Value="..\..\metadata_repository.pas"/>
<UnitName Value="metadata_repository"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="15"/>
<UsageCount Value="14"/>
</Unit15>
<Unit16>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="17" Y="15"/>
<TopLine Value="1"/>
<UsageCount Value="15"/>
<UsageCount Value="14"/>
</Unit16>
<Unit17>
<Filename Value="..\..\library_imp_utils.pas"/>
<UnitName Value="library_imp_utils"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win\dynlibs.inc"/>
<CursorPos X="17" Y="27"/>
<TopLine Value="13"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit18>
<Unit19>
<Filename Value="..\..\semaphore.pas"/>
<UnitName Value="semaphore"/>
<CursorPos X="1" Y="96"/>
<TopLine Value="72"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit19>
<Unit20>
<Filename Value="..\..\soap_formatter.pas"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="21" Y="42"/>
<TopLine Value="46"/>
<UsageCount Value="18"/>
<UsageCount Value="17"/>
</Unit20>
<Unit21>
<Filename Value="..\..\xmlrpc_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="xmlrpc_formatter"/>
<CursorPos X="18" Y="139"/>
<TopLine Value="128"/>
<EditorIndex Value="5"/>
<UsageCount Value="39"/>
<CursorPos X="25" Y="72"/>
<TopLine Value="65"/>
<EditorIndex Value="6"/>
<UsageCount Value="50"/>
<Loaded Value="True"/>
</Unit21>
<Unit22>
<Filename Value="..\..\binary_formatter.pas"/>
<UnitName Value="binary_formatter"/>
<CursorPos X="17" Y="23"/>
<CursorPos X="20" Y="21"/>
<TopLine Value="1"/>
<EditorIndex Value="8"/>
<UsageCount Value="20"/>
<EditorIndex Value="9"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit22>
<Unit23>
<Filename Value="..\..\wst_delphi.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit23>
<Unit24>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="1" Y="1323"/>
<TopLine Value="1309"/>
<EditorIndex Value="7"/>
<UsageCount Value="20"/>
<CursorPos X="20" Y="1346"/>
<TopLine Value="1326"/>
<EditorIndex Value="8"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit24>
<Unit25>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="19"/>
<CursorPos X="56" Y="334"/>
<TopLine Value="319"/>
<EditorIndex Value="3"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="3" Y="592"/>
<TopLine Value="590"/>
<UsageCount Value="13"/>
<UsageCount Value="12"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="1" Y="483"/>
<TopLine Value="469"/>
<UsageCount Value="13"/>
<UsageCount Value="12"/>
</Unit27>
<Unit28>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\others_package\synapse\blcksock.pas"/>
<UnitName Value="blcksock"/>
<CursorPos X="1" Y="2407"/>
<TopLine Value="2393"/>
<UsageCount Value="13"/>
<UsageCount Value="12"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\packages\fcl-xml\src\xmlread.pp"/>
<UnitName Value="XMLRead"/>
<CursorPos X="1" Y="2763"/>
<TopLine Value="2749"/>
<UsageCount Value="13"/>
<UsageCount Value="12"/>
</Unit29>
<Unit30>
<Filename Value="..\..\imp_utils.pas"/>
<UnitName Value="imp_utils"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="34" Y="67"/>
<TopLine Value="54"/>
<EditorIndex Value="11"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit31>
<Unit32>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="34"/>
<UsageCount Value="9"/>
</Unit32>
<Unit33>
<Filename Value="..\..\base_binary_formatter.pas"/>
<UnitName Value="base_binary_formatter"/>
<CursorPos X="35" Y="1496"/>
<TopLine Value="1483"/>
<EditorIndex Value="10"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="14" Y="287"/>
<TopLine Value="274"/>
<EditorIndex Value="12"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit34>
</Units>
<JumpHistory Count="1" HistoryIndex="0">
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="user_client_console.pas"/>
<Caret Line="147" Column="27" TopLine="133"/>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<Caret Line="67" Column="34" TopLine="54"/>
</Position1>
<Position2>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="304" Column="36" TopLine="298"/>
</Position2>
<Position3>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="249" Column="54" TopLine="236"/>
</Position3>
<Position4>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="320" Column="63" TopLine="307"/>
</Position4>
<Position5>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="345" Column="58" TopLine="332"/>
</Position5>
<Position6>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="347" Column="60" TopLine="334"/>
</Position6>
<Position7>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="449" Column="66" TopLine="436"/>
</Position7>
<Position8>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="541" Column="58" TopLine="528"/>
</Position8>
<Position9>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="543" Column="62" TopLine="530"/>
</Position9>
<Position10>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="544" Column="62" TopLine="531"/>
</Position10>
<Position11>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="546" Column="66" TopLine="533"/>
</Position11>
<Position12>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="548" Column="58" TopLine="535"/>
</Position12>
<Position13>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="968" Column="3" TopLine="966"/>
</Position13>
<Position14>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="1357" Column="75" TopLine="1344"/>
</Position14>
<Position15>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="1360" Column="22" TopLine="1347"/>
</Position15>
<Position16>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="1465" Column="71" TopLine="1452"/>
</Position16>
<Position17>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="1532" Column="74" TopLine="1519"/>
</Position17>
<Position18>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="1862" Column="75" TopLine="1849"/>
</Position18>
<Position19>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="1864" Column="65" TopLine="1851"/>
</Position19>
<Position20>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2038" Column="66" TopLine="2025"/>
</Position20>
<Position21>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2045" Column="63" TopLine="2032"/>
</Position21>
<Position22>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2074" Column="12" TopLine="2061"/>
</Position22>
<Position23>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2104" Column="70" TopLine="2091"/>
</Position23>
<Position24>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2107" Column="65" TopLine="2094"/>
</Position24>
<Position25>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2148" Column="74" TopLine="2135"/>
</Position25>
<Position26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2150" Column="65" TopLine="2137"/>
</Position26>
<Position27>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2159" Column="66" TopLine="2146"/>
</Position27>
<Position28>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2171" Column="22" TopLine="2170"/>
</Position28>
<Position29>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="2172" Column="26" TopLine="2158"/>
</Position29>
<Position30>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<Caret Line="258" Column="23" TopLine="245"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

View File

@ -23,6 +23,10 @@ begin
WriteLn(' Category = ',GetEnumName(TypeInfo(TUserCategory),Ord(AUser.Category)));
WriteLn(' e-Mail = ',AUser.eMail);
WriteLn(' Preferences = ',AUser.Preferences);
WriteLn(' Note');
WriteLn(' Header = ',AUser.Note.Header);
WriteLn(' Author = ',AUser.Note.Author);
WriteLn(' Date = ',AUser.Note.Date);
end else begin
WriteLn('<Empty User>');
end;
@ -89,6 +93,12 @@ begin
usr.Category:= Normal;
usr.eMail := ReadItem('Enter user e-mail : ',False);
usr.Preferences := ReadItem('Enter user Preferences : ',False);
buff := UpperCase(ReadItem('Do you want to add some notes : ',True));
if ( buff[1] = 'O' ) then begin
usr.Note.Header := ReadItem('Enter user Note.Header : ',False);
usr.Note.Author := ReadItem('Enter user Note.Author : ',False);
usr.Note.Date := ReadItem('Enter user Note.Date : ',False);
end;
if ( AType = atUpdate ) then
UserServiceInst.Update(usr)
else

View File

@ -2,7 +2,7 @@
This unit has been produced by ws_helper.
Input unit name : "user_service_intf".
This unit name : "user_service_intf".
Date : "26/06/2007 23:46:28".
Date : "12/07/2007 10:55:02".
}
unit user_service_intf;
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
@ -18,6 +18,7 @@ type
TUserArray = class;
TUser_Type = class;
TNote_Type = class;
TUserCategory_Type = (
Normal
@ -30,11 +31,27 @@ type
FUserName : string;
FeMail : string;
FPreferences : string;
FNote : TNote_Type;
public
constructor Create();override;
destructor Destroy();override;
published
property Category : TUserCategory_Type 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;
property Note : TNote_Type read FNote write FNote;
end;
TNote_Type = class(TBaseComplexRemotable)
private
FHeader : string;
FAuthor : string;
FDate : string;
published
property Header : string read FHeader write FHeader;
property Author : string read FAuthor write FAuthor;
property Date : string read FDate write FDate;
end;
TUserArray = class(TBaseObjectArrayRemotable)
@ -46,7 +63,7 @@ type
end;
UserService = interface(IInvokable)
['{757DE451-CE83-454C-8757-6D72428EB1AA}']
['{F49D8FA4-9BBC-4321-9869-5BA745070ABC}']
function GetList():TUserArray;
procedure Add(
const AUser : TUser_Type
@ -67,6 +84,21 @@ type
Implementation
uses metadata_repository;
{ TUser_Type }
constructor TUser_Type.Create();
begin
inherited Create();
FNote := TNote_Type.Create();
end;
destructor TUser_Type.Destroy();
begin
if Assigned(FNote) then
FreeAndNil(FNote);
inherited Destroy();
end;
{ TUserArray }
function TUserArray.GetItem(AIndex: Integer): TUser_Type;
@ -208,10 +240,11 @@ end;
initialization
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserCategory_Type),'TUserCategory');
GetTypeRegistry().ItemByTypeInfo[TypeInfo(TUserCategory_Type)].RegisterExternalPropertyName('Normal','result');
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUser_Type),'TUser');
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TNote_Type),'TNote');
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserArray),'TUserArray');
GetTypeRegistry().ItemByTypeInfo[TypeInfo(TUserArray)].RegisterExternalPropertyName(sARRAY_ITEM,'item');
GetTypeRegistry().ItemByTypeInfo[TypeInfo(TUser_Type)].RegisterExternalPropertyName('Category','item');
End.

View File

@ -1,28 +1,32 @@
<?xml version="1.0"?>
<definitions name="user_service_intf" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:UserService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="urn:UserService">
<definitions name="urn:UserService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:UserService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="urn:UserService">
<types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:UserService">
<xsd:complexType name="TUserArray">
<xsd:sequence><xsd:element name="item" type="tns:TUser" maxOccurs="unbounded" minOccurs="0"/></xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TUser">
<xsd:sequence>
<xsd:element name="Category" type="tns:TUserCategory" maxOccurs="1" minOccurs="1"/>
<xsd:element name="UserName" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="eMail" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="Preferences" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="Note" type="tns:TNote" maxOccurs="1" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<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" maxOccurs="1" minOccurs="1"/>
<xsd:element name="UserName" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="eMail" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="Preferences" type="xsd:string" maxOccurs="1" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TUserArray">
<xsd:complexType>
<xsd:sequence><xsd:element name="item" type="tns:TUser" maxOccurs="unbounded" minOccurs="0"/></xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="TNote">
<xsd:sequence>
<xsd:element name="Header" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="Author" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="Date" type="xsd:string" maxOccurs="1" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="GetList"/>
@ -36,6 +40,7 @@
<message name="Delete"><part name="AName" type="xsd:string"/></message>
<message name="DeleteResponse"><part name="result" type="xsd:boolean"/></message>
<portType name="UserService">
<document><GUID value="{F49D8FA4-9BBC-4321-9869-5BA745070ABC}"/></document>
<operation name="GetList">
<input message="tns:GetList"/>
<output message="tns:GetListResponse"/>

View File

@ -250,11 +250,11 @@ 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);
RegisterVerbHandler('GetList',{$IFDEF FPC}@{$ENDIF}GetListHandler);
RegisterVerbHandler('Add',{$IFDEF FPC}@{$ENDIF}AddHandler);
RegisterVerbHandler('Update',{$IFDEF FPC}@{$ENDIF}UpdateHandler);
RegisterVerbHandler('Find',{$IFDEF FPC}@{$ENDIF}FindHandler);
RegisterVerbHandler('Delete',{$IFDEF FPC}@{$ENDIF}DeleteHandler);
end;
@ -286,7 +286,7 @@ initialization
{$IF DECLARED(Register_user_service_intf_NameSpace)}
Register_user_service_intf_NameSpace();
{$ENDIF}
{$IFEND}
{$i user_service_intf.wst}

View File

@ -5,7 +5,7 @@ This unit has been produced by ws_helper.
Date : "30/04/2007 00:07".
}
Unit user_service_intf_imp;
{$mode objfpc}{$H+}
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
Interface
Uses SysUtils, Classes,

View File

@ -1,23 +1,40 @@
{
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.
}
{$INCLUDE wst_global.inc}
unit semaphore;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, syncobjs;
Classes, SysUtils, syncobjs{$IFNDEF FPC},Windows{$ENDIF};
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
ESemaphoreException = class(Exception);
{ TSemaphoreObject }
TSemaphoreObject = class
private
FHandle : PRTLEvent;
FHandle : {$IFNDEF FPC}THandle{$ELSE}PRTLEvent{$ENDIF};
FLimit: Integer;
{$IFDEF FPC}
FCurrentState : Integer;
FCriticalSection : TCriticalSection;
{$ENDIF}
public
constructor Create(const ALimit : Integer);
destructor Destroy(); override;
@ -34,20 +51,42 @@ constructor TSemaphoreObject.Create(const ALimit: Integer);
begin
Assert(ALimit>0);
FLimit := ALimit;
{$IFNDEF FPC}
FHandle := CreateSemaphore(nil,ALimit,ALimit,'');
{$ELSE}
FHandle := RTLEventCreate();
FCriticalSection := TCriticalSection.Create();
FCurrentState := FLimit;
RTLeventSetEvent(FHandle);
RTLeventSetEvent(FHandle);
{$ENDIF}
end;
destructor TSemaphoreObject.Destroy();
begin
{$IFNDEF FPC}
CloseHandle(FHandle);
{$ELSE}
RTLeventdestroy(FHandle);
FreeAndNil(FCriticalSection);
{$ENDIF}
inherited Destroy();
end;
function TSemaphoreObject.WaitFor(ATimeout: Cardinal): TWaitResult;
{$IFNDEF FPC}
var
intRes : DWORD;
begin
intRes := WaitForSingleObject(FHandle,ATimeout);
case intRes of
WAIT_OBJECT_0 : Result := wrSignaled;
WAIT_TIMEOUT : Result := wrTimeout;
WAIT_ABANDONED : Result := wrAbandoned;
else
Result := wrTimeout;
end;
end;
{$ELSE}
var
ok : Boolean;
begin
@ -79,9 +118,13 @@ begin
if ok then
Result := wrSignaled;
end;
{$ENDIF}
procedure TSemaphoreObject.Release();
begin
{$IFNDEF FPC}
ReleaseSemaphore(FHandle,1,nil);
{$ELSE}
FCriticalSection.Acquire();
try
if ( FCurrentState < Limit ) then begin
@ -93,6 +136,7 @@ begin
FCriticalSection.Release();
end;
RTLeventSetEvent(FHandle);
{$ENDIF}
end;
end.

View File

@ -10,10 +10,9 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit server_binary_formatter;
{$INCLUDE wst.inc}
interface
uses
@ -21,6 +20,9 @@ uses
base_service_intf, server_service_intf,
base_binary_formatter;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sBINARY_CONTENT_TYPE = 'binary';
sPROTOCOL_NAME = sBINARY_CONTENT_TYPE;

View File

@ -10,15 +10,17 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit server_service_imputils;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, TypInfo,
server_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Type

View File

@ -10,16 +10,17 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit server_service_intf;
{$INCLUDE wst.inc}
interface
uses
Classes, SysUtils, TypInfo, Contnrs,
base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Type

View File

@ -10,17 +10,21 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst.inc}
{$INCLUDE wst_global.inc}
unit server_service_soap;
interface
uses
Classes, SysUtils, TypInfo, DOM,
Classes, SysUtils, TypInfo,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
base_service_intf, server_service_intf, server_service_imputils,
base_soap_formatter;
Type
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
{ TSOAPFormatter }

View File

@ -10,23 +10,26 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit server_service_xmlrpc;
{$INCLUDE wst.inc}
interface
uses
Classes, SysUtils, TypInfo, DOM,
Classes, SysUtils, TypInfo,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
base_service_intf, server_service_intf,
base_xmlrpc_formatter;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
{$M+}
{ TXmlRpcFormatter }
TXmlRpcFormatter = class(TXmlRpcBaseFormatter,IFormatterBase,IFormatterResponse)
private
FCallProcedureName : string;
@ -51,6 +54,7 @@ type
procedure Server_service_RegisterXmlRpcFormat();
implementation
{$IFDEF FPC}uses wst_fpc_xml;{$ENDIF}
{ TXmlRpcFormatter }
@ -86,14 +90,14 @@ begin
if not SameText(sMETHOD_CALL,callNode.NodeName) then
Error('XML root node must be "%s".',[sMETHOD_CALL]);
tmpNode := callNode.FindNode(sMETHOD_NAME);
tmpNode := FindNode(callNode,sMETHOD_NAME);
if not Assigned(tmpNode) then
Error('Node not found : "%s".',[sMETHOD_NAME]);
if not tmpNode.HasChildNodes() then
Error('"%s" does not provide value node.',[sMETHOD_NAME]);
FCallProcedureName := Trim(tmpNode.FirstChild.NodeValue);
tmpNode := callNode.FindNode(sPARAMS);
tmpNode := FindNode(callNode,sPARAMS);
if not Assigned(tmpNode) then
Error('Node not found : "%s".',[sPARAMS]);
PushStackParams(tmpNode);

View File

@ -12,7 +12,7 @@
}
{ Base service interface }
{$INCLUDE wst_global.inc}
unit service_intf;
interface
@ -22,6 +22,7 @@ uses
base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Const
sTARGET = 'target';

View File

@ -10,19 +10,20 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit soap_formatter;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
interface
uses
Classes, SysUtils, TypInfo, DOM,
Classes, SysUtils, TypInfo,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
base_service_intf, service_intf, imp_utils, base_soap_formatter;
Type
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
{ TSOAPFormatter }

View File

@ -10,9 +10,10 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit synapse_http_protocol;
//{$DEFINE WST_DBG}
{$DEFINE WST_DBG}
interface
@ -22,6 +23,7 @@ uses
httpsend;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
Const
sTRANSPORT_NAME = 'HTTP';
@ -170,8 +172,8 @@ begin
TMemoryStream(AResponse).SaveToFile('response.log');
if IsConsole then
WriteLn(s)
else
ShowMessage(s);
{else
ShowMessage(s)};
{$ENDIF}
end;

View File

@ -10,6 +10,7 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit synapse_tcp_protocol;
interface
@ -20,6 +21,7 @@ uses
blcksock;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
{$DEFINE WST_DBG}

View File

@ -10,15 +10,17 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit synapse_tcp_server;
{$INCLUDE wst.inc}
interface
uses
Classes, SysUtils, blcksock, synsock;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sSERVER_PORT = '1234';
@ -75,7 +77,8 @@ type
function SetLogger(ALogger : ILogger):ILogger ;
implementation
uses binary_streamer, server_service_intf, server_service_imputils;
uses binary_streamer, server_service_intf, server_service_imputils
{$IFNDEF FPC},ActiveX{$ENDIF}, ComObj;
var FLoggerInst : ILogger = nil;
function SetLogger(ALogger : ILogger):ILogger ;
@ -163,6 +166,15 @@ begin
inherited Destroy();
end;
function GetFormatForContentType(const AContentType : string):string ;
begin
Result := Trim(AContentType);
if AnsiSameText(Result,'text/xml') then
Result := 'soap'
else
Result := 'binary';
end;
procedure TClientHandlerThread.Execute();
var
wrtr : IDataStore;
@ -171,46 +183,55 @@ var
rqst : IRequestBuffer;
i : PtrUInt;
begin
FInputStream := TMemoryStream.Create();
FOutputStream := TMemoryStream.Create();
FSocketObject := TTCPBlockSocket.Create();
{$IFNDEF FPC}
CoInitialize(nil);
try
FSocketObject.RaiseExcept := True;
{$ENDIF}
FInputStream := TMemoryStream.Create();
FOutputStream := TMemoryStream.Create();
FSocketObject := TTCPBlockSocket.Create();
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(); WriteLn();WriteLn('ContentType=',ctntyp,', ','Target = ',trgt);WriteLn();WriteLn(buff);
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);
FSocketObject.RaiseExcept := True;
try
FSocketObject.Socket := FSocketHandle;
FSocketObject.GetSins();
while not Terminated do begin
FOutputStream.Size := 0;
wrtr := CreateBinaryWriter(FOutputStream);
wrtr.WriteStr(buff);
SendOutputBuffer();
ClearBuffers();
if ( ReadInputBuffer() >= SizeOf(LongInt) ) then begin
rdr := CreateBinaryReader(FInputStream);
trgt := rdr.ReadStr();
ctntyp := rdr.ReadStr();
buff := rdr.ReadStr(); WriteLn;WriteLn('ContentType=',ctntyp,', ','Target = ',trgt);WriteLn;WriteLn(buff);
rdr := nil;
FInputStream.Size := 0;
FInputStream.Write(buff[1],Length(buff));
FInputStream.Position := 0;
rqst := TRequestBuffer.Create(trgt,ctntyp,FInputStream,FOutputStream,GetFormatForContentType(ctntyp));
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;
except
on e : Exception do begin
Logger().Log('Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]);
end;
finally
FreeAndNil(FSocketObject);
end;
{$IFNDEF FPC}
finally
FreeAndNil(FSocketObject);
CoUninitialize();
end;
{$ENDIF}
end;
{ TServerListnerThread }
@ -233,24 +254,33 @@ procedure TServerListnerThread.Execute();
var
ClientSock : TSocket;
begin
{$IFNDEF FPC}
CoInitialize(nil);
try
FSocketObject.RaiseExcept := True;
FSocketObject.CreateSocket();
FSocketObject.SetLinger(True,10);
FSocketObject.Bind('127.0.0.1',sSERVER_PORT);
FSocketObject.Listen();
while not Terminated do begin
if FSocketObject.CanRead(DefaultTimeOut) then begin
ClientSock := FSocketObject.Accept();
TClientHandlerThread.Create(ClientSock);
{$ENDIF}
try
FSocketObject.RaiseExcept := True;
FSocketObject.CreateSocket();
FSocketObject.SetLinger(True,10);
FSocketObject.Bind('127.0.0.1',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;
except
on e : Exception do begin
Logger().Log('Listner Thread Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]);
Logger().Log('Listner stoped.');
end;
{$IFNDEF FPC}
finally
CoUninitialize();
end;
{$ENDIF}
end;
end.

View File

@ -0,0 +1,172 @@
{
This unit has been produced by ws_helper.
Input unit name : "SDMTabularService".
This unit name : "SDMTabularService".
Date : "11/07/2007 23:11:05".
}
unit SDMTabularService;
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
interface
uses SysUtils, Classes, TypInfo, base_service_intf, service_intf;
const
sNAME_SPACE = 'http://SDMDataAccess.nrcs.usda.gov/Tabular/SDMTabularService.asmx';
sUNIT_NAME = 'SDMTabularService';
type
schema_Type = class(TStringBufferRemotable) end;
//diffgram_Type = class(TStringBufferRemotable);
RunQueryType = class;
RunQueryResponse_RunQueryResult_Type = class;
RunQueryResponse = class;
RunQueryType = class(TBaseComplexRemotable)
private
FQuery : string;
private
function HasQuery() : Boolean;
published
property Query : string read FQuery write FQuery stored HasQuery;
end;
{ RunQueryResponse_RunQueryResult_Type }
RunQueryResponse_RunQueryResult_Type = class(TBaseComplexRemotable)
private
Fdiffgram : schema_Type;
Fschema : schema_Type;
function Hasdiffgram : boolean;
public
constructor Create();override;
Destructor Destroy();override;
published
property schema : schema_Type read Fschema write Fschema;
property diffgram : schema_Type read Fdiffgram write Fdiffgram stored Hasdiffgram;
end;
RunQueryResponse = class(TBaseComplexRemotable)
private
FRunQueryResult : RunQueryResponse_RunQueryResult_Type;
private
function HasRunQueryResult() : Boolean;
public
constructor Create();override;
destructor Destroy();override;
published
property RunQueryResult : RunQueryResponse_RunQueryResult_Type read FRunQueryResult write FRunQueryResult stored HasRunQueryResult;
end;
SDMTabularServiceSoap = interface(IInvokable)
['{6F9CD0B5-85E3-43A5-9265-5F6AD11B3742}']
function RunQuery(
Const RunQueryParam : RunQueryType
):RunQueryResponse;
end;
procedure Register_SDMTabularService_ServiceMetadata();
Implementation
uses metadata_repository;
{ RunQueryType }
function RunQueryType.HasQuery() : Boolean;
begin
Result := True;
end;
{ RunQueryResponse }
destructor RunQueryResponse.Destroy();
begin
if Assigned(FRunQueryResult) then
FreeAndNil(FRunQueryResult);
inherited Destroy();
end;
function RunQueryResponse.HasRunQueryResult() : Boolean;
begin
Result := True;
end;
constructor RunQueryResponse.Create();
begin
inherited Create();
FRunQueryResult := RunQueryResponse_RunQueryResult_Type.Create();
end;
procedure Register_SDMTabularService_ServiceMetadata();
var
mm : IModuleMetadataMngr;
begin
mm := GetModuleMetadataMngr();
mm.SetRepositoryNameSpace(sUNIT_NAME, sNAME_SPACE);
mm.SetServiceCustomData(
sUNIT_NAME,
'SDMTabularServiceSoap',
'TRANSPORT_Address',
'http://sdmdataaccess.nrcs.usda.gov/Tabular/SDMTabularService.asmx'
);
mm.SetServiceCustomData(
sUNIT_NAME,
'SDMTabularServiceSoap',
'FORMAT_Style',
'document'
);
mm.SetOperationCustomData(
sUNIT_NAME,
'SDMTabularServiceSoap',
'RunQuery',
'TRANSPORT_soapAction',
'http://SDMDataAccess.nrcs.usda.gov/Tabular/SDMTabularService.asmx/RunQuery'
);
mm.SetOperationCustomData(
sUNIT_NAME,
'SDMTabularServiceSoap',
'RunQuery',
'FORMAT_Input_EncodingStyle',
'literal'
);
mm.SetOperationCustomData(
sUNIT_NAME,
'SDMTabularServiceSoap',
'RunQuery',
'FORMAT_OutputEncodingStyle',
'literal'
);
end;
{ RunQueryResponse_RunQueryResult_Type }
function RunQueryResponse_RunQueryResult_Type.Hasdiffgram : boolean;
begin
Result := ( diffgram <> nil );
end;
constructor RunQueryResponse_RunQueryResult_Type.Create();
begin
inherited Create();
Fschema := schema_Type.Create();
Fdiffgram := schema_Type.Create();
end;
destructor RunQueryResponse_RunQueryResult_Type.Destroy();
begin
FreeAndNil(Fdiffgram);
FreeAndNil(Fschema);
inherited Destroy();
end;
initialization
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RunQueryType),'RunQuery');
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RunQueryResponse_RunQueryResult_Type),'RunQueryResponse_RunQueryResult_Type').RegisterExternalPropertyName('schema','xs:schema');
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RunQueryResponse_RunQueryResult_Type),'RunQueryResponse_RunQueryResult_Type').RegisterExternalPropertyName('diffgram','diffgr:diffgram');
GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RunQueryResponse),'RunQueryResponse');
End.

View File

@ -0,0 +1,6 @@
GetWSTResourceManager().AddResource('SDMTABULARSERVICE',
#0#0#0#20'WST_METADATA_0.2.2.0'#0#0#0#17'SDMTabularService'#1#0#0#0#21'SDMTa'
+'bularServiceSoap'#1#0#0#0#8'RunQuery'#2#0#0#0#8'RunQuery'#0#0#0#8'RunQuery'#0
+#0#0#0#0#0#0#1#0#0#0#16'RunQueryResponse'#0#0#0#16'RunQueryResponse'#0#0#0#0
+#0#0#0#3''
);

View File

@ -0,0 +1,75 @@
{
This unit has been produced by ws_helper.
Input unit name : "SDMTabularService".
This unit name : "SDMTabularService_proxy".
Date : "11/07/2007 23:11:05".
}
Unit SDMTabularService_proxy;
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
Interface
Uses SysUtils, Classes, TypInfo, base_service_intf, service_intf, SDMTabularService;
Type
TSDMTabularServiceSoap_Proxy=class(TBaseProxy,SDMTabularServiceSoap)
Protected
class function GetServiceType() : PTypeInfo;override;
function RunQuery(
Const RunQueryParam : RunQueryType
):RunQueryResponse;
End;
Function wst_CreateInstance_SDMTabularServiceSoap(const AFormat : string = 'SOAP:'; const ATransport : string = 'HTTP:'):SDMTabularServiceSoap;
Implementation
uses wst_resources_imp, metadata_repository;
Function wst_CreateInstance_SDMTabularServiceSoap(const AFormat : string; const ATransport : string):SDMTabularServiceSoap;
Begin
Result := TSDMTabularServiceSoap_Proxy.Create('SDMTabularServiceSoap',AFormat+GetServiceDefaultFormatProperties(TypeInfo(SDMTabularServiceSoap)),ATransport + 'address=' + GetServiceDefaultAddress(TypeInfo(SDMTabularServiceSoap)));
End;
{ TSDMTabularServiceSoap_Proxy implementation }
class function TSDMTabularServiceSoap_Proxy.GetServiceType() : PTypeInfo;
begin
result := TypeInfo(SDMTabularServiceSoap);
end;
function TSDMTabularServiceSoap_Proxy.RunQuery(
Const RunQueryParam : RunQueryType
):RunQueryResponse;
Var
locSerializer : IFormatterClient;
strPrmName : string;
Begin
locSerializer := GetSerializer();
Try
locSerializer.BeginCall('RunQuery', GetTarget(),(Self as ICallContext));
locSerializer.Put('RunQuery', TypeInfo(RunQueryType), RunQueryParam);
locSerializer.EndCall();
MakeCall();
locSerializer.BeginCallRead((Self as ICallContext));
TObject(Result) := Nil;
strPrmName := 'RunQueryResponse';
locSerializer.Get(TypeInfo(RunQueryResponse), strPrmName, Result);
Finally
locSerializer.Clear();
End;
End;
initialization
{$i SDMTabularService.wst}
{$IF DECLARED(Register_SDMTabularService_ServiceMetadata)}
Register_SDMTabularService_ServiceMetadata();
{$IFEND}
End.

View 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"..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\"
-O"..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\"
-I"..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\"
-R"..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST

View File

@ -0,0 +1,162 @@
[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=..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\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=10
Item0=..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\
Item1=..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\
Item2=..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\synapse
Item3=..\..\..\;..\..\..\ws_helper\
Item4=$(DELPHI)\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\
Item5=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\
Item6=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse
Item7=..\..\;..\..\..\
Item8=..\..\
Item9=..\
[HistoryLists\hlUnitOutputDirectory]
Count=1
Item0=obj

View File

@ -0,0 +1,84 @@
program test_prj;
{$APPTYPE CONSOLE}
uses
SysUtils, ActiveX,
synapse_http_protocol,
soap_formatter,
SDMTabularService,
SDMTabularService_proxy;
var
SDMSoap : SDMTabularServiceSoap;
QueryBuffer : RunQueryType;
QryResult : RunQueryResponse;
XmlFileVar : TextFile;
begin
CoInitialize(nil);
try
SYNAPSE_RegisterHTTP_Transport();
// if Assigned(InitProc) then
// TProcedure(InitProc);
QueryBuffer := RunQueryType.Create();
try
SDMSoap := wst_CreateInstance_SDMTabularServiceSoap();
if not Assigned(SDMSoap) then
begin
WriteLn('Service not assigned');
Exit;
end;
QueryBuffer.Query :=
'SELECT ' +
'saversion, saverest, ' +
'l.areasymbol, l.areaname, l.lkey, ' +
'mu.musym, mu.muname, museq, mu.mukey, ' +
'textcat, textsubcat, ' +
'flodfreqdcd, wtdepannmin, ' +
'comppct_r, compname, localphase, slope_r, slope_l, slope_h, hydgrp, tfact, runoff, drainagecl, wei, majcompflag, slopelenusle_r, c.cokey, ' +
'reskind, resdept_r, ' +
'hzdept_r, hzdepb_r, om_l, om_h, kffact, kwfact, ch.chkey, ' +
'texture ' +
'FROM sacatalog sac ' +
'INNER JOIN legend l ON l.areasymbol = sac.areasymbol AND l.areasymbol = ''IN001'' ' +
'INNER JOIN mapunit mu ON mu.lkey = l.lkey ' +
'LEFT OUTER JOIN mutext mutx ON mutx.mukey = mu.mukey AND mutx.textcat = ''innitrate'' ' +
'LEFT OUTER JOIN muaggatt muag ON muag.mukey = mu.mukey ' +
'LEFT OUTER JOIN component c ON c.mukey = mu.mukey AND c.majcompflag = ''Yes'' ' +
'LEFT OUTER JOIN corestrictions core on core.cokey = c.cokey AND core.reskind IN (''Densic bedrock'', ''Lithic bedrock'', ''Paralithic bedrock'') ' +
'LEFT OUTER JOIN chorizon ch ON ch.cokey = c.cokey AND ch.hzdept_r = ''0'' ' +
'LEFT OUTER JOIN chtexturegrp chtg ON chtg.chkey = ch.chkey ' +
'ORDER BY l.areasymbol, museq, comppct_r DESC, compname, hydgrp, texture';
// WriteLn(QueryStr);
try
QryResult := SDMSoap.RunQuery(QueryBuffer);
if not Assigned(QryResult) then
WriteLn('QryResult not assigned');
except on E:Exception do
begin
WriteLn(E.Message);
Exit;
end;
end;
// WriteLn(QryResult.s_schema);
WriteLn(Copy(QryResult.RunQueryResult.schema.Data, 1, 500));
AssignFile(XmlFileVar, 'junk.xml');
Rewrite(XmlFileVar);
WriteLn(XmlFileVar, QryResult.RunQueryResult.diffgram.Data);
CloseFile(XmlFileVar);
finally
QueryBuffer.Free();
end;
finally
CoUninitialize();
end;
end.

View File

@ -0,0 +1 @@
..\..\ws_helper\ws_helper.exe -uA -p -o. SDMTabularService.wsdl >parsing.res.txt

View File

@ -0,0 +1,207 @@
<?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=""/>
<Language Value=""/>
<CharSet 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="17">
<Unit0>
<Filename Value="test_prj.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="test_prj"/>
<CursorPos X="1" Y="69"/>
<TopLine Value="52"/>
<EditorIndex Value="0"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="SDMTabularService.pas"/>
<UnitName Value="SDMTabularService"/>
<CursorPos X="3" Y="154"/>
<TopLine Value="145"/>
<EditorIndex Value="10"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="SDMTabularService_proxy.pas"/>
<UnitName Value="SDMTabularService_proxy"/>
<CursorPos X="70" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="8"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<CursorPos X="4" Y="345"/>
<TopLine Value="345"/>
<UsageCount Value="10"/>
</Unit3>
<Unit4>
<Filename Value="..\..\binary_streamer.pas"/>
<UnitName Value="binary_streamer"/>
<CursorPos X="95" Y="107"/>
<TopLine Value="6"/>
<EditorIndex Value="6"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="46" Y="10"/>
<TopLine Value="5"/>
<EditorIndex Value="4"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="..\..\wst_global.inc"/>
<CursorPos X="11" Y="4"/>
<TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="28" Y="212"/>
<TopLine Value="201"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\soap_formatter.pas"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="1" Y="94"/>
<TopLine Value="6"/>
<EditorIndex Value="2"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="30" Y="176"/>
<TopLine Value="142"/>
<EditorIndex Value="1"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="28" Y="392"/>
<TopLine Value="387"/>
<EditorIndex Value="3"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="51" Y="4446"/>
<TopLine Value="4425"/>
<EditorIndex Value="11"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\extra\univint\Dialogs.pas"/>
<UnitName Value="Dialogs"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1055"/>
<UsageCount Value="10"/>
</Unit12>
<Unit13>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="5"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
<Filename Value="..\..\wst_delphi.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="14" Y="692"/>
<TopLine Value="678"/>
<UsageCount Value="10"/>
</Unit15>
<Unit16>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="10" Y="971"/>
<TopLine Value="957"/>
<UsageCount Value="10"/>
</Unit16>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="..\..\;$(LazarusDir)\others_package\synapse\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<BreakPoints Count="1">
<Item1>
<Source Value="..\..\ws_helper\wsdl2pas_imp.pas"/>
<Line Value="1346"/>
</Item1>
</BreakPoints>
<Exceptions Count="2">
<Item1>
<Name Value="ECodetoolError"/>
</Item1>
<Item2>
<Name Value="EFOpenError"/>
</Item2>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,79 @@
program test_prj;
{$mode objfpc}{$H+}
uses
SysUtils,
synapse_http_protocol,
soap_formatter,
SDMTabularService, SDMTabularService_proxy;
var
SDMSoap : SDMTabularServiceSoap;
QueryBuffer : RunQueryType;
QryResult : RunQueryResponse;
XmlFileVar : TextFile;
begin
SYNAPSE_RegisterHTTP_Transport();
// if Assigned(InitProc) then
// TProcedure(InitProc);
QueryBuffer := RunQueryType.Create();
try
SDMSoap := wst_CreateInstance_SDMTabularServiceSoap();
if not Assigned(SDMSoap) then
begin
WriteLn('Service not assigned');
Exit;
end;
QueryBuffer.Query :=
'SELECT ' +
'saversion, saverest, ' +
'l.areasymbol, l.areaname, l.lkey, ' +
'mu.musym, mu.muname, museq, mu.mukey, ' +
'textcat, textsubcat, ' +
'flodfreqdcd, wtdepannmin, ' +
'comppct_r, compname, localphase, slope_r, slope_l, slope_h, hydgrp, tfact, runoff, drainagecl, wei, majcompflag, slopelenusle_r, c.cokey, ' +
'reskind, resdept_r, ' +
'hzdept_r, hzdepb_r, om_l, om_h, kffact, kwfact, ch.chkey, ' +
'texture ' +
'FROM sacatalog sac ' +
'INNER JOIN legend l ON l.areasymbol = sac.areasymbol AND l.areasymbol = ''IN001'' ' +
'INNER JOIN mapunit mu ON mu.lkey = l.lkey ' +
'LEFT OUTER JOIN mutext mutx ON mutx.mukey = mu.mukey AND mutx.textcat = ''innitrate'' ' +
'LEFT OUTER JOIN muaggatt muag ON muag.mukey = mu.mukey ' +
'LEFT OUTER JOIN component c ON c.mukey = mu.mukey AND c.majcompflag = ''Yes'' ' +
'LEFT OUTER JOIN corestrictions core on core.cokey = c.cokey AND core.reskind IN (''Densic bedrock'', ''Lithic bedrock'', ''Paralithic bedrock'') ' +
'LEFT OUTER JOIN chorizon ch ON ch.cokey = c.cokey AND ch.hzdept_r = ''0'' ' +
'LEFT OUTER JOIN chtexturegrp chtg ON chtg.chkey = ch.chkey ' +
'ORDER BY l.areasymbol, museq, comppct_r DESC, compname, hydgrp, texture';
// WriteLn(QueryStr);
try
QryResult := SDMSoap.RunQuery(QueryBuffer);
if not Assigned(QryResult) then
WriteLn('QryResult not assigned');
except on E:Exception do
begin
WriteLn(E.Message);
Exit;
end;
end;
// WriteLn(QryResult.s_schema);
WriteLn(Copy(QryResult.RunQueryResult.schema.Data, 1, 500));
AssignFile(XmlFileVar, 'junk.xml');
Rewrite(XmlFileVar);
WriteLn(XmlFileVar, QryResult.RunQueryResult.diffgram.Data);
CloseFile(XmlFileVar);
finally
QueryBuffer.Free();
end;
end.

View File

@ -10,11 +10,9 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit testformatter_unit;
{$mode objfpc}{$H+}
interface
uses
@ -1654,7 +1652,7 @@ begin
f.Put('a',TypeInfo(TArrayOfStringRemotable),a);
f.EndScope();
s := TMemoryStream.Create();
f.SaveToStream(s);
f.SaveToStream(s); s.SaveToFile(ClassName + '.Test_StringArray.xml');
FreeAndNil(a);
a := TArrayOfStringRemotable.Create();
a.SetLength(0);

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="7"/>
<ActiveEditorIndexAtStart Value="13"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -27,12 +27,12 @@
<PackageName Value="FPCUnitTestRunner"/>
</Item1>
</RequiredPackages>
<Units Count="46">
<Units Count="57">
<Unit0>
<Filename Value="wst_test_suite.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="wst_test_suite"/>
<CursorPos X="33" Y="11"/>
<CursorPos X="8" Y="6"/>
<TopLine Value="1"/>
<UsageCount Value="200"/>
</Unit0>
@ -40,9 +40,9 @@
<Filename Value="testformatter_unit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="testformatter_unit"/>
<CursorPos X="31" Y="297"/>
<TopLine Value="290"/>
<EditorIndex Value="7"/>
<CursorPos X="22" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="12"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit1>
@ -58,16 +58,18 @@
<Filename Value="..\..\soap_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="37" Y="29"/>
<TopLine Value="23"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="6"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="..\..\base_binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_binary_formatter"/>
<CursorPos X="45" Y="93"/>
<TopLine Value="138"/>
<CursorPos X="3" Y="11"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
@ -76,13 +78,13 @@
<Filename Value="..\..\base_service_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="3" Y="122"/>
<TopLine Value="186"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="200"/>
<Bookmarks Count="2">
<Item0 X="33" Y="1126" ID="0"/>
<Item1 X="5" Y="1180" ID="1"/>
<Item0 X="33" Y="1127" ID="0"/>
<Item1 X="5" Y="1181" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit5>
@ -90,8 +92,8 @@
<Filename Value="..\..\base_soap_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="3" Y="1645"/>
<TopLine Value="1641"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
@ -108,20 +110,22 @@
<Filename Value="..\..\binary_streamer.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="binary_streamer"/>
<CursorPos X="1" Y="488"/>
<TopLine Value="476"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="8"/>
<UsageCount Value="200"/>
<Bookmarks Count="1">
<Item0 X="38" Y="488" ID="2"/>
<Item0 X="38" Y="489" ID="2"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit8>
<Unit9>
<Filename Value="..\..\server_binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="server_binary_formatter"/>
<CursorPos X="22" Y="100"/>
<TopLine Value="86"/>
<EditorIndex Value="6"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="11"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit9>
@ -139,17 +143,15 @@
<UnitName Value="testmetadata_unit"/>
<CursorPos X="44" Y="180"/>
<TopLine Value="153"/>
<EditorIndex Value="4"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="..\..\ws_helper\metadata_generator.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_generator"/>
<CursorPos X="17" Y="85"/>
<TopLine Value="76"/>
<EditorIndex Value="5"/>
<CursorPos X="1" Y="19"/>
<TopLine Value="1"/>
<EditorIndex Value="10"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit12>
@ -169,9 +171,11 @@
<Filename Value="..\..\metadata_wsdl.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_wsdl"/>
<CursorPos X="71" Y="293"/>
<TopLine Value="280"/>
<CursorPos X="44" Y="21"/>
<TopLine Value="209"/>
<EditorIndex Value="13"/>
<UsageCount Value="206"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="D:\Lazarus\fpcsrc\fcl\xml\dom.pp"/>
@ -281,7 +285,7 @@
<UnitName Value="test_parserdef"/>
<CursorPos X="93" Y="76"/>
<TopLine Value="11"/>
<UsageCount Value="130"/>
<UsageCount Value="144"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
@ -291,9 +295,11 @@
</Unit31>
<Unit32>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="21" Y="7"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<EditorIndex Value="5"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\objpas.pp"/>
@ -319,10 +325,10 @@
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="48" Y="406"/>
<TopLine Value="386"/>
<EditorIndex Value="3"/>
<UsageCount Value="68"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="82"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
@ -386,109 +392,88 @@
<TopLine Value="95"/>
<UsageCount Value="10"/>
</Unit45>
<Unit46>
<Filename Value="..\..\semaphore.pas"/>
<UnitName Value="semaphore"/>
<CursorPos X="44" Y="6"/>
<TopLine Value="1"/>
<UsageCount Value="12"/>
</Unit46>
<Unit47>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="19" Y="328"/>
<TopLine Value="313"/>
<UsageCount Value="13"/>
</Unit47>
<Unit48>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win32\system.pp"/>
<UnitName Value="System"/>
<CursorPos X="22" Y="33"/>
<TopLine Value="18"/>
<UsageCount Value="11"/>
</Unit48>
<Unit49>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-base\src\inc\contnrs.pp"/>
<UnitName Value="contnrs"/>
<CursorPos X="3" Y="964"/>
<TopLine Value="962"/>
<UsageCount Value="10"/>
</Unit49>
<Unit50>
<Filename Value="..\..\wst_delphi.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit50>
<Unit51>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\strutils.pp"/>
<UnitName Value="strutils"/>
<CursorPos X="10" Y="29"/>
<TopLine Value="14"/>
<UsageCount Value="10"/>
</Unit51>
<Unit52>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="20" Y="168"/>
<TopLine Value="166"/>
<UsageCount Value="10"/>
</Unit52>
<Unit53>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpas.inc"/>
<CursorPos X="11" Y="442"/>
<TopLine Value="556"/>
<UsageCount Value="10"/>
</Unit53>
<Unit54>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="8" Y="38"/>
<TopLine Value="11"/>
<EditorIndex Value="3"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit54>
<Unit55>
<Filename Value="..\..\wst_global.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit55>
<Unit56>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-base\src\inc\custapp.pp"/>
<UnitName Value="CustApp"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit56>
</Units>
<JumpHistory Count="25" HistoryIndex="24">
<Position1>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3097" Column="1" TopLine="3065"/>
</Position1>
<Position2>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3133" Column="31" TopLine="3110"/>
</Position2>
<Position3>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="384" Column="38" TopLine="372"/>
</Position3>
<Position4>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="960" Column="31" TopLine="943"/>
</Position4>
<Position5>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="84" Column="28" TopLine="141"/>
</Position5>
<Position6>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3133" Column="28" TopLine="3111"/>
</Position6>
<Position7>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="384" Column="36" TopLine="372"/>
</Position7>
<Position8>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="456" Column="16" TopLine="437"/>
</Position8>
<Position9>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="458" Column="11" TopLine="436"/>
</Position9>
<Position10>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position10>
<Position11>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="458" Column="38" TopLine="436"/>
</Position11>
<Position12>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="464" Column="38" TopLine="442"/>
</Position12>
<Position13>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="1312" Column="36" TopLine="1290"/>
</Position13>
<Position14>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="1364" Column="1" TopLine="1333"/>
</Position14>
<Position15>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position15>
<Position16>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="1647" Column="21" TopLine="1622"/>
</Position16>
<Position17>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="454" Column="1" TopLine="405"/>
</Position17>
<Position18>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3107" Column="5" TopLine="3058"/>
</Position18>
<Position19>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="385" Column="42" TopLine="366"/>
</Position19>
<Position20>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="2446" Column="30" TopLine="2434"/>
</Position20>
<Position21>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position21>
<Position22>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="459" Column="5" TopLine="430"/>
</Position22>
<Position23>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="288" Column="36" TopLine="276"/>
</Position23>
<Position24>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3139" Column="5" TopLine="3110"/>
</Position24>
<Position25>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="386" Column="42" TopLine="378"/>
</Position25>
</JumpHistory>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -497,6 +482,7 @@
<Filename Value="wst_test_suite.exe"/>
</Target>
<SearchPaths>
<IncludeFiles Value="..\..\"/>
<OtherUnitFiles Value="..\..\;..\..\ws_helper\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>

View File

@ -9,7 +9,7 @@ uses
base_service_intf, base_soap_formatter, binary_formatter, binary_streamer,
server_binary_formatter, metadata_repository,
metadata_generator, parserdefs, server_service_intf, metadata_wsdl,
test_parserdef, base_xmlrpc_formatter;
test_parserdef, base_xmlrpc_formatter, wst_fpc_xml;
Const
ShortOpts = 'alh';

View File

@ -33,6 +33,10 @@ type
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
):Boolean;virtual;abstract;
class procedure DeleteObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
);virtual;
end;
TObjectUpdaterClass = class of TObjectUpdater;
@ -55,6 +59,10 @@ type
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
):Boolean;
procedure DeleteObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
);
procedure FillList(ALs : TStrings;AContainer : TwstPasTreeContainer);
procedure FillTypeList(
@ -118,6 +126,19 @@ begin
Result := h.UpdateObject(AObject,ASymbolTable);
end;
procedure DeleteObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
);
var
h : TObjectUpdaterClass;
begin
if not UpdaterRegistryInst.FindHandler(AObject,h) then begin
raise Exception.Create('No handler found.');
end;
h.DeleteObject(AObject,ASymbolTable);
end;
type
{ TEnumUpdater }
@ -479,6 +500,22 @@ begin
Result := Assigned(AObject);
end;
class procedure TObjectUpdater.DeleteObject (
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
);
var
sct : TPasSection;
begin
if ( AObject <> nil ) then begin
sct := ASymbolTable.CurrentModule.InterfaceSection;
sct.Declarations.Extract(AObject);
sct.Types.Extract(AObject);
sct.Classes.Extract(AObject);
AObject.Release();
end;
end;
procedure InternalFillList(
ALs : TStrings;
AContainer : TwstPasTreeContainer

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="2"/>
<ActiveEditorIndexAtStart Value="1"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -32,13 +32,13 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="70">
<Units Count="71">
<Unit0>
<Filename Value="typ_lib_edtr.lpr"/>
<IsPartOfProject Value="True"/>
<CursorPos X="24" Y="11"/>
<TopLine Value="1"/>
<UsageCount Value="186"/>
<UsageCount Value="189"/>
</Unit0>
<Unit1>
<Filename Value="uwsttypelibraryedit.pas"/>
@ -47,10 +47,10 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="uwsttypelibraryedit.lrs"/>
<UnitName Value="uwsttypelibraryedit"/>
<CursorPos X="24" Y="535"/>
<TopLine Value="531"/>
<CursorPos X="38" Y="333"/>
<TopLine Value="288"/>
<EditorIndex Value="0"/>
<UsageCount Value="186"/>
<UsageCount Value="189"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
@ -63,10 +63,10 @@
<Unit3>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<UnitName Value="wsdl2pas_imp"/>
<CursorPos X="8" Y="2027"/>
<TopLine Value="2017"/>
<EditorIndex Value="7"/>
<UsageCount Value="77"/>
<CursorPos X="38" Y="805"/>
<TopLine Value="792"/>
<EditorIndex Value="6"/>
<UsageCount Value="79"/>
<Bookmarks Count="1">
<Item0 X="65" Y="750" ID="2"/>
</Bookmarks>
@ -78,8 +78,8 @@
<UnitName Value="wsdl_generator"/>
<CursorPos X="45" Y="707"/>
<TopLine Value="684"/>
<EditorIndex Value="9"/>
<UsageCount Value="186"/>
<EditorIndex Value="12"/>
<UsageCount Value="189"/>
<Bookmarks Count="1">
<Item0 X="49" Y="446" ID="1"/>
</Bookmarks>
@ -94,7 +94,7 @@
<UnitName Value="uabout"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="186"/>
<UsageCount Value="189"/>
</Unit5>
<Unit6>
<Filename Value="ufenumedit.pas"/>
@ -103,18 +103,20 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufenumedit.lrs"/>
<UnitName Value="ufEnumedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="186"/>
<CursorPos X="1" Y="77"/>
<TopLine Value="58"/>
<EditorIndex Value="7"/>
<UsageCount Value="189"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="view_helper.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="view_helper"/>
<CursorPos X="31" Y="535"/>
<TopLine Value="532"/>
<EditorIndex Value="6"/>
<UsageCount Value="186"/>
<TopLine Value="16"/>
<EditorIndex Value="5"/>
<UsageCount Value="189"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@ -123,16 +125,16 @@
<UnitName Value="source_utils"/>
<CursorPos X="18" Y="20"/>
<TopLine Value="1"/>
<UsageCount Value="186"/>
<UsageCount Value="189"/>
</Unit8>
<Unit9>
<Filename Value="edit_helper.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="edit_helper"/>
<CursorPos X="68" Y="504"/>
<TopLine Value="483"/>
<CursorPos X="44" Y="519"/>
<TopLine Value="5"/>
<EditorIndex Value="1"/>
<UsageCount Value="186"/>
<UsageCount Value="189"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@ -142,10 +144,10 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufclassedit.lrs"/>
<UnitName Value="ufclassedit"/>
<CursorPos X="52" Y="175"/>
<TopLine Value="154"/>
<CursorPos X="29" Y="158"/>
<TopLine Value="121"/>
<EditorIndex Value="2"/>
<UsageCount Value="186"/>
<UsageCount Value="189"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
@ -154,11 +156,9 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufpropedit.lrs"/>
<UnitName Value="ufpropedit"/>
<CursorPos X="32" Y="149"/>
<CursorPos X="3" Y="154"/>
<TopLine Value="140"/>
<EditorIndex Value="3"/>
<UsageCount Value="186"/>
<Loaded Value="True"/>
<UsageCount Value="189"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\..\lazarus23_213\lcl\comctrls.pp"/>
@ -172,8 +172,8 @@
<UnitName Value="parserutils"/>
<CursorPos X="1" Y="93"/>
<TopLine Value="54"/>
<EditorIndex Value="4"/>
<UsageCount Value="64"/>
<EditorIndex Value="3"/>
<UsageCount Value="66"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@ -259,7 +259,7 @@
<UnitName Value="uinterfaceedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="150"/>
<UsageCount Value="153"/>
</Unit26>
<Unit27>
<Filename Value="uinterfaceedit.lfm"/>
@ -276,7 +276,7 @@
<UnitName Value="udm"/>
<CursorPos X="15" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="145"/>
<UsageCount Value="148"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\lazarus23_213\lcl\include\treeview.inc"/>
@ -288,10 +288,10 @@
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="pascal_parser_intf"/>
<CursorPos X="73" Y="148"/>
<TopLine Value="156"/>
<EditorIndex Value="8"/>
<UsageCount Value="108"/>
<CursorPos X="37" Y="446"/>
<TopLine Value="436"/>
<EditorIndex Value="11"/>
<UsageCount Value="111"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
@ -300,7 +300,7 @@
<UnitName Value="PParser"/>
<CursorPos X="4" Y="2133"/>
<TopLine Value="2127"/>
<UsageCount Value="108"/>
<UsageCount Value="111"/>
</Unit31>
<Unit32>
<Filename Value="..\ws_helper\logger_intf.pas"/>
@ -315,7 +315,7 @@
<UnitName Value="PasTree"/>
<CursorPos X="33" Y="332"/>
<TopLine Value="315"/>
<UsageCount Value="108"/>
<UsageCount Value="111"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\lazarus_23_215\lcl\include\treeview.inc"/>
@ -338,25 +338,29 @@
<Unit37>
<Filename Value="..\wst_rtti_filter\rtti_filters.pas"/>
<UnitName Value="rtti_filters"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="24"/>
<CursorPos X="1" Y="236"/>
<TopLine Value="219"/>
<EditorIndex Value="8"/>
<UsageCount Value="26"/>
<Loaded Value="True"/>
</Unit37>
<Unit38>
<Filename Value="..\ws_helper\generator.pas"/>
<UnitName Value="generator"/>
<CursorPos X="2" Y="16"/>
<TopLine Value="1"/>
<EditorIndex Value="5"/>
<UsageCount Value="27"/>
<EditorIndex Value="4"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit38>
<Unit39>
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
<UnitName Value="dom_cursors"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="21"/>
<CursorPos X="1" Y="239"/>
<TopLine Value="222"/>
<EditorIndex Value="10"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
</Unit39>
<Unit40>
<Filename Value="..\ws_helper\command_line_parser.pas"/>
@ -405,8 +409,8 @@
<ComponentName Value="formImport"/>
<HasResources Value="True"/>
<UnitName Value="wstimportdlg"/>
<CursorPos X="42" Y="71"/>
<TopLine Value="52"/>
<CursorPos X="29" Y="60"/>
<TopLine Value="154"/>
<UsageCount Value="12"/>
</Unit46>
<Unit47>
@ -438,7 +442,7 @@
<UnitName Value="uprocedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="64"/>
<UsageCount Value="67"/>
</Unit50>
<Unit51>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\comctrls.pp"/>
@ -453,7 +457,7 @@
<UnitName Value="common_gui_utils"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="62"/>
<UsageCount Value="65"/>
</Unit52>
<Unit53>
<Filename Value="..\..\..\..\..\DOCUME~1\ADMINI~1\LOCALS~1\Temp\DestBug.pas"/>
@ -470,7 +474,7 @@
<UnitName Value="uargedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="55"/>
<UsageCount Value="58"/>
</Unit54>
<Unit55>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\interfaces\win32\win32wscontrols.pp"/>
@ -494,7 +498,7 @@
<UnitName Value="umoduleedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="47"/>
<UsageCount Value="50"/>
</Unit57>
<Unit58>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\stdctrls.pp"/>
@ -511,7 +515,7 @@
<UnitName Value="ubindingedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="37"/>
<UsageCount Value="40"/>
</Unit59>
<Unit60>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
@ -552,7 +556,7 @@
<UnitName Value="ufrmsaveoption"/>
<CursorPos X="42" Y="64"/>
<TopLine Value="42"/>
<UsageCount Value="33"/>
<UsageCount Value="36"/>
</Unit65>
<Unit66>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\dialogs.pp"/>
@ -571,9 +575,11 @@
<Unit68>
<Filename Value="..\wst_rtti_filter\cursor_intf.pas"/>
<UnitName Value="cursor_intf"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<CursorPos X="2" Y="90"/>
<TopLine Value="71"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit68>
<Unit69>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\include\control.inc"/>
@ -581,128 +587,18 @@
<TopLine Value="2390"/>
<UsageCount Value="10"/>
</Unit69>
<Unit70>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\include\customform.inc"/>
<CursorPos X="1" Y="1417"/>
<TopLine Value="1398"/>
<UsageCount Value="10"/>
</Unit70>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="654" Column="34" TopLine="650"/>
<Filename Value="uwsttypelibraryedit.pas"/>
<Caret Line="595" Column="20" TopLine="575"/>
</Position1>
<Position2>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="694" Column="32" TopLine="675"/>
</Position2>
<Position3>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="149" Column="42" TopLine="136"/>
</Position3>
<Position4>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="695" Column="19" TopLine="677"/>
</Position4>
<Position5>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="289" Column="20" TopLine="274"/>
</Position5>
<Position6>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="693" Column="81" TopLine="651"/>
</Position6>
<Position7>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position7>
<Position8>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="154" Column="30" TopLine="139"/>
</Position8>
<Position9>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="448" Column="23" TopLine="432"/>
</Position9>
<Position10>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="289" Column="10" TopLine="274"/>
</Position10>
<Position11>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="447" Column="40" TopLine="432"/>
</Position11>
<Position12>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position12>
<Position13>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="155" Column="33" TopLine="140"/>
</Position13>
<Position14>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2062" Column="14" TopLine="2033"/>
</Position14>
<Position15>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="73" Column="35" TopLine="65"/>
</Position15>
<Position16>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2336" Column="16" TopLine="2329"/>
</Position16>
<Position17>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="682" Column="3" TopLine="735"/>
</Position17>
<Position18>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position18>
<Position19>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2100" Column="3" TopLine="2012"/>
</Position19>
<Position20>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="186" Column="55" TopLine="164"/>
</Position20>
<Position21>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2044" Column="46" TopLine="2011"/>
</Position21>
<Position22>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position22>
<Position23>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="181" Column="45" TopLine="164"/>
</Position23>
<Position24>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="149" Column="44" TopLine="148"/>
</Position24>
<Position25>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="155" Column="33" TopLine="133"/>
</Position25>
<Position26>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2092" Column="80" TopLine="2062"/>
</Position26>
<Position27>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<Caret Line="269" Column="16" TopLine="234"/>
</Position27>
<Position28>
<Filename Value="edit_helper.pas"/>
<Caret Line="564" Column="16" TopLine="553"/>
</Position28>
<Position29>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<Caret Line="139" Column="35" TopLine="125"/>
</Position29>
<Position30>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<Caret Line="145" Column="49" TopLine="130"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

View File

@ -1,7 +1,7 @@
object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Left = 217
Left = 137
Height = 644
Top = 507
Top = 257
Width = 833
HorzScrollBar.Page = 832
VertScrollBar.Page = 623
@ -78,9 +78,11 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2
TabOrder = 0
BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1
Keystrokes = <
@ -405,6 +407,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642
end>
ReadOnly = True
SelectedColor.OnChange = nil
end
end
object tsWSDL: TTabSheet
@ -424,7 +427,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2
TabOrder = 0
BookMarkOptions.Xoffset = 54
BookMarkOptions.OnChange = nil
Gutter.ShowLineNumbers = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14
Highlighter = SynXMLSyn1
Keystrokes = <
@ -749,6 +754,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642
end>
ReadOnly = True
SelectedColor.OnChange = nil
end
end
object tsProxy: TTabSheet
@ -768,11 +774,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2
TabOrder = 0
BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1
Keystrokes = <
@ -1097,7 +1101,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642
end>
ReadOnly = True
SelectedColor.OnChange = nil
end
end
object tsImp: TTabSheet
@ -1117,11 +1120,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2
TabOrder = 0
BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1
Keystrokes = <
@ -1446,7 +1447,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642
end>
ReadOnly = True
SelectedColor.OnChange = nil
end
end
object tsBinder: TTabSheet
@ -1466,12 +1466,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2
TabOrder = 0
BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.AutoSize = True
Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1
Keystrokes = <
@ -1796,7 +1794,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642
end>
ReadOnly = True
SelectedColor.OnChange = nil
end
end
object tsLog: TTabSheet
@ -1899,6 +1896,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Caption = 'Update Object'
OnClick = actUpdateObjectExecute
end
object MenuItem34: TMenuItem
Action = actDelete
OnClick = actDeleteExecute
end
end
object MenuItem6: TMenuItem
Action = actAbout
@ -1982,6 +1983,12 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
DisableIfNoHandler = True
OnExecute = actSaveExecute
end
object actDelete: TAction
Caption = 'Delete'
DisableIfNoHandler = True
OnExecute = actDeleteExecute
OnUpdate = actUpdateObjectUpdate
end
end
object OD: TOpenDialog
Title = 'Ouvrir un fichier existant'
@ -2046,6 +2053,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Action = actUpdateObject
OnClick = actUpdateObjectExecute
end
object MenuItem33: TMenuItem
Action = actDelete
OnClick = actDeleteExecute
end
end
object PopupMenu2: TPopupMenu
left = 528

View File

@ -1,8 +1,8 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3#217#0#6'Hei'
+'ght'#3#132#2#3'Top'#3#251#1#5'Width'#3'A'#3#18'HorzScrollBar.Page'#3'@'#3#18
'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3#137#0#6'Hei'
+'ght'#3#132#2#3'Top'#3#1#1#5'Width'#3'A'#3#18'HorzScrollBar.Page'#3'@'#3#18
+'VertScrollBar.Page'#3'o'#2#13'ActiveControl'#7#9'trvSchema'#7'Caption'#6'+['
+'Web Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'p'#2#11'Clie'
+'ntWidth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#6'OnShow'#7
@ -22,61 +22,63 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHA'
+'RSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Co'
+'urier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'Popu'
+'pMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.DigitCou'
+'nt'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gutter'
+'.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1
+#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7
+'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7
+'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1
+#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7
+'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7
+'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7
+'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7
+'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7
+'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7
+'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'C'
+'ommand'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7
+'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'C'
+'ommand'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7
+'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'C'
+'ommand'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7
+'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0
+#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2
+'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCu'
+'t'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'S'
+'hortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'
+#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7
+'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'
+#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3
+'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'Short'
+'Cut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8
+'ShortCut'#3'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251
+#1#8'ShortCut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'
+#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Comm'
+'and'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7
+'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0
+#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5'
+'@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'
+#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'Short'
+'Cut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8
+'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'
+#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3
+'d'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Comman'
+'d'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'C'
+'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0
+#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3
,'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'
+#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T'
+'TabSheet'#6'tsWSDL'#7'Caption'#6#5'&WSDL'#12'ClientHeight'#3'='#2#11'Client'
+'Width'#3#245#1#0#8'TSynEdit'#7'srcWSDL'#6'Height'#3'='#2#5'Width'#3#245#1#5
+'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7
+'clBlack'#11'Font.Height'#2#233#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7
+'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0#23
+'BookMarkOptions.Xoffset'#2'6'#22'Gutter.ShowLineNumbers'#9#23'Gutter.CodeFo'
+'ldingWidth'#2#14#11'Highlighter'#7#10'SynXMLSyn1'#10'Keystrokes'#14#1#7'Com'
+'mand'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Comm'
+'and'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Co'
+'mmand'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7
+'pMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions'
+'.OnChange'#13#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gut'
+'ter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2
+#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'Sh'
+'ortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8
+'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'S'
+'hortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8
+'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'S'
+'hortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'S'
+'hortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8
+'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10
+#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8
+'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8
+'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8
+'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8
+'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8
+'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8
+'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8
+'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0
+#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3
+'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman'
+'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co'
+'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'
+#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'Short'
+'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3
+#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm'
+'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7
+'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'
+#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3
+'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortC'
+'ut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8
+'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'
+#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3
+'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Comman'
+'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C'
+'ommand'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1
+#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'
+#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3
+'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCu'
+'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh'
+'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1
+#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3
+'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma'
,'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7
+'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1
+#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnC'
+'hange'#13#0#0#0#9'TTabSheet'#6'tsWSDL'#7'Caption'#6#5'&WSDL'#12'ClientHeigh'
+'t'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#7'srcWSDL'#6'Height'#3'='#2
+#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'
+#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#233#9'Font.Name'#6#7'Courier'
+#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'
+#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'6'#24'BookMarkOptions.OnChang'
+'e'#13#22'Gutter.ShowLineNumbers'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFol'
+'dingWidth'#2#14#11'Highlighter'#7#10'SynXMLSyn1'#10'Keystrokes'#14#1#7'Comm'
+'and'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Comma'
+'nd'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Com'
+'mand'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7
+'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'C'
+'ommand'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'C'
+'ommand'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7
@ -115,242 +117,243 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0
+#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3
+'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'
+#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T'
+'TabSheet'#7'tsProxy'#7'Caption'#6#6'&Proxy'#12'ClientHeight'#3'='#2#11'Clie'
+'ntWidth'#3#245#1#0#8'TSynEdit'#8'srcProxy'#6'Height'#3'='#2#5'Width'#3#245#1
+#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7
+#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7
+#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0
+#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions.OnChange'#13#17'Gutter.'
+'DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#15
+'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'S'
+'ynPasSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Comman'
+'d'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Co'
+'mmand'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Com'
+'mand'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'C'
+'ommand'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'C'
,'ommand'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'C'
+'ommand'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7
+'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7
+'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3'"@'#0#1#7
+'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2'!'#0#1#7'C'
+'ommand'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8'ShortCut'#3'!@'#0#1#7
+'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8'ShortCut'#2'$'#0#1#7'C'
+'ommand'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8'ShortCut'#3'$@'#0#1#7
+'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8'ShortCut'#2'#'#0#1#7'C'
+'ommand'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8'ShortCut'#3'#@'#0#1#7
+'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0#8'ShortCut'#2'-'#0#1
+#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'- '
+#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3
+'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Command'#3#245#1#8'ShortCu'
+'t'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8
+'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'C'
+'ommand'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3#199#0#8'ShortCut'#3'A@'#0
+#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Command'#3'b'#2#8'ShortCut'#3
+'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7'Command'#3#254#1#8'Short'
+'Cut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'#0#1#7'Command'#3'c'#2#8
+'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'V@'#0#1#7'Command'#3'['
+#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortCut'#3'Y@'#0#1#7'Command'
+#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Com'
+'mand'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'#1#8'ShortCut'#3'0@'#0#1#7
+'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3'/'#1#8'ShortCut'#3'2@'#0
+#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1#8'ShortCut'#3'4'
+'@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3'3'#1#8'ShortCut'
+#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1#7'Command'#3'5'#1#8'Short'
+'Cut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'#0#1#7'Command'#3'_'#1#8
+'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1#7'Command'#3'a'
+#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'#0#1#7'Command'#3
+'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Comman'
+'d'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'C'
+'ommand'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3'h'#1#8'ShortCut'#3'9`'#0#1
+#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C'
+'`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCu'
+'t'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'Sh'
+'ortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange'#13#0#0#0#9'TTabS'
+'heet'#5'tsImp'#7'Caption'#6#24'Im&plementation Skeleton'#12'ClientHeight'#3
+'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#6'srcImp'#6'Height'#3'='#2#5'Wid'
+'th'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'F'
+'ont.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10
+'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8
+'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions.OnChange'
+#13#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCod'
+'eFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2#14#11'High'
+'lighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2
+'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'
+#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3
+'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'
+#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3
+'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2
+''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3
+'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'
+#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3
+'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2
+'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8'ShortCut'#3
+'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8'ShortCut'#2
+'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8'ShortCut'#3
+'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8'ShortCut'#2
+'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8'ShortCut'#3
+'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0#8'ShortCut'
+#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3'\'#2#8'Short'
+'Cut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Command'#3'['#2#8
,'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Command'#3#245
+#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'#0#1#7'Comman'
+'d'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'ShortCut'#4#8#160
+#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3#199#0#8'ShortC'
+'ut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Command'#3'b'#2#8
+'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7'Command'#3
+#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'#0#1#7'Comm'
+'and'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'V@'#0#1#7
+'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortCut'#3'Y@'#0
+#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8'ShortCut'#3
+'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'#1#8'ShortCu'
+'t'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3'/'#1#8'Sh'
+'ortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1
+#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3
+'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1#7'Comman'
+'d'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'#0#1#7'C'
+'ommand'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1
+#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'
+#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3
+'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCu'
+'t'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3'h'#1#8'Sh'
+'ortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232
+#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'
+#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Comma'
+'nd'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange'
+#13#0#0#0#9'TTabSheet'#8'tsBinder'#7'Caption'#6#7'&Binder'#12'ClientHeight'#3
+'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#9'srcBinder'#6'Height'#3'='#2#5
+'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10
+'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10
+'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8
+'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions.OnChange'
+#13#15'Gutter.AutoSize'#9#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumber'
+'s'#9#22'Gutter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFold'
+'ingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Comma'
+'nd'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Comman'
+'d'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Comm'
+'and'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7
+'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'C'
+'ommand'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'C'
+'ommand'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7
+'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7
+'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7
+'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7
+'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'C'
+'ommand'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7
+'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'C'
+'ommand'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7
+'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'C'
+'ommand'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7
+'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0
+#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2
+'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCu'
+'t'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'S'
+'hortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'
+#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7
+'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'
+#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3
+'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'Short'
+'Cut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8
+'ShortCut'#3'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251
+#1#8'ShortCut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'
+#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Comm'
+'and'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7
+'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0
,#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5'
+'@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'
+#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'Short'
+'Cut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8
+'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'
+#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3
+'d'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Comman'
+'d'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'C'
+'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0
+#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3
+'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'
+#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'Select'
+'edColor.OnChange'#13#0#0#0#9'TTabSheet'#5'tsLog'#7'Caption'#6#4'&Log'#12'Cl'
+'ientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#5'TMemo'#6'mmoLog'#6'Height'#3
+'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#0#0#10'S'
+'crollBars'#7#6'ssBoth'#8'TabOrder'#2#0#0#0#0#0#0#9'TSplitter'#9'Splitter1'#4
+'Left'#3':'#1#6'Height'#3'Y'#2#5'Width'#2#8#5'Color'#7#7'clBlack'#11'ParentC'
+'olor'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuI'
+'tem'#9'MenuItem1'#7'Caption'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Ac'
+'tion'#7#10'actNewFile'#7'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9
+'MenuItem2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'a'
+'ctOpenFile'#7'OnClick'#7#18'actOpenFileExecute'#0#0#9'TMenuItem'#9'MenuItem'
+'3'#6'Action'#7#9'actExport'#7'OnClick'#7#16'actExportExecute'#0#0#9'TMenuIt'
+'em'#9'MenuItem7'#6'Action'#7#7'actSave'#7'OnClick'#7#14'actSaveExecute'#0#0
+#9'TMenuItem'#10'MenuItem32'#6'Action'#7#9'actSaveAs'#7'OnClick'#7#16'actSav'
+'eAsExecute'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TMenuIt'
+'em'#9'MenuItem4'#6'Action'#7#7'actExit'#7'OnClick'#7#14'actExitExecute'#0#0
+#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#5'&View'#0#9'TMenuItem'#10'MenuI'
+'tem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExecute'
+#0#0#9'TMenuItem'#10'MenuItem29'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuI'
+'tem30'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0
+#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7
+#22'actFullCollapseExecute'#0#0#0#9'TMenuItem'#10'MenuItem10'#7'Caption'#6#8
+'&Edition'#0#9'TMenuItem'#10'MenuItem11'#6'Action'#7#13'actEnumCreate'#7'OnC'
+'lick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem23'#6'Action'#7
+#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenu'
+'Item'#10'MenuItem25'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfC'
+'reateExecute'#0#0#9'TMenuItem'#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenu'
+'Item'#10'MenuItem13'#6'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update'
+' Object'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#0#9'TMenuItem'#9'MenuI'
+'tem6'#6'Action'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAbo'
+'utExecute'#0#0#0#11'TActionList'#2'AL'#4'left'#3'X'#1#3'top'#2'8'#0#7'TActi'
+'on'#11'actOpenFile'#7'Caption'#6#9'Open File'#18'DisableIfNoHandler'#9#9'On'
+'Execute'#7#18'actOpenFileExecute'#0#0#7'TAction'#7'actExit'#7'Caption'#6#4
+'Exit'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actExitExecute'#0#0#7'TAct'
+'ion'#9'actExport'#7'Caption'#6#24'Save generated files ...'#18'DisableIfNoH'
+'andler'#9#9'OnExecute'#7#16'actExportExecute'#8'OnUpdate'#7#15'actExportUpd'
+'ate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'About'#18'DisableIfNoHandler'
+#9#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TAction'#9'actSaveAs'#7'Caption'
+#6#11'Save As ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actSaveAsExecu'
+'te'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#13'actEnumCreate'#7'Ca'
+'ption'#6#18'Create Enumeration'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20
+'actEnumCreateExecute'#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Upd'
+'ate'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actUpdateObjectExecute'#8'O'
+'nUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Ca'
+'ption'#6#14'&Refresh Views'#18'DisableIfNoHandler'#9#9'OnExecute'#7#21'actR'
+'efreshViewExecute'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'New File'#18
+'DisableIfNoHandler'#9#9'OnExecute'#7#17'actNewFileExecute'#0#0#7'TAction'#17
+'actCompoundCreate'#7'Caption'#6#20'Create Compound Type'#18'DisableIfNoHand'
+'ler'#9#9'OnExecute'#7#24'actCompoundCreateExecute'#0#0#7'TAction'#13'actInt'
+'fCreate'#7'Caption'#6#16'Create Interface'#18'DisableIfNoHandler'#9#9'OnExe'
+'cute'#7#20'actIntfCreateExecute'#0#0#7'TAction'#13'actFullExpand'#7'Caption'
+#6#11'Full expand'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actFullExpandE'
+'xecute'#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#18
,'DisableIfNoHandler'#9#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TActi'
+'on'#7'actSave'#7'Caption'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7
+#14'actSaveExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fich'
+'ier existant'#6'Filter'#6'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.'
+'pas'#11'FilterIndex'#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMust'
+'Exist'#15'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3
+#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'Comment'
+'Attri.Foreground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#22'Stri'
+'ngAttri.Foreground'#7#8'clMaroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'D'
+'irectiveAttri.Foreground'#7#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'
+#0#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'
+#5'Title'#6#27'Enregistrer le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filt'
+'er'#6#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'of'
+'PathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'
+#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#128#1#3'top'#3#8#1#0#9
+'TMenuItem'#10'MenuItem28'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'act'
+'FullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCo'
+'llapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuIte'
+'m26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actEnum'
+'Create'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem2'
+'1'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateExecu'
+'te'#0#0#9'TMenuItem'#10'MenuItem24'#6'Action'#7#13'actIntfCreate'#7'OnClick'
+#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem22'#7'Caption'#6#1'-'
+#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpdateObject'#7'OnClick'#7
+#22'actUpdateObjectExecute'#0#0#0#10'TPopupMenu'#10'PopupMenu2'#4'left'#3#16
+#2#3'top'#3#235#0#0#9'TMenuItem'#10'MenuItem18'#6'Action'#7#14'actRefreshVie'
+'w'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem19'#7
+'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem20'#6'Action'#7#9'actExport'#7
+'OnClick'#7#16'actExportExecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'Defa'
+'ultFilter'#6#30'Documents WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttr'
+'i.Foreground'#7#6'clNavy'#30'AttributeValueAttri.Foreground'#7#8'clPurple'
+#16'WantBracesParsed'#8#4'left'#3#210#1#3'top'#3#252#0#0#0#0
+'edColor.OnChange'#13#0#0#0#9'TTabSheet'#7'tsProxy'#7'Caption'#6#6'&Proxy'#12
+'ClientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#8'srcProxy'#6'He'
+'ight'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12
+'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'
+#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10
+'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.Digi'
+'tCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gu'
+'tter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'
+#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0
+#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0
+#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'
,#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0
+#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1
+#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1
+#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1
+#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7
+'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7
+'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'C'
+'ommand'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7
+'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'C'
+'ommand'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7
+'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'C'
+'ommand'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7
+'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0
+#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2
+'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCu'
+'t'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'S'
+'hortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'
+#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7
+'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'
+#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3
+'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'Short'
+'Cut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8
+'ShortCut'#3'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251
+#1#8'ShortCut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'
+#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Comm'
+'and'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7
+'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0
+#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5'
+'@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'
+#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'Short'
+'Cut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8
+'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'
+#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3
+'d'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Comman'
+'d'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'C'
+'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0
+#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3
+'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'
+#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T'
+'TabSheet'#5'tsImp'#7'Caption'#6#24'Im&plementation Skeleton'#12'ClientHeigh'
+'t'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#6'srcImp'#6'Height'#3'='#2#5
+'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10
+'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10
+'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8
+'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.DigitCount'#2#5#22
+'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gutter.CodeFoldin'
+'gWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'
+#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3
+#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2
+'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'
+#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2
+#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2
+#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6
+#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2
+#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2
+#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2
+#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13
+#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8
+'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8
+'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8
+'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8
+'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0
+#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3
+'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman'
,'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co'
+'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'
+#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'Short'
+'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3
+#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm'
+'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7
+'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'
+#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3
+'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortC'
+'ut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8
+'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'
+#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3
+'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Comman'
+'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C'
+'ommand'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1
+#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'
+#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3
+'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCu'
+'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh'
+'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1
+#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3
+'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma'
+'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7
+'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1
+#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'TTabSheet'#8
+'tsBinder'#7'Caption'#6#7'&Binder'#12'ClientHeight'#3'='#2#11'ClientWidth'#3
+#245#1#0#8'TSynEdit'#9'srcBinder'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'
+#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlac'
+'k'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7'fpFix'
+'ed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0#23'Book'
+'MarkOptions.Xoffset'#2'Q'#15'Gutter.AutoSize'#9#17'Gutter.DigitCount'#2#5#22
+'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gutter.CodeFoldin'
+'gWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'
+#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3
+#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2
+'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'
+#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2
+#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2
+#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6
+#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2
+#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2
+#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2
+#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13
+#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8
+'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8
+'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8
+'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8
+'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0
+#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3
+'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman'
+'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co'
+'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'
+#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'Short'
+'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3
+#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm'
+'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7
+'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'
+#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3
+'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortC'
+'ut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8
+'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'
+#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3
+'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Comman'
+'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C'
,'ommand'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1
+#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'
+#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3
+'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCu'
+'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh'
+'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1
+#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3
+'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma'
+'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7
+'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1
+#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'TTabSheet'#5
+'tsLog'#7'Caption'#6#4'&Log'#12'ClientHeight'#3'='#2#11'ClientWidth'#3#245#1
+#0#5'TMemo'#6'mmoLog'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClien'
+'t'#13'Lines.Strings'#1#6#0#0#10'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#0#0#0
+#0#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3':'#1#6'Height'#3'Y'#2#5'Width'#2#8
+#5'Color'#7#7'clBlack'#11'ParentColor'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'lef'
+'t'#3'`'#1#3'top'#2'p'#0#9'TMenuItem'#9'MenuItem1'#7'Caption'#6#6'&Files'#0#9
+'TMenuItem'#10'MenuItem16'#6'Action'#7#10'actNewFile'#7'OnClick'#7#17'actNew'
+'FileExecute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#1'-'#0#0#9'TMenuIte'
+'m'#9'MenuItem5'#6'Action'#7#11'actOpenFile'#7'OnClick'#7#18'actOpenFileExec'
+'ute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#9'actExport'#7'OnClick'#7#16
+'actExportExecute'#0#0#9'TMenuItem'#9'MenuItem7'#6'Action'#7#7'actSave'#7'On'
+'Click'#7#14'actSaveExecute'#0#0#9'TMenuItem'#10'MenuItem32'#6'Action'#7#9'a'
+'ctSaveAs'#7'OnClick'#7#16'actSaveAsExecute'#0#0#9'TMenuItem'#10'MenuItem17'
+#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#7'actExit'#7'On'
+'Click'#7#14'actExitExecute'#0#0#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#5
+'&View'#0#9'TMenuItem'#10'MenuItem15'#6'Action'#7#14'actRefreshView'#7'OnCli'
+'ck'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem29'#7'Caption'#6
+#1'-'#0#0#9'TMenuItem'#10'MenuItem30'#6'Action'#7#13'actFullExpand'#7'OnClic'
+'k'#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15
+'actFullCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9'TMenuItem'
+#10'MenuItem10'#7'Caption'#6#8'&Edition'#0#9'TMenuItem'#10'MenuItem11'#6'Act'
+'ion'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuI'
+'tem'#10'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCo'
+'mpoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'Action'#7#13'actIntf'
+'Create'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem1'
+'2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem13'#6'Action'#7#15'actUpda'
+'teObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22'actUpdateObjectExe'
+'cute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'actDelete'#7'OnClick'#7
+#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6'Action'#7#8'actAbout'
+#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecute'#0#0#0#11'TActionLis'
+'t'#2'AL'#4'left'#3'X'#1#3'top'#2'8'#0#7'TAction'#11'actOpenFile'#7'Caption'
+#6#9'Open File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18'actOpenFileExecut'
+'e'#0#0#7'TAction'#7'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9
+'OnExecute'#7#14'actExitExecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24
+'Save generated files ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExp'
+'ortExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7
+'Caption'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExec'
+'ute'#0#0#7'TAction'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfN'
+'oHandler'#9#9'OnExecute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportU'
+'pdate'#0#0#7'TAction'#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'
+#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAct'
+'ion'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9
+'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpd'
+'ate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh Views'#18'D'
+'isableIfNoHandler'#9#9'OnExecute'#7#21'actRefreshViewExecute'#0#0#7'TAction'
+#10'actNewFile'#7'Caption'#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecut'
+'e'#7#17'actNewFileExecute'#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6
+#20'Create Compound Type'#18'DisableIfNoHandler'#9#9'OnExecute'#7#24'actComp'
+'oundCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create '
+'Interface'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actIntfCreateExecute'
+#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11'Full expand'#18'DisableIfN'
+'oHandler'#9#9'OnExecute'#7#20'actFullExpandExecute'#0#0#7'TAction'#15'actFu'
+'llCollapse'#7'Caption'#6#13'Full Collapse'#18'DisableIfNoHandler'#9#9'OnExe'
,'cute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4
+'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0#7'TAct'
+'ion'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnExecu'
+'te'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#0#11
+'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Filter'#6'3W'
+'DSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.pas'#11'FilterIndex'#2#0#10
+'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist'#14
+'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynP'
+'asSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'
+#18'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Foreground'#7#8'clMaro'
+'on'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAttri.Foreground'#7#7
+'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'NestedComments'#9#4'lef'
+'t'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'#5'Title'#6#27'Enregistrer '
+'le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6#25'WDSL files(*.WSDL'
+')|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnable'
+'Sizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMenu'
+#10'PopupMenu1'#4'left'#3#128#1#3'top'#3#8#1#0#9'TMenuItem'#10'MenuItem28'#6
+'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0#0#9'TMe'
+'nuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7#22'actF'
+'ullCollapseExecute'#0#0#9'TMenuItem'#10'MenuItem26'#7'Caption'#6#1'-'#0#0#9
+'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEn'
+'umCreateExecute'#0#0#9'TMenuItem'#10'MenuItem21'#6'Action'#7#17'actCompound'
+'Create'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuI'
+'tem24'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0
+#0#9'TMenuItem'#10'MenuItem22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem'
+'9'#6'Action'#7#15'actUpdateObject'#7'OnClick'#7#22'actUpdateObjectExecute'#0
+#0#9'TMenuItem'#10'MenuItem33'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actD'
+'eleteExecute'#0#0#0#10'TPopupMenu'#10'PopupMenu2'#4'left'#3#16#2#3'top'#3
+#235#0#0#9'TMenuItem'#10'MenuItem18'#6'Action'#7#14'actRefreshView'#7'OnClic'
+'k'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem19'#7'Caption'#6
+#1'-'#0#0#9'TMenuItem'#10'MenuItem20'#6'Action'#7#9'actExport'#7'OnClick'#7
+#16'actExportExecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter'#6
+#30'Documents WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttri.Foreground'
+#7#6'clNavy'#30'AttributeValueAttri.Foreground'#7#8'clPurple'#16'WantBracesP'
+'arsed'#8#4'left'#3#210#1#3'top'#3#252#0#0#0#0
]);

View File

@ -37,6 +37,7 @@ type
actIntfCreate: TAction;
actFullExpand: TAction;
actFullCollapse: TAction;
actDelete : TAction;
actSave : TAction;
actNewFile: TAction;
actRefreshView: TAction;
@ -68,6 +69,8 @@ type
MenuItem30: TMenuItem;
MenuItem31: TMenuItem;
MenuItem32: TMenuItem;
MenuItem33 : TMenuItem;
MenuItem34 : TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7 : TMenuItem;
@ -103,6 +106,7 @@ type
trvSchema: TTreeView;
procedure actAboutExecute(Sender: TObject);
procedure actCompoundCreateExecute(Sender: TObject);
procedure actDeleteExecute (Sender : TObject );
procedure actEnumCreateExecute(Sender: TObject);
procedure actExitExecute(Sender: TObject);
procedure actExportExecute(Sender: TObject);
@ -538,6 +542,26 @@ begin
end;
end;
procedure TfWstTypeLibraryEdit.actDeleteExecute (Sender : TObject );
var
o : TPasElement;
nd : TTreeNode;
begin
nd := trvSchema.Selected;
if Assigned(nd) and Assigned(nd.Data) then begin
o := TPasElement(nd.Data);
if HasEditor(o) then begin
DeleteObject(o,FSymbolTable);
trvSchema.BeginUpdate();
try
FreeAndNil(nd);
finally
trvSchema.EndUpdate();
end;
end;
end;
end;
procedure TfWstTypeLibraryEdit.actEnumCreateExecute(Sender: TObject);
var
e : TPasEnumType;

View File

@ -1092,7 +1092,7 @@ Var
begin
GenerateUnitHeader();
GenerateUnitImplementationHeader();
typeList := SymbolTable.CurrentModule.InterfaceSection.Types;
typeList := SymbolTable.CurrentModule.InterfaceSection.Declarations;
c := Pred(typeList.Count);
for i := 0 to c do begin
elt := TPasElement(typeList[i]);
@ -1363,7 +1363,7 @@ Var
begin
GenerateUnitHeader();
GenerateUnitImplementationHeader();
typeList := SymbolTable.CurrentModule.InterfaceSection.Types;
typeList := SymbolTable.CurrentModule.InterfaceSection.Declarations;
c := Pred(typeList.Count);
for i := 0 to c do begin
elt := TPasElement(typeList[i]);
@ -2131,7 +2131,7 @@ begin
try
GenerateUnitHeader();
GenerateUnitImplementationHeader();
typeList := SymbolTable.CurrentModule.InterfaceSection.Types;
typeList := SymbolTable.CurrentModule.InterfaceSection.Declarations;
c := Pred(typeList.Count);
SetCurrentStream(FDecStream);
@ -2200,7 +2200,7 @@ begin
for j := 0 to k do begin
clssTyp := objLst[k-j] as TPasClassType;
if ( gnrClssLst.IndexOf(clssTyp) = -1 ) then begin
if ( FSymbolTable.CurrentModule.InterfaceSection.Types.IndexOf(clssTyp) <> -1 ) then begin
if ( FSymbolTable.CurrentModule.InterfaceSection.Declarations.IndexOf(clssTyp) <> -1 ) then begin
GenerateClass(clssTyp);
gnrClssLst.Add(clssTyp);
end;

View File

@ -16,11 +16,9 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
}
{$INCLUDE wst_global.inc}
unit metadata_generator;
{$mode objfpc}{$H+}
interface
uses

View File

@ -218,6 +218,9 @@ begin
splTyp := AContainer.FindElementInModule(SIMPLE_TYPES[i][0],ADest) as TPasNativeSimpleType;
if not IsStrEmpty(SIMPLE_TYPES[i][2]) then begin
AContainer.RegisterExternalAlias(splTyp,SIMPLE_TYPES[i][2]);
if ( splTyp.BoxedType <> nil ) then begin
AContainer.RegisterExternalAlias(splTyp.BoxedType,SIMPLE_TYPES[i][2]);
end;
end;
end;
end;
@ -279,10 +282,10 @@ begin
(AContainer.FindElementInModule('TComplexFloatDoubleContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable;
AddClassDef(Result,'TBaseComplexRemotable','TAbstractComplexRemotable',TPasNativeClassType);
AddClassDef(Result,'THeaderBlock','TBaseComplexRemotable');
AddClassDef(Result,'TBaseArrayRemotable','TAbstractComplexRemotable');
AddClassDef(Result,'TBaseObjectArrayRemotable','TBaseArrayRemotable');
AddClassDef(Result,'TBaseSimpleTypeArrayRemotable','TBaseArrayRemotable');
AddClassDef(Result,'THeaderBlock','TBaseComplexRemotable',TPasNativeClassType);
AddClassDef(Result,'TBaseArrayRemotable','TAbstractComplexRemotable',TPasNativeClassType);
AddClassDef(Result,'TBaseObjectArrayRemotable','TBaseArrayRemotable',TPasNativeClassType);
AddClassDef(Result,'TBaseSimpleTypeArrayRemotable','TBaseArrayRemotable',TPasNativeClassType);
AddClassDef(Result,'TArrayOfStringRemotable','TBaseSimpleTypeArrayRemotable');
AddClassDef(Result,'TArrayOfBooleanRemotable','TBaseSimpleTypeArrayRemotable');
AddClassDef(Result,'TArrayOfInt8URemotable','TBaseSimpleTypeArrayRemotable');
@ -439,8 +442,8 @@ function TwstPasTreeContainer.CreateElement(
ASourceLinenumber : Integer
) : TPasElement;
begin
//WriteLn('TwstPasTreeContainer.CreateElement(',AName,')');
Result := AClass.Create(AName,AParent);
RegisterExternalAlias(Result,AName);
Result.Visibility := AVisibility;
Result.SourceFilename := ASourceFilename;
Result.SourceLinenumber := ASourceLinenumber;

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=""/>
<ActiveEditorIndexAtStart Value="8"/>
<ActiveEditorIndexAtStart Value="1"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -131,8 +131,8 @@
<Filename Value="metadata_generator.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_generator"/>
<CursorPos X="37" Y="122"/>
<TopLine Value="114"/>
<CursorPos X="2" Y="19"/>
<TopLine Value="5"/>
<EditorIndex Value="1"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
@ -500,7 +500,12 @@
<UsageCount Value="11"/>
</Unit62>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="metadata_generator.pas"/>
<Caret Line="122" Column="37" TopLine="114"/>
</Position1>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -509,6 +514,7 @@
<Filename Value="ws_helper.exe"/>
</Target>
<SearchPaths>
<IncludeFiles Value="..\"/>
<OtherUnitFiles Value="$(LazarusDir)\fpc\2.1.5\source\packages\fcl-passrc\src\;..\;..\wst_rtti_filter\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>

View File

@ -178,11 +178,13 @@ const
s_body : WideString = 'body';
s_complexContent : WideString = 'complexContent';
s_complexType : WideString = 'complexType';
s_customAttributes : WideString = 'customAttributes';
s_document : WideString = 'document';
s_element : WideString = 'element';
s_enumeration : WideString = 'enumeration';
s_extension : WideString = 'extension';
s_guid : WideString = 'GUID';
s_headerBlock : WideString = 'headerBlock';
s_input : WideString = 'input';
s_item : WideString = 'item';
s_location : WideString = 'location';
@ -2019,6 +2021,37 @@ var
FSymbols.RegisterExternalAlias(Result,ATypeName);
end;
function IsHeaderBlock() : Boolean;
var
nd : TDOMNode;
tmpCrs : IObjectCursor;
begin
Result := False;
tmpCrs := CreateCursorOn(
CreateChildrenCursor(FTypeNode,cetRttiNode),
ParseFilter(CreateQualifiedNameFilterStr(s_document,FOwner.FWsdlShortNames),TDOMNodeRttiExposer)
);
tmpCrs.Reset();
if tmpCrs.MoveNext() then begin
nd := (tmpCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject;
if nd.HasChildNodes() then begin
tmpCrs := CreateCursorOn(
CreateChildrenCursor(nd,cetRttiNode),
ParseFilter(Format('%s=%s',[s_NODE_NAME,QuotedStr(s_customAttributes)]),TDOMNodeRttiExposer)
);
tmpCrs.Reset();
if tmpCrs.MoveNext() then begin
nd := (tmpCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject;
if nd.HasAttributes() then begin
nd := nd.Attributes.GetNamedItem(s_headerBlock);
if Assigned(nd) then
Result := AnsiSameText('true',Trim(nd.NodeValue));
end;
end;
end;
end;
end;
var
eltCrs, eltAttCrs : IObjectCursor;
internalName : string;
@ -2054,8 +2087,12 @@ begin
if ( FDerivationMode in [dmExtension, dmRestriction] ) then begin
classDef.AncestorType := FBaseType;
end;
if ( classDef.AncestorType = nil ) then
classDef.AncestorType := FSymbols.FindElementInModule('TBaseComplexRemotable',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType;
if ( classDef.AncestorType = nil ) then begin
if IsHeaderBlock() then
classDef.AncestorType := FSymbols.FindElementInModule('THeaderBlock',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType
else
classDef.AncestorType := FSymbols.FindElementInModule('TBaseComplexRemotable',FSymbols.FindModule('base_service_intf') as TPasModule) as TPasType;
end;
classDef.AncestorType.AddRef();
if Assigned(eltCrs) or Assigned(eltAttCrs) then begin
isArrayDef := False;

View File

@ -1,15 +1,10 @@
{$IFNDEF FPC}
const FPC_RELEASE = 0;
const FPC_RELEASE = 0;
const FPC_VERSION = 0;
{$ENDIF}
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$DEFINE HAS_QWORD}
{$DEFINE USE_INLINE}
{$IF( (FPC_VERSION = 2) and (FPC_RELEASE > 0) ) }
{$define FPC_211}
{$IFEND}
{$ELSE}
{$UNDEF HAS_QWORD}
{$UNDEF USE_INLINE}
{$ENDIF}

View File

@ -5,4 +5,5 @@
PtrInt = Cardinal;
PByteArray = ^ByteArray;
ByteArray = array[0..$effffff] of Byte;
{$ENDIF}
PtrUInt = Cardinal;
{$ENDIF}

View File

@ -0,0 +1,103 @@
unit wst_delphi_xml;
interface
uses
SysUtils, Classes, xmldom, XMLIntf;
const
LineEnding = sLineBreak;
type
TDOMNode = IDOMNode;
TDOMNodeList = IDOMNodeList;
TXMLDocument = IDOMDocument;
TDOMElement = IDOMElement;
function FindNode(ANode : TDOMNode; const ANodeName : string):TDOMNode;
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;
procedure ReleaseDomNode(ADomNode : IInterface);overload;
procedure ReleaseDomNode(var ADomNode : TXMLDocument);overload;
function CreateDoc() : TXMLDocument ;
procedure WriteXMLFile(ADoc : TXMLDocument; AStream : TStream);
procedure ReadXMLFile(ADoc : TXMLDocument; AStream : TStream);
function NodeToBuffer(ANode : TDOMNode):string ;
implementation
uses XmlDoc;
function FindNode(ANode : TDOMNode; const ANodeName : string):TDOMNode;
var
i, c : Integer;
lst : TDOMNodeList;
begin
Result := nil;
if ANode.hasChildNodes then begin
lst := ANode.childNodes;
c := lst.length;
for i := 0 to Pred(c) do begin
if ( ANodeName = lst.item[i].nodeName ) then begin
Result := lst[i];
Break;
end;
end;
end;
end;
procedure WriteXMLFile(ADoc : TXMLDocument; AStream : TStream);
begin
(ADoc as IDOMPersist).saveToStream(AStream);
end;
procedure ReadXMLFile(ADoc : TXMLDocument; AStream : TStream);
begin
(ADoc as IDOMPersist).loadFromStream(AStream);
end;
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
begin
if ANode.HasChildNodes then begin
Result := ANode.childNodes.length;
end else begin
Result := 0;
end;
end;
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;
begin
Result := ANodeList.length;
end;
procedure ReleaseDomNode(ADomNode : IInterface);
begin
end;
procedure ReleaseDomNode(var ADomNode : TXMLDocument);
begin
end;
function CreateDoc() : TXMLDocument ;
var
locDoc : IXMLDocument;
begin
locDoc := XmlDoc.TXMLDocument.Create(nil);
locDoc.Active := True;
Result := locDoc.DOMDocument;
end;
function NodeToBuffer(ANode : TDOMNode):string ;
var
locStream : TStringStream;
locNodeEx : IDOMNodeEx;
begin
if Supports(ANode,IDOMNodeEx,locNodeEx) then begin
Result := locNodeEx.xml;
end else begin
raise Exception.Create('This Xml library do not provide "IDOMNodeEx" support.');
end;
end;
end.

80
wst/trunk/wst_fpc_xml.pas Normal file
View File

@ -0,0 +1,80 @@
{$INCLUDE wst_global.inc}
unit wst_fpc_xml;
interface
uses
Classes, SysUtils, DOM;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;{$IFDEF USE_INLINE}inline;{$ENDIF}
procedure ReleaseDomNode(ADomNode : TDOMNode);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
function CreateDoc() : TXMLDocument ;{$IFDEF USE_INLINE}inline;{$ENDIF}
function FindNode(ANode : TDOMNode;const ANodeName : string) : TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
function NodeToBuffer(ANode : TDOMNode):string ;
implementation
uses XMLWrite;
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
var
chdLst : TDOMNodeList;
begin
if ANode.HasChildNodes then begin
chdLst := ANode.ChildNodes;
try
Result := chdLst.Count;
finally
chdLst.Release();
end;
end else begin
Result := 0;
end;
end;
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := ANodeList.Count;
end;
procedure ReleaseDomNode(ADomNode : TDOMNode);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
ADomNode.Free();
end;
procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
ADomNode.Release();
end;
function CreateDoc() : TXMLDocument ;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := TXMLDocument.Create();
Result.Encoding := 'UTF-8';
end;
function FindNode(ANode : TDOMNode;const ANodeName : string) : TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := ANode.FindNode(ANodeName);
end;
function NodeToBuffer(ANode : TDOMNode):string ;
var
locStream : TStringStream;
begin
locStream := TStringStream.Create('');
try
WriteXML(ANode,locStream);
Result := locStream.DataString;
finally
locStream.Free();
end;
end;
end.

8
wst/trunk/wst_global.inc Normal file
View File

@ -0,0 +1,8 @@
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$DEFINE HAS_QWORD}
{$DEFINE USE_INLINE}
{$ELSE}
{$UNDEF HAS_QWORD}
{$UNDEF USE_INLINE}
{$ENDIF}

View File

@ -1,3 +1,4 @@
{$INCLUDE wst_global.inc}
unit wst_resources_imp;
interface
@ -6,6 +7,7 @@ uses
Classes, SysUtils;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type

View File

@ -10,15 +10,17 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit cursor_intf;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
ECursorException = class(Exception)

View File

@ -10,18 +10,18 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit dom_cursors;
{$mode objfpc}{$H+}
{$IF (FPC_VERSION = 2) and (FPC_RELEASE > 0)}
{$define FPC_211}
{$ENDIF}
interface
uses
Classes, SysUtils,
cursor_intf, DOM;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
s_NODE_NAME = 'NodeName';

View File

@ -10,16 +10,18 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit rtti_filters;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Contnrs, TypInfo,
cursor_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
ERttiFilterException = class(Exception)
@ -326,9 +328,9 @@ begin
propInfo := GetPropInfo(AFltrCrtr.TargetClass,propName);
if ( propInfo = nil ) then
raise ERttiFilterException.CreateFmt('Invalid property : "%s"',[propName]);
if ( propInfo^.PropType^.Kind in [tkSString,tkLString,tkAString,tkWString] ) then
if ( propInfo^.PropType^.Kind in [{$IFDEF FPC}tkSString,tkAString,{$ENDIF}tkLString,tkWString] ) then
Handle_String()
else if ( propInfo^.PropType^.Kind in [tkInteger,tkInt64,tkQWord] ) then
else if ( propInfo^.PropType^.Kind in [tkInteger,tkInt64{$IFDEF FPC},tkQWord{$ENDIF}] ) then
Handle_Integer()
else
raise ERttiFilterException.CreateFmt('Type not handled : "%s"',[GetEnumName(TypeInfo(TTypeKind),Ord(propInfo^.PropType^.Kind))]);
@ -421,7 +423,7 @@ constructor TRttiExpIntegerNodeItem.Create(
);
begin
Assert(Assigned(APropInfo));
if not ( APropInfo^.PropType^.Kind in [tkInteger,tkInt64,tkQWord] ) then
if not ( APropInfo^.PropType^.Kind in [tkInteger,tkInt64{$IFDEF FPC},tkQWord{$ENDIF}] ) then
raise ERttiFilterException.CreateFmt('Invalid property data type. "%s" excpeted.',['Integer']);
inherited Create(APropInfo,AOperation);
FComparedValue := AComparedValue;
@ -626,7 +628,7 @@ constructor TRttiExpAnsiStringNodeItem.Create(
);
begin
Assert(Assigned(APropInfo));
if not ( APropInfo^.PropType^.Kind in [tkSString,tkLString,tkAString] ) then
if not ( APropInfo^.PropType^.Kind in [{$IFDEF FPC}tkSString,tkAString,{$ENDIF}tkLString] ) then
raise ERttiFilterException.CreateFmt('Invalid property data type. "%s" excpeted.',['AnsiString']);
inherited Create(APropInfo,AOperation);
FComparedValue := AComparedValue;

View File

@ -1,13 +1,15 @@
{$INCLUDE wst_global.inc}
unit std_cursors;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Contnrs,
cursor_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
{ TObjectListCursor }

View File

@ -1,13 +1,15 @@
{$INCLUDE wst_global.inc}
unit test_std_cursors;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Contnrs,
fpcunit, testutils, testregistry,
cursor_intf, std_cursors, rtti_filters;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type

View File

@ -10,12 +10,14 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit xmlrpc_formatter;
interface
uses
Classes, SysUtils, TypInfo, DOM,
Classes, SysUtils, TypInfo,
{$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF},
base_service_intf, service_intf, imp_utils, base_xmlrpc_formatter;
{$INCLUDE wst.inc}
@ -67,7 +69,7 @@ type
{$M-}
implementation
{$IFDEF FPC}uses wst_fpc_xml;{$ENDIF}
{ TXmlRpcFormatter }
@ -134,19 +136,19 @@ begin
if not SameText(sMETHOD_RESPONSE,callNode.NodeName) then
Error('XML root node must be "%s".',[sMETHOD_RESPONSE]);
prmsNode := callNode.FindNode(sPARAMS);
prmsNode := FindNode(callNode,sPARAMS);
if ( prmsNode <> nil ) then begin
PushStackParams(prmsNode);
end else begin
faultNode := callNode.FindNode(sFAULT);
faultNode := FindNode(callNode,sFAULT);
if ( faultNode = nil ) then begin
raise EServiceException.CreateFmt('Invalid XmlRPC response message, "%s" or "%s" are not present.',[sPARAMS,sFAULT]);
end;
tmpNode := faultNode.FindNode(sVALUE);
tmpNode := FindNode(faultNode,sVALUE);
if ( tmpNode = nil ) then begin
raise EServiceException.CreateFmt('Invalid XmlRPC fault response message, "%s" is not present.',[sVALUE]);
end;
tmpNode := tmpNode.FindNode(XmlRpcDataTypeNames[xdtStruct]);
tmpNode := FindNode(tmpNode,XmlRpcDataTypeNames[xdtStruct]);
if ( tmpNode = nil ) then begin
raise EServiceException.CreateFmt('Invalid XmlRPC fault response message, "%s" is not present.',[XmlRpcDataTypeNames[xdtStruct]]);
end;