From 95fb7fb08f398c5832e476a960ff233844b2d314 Mon Sep 17 00:00:00 2001 From: inoussa Date: Sun, 2 Sep 2007 19:05:47 +0000 Subject: [PATCH] Delphi compiles ws_helper git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@254 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- wst/trunk/base_service_intf.pas | 2 - wst/trunk/doc/WebServiceToolKit.odt | Bin 180049 -> 180274 bytes .../user_client_console.dpr | 4 - wst/trunk/samples/http_server/http_server.lpi | 59 +- .../user_client_console.lpi | 15 +- .../user_client_console.pas | 4 - wst/trunk/samples/user_service_intf.pas | 60 +- .../samples/user_service_intf_binder.pas | 22 +- wst/trunk/samples/user_service_intf_imp.pas | 2 - wst/trunk/samples/user_service_intf_proxy.pas | 20 +- wst/trunk/tests/amazon/amazon.lpi | 88 +-- wst/trunk/tests/amazon/amazon.lpr | 2 +- wst/trunk/tests/record/record_sample.pas | 141 ++-- .../tests/record/record_sample_binder.pas | 59 +- .../tests/record/record_sample_proxy.pas | 49 +- .../tests/record/server/record_server.lpi | 17 +- wst/trunk/type_lib_edtr/typ_lib_edtr.lpi | 134 ++-- wst/trunk/type_lib_edtr/typ_lib_edtr.lpr | 4 +- wst/trunk/type_lib_edtr/ufclassedit.lrs | 2 - .../type_lib_edtr/uwsttypelibraryedit.lfm | 19 +- .../type_lib_edtr/uwsttypelibraryedit.lrs | 658 +++++++++--------- wst/trunk/ws_helper/command_line_parser.pas | 9 +- wst/trunk/ws_helper/delphi/test_amazon.bat | 1 + wst/trunk/ws_helper/delphi/test_ebay.bat | 1 + .../ws_helper/delphi/test_googleSearch.bat | 1 + wst/trunk/ws_helper/delphi/ws_helper.cfg | 43 ++ wst/trunk/ws_helper/delphi/ws_helper.dof | 162 +++++ wst/trunk/ws_helper/delphi/ws_helper.dpr | 46 ++ wst/trunk/ws_helper/generator.pas | 95 ++- wst/trunk/ws_helper/logger_intf.pas | 3 +- wst/trunk/ws_helper/parserutils.pas | 4 +- wst/trunk/ws_helper/pascal_parser_intf.pas | 8 +- wst/trunk/ws_helper/source_utils.pas | 4 +- wst/trunk/ws_helper/test_ebay.bat | 2 +- wst/trunk/ws_helper/ws_helper.lpi | 275 +++++--- wst/trunk/ws_helper/ws_helper.pas | 247 +------ wst/trunk/ws_helper/wsdl2pas_imp.pas | 11 +- .../wsdl_generator.pas | 28 +- wst/trunk/ws_helper/wst_resources_utils.pas | 3 +- wst/trunk/wst_delphi_xml.pas | 46 +- wst/trunk/wst_fpc_xml.pas | 16 +- wst/trunk/wst_global.inc | 2 + wst/trunk/wst_rtti_filter/cursor_intf.pas | 9 + wst/trunk/wst_rtti_filter/dom_cursors.pas | 146 ++-- 44 files changed, 1331 insertions(+), 1192 deletions(-) create mode 100644 wst/trunk/ws_helper/delphi/test_amazon.bat create mode 100644 wst/trunk/ws_helper/delphi/test_ebay.bat create mode 100644 wst/trunk/ws_helper/delphi/test_googleSearch.bat create mode 100644 wst/trunk/ws_helper/delphi/ws_helper.cfg create mode 100644 wst/trunk/ws_helper/delphi/ws_helper.dof create mode 100644 wst/trunk/ws_helper/delphi/ws_helper.dpr rename wst/trunk/{type_lib_edtr => ws_helper}/wsdl_generator.pas (97%) 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 3f3c31a9d29ec13a8e9216bcbaf6d29f493342ac..0a6291349094e369c359a6dc24d3f965a644f7e5 100644 GIT binary patch delta 29202 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 Rkhcd6>DzqU-zf^@{{cVi377x? delta 28992 zcmZs?WmFwo(=80a-Q9w_LvRQXAh^2)cXw@Ef(Lhp;O_43?i$?Px#XPZectRJyPpb;b@gE=Se>DgH(Y%6k|FzX{f0B~>hlDCztNcTNq9?9@i06)m*k97H zL<3qy^bd=W08QKc%M$5mKM?{`ZH&V5*pL_dckAoNq>v2?Z8ZEekjzRuHdH0JWMyNW z6n#OxKPr=I^{Sym`@S}7kiCJSO2g|@sYr*6dDyS-JGx%;>>oOKxJN-D-6o<}&ccB+ zqZ{Q2l_DSe1-6FE6?b|QRq}qqr|i_27ulZzP>P>b3eNs9;CEWy#md|P0! zhJ2Ywr`$|)8?$b~2zP=^(WqtR$;^9+?W9-HWHa6lK2Nh8`|?f9v0WrKes`|IS-ejA zowDE_e5)pd;3-7`77FNs)O2yT^_7V5+|nzAIU7ceIMu9zDJ7P+47Sos1hwFK)ugzE+lx2w(~8e@XS}0wFG%s9x84Vdh{50h|*n_ z7(AXDEMs|WyGIpVO&pF~Rq$QSDZVnd<2{w}%bh2;)4jXz9v~G9^t<>LT}=$sA4PRE z8+%!TEflh@v6AFInB&gx$Cicej{%V`E<}WcxJcp1nk&%(khYfE&!EYWlO$O5q zqCMLBs3)UqR_q!r+iTR9j&qk=EmzT{kB(pQjph$B2ve2sN7|~tc{a)FjoIe#3|9;4 zBFfsBz1XHv+9ZI6(l%az!pA=bNaX^umZ`+;lN=vgMt}h-Qu(x&*=)HZx+kbFd+5H z|Bm5#8CW97|MGh8vhcbUAa%QGWbioR)ML-LCNypvk2#%NC}hSG)Y9_i&rCJ(q(=1X zDFj~n{-#3e;dKD_IXu?28koCxEPUrASlmm1^kZ00!QC_19mzt8GfedP=2_Nqva;5f zp0?sJ@Hukc+?*qbBaO`Q*2K%W#U_Wbx-fg(G{Z#3D?9(Wy@{uc~ zU0s#5ytFn)gohko7H}@&|DM#6!R%ey;=_|Q1hoQ+!8tFjs?YUWG@EkcXf3$mL-;*? zhjrl#LdWGGEmA);2e0AxVLaiLT2NFbh(N$*Yw~aa%1`pZ5RPq*ijDjvjQhl_IsT3P z?3LniShv$G)>yAAuJ&36=Hj}1t<^%AmHB7x`7REhCHDMx7eF*wls`blR(OI@SwBa6 zM-}_qz3pB;w7Bvw3K)b)!S8XrzcwXxGY%GxSf{;ESQVIK??lKvDWBZ$yw)5J(9CWP_p%~kIl3;IQ7kguPRJFdd&Zal#q)fz(ywp%RX6xX z;7~!qG_>HA`yADZeL?a2mzqL0k0z<)LJhKnQz@q!T+y)l>zb5?Xy2u#@VNa3C5fbx zfTF?9efv>rqaeAcg`cMz^D{Vf%ER*-mDTt)#sq4~zQBQfI1xsUwyaC5L_VcBDEnoH zI`&nmWmKWw(99ATj^Q__i>6UuDZ*}F;hTwDP@EOSuD$b`@QQReG07bZRo?bh8JjBnhsA-RQ&Xh(U&D(m03?x-p@pM&u(SB+{OQY7b{p_Q|IvJ{kFTQ)Ib?{Bn#KwpO zenb%_{sNfh(mi^LJ?>5nOSsak#U~)^_w`1FYo@I09#!KN)8O(Aa~kbY?XzLU&zegp zv+-38AfEN%Z`~rTn=F~UJEk@J(c?tFx=x48BC(g;!e1$y{Hnsz{E4_ikP@hp{VoaS zOeV=T;2qSW!gph|N4k;YYTmTCzZ*?+H{L@;qy`*-WsPJsO+ooNuCVjsde52FrqY{o zZkFDxDD<*nz3`X_)|}aoeC8P{d+nc^lJAr{w}a%H#zBjc!j&TVF%Rub$nw*3K*$Ua zgM|T$As(k;k!-N9@yy|e76Ta-t2OiNa8Ki{i3Wo!4XagE_h?sbTR)+)w8eO%R+gIa zsy@&|inWt6cK5`}fK{J>)1dohr}?v8`mKo;vp_a>*;bHl<2YunD#YYDI@ptilzIcU znrwb4O@%Jx@J|A}3Ra`O@z{mrYJG+Yr-IT&E-M!gN)`>`MzA=1C=G0kgpZ%G5x!) z|IW0pp(gp}h_flZc(-m12v#9R{l2qq?~M~w65B_?ZMD$KB8jVa6+Y( zKocq@d~)>SY~Y5H4{<6J^{BXoUuxhcnhpE00UWJrG5UFx@N9X&oX{o-JkQnGIPJ&% zV}kWUInmU9S@@70>5uAwKdZPHzmP08RB^*r*%&yX>u>ZQQT4V*%*h9M#gl&m$WK<( z2m=3K{tz#`l3e8HFDhchcUGm5LVtxKi>k`&@4!O$-wys?g8yev0ba^;_pbE+j+8iZ z)ELNLRe#e-$X8HfYjYVN>*@4uwpqu%g;F;?%D#C#5Pjs38*7-R@K_5vKds#1^z4sg zx`hc{{;{VM?rbx^7BKC^5TPZrfMH%^q^z*BC&Xvun`l5XHk$2?DZ(AO9?-lJpJe>TtZa#DJ8>Pm} zGQSK@C&>Av4A_PPmP5T$Ij1Yj>9ySw>&mS%R2y1w^@@xJ3?OGvbz%i}>O|r$3U=#Y zX2t<;1wp=9!67BQ2S&0v=HzqsENQ4NWU|PG#jRfd7tDOUa?w2-gA|R3!iUqLge~7& zv0qX48Yw;n+43&QPXf30rDCBvUb7Mg@nah4eJaSbV1`dy*oX|J&*FKdJ5OKP_V z%SQB?O;rZ73?NsNVWmC;g~%Yozi^XOQA)XVp>cSmza#vKVXsh)`CcNri*oM=Z?JVd zozk++NX$r%=B<9YYJ2QJ&DmZmR&6HBO$tIT!->-z^p^~<25^mp(%H=NH9rx_m)2OpA!X4dRpztU-<94rexUQgSFJtgmN;}l{h&TLxju|o1o@OLS z-pX_oJK&*{rBWcsETQII^Dd~R7{_++;t1UE-1`&yBBGxCZ*D<@fsFaY3DgjFDY2~M zoEni-!R-VYwaMw}&>iU}G%rJefJ|wGfvVU0&0ygf5N-mN8}rEoidVox5|8Vtr-~~R zH^CY~Z#-q=!h{o3%!ThTMp$&Z&?6XG@`;yeAGkU{zdckE8zrxU9_g@F>l90*__<$| zej{m6yb;^XHxnFmpL9`E#7Dwb#vi7pjJe7mO)!Jcz#D+_U_T^aGOg7r&hp8J`KxEo zZxrcn#y!Qb`kuFdFMDkEPLl4<6%!<4+zN$pJ z2yepk#$KFLdT;Oh=kJBG?XxYtEb}JOqt*=!sgGO+}r(G+<^5?=cOgx zzs7?x@129nnzu9!|HafE(Ptbca|9uqNZd7l6A;w-&vyk7uEnqLa^2kE8?_+v1f__S zhTwNl6Nrl)Lb_fIGHs%|UNWL>|K$v#Z4w_AnKu3puPE^M%YQ{5QU(=1O5ImIh-m)t ze(5}EbtyObuWf7@tz=R8okLl1RZGx^(W zjc${?6|;*ZWZER8I*KL%rH}E+3pSKYixU(pkY{XY*p!EgKGYl-DKz88x8Y2$GfLWP z>%Hr|T!lKE1&p!sjCeDN14USoha(2Fk^?tJ9}6>hy28GlX7+MRbKgp8mlAEWmC_|F z$-pSk)mxfFDA?%znDSxC$C6y1qY5Gx0g(peFf< z7;W!Os^KqXmLp~TC+X#(kGRo%1VYfLF5EpL>8-D@+On+j;^_V5^?mur(-G$_H}l74 zek>`|U-2VA`#)xB`)-;zKceS_DB7m*KW6>e zpG*~W=7`04q6A^_BIA1TyHsEW)xWul6L6K46fwD=<%)B~aNOyLDQSQH&Kb>R`L>dF z_mL9|hd8VMLx8_*xM<nVg==uow|A58#@Bir%`0=#wd#I|`Wbc2-k>vfq zFosk2-%H+k|7Jn?s!|hmf6;q;k*IF^_kYsIUh(gl@R2=DMZe@LP-kq4SN|RkAs>fB zeCi!6t*Z6MKL3-OBvK#gsXFvG4>`P_{@u=gSzUS{SBJC!fbo9P#)HQHW#DzTq`1Z! zbOQHLq<9JQ<#WFg*qnGpN=luXyU3ib7`U@N%dm`anjzPG8Ce?jER71WSk=7!xI1kh zYx6rXJQ~T+ZBBjEI5-Z8cjgCeO$y%B8ul~H)bhqnl%;5P2I9@ewI_VL7FFz#aBy4Z zpp1cG&YId!0H*bB_Y@KQF@MtTw{q$2D=$*Iknh*@z;_sdr^o}+0|ZqOi|gx~%n8(o zwI%M?4ES1pyY^0&DQl~h7faVh%-RNy{pHNt!;=W-viD*hheV+H^PZ*tMQA$xM_Ff4 z(Y30@G$f0)H0CTE^H)_v!p50Rx{mtYsuSRJ+EX|Z7S)Ed;Vt)L;H_J9h2Y%+N!4?W za3MHLKlBedQxrTOF;-R*-@|uNO3e&bO1rge-{l!O*0-ql3F2~qk9t{ht!^K2P$H-D zF%%Zw;#>PXUyuKWyCE!h59#G)dJTnkoG!z#W+9CKmX@SBn^oKeu+Kd0WNAi6C=bv| z!CRoz&m@bbtp!wE2yQ!gf$+rh?cn9ybNWZ(?|5&Ap00o|hxRla^{Xh5vcBrwUvt7&kvR!w(HE3HJKRBpR|3DM}rU2@j={v7|!Fj z{&i`6kiQx(^$!C46}c-5B~?70B*$Li`k!XYBz2I%mc@>R+$s3`lDKxYfzObWE@r0p z%fFLY)TFP(VZ1E!ofaq6fn1DBgPoSOGm~gYJGdownz`_&XLE?HBxopC`SSQgoG>mT zyA58>j8uG$7SGc?D|tbc8#oOx1zz4N&Y!UsQkc`10K~yZqK@~%yB{EhqFlJGIT5D* zVq^XVM5`?@w#l3bMMYpD#b5R5kok7^BhESozs1T{2*(QU<36+qj+; zf1qId9S};DAOXLA^JNSW%^(^`^jnto)y6WkRLe^Ey$h>Q{?&rZz$>Y(&kG-38-8(J z$|bnDC;}n2kwx#cVEe!t|2fQ8Lve;)tC%9$4^`h%l%5hn!@51a&CSY(dm*$Q7uQM5 z>CaL*)^?$u+ZP3&a%Y3VpmPOc*t&}1$KTt{lmI5ywj5qCj^ifJ_TlpPVBiMrx3U#A z3vQWehx8Vg zqd;wNW?gns3vpf9YC%OXMJ?C7!r7E|`f-7H*McgND$$H_Q_4;wlu2e3Jue-3{^Tu3 zg#PJ?NYeSt;i55Yy2NQtlJ~)y=_?Knu7Lrzxu7zAx-VoOPM)rzjUHp~u~tW-Yg(9} zq=l(~2`aa~BpACOHihjUQKicOx@(c;7{I9gJI|=;&<6NVj;tUz9TNDpT}_2O$h(JO zdpFwNm{hrH*t>)2>GT1=h&07N;VMlV$ScOeu$oRSh=;@j^?Yna))S72o@9!tDch!s zeYdU&h~HxOzsS5S$c^aXvfSHNIxS!G4q%V+ffRd#i~T0fr}x&?aBSW=h(gK2H3zC! z6qK*QnRb!CCmPk46pwm1*y!_6cf@JKj}rVk;V(J?e=l%~yDKpSAQNkFz81TXXDE7z)yw<#|vxlAdqP`cQtJO?$$}= zxS0~n=d04{a#K`7z?e|NK)_{5=TgAjNJ@&-W=0%3&2GMi@Ks0563UN*U=^4i9K5hJ zfm+92o}q@twZ{p-11S?KY_Fi7C#}tU{uDm>kg-yzPtGqDz6B1^GlNihqvavd2sODD zN;5)rJgd%CD;>*I?~}WFG`*Lw)l_+2;DW|0r(r<->9*`LP;J(Q#1hQv8v^~FAhVPL znu9+Po19GZNu40$E%M#>-d^B+=RHO_qP|Vh)Z2VVZ0>Z~1_Cvq0T@$4;8vo~&|nh~vx7tpCoHB_{){cE^Iw$7MMVX zbT)x0_d>nn7a4-KPH2e7DX?&}ZMT}8wYA{j;2@dc1s^M$d%(M%$Mys&k&R+~_Jsq^ zzmjKdT*ssX!oW(aYkezA5k9EvfMfNCFE6rHPVSGD1NILRBq!n!VA*Yw`q>_j5kM%Vh*9Bc)xO0DWO-`5 zX)#NWIbGvjmI2ny;b}&Shv&pw2!zD-lH`lE^dy}UN++>~)v@}uA!-agWiw7AtB$~%#>}e zD8Eh%BwHE_BSgYa7J;l21`=Lj>sXl*l@f13eJzy*Q3D8%CQ!<8wU9X7Dl5hX!*Mua zg>_Z?+o`nBZ|9d+e6k>&UWiY!vXs3}>Bx{$Kn?KkU0=vgvmtG_yb+hHAu7M3u)0)R zrqGWj_D1=DxlWt14KFsE?lgoXRdDII=Y_b5KTD)W_Sb7$M=or^L;h8K^nR?4(Txa~B zuAe9}hflC*f^xuP8vmB$-x@LVO5eeIc8eOf5*W)JX0W~IEenDNf_AEz<;GMb6{vj2>O9O{ z;WOd!!M(0=tPBl1ja@4cLd*mn+$-AFCPDa{ZY+ZXe}k7D;hRGa<4a)&=fGg`v#^iL zy6DYhi9L=wkU_q03DkD2UPr@g3a?D3|IPw-J(u&-1zT$IpiaS0r*(?8nf z0^yZUw_}TPw871am-A!QTePa9PVfH6*SNV(a%<6^P8WY|sohy72S@FJu4*&}wK(|6 z=nc}A%Y`~N6;nab=*~b#IsZaEkW6b_%@7KNRLtOK6pOw~AIJ_8wiGY_e-A?O${^g{;Z1d_?J!Z2lRjAhXS`EyNWk_L~u46hDovzAC7BD*c%&Rd2DqiIsE5Ok%o0OtVlx zrw5)C^@18|1y|{A0yZM|GnBw{6+dvlwS8ssU=Z|hf%WV>80m84fWR}|{^vjl5eNMY%1kCnrmwwdbpPZ5gu9^4?v@MkH$tMsrYhS9b|PWb&XHQ{ z=23;i`NVALO)kQdyoc-D+%gr&nv<)77Af%PCgw|bqY*=|cFqaI_9-tJ#!qSy-JyKQ ztjO}~z-5vv<3Bg6>^yQ7mh{6xIvX4<{^U}dM-^afAj{KW5_KaKrh;c}acb-UK)t*9 ztmtHToR{?#!P+WugsXcF1XBwzNE8ySjV;H13dN(*L?J*Aq;CQuiAw>tGfo${##d9| z&B)rrX1cMfJ--{$d@UU*xR+o;`dYpyYFgDU#zq#W7G#km8iLNjbpn)U$fey62Dxsg zhTwBS*;+Oq39iw@kUo1&Vo0#jTu$@up_`?UrVTpqzLHtKuA|l7$CLn=cf7*XESuhK z674KqWOlqBwsdUPi~#posy6RMiy2W}BkD6CY+7aS2i{lkXg;I}qr%{B&zvpQ{db56 zag94GCj^fC>r=b3KP}b1z{CH%gtg2%dtPrDX?c@Ae?k4`PY@Ie#=wHiEPf@Z+8uY6 z^H$2yav?D9cZ5$Fc`)-_vciL(AdnTnz(Vn!XBbq@RxehTr1sJxL;V=_W{ z`{Cfy+C~_mJi2I#&=w5=8O?;p@dIoMEHbupwoF@FUH4?d6*IMgW3=*`H1%+Ud#r7} z%jmw++s}lz3O1|y6-fNzZQ{c$4`4p&jQD#?CaM@|1rhDm4mr_#6bIL8Dv{jN5}?VkMW zi?_P#tbmL}rfWe>7Ocfs`^L^?ng}?NxldK1CC7nrdzc^pwE8Cy9r&2N9cfMBRONf&JlM@nsMl7#K z`1u0)-pvL0Z|y`f)0o^ZeU3!fcJ&SsmedHQ4Ioa8?~ZQJ-)8!Lo)#3Vqor*S zQzFl*eGIhaQ;svSmWv7V2l$3fbquWL%{{a<9557!sZ}j7(?bJZ&#ryJafZcnr8#vN;Y=Qo0pRQlorC+$yK_p+tB_p6e-z%!FS-W9#{$1(?4$F?v#;cpZ zYe&t57bjews5t0r=u?mC6)dZqCx>NXJ09lx<68k1S3TRQ-bM#)#5bnHPf`=*P?%TD z?&A@xUPz1(a8IF_#sQ^h42v(m)m*61Ugj%2 zb^HMH0QLl<$*G*Kqj(ktZ(3?oA~&)w*tcCz56WgtdnBrHqDizk9wS%mX?M>;fFj=I z7t1M8D1WgsQ&|Ji!EGDvN>;rcL@UQA3H@-G`scjHJsM{w6s+&jZyJ7^f#~GWKbRT` zB4V}3dD-cb3a{cin_#|S%!nU7nlr6>lq{&ap-c1i#7dmKBe;zSujdlGN58g1TDP(oLzf?n9E|l4s-W0)wAs6jL zgOMq82%}`|>FU(nM&wxE!$p3-!+Dz}zHug@cxpvr=&ss2hST>|H)R(1=7__NFxd`7 zp0NjYoLQ$&uSl|OLFGyd#AD~KvaENomQL-2uVI)kj=x%O5PDN&wD4pgxR~8I_^aLU z6S{+mMF|4iB#4!iVhsm(IK1w8%%5A>cJCvd`aQVMp$LXv@*Dp63~{o$l{+(BJr_5d zdogE2HM=mhwHKXbM{pUjs`-ofl-UCHPj3rGZ&qV+Dt<&$spY+}!_Xt4DsNhYY>ulEKAQ+aAAuJmiuF|I+ckK^Y6 z3@ivo1F7U00p8SIeg&Y>p`gL)UJBw~oE?oit37hRMO^lRH0b({88rHh-HxrdAR`D) ziFlSxERkYokPGDuGO*PO>@a{i&sU=Ld+Vn}mu)qInCCb#rBT z+fVCYA60fm0n4}5ANqEI^)S`MAlgzvjLcvCj54zs&0nO;vO*{k@&~S}H$_Us@Fit; z&8TZ)9i)!@${JFPzC0uDI_78+qEUED2;BoahMmq~`N z1h%X3iCp#E&R~J#gi!m*o~ZW+E)Lh6GKOUGR;u-5-L^yunEt6wu}8PU#d8Shtq|JX znStX$5TOkWywK9aN;AWfOtd!iwuX*09qwP68UgfDrmk!VPZHkl_f50jh>})9VstL< zW}iHN4}O|IjndE}_gudtO|8wW6XD$!E*#mpp6E+b20;L*WS@D~QlgwvL{v5N(~_ndhIJfz*P z2-JHQ6ovt_=q54ZNI$7 z5%E~@Q;YJPev{-u^~jp?zjwNHy?>u5!fQFh;Lg&0u=qSL`?LIl+Yz%#r2u^eIjVhP z(!}K$T`kcpTs-?V`+z(_B`k4C569O(yvL@NHRdw_mdSnMxI}2dJz>-X%h1g5%;ApA z{1xPK^P?&W7nqTso)iB?&7OTU(O??tt+blRoJ|WVPKin^Rnp>iR=X50#O>$XNWBVg z8J4urFLEgHMncsV$n^3jS7-%iRY?k&I!=j9}1LpZ1q54RwR#^29In ziW4qCo*JdDl3-&kTcLxdjQlKH&QgCVjohkjwAtDjDP^pu$G<>Au)nr|1k%Ag!Hen9 zl!g)4>Rx)E9&w8dyNlzeu<5zS)9aA`v$V%X@7iu}dfn#v)?A->%hGy}K(OM&7^J zs^L|kc`vdIubGEBCW4EQ8f#Mj`Ur!mT;foN+h#{-o6+GUuSpLXZSR zd3Pa{oyVwqU8uQiZ46{PecKxA3+5lI@hV&7N|N!BIFOxSJR%ZkrM0qp<-v*4!|6=m znxiMzl(cg4vPt?jbV2Q*U9^EVo&sTQM$$klrDG1d+WCvTZodADuzWO)ta=hfy>so@ zu;vR^K7XP~@0vlpV0FNBz+^*6+u9JI!j~7H@|0}!7W;g0e0(vi=^5Q>j4%6(2sXF7 z+IloPJHOeWPvIqCvN%C6LG58IV$+Dj@7j6cW}+=|gF@vbmxJMPy2`v`;=WL&VEG+^2zzGX%d*v8R8B=&WZ5K2KQWuNCmn?KAc{zQIr2EvRA}zXe0_Y?{{5W zi8{~+gzmJF3a?JhO_*yz*6(abi1PH7Rhi;xh=}ODp(WSRZ1is^RIwViD6s`e_iG_( zUsZe^t#LX=Lv?v=H5Jq9eo^Ona9i`lXu!(yep$7ak_8#&vD$N{bJnJ4mMw@h|2a7q0`oCiRiSFy;f%h`3#9LV3s!ev4!?IB^>jKB0XvyEmz*?QE z^1b44y!>_M>ZGw1i1FQXtc7wS3!bd{!Q0Ma4M(9siq;%S6SvPq97?3T;$G2;v%c}cHDFBQe8aP@D0Aq~yxA)uN^_8{S@;3*hczI=wt)@C`MyYAiZq zCc@3_3k1xQ01mbJgHFXo#GAYf^($s#O*S4zM=845SM0{ZDSe$r0p!P|@%VOpnH!vb ztttr>g?tS-ipM;fh=-83Rqooc?BdG}FZjHBOi^3kXDFqWi5ubM~;GUDQfcq8t(iI>h8< zDTfCvz#Dr_lUzqe^!*5KHfvt}fqVvJXFopXz`~Fd{O%4Zdc>oSvnHjyT^ijDm3YKd z%H@oDZR@#8zI%j<8I1*&OxZe>%DbDk#=-UL*SGFH z0*FWn%@}vBcdQJv1OlZGBX^&uSG<7&`l^GTRQj* zmXxx>Q*_h$A*g{zd?rIM>R;oN#$|BGWzr2iGiFs%P#TiQRGwa2;hw9rcvW3XZfPy% zy>15~+GCqV0zE@uwQ-I;vprF0E*ExW2XF=d>qWLGfUzlj*o2^s>PsAH_2a_|1>P+FubrWKv_KDoT#bfdlksHX_aSF|p z=Ra=`UD$4Dt#qrL+}yY_ZXf02!#1L3GWCu{IjhTE`tyCNV|yGYYuIMf zBilT!9Kt!H%V@JWoF{S;yLkTnpe-$v(ifRB`+jdNYg_`y=^cEFHbh^H=U?aj;787S zy*ZaiWFb*-2uYqaHM$|3#?=439E_Mt4vYHU)qgZs`BYo(?0gY~rC|W@?x4>OyDGQj$d?V|^ zfG${4X_Q30Nj*p_h`ZGWs)Nd*)LD$U!MK;@3!fEEUMUpm9R(i%^NXi2V^Uzs-ol?z zx$(PdZvFV>{4)t_0l&x9iC!|oH+l7_aFR%c5lf=_?IPQ{NB)Fq^00X5(sHl#1gG+H zucI>19_5N(&@j^uy;$cZ?w(!aB&H{5C(KEV-5Id=wW2O;4VQd+qNwh&iOobUY{_kC z&5vuYwqjeRN<_oJG!JSrgH~;W46uE6Ef;&@mw*6^OaEPJdVHP6TZ{_}{@B<@FTH=u zn**`uF0s3^P1K@8nHpY^SQsPd(XhCaNic;5o@WrYXL-y4v4;T>k%56{%zvG`t5ODn zsT40*uht&iK^7`<6ID+&GQK8J?~fy1SzFt~Fqe`V7X~AMk3pk^6)Bs)+&xrl9m!IW zIuH8na$nuBU_s!>7&ULU=18l?;c@9S6Lq?-o+vvjQnTomVE@O&=CVrj=ZF&Fyx-gA2D@D<^$jz<)ex{Xney;rmNiz{R&cnK=nGAcjYx|z06XPV2Y`UFR z9E9{Pn7I4n%uQ-0L^E+zw)|+x%l4e2x0fo~bdao$N)4T#J?O&Jw7>cqZ}oJ-@zc>~ zLR;+L6z?+oi(k5$g--qQ|6HijJUU>~M&*9i{e_8)ED4(LKCoi5P5I8~Xm8;pT!K{F zyf(QF%xfWk&R>0sO!)X093|WS-N{r};P1Jh6^)jq)r~HIa8rC3qs1lL>%r0Ovg&?o z1!*Z~S-~cD{U8!(3&zbFfKd{)n*a6G4tsVj+@McJ*A!>cG|+&}xgZP$CCdq+xmp}_ z`BUs-j)0&>Z4?1bWe6O<8)Oz@sw_T24Hye7U$rR~)#b(_aufm^mwN8mj7E^S;%aKDx62MMP zEm8Os6*7@BFz;74>^1WvLBa(vLF9%NWmBijI?AThfS1cfL2XB6vFQHx+Gty_oWw{5 zeE0h$@`(w@5}!3*J6$9D6IqJ#pV~O|b2J6dWf&dG!CIl0{tKNxk6B9zHx5PI#lwh# zKm~kdb&d3DSha5xZ{`gq&64AXEKg4{QdUTej?^-4`qz~{?VY^no9mhYVN~5@E2acR z1VWn_*p#e;avuAY49BQ_N;BwlCZ}mU&=QE3hsH#d6vRWE`^i70icBd=V_C@*aY{^s zNf9Y2mhV9;fY^JZ3TG$%X~L~=+krYgh%(`Rknrm4AXwo^BE@Yz_XXoz)%}JodD4Lv z>t|;V?p_Z_gUM50iYZQq-+e=G&rNq7;n?blYUkP>s;(cNlfR%x` z8h)O`8IC)wZO;DRX?tE>DK+D>wL~nu$!!&if;;gy+44;t8ot=!lssyl5 z#C8{>PK4%d_S;??p38EbUt1mQ)X#PB(-$VVv22bLpUYmyySyvh?7VMe@5+leY?4n% z@S3+K;N87nHWSMoRqH~1`R37mpX}@nJ zHGAbnvo$(JBbNu|f7Ng3Eb7BkJAMMG@0}EpL&3ns;oPuzyzn37=k+#r0mQWukdrLX z@E1+1meyCfl`E9&1K9BwA;`^Ynqd*H%J{=EN!7Xiq6cB&3T$+=nPwrIu312#`PV$^B4TShoS1-979cF@5eI1?o25*zzCs zpx&`3g5FAC8shs58n5rZoc0cahcf)<^{Suc69M zOIxaA3A}0JdydEu&5_c5kzdky%1;e1#puDj8;1D{zV*G}txP=*x4@}n6>ttT(HFQT zQvSM(`wi=yw}DZW_chU@7Gw=Fs<_7oflxZp7lF{r*j0%g$AkYB69{RcX_jX=X|&|r zn$LV2B>l`MGQ=TQLSCx(C-6aJqGjFAT*~7??*fTFH@C#}5pwDnW(Ga(BIsfZljiEX zh5OasD{6Xz9wzN*=<(V=v6VQO(7v8mOHaa!;2ZeK6li~<_%urYpQC< z1GALnTh5>!|MVeRJis7fTGItw;nfCZmq+#n%QJ2 z@Fm}d)qYZBurWfD-cc#OrhT(yTVJgLcPQydZC>?QkhofBhEa0ZglMPU8d8j(amM7* z)~SbZ((|k5$pvZy4mb-O1kYiT^qUk)+R>A#IH$p7NvPtPJ#a4rud1Mo;!22I1x|b= z7VDmg->XOMvT?ZRSJ4hV=y8zcU{;oGpi+hI*n6fk#j)T-d!wj(p2LAS=s-iJ=q=>BP3==0t%RUupAL981`vKqU@LO4LXdx@X2*Yt-A zd(+Jc@yjX~HrkIz%oq$CZUY&mP#BSA;hC$|XPPMFcKT@&s^54fxZL(s=(Ertzuiw= z$GyxVf>t+V|F~VNd--JvZaXs*c#p7AxMb=dpI-w|@RAhYr<$;oNe&uai-J4L5fe`z;_=-N6Ze+2l# zsThDh@&mcJfQxS7FKZ#`7`oI2VV(r(vlH}VncAgbMRN|Z2Qp@5@_!<8(UG$;*Ib8> zU?z2bXDY)4))E*kGND(|@HKL(!exa)?EYb>E6u>*>**4C8MqXN&!AivFhK_EqzO@T z5HSpum2ln~rJqRp6?B*IEbs{Sf&kH`;Dir!@G09kQpR#DGm`g*&9{)CaL8Kfb5()~ z43a0mXo?24GI@#BZN^T7p1OUxihmQZ)$a_mXSXKy6jVR$c+ddFPh+uQEN&qnET2=e zmYvY?$|fRxZ{BQzjXV?wW#B<*F-1N{VG?s1UcFw~GUU8OAG^vHWR48)Ym@@)soXCl z4dL|ogzR|NhvFTWBK8CW!`@B5F7tXhcsx2zUIFEeot`>9N|2n;8oA9JvB~Vr-$Qg4 zNmkTK#6e#$VmeH=$O!TX2kxx^uYTu-mAF34vLA>ZtMGMtqcjG9h|(q5yE5V)C$;VFJ8Wy1p zTwqqGt;4U#$0offY2>Q>stYm(umnkCIK+fW#wuLZyuT}a1jQ>8Hvs1b-4>+bnlEmRx9K-Z78k{F3V zY|P$KYxaEc{iAn76GyU+I=x0^E*;SgIGsX>_vFT|=NJ4O?|}R{;Y@RqiSQ&5xiN9Q zfJhi2r6|+%B-GbXC);5ePB0Qz5O6qPSky1_etU&$npZCf*2iMRJA-xA5$-IrCp^DaN43D zs52Zo@x$5e@34;udl8i4x6Wa z8e49=u*g`PJCy#!VK}u*cam`p<4=P9NVF+skTmmky2l%OgJltAQ>r+wm9%DpVb*py zF)cYhjsEe-#gRaYmm;cvjP`Xa5Hu#X#KVF^nJhMx{8NE(Xf5LEh(3Dd{z>0+WfG=< z6@FU#g>p|G!tC6plvRYGImJD?zm7shBKjs`;!b$wQf`-W(NanGAa2&C$ z^o)KS3Wb#tA$98xi10K|(9}wxb+G66ZT;);zVmYFbG2cnuYqR^TYPf)Ht@PO{?y{u zBCw8ObL-R8BVL7q~f7j5OD{@*?`2j$$6`d|Vs=c>8{n<;NK*=u3IT z204kzH&v(_0>GYv>1vsHWYi4WV#4*qUySS3M16{fG)+N1w}3w*SF|N3V}P_|R$C_y zy7@S`rl`T$sXRM{8o-3B_<8Li;Q*u%fzj{N!jR-lG1VTcw>2SP$+0p*>HwO7X0dEU zcs2b}yTHw^z5sMx%4{y8^N%1tBUXUqFefDTRopd9dP0F(yj3~^);M1Ka6&No>9w)# z`VBZ0UnHs)DI4G~M)()nxz>tp;--vuoaADO1jg>Yd8yBJg}XR-rkLBO^NHdq?PZq~ znIixsUNewm$^(3AH+!QMmP@^Oz?mwXN$^KXUtvgbZ3xeL|E$Ss6acgkx8$;90G`4i?DPG!m;#b4b5*9WQQS~ z*^n^BF2fb@1zf}+_Tct2lTXBnGR~YJ&puS{6W?4nw*oaF=EK_c92skf<@ znJShXBHm8<{q4)L_!zc5x6Efn`+c zRekkL&u?VlUu|B(i?-lYx_|9r;X(6yXhVDzuL4#gU7ViJ(5X623`5Q^B3s@GZ{|?H zNXVC9Rjp`WZH(agb6WNJkt;2EVn3o3sxk6+2KF4bl9i>2;KncO*Bh_zMcjB_dOprS zv%%wtMB}LO)S}l~3pMZZJ3R1NNW0wMc}tKW4%b+l+f&?(mGwmb*s7j=;O^)K=y-`t zN(0f#fl*bfpJV@V#z8V&!PoFZ#0PMHL1+IRt*}UCIm+K?kaA?TMS8dKL5y9_CC|lS zjR86a?o*Naox>B6_Awxc6Z3!|Xs?uqG|fPc`Ma=I5zU_V10gSJSu5L+Gux6TO)RDp zl~+~U(T6uVqUAwI2M|F!TFE@Oa}k(n-HPI9FH%fdmq$a@ZYRLDkyHYFK{;@R-L8V+Cb6d z=Qk5Sg)}XHAAhoF?iq@P*n=;z=-TqkPok_(F@JVnN6Y|<`d|RrjZGYwF5+J!u-%0> z=01N$asA6ljONZG9e2OAflu{0gDS}dWXbumT5@q_ z?sgR~gYURm3C}g*X5+TjF*75p&EM|f2H*p?)Hd=s&KXh=69dPekW5 z_}lt7F68ESH=OkokYcp5f#PUMCJ-NS4hLTbUN|`Y4f%+iwegj&)<^}Xo4OPn=#Y2 z2*qlqKA$(Uu&z_NBGS+L)KGWZE-*e#ZS~7{0o4W0344dSmiT#jIZp}CiLz6*zGtfw z;8D)+tntUh>&mm=6?}b0qn5m{WX4vlBk#0H#Io#-O`M#mTup%YteSsX@Ht_{i^kcI z<{8+QAn3#W3VS&;kg&J;rEb0{ocU)s*N-FZcI?iLX}du(>&C)k2xVY*C22AuESeC_ zJ@Nhw_MKv7)g=sJ3PQOIL>w5$H1kq28|zUaf|Yf;Wp}N=D>*a*kpz9(FGZA;0N^N* zJnNAV;9|NtKxe;XL$>*0Eg}3eck0*pjDsBd5#^`Oh|vft5+mbX;r;oqz#mGqQ3bUJ zt$KGEx6T*rjjRFdZeQRsJ`)}O)N&BGjWA+@0;_{HZIa*pcU8$#$f6lb-0#k&0HG8v#@B#DYTE1g1KSzh zl)$XfY=-16Wrq$-?q70gAqg9D=G8y0-Y$G=HrIH#E8LzuvtP9CP~IIq{yd)7F7OKQ z^3tM%^!p;7Uw}qY4vK~=v8I&UfE=%vG_0~t#`1TzL&RZ`Y3-AVFGpc4Qc2QKg;fm~ zCgJr?c^(3*Y975cbvYqcmr2%*xK*L68$k!t)Ssko>r}j-+8Po+40rCdKvq<@{TGsbu0`X+RB8PAWRMwD9Ge_OV*k*Sr z7$YGHcVMZ@g;1#@=*0pw5V_njpFU*Ew3bkaV%h^0NjQBoZ7?9b)laQ6Vw8c)+1+&+ zgfG)Pja_$1s#mV7DZjWZ#n0Z<8=A9kg1Sd$oB-iV6(V?Il3_0Ai!w+)RL(W+wk9^-kH)j>2hj97k0?Xk>-_kM)kzd&dQ5YW!8Z3S zYq4VbVI!hiN@-54LKdgB)oD8B-PBlo>K`MW^hb^jE7JC#?{5k?y&s*-F`6Y9ebEf4Se z3QWx3QDrC8Rbc*WM`!?XNVv$rFjeD4#K>s%o@F?tRAP%g3ej16U|bIS{gAp_HwoV1 zhG9r*P#;Z$~P^PS&G^cT}v|%X6HY3sUbkT_TnC99ZsX;AHLlbEC*_ zs#EOe&Aq*PV+?Z{*K&QQ#6`cKt$%6R5zqvg&?v>`!uI+P_;)X9WH@1F_5g+B^I*L> z!akHqn>CPy_+rC7<`uWQa#;~g{Zuvvz2M}KKrnqSGQ0?x_Z4O-$t_zUB(cc82RI${ zvcJxUTRWbe^F)lXNTgkP;EO9-RpImx5Hon!?x5R7x`}t+=Lhnegr=xb6dxNe2>2xo z?+el&WB1rK9xYVJFG!3r@GGc&Wihs1;Qq4l#2}-fuzJD!Jbz4mqp*Vf z5f=XKE46E~Ub5}lJ$b`g;KfM?6~NNkX8ygN$SG6;U&)3--RlX`NKt}vNsR2^;X!6` z)>_8a<86(0aIn+m!apb)VHD53fh{v(4)^&~=uHldObh=6x!#k3w(!J<;j0f^{fHe- z-@dQ|Djj<8!N6t_^T`D<9rR={q3`5 zDGS0fT&ucuoUVbcuJML}an~-7X`96kFZ1fpoT+}trX8Ekglp-BjXt|fbV+Q=6_&4F z54m`s%Q5U^k1@@jPYY!fFpDM*P4`~+yV#Z?$4@gpwE&e@0hn|j_g-!XbQ3J%E4AFI z(Mw}-CLVvRU+(?^>rh^U)fP~e!*kkPi3!A+>zC0=*@7-4Q+~$WS2_tdv?BHO$PZ(j z{9CzL)xjHEMI)2rfZya5`JiB0!i>|R@aJnieg$HVMo5h3^{OkJA!Wbnc6SKjqIhiM zT*7o8w2iZ|?4I0zE2}v+Cxj6pQdRp~KCT5Mz3X=HCttK8JJsc$(T3L9PZ;=vVZgFqeBiSK4roc+;lqOpn1YCENzH4IB=6VP7ZeeMZAF4#DTV_>0!H6skj_1w&76K+D2Yp!SPeS>rxI7UmKv zJM%n)^iWguLhv)s(Tx*ht7IcO*ITTcd^^4d6xc~V6FWOzCNT7)J`8i%;F3cTLH={a zOb9j?M%i>A!sEFBCzLJ3$gadREJW1bu}?u4^JU9I19+YyTof5zwTKQJy(HUK@Bw_w zQ|(jS$47*REp&X~jOY7CmGC8Ukf3Uf6PzEJ2_*z6Sx+S_R&4CJ$|3@4U=+8SR6PWR z^})+Bl-Epd_n-x)NSwq->x(1%U}N+_AcB3HQz>?;2P8U#QE+}bht$Ea zxb7l7OIF70y$u|%J*qQtr8U5af(RxoF=QKU34?%a1czP7SZcZ3GG$?g# zK0HtIPo01!?VKGR{6ki+NcHyu8?NxX;w0q`$ptBdADEUiIM#gFcMb_kww&uF<5eYy zq0wPmkHfH4DY-380$T%E8}kYJRctMI8jDbmK2tvM5e1ZT2kdVFcAjEgaPxw(_YpjT zus~yxO#2Zd08_N#6=owbUQ|!hsLFz$T>RJ&y zH%4E5Qt;1DNw4v@Z+sp zL@-e&mjiN4-+?rjlkqw^dfIn1dYSCMm4H&!kF|aJQqkE)Cgv1ukMS|GuQD`C=?1BSxqNmMv8z;zAlx(NkGCnUDR{-+F4hLgMD_>rG z0QTj8gxT*%CQ=gu4(tr2fgT>zOpe?QWrXzFT^A!)B@V`)BOnCE-x-i1*K$`(R|5gb zRGNK_q3=F`WlF6vEu{c<7uqBZ65uu>ZwZ-5^qojCX*C0eYMja@-S1mRq8@J4EH7tE z@NuJ@aTe-K_AVoVq>uzP@DS~uYQ{v zQC17(KY;ul(v
  • uJuxO%GMf@rjp)4$`cu)&aezCHU2=ge) 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 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();