diff --git a/wst/trunk/base_service_intf.pas b/wst/trunk/base_service_intf.pas index 933b35804..c784a2c8e 100644 --- a/wst/trunk/base_service_intf.pas +++ b/wst/trunk/base_service_intf.pas @@ -4691,7 +4691,6 @@ begin end; if ( ss <> AStore.GetSerializationStyle() ) then AStore.SetSerializationStyle(ss); - AStore.SetSerializationStyle(ss); prpName := typRegItem.GetExternalPropertyName(p^.Name); recFieldAddress := recStart; Inc(recFieldAddress,p^.Offset); @@ -4795,7 +4794,6 @@ begin end; if ( ss <> AStore.GetSerializationStyle() ) then AStore.SetSerializationStyle(ss); - AStore.SetSerializationStyle(ss); recFieldAddress := recStart; Inc(recFieldAddress,p^.Offset); //try diff --git a/wst/trunk/doc/WebServiceToolKit.odt b/wst/trunk/doc/WebServiceToolKit.odt index 3f3c31a9d..0a6291349 100644 Binary files a/wst/trunk/doc/WebServiceToolKit.odt and b/wst/trunk/doc/WebServiceToolKit.odt differ diff --git a/wst/trunk/samples/delphi/user_client_console/user_client_console.dpr b/wst/trunk/samples/delphi/user_client_console/user_client_console.dpr index a9d8178dc..6262f1db4 100644 --- a/wst/trunk/samples/delphi/user_client_console/user_client_console.dpr +++ b/wst/trunk/samples/delphi/user_client_console/user_client_console.dpr @@ -18,10 +18,6 @@ uses {$INCLUDE wst.inc} -type - TUser = TUser_Type; - TUserCategory = TUserCategory_Type; - var UserServiceInst : UserService; diff --git a/wst/trunk/samples/http_server/http_server.lpi b/wst/trunk/samples/http_server/http_server.lpi index cac463067..048c0d4f7 100644 --- a/wst/trunk/samples/http_server/http_server.lpi +++ b/wst/trunk/samples/http_server/http_server.lpi @@ -12,7 +12,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -81,18 +81,18 @@ - - - + + + - - - + + + @@ -100,9 +100,9 @@ - + - + @@ -111,7 +111,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -339,7 +339,9 @@ + + @@ -439,7 +441,7 @@ - + @@ -561,11 +563,34 @@ + + + + + + + + + + + + + + + + + + + + + + + - - + + diff --git a/wst/trunk/samples/user_client_console/user_client_console.lpi b/wst/trunk/samples/user_client_console/user_client_console.lpi index 9f085688f..b2cfee300 100644 --- a/wst/trunk/samples/user_client_console/user_client_console.lpi +++ b/wst/trunk/samples/user_client_console/user_client_console.lpi @@ -35,7 +35,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -355,7 +355,16 @@ - + + + + + + + + + + diff --git a/wst/trunk/samples/user_client_console/user_client_console.pas b/wst/trunk/samples/user_client_console/user_client_console.pas index a1872e60b..1b1dc887c 100644 --- a/wst/trunk/samples/user_client_console/user_client_console.pas +++ b/wst/trunk/samples/user_client_console/user_client_console.pas @@ -9,10 +9,6 @@ uses soap_formatter, binary_formatter, user_service_intf, xmlrpc_formatter; -type - TUser = TUser_Type; - TUserCategory = TUserCategory_Type; - var UserServiceInst : UserService; diff --git a/wst/trunk/samples/user_service_intf.pas b/wst/trunk/samples/user_service_intf.pas index e2049709d..0c015b4ac 100644 --- a/wst/trunk/samples/user_service_intf.pas +++ b/wst/trunk/samples/user_service_intf.pas @@ -2,10 +2,15 @@ This unit has been produced by ws_helper. Input unit name : "user_service_intf". This unit name : "user_service_intf". - Date : "14/08/2007 21:45:00". + Date : "26/08/2007 01:03:09". } unit user_service_intf; -{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF} +{$IFDEF FPC} + {$mode objfpc} {$H+} +{$ENDIF} +{$IFNDEF FPC} + {$DEFINE WST_RECORD_RTTI} +{$ENDIF} interface uses SysUtils, Classes, TypInfo, base_service_intf, service_intf; @@ -17,33 +22,33 @@ const type TUserArray = class; - TUser_Type = class; - TNote_Type = class; + TUser = class; + TNote = class; - TUserCategory_Type = ( + TUserCategory = ( Normal ,Admin ); - TUser_Type = class(TBaseComplexRemotable) + TUser = class(TBaseComplexRemotable) private - FCategory : TUserCategory_Type; + FCategory : TUserCategory; FUserName : string; FeMail : string; FPreferences : string; - FNote : TNote_Type; + FNote : TNote; public constructor Create();override; destructor Destroy();override; published - property Category : TUserCategory_Type read FCategory write FCategory; + property Category : TUserCategory read FCategory write FCategory; property UserName : string read FUserName write FUserName; property eMail : string read FeMail write FeMail; property Preferences : string read FPreferences write FPreferences; - property Note : TNote_Type read FNote write FNote; + property Note : TNote read FNote write FNote; end; - TNote_Type = class(TBaseComplexRemotable) + TNote = class(TBaseComplexRemotable) private FHeader : string; FAuthor : string; @@ -56,24 +61,24 @@ type TUserArray = class(TBaseObjectArrayRemotable) private - function GetItem(AIndex: Integer): TUser_Type; + function GetItem(AIndex: Integer): TUser; public class function GetItemClass():TBaseRemotableClass;override; - property Item[AIndex:Integer] : TUser_Type Read GetItem;Default; + property Item[AIndex:Integer] : TUser Read GetItem;Default; end; UserService = interface(IInvokable) ['{F49D8FA4-9BBC-4321-9869-5BA745070ABC}'] function GetList():TUserArray; procedure Add( - const AUser : TUser_Type + const AUser : TUser ); procedure Update( - const AUser : TUser_Type + const AUser : TUser ); function Find( const AName : string - ):TUser_Type; + ):TUser; function Delete( const AName : string ):boolean; @@ -82,17 +87,17 @@ type procedure Register_user_service_intf_ServiceMetadata(); Implementation -uses metadata_repository; +uses metadata_repository, record_rtti, wst_types; -{ TUser_Type } +{ TUser } -constructor TUser_Type.Create(); +constructor TUser.Create(); begin inherited Create(); - FNote := TNote_Type.Create(); + FNote := TNote.Create(); end; -destructor TUser_Type.Destroy(); +destructor TUser.Destroy(); begin if Assigned(FNote) then FreeAndNil(FNote); @@ -101,14 +106,14 @@ end; { TUserArray } -function TUserArray.GetItem(AIndex: Integer): TUser_Type; +function TUserArray.GetItem(AIndex: Integer): TUser; begin - Result := Inherited GetItem(AIndex) As TUser_Type; + Result := Inherited GetItem(AIndex) As TUser; end; class function TUserArray.GetItemClass(): TBaseRemotableClass; begin - Result:= TUser_Type; + Result:= TUser; end; @@ -274,11 +279,12 @@ end; initialization - GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserCategory_Type),'TUserCategory'); - GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUser_Type),'TUser'); - GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TNote_Type),'TNote'); + GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserCategory),'TUserCategory'); + GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUser),'TUser'); + GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TNote),'TNote'); GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TUserArray),'TUserArray'); GetTypeRegistry().ItemByTypeInfo[TypeInfo(TUserArray)].RegisterExternalPropertyName(sARRAY_ITEM,'item'); + End. diff --git a/wst/trunk/samples/user_service_intf_binder.pas b/wst/trunk/samples/user_service_intf_binder.pas index a8da14d43..98fd8dec1 100644 --- a/wst/trunk/samples/user_service_intf_binder.pas +++ b/wst/trunk/samples/user_service_intf_binder.pas @@ -2,7 +2,7 @@ This unit has been produced by ws_helper. Input unit name : "user_service_intf". This unit name : "user_service_intf_binder". - Date : "16/07/2007 19:01:46". + Date : "26/08/2007 01:03:09". } unit user_service_intf_binder; {$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF} @@ -52,7 +52,7 @@ var returnVal : TUserArray; begin callCtx := AContext; - TObject(returnVal) := nil; + Fillchar(returnVal,SizeOf(TUserArray),#0); tmpObj := Self.GetFactory().CreateInstance() as UserService; @@ -90,12 +90,12 @@ var callCtx : ICallContext; strPrmName : string; procName,trgName : string; - AUser : TUser_Type; + AUser : TUser; begin callCtx := AContext; - TObject(AUser) := nil; + Fillchar(AUser,SizeOf(TUser),#0); - strPrmName := 'AUser'; AFormatter.Get(TypeInfo(TUser_Type),strPrmName,AUser); + strPrmName := 'AUser'; AFormatter.Get(TypeInfo(TUser),strPrmName,AUser); if Assigned(Pointer(AUser)) then callCtx.AddObjectToFree(TObject(AUser)); @@ -131,12 +131,12 @@ var callCtx : ICallContext; strPrmName : string; procName,trgName : string; - AUser : TUser_Type; + AUser : TUser; begin callCtx := AContext; - TObject(AUser) := nil; + Fillchar(AUser,SizeOf(TUser),#0); - strPrmName := 'AUser'; AFormatter.Get(TypeInfo(TUser_Type),strPrmName,AUser); + strPrmName := 'AUser'; AFormatter.Get(TypeInfo(TUser),strPrmName,AUser); if Assigned(Pointer(AUser)) then callCtx.AddObjectToFree(TObject(AUser)); @@ -173,10 +173,10 @@ var strPrmName : string; procName,trgName : string; AName : string; - returnVal : TUser_Type; + returnVal : TUser; begin callCtx := AContext; - TObject(returnVal) := nil; + Fillchar(returnVal,SizeOf(TUser),#0); strPrmName := 'AName'; AFormatter.Get(TypeInfo(string),strPrmName,AName); @@ -195,7 +195,7 @@ begin trgName := AFormatter.GetCallTarget(); AFormatter.Clear(); AFormatter.BeginCallResponse(procName,trgName); - AFormatter.Put('result',TypeInfo(TUser_Type),returnVal); + AFormatter.Put('result',TypeInfo(TUser),returnVal); AFormatter.EndCallResponse(); callCtx := nil; diff --git a/wst/trunk/samples/user_service_intf_imp.pas b/wst/trunk/samples/user_service_intf_imp.pas index 0449f5629..388f3b8c5 100644 --- a/wst/trunk/samples/user_service_intf_imp.pas +++ b/wst/trunk/samples/user_service_intf_imp.pas @@ -14,8 +14,6 @@ Uses SysUtils, Classes, Type - TUser = TUser_Type; - { TUserService_ServiceImp } TUserService_ServiceImp=class(TActivableServiceImplementation,UserService) diff --git a/wst/trunk/samples/user_service_intf_proxy.pas b/wst/trunk/samples/user_service_intf_proxy.pas index 01318691a..e1f3765cb 100644 --- a/wst/trunk/samples/user_service_intf_proxy.pas +++ b/wst/trunk/samples/user_service_intf_proxy.pas @@ -2,7 +2,7 @@ This unit has been produced by ws_helper. Input unit name : "user_service_intf". This unit name : "user_service_intf_proxy". - Date : "14/08/2007 21:45:00". + Date : "26/08/2007 01:03:09". } Unit user_service_intf_proxy; @@ -19,14 +19,14 @@ Type class function GetServiceType() : PTypeInfo;override; function GetList():TUserArray; procedure Add( - const AUser : TUser_Type + const AUser : TUser ); procedure Update( - const AUser : TUser_Type + const AUser : TUser ); function Find( const AName : string - ):TUser_Type; + ):TUser; function Delete( const AName : string ):boolean; @@ -73,7 +73,7 @@ Begin End; procedure TUserService_Proxy.Add( - const AUser : TUser_Type + const AUser : TUser ); Var locSerializer : IFormatterClient; @@ -82,7 +82,7 @@ Begin locSerializer := GetSerializer(); Try locSerializer.BeginCall('Add', GetTarget(),(Self as ICallContext)); - locSerializer.Put('AUser', TypeInfo(TUser_Type), AUser); + locSerializer.Put('AUser', TypeInfo(TUser), AUser); locSerializer.EndCall(); MakeCall(); @@ -95,7 +95,7 @@ Begin End; procedure TUserService_Proxy.Update( - const AUser : TUser_Type + const AUser : TUser ); Var locSerializer : IFormatterClient; @@ -104,7 +104,7 @@ Begin locSerializer := GetSerializer(); Try locSerializer.BeginCall('Update', GetTarget(),(Self as ICallContext)); - locSerializer.Put('AUser', TypeInfo(TUser_Type), AUser); + locSerializer.Put('AUser', TypeInfo(TUser), AUser); locSerializer.EndCall(); MakeCall(); @@ -118,7 +118,7 @@ End; function TUserService_Proxy.Find( const AName : string -):TUser_Type; +):TUser; Var locSerializer : IFormatterClient; strPrmName : string; @@ -134,7 +134,7 @@ Begin locSerializer.BeginCallRead((Self as ICallContext)); TObject(Result) := Nil; strPrmName := 'result'; - locSerializer.Get(TypeInfo(TUser_Type), strPrmName, Result); + locSerializer.Get(TypeInfo(TUser), strPrmName, Result); Finally locSerializer.Clear(); diff --git a/wst/trunk/tests/amazon/amazon.lpi b/wst/trunk/tests/amazon/amazon.lpi index 5062dffb7..1de8add8a 100644 --- a/wst/trunk/tests/amazon/amazon.lpi +++ b/wst/trunk/tests/amazon/amazon.lpi @@ -7,7 +7,7 @@ - + @@ -38,7 +38,9 @@ + + @@ -54,7 +56,6 @@ - @@ -67,7 +68,7 @@ - + @@ -217,87 +218,12 @@ - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/wst/trunk/tests/amazon/amazon.lpr b/wst/trunk/tests/amazon/amazon.lpr index 06b1db083..a9fc64952 100644 --- a/wst/trunk/tests/amazon/amazon.lpr +++ b/wst/trunk/tests/amazon/amazon.lpr @@ -8,7 +8,7 @@ uses {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset Forms, - umain, AWSECommerceService; + umain; begin Application.Initialize; diff --git a/wst/trunk/tests/record/record_sample.pas b/wst/trunk/tests/record/record_sample.pas index 1ad78aa21..8fef55571 100644 --- a/wst/trunk/tests/record/record_sample.pas +++ b/wst/trunk/tests/record/record_sample.pas @@ -2,7 +2,7 @@ This unit has been produced by ws_helper. Input unit name : "record_sample". This unit name : "record_sample". - Date : "17/08/2007 19:37:26". + Date : "26/08/2007 01:12:11". } unit record_sample; {$IFDEF FPC} @@ -16,40 +16,27 @@ interface uses SysUtils, Classes, TypInfo, base_service_intf, service_intf; const - sNAME_SPACE = 'record_sample'; + sNAME_SPACE = 'urn:record_sample'; sUNIT_NAME = 'record_sample'; type + TRecordClass = class; - RecordA = record - fieldB : Single; - fieldA : Integer; - comment : String; - end; - - RecordB = record - singleField : Single; - intField : Integer; - comment : String; - RecordField : RecordA; - end; - - RecordC = record - intField : Integer; - RecordField : RecordB; + TRecordClass = class(TBaseComplexRemotable) + private + FfieldA : integer; + FfieldB : Single; + published + property fieldA : integer read FfieldA write FfieldA; + property fieldB : Single read FfieldB write FfieldB; end; RecordService = interface(IInvokable) ['{E42B7653-4B50-4956-88B4-FBCEC57B667A}'] function Add( - const AValue : RecordA - ):RecordB; - function AddRec( - const AA : RecordA; - const AB : RecordB; - const AC : RecordC - ):RecordC; + const AValue : TRecordClass + ):Int64; end; procedure Register_record_sample_ServiceMetadata(); @@ -64,83 +51,45 @@ var begin mm := GetModuleMetadataMngr(); mm.SetRepositoryNameSpace(sUNIT_NAME, sNAME_SPACE); -end; - - - -{$IFDEF WST_RECORD_RTTI} -function __RecordA_TYPEINFO_FUNC__() : PTypeInfo; -var - p : ^RecordA; - r : RecordA; -begin - p := @r; - Result := MakeRawTypeInfo( - 'RecordA', - SizeOf(RecordA), - [ PtrUInt(@(p^.fieldB)) - PtrUInt(p), PtrUInt(@(p^.fieldA)) - PtrUInt(p), PtrUInt(@(p^.comment)) - PtrUInt(p) ], - [ TypeInfo(Single), TypeInfo(Integer), TypeInfo(String) ] + mm.SetServiceCustomData( + sUNIT_NAME, + 'RecordService', + 'TRANSPORT_Address', + 'http://127.0.0.1:20000' + ); + mm.SetServiceCustomData( + sUNIT_NAME, + 'RecordService', + 'FORMAT_Style', + 'rpc' + ); + mm.SetOperationCustomData( + sUNIT_NAME, + 'RecordService', + 'Add', + '_E_N_', + 'Add' + ); + mm.SetOperationCustomData( + sUNIT_NAME, + 'RecordService', + 'Add', + 'FORMAT_Input_EncodingStyle', + 'literal' + ); + mm.SetOperationCustomData( + sUNIT_NAME, + 'RecordService', + 'Add', + 'FORMAT_OutputEncodingStyle', + 'literal' ); end; -{$ENDIF WST_RECORD_RTTI} -{$IFDEF WST_RECORD_RTTI} -function __RecordB_TYPEINFO_FUNC__() : PTypeInfo; -var - p : ^RecordB; - r : RecordB; -begin - p := @r; - Result := MakeRawTypeInfo( - 'RecordB', - SizeOf(RecordB), - [ PtrUInt(@(p^.singleField)) - PtrUInt(p), PtrUInt(@(p^.intField)) - PtrUInt(p), PtrUInt(@(p^.comment)) - PtrUInt(p), PtrUInt(@(p^.RecordField)) - PtrUInt(p) ], - [ TypeInfo(Single), TypeInfo(Integer), TypeInfo(String), TypeInfo(RecordA) ] - ); -end; -{$ENDIF WST_RECORD_RTTI} -{$IFDEF WST_RECORD_RTTI} -function __RecordC_TYPEINFO_FUNC__() : PTypeInfo; -var - p : ^RecordC; - r : RecordC; -begin - p := @r; - Result := MakeRawTypeInfo( - 'RecordC', - SizeOf(RecordC), - [ PtrUInt(@(p^.intField)) - PtrUInt(p), PtrUInt(@(p^.RecordField)) - PtrUInt(p) ], - [ TypeInfo(Integer), TypeInfo(RecordB) ] - ); -end; -{$ENDIF WST_RECORD_RTTI} initialization + GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(TRecordClass),'TRecordClass'); - GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RecordA),'RecordA').RegisterExternalPropertyName('__FIELDS__','fieldB;fieldA;comment'); -{$IFNDEF WST_RECORD_RTTI} - GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordA)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(TypeInfo(RecordA)),GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordA)].GetExternalPropertyName('__FIELDS__'))); -{$ENDIF WST_RECORD_RTTI} -{$IFDEF WST_RECORD_RTTI} - GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordA)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(__RecordA_TYPEINFO_FUNC__()),GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordA)].GetExternalPropertyName('__FIELDS__'))); -{$ENDIF WST_RECORD_RTTI} - - GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RecordB),'RecordB').RegisterExternalPropertyName('__FIELDS__','singleField;intField;comment;RecordField'); -{$IFNDEF WST_RECORD_RTTI} - GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordB)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(TypeInfo(RecordB)),GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordB)].GetExternalPropertyName('__FIELDS__'))); -{$ENDIF WST_RECORD_RTTI} -{$IFDEF WST_RECORD_RTTI} - GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordB)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(__RecordB_TYPEINFO_FUNC__()),GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordB)].GetExternalPropertyName('__FIELDS__'))); -{$ENDIF WST_RECORD_RTTI} - - GetTypeRegistry().Register(sNAME_SPACE,TypeInfo(RecordC),'RecordC').RegisterExternalPropertyName('__FIELDS__','intField;RecordField'); -{$IFNDEF WST_RECORD_RTTI} - GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordC)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(TypeInfo(RecordC)),GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordC)].GetExternalPropertyName('__FIELDS__'))); -{$ENDIF WST_RECORD_RTTI} -{$IFDEF WST_RECORD_RTTI} - GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordC)].RegisterObject(FIELDS_STRING,TRecordRttiDataObject.Create(MakeRecordTypeInfo(__RecordC_TYPEINFO_FUNC__()),GetTypeRegistry().ItemByTypeInfo[TypeInfo(RecordC)].GetExternalPropertyName('__FIELDS__'))); -{$ENDIF WST_RECORD_RTTI} - End. diff --git a/wst/trunk/tests/record/record_sample_binder.pas b/wst/trunk/tests/record/record_sample_binder.pas index 7dee77048..482fa0897 100644 --- a/wst/trunk/tests/record/record_sample_binder.pas +++ b/wst/trunk/tests/record/record_sample_binder.pas @@ -2,7 +2,7 @@ This unit has been produced by ws_helper. Input unit name : "record_sample". This unit name : "record_sample_binder". - Date : "17/08/2007 19:37:26". + Date : "26/08/2007 01:12:11". } unit record_sample_binder; {$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF} @@ -16,7 +16,6 @@ type TRecordService_ServiceBinder = class(TBaseServiceBinder) protected procedure AddHandler(AFormatter : IFormatterResponse; AContext : ICallContext); - procedure AddRecHandler(AFormatter : IFormatterResponse; AContext : ICallContext); public constructor Create(); end; @@ -46,12 +45,15 @@ var callCtx : ICallContext; strPrmName : string; procName,trgName : string; - AValue : RecordA; - returnVal : RecordB; + AValue : TRecordClass; + returnVal : Int64; begin callCtx := AContext; + Fillchar(AValue,SizeOf(TRecordClass),#0); - strPrmName := 'AValue'; AFormatter.Get(TypeInfo(RecordA),strPrmName,AValue); + strPrmName := 'AValue'; AFormatter.Get(TypeInfo(TRecordClass),strPrmName,AValue); + if Assigned(Pointer(AValue)) then + callCtx.AddObjectToFree(TObject(AValue)); tmpObj := Self.GetFactory().CreateInstance() as RecordService; if Supports(tmpObj,ICallControl,cllCntrl) then @@ -66,51 +68,7 @@ begin trgName := AFormatter.GetCallTarget(); AFormatter.Clear(); AFormatter.BeginCallResponse(procName,trgName); - AFormatter.Put('Result',TypeInfo(RecordB),returnVal); - AFormatter.EndCallResponse(); - - callCtx := nil; - finally - if hasObjCntrl then - objCntrl.Deactivate(); - Self.GetFactory().ReleaseInstance(tmpObj); - end; -end; - -procedure TRecordService_ServiceBinder.AddRecHandler(AFormatter : IFormatterResponse; AContext : ICallContext); -var - cllCntrl : ICallControl; - objCntrl : IObjectControl; - hasObjCntrl : Boolean; - tmpObj : RecordService; - callCtx : ICallContext; - strPrmName : string; - procName,trgName : string; - AA : RecordA; - AB : RecordB; - AC : RecordC; - returnVal : RecordC; -begin - callCtx := AContext; - - strPrmName := 'AA'; AFormatter.Get(TypeInfo(RecordA),strPrmName,AA); - strPrmName := 'AB'; AFormatter.Get(TypeInfo(RecordB),strPrmName,AB); - strPrmName := 'AC'; AFormatter.Get(TypeInfo(RecordC),strPrmName,AC); - - tmpObj := Self.GetFactory().CreateInstance() as RecordService; - if Supports(tmpObj,ICallControl,cllCntrl) then - cllCntrl.SetCallContext(callCtx); - hasObjCntrl := Supports(tmpObj,IObjectControl,objCntrl); - if hasObjCntrl then - objCntrl.Activate(); - try - returnVal := tmpObj.AddRec(AA,AB,AC); - - procName := AFormatter.GetCallProcedureName(); - trgName := AFormatter.GetCallTarget(); - AFormatter.Clear(); - AFormatter.BeginCallResponse(procName,trgName); - AFormatter.Put('Result',TypeInfo(RecordC),returnVal); + AFormatter.Put('result',TypeInfo(Int64),returnVal); AFormatter.EndCallResponse(); callCtx := nil; @@ -126,7 +84,6 @@ constructor TRecordService_ServiceBinder.Create(); begin inherited Create(GetServiceImplementationRegistry().FindFactory('RecordService')); RegisterVerbHandler('Add',{$IFDEF FPC}@{$ENDIF}AddHandler); - RegisterVerbHandler('AddRec',{$IFDEF FPC}@{$ENDIF}AddRecHandler); end; diff --git a/wst/trunk/tests/record/record_sample_proxy.pas b/wst/trunk/tests/record/record_sample_proxy.pas index cbb34c5b5..052f91c70 100644 --- a/wst/trunk/tests/record/record_sample_proxy.pas +++ b/wst/trunk/tests/record/record_sample_proxy.pas @@ -2,7 +2,7 @@ This unit has been produced by ws_helper. Input unit name : "record_sample". This unit name : "record_sample_proxy". - Date : "17/08/2007 19:37:26". + Date : "26/08/2007 01:12:11". } Unit record_sample_proxy; @@ -18,13 +18,8 @@ Type Protected class function GetServiceType() : PTypeInfo;override; function Add( - const AValue : RecordA - ):RecordB; - function AddRec( - const AA : RecordA; - const AB : RecordB; - const AC : RecordC - ):RecordC; + const AValue : TRecordClass + ):Int64; End; Function wst_CreateInstance_RecordService(const AFormat : string = 'SOAP:'; const ATransport : string = 'HTTP:'):RecordService; @@ -46,8 +41,8 @@ begin end; function TRecordService_Proxy.Add( - const AValue : RecordA -):RecordB; + const AValue : TRecordClass +):Int64; Var locSerializer : IFormatterClient; strPrmName : string; @@ -55,42 +50,14 @@ Begin locSerializer := GetSerializer(); Try locSerializer.BeginCall('Add', GetTarget(),(Self as ICallContext)); - locSerializer.Put('AValue', TypeInfo(RecordA), AValue); + locSerializer.Put('AValue', TypeInfo(TRecordClass), AValue); locSerializer.EndCall(); MakeCall(); locSerializer.BeginCallRead((Self as ICallContext)); - strPrmName := 'Result'; - locSerializer.Get(TypeInfo(RecordB), strPrmName, Result); - - Finally - locSerializer.Clear(); - End; -End; - -function TRecordService_Proxy.AddRec( - const AA : RecordA; - const AB : RecordB; - const AC : RecordC -):RecordC; -Var - locSerializer : IFormatterClient; - strPrmName : string; -Begin - locSerializer := GetSerializer(); - Try - locSerializer.BeginCall('AddRec', GetTarget(),(Self as ICallContext)); - locSerializer.Put('AA', TypeInfo(RecordA), AA); - locSerializer.Put('AB', TypeInfo(RecordB), AB); - locSerializer.Put('AC', TypeInfo(RecordC), AC); - locSerializer.EndCall(); - - MakeCall(); - - locSerializer.BeginCallRead((Self as ICallContext)); - strPrmName := 'Result'; - locSerializer.Get(TypeInfo(RecordC), strPrmName, Result); + strPrmName := 'result'; + locSerializer.Get(TypeInfo(Int64), strPrmName, Result); Finally locSerializer.Clear(); diff --git a/wst/trunk/tests/record/server/record_server.lpi b/wst/trunk/tests/record/server/record_server.lpi index 698534c17..e0bbee6c5 100644 --- a/wst/trunk/tests/record/server/record_server.lpi +++ b/wst/trunk/tests/record/server/record_server.lpi @@ -12,7 +12,7 @@ - + @@ -60,8 +60,8 @@ - - + + @@ -188,16 +188,7 @@ - - - - - - - - - - + diff --git a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi index b521e0bf9..788e90f1c 100644 --- a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi +++ b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi @@ -7,7 +7,7 @@ - + @@ -32,13 +32,15 @@ - + - + + + @@ -47,8 +49,8 @@ - - + + @@ -63,9 +65,9 @@ - - - + + + @@ -74,13 +76,10 @@ - - - - + + - @@ -108,8 +107,8 @@ - - + + @@ -118,9 +117,9 @@ - - - + + + @@ -130,7 +129,7 @@ - + @@ -143,7 +142,7 @@ - + @@ -155,7 +154,7 @@ - + @@ -171,8 +170,8 @@ - - + + @@ -287,10 +286,10 @@ - - - - + + + + @@ -299,7 +298,7 @@ - + @@ -312,15 +311,15 @@ - - - + + + - + @@ -345,12 +344,12 @@ - - - - + + + + - + @@ -441,7 +440,7 @@ - + @@ -456,8 +455,8 @@ - - + + @@ -475,7 +474,7 @@ - + @@ -499,7 +498,7 @@ - + @@ -516,7 +515,7 @@ - + @@ -532,22 +531,22 @@ - - - + + + - - - + + + - - - + + + @@ -557,7 +556,7 @@ - + @@ -600,7 +599,7 @@ - + @@ -610,7 +609,7 @@ - + @@ -683,21 +682,22 @@ - - + + + + + + + + + + + + - - - - - - - - - - + diff --git a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr index 463c9007e..17be7f5f2 100644 --- a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr +++ b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr @@ -9,10 +9,10 @@ uses Interfaces, // this includes the LCL widgetset Forms , uwsttypelibraryedit, view_helper, uabout, ufEnumedit, - edit_helper, ufclassedit, wsdl_generator, ufpropedit, uinterfaceedit, udm, + edit_helper, ufclassedit, ufpropedit, uinterfaceedit, udm, pascal_parser_intf, PasTree, PParser, uprocedit, common_gui_utils, uargedit, umoduleedit, ubindingedit, ufrmsaveoption, ufarrayedit, generator, - uftypealiasedit, ufrecordedit; + uftypealiasedit, ufrecordedit, wsdl_generator; begin Application.Initialize; diff --git a/wst/trunk/type_lib_edtr/ufclassedit.lrs b/wst/trunk/type_lib_edtr/ufclassedit.lrs index a4e8405ce..f913534bd 100644 --- a/wst/trunk/type_lib_edtr/ufclassedit.lrs +++ b/wst/trunk/type_lib_edtr/ufclassedit.lrs @@ -1,5 +1,3 @@ -{ Ceci est un fichier ressource généré automatiquement par Lazarus } - LazarusResources.Add('TfClassEdit','FORMDATA',[ 'TPF0'#11'TfClassEdit'#10'fClassEdit'#4'Left'#3#16#1#6'Height'#3'#'#2#3'Top'#2 +'*'#5'Width'#3#6#2#18'HorzScrollBar.Page'#3#5#2#18'VertScrollBar.Page'#3'"'#2 diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm index 23e37dba6..0dde68c23 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm @@ -1,7 +1,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit - Left = 137 + Left = 84 Height = 644 - Top = 257 + Top = 315 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 diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs index bbdb51973..ec4054c52 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs @@ -1,15 +1,15 @@ { Ceci est un fichier ressource généré automatiquement par Lazarus } LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ - '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 - +#8'FormShow'#8'Position'#7#15'poDesktopCenter'#0#10'TStatusBar'#2'SB'#6'Heig' - +'ht'#2#23#3'Top'#3'Y'#2#5'Width'#3'A'#3#6'Panels'#14#1#5'Width'#3','#1#0#1#5 - +'Width'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#6'Panel1'#6'Height'#3'Y'#2#5 - +'Width'#3':'#1#5'Align'#7#6'alLeft'#12'ClientHeight'#3'Y'#2#11'ClientWidth'#3 + 'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#2'T'#6'Height' + +#3#132#2#3'Top'#3';'#1#5'Width'#3'A'#3#18'HorzScrollBar.Page'#3'@'#3#18'Vert' + +'ScrollBar.Page'#3'o'#2#13'ActiveControl'#7#9'trvSchema'#7'Caption'#6'+[Web ' + +'Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'p'#2#11'ClientWi' + +'dth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#6'OnShow'#7#8 + +'FormShow'#8'Position'#7#15'poDesktopCenter'#0#10'TStatusBar'#2'SB'#6'Height' + +#2#23#3'Top'#3'Y'#2#5'Width'#3'A'#3#6'Panels'#14#1#5'Width'#3','#1#0#1#5'Wid' + +'th'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#6'Panel1'#6'Height'#3'Y'#2#5'W' + +'idth'#3':'#1#5'Align'#7#6'alLeft'#12'ClientHeight'#3'Y'#2#11'ClientWidth'#3 +':'#1#8'TabOrder'#2#0#0#9'TTreeView'#9'trvSchema'#4'Left'#2#1#6'Height'#3'W' +#2#3'Top'#2#1#5'Width'#3'8'#1#5'Align'#7#8'alClient'#17'DefaultItemHeight'#2 +#15#9'PopupMenu'#7#10'PopupMenu1'#8'TabOrder'#2#0#0#0#0#6'TPanel'#6'Panel2'#4 @@ -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,271 +117,267 @@ 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'MenuItem48'#6'Action'#7#15'actRecordCreate'#7'OnClick'#7#22'actRec' - +'ordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'Action'#7#13'actIntfCre' - +'ate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem35'#6 - +'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9'T' - +'MenuItem'#10'MenuItem36'#6'Action'#7#18'actTypeALiasCreate'#7'OnClick'#7#25 - +'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'MenuItem12'#7'Caption'#6#1'-' - +#0#0#9'TMenuItem'#10'MenuItem13'#6'Action'#7#15'actUpdateObject'#7'Caption'#6 - +#13'Update Object'#7'OnClick'#7#22'actUpdateObjectExecute'#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'TActionList'#2'AL'#4'left'#3'X'#1 - +#3'top'#2'8'#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#18'Disab' - +'leIfNoHandler'#9#9'OnExecute'#7#18'actOpenFileExecute'#0#0#7'TAction'#7'act' - +'Exit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actEx' - +'itExecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save generated files' - +' ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExportExecute'#8'OnUpda' - +'te'#7#15'actExportUpdate'#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'OnExecut' - +'e'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction' - +#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#18'DisableIfNoHandler' - +#9#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAction'#15'actUpdateObject' - +#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actUpdate' - +'ObjectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'ac' - +'tRefreshView'#7'Caption'#6#14'&Refresh Views'#18'DisableIfNoHandler'#9#9'On' - +'Execute'#7#21'actRefreshViewExecute'#0#0#7'TAction'#10'actNewFile'#7'Captio' - +'n'#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17'actNewFileExecu' - +'te'#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6#17'Create Class Type' - ,#18'DisableIfNoHandler'#9#9'OnExecute'#7#24'actCompoundCreateExecute'#0#0#7 - +'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create Interface'#18'DisableIfNo' - +'Handler'#9#9'OnExecute'#7#20'actIntfCreateExecute'#0#0#7'TAction'#13'actFul' - +'lExpand'#7'Caption'#6#11'Full expand'#18'DisableIfNoHandler'#9#9'OnExecute' - +#7#20'actFullExpandExecute'#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6 - +#13'Full Collapse'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actFullCollaps' - +'eExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4'Save'#18'DisableIfNoHand' - +'ler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0#7'TAction'#9'actDelete'#7'Capt' - +'ion'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actDeleteExecut' - +'e'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actArrayCreate' - +#7'Caption'#6#12'Create Array'#18'DisableIfNoHandler'#9#9'OnExecute'#7#21'ac' - +'tArrayCreateExecute'#0#0#7'TAction'#18'actTypeALiasCreate'#7'Caption'#6#17 - +'Create Type ALias'#18'DisableIfNoHandler'#9#9'OnExecute'#7#25'actTypeALiasC' - +'reateExecute'#0#0#7'TAction'#15'actRecordCreate'#7'Caption'#6#13'Create Rec' - +'ord'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actRecordCreateExecute'#0#0 - +#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Filter' - +#6'3WDSL 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'TS' - +'ynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlu' - +'e'#18'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Foreground'#7#8'clM' - +'aroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAttri.Foreground'#7 - +#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'NestedComments'#9#4'l' - +'eft'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'#5'Title'#6#27'Enregistre' - +'r le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6#25'WDSL files(*.WS' - +'DL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnab' - +'leSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMe' - +'nu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuIte' - +'m28'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0#0 - +#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7#22 - +'actFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuItem39'#6'Action'#7#14'actR' - +'efreshView'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'Menu' - +'Item26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actE' - +'numCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuIt' - +'em21'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateEx' - +'ecute'#0#0#9'TMenuItem'#10'MenuItem46'#6'Action'#7#15'actRecordCreate'#7'On' - +'Click'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem24'#6'Actio' - +'n'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuIte' - +'m'#10'MenuItem37'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCr' - +'eateExecute'#0#0#9'TMenuItem'#10'MenuItem38'#6'Action'#7#18'actTypeALiasCre' - +'ate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'MenuIte' - +'m22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpda' - +'teObject'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuI' - +'tem33'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExecute'#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'OnClick'#7#21'actRefreshViewEx' - +'ecute'#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#9 - +'TMenuItem'#10'MenuItem40'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem41' - +#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9 - +'TMenuItem'#10'MenuItem45'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24 - +'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem47'#6'Action'#7#15'ac' - +'tRecordCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10 - +'MenuItem44'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExec' - +'ute'#0#0#9'TMenuItem'#10'MenuItem43'#6'Action'#7#13'actIntfCreate'#7'OnClic' - +'k'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem42'#6'Action'#7#18 - +'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#0#10'TSy' - +'nXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter'#6#30'Documents WSDL (*.wsdl)|*.ws' - +'dl'#7'Enabled'#8#23'ElementAttri.Foreground'#7#6'clNavy'#30'AttributeValueA' - +'ttri.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'MenuItem48'#6'Action'#7#15'actReco' + +'rdCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuI' + +'tem25'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0 + +#0#9'TMenuItem'#10'MenuItem35'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21 + +'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem36'#6'Action'#7#18'actTy' + +'peALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem' + +#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem13'#6'Action'#7 + +#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22'actUpdat' + +'eObjectExecute'#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 + +'TActionList'#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'actOpenF' + +'ileExecute'#0#0#7'TAction'#7'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHa' + +'ndler'#9#9'OnExecute'#7#14'actExitExecute'#0#0#7'TAction'#9'actExport'#7'Ca' + +'ption'#6#24'Save generated files ...'#18'DisableIfNoHandler'#9#9'OnExecute' + +#7#16'actExportExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'a' + +'ctAbout'#7'Caption'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'a' + +'ctAboutExecute'#0#0#7'TAction'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18 + +'DisableIfNoHandler'#9#9'OnExecute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15 + +'actExportUpdate'#0#0#7'TAction'#13'actEnumCreate'#7'Caption'#6#18'Create En' + +'umeration'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actEnumCreateExecute' + +#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'DisableIfNoHan' + +'dler'#9#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpdat' + +'eObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh V' + +'iews'#18'DisableIfNoHandler'#9#9'OnExecute'#7#21'actRefreshViewExecute'#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#17'Create Class Type'#18'DisableIfNoHandler'#9#9'OnExecute'#7#24 + +'actCompoundCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16 + ,'Create Interface'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actIntfCreateE' + +'xecute'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11'Full expand'#18'Di' + +'sableIfNoHandler'#9#9'OnExecute'#7#20'actFullExpandExecute'#0#0#7'TAction' + +#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#18'DisableIfNoHandler'#9 + +#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Capti' + +'on'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0 + +#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'O' + +'nExecute'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0 + +#7'TAction'#14'actArrayCreate'#7'Caption'#6#12'Create Array'#18'DisableIfNoH' + +'andler'#9#9'OnExecute'#7#21'actArrayCreateExecute'#0#0#7'TAction'#18'actTyp' + +'eALiasCreate'#7'Caption'#6#17'Create Type ALias'#18'DisableIfNoHandler'#9#9 + +'OnExecute'#7#25'actTypeALiasCreateExecute'#0#0#7'TAction'#15'actRecordCreat' + +'e'#7'Caption'#6#13'Create Record'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22 + +'actRecordCreateExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un' + +' fichier existant'#6'Filter'#6'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pa' + +'s)|*.pas'#11'FilterIndex'#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPat' + +'hMustExist'#15'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'lef' + +'t'#3#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'Co' + +'mmentAttri.Foreground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#22 + +'StringAttri.Foreground'#7#8'clMaroon'#17'SymbolAttri.Style'#11#6'fsBold'#0 + +#25'DirectiveAttri.Foreground'#7#7'clGreen'#20'DirectiveAttri.Style'#11#6'fs' + +'Bold'#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 + +'Filter'#6#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15 + +'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'to' + +'p'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#152#0 + +#0#9'TMenuItem'#10'MenuItem28'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20 + +'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFul' + +'lCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'TMenuItem'#10'Menu' + +'Item39'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExecut' + +'e'#0#0#9'TMenuItem'#10'MenuItem26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'Men' + +'uItem8'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute' + +#0#0#9'TMenuItem'#10'MenuItem21'#6'Action'#7#17'actCompoundCreate'#7'OnClick' + +#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem46'#6'Action'#7 + +#15'actRecordCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem' + +#10'MenuItem24'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateE' + +'xecute'#0#0#9'TMenuItem'#10'MenuItem37'#6'Action'#7#14'actArrayCreate'#7'On' + +'Click'#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem38'#6'Action' + +#7#18'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'T' + +'MenuItem'#10'MenuItem22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#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'actDelet' + +'eExecute'#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'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'actExp' + +'ortExecute'#0#0#9'TMenuItem'#10'MenuItem40'#7'Caption'#6#1'-'#0#0#9'TMenuIt' + +'em'#10'MenuItem41'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayC' + +'reateExecute'#0#0#9'TMenuItem'#10'MenuItem45'#6'Action'#7#17'actCompoundCre' + +'ate'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem' + +'47'#6'Action'#7#15'actRecordCreate'#7'OnClick'#7#22'actRecordCreateExecute' + +#0#0#9'TMenuItem'#10'MenuItem44'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7 + +#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem43'#6'Action'#7#13'act' + +'IntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuI' + +'tem42'#6'Action'#7#18'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreat' + +'eExecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter'#6#30'Docume' + +'nts WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttri.Foreground'#7#6'clNa' + +'vy'#30'AttributeValueAttri.Foreground'#7#8'clPurple'#16'WantBracesParsed'#8 + +#4'left'#3#210#1#3'top'#3#252#0#0#0#0 ]); diff --git a/wst/trunk/ws_helper/command_line_parser.pas b/wst/trunk/ws_helper/command_line_parser.pas index 957735b08..df6eda388 100644 --- a/wst/trunk/ws_helper/command_line_parser.pas +++ b/wst/trunk/ws_helper/command_line_parser.pas @@ -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 command_line_parser; -{$mode objfpc}{$H+} - interface uses @@ -29,7 +27,7 @@ uses Type TComandLineOption = ( - cloInterface, cloProxy, cloImp, cloBinder, + cloInterface, cloProxy, cloImp, cloBinder, cloWsdl, cloOutPutDirRelative, cloOutPutDirAbsolute ); TComandLineOptions = set of TComandLineOption; @@ -55,7 +53,7 @@ begin AAppOptions := []; c := #0; repeat - c := GetOpt('u:pibo:a:'); + c := GetOpt('u:pibo:a:w'); case c of 'u' : begin @@ -75,6 +73,7 @@ begin Include(AAppOptions,cloOutPutDirAbsolute); OptionsArgsMAP[cloOutPutDirAbsolute] := OptArg; End; + 'w' : Include(AAppOptions,cloWsdl); end; until ( c = EndOfOptions ); Result := OptInd; diff --git a/wst/trunk/ws_helper/delphi/test_amazon.bat b/wst/trunk/ws_helper/delphi/test_amazon.bat new file mode 100644 index 000000000..4224d02b1 --- /dev/null +++ b/wst/trunk/ws_helper/delphi/test_amazon.bat @@ -0,0 +1 @@ +ws_helper -uA -i -p -b -a"C:\Programmes\lazarus\wst\trunk\tests\files" "C:\Programmes\lazarus\utils\amazon\AWSECommerceService.wsdl" >test_amazon_res.txt \ No newline at end of file diff --git a/wst/trunk/ws_helper/delphi/test_ebay.bat b/wst/trunk/ws_helper/delphi/test_ebay.bat new file mode 100644 index 000000000..bc5fabd84 --- /dev/null +++ b/wst/trunk/ws_helper/delphi/test_ebay.bat @@ -0,0 +1 @@ +ws_helper -uA -i -p -b -a"C:\Programmes\lazarus\wst\trunk\tests\files" "C:\Programmes\lazarus\utils\eBayLast\eBayWSDL.WSDL" >test_res_eBayWSDL.txt \ No newline at end of file diff --git a/wst/trunk/ws_helper/delphi/test_googleSearch.bat b/wst/trunk/ws_helper/delphi/test_googleSearch.bat new file mode 100644 index 000000000..b93e8b966 --- /dev/null +++ b/wst/trunk/ws_helper/delphi/test_googleSearch.bat @@ -0,0 +1 @@ +ws_helper -u -i -p -b -a"C:\Programmes\lazarus\wst\trunk\tests\files" "C:\Programmes\lazarus\utils\googleapi\GoogleSearch.wsdl" >test_res_GoogleSearch.txt \ No newline at end of file diff --git a/wst/trunk/ws_helper/delphi/ws_helper.cfg b/wst/trunk/ws_helper/delphi/ws_helper.cfg new file mode 100644 index 000000000..e122280e5 --- /dev/null +++ b/wst/trunk/ws_helper/delphi/ws_helper.cfg @@ -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"..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl\inc;..\..\wst_rtti_filter" +-O"..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl\inc;..\..\wst_rtti_filter" +-I"..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl\inc;..\..\wst_rtti_filter" +-R"..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl\inc;..\..\wst_rtti_filter" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/wst/trunk/ws_helper/delphi/ws_helper.dof b/wst/trunk/ws_helper/delphi/ws_helper.dof new file mode 100644 index 000000000..b8be73107 --- /dev/null +++ b/wst/trunk/ws_helper/delphi/ws_helper.dof @@ -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=..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl\inc;..\..\wst_rtti_filter +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=C:\Programmes\lazarus\wst\trunk\fcl-units\rtl\;C:\Programmes\lazarus\wst\trunk\;C:\Programmes\lazarus\wst\trunk\fcl-units\fcl-passrc\src\ +UsePackages=0 +[Parameters] +RunParams=-u -i -p -b -a"C:\Programmes\lazarus\wst\trunk\tests\files" "C:\Programmes\lazarus\utils\googleapi\GoogleSearch.wsdl" +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\hlDebugSourcePath] +Count=1 +Item0=C:\Programmes\lazarus\wst\trunk\fcl-units\rtl\;C:\Programmes\lazarus\wst\trunk\;C:\Programmes\lazarus\wst\trunk\fcl-units\fcl-passrc\src\ +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=7 +Item0=..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl\inc;..\..\wst_rtti_filter +Item1=..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl;..\..\wst_rtti_filter +Item2=..\;..\..\;..\..\fcl-units\fcl-passrc\src;..\..\fcl-units\rtl +Item3=..\;..\..\;..\..\fcl-units\fcl-passrc\src +Item4=..\;..\..\;..\..\fcl-passrc\src +Item5=..\;..\..\ +Item6=..\ +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=obj diff --git a/wst/trunk/ws_helper/delphi/ws_helper.dpr b/wst/trunk/ws_helper/delphi/ws_helper.dpr new file mode 100644 index 000000000..f51ff7698 --- /dev/null +++ b/wst/trunk/ws_helper/delphi/ws_helper.dpr @@ -0,0 +1,46 @@ +{ + This unit is part of the Web Service Toolkit + Copyright (c) 2006 by Inoussa OUEDRAOGO + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +} +program ws_helper; + +{$APPTYPE CONSOLE} + +uses + delphi_init_com, + Classes, + SysUtils, + wst_resources_utils, + generator, + wsdl_generator, + parserutils, + source_utils, + command_line_parser, + metadata_generator, + binary_streamer, + XMLDoc, + XMLIntf, + wst_delphi_xml, + wsdl2pas_imp, + pastree, + pparser, + pascal_parser_intf, + logger_intf; + +{$INCLUDE ws_helper_prog.inc} + + diff --git a/wst/trunk/ws_helper/generator.pas b/wst/trunk/ws_helper/generator.pas index 64a6c9a58..3ff123303 100644 --- a/wst/trunk/ws_helper/generator.pas +++ b/wst/trunk/ws_helper/generator.pas @@ -25,7 +25,7 @@ interface uses Classes, SysUtils, PasTree, - pascal_parser_intf, source_utils; + pascal_parser_intf, source_utils, wst_types; const sWST_EXTENSION = 'wst'; @@ -842,25 +842,29 @@ Var if AMthd.InheritsFrom(TPasFunction) then begin resElt := TPasFunctionType(AMthd.ProcType).ResultEl; if SymbolTable.IsInitNeed(resElt.ResultType) then begin - if ( SymbolTable.IsOfType(resElt.ResultType,TPasClassType) and + WriteLn('Fillchar(%s,SizeOf(%s),#0);',[RETURN_VAL_NAME,resElt.ResultType.Name]); + {if ( SymbolTable.IsOfType(resElt.ResultType,TPasClassType) and ( TPasClassType(GetUltimeType(resElt.ResultType)).ObjKind = okClass ) ) or SymbolTable.IsOfType(resElt.ResultType,TPasArrayType) then begin WriteLn('TObject(%s) := nil;',[RETURN_VAL_NAME]); + end else if SymbolTable.IsOfType(resElt.ResultType,TPasRecordType) then begin + WriteLn('Fillchar(%s,SizeOf(%s),#0);',[RETURN_VAL_NAME,resElt.ResultType.Name]); end else begin WriteLn('if ( PTypeInfo(TypeInfo(%s))^.Kind in [tkClass,tkInterface] ) then',[resElt.ResultType.Name]); IncIndent(); WriteLn('Pointer(%s) := nil;',[RETURN_VAL_NAME]); DecIndent(); - end; + end;} end; end; for k := 0 to Pred(prmCnt) do begin prm := TPasArgument(prms[k]); if SymbolTable.IsInitNeed(prm.ArgType) then begin - if SymbolTable.IsOfType(prm.ArgType,TPasClassType) or + WriteLn('Fillchar(%s,SizeOf(%s),#0);',[prm.Name,prm.ArgType.Name]); + {if SymbolTable.IsOfType(prm.ArgType,TPasClassType) or SymbolTable.IsOfType(prm.ArgType,TPasArrayType) then begin WriteLn('TObject(%s) := nil;',[prm.Name]); @@ -869,7 +873,7 @@ Var IncIndent(); WriteLn('Pointer(%s) := nil;',[prm.Name]); DecIndent(); - end; + end;} end; end; @@ -2120,7 +2124,6 @@ var var itm : TPasVariable; k, c : PtrInt; - offsetLine, typeLine : string; begin c := ASymbol.Members.Count; for k := 0 to Pred(c) do begin @@ -2285,6 +2288,70 @@ begin end; procedure TInftGenerator.Execute(); + + procedure SortRecords(AList : TList); + var + j, k : PtrInt; + ordr_ls, mbrLs, locLs : TList; + locMemberType : TPasType; + rec, locRec : TPasRecordType; + locStack : TStack; + locElt : TPasElement; + begin + if ( AList.Count > 0 ) then begin + locStack := nil; + locLs := nil; + ordr_ls := TList.Create(); + try + locStack := TStack.Create(); + locLs := TList.Create(); + for j := 0 to Pred(AList.Count) do begin + rec := TPasRecordType(AList[j]); + if ( ordr_ls.IndexOf(rec) = -1 ) then begin + locStack.Push(rec); + while locStack.AtLeast(1) do begin + locLs.Clear(); + locRec := TPasRecordType(locStack.Pop()); + if ( ordr_ls.IndexOf(locRec) = -1 ) then begin + mbrLs := locRec.Members; + for k := 0 to Pred(mbrLs.Count) do begin + locMemberType := TPasVariable(mbrLs[k]).VarType; + if locMemberType.InheritsFrom(TPasUnresolvedTypeRef) then begin + locElt := SymbolTable.FindElement(SymbolTable.GetExternalName(locMemberType)); + if Assigned(locElt) and locElt.InheritsFrom(TPasType) then begin + locMemberType := locElt as TPasType; + end; + end; + if locMemberType.InheritsFrom(TPasRecordType) then begin + if ( ordr_ls.IndexOf(locMemberType) = -1 ) then + locLs.Add(locMemberType); + end; + end; //for + if ( locLs.Count > 0 ) then begin + locStack.Push(locRec); + for k := 0 to Pred(locLs.Count) do begin + locStack.Push(locLs[k]); + end; + end else begin + ordr_ls.Add(locRec); + end; + end; + end; + end; + end; + Assert(not locStack.AtLeast(1)); + AList.Clear(); + for k := 0 to Pred(ordr_ls.Count) do begin + AList.Add(ordr_ls[k]); + end; + finally + FreeAndNil(locLs); + FreeAndNil(locStack); + FreeAndNil(ordr_ls); + end; + end; + end; + var i,c, j, k : PtrInt; clssTyp : TPasClassType; @@ -2293,8 +2360,10 @@ var typeList : TList; elt : TPasElement; classAncestor : TPasElement; + tmpList : TList; begin objLst := nil; + tmpList := nil; gnrClssLst := TObjectList.Create(False); try GenerateUnitHeader(); @@ -2334,10 +2403,17 @@ begin end; end; + tmpList := TList.Create(); for i := 0 to c do begin elt := TPasElement(typeList[i]); if elt.InheritsFrom(TPasRecordType) then begin - GenerateRecord(TPasRecordType(elt)); + tmpList.Add(elt); + end; + end; + if ( tmpList.Count > 0 ) then begin + SortRecords(tmpList); + for i := 0 to Pred(tmpList.Count) do begin + GenerateRecord(TPasRecordType(tmpList[i])); end; end; @@ -2355,9 +2431,7 @@ begin if elt.InheritsFrom(TPasClassType) and ( TPasClassType(elt).ObjKind = okClass ) then begin clssTyp := TPasClassType(elt); if ( gnrClssLst.IndexOf(clssTyp) = -1 ) then begin - while ( objLst.Count > 0 ) do begin - objLst.Clear(); - end; + objLst.Clear(); while Assigned(clssTyp) do begin objLst.Add(clssTyp); classAncestor := clssTyp.AncestorType; @@ -2412,6 +2486,7 @@ begin FImpStream := nil; FImpTempStream := nil; finally + FreeAndNil(tmpList); FreeAndNil(objLst); FreeAndNil(gnrClssLst); end; diff --git a/wst/trunk/ws_helper/logger_intf.pas b/wst/trunk/ws_helper/logger_intf.pas index 896da5904..b0605fc64 100644 --- a/wst/trunk/ws_helper/logger_intf.pas +++ b/wst/trunk/ws_helper/logger_intf.pas @@ -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 logger_intf; -{$mode objfpc}{$H+} - interface uses diff --git a/wst/trunk/ws_helper/parserutils.pas b/wst/trunk/ws_helper/parserutils.pas index 18ea4d96d..c028e8e3f 100644 --- a/wst/trunk/ws_helper/parserutils.pas +++ b/wst/trunk/ws_helper/parserutils.pas @@ -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 parserutils; -{$mode objfpc}{$H+} - interface uses diff --git a/wst/trunk/ws_helper/pascal_parser_intf.pas b/wst/trunk/ws_helper/pascal_parser_intf.pas index 730df3601..63bb42966 100644 --- a/wst/trunk/ws_helper/pascal_parser_intf.pas +++ b/wst/trunk/ws_helper/pascal_parser_intf.pas @@ -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 pascal_parser_intf; -{$mode objfpc}{$H+} - interface uses @@ -284,6 +283,8 @@ begin loc_TBaseComplexSimpleContentRemotable := AddClassDef(Result,'TBaseComplexSimpleContentRemotable','TAbstractComplexRemotable',TPasNativeClassType); (AContainer.FindElementInModule('TComplexInt16SContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable; (AContainer.FindElementInModule('TComplexFloatDoubleContentRemotable',Result) as TPasClassType).AncestorType := loc_TBaseComplexSimpleContentRemotable; + loc_TBaseComplexSimpleContentRemotable.AddRef(); + loc_TBaseComplexSimpleContentRemotable.AddRef(); AddClassDef(Result,'TBaseComplexRemotable','TAbstractComplexRemotable',TPasNativeClassType); AddClassDef(Result,'THeaderBlock','TBaseComplexRemotable',TPasNativeClassType); @@ -631,7 +632,8 @@ function TwstPasTreeContainer.IsInitNeed(AType : TPasType) : Boolean; begin Result := IsOfType(AType,TPasClassType) or IsOfType(AType,TPasPointerType) or - IsOfType(AType,TPasArrayType); + IsOfType(AType,TPasArrayType) or + IsOfType(AType,TPasRecordType); end; procedure TwstPasTreeContainer.SetCurrentModule(AModule: TPasModule); diff --git a/wst/trunk/ws_helper/source_utils.pas b/wst/trunk/ws_helper/source_utils.pas index e5ad5783a..d61a61ac1 100644 --- a/wst/trunk/ws_helper/source_utils.pas +++ b/wst/trunk/ws_helper/source_utils.pas @@ -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 source_utils; -{$mode objfpc}{$H+} - interface uses diff --git a/wst/trunk/ws_helper/test_ebay.bat b/wst/trunk/ws_helper/test_ebay.bat index e65bc8622..712f80bc3 100644 --- a/wst/trunk/ws_helper/test_ebay.bat +++ b/wst/trunk/ws_helper/test_ebay.bat @@ -1 +1 @@ -C:\Programmes\lazarus\wst\ws_helper\ws_helper -uA -i -p -b -a"C:\Programmes\lazarus\wst\tests\files" "C:\Programmes\lazarus\utils\eBayLast\eBayWSDL.WSDL" >test_res_eBayWSDL.txt \ No newline at end of file +ws_helper -uA -i -p -b -a"C:\Programmes\lazarus\wst\trunk\tests\files" "C:\Programmes\lazarus\utils\eBayLast\eBayWSDL.WSDL" >test_res_eBayWSDL.txt \ No newline at end of file diff --git a/wst/trunk/ws_helper/ws_helper.lpi b/wst/trunk/ws_helper/ws_helper.lpi index 1a5375e78..9541fb9dc 100644 --- a/wst/trunk/ws_helper/ws_helper.lpi +++ b/wst/trunk/ws_helper/ws_helper.lpi @@ -12,7 +12,7 @@ - + @@ -33,13 +33,13 @@ - + - - + + @@ -50,7 +50,7 @@ - + @@ -58,9 +58,9 @@ - - - + + + @@ -75,20 +75,18 @@ - - - + - + @@ -96,44 +94,48 @@ - - + + + + - + - + - + - - + + + + - - + + @@ -149,9 +151,11 @@ - + + + @@ -166,44 +170,42 @@ - + - - - - + + + + - - - - + + - + - + - - - + + + @@ -216,84 +218,84 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + @@ -301,214 +303,307 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + diff --git a/wst/trunk/ws_helper/ws_helper.pas b/wst/trunk/ws_helper/ws_helper.pas index b113d579e..6074de308 100644 --- a/wst/trunk/ws_helper/ws_helper.pas +++ b/wst/trunk/ws_helper/ws_helper.pas @@ -23,231 +23,24 @@ program ws_helper; {$mode objfpc}{$H+} uses - Classes, SysUtils, wst_resources_utils, - //parserdefs, ws_parser, - generator, parserutils, source_utils, - command_line_parser, metadata_generator, binary_streamer, - DOM, xmlread, wsdl2pas_imp, - - pastree, pparser, pascal_parser_intf, logger_intf; - -resourcestring - sUSAGE = 'ws_helper [-uMODE] [-p] [-b] [-i] [-oPATH] inputFilename' + sNEW_LINE + - ' -u MODE Generate the pascal translation of the WSDL input file ' + sNEW_LINE + - ' MODE value may be U for used types or A for all types' + sNEW_LINE + - ' -p Generate service proxy' + sNEW_LINE + - ' -b Generate service binder' + sNEW_LINE + - ' -i Generate service minimal implementation' + sNEW_LINE + - ' -o PATH Relative output directory' + sNEW_LINE + - ' -a PATH Absolute output directory' + sNEW_LINE; - sCOPYRIGHT = 'ws_helper, Web Service Toolkit 0.4 Copyright (c) 2006, 2007 by Inoussa OUEDRAOGO'; - -const - sWST_META = 'wst_meta'; + Classes, + SysUtils, + wst_resources_utils, + generator, + wsdl_generator, + parserutils, + source_utils, + command_line_parser, + metadata_generator, + binary_streamer, + DOM, + XMLWrite, + XMLRead, + wst_fpc_xml, + wsdl2pas_imp, + pastree, + pparser, + pascal_parser_intf, + logger_intf; -type - TSourceFileType = ( sftPascal, sftWSDL ); - -var - inFileName,outPath,errStr : string; - srcMngr : ISourceManager; - AppOptions : TComandLineOptions; - NextParam : Integer; - sourceType : TSourceFileType; - symtable : TwstPasTreeContainer; - parserMode : TParserMode; - - osParam, targetParam : string; - - function ProcessCmdLine():boolean; - begin - NextParam := ParseCmdLineOptions(AppOptions); - if ( NextParam <= Paramcount ) then begin - inFileName := ParamStr(NextParam); - end; - Result := FileExists(ExpandFileName(inFileName)); - if AnsiSameText(ExtractFileExt(inFileName),'.PAS') or - AnsiSameText(ExtractFileExt(inFileName),'.PP') - then begin - sourceType := sftPascal; - end else if AnsiSameText(ExtractFileExt(inFileName),'.WSDL') then begin - sourceType := sftWSDL; - end; - if Result then begin - if ( AppOptions = [] ) then begin - Include(AppOptions,cloProxy); - end; - end else begin - errStr := Format('File not Found : "%s"',[inFileName]); - end; - if ( cloOutPutDirAbsolute in AppOptions ) then begin - outPath := Trim(GetOptionArg(cloOutPutDirAbsolute)); - end else begin - outPath := ExtractFilePath(inFileName); - if ( cloOutPutDirRelative in AppOptions ) then begin - outPath := outPath + Trim(GetOptionArg(cloOutPutDirRelative)); - end; - end; - outPath := IncludeTrailingPathDelimiter(outPath); - parserMode := pmUsedTypes; - if AnsiSameText('A',Trim(GetOptionArg(cloInterface))) then begin - parserMode := pmAllTypes; - end; - end; - - function GenerateSymbolTable() : Boolean ; - - procedure ParsePascalFile(); - begin - ParseSource(symtable,inFileName,osParam,targetParam); - end; - - procedure ParseWsdlFile(); - var - locDoc : TXMLDocument; - prsr : TWsdlParser; - begin - prsr := nil; - ReadXMLFile(locDoc,inFileName); - try - prsr := TWsdlParser.Create(locDoc,symtable); - prsr.Parse(parserMode,ChangeFileExt(ExtractFileName(inFileName),'')); - finally - FreeAndNil(prsr); - FreeAndNil(locDoc); - end; - end; - - begin - try - WriteLn('Parsing the file : ', inFileName); - case sourceType of - sftPascal : ParsePascalFile(); - sftWSDL : ParseWsdlFile(); - end; - Result := True; - except - on e : Exception do begin - Result := False; - errStr := e.Message; - end; - end; - end; - - function ProcessFile():Boolean; - Var - mtdaFS: TMemoryStream; - g : TBaseGenerator; - mg : TMetadataGenerator; - rsrcStrm : TMemoryStream; - begin - Result := False; - rsrcStrm := nil; - mtdaFS := nil; - mg := nil; - g := Nil; - try - try - if ( cloInterface in AppOptions ) then begin - WriteLn('Interface file generation...'); - g := TInftGenerator.Create(symtable,srcMngr); - g.Execute(); - FreeAndNil(g); - end; - - If ( cloProxy in AppOptions ) Then Begin - WriteLn('Proxy file generation...'); - g := TProxyGenerator.Create(symtable,srcMngr); - g.Execute(); - FreeAndNil(g); - End; - - If ( cloBinder in AppOptions ) Then Begin - WriteLn('Binder file generation...'); - g := TBinderGenerator.Create(symtable,srcMngr); - g.Execute(); - FreeAndNil(g); - End; - - If ( cloImp in AppOptions ) Then Begin - WriteLn('Implementation file generation...'); - g := TImplementationGenerator.Create(symtable,srcMngr); - g.Execute(); - FreeAndNil(g); - End; - - if ( [cloBinder,cloProxy]*AppOptions <> [] ) then begin - WriteLn('Metadata file generation...'); - mtdaFS := TMemoryStream.Create(); - mg := TMetadataGenerator.Create(symtable,CreateBinaryWriter(mtdaFS)); - mg.Execute(); - mtdaFS.SaveToFile(ChangeFileExt(inFileName,'.' + sWST_META)); - rsrcStrm := TMemoryStream.Create(); - mtdaFS.Position := 0; - BinToWstRessource(UpperCase(symtable.CurrentModule.Name),mtdaFS,rsrcStrm); - rsrcStrm.SaveToFile(outPath + ChangeFileExt(ExtractFileName(inFileName),'.' + sWST_EXTENSION)); - end; - - Result := True; - except - on E : Exception do begin - Result := False; - errStr := E.Message; - end; - end; - finally - rsrcStrm.Free(); - mg.Free();; - mtdaFS.Free();; - g.Free(); - end; - end; - - -begin - osParam := 'windows'; - targetParam := 'x86'; - - SetLogger(TSimpleConsoleLogger.Create()); - - symtable := nil; - try - try - Writeln(sCOPYRIGHT); - If ( ParamCount = 0 ) Then Begin - WriteLn(sUSAGE); - Exit; - End; - - if not ProcessCmdLine() then begin - WriteLn(errStr); - Exit; - end; - symtable := TwstPasTreeContainer.Create();//ChangeFileExt(ExtractFileName(inFileName),'') - srcMngr := CreateSourceManager(); - - if not GenerateSymbolTable() then begin - WriteLn(errStr); - Exit; - end; - - If Not ProcessFile() Then Begin - WriteLn(errStr); - Exit; - End; - - srcMngr.SaveToFile(outPath); - if ( GetLogger().GetMessageCount(mtError) = 0 ) then begin - WriteLn(Format('File "%s" parsed succesfully.',[inFileName])); - end else begin - WriteLn(Format('Paring complete with %d error(s).',[GetLogger().GetMessageCount(mtError)])); - end; - except - on e:exception Do - Writeln('Exception : ' + e.Message) - end; - finally - FreeAndNil(symtable); - SetLogger(nil); - end; -end. +{$INCLUDE ws_helper_prog.inc} diff --git a/wst/trunk/ws_helper/wsdl2pas_imp.pas b/wst/trunk/ws_helper/wsdl2pas_imp.pas index ee6737463..25851b760 100644 --- a/wst/trunk/ws_helper/wsdl2pas_imp.pas +++ b/wst/trunk/ws_helper/wsdl2pas_imp.pas @@ -10,14 +10,14 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. } +{$INCLUDE wst_global.inc} unit wsdl2pas_imp; -{$mode objfpc}{$H+} - interface uses - Classes, SysUtils, DOM, + Classes, SysUtils, + {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF}, cursor_intf, rtti_filters, pastree, pascal_parser_intf, logger_intf; @@ -432,8 +432,7 @@ begin FWsdlShortNames.Clear(); locAttCursor := CreateAttributesCursor(FDoc.DocumentElement,cetRttiNode); - FChildCursor := TDOMNodeListCursor.Create(FDoc.DocumentElement.GetChildNodes,faFreeOnDestroy) ; - FChildCursor := TDOMNodeRttiExposerCursor.Create(FChildCursor); + FChildCursor := CreateChildrenCursor(FDoc.DocumentElement,cetRttiNode); ExtractNameSpaceShortNames(locAttCursor,FWsdlShortNames,s_wsdl,nfaRaiseException,True); ExtractNameSpaceShortNames(locAttCursor,FSoapShortNames,s_soap,nfaRaiseException,False); @@ -1899,7 +1898,7 @@ var end; end else begin locTypeInternalName := locTypeName; - if locIsRefElement or AnsiSameText(locInternalEltName,locInternalEltName) then begin + if locIsRefElement or AnsiSameText(locTypeInternalName,locInternalEltName) then begin locTypeInternalName := locTypeInternalName + '_Type'; end; if IsReservedKeyWord(locTypeInternalName) then begin diff --git a/wst/trunk/type_lib_edtr/wsdl_generator.pas b/wst/trunk/ws_helper/wsdl_generator.pas similarity index 97% rename from wst/trunk/type_lib_edtr/wsdl_generator.pas rename to wst/trunk/ws_helper/wsdl_generator.pas index 1a533f2b9..dc5f14917 100644 --- a/wst/trunk/type_lib_edtr/wsdl_generator.pas +++ b/wst/trunk/ws_helper/wsdl_generator.pas @@ -17,7 +17,7 @@ interface uses Classes, SysUtils, TypInfo, - DOM, + {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF}, pastree, pascal_parser_intf; type @@ -129,9 +129,11 @@ type procedure GenerateWSDL(ASymbolTable : TwstPasTreeContainer; ADoc : TDOMDocument); function GetWsdlTypeHandlerRegistry():IWsdlTypeHandlerRegistry; - + implementation -uses Contnrs; +uses + {$IFDEF FPC}wst_fpc_xml,{$ENDIF} + Contnrs ; const sWSDL_NS = 'http://schemas.xmlsoap.org/wsdl/'; @@ -149,7 +151,7 @@ const sSOAP_RPC = 'rpc'; sSOAP_TRANSPORT = 'http://schemas.xmlsoap.org/soap/http'; sSOAP_USE = 'use'; - + sADDRESS = 'address'; sATTRIBUTE = 'attribute'; sBASE = 'base'; @@ -341,7 +343,7 @@ begin if FindAttributeByValueInNode(ANameSpace,AWsdlDocument.DocumentElement,Result,0,sXMLNS) then begin Result := Copy(Result,Length(sXMLNS+':')+1,MaxInt); end else begin - Result := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ; + Result := Format('ns%d',[GetNodeListCount(AWsdlDocument.DocumentElement.Attributes)]) ; AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,Result]),ANameSpace); end; end; @@ -688,7 +690,7 @@ begin typItm := ASymbol as TPasClassType; if Assigned(typItm) then begin GetNameSpaceShortName(AContainer.GetExternalName(AContainer.CurrentModule) ,AWsdlDocument); - defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement; + defTypesNode := FindNode(AWsdlDocument.DocumentElement,sWSDL_TYPES) as TDOMElement; Assert(Assigned(defTypesNode)); defSchemaNode := defTypesNode.FirstChild as TDOMElement; @@ -811,10 +813,10 @@ begin if FindAttributeByValueInNode(unitExternalName,AWsdlDocument.DocumentElement,ns_shortName) then begin ns_shortName := Copy(ns_shortName,Length(sXMLNS+':')+1,MaxInt); end else begin - ns_shortName := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ; + ns_shortName := Format('ns%d',[GetNodeListCount(AWsdlDocument.DocumentElement.Attributes)]) ; AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,ns_shortName]),unitExternalName); end; - defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement; + defTypesNode := FindNode(AWsdlDocument.DocumentElement,sWSDL_TYPES) as TDOMElement; Assert(Assigned(defTypesNode)); defSchemaNode := defTypesNode.FirstChild as TDOMElement; @@ -867,7 +869,7 @@ procedure TBaseArrayRemotable_TypeHandler.Generate( if FindAttributeByValueInNode(ANameSpace,AWsdlDocument.DocumentElement,Result,0,sXMLNS) then begin Result := Copy(Result,Length(sXMLNS+':')+1,MaxInt); end else begin - Result := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ; + Result := Format('ns%d',[GetNodeListCount(AWsdlDocument.DocumentElement.Attributes)]) ; AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,Result]),ANameSpace); end; end; @@ -886,7 +888,7 @@ begin if Assigned(typItm) then begin unitExternalName := GetTypeNameSpace(AContainer,typItm); GetNameSpaceShortName(unitExternalName); - defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement; + defTypesNode := FindNode(AWsdlDocument.DocumentElement,sWSDL_TYPES) as TDOMElement; Assert(Assigned(defTypesNode)); defSchemaNode := defTypesNode.FirstChild as TDOMElement; @@ -961,10 +963,10 @@ begin if FindAttributeByValueInNode(unitExternalName,AWsdlDocument.DocumentElement,ns_shortName) then begin ns_shortName := Copy(ns_shortName,Length(sXMLNS+':')+1,MaxInt); end else begin - ns_shortName := Format('ns%d',[AWsdlDocument.DocumentElement.Attributes.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF}]) ; + ns_shortName := Format('ns%d',[GetNodeListCount(AWsdlDocument.DocumentElement.Attributes)]) ; AWsdlDocument.DocumentElement.SetAttribute(Format('%s:%s',[sXMLNS,ns_shortName]),unitExternalName); end; - defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement; + defTypesNode := FindNode(AWsdlDocument.DocumentElement,sWSDL_TYPES) as TDOMElement; Assert(Assigned(defTypesNode)); defSchemaNode := defTypesNode.FirstChild as TDOMElement; @@ -1015,7 +1017,7 @@ begin typItm := ASymbol as TPasRecordType; if Assigned(typItm) then begin GetNameSpaceShortName(AContainer.GetExternalName(AContainer.CurrentModule) ,AWsdlDocument); - defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement; + defTypesNode := FindNode(AWsdlDocument.DocumentElement,sWSDL_TYPES) as TDOMElement; Assert(Assigned(defTypesNode)); defSchemaNode := defTypesNode.FirstChild as TDOMElement; diff --git a/wst/trunk/ws_helper/wst_resources_utils.pas b/wst/trunk/ws_helper/wst_resources_utils.pas index 9763e023e..45f9c7c50 100644 --- a/wst/trunk/ws_helper/wst_resources_utils.pas +++ b/wst/trunk/ws_helper/wst_resources_utils.pas @@ -1,7 +1,6 @@ +{$INCLUDE wst_global.inc} unit wst_resources_utils; -{$mode objfpc}{$H+} - interface uses diff --git a/wst/trunk/wst_delphi_xml.pas b/wst/trunk/wst_delphi_xml.pas index 60715e5a5..3bfccbd0c 100644 --- a/wst/trunk/wst_delphi_xml.pas +++ b/wst/trunk/wst_delphi_xml.pas @@ -12,7 +12,8 @@ type TDOMNode = IDOMNode; TDOMNodeList = IDOMNodeList; TDOMNamedNodeMap = IDOMNamedNodeMap; - TXMLDocument = IDOMDocument; + TDOMDocument = IDOMDocument; + TXMLDocument = TDOMDocument; TDOMElement = IDOMElement; function FindNode(ANode : TDOMNode; const ANodeName : string):TDOMNode; @@ -23,8 +24,12 @@ type procedure ReleaseDomNode(var ADomNode : TXMLDocument);overload; function CreateDoc() : TXMLDocument ; - procedure WriteXMLFile(ADoc : TXMLDocument; AStream : TStream); - procedure ReadXMLFile(out ADoc : TXMLDocument; AStream : TStream); + procedure WriteXML(Element: TDOMNode; const AFileName: String);overload; + procedure WriteXML(Element: TDOMNode; AStream: TStream); overload; + procedure WriteXMLFile(doc: TXMLDocument; const AFileName: String); overload; + procedure WriteXMLFile(ADoc : TXMLDocument; AStream : TStream);overload; + procedure ReadXMLFile(out ADoc : TXMLDocument; AStream : TStream);overload; + procedure ReadXMLFile(out ADoc: TXMLDocument; const AFilename: String);overload; function NodeToBuffer(ANode : TDOMNode):string ; function FilterList(const ALIst : IDOMNodeList; const ANodeName : widestring):IDOMNodeList ; @@ -50,17 +55,52 @@ begin end; end; +procedure WriteXMLFile(doc: TXMLDocument; const AFileName: String); +var + fs: TFileStream; +begin + fs := TFileStream.Create(AFileName, fmCreate); + try + WriteXMLFile(doc, fs); + finally + fs.Free; + end; +end; + procedure WriteXMLFile(ADoc : TXMLDocument; AStream : TStream); begin (ADoc as IDOMPersist).saveToStream(AStream); end; +procedure WriteXML(Element: TDOMNode; const AFileName: String); +begin + WriteXMLFile(TXMLDocument(Element), AFileName); +end; + +procedure WriteXML(Element: TDOMNode; AStream: TStream); +begin + WriteXMLFile(TXMLDocument(Element), AStream); +end; + procedure ReadXMLFile(out ADoc : TXMLDocument; AStream : TStream); begin ADoc := CreateDoc(); (ADoc as IDOMPersist).loadFromStream(AStream); end; +procedure ReadXMLFile(out ADoc: TXMLDocument; const AFilename: String); +var + FileStream: TStream; +begin + ADoc := nil; + FileStream := TFileStream.Create(AFilename, fmOpenRead+fmShareDenyWrite); + try + ReadXMLFile(ADoc, FileStream); + finally + FileStream.Free; + end; +end; + function GetNodeItemsCount(const ANode : TDOMNode): Integer; begin if ANode.HasChildNodes then begin diff --git a/wst/trunk/wst_fpc_xml.pas b/wst/trunk/wst_fpc_xml.pas index 1c8deb0c1..a2fe17824 100644 --- a/wst/trunk/wst_fpc_xml.pas +++ b/wst/trunk/wst_fpc_xml.pas @@ -14,6 +14,7 @@ uses function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload;{$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} + procedure ReleaseDomNode(ADomNode : TDOMNamedNodeMap);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} @@ -38,27 +39,32 @@ begin end; end; -function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF} +function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;overload; begin Result := ANodeList.Count; end; -function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF} +function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload; begin Result := ANodeList.Length; end; -procedure ReleaseDomNode(ADomNode : TDOMNode);overload;{$IFDEF USE_INLINE}inline;{$ENDIF} +procedure ReleaseDomNode(ADomNode : TDOMNode);overload; begin ADomNode.Free(); end; -procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;{$IFDEF USE_INLINE}inline;{$ENDIF} +procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload; begin ADomNode.Release(); end; -function CreateDoc() : TXMLDocument ;{$IFDEF USE_INLINE}inline;{$ENDIF} +procedure ReleaseDomNode(ADomNode : TDOMNamedNodeMap);overload; +begin + ADomNode.Free(); +end; + +function CreateDoc() : TXMLDocument ; begin Result := TXMLDocument.Create(); Result.Encoding := 'UTF-8'; diff --git a/wst/trunk/wst_global.inc b/wst/trunk/wst_global.inc index 888166118..f0f72fb97 100644 --- a/wst/trunk/wst_global.inc +++ b/wst/trunk/wst_global.inc @@ -1,11 +1,13 @@ {$IFDEF FPC} {$mode objfpc}{$H+} {$DEFINE HAS_QWORD} + {$UNDEF WST_INTF_DOM} //{$DEFINE USE_INLINE} {$ELSE} {$UNDEF HAS_QWORD} {$UNDEF USE_INLINE} {$DEFINE WST_RECORD_RTTI} + {$DEFINE WST_INTF_DOM} {$ENDIF} {$IFDEF CPU86} diff --git a/wst/trunk/wst_rtti_filter/cursor_intf.pas b/wst/trunk/wst_rtti_filter/cursor_intf.pas index 45a42f8bb..b63d340cb 100644 --- a/wst/trunk/wst_rtti_filter/cursor_intf.pas +++ b/wst/trunk/wst_rtti_filter/cursor_intf.pas @@ -22,6 +22,10 @@ uses {$INCLUDE wst_delphi.inc} type + IInterfaceCursor = interface; + IObjectCursor = interface; + IDefaultTypedCursor = {$IFDEF WST_INTF_DOM}IInterfaceCursor{$ELSE}IObjectCursor{$ENDIF}; + IDefaultItemType = {$IFDEF WST_INTF_DOM}IInterface{$ELSE}TObject{$ENDIF}; ECursorException = class(Exception) end; @@ -43,6 +47,11 @@ type function GetCurrent() : TObject; end; + IInterfaceCursor = interface(ICursor) + ['{82FCF6F3-8008-4CCA-99DA-88945B250B92}'] + function GetCurrent() : IInterface; + end; + IFilterableObjectCursor = interface(IObjectCursor) ['{F11B588A-E8CF-45D3-98D2-B49755FFC22D}'] function GetFilter() : IObjectFilter; diff --git a/wst/trunk/wst_rtti_filter/dom_cursors.pas b/wst/trunk/wst_rtti_filter/dom_cursors.pas index 83c085b7f..a9f175c2e 100644 --- a/wst/trunk/wst_rtti_filter/dom_cursors.pas +++ b/wst/trunk/wst_rtti_filter/dom_cursors.pas @@ -17,23 +17,33 @@ interface uses Classes, SysUtils, - cursor_intf, DOM; + cursor_intf, +{$IFNDEF FPC} + xmldom, wst_delphi_xml +{$ELSE} + DOM, wst_fpc_xml +{$ENDIF} + ; {$INCLUDE wst.inc} -{$INCLUDE wst_delphi.inc} - +{$INCLUDE wst_delphi.inc} + const s_NODE_NAME = 'NodeName'; s_NODE_VALUE = 'NodeValue'; - + type TFreeAction = ( faNone, faFreeOnDestroy ); - + { TDOMNodeListCursor } - TDOMNodeListCursor = class(TInterfacedObject,ICursor,IObjectCursor) + TDOMNodeListCursor = class( + TInterfacedObject, + ICursor, + IDefaultTypedCursor + ) private FList : TDOMNodeList; FCurrent : TDOMNode; @@ -43,7 +53,7 @@ type procedure Reset(); function MoveNext() : Boolean; function Clone():ICursor; - function GetCurrent() : TObject;virtual; + function GetCurrent() : IDefaultItemType;virtual; public constructor Create( ADataList : TDOMNodeList; @@ -54,7 +64,11 @@ type { TDOMNamedNodeMapCursor } - TDOMNamedNodeMapCursor = class(TInterfacedObject,ICursor,IObjectCursor) + TDOMNamedNodeMapCursor = class( + TInterfacedObject, + ICursor, + IDefaultTypedCursor + ) private FList : TDOMNamedNodeMap; FCurrent : Integer; @@ -63,7 +77,7 @@ type procedure Reset(); function MoveNext() : Boolean; function Clone():ICursor; - function GetCurrent() : TObject; + function GetCurrent() : IDefaultItemType; public constructor Create( ADataList : TDOMNamedNodeMap; @@ -87,50 +101,94 @@ type property NodeName: DOMString read GetNodeName; property NodeValue: DOMString read GetNodeValue; end; - + { TDOMNodeRttiExposerCursor } - TDOMNodeRttiExposerCursor = class(TInterfacedObject,ICursor,IObjectCursor) + TDOMNodeRttiExposerCursor = class( + TInterfacedObject, + ICursor, + IObjectCursor + ) private FCurrentExposer : TDOMNodeRttiExposer; - FBaseCursor : IObjectCursor; + FBaseCursor : IDefaultTypedCursor; protected procedure Reset(); function MoveNext() : Boolean; function Clone():ICursor; function GetCurrent() : TObject;virtual; public - constructor Create(ADataList : IObjectCursor); + constructor Create(ADataList : IDefaultTypedCursor); destructor Destroy();override; end; - - TCursorExposedType = ( cetRttiNode, cetDomNode ); + + TCursorExposedType = ( cetRttiNode {$IFDEF WST_INTF_DOM},cetDomNode{$ENDIF} ); + + + function CreateChildrenCursor( + ANode : TDOMNode; + const AExposedType : TCursorExposedType + ) : IObjectCursor; + + function CreateAttributesCursor( + ANode : TDOMNode; + const AExposedType : TCursorExposedType + ) : IObjectCursor; - function CreateChildrenCursor(ANode : TDOMNode; const AExposedType : TCursorExposedType):IObjectCursor; - function CreateAttributesCursor(ANode : TDOMNode; const AExposedType : TCursorExposedType):IObjectCursor; - implementation - -function CreateChildrenCursor(ANode : TDOMNode; const AExposedType : TCursorExposedType):IObjectCursor; -begin - Result := nil; - if ( ANode <> nil ) and ANode.HasChildNodes() then begin - Result := TDOMNodeListCursor.Create(ANode.GetChildNodes(),faFreeOnDestroy) ; - if ( AExposedType = cetRttiNode ) then - Result := TDOMNodeRttiExposerCursor.Create(Result); +{$IFDEF WST_INTF_DOM} + function CreateChildrenCursor( + ANode : TDOMNode; + const AExposedType : TCursorExposedType + ) : IObjectCursor; + var + locCrs : IInterfaceCursor; + begin + Result := nil; + if ( ANode <> nil ) and ANode.hasChildNodes() then begin + locCrs := TDOMNodeListCursor.Create(ANode.ChildNodes,faNone) ; + Result := TDOMNodeRttiExposerCursor.Create(locCrs); + end; end; -end; -function CreateAttributesCursor(ANode : TDOMNode; const AExposedType : TCursorExposedType):IObjectCursor; -begin - Result := nil; - if ( ANode <> nil ) and ( ANode.Attributes <> nil ) and ( ANode.Attributes.Length > 0 ) then begin - Result := TDOMNamedNodeMapCursor.Create(ANode.Attributes,faNone) ; - if ( AExposedType = cetRttiNode ) then - Result := TDOMNodeRttiExposerCursor.Create(Result); + function CreateAttributesCursor(ANode : TDOMNode; const AExposedType : TCursorExposedType):IObjectCursor; + var + locCrs : IInterfaceCursor; + begin + Result := nil; + if ( ANode <> nil ) and ( ANode.Attributes <> nil ) and ( ANode.Attributes.Length > 0 ) then begin + locCrs := TDOMNamedNodeMapCursor.Create(ANode.Attributes,faNone) ; + Result := TDOMNodeRttiExposerCursor.Create(locCrs); + end; end; -end; +{$ENDIF WST_INTF_DOM} + +{$IFNDEF WST_INTF_DOM} + function CreateChildrenCursor( + ANode : TDOMNode; + const AExposedType : TCursorExposedType + ) : IObjectCursor; + begin + Result := nil; + if ( ANode <> nil ) and ANode.HasChildNodes() then begin + Result := TDOMNodeListCursor.Create(ANode.ChildNodes,faFreeOnDestroy) ; + if ( AExposedType = cetRttiNode ) then + Result := TDOMNodeRttiExposerCursor.Create(Result); + end; + end; + + function CreateAttributesCursor(ANode : TDOMNode; const AExposedType : TCursorExposedType):IObjectCursor; + begin + Result := nil; + if ( ANode <> nil ) and ( ANode.Attributes <> nil ) and ( ANode.Attributes.Length > 0 ) then begin + Result := TDOMNamedNodeMapCursor.Create(ANode.Attributes,faNone) ; + if ( AExposedType = cetRttiNode ) then + Result := TDOMNodeRttiExposerCursor.Create(Result); + end; + end; +{$ENDIF !WST_INTF_DOM} + { TDOMNodeListCursor } @@ -155,7 +213,7 @@ begin Result := TDOMNodeListCursor.Create(FList,faNone); end; -function TDOMNodeListCursor.GetCurrent(): TObject; +function TDOMNodeListCursor.GetCurrent(): IDefaultItemType; begin Result := FCurrent; end; @@ -168,7 +226,7 @@ begin Assert(Assigned(ADataList)); FFreeListOnDestroy := AFreeListOnDestroy; FList := ADataList; - FHasItem := ( FList.Count > 0 ); + FHasItem := ( GetNodeListCount(FList) > 0 ); Reset(); end; @@ -176,7 +234,7 @@ destructor TDOMNodeListCursor.Destroy(); begin FCurrent := nil; if ( FFreeListOnDestroy = faFreeOnDestroy ) then - FreeAndNil(FList) + ReleaseDomNode(FList) else FList := nil; inherited Destroy(); @@ -226,7 +284,7 @@ begin Result := nil; baseClone := FBaseCursor.Clone(); if ( baseClone <> nil ) then - Result := TDOMNodeRttiExposerCursor.Create(baseClone as IObjectCursor) ; + Result := TDOMNodeRttiExposerCursor.Create(baseClone as IDefaultTypedCursor) ; end; function TDOMNodeRttiExposerCursor.GetCurrent(): TObject; @@ -238,7 +296,7 @@ begin Result := FCurrentExposer; end; -constructor TDOMNodeRttiExposerCursor.Create(ADataList : IObjectCursor); +constructor TDOMNodeRttiExposerCursor.Create(ADataList : IDefaultTypedCursor); begin Assert(Assigned(ADataList)); inherited Create(); @@ -262,7 +320,7 @@ end; function TDOMNamedNodeMapCursor.MoveNext(): Boolean; begin Inc(FCurrent); - Result := ( FCurrent < FList.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF} ); + Result := ( FCurrent < GetNodeListCount(FList) ); end; function TDOMNamedNodeMapCursor.Clone(): ICursor; @@ -270,9 +328,9 @@ begin Result := TDOMNamedNodeMapCursor.Create(FList,faNone); end; -function TDOMNamedNodeMapCursor.GetCurrent(): TObject; +function TDOMNamedNodeMapCursor.GetCurrent(): IDefaultItemType; begin - if ( FCurrent > -1 ) and ( FCurrent < FList.{$IFNDEF FPC_211}Count{$ELSE}Length{$ENDIF} ) then + if ( FCurrent > -1 ) and ( FCurrent < GetNodeListCount(FList) ) then Result := FList.Item[FCurrent] else Result := nil; @@ -292,7 +350,7 @@ end; destructor TDOMNamedNodeMapCursor.Destroy(); begin if ( FFreeListOnDestroy = faFreeOnDestroy ) then - FreeAndNil(FList) + ReleaseDomNode(FList) else FList := nil; inherited Destroy();