gsoap-2.8.60/0000755000175000017500000000000013227173562012270 5ustar ellertellertgsoap-2.8.60/license.pdf0000644000175000017500000021361513227173557014421 0ustar ellertellert%PDF-1.4 % 3 0 obj << /Length 2924 /Filter /FlateDecode >> stream xڭZIs8WHUEp[gܕę;9t@jJTTRܕ\b_8[Ј0,q" cBx^}XX{m]#< B|A)IM(`Fbb'TznjgSل$!WGW$bCL~HLKˍ˺X'sXW[3jwEYf(ȸ^G8>KRB1d9ldB]ftt<%,ƒȫإoq7n6V*fk/2xM{upEA_G"clm__|“xqgd 촼oGk刭^kEDġ'<(efJ/(WSᙄGs<ǖIsB:ZW;Ws20&Υ "FPOaҺh.9FR"gAx!?rVjSSkӲ9'I<;byfa@ds)iӚQ#we#\т(^(!X|;6wl(wxx3ysow?ʼn<B(ma4cn3d "ĖzlMBDL<̴HYZc3 Fx`pX#-lM2 Jbv0O): x_0iwW d=&Rxu`;.AM*jmUT#lztjw\ښk¢Zu(jW;g}XպMg̏ʐ(w6:X|)Ru&E_bhQJ$BSAXw+UIyo~}p{~>3x3╘=DXqg  Հk4HN1ڵu^2;U%1)5kdm\}l «ȂRR: w}{rV2m,$$f%6?"f|h6JQ&J["˯_4SoL̄7HN*nxB3ձ&;u܌ԑQ"ac/M J2.qzXhҼĺ ١LOޜL?#EDLcRּm`moțxcNN ,f [.[ӄ1a1fȆͨ4ڲ7e!׹^[&gk1M_ڹM\Bky{'M+ b>6ځXr;tL5RەFԪֻ?."~ ]V-rQ;0 իpzuu9%kuh6r<: rTs Uf6]go-,r}%z1{ݍ',t4F P":1A:(TU7_7źl NKo :6O40[$n ?-Vg.h T BKCqS\[4ugbU!IM*YfSӐץ_& X'+m3v@ύxdst^h|(ts^e殶O;a.R~?6_LM覵kYzBlU]ߦ_ak&74[{q#m.鈵VOBjX'ɸjq]x@6'-_̤3~'6Oj4U̸&"_9s{/%_:A)gIQG2rR).s=>ndaCe{L@rƔ!=ye_]TLTUˮ--etmi3mY$Y;KٌwVK5h~VR"3Q_u7Ζ^ʹ+VҡlF4qHwPxB3Hky_+Z)d8eЛA:*(;p,6g|*(2OШ{&$8"1mQnmk3;y͉+X,,\6?-^=K`{.VڢJ1sCv觱^LM"A["bkb&]nd{Om]4XeM<{N&B.h͂! ݃}?' endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 612 792] /Parent 13 0 R >> endobj 1 0 obj << /Font << /F32 6 0 R /F33 9 0 R /F36 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 16 0 obj << /Length 2945 /Filter /FlateDecode >> stream xڵYYs~ׯK*`L,ykM,9Ȃ#׀:U 1sMo^e~vU?0S>tx6YC#v\otx7M^ ׿Q "$* Q*o^ޮU=c'Zy" D?SZGspJU}oJyTUIWE3uȣO&YzǺk9V48Ym(>]Q ti` խPU;MyvFE;Jm:svMZ^!oLJ3a⍻V}mﱕb|I?<'sc&dFW֟@$U*MʋcLArj*dPEL0:5(-ٖIL-5nY(KLGǒ]c;CGQdbN,s®cu[ iDBsui ÀvAVYo@`uqTXy=bhuEܯ*M}X,F N{ӎfjg -(`0.75_4fa7x n60o% ;/I2TK8~w7%|xs&<sl;n8m)?N!XɘFbj!aeڡ9^FťĔH"~z&@NJ仪Hu}5h"ؿ8퇑|۲;j灕I-pݜ1V"ܫRB7iG!b<96Q`j` Ǒ'|lY/wS{ G鲪Ctm a`=tL'tYV/gSA槩 gqGwKpfHZk"UX0}"ȧbY$3rRj3B[Z^Ot)v4c_ =Z1f(f4t~aF|x#?M[@ nu5(eDjd?@6\3 @.$"al0@<8 9le`,Ӎ#ivڈGnjBR"eGКzQd컏?t^ ow/A:׏>q-z7 b*9wwvm\Fhm! n6DXYHܖr8HT8Z_JT0Q'p/G.}=*8®OkvP1b-&b9®/ԗF#Hè;FLq/lRRPTӃ # \BGO!lH T}q_|ll[`B'+0c4Lt,zJ-bS,~K$N" =2j)VBi3{՟!x̰ kvKDu68&)uh['3!M*t)aba , ȱuz9#4^qa.B_s+N;Dć|@Hnߩ ԼͲUcHpVKU;ܯ95oa/9 H-PD b9\ ,}r+64],#D' Ƃ#ҎKM&oآ0hõSX'PcepGgЫ4`oT˘:,,s47ڒ7bdqz1rہp"._L(<Ϗ |. ÜaMDG©絈%X8$1'_w*9;1-\"4u9^Bf*ؘ߅T&&8ގu4fdcOרٟo?(8w_!#43WҾF_? w{]3*(Mٖd걔Z^L?Ǡ&8HDw'1忘Xc \A&4ܢ endstream endobj 15 0 obj << /Type /Page /Contents 16 0 R /Resources 14 0 R /MediaBox [0 0 612 792] /Parent 13 0 R >> endobj 14 0 obj << /Font << /F32 6 0 R /F33 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 3798 /Filter /FlateDecode >> stream xڥ˒>_5U;4y\o6ɺıR}Hj,E$}W" h4o>>|Wcvy'f˓ ] 4cZ5QzNuŽٷ͹;uI_?~ ZEydVhtFfOQ?j_f"@TF!A#qD+p.^tDU3N@uNvIߵ/HI%*HL qLD^`F=Gn14仦Qfu2<먆GO$YXxb/:?JʽGl2Y$Q`x( %\8^@'q9! qv7 p _ @e`}4n@'G3r$f \|Z=$;--8Tck!TLC-r]No\ڦ,=Gpq.KSw0'mOH o4'=QHr&B|,Y-:Uՠ-ëuw:-Owc.UX{qTǖ@;g[[axRU 8H3#4M}xApv%Fio?pC<}v/?ߝT0Orhϓ2 21Q9o xwhдœ!QBL?lOr }k!) z?% u)aPs`o<m͜4?.K~RĢhOBRCkWW9Ù Av6$hEQCT7g/A:"  T(a|f4qp_uleq%@ uZc -N|j|쀳<ݽ\cEw/x B ,>s=VvhEe:YihtaDrH<yd }y0i֑a c^\-*>%S;>>ю"H;I=Km:OL=i<ퟠV0YEA bb0מ D1FhtŹf&y3lmf%MT/aŁp:_c-upwLY3* "R͡D* q^nGVt8tg;k&kmE`SLvI۱%沥U|hpd#Q(T- !aё#j̓DIO T@zyK_0:yj9Z1rSjf_CH ORxHW 7/5D`E),S σ4oF.*@9 ӘXHz#T27q#2*q3 C{=Uܨ0b7HV`~IdzjЙ3p2ZRlsSrPfvh dǍ뚩%#fwǜ:l"7(2SgO=L"2 L:Q nF+ wa9f`!?4ߕ YЁ)'œ*r}# #DVz38BSYn;<IQϏ#2~f"NPG.ZүDK(ܹ/1@t!{gpkfFIzv V'T<-eE=atlpS6"ףn]}!,'BX ;;v:#xʄZ$K{٣#+3$ϩƁϬi%<ҭO8dysc%33tHM0t  0q%d K$8 D:_Zm7 >m|Obc[޺$XhGpZ`]KlWeJ;*gYp^ٚJJ % /|z}>ͅ"ĜƧX='1rkaJ xb ة{B;'&UAF_Htb=7o _=4Xr兽hquTW_[:_NOmx&1ktV bS+s@N//y- .Ebx+mi`J?m!4: DGH=!9?(_IJ\F٤ +kؚRRT:fZ$A2C#X߮Ilü K-6א5.86^:B2L2$]lќ@. z $%|*VWij!1%(3BN}#ޭAOn46UX[_=^?KJJi]P1#&G嫩((rٿKuSw چCWα$DG!x<iǡ6ӹ'PH8A=*脊2 y8G#C #!D4$"ЏO%ڈJ [>s)|ƯLs52%A ٜv[gc ͊ͱGg|"֕X1Kp_EgtbIQJlS1Z, =GLfi@3μS +vqYrѨ>'ӼɆS4Hc'sj 2:Ps( n{vޚ!M,v{P:ǼOq󞹌i[Qzr8,FsE-Vۗ#s N )V5c^o6Ψa.2ճ#CZߺ+&[,t$:wa"tF|"s0\ m`v< (A/CV~)rlXRJ7,Y&EhnR.ENDT4aiV@y>%8%VH)K73ˣ1lH`i\,<]ҺrgWIG|ۯG#ʮD*7+?g3֝g endstream endobj 18 0 obj << /Type /Page /Contents 19 0 R /Resources 17 0 R /MediaBox [0 0 612 792] /Parent 13 0 R >> endobj 17 0 obj << /Font << /F33 9 0 R /F32 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 22 0 obj << /Length 2922 /Filter /FlateDecode >> stream xڥv_Gq](yb@h`'svA(D<ԭ^˛_l6Ͼ]֭oa6 m{j[X D3ÿ7M=p]"e` 6OZ D,3&2>+[PRH(jn`jJYV]L_ˈtC›pycƭtCAp1pw!st[>\0ۅxdg:?}%azfmPCK@"$, -G qpD붾k<|*hR4KqN=c_v3ojg]I#8OHj~_0|S K9Z>ȚDdyN{-rt4|Mч6R/jKAo<QUTÙV[i$  TiZlfEw&,- жK *k0U+=ń//\FӋ?ʚZMi5xYV0$*Uk)0Ȃ7+hMMIp#T ZPpdPxk7IޅqJG:@L ہI,ԥ94ȞNA/m T+` AMg4H :PZh3j?n_quZWJsVڪ-:ɰ,3 gk )Pۭ=R^ZL.?5YFÆBťqz%otVM&wu6C!sEdrf?yexU`&&69 ;c WH+3bN >cḒj7u3}W՞eV${aO!JOԌ6L/Ak6&_&ov!ᷚT@By9 *#8R9&6' @ZH828@p+!dKfKRV=.pH/V VykW)z]iϔu Wzm܆ttRDdAo4gQ U Hf5S/>KL c`&msQE Cg~)O8pHRPB+ņ&(f,5e[NEyB %K RacJ&7m=]T,1R5~P*mZɯ~U{W~MG iw^<-{<ߙhbۗb{(z rwb4[~K{8l@LB, ,Q1dq|oF?}aS41c=Ȃ?aT]&]sY6 .W޹x@S[gj) b=Em*En' aFaO9a?ї[fwi!Z়^e;3ZnY4^MG2Z '8jGaw^ X Ch p\A3-dz;k%i e1(@&!g{8~)ålτm(G1=4xL[.FYG# U̦$0NW E[ 1z& A\:4>_$q64yNeY 2 yw<X*R_suq\Z-k(Ӯo4~s_ib Ï w!i`E)Ռfhq =/ɿ L Ma#R  ]a ph!0'PfL}90^略L']?fc!D6>R8^= ˖m@MS>w endstream endobj 21 0 obj << /Type /Page /Contents 22 0 R /Resources 20 0 R /MediaBox [0 0 612 792] /Parent 13 0 R >> endobj 20 0 obj << /Font << /F32 6 0 R /F33 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 3198 /Filter /FlateDecode >> stream xڍv8r`7$`mY8 ?llJ*[%!u{n/ жL×lKߵ:F)7%'*~deyVq̭|qc}cϗyD@!l)#[E5﹧Գz6C'hÜa&j%XL-V8>HGp5OIҷ-c `91{1^l_x1&š]mP:<H?t.1e0:y zY42?0_-?Mp$P#=B -PWAI H[ffy`[*Vu]R),TeZmb۳6ȄD(P`%(b\--gVtH [<';/Ќ`'E &yRl'perEn2U K,kfɜ[-Ǔ 7PӠc+hKq-bжEg{4NX¶~Vh̹NO ΘULZb3 t8k)/KqDgIi#*89E&}3&EЊQ=;"no%cJ8Lj2J[C^L-9v 9e qVWyGcRX,Y}fWq Ղ<.SAbrf0hй 3p=]o p(2{˳Za9ydXss0"5x"YIjtU?%lj$%ڤd}9/pKEC!AaH0ьE&ktZ#p؇,W9h öy#t ]&Ceco?q4}2G%K };Ө+%e1ݻXsXLJ"֬Vz|8.wI6+PCDeU6;N[zGcG⟤5 +rāM,oWfc3P !&lsf8B,LRXcKjCV=-](_Wó:#lI7o{9G&Цk1~[ub/re|ч7ZNI5enyx١UN,l<&HOۮcaKwooՆ1#8呕5-+?b|ǎԶ{^!.沋JRpՑN0"5^4ᷲ:2ȃ;|<9{&¶k1/%1D^ rlA#HhJf[I9p%!(A*g녦~Y, GoжL; {w8Bϓ.&3: tZWCqGBr׈!8Tό)Q?3ڿ!wv+wC O2x+mTD@dX8V9lL'49S(#(7)muǡ9Mb{6JRޡƱ<vM#.S "jϬYŌ~>Hx'+@es!s%8݆@nCIdWW ܷ ^q:싗,'O^f av\рUD8YG#ʈMԂǴ;b$0z+9 j (HNA_Jf\R!=Y fsUޖxN2 7ՎW,ڄ噖GD4f#w:a¡$U=u;F]] 3ިӼ[ߙ7I8? Q4mE1t>_Q]En-Зhy ʝ=GqILQx ] W:jƄ}rY)X 6ctަ1owyO0D>Vf7߬Лm6q&"WxNyϠgGu|q)w{ܼ\+[@~Vz ^=d@KA4V 50!9RCI/G{fJ`z3x8QM+/ec-4/,W7&5_/:AMThM = V~Mjݠcwe,='׆Zv_j endstream endobj 24 0 obj << /Type /Page /Contents 25 0 R /Resources 23 0 R /MediaBox [0 0 612 792] /Parent 13 0 R >> endobj 23 0 obj << /Font << /F33 9 0 R /F32 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 28 0 obj << /Length 2815 /Filter /FlateDecode >> stream xMwH_{1Ms"$1?^w0]l<'+ L{%JRI*U͵l6Q|?TEխQ}KySi-y($?|Zʦ!}"֤ou'4#(Z4td V?"B#8TG#Ƅtw5~7RGc0Wk&ltiAW28",ʼn;?m]rdc*<~CWK?. 9хs!& 9*| H}tU ~3Ƥ5}g 9>~*§n&P6ύ]67#b3:pFs23fC|àS:'YY) ROLH늮j?S10L3G ︁ Ccr^|:b#࢘62u[Q(^~:.ѻ Uڪl{4U'o=ql|v]k-i&rGNWߐ2 4[1t=AJjL kBRpX~,4n 1vPͤ4@n:o|&-zf23yMdq V.ֲJiӔ$>' 1s7jR𹯐iٌ%!.b ˊ:O;T(B&CK8 ljڢ,ED.6=. Hp"wMNhl|UaJ~sAV}ĈQPтPAt\,O߬h9 x&ۤG{znlŐ/A(j:Ħ-ݴ7bFoJވx*ݛJ`9$ݖOMTݷi'cO&]f9rj[k Ot\qeD'"؏p1 dP~|;_AfY.@0'E.A^kJsdPdM' pUȏ0Lb7m׫ N#.5{NZͥ*);P@Ev$G[ox nȤY3?fW3 [Y.\$:S4oQ9Դ'"tn8MzJߟh#i.b#}j(S IbOTk<`vuz Cב%YR~OVP&Wd-!dτ}JTr6>j^ޟ<$w%RG#҆|%7yK`S-VY Aȇb&?L!= 'zݩajyE~naDSVIj- kJyA!2EUw:O(¨kِq$\*GR"<]< TA7;! 7X85^hj|Wp-Iw8uxR\8kRy|?Emk sA,Űe?⑺bL-h YP)O_bLU@SC&~Wz0'>U+.28.[JCdf&(xnu!nl/ ߽ nJb=FQ{2Sޠ+O&bly-:{D# }]e{k s s>s`t#OB$? ?S-mjK:SK }:jfS=0 U{7^*qMҋ3E 2?|ʅ$f~x#+^iȱHe"`nj*Tb ;O;A ({]_GW3j\q+&3ԴGt/V<R4f~ī2L!n~9}T.ftk:K0QEW;TsuOqИKǚH)NPIAS =|=P#Lݜ<EgUx`yKy\/P-[WgV;/ C+j-%Qt섄`oCK|C[rK'ƻd+(j3{"aPPhj Eښp #g Y n`jo`< |}bv1>yDId4(ّ'r~$k䞈ԑ[L UM{MQgڳ`tIht3;_[{?D%}.: 1')ᎨB=q5E>{i:S VraJfD endstream endobj 27 0 obj << /Type /Page /Contents 28 0 R /Resources 26 0 R /MediaBox [0 0 612 792] /Parent 13 0 R >> endobj 26 0 obj << /Font << /F33 9 0 R /F32 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 29 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 11 0 obj << /Length1 1612 /Length2 9044 /Length3 532 /Length 9892 /Filter /FlateDecode >> stream xtePݶ&AChqw$hp@qBp Cp ; {uΟtUW{ɳ79x8Ej` *¡ q<dAp0"g@V9%#"":z8mlfM=66Z,VTVy!#uxq<@^>!SAaM`xyV5;FO-sy2y%Ϯh!VO?nKg'UO ע@ KXxiFϐQWrOjl2hUb ΚчF=׬[}$L퉠_YTY: ضL>K׋:RYA1ZziF=qtKxcTM܂_@XsysK4&+3p_/R:^YRjq(hڼL30 H]pq. 0RZီ1;`h*zՋs]P 2֛N܌7-_69z?68R2}ז׈hK9. XL =} !L. v&b%-K;~jf,:+-L,sI &0 n2pld^M}pjwk4`w݃+g)c ۉMX GDEVdޟ)q>aWJq> Tswk|%ms F *mˇA=CzDϝr߲^-_Bj%@B[Yy/ROnsޡCэd#r<ܑ}j~+NB QJu:%ݔS9Srɹ<5,Ͳa[+f>Ζn8WWf| ?ECBy;{Jal'ϕ/8S㼂Sܚ4mNY i0DYRm-SGqÆ(,ɣ/Fdfa?8l0kAq- f{eFiQVY< V8wzio]au G ވ~4eޙCz("(ڞe *W=[؉?( ymܤַ;306,W8ݪFm6WEoh%hYt w'n7dhRCs$x.`!aYSM%>)Pk'Тקlv97ܥprTsfEԜmv߳3~zXR=3##8u|-_ݏg}?`ҹAK:xs(̣5$}% VHDiPKSgKsInd05"S\Ipb7}2rQ-+IP*wׯc iհ#[*qmvJeUyaZ4h\N=ϼ{jLtLE%îN?6 lxpg"l! I)ϬU4]Yo|,\B YlmI. ݠSNlef47 h36}SkS)Ѫ~cLl 1r`rCr6$(sAlIsO$/IšȔa{ӛfa ĵ|=sl qǢJg ŵw?LHݕKj_xl8>-OSK _GxDq "(NrF=dҚ_h×v<~lqx+{LB)!M݋ SSNjSajv93Iؙ<Kqe~)): q^ɬBL6Y1Lrv  V`?^`ҾS6! U)gEEq3,n~]y.\%+p er:\s"gƘ "& 4ڬxD ^,DdBC$/jxcܵ_p&p!f3X  ')+7vw${s o8L>l31au`3(:B(Bi^Z:se6@0װh?X[%[ؠ=\f3]2hK ,Qf>˛f8V?2Jv L@j;\yhw3VIe;@`=@s_Ju}#?#Y&NٜD &Ź[I-R둖#=35'}/G8zͳdkiS>eu5{d~WCrzY'ޣ[zZ(aoؾ,r (o^%(6ӯ?F; `-!cYJsI4=-ɯ}Z60Ak~r>a:x,tSk@!Y9Or:˄V % ,IXUzjUV-^skǽUh-8Ola =ô&"Ư̙sњOz;rڞse (g!`>f1vr>n$(2HRҵRZ { t!:H@ ѼIfo?]&yɺ~>SlS.@<x;P8l:XcRûqdHC3T^?Q\{ :bC3ymeJZ~V&AZyޕhnPz2lޕ#w<"xA:}ji}\{ٳ}J-kB}c. Fu[΍wčSX?yz,.Ń+aYV ?~Npү7^H#DuS^ \((2$9"YnYҶ1j^Kn]"f/ƴX0 qUھT6ỴHxBʄjB?%,zj'6wp>c7 ޕm79P ,<j*FDW=Oz6Y.QHW* BFhzbؽKEk哓5c%(]ۮϚO 5y'gk'RcubpgMIj 6 *m&ڑNJ$;Fx$ئ0( nJ^(|׬`! ({{_T;N 6i358tE,(M ߠ+԰>WNA}0H.=7}K|f.ٰuM^Ԩ/$, ?uO%BBpFc<+o3gIpx(L"}uS8=p"$ 'RQ冮Wv Dh_JIQdeyxF.Re05)vxFQՑOcm, Wsl&މbn,n%OuS_EV!Ȕ9> %XFJ9S˞˼ z3&)$_qPDٍOK~ůKǴ]^qm*ў7J {ÄWٱ^.ZDP:&n~"e_-슜!EѸC,ȳmB8=`&aBbz$Œ]Ѵ伬>H ڲ|h@ c#M^bschUg[uOO Gᬖ=e6hxnb sktH6DB0*ڝșG?bUt[dٲe"1OT=ߊ9mRHN"}}\p-6m,ȐGxRMBX]<CyjqqAn&h?)38̰;ZTMWo<3γq oѳW@F)s: CZ).sѱ}"@ʰ=v7|1`9ف0}C-_i^f0wmƨSd ޓ|i0 Dn-Rޞak"1JʏOjP)Av[N-MEMx#ՔOiÁTGeα^ڔatmL6Fyͱ9>4=ZwN.4 õ;ӥSKʥ%&ICc_1?ZT?Xk]qG aTQs6K$2*`;.7,?ccZ f%Hooliqme'l.쭁Ht(y؈ -]lrH(d2oPSv{1v&Ma%)Azؖ' N^RT֢3 =ߴ&Ǽ_clz2oGd2 C r,+Rt*s/z7Jش4Qu X 'i$TcfOMoE mxC)az`~9_;4dOqϐ? 90y\9H~Iz}<-nnz%)p*K@Q^K㰞B4Qw\` xx/X'u'DBkx0ϮsKrпC9:Y%K.9$R'KG$ @}0>_zhRnO3%&b5Zӹqͤ*70@`KFb5C&z78L67c^GgDiC5ܐh-f*EƊTub}yŽa&ruoO5Һz[њa?lt΄!, T;MS~|鳊&q؝2ƈQ0biJ0>٢h if˪ 1HcS46X1// yb۪D maYePo 齜oB;%j[K :`W+.ԹxL}pdҺMzBgfPu` 쿼QhiB`ۗ#Xt:ޔ*Zݘ0hHFj_*jLl/:$nMiQޙ|-E-%:e[t(37p{zt|4*.٤uFgіE+:%YπdOf.`c(vpTh|JI/4GxG֌'.3 2|ƞOg>}L߮?owg/`Saxl">&Ubv`!9w3\9\'3GkowWNH*~<߈Gp.O|=ό<\zy N"@~$gѹ^j=K@ JeFf ~Ԯm9CiBAlF:QjA*ꑖ:[AI &SUvp_6rKegRweEeky@B8/3IRk[4p?<>D\w7jV1hc|'\{>b%4} 2 Og'")s鮂5aVݣ'_n/ ux!V@R5.8ˏ,UK#%.SL.4[we~LT+m|iPM=~iI gFh-͡M{lz,Z ?bS|Iæҗc<8|%3KF*i=M(.9TŐ~_|Me|CH׻eJ:$H+FZEۊ1Uԡ:EUQ]T%<2lW)XЬ0VVٲ  -jh䃰;%i/3 "`z b<*3

1oggB!Ps$ov?mSz0USFLQ-[r9S|[gEMd=_[$OF?@MvAeRw AKG Q4۝@HK,4lp1+*Y"PYiI%+"NJ7D;y{EmF]g(_KݕX]V\ #Y̮.443b"6 `B6OXڃ̝Psg; endstream endobj 12 0 obj << /Type /Font /Subtype /Type1 /Encoding 29 0 R /FirstChar 46 /LastChar 119 /Widths 30 0 R /BaseFont /VKWOVG+NimbusMonL-Regu /FontDescriptor 10 0 R >> endobj 10 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 /FontName /VKWOVG+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 /FontBBox [-12 -237 650 811] /Flags 4 /CharSet (/period/slash/two/a/b/c/d/e/g/h/i/l/m/n/o/p/r/s/t/u/v/w) /FontFile 11 0 R >> endobj 30 0 obj [600 600 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 0 600 600 600 0 0 600 600 600 600 600 0 600 600 600 600 600 600 ] endobj 8 0 obj << /Length1 1630 /Length2 18356 /Length3 532 /Length 19270 /Filter /FlateDecode >> stream xڬctem& wl6bVcgǩضm۶m;}q?c59^Jƶ@ [=3@񇭵-௜\h23y@c`#ڹ9T?ԩiiS ?4=MmVv@_kGe 2ḼQE%MiI*@ht0(9Z̍6@j?92vF݀F@Tt;g# [? +!;ۿulAFv ߨJbdf'_5䯥?%Kd`n]A2 f`4mL3: /?:KvvVn2acf7 ?"mcb `f?t@5ꟙhǨ` @2 B -de``wc Y4V?ks+V;4o[mLRo+Xdd01۳UmV6zf&S1376t+FY/CRqFux3spY޿ q߄ @u31ϓ15gtA6 Q998%_ oq@#E[#TP vธvo7@z<*.mr@IS}n,+ʮ$e./R< 6N?Fb3y-H-&?ޠ &X^=Q:`=!y%Ec4䟞Q?=R t@fEÒ:C"Rg j{DaIh9U&33I4?G-H9`=7PZI_Р2OH;*$;Yw)f4q>W 4Zk˺3Clԋvq ϊ r5B1Z>I^-;X]Vޢ=\ A[YE$uIxxlUbW0 A`S9YlBQ{IˆKgqfTW 8=@dH;W]yxS@=(\ǰ`tWBs q ӕu ^QQYJzڐd+&?Ź*e%,MssYSub6{$EO̟Oܦn7`yRMx!5̐"?aMU3 i3QH C4Nj{Qo7ffQƽ-,G=Gg&!$)qg!m/˪ T`@q뇯vj`Cu`MXk/eEDH[}H<_c݁G@&\'FHL#kfCW32(ĜBϮ>}5wjˠr34=T!4ݓЮ H',YQC7)p(wEߖxtark`! Pc R:olBX5O)N 5͓Ohg+lI|+-=:skhrpS$'|r{̩1N4Hl`J؃~Ӫk 7= ;M sL'hd ZO<ʛ4,޾nAy>泶@HƇWtqy?7_ӕd''X37@UI/%14Mv,x y>+;}eY־ǟ[qg^ 'gZ~8ԄBQeZ5F((lvT7b4ɷ~E*.#ihۗGIjsA^ [A  gw~30tTG]o:%i'' sR`nL+ m{ZM+AXlf˗Nn'UZ7䟦{uS*lAOD9*vp@'!`nGb:I &GQtGJWL-?%0SD#rIZeq.cc3]'Gݟ .1ɢ Xkj*(||}JсX&>{|"g)H/|RcobF0=dFK7'c**Ӎ(DӸM76oL#~ ,-mQGJ+^⬸]P ~'Urn]Z "4L_(jO ŽҐ)h8gTpx_:o-5giFyR}=}ٜQ>U-ْALόTz~gքr̪;wR/Ó.f̜}g4ROVطŮǪv!@ɵ5Z̈ zP˸0`r0PDduyx&-xH E9huƆ:ȋ:@Lq>!м&Fe$]s 6uddM~852˹&t:cmSh vXq il L~9x=_Q'hc1 |v]z5fল~Uf@Nlܱ-N8 oW-1)Jbmu' TJ'ijtfsktHմP.biݸI-E~A 7foxbz_[ѵ|ˇ \􍕋Ѧ B_ژeQ 򒌬tkp tw'pJlSe5D6JK)plGq>̤ "O 6ǘ#6TFې $:wc]+Cr_fА]3~&t9Q$O>* 2v =ܰjXagɸex&Ŧcy{'1kbWFwBHNs%9 3C}@ w[ P"N(2XL!XwVrD-Њz $[.9Ѥd]n4ԄOtfM#ۼEI}AKɷ E3-/ אQƒxrNX T! _$mC}~8O~I&x8eS-I#pv2e09`@+Av(TWVV+tQ I}@VWꜭ ʟ~~#RYfY|&UgTðk8<!D{wYEжȉ?| /70UeB ~˽=P:ׇYKNbn8jc[wȬ=o%ܳBxzm5gpD{WV:2W]iEؖFޏ޴a{ ٤ƍ2#M,'Ti/4sW; Zw $G}bٌc5W_[{Vq*Z>qHDZaBfplĜN|Pt~h)*1XѠNfK<_ 6ÌE#X{b8gw=4O(t$K`[6Pq+!`=oT) cs, `C ᕎV3?N**e}3ƋoSRONdy4-ƕPG"2/yľoqD;^ܖתCKaw%W[tMx㮝D9xFhr Y 5JHݠfFˤ0Cs,; ]-Rbz6HդӕMW,~jj<ÔԎ)}R&e|gǬ[Ic?6\a0"i:PC2sDR1Y4sƁ|?btgo$HMY%>:ɾZj֢+5xDK᩺h$ ]Γ~tRi rgW֖b;Wxf"*m0jw b")톮/<} >|ʛm W8urI4ݫR 3[mA2vr),=n)1P4JWy V5oUW8aroi3|ŗ$Fް$:CUnuO8KPj^Li9iZAjBm}_(h :]Nޫ9~ˌ¼w#/kLt2~D!VS淡v].vUn54QDiվ{:D9[1o]CdDU$z(楃@dg6܃\` /ub'׽QSV0Od۠]DײcAIש3ڨ`à d)'`* 2jrQH:\KXlpE{ 3-Q{-ߦJoz09:,ٚMPegxII$d,p+44M!--P9.O$"?eAG\fg}D4 lIZya&w4&n M e/H13䖽Y({3 12HkTv$ z9Djj;Ħk֦3wW NN,t+ӵrrhUA_t ghoK,Pڸ=r:X(K§(]+<Ъյs)2M B33Q\4{Azuq{繄#XLNFS\&]* y@_({80w_qzjAsEDc ZtN\;e?or{!|}q1ټHsfΜCޠ0$= .8FbUǬ |ٹ8sI%8n-}s̎KNTBa7mJR4P_&u9G&a%H/YaIEhd}]#is d2I@pR^mqa}U"cJ To߿~ɸ#Ҏ)@3=g/+@AdogcQ$\M*=R1§!XɌ@pX4* !c!3jc GFk?K>}sl3.E!'I95gtR}o.`zKP/S%faoKz{tIP,KE;yэ G~*Hl7f5o~.]-c XMDpUyw~#铒#ƇR{җ[cRJlӲz簾3q?߇KoLpe慑m"4s""!hv+wʋum dx~vБGӥGCD<>*{6v̝z"#BGdɡ|tR]F D+|R+كaB[p{`(< ;$^ ' smnրTy7?5Gh< hG5*9zK UfW)j~Jʀvjb6*v*Nf,$RivIJ|:Ʀ$阊z)nl?qFXݬ `rs7z'P:%?_ U9ͅaޣ?u4S* 1H"&g6Jl:\zN 0ހr 7n&㝭"xJAo=2F.˴ 5|\hKO`=a`q. m)Fbj]Rl݌6oM譂q.ue5`:Mӂ=UrјB+;r$;qׄ 8ZݸaYkn SI+G ]TQ˰l$8|S,*7ky c$؄17] ̻[4,:_TF(# ?-aM7'ץ/*%.sEgTnZlVESH5p0rm͚s)d ۪(vkI*dBS@VvC mTP&U7[摍x7u70*;*W4~gh-j<١@6I]/B->eܯg56W|$!j*% ]k7KYTNHeA}I( &87kOR晉d +b>"]EI7 9xCFE Ar0)Woۻ l"r;ݮ[]IS&t DNc*Dl+"1ɠf #碃eK`_!qݷLJe#g A, hڋuF~a`A@3y*дV*5cQZH,ZTd$i2Bynz5FD3sLIyG$~Qr7b r^|#feZӗ]V'B5)ړy6^5(kBa 1'+%GE/RɥúX+jGI%G#=SÄK]LLƾLܥOh f9PWB, ˔m OvsݔYc drX8_`%Q-3tϢGfvW #l5ޑ_'mbDl0/[H銼9]rӯݴ$T~[n[2, `8)睗Qpg("F3o/^k:B|JIC]0YT~B.yL :^{-p,6Afs[ab=՟9J C~aĿ"uojefpI5p(FNsMLĦy l)LƝiS o?HQJ$jH d!xKo̸}Cp#m]ًêaRǟA1u0N}WJ7E!c͝mIh}@WEb}Q~E17/&,FװmǔmRU!eH[@<owIPh4c/˔G+faoW!0YrRDXow3cln'i. >t|j /mgz_͂<u* kZ6O 1~snPzzyzj4B6I$GKH℈è.m'Ef)mmB6~egJ֡V$dɎD\sqԇWXfr6Z^; <ђ$'-'wEE0~DP]HJt3OEzlc:KEH`iݐYq~3;kwFW.|s[5(e EvY@'| 0Eg ;Vp3lVXL~U{Ton8=NIXWT)M7GorC]]..Xm,z "%'4sDkظA%x]|L3߻3%l#s^[=|ސֻ ;~MW??RժG`dEkF WUI&m}ѣ4L͎|1 U*2&NM+ q9f:IOShՀ^oڰb&f~M%[_ b(<>Tdg>K.PQC7f^5cGlvif1ΌŜR ]fO\F9&J5qzޫ%'T CАc n oxj.d-SXf1 l[(x,~"{n`.0<6}$~k6 p+X((9uC"7> 2dlimXFew07 U vm\(4s&B;2*# F"LW8}$gu/sf(񲺄~?D3&yYz z} x]g'In~53a䛩U1r ,IyAW2UWkc%H7QI},J+ :fC@ oKpYb`Za<~<3`7}kM a:%**-.DMs$shu@\|3-;M\ "Z1C};)P·*p&9XdX#H]A|59k`L&ʗoBͮ_%k;w9|Ut[bl#m/܎a7tFbj;^\P"ukQDJ'WCөCcpF3ڼAH]Xw} d͹lHCL!9 ]8IDHu[[3SaEh.oz`蔌\_"5H1ӈYN@}3͠+ "g?ePDxy8#I8W~S"ʣQU0U?Bfu 9JɊC"sK}&[p2 烰̲!\2p5hkp*%]hFeNœ\9]N5D07$0Lsdt R]1VR2(3?RԾ1KH #bH4qlh_8e5WUgU,pfC8B,LG úوmC/ u_ћL1Bc1lc`q4{ ܀kBТנA/0BVQ)Ns 4=l2&Nl(h93\gQj`,UlDn|ٷF,G @iZC KI+H gDoe^"Q~2X՟l_ujHHiGs#&px܂ꝇoGcr(Ԗ'm= qIqr 3goaݤdӨW2*ܸb<%>#`!t/#>ܷp$ӝZ[BNWBB`%f9 xngU(p3~}a:ԥF 2j6q 8N.=$3||iWU`-y 9MA%wdF>?,!wC*S."z Қ9 >b|s0+Eu kĵ6IQ6WGny[4=۞{zM[' )G ! RhVyLыY7%š #d;įfdX9_FѺI]<״PYKf/ yI0钊H9KNr=IhzouV6cWf[ *˵_{E,!XE9A~88AB d!MT  krc]b~K}*min5uÂƳcUI#> J[~P.Q W4tXLn9Lw;w=k(y1c&7ߣߌ{!0/+K:}#JE\ض}BsT1Y(ҮZIі(Dϖ;}`.EDԀe0n}?VgxTܓuuF"0ƞφ\/ 9OܷBcCm+ XbxJM(i=?vgPx#JPK4:H9'1Rܟ[1˵R siocr>)Sk4TsX)"Dw& 1"эDsதk#U.- S$(NS&`9X9Y1U )Cf̱A= !r߮[_O.ͤ  arQ*WDv{:Qf|xbd=nN(οGoeH%ެgIs3ЉtuD_x9 >οO]JՅZO#Ab`͡}#c߄͉̀ȾœE15HpTT,OI ^1IMI(ny+UQg !H%7Ţb7Yr_Ȱ"@pJd rK1kz-q@% VD ƓVLcsa'K8Ob9D]b03YX_g[rj.ݧ<ꫵT~Aԯ#Hi|OQs"i~cd۬:s@~̝›_i{]A*251"=qk_ %%^U"mLvl_BDP/$ˮZ->_T( K:i''$_o蘿9O Љc-ZpQvxqzn(J/s\A0P>?6.+oC$o$zh3"Ձ@.Kh%#Z뤵/P^wZ)^ QGH?{ _~+>& w׋>FT\.S1;9]!OMfGDVNU44!s4Mb+rzTѱ &'Q@9!bgqP/3jhj*FF-UA<]t1EW r,6dUWM ɽ$>ǐ^? ȷ^2W#s/ۛ㈘2VG &@h0zBe9uyYؠ19@/jB~p u ,93K7|Bp!o)D O!Ublxp}OXݺYv}~aYS̚M616|lO(Ws tv1n}(m*9n!vG2 ~WmTY1|Y7.á-%`4-σxc 3.7cT4-WY"̺5䯐,eCo{/'-4hhG@~؅IAxG?@Ӛ-JbYs4#/I3`m_ !LRrIxv{RC<&iN#$b78T==&PEsO.y,on*6RJB/RRn^xN\Ӑs5>j؈N|iRX5yNimYEAGג0Ka x,WޒVBHaT%9W mu*i/W<%{jW![&&f+6{ ]8d# Ro]~A\:b{:Tp\R[L=B3§͈,Vwa'8OxH(nAN*}-d2 iYm;h1nyCdL$wSȒrN=i谥ozS(Aq}Y%uhhi_7ZrFgEs}pM$ X86K>r4۞͇vaV&چc0 ܤAc-Eo3wXf#R 5er0WgpcT[Q73܉M:Myi,OE8amrVcSDZ:#V}=gy(,F.p7;viN' &-S4|.]7:#<}'X֞J᫜hQ&<ѣ~t}OO;9]}c x \)(>*-Ïf8V50|i{GE35ALuP-z7N]am{? xt׃іYGMX@0 .NWڮ㚲%΢l ­{DphS ZT˟nፉ jh'4MApv9"ݷUءzZw Fv&DRP0yz1|F0bYa'4E=.a%o昜8xwIc5OSgv6EJO:w3K+2s6Ftvڻ-s9K8 l@1o!?>KupqB&0[uw͗ݏzaxXn#b?v1eo,6Cu$ݙXSpe'fGۼ/ˮƲ=i<nMw(ip쐹XM&ti }&P%νZaRhfv\()X"tE`&kq'wdVқNƓ 䫶7B*Sv4״O,:P^-_urqjX 69#k?G6u^v5Gh~>fbNg(ޒјiHZ2[ֳqxJ=Y|.{eKՖ oYHqf;cma4:DxcU30ꂽ_!&帅mUq%Rv--ЛW{#)۱s գ-S< ˤQS"W-8ģ+7- "Fz`H=oWmذaQBkY xp60sRe՛3sNug=!5b6('}0Udp.G62Ră#gYã{3!6( %Q~ wVV#Ky*\g,q- &B}' U-mYR/MfW>NIFG̨BWmT%s_^ A+[ \^" ?D7gkkp`b3,x"7|pnK5엷O݅p=f&,DSRw(Sסnw|/qh/E_;sτ8g!0&-}9njsKs7\[9f (f>}G:%h IGgAR+ôA7mߣFW˘ƪ@k@T-*ǁS&3'^ڞi8淳*D?wnf9BŷCPm/ry}y噕 a5oQ`4J֒^8ŶFզK5]ݲmo'rTzV/g-yܨ1Uܹ$.9jť8:V8jTҕC$+)RaA PB~se?xJJƍ6=_7R߃{kC&cǐaͬ'rG]O0[;c? u(%XMLK33sj+EkItż2G.{N},?;Y.2=tG{/w-kl(ǫ^@!c%a͗@]BR:0)svsFZ6y7(")m,8ngd l0"#YE$-e: -޽sA7 yf ^4o;+wK㝶a*zƥ]?R(L6cC/hΫמS~'x9_FZyy3܇=Lژ(6[p1QKlkSݼ E= h$ ~؟ 'T;DCY1 ΗFyyª B>5XSjnY^CS#Cr>q}1[׻<5x&vJ`~-+鳤o@gwoyx!"& { ^]Jw9P)x7%" Gfpd6]tՋ k94W nz<WplEM_ 8:͆@?=4?w+׊}< qX8#;A YLZ0͇hљ?W"j8}v#LRQ<(ʓ H Տ\Ou L>cU4vK6 SS67~ս:ሾOz ?{Ix*4>VPNurvz7=w ڶ>{~C~j[GSxEzBg)bX%ե 8E6 G8B8܂u >Xok,JcŚJz7d}몲OXa Ʌ)kϜCԗM.S)Gb,WT sv u[y -#.E.S1.:Z 5TiɱYB~MWj>^X+0|ed\I>)F> endobj 7 0 obj << /Ascent 678 /CapHeight 651 /Descent -216 /FontName /KDRGFK+NimbusRomNo9L-Regu /ItalicAngle 0 /StemV 85 /XHeight 450 /FontBBox [-168 -281 1000 924] /Flags 4 /CharSet (/fi/percent/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/eight/nine/colon/semicolon/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblleft/quotedblright/endash) /FontFile 8 0 R >> endobj 31 0 obj [556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 333 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 0 500 500 278 278 0 0 0 0 0 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 0 333 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444 0 500 ] endobj 5 0 obj << /Length1 1626 /Length2 15057 /Length3 532 /Length 15934 /Filter /FlateDecode >> stream xeP$ܲ%S@5Z@5и6.w#93s'gz*"j\+(J2eUF3;3#+ /@dcFюGQhs PR9Av@^& 4Xyxx(bv Kg7MZzz0N [@k;{_DU l 1%emE):@ h t4(XL S`n`jgk5'X"Nc=7 n :ڀƶglٚZC_FSsrv2u;VU7OgKcj;v#L]i_0 ['3Z&@o`pqZ#/?>KʶWrvZ3!i]5nb?|@ 柝K`4G`Vs[@2_"Y -bmhlw>2ƶ @CbH1Y{%hMيYgߑZF$h r6[׿f@Gk-)?,AVo?+տ3˪o*]g5{+ vf;KS_@qV0vvt?N F쟵Qu65i<4EX[3 \sxR\r8ľA0߿ڮ/-|&qcPhǚ'xGCAۗEElP~u(ɢq7͠ x֟5˓=ij}v'Z#FmUPt!!}N<%+2UCzW,n[ 9o˹6^GIKf]lh`xƙWejlj G ~N f Ba,V0e-_gJ1!&'D+&1AHJ A6tM%n{ 1Y|HPCi(CGd2]jIke&JHw;z ekjry@OmGAƨ$S=KC4 L^Me+,bm$~ ycykx!I ,ӢqAM ֳ;+11p dЫYQn\Q"jz %PR Q:8` P#Z[/J[2(-YRMbY{hY!w%g7O/pJ™_emzI Xٻ7^4L"Lڧ}CST2Q,+0G ~W{6Bc f\W=a4]\$ 5V%ԊB{2IλlUJRV=Z87֋?i+wz$ŕKXJcC(8v?ӆLU'Bx>Ťi/T?[U3;zZ2DwݥeHg/2>zovb[V57"Sq~OYƌƷR4Gjт_1bf@U!*S|b'yvt8>/wG {*%P`_h7=~I~-+*qa6qdǑ"{2]b`>ql:]LEݭ R?Y-R dݢ{tc[pԏ]9UMi>D-E3js5WLE9 kbrt`sاډdH5=yUu+Tu9,{gzۈ"&0U=5NUrxUk9Dr=T8쟌︖U^M٬.H/M1I . :"à H=ĉ>?aS_ I/% ͭ{ڂ6w'+L*rdG/^(t4>@jY&,Jä=[إ䘑WDVbHny~KcZyi*4p/Z`a&К[_Ymɏ>KH@&RpcY]j»J7Q-jb3I>9hlC¼7- ^6X-~VA~NŖ1HM ?M/J3Ln d l2iuvCfu)\fYb[7D.W#BɒnS=%^@\U\xsb/~YNS^ DIwEq 0 [5jP {W3Y9~um5G;ﻕms&zo`[JoB"9`BQPiK/@KR@ ظYPF̵ ?7o %I0f3`^պ40JR E玍avA4HAZ)eFW%MHoq7ebF-벣!,3gNKJ^ jᗁur\@q=U2&ڋ:aCt;â\LI^M]8|:ٹ@PF6-.# rbzKm PYC я72oSS N}N)k;1E7CoU`kۓ[DB'Fimv5K>'4x-=DQ~U!HR5Qb+t~#J8cQi˘SOh]mfŗqPu_+g ~c6&b5) [N\3F׶ab#|UsVn+XE;ABzéGrt GV~ӥ463bI jnxfTS! 7~QCޮ}S%D"j.pδ 8&BɲP`֑y:`L0F9b Aers}٠q+vL,CrM\vG~1hOPIh yTm;p@Kܯf`WN󏪣#;(ػ׭[SA= J]*;OSMURvr9q'_ u$6֝Y`GCGk7s#x:貽 -_mi$ͦ rx 9," ,T6_^Ϛ A 8-jt.is;JMTر FQƼ-N2X;Nmgȣ -1pRC+Y9x~3E3^bſ,8]IA $>ii~IX'ᔕ h4l QT-ѱÕ-7BD"404B0P9h߸M||+5>~+UQbȂ؆:ŭba)d)0)!W"4YAed d\ >Y+}pk)t;GUoo%6d.r?S} d:- ņ [.1>Bdy%8w!%tu 4,7.Ϛ*(`O5?ỆxdDyANޥ, +y/5"Äj^n:^60)g~8|c9 L 0INY"GY/`+: (|-欁tw7 ͆:c~S9=TU k/-1-@ZxqkYSCTufoߔb?(4N P/WE[cWd|3( hP1{x2Ws[\g̈́N6Խ/s6NZ;yX9TNڍNӢqgެI]P\Jkn3Hb`V{"p^ݝrKfs^۰1l ]gh[zh{'"[vm,{ Ԓ{C=4NPmƓz1;vke%8n<~^w$1~ofl]Vtw_ ̙<cDY/FF\"Z[$<BRqt꜐t&,2/9U/hw-U_+tH4MݢNN-~h2?!32i2Ʈ0#Q\=no,B84mpl>[z`Z]*U5䫆GP8D[Em9wv9/8y^>p R8a029.ePakG"b>|>8QW]&†O&k!x1+*V;s8=FbI΋j =-K8[pU Bbj-;r>BZ|TY9r H(#r%6hcKI=2 }`'BcӺAǏ?u8h+_QFѦ*wWоɌ12d )/noA8,:Pf~;9qv- (,M[S 'ER6&` ґŞe |7JgzFk *1b dGW]X>🖮UC2&_EJ^0 ŠH7*' `.aؑ4=& J~V$U Qr g"G8ň3zpMOO_tŌ_Gw^::洂D]iKT5\tڏ%uy,5p x^c0'OG AdU<=6yA6?aY0]n1Ɏm/~|{;pLXxgh$8jIٺlKn+K^QGz]|Cġq4q++ron fX ǒ*mZF=43}S4I#/VT=@攂I?FAG\8'65`/`a\xs*-֭=HݙUM#0ĎL61=)YnX-AnY$ %- rVJq>>γ7R#YL)J4Ga3'FT꧈vG+Z*|qy[ک[~1~_J ƈ~KʁXpH5ePI7ٌfrSgNYvdR1}tf,#TBnkA_r.JX}ZduA=  ;4 (L&__~V%| ~7YʝM">V6~ a!Ze]FXHC^ 77᪉ s)g|e dz>x=j ;;(mʼn'W"G54<-!x=Bu᱌Lz&Y&*<R~OxsbarJZ7 7cKDj$j`qҦ ^u7~ 9ӋdȈuNŋ0d-BE |rl/^Ǵwu׃gnv }>~_ݵI.Nx)FSb9s,*j(Ox{Rz&<~C+XT3] VѭrlF䆂yw"ɤ=S(iz !ʇ&v_:Y?TZqKЕ7zR-ePnY& 9rcKB-j}pwTnlɹIA\U/#^ ;C1zX>viXEzxbeyx^$S tY BqXcҺ'C9\l6u}x4)H47 !597=,\5ș J]+[V-O xxm>*C ar/|r8(Fpᔇߞ7>wEb5|rx_!k\D epYf"&+5eѰ"d#m$NȄTaW-ЉSR@E#Z.-!U!aTʟ-tNTv/'B_qkO` :,̿SN5fd .l\x+xΠ\VMU:}|Ggf$("A”N¡+;HM!?dhv{(0 ׍]v_/"~UB{:CCXI{0O%82XnF%ز.cWR _LpGI( udBWuDu6.?X ɚtTw55/J\uL@'h|@MR s3\ L{}dqڠƙjTFuh7P4`Ph%<>hj F& A/Fyt^|.?!>ސ(=$-4[5rsR:GD͖<-v~f!q0zytk9K2Uo'NS|5\?=Xڝc ~; K4+E]%c<.=< s5CxJm']}hQa? A,aԶ3mŐ[wSIPDd "q/sK|O/\3Kqë?E*RP (ڼt ʫT'6G V.9x4AOm>jt d cBL|OQ/ $n1,lq2:KKs MVwзK\RmT.pUp,gD\=E6jOc-I`Ύ3VX9iw)oU-OV.u;Q &Xhe+ z"R3Ѹ2qU6Z[N?|Lau !{0~;glx\מ?d%1:US)|E7z|I Caȡp {Swj zBecXyF1A꽵P)(е _JMóM̾B47Y*(#60q5nj c|e[3, aucefKR7a.^_6cבU+UnRLsﬡxр:(k8Rx*G. Q-w'`2Ō$ܮkĥ1j8~ۯPwCԩ2`8>&'drd#/d3*۩V;@[lV&'h #G9t 0!Hy #a-QylkFou:n)NA˽?Tt gfyUEh+~h1_H03=ŀY_?>BO]Q2wrgϒʊ6rέ[ [wdqYmB,Ӗ2 k(׊}]m$d*\ae!'laR9#Ŵؙo¥ԠwY+7/ {%V+o1ߔ|H6?B,8[}ők;YUiܦxf@b,d^ IH sM[o?a 3bV߮3~ 06}dp6j^O5ndxّ;3>EWχ Pn@t"2i(m{bg7mYГab) oqYHp0ex3Zn榟,_`W: q0ez o-\7=Gi}YmiǛփ&\ iry7mʦ} U@|؀E&cv ?}\pm˂˥on9Y(ùxrk*|`|RV~Y-e-{ib~'CZ/3'<ie Z} !x`[Nn[:;zB>|Ϻ ('@5tfb4PCc^!e_"\HtKS#|9s=Vj4\tH϶1\G$vgnEeXLla`M'`n9TtD)f0 ;yu12$2}rn8m6R^vQشW3⮏febˢ5{[5ӗ0խ2;x\AXXwV@8]6,fnUi> S}I0y1~,DHuC'q_#l4b*׋+GޢWf1#F ᚗ ⩬·pz;-yuIcEjj5|3RLDu6jVnz wUi7+W_*A1B|s)?C;%FC"Հ`u#`BWuXpvâ`R|/ޠTZ[q7N|Oj×%+h^rQA>Yٻ}ag ~]Ƒ!3?-QU-yyGr]X7bSnl:Ug%Vn3bMYSS'_'V3M9aVXoCf[f}Эߖ$HJdNS|­kz6Mߍ61~"HdyzWl"Lv7xD xi3 _9uSlZeib%c'Dɜ" |HYN:F)+,O}J4tjpi]u[}qDJ ~븨As3C9'"GF:MȌD̨Yą,ˆGt{-G~Eĉ:ZfQa.>TiMi N[?ZCtd亰 2E ZMg*vFAf0/R {{=YTʰ r&JgXsOʈ,A|)O'/QGj)O+Hoȧ?%!붊J%LVs9~al.NTŝfE8vcܒ +'50#ޅWI)=QOٱdp̉VHW FUkzY&" jwٺ{*f:k~ן y/v7\aQE2n~no`3NC3cSx0ՄnLer`{D[6#ccށv]Oү#N)W6VNeDѯ呦`~F(52qHs#ĜzZW4jS^|̐ g2PUA?Vjuc=+8V ov1 %*p:mo= Һ^ uei upo#&5U3ɧkc&4e[e.]q?05ߐ;ѓ? Zj xں^|.<2* X\=bN-zL`Hw)owʎ߮M-j,\T6s*P[|ziZ@-Sņ}۫8,!!mw7f/r5o#$מ3v96,OG^ VWQEu64!aY)bH˾Ԙ)<ʶ%tk2 ?2D(=C< 6+z,vQzkq nI@a^lL@m)J(d*UE.PK[70l਴p̜;r"_m㟩|E FPZm&"-MɇP7 j ;in 溧4gLzcNX%tki#b>{h;iFܴ"-#]9U4ZdOFڻfB=XTp/ j=!c@$`H>q5{E[ˈzz F~{[JnFw1dOF)y-sI%Ȋzj|"U$j:&:ط,ADcң%oy[޽X󱰎j:yjjbDJ.1zuU _U6UЁ]ud@@r ľ#\-vq=zkӄdA#Fx3$˰*O9Oc,s"N{4-t)_~nyLҗfAM'hHٰkR[%|~$(p'2J7/(o}a3t-ن]Y~C'N G0-n RrkΌ䲯nJ<_Zg)R<&n yT{c7캷EQxkhlS`wkiXVQq'6`k*W Dvij~4NdCIj"l5j/Ի; |h͍"?uH|1l<^-ꗀM7m"f379tt?C8#IW{uP7$]?ɟ(5=їudhwjQ^ҜZ֓χh8})WأPiRțCfhS^QF~Dʎ`1UiP]s%4ā0iE\*BN:MD gVG4 10)23E!Q-9} v WYw%AykcC‹{GKZRb1|ӯl9.DŽfmϢ3  .#{E&@sJݖon6~ "}X>⇿dLO9Wzp0%%ZuaqC[b"7=•įnnꓶ^V˕?LxMd*5YZL/V"=5?zORƮ1JK'>a݉Ol氡(uZ[xۖeȿǏ(F)Xn=1=fFZ>3c7 4 g 0}"ur7E=N7B1~K7;]e4 f_Ί|dCGХCj.EC5o?4&&'ިn ^4xŭN2j8J2-3Jj yد  >:r3I*N1gR#KW[)V%9%p̗ȦSV8X= hYuE}ی/M[A$uYx 8 2_#f;^3 ;Β+nay5~e Uu `͞#h%1iLn{rLu.>ɘRCaU*t82N|/׭z0FG[d fFcO*kqHGIlbm:P'!RR%/+F,;l\Y7b!~^uȍ(IQ1eLESh{$niphF-t8&qI3a)sus܁,i3WQ%.|‡줌YobMӷZŠWa*DgI)D5 ! &{Xj5 }'XX\!<òFe16I:w ~Cp`N}jGbv3{"0R]q*y %m I~`Ȃ=4n i>Qgm*r|;("{VQ^ޒy|##%/ɔs>ۛƠ*%4#'3_!E.Oj*Wq"Tg6ZU@"$|C۶4"J*dAX+Hs> endobj 4 0 obj << /Ascent 690 /CapHeight 690 /Descent -209 /FontName /QQLJSA+NimbusRomNo9L-Medi /ItalicAngle 0 /StemV 140 /XHeight 461 /FontBBox [-168 -341 1000 960] /Flags 4 /CharSet (/fi/parenleft/parenright/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/quotedblleft/quotedblright) /FontFile 5 0 R >> endobj 32 0 obj [556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 0 0 250 0 500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 722 667 722 722 667 611 778 778 389 0 0 667 944 722 778 611 0 722 556 667 722 722 1000 722 722 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 ] endobj 13 0 obj << /Type /Pages /Count 6 /Kids [2 0 R 15 0 R 18 0 R 21 0 R 24 0 R 27 0 R] >> endobj 33 0 obj << /Type /Catalog /Pages 13 0 R >> endobj 34 0 obj << /Producer (pdfeTeX-1.30.4) /Creator (TeX) /CreationDate (D:20150810093635-04'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.30.4-2.2 (Web2C 7.5.5) kpathsea version 3.5.5) >> endobj xref 0 35 0000000000 65535 f 0000003123 00000 n 0000003018 00000 n 0000000015 00000 n 0000069515 00000 n 0000053293 00000 n 0000069348 00000 n 0000052325 00000 n 0000032767 00000 n 0000052158 00000 n 0000032299 00000 n 0000022119 00000 n 0000032132 00000 n 0000070359 00000 n 0000006347 00000 n 0000006239 00000 n 0000003214 00000 n 0000010413 00000 n 0000010305 00000 n 0000006427 00000 n 0000013603 00000 n 0000013495 00000 n 0000010493 00000 n 0000017069 00000 n 0000016961 00000 n 0000013683 00000 n 0000020152 00000 n 0000020044 00000 n 0000017149 00000 n 0000020232 00000 n 0000032556 00000 n 0000052822 00000 n 0000069921 00000 n 0000070452 00000 n 0000070503 00000 n trailer << /Size 35 /Root 33 0 R /Info 34 0 R /ID [<86C647F2B5BD2DDB5E3D30EE3622C3A6> <86C647F2B5BD2DDB5E3D30EE3622C3A6>] >> startxref 70708 %%EOF gsoap-2.8.60/config.h.in0000644000175000017500000001604113227173553014315 0ustar ellertellert/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the `alarm' function. */ #undef HAVE_ALARM /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the `asctime' function. */ #undef HAVE_ASCTIME /* Define to 1 if you have the `asctime_r' function. */ #undef HAVE_ASCTIME_R /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H /* Define to 1 if you have the `freelocale' function. */ #undef HAVE_FREELOCALE /* Define to 1 if you have the `ftime' function. */ #undef HAVE_FTIME /* Define to 1 if you have the `gethostbyname_r' function. */ #undef HAVE_GETHOSTBYNAME_R /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the `gmtime' function. */ #undef HAVE_GMTIME /* Define to 1 if you have the `gmtime_r' function. */ #undef HAVE_GMTIME_R /* Define to 1 if you have the header file. */ #undef HAVE_GNUTLS_GNUTLS_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* isinf */ #undef HAVE_ISINF /* isnan */ #undef HAVE_ISNAN /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the `localtime_r' function. */ #undef HAVE_LOCALTIME_R /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if you have the `mbtowc' function. */ #undef HAVE_MBTOWC /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the `newlocale' function. */ #undef HAVE_NEWLOCALE /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_SSL_H /* Define to 1 if you have the `poll' function. */ #undef HAVE_POLL /* Define to 1 if you have the header file. */ #undef HAVE_POLL_H /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if you have the `sprintf_l' function. */ #undef HAVE_SPRINTF_L /* Define to 1 if you have the `sscanf' function. */ #undef HAVE_SSCANF /* Define to 1 if you have the `sscanf_l' function. */ #undef HAVE_SSCANF_L /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the `strerror_r' function. */ #undef HAVE_STRERROR_R /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strlcpy' function. */ #undef HAVE_STRLCPY /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the `strtod' function. */ #undef HAVE_STRTOD /* Define to 1 if you have the `strtod_l' function. */ #undef HAVE_STRTOD_L /* Define to 1 if you have the `strtof' function. */ #undef HAVE_STRTOF /* Define to 1 if you have the `strtof_l' function. */ #undef HAVE_STRTOF_L /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the `strtold' function. */ #undef HAVE_STRTOLD /* Define to 1 if you have the `strtold_l' function. */ #undef HAVE_STRTOLD_L /* Define to 1 if you have the `strtoll' function. */ #undef HAVE_STRTOLL /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the `strtoull' function. */ #undef HAVE_STRTOULL /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #undef HAVE_STRUCT_TM_TM_GMTOFF /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ #undef HAVE_STRUCT_TM___TM_GMTOFF /* Define to 1 if you have the header file. */ #undef HAVE_SYS_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMEB_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the `timegm' function. */ #undef HAVE_TIMEGM /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `uselocale' function. */ #undef HAVE_USELOCALE /* Define to 1 if you have the `wctomb' function. */ #undef HAVE_WCTOMB /* Define to 1 if you have the header file. */ #undef HAVE_XLOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_ZLIB_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to `unsigned int' if does not define. */ #undef size_t gsoap-2.8.60/depcomp0000755000175000017500000002752513227173553013660 0ustar ellertellert#! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000 Free Software Foundation, Inc. # 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, 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., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # `libtool' can also be set to `yes' or `no'. depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. This file always lives in the current directory. # Also, the AIX compiler puts `$object:' at the start of each line; # $object doesn't have directory information. stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" outname="$stripped.o" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; tru64) # The Tru64 AIX compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. tmpdepfile1="$object.d" tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` if test "$libtool" = yes; then "$@" -Wc,-MD else "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a space and a tab in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. test -z "$dashmflag" && dashmflag=-M ( IFS=" " case " $* " in *" --mode=compile "*) # this is libtool, let us make it quiet for arg do # cycle over the arguments case "$arg" in "--mode=compile") # insert --quiet before "--mode=compile" set fnord "$@" --quiet shift # fnord ;; esac set fnord "$@" "$arg" shift # fnord shift # "$arg" done ;; esac "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) # X makedepend ( shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift;; -*) ;; *) set fnord "$@" "$arg"; shift;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tail +3 "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. ( IFS=" " case " $* " in *" --mode=compile "*) for arg do # cycle over the arguments case $arg in "--mode=compile") # insert --quiet before "--mode=compile" set fnord "$@" --quiet shift # fnord ;; esac set fnord "$@" "$arg" shift # fnord shift # "$arg" done ;; esac "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. ( IFS=" " case " $* " in *" --mode=compile "*) for arg do # cycle over the arguments case $arg in "--mode=compile") # insert --quiet before "--mode=compile" set fnord "$@" --quiet shift # fnord ;; esac set fnord "$@" "$arg" shift # fnord shift # "$arg" done ;; esac "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" ) & proc=$! "$@" stat=$? wait "$proc" if test "$stat" != 0; then exit $stat; fi rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 gsoap-2.8.60/config.status.old0000755000175000017500000013727313227173553015577 0ustar ellertellert#! /bin/sh # Generated by configure. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=${CONFIG_SHELL-/bin/sh} ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by gsoap $as_me 2.7, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 config_files=" Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/events/Makefile gsoap/samples/events++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsse/Makefile gsoap/samples/xml-rpc/Makefile" config_headers=" config.h" config_commands=" depfiles" ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." ac_cs_version="\ gsoap config.status 2.7 configured by ./configure, generated by GNU Autoconf 2.59, with options \"'--enable-samples'\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=. INSTALL="/usr/bin/install -c" # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi if $ac_cs_recheck; then echo "running /bin/sh ./configure " '--enable-samples' $ac_configure_extra_args " --no-create --no-recursion" >&6 exec /bin/sh ./configure '--enable-samples' $ac_configure_extra_args --no-create --no-recursion fi # # INIT-COMMANDS section. # AMDEP_TRUE="" ac_aux_dir="." for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc" ) CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc" ) CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc" ) CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc" ) CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc" ) CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc" ) CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/calc/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/dime/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/events/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/events/Makefile" ;; "gsoap/samples/events++/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/events++/Makefile" ;; "gsoap/samples/factory/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/roll/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/rss/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/udp/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsse/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/xml-rpc/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF s,@SHELL@,/bin/sh,;t t s,@PATH_SEPARATOR@,:,;t t s,@PACKAGE_NAME@,gsoap,;t t s,@PACKAGE_TARNAME@,gsoap,;t t s,@PACKAGE_VERSION@,2.7,;t t s,@PACKAGE_STRING@,gsoap 2.7,;t t s,@PACKAGE_BUGREPORT@,,;t t s,@exec_prefix@,${prefix},;t t s,@prefix@,/usr/local,;t t s,@program_transform_name@,s,x,x,,;t t s,@bindir@,${exec_prefix}/bin,;t t s,@sbindir@,${exec_prefix}/sbin,;t t s,@libexecdir@,${exec_prefix}/libexec,;t t s,@datadir@,${prefix}/share,;t t s,@sysconfdir@,${prefix}/etc,;t t s,@sharedstatedir@,${prefix}/com,;t t s,@localstatedir@,${prefix}/var,;t t s,@libdir@,${exec_prefix}/lib,;t t s,@includedir@,${prefix}/include,;t t s,@oldincludedir@,/usr/include,;t t s,@infodir@,${prefix}/info,;t t s,@mandir@,${prefix}/man,;t t s,@build_alias@,,;t t s,@host_alias@,,;t t s,@target_alias@,,;t t s,@DEFS@,-DHAVE_CONFIG_H,;t t s,@ECHO_C@,,;t t s,@ECHO_N@,-n,;t t s,@ECHO_T@,,;t t s,@LIBS@,,;t t s,@INSTALL_PROGRAM@,${INSTALL},;t t s,@INSTALL_SCRIPT@,${INSTALL},;t t s,@INSTALL_DATA@,${INSTALL} -m 644,;t t s,@PACKAGE@,gsoap,;t t s,@VERSION@,2.7,;t t s,@ACLOCAL@,${SHELL} /Users/engelen/Projects/gsoap/gsoap-2.7/missing --run aclocal-1.6,;t t s,@AUTOCONF@,${SHELL} /Users/engelen/Projects/gsoap/gsoap-2.7/missing --run autoconf,;t t s,@AUTOMAKE@,${SHELL} /Users/engelen/Projects/gsoap/gsoap-2.7/missing --run automake-1.6,;t t s,@AUTOHEADER@,${SHELL} /Users/engelen/Projects/gsoap/gsoap-2.7/missing --run autoheader,;t t s,@MAKEINFO@,${SHELL} /Users/engelen/Projects/gsoap/gsoap-2.7/missing --run makeinfo,;t t s,@AMTAR@,${SHELL} /Users/engelen/Projects/gsoap/gsoap-2.7/missing --run tar,;t t s,@install_sh@,/Users/engelen/Projects/gsoap/gsoap-2.7/install-sh,;t t s,@STRIP@,,;t t s,@ac_ct_STRIP@,,;t t s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t s,@AWK@,awk,;t t s,@SET_MAKE@,,;t t s,@build@,i386-apple-darwin8.11.1,;t t s,@build_cpu@,i386,;t t s,@build_vendor@,apple,;t t s,@build_os@,darwin8.11.1,;t t s,@host@,i386-apple-darwin8.11.1,;t t s,@host_cpu@,i386,;t t s,@host_vendor@,apple,;t t s,@host_os@,darwin8.11.1,;t t s,@CXX@,g++,;t t s,@CXXFLAGS@,-g -O2,;t t s,@LDFLAGS@,,;t t s,@CPPFLAGS@,,;t t s,@ac_ct_CXX@,g++,;t t s,@EXEEXT@,,;t t s,@OBJEXT@,o,;t t s,@DEPDIR@,.deps,;t t s,@am__include@,include,;t t s,@am__quote@,,;t t s,@AMDEP_TRUE@,,;t t s,@AMDEP_FALSE@,#,;t t s,@AMDEPBACKSLASH@,\,;t t s,@CXXDEPMODE@,depmode=gcc3,;t t s,@CC@,gcc,;t t s,@CFLAGS@,-g -O2,;t t s,@ac_ct_CC@,gcc,;t t s,@CCDEPMODE@,depmode=gcc3,;t t s,@LEX@,flex,;t t s,@LEXLIB@,-lfl,;t t s,@LEX_OUTPUT_ROOT@,lex.yy,;t t s,@YACC@,bison -y,;t t s,@CPP@,gcc -E,;t t s,@RANLIB@,ranlib,;t t s,@ac_ct_RANLIB@,ranlib,;t t s,@LN_S@,ln -s,;t t s,@SAMPLE_EXTRA_LIBS@,,;t t s,@platform@,MACOSX,;t t s,@EGREP@,grep -E,;t t s,@LIBOBJS@,,;t t s,@DEBUG_COMPILE_TRUE@,#,;t t s,@DEBUG_COMPILE_FALSE@,,;t t s,@SOAPCPP2_DEBUG@,,;t t s,@SOAPCPP2_IMPORTPATH@,-DSOAPCPP_IMPORT_PATH="\"${prefix}/share/gsoap/import\"",;t t s,@WSDL2H_IMPORTPATH@,-DWSDL_IMPORT_PATH="\"${prefix}/share/gsoap/WS\"",;t t s,@SOAPCPP2_NONAMESPACES@,,;t t s,@WSDL2H_EXTRA_FLAGS@,-DWITH_OPENSSL -DWITH_GZIP,;t t s,@WSDL2H_EXTRA_LIBS@,-lssl -lcrypto -lz,;t t s,@WSDL2H_SOAP_CPP_LIB@,libgsoapssl++.a,;t t s,@ENABLE_SAMPLES_TRUE@,,;t t s,@ENABLE_SAMPLES_FALSE@,#,;t t s,@ENABLE_SAMPLES@,,;t t s,@SAMPLE_DIRS@,. samples,;t t s,@LEX_DEFINE@,-DWITH_FLEX,;t t s,@LEX_FLAGS@,-l,;t t s,@BISON_DEFINE@,-DWITH_BISON,;t t s,@YACC_LIB@,,;t t s,@LTLIBOBJS@,,;t t CEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } sed "/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; } :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in # Handle all the #define templates only if necessary. if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then # If there are no defines, we may have an empty if/fi : cat >$tmp/defines.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in cat >$tmp/defines.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in fi # grep # Handle all the #undef templates cat >$tmp/undefs.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in cat >$tmp/undefs.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in cat >$tmp/undefs.sed <$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Run the commands associated with the file. case $ac_file in config.h ) # update the timestamp echo 'timestamp for config.h' >"./stamp-h1" ;; esac done # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n -e '/^U = / s///p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # We invoke sed twice because it is the simplest approach to # changing $(DEPDIR) to its actual value in the expansion. for file in `sed -n -e ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done { (exit 0); exit 0; } gsoap-2.8.60/INSTALL.txt0000644000175000017500000000023013227173557014136 0ustar ellertellert INSTALLATION See README.txt for an overview of the gSOAP software. Visit www.genivia.com/downloads.html for download and installation instructions. gsoap-2.8.60/gsoapssl++.pc.in0000644000175000017500000000055213227173557015210 0ustar ellertellertprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: GSoap Description: SOAP C++ Web Services with SSL, ZLIB, DOM, and cookies Version: @VERSION@ Requires: Libs: -L${libdir} -lgsoapssl++ Libs.private: @SAMPLE_SSL_LIBS@ @SAMPLE_EXTRA_LIBS@ Cflags: @SOAPCPP2_IPV6@ @WSDL2H_EXTRA_FLAGS@ -DWITH_DOM -DWITH_COOKIES -I${includedir} gsoap-2.8.60/Makefile.in0000644000175000017500000007400313227173557014345 0ustar ellertellert# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ ####### This is the input file for automake, which will generate Makefile.in ########## VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc \ gsoapssl.pc gsoapssl++.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/gsoap++.pc.in $(srcdir)/gsoap.pc.in \ $(srcdir)/gsoapck++.pc.in $(srcdir)/gsoapck.pc.in \ $(srcdir)/gsoapssl++.pc.in $(srcdir)/gsoapssl.pc.in compile \ config.guess config.sub depcomp install-sh missing \ mkinstalldirs ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON_DEFINE = @BISON_DEFINE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_SAMPLES = @ENABLE_SAMPLES@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_DEFINE = @LEX_DEFINE@ LEX_FLAGS = @LEX_FLAGS@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SAMPLE_DIRS = @SAMPLE_DIRS@ SAMPLE_EXTRA_LIBS = @SAMPLE_EXTRA_LIBS@ SAMPLE_INCLUDES = @SAMPLE_INCLUDES@ SAMPLE_SSL_LIBS = @SAMPLE_SSL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SOAPCPP2_DEBUG = @SOAPCPP2_DEBUG@ SOAPCPP2_IMPORTPATH = @SOAPCPP2_IMPORTPATH@ SOAPCPP2_IPV6 = @SOAPCPP2_IPV6@ SOAPCPP2_NONAMESPACES = @SOAPCPP2_NONAMESPACES@ SOAPCPP2_NO_C_LOCALE = @SOAPCPP2_NO_C_LOCALE@ STRIP = @STRIP@ VERSION = @VERSION@ WITH_OPENSSL = @WITH_OPENSSL@ WSDL2H_EXTRA_FLAGS = @WSDL2H_EXTRA_FLAGS@ WSDL2H_EXTRA_LIBS = @WSDL2H_EXTRA_LIBS@ WSDL2H_IMPORTPATH = @WSDL2H_IMPORTPATH@ WSDL2H_SOAP_CPP_LIB = @WSDL2H_SOAP_CPP_LIB@ YACC = @YACC@ YACC_LIB = @YACC_LIB@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ platform = @platform@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = gsoap CLEANFILES = *~ VERYVERYCLEANFILES = *~ configure Makefile.in compile config.guess config.sub config.log autoscan.log \ depcomp install-sh missing mkinstalldirs stamp-h.in config.h.in \ aclocal.m4 *.cache Makefile AUTOMAKE_OPTIONS = foreign 1.4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc EXTRA_DIST = gsoap.pc.in gsoap++.pc.in gsoapck.pc.in gsoapck++.pc.in gsoapssl.pc.in gsoapssl++.pc.in all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 gsoap.pc: $(top_builddir)/config.status $(srcdir)/gsoap.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ gsoap++.pc: $(top_builddir)/config.status $(srcdir)/gsoap++.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ gsoapck.pc: $(top_builddir)/config.status $(srcdir)/gsoapck.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ gsoapck++.pc: $(top_builddir)/config.status $(srcdir)/gsoapck++.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ gsoapssl.pc: $(top_builddir)/config.status $(srcdir)/gsoapssl.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ gsoapssl++.pc: $(top_builddir)/config.status $(srcdir)/gsoapssl++.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-data-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-hook install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgconfigDATA .PRECIOUS: Makefile .PHONY: backup install-data-hook: echo "+--------------------------------------------------------+"; \ echo "| You now have successfully built and installed gsoap. |"; \ echo "| |"; \ echo "| You can link your programs with -lgsoap++ for |"; \ echo "| C++ projects created with soapcpp2 and you can link |"; \ echo "| with -lgsoap for C projects generated with soapcpp2 -c |"; \ echo "| |"; \ echo "| There are also corresponding libraries for SSL and |"; \ echo "| zlib compression support (-lgsoapssl and lgsoapssl++) |"; \ echo "| which require linking -lssl -lcrypto -lz |"; \ echo "| |"; \ echo "| Thanks for using gsoap. |"; \ echo "| |"; \ echo "| http://sourceforge.net/projects/gsoap2 |"; \ echo "+--------------------------------------------------------+"; reallyveryveryclean: $(MAKE) distclean for file in $(VERYVERYCLEANFILES);do rm -rf $(VERYVERYCLEANFILES);done; backup: $(MAKE) clean $(MAKE) distclean CURRENTDIR=`pwd` && \ BACKUPDIR=`basename $$CURRENTDIR` && \ cd .. && \ tar -czhf $$BACKUPDIR.tgz $$BACKUPDIR && \ cd $$BACKUPDIR && \ ls -l $$CURRENTDIR.tgz # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gsoap-2.8.60/ylwrap0000755000175000017500000001531213227173557013542 0ustar ellertellert#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2013-01-12.17; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # Written by Tom Tromey . # # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . get_dirname () { case $1 in */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; # Otherwise, we want the empty string (not "."). esac } # guard FILE # ---------- # The CPP macro used to guard inclusion of FILE. guard () { printf '%s\n' "$1" \ | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ -e 's/__*/_/g' } # quote_for_sed [STRING] # ---------------------- # Return STRING (or stdin) quoted to be used as a sed pattern. quote_for_sed () { case $# in 0) cat;; 1) printf '%s\n' "$1";; esac \ | sed -e 's|[][\\.*]|\\&|g' } case "$1" in '') echo "$0: No files given. Try '$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input=$1 shift # We'll later need for a correct munging of "#line" directives. input_sub_rx=`get_dirname "$input" | quote_for_sed` case $input in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input=`pwd`/$input ;; esac input_rx=`get_dirname "$input" | quote_for_sed` # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot=false if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot=true fi # The parser itself, the first file, is the destination of the .y.c # rule in the Makefile. parser=$1 # A sed program to s/FROM/TO/g for all the FROM/TO so that, for # instance, we rename #include "y.tab.h" into #include "parse.h" # during the conversion from y.tab.c to parse.c. sed_fix_filenames= # Also rename header guards, as Bison 2.7 for instance uses its header # guard in its implementation file. sed_fix_header_guards= while test $# -ne 0; do if test x"$1" = x"--"; then shift break fi from=$1 # Handle y_tab.c and y_tab.h output by DOS if $y_tab_nodot; then case $from in "y.tab.c") from=y_tab.c;; "y.tab.h") from=y_tab.h;; esac fi shift to=$1 shift sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" done # The program to run. prog=$1 shift # Make any relative path in $prog absolute. case $prog in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog=`pwd`/$prog ;; esac dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then for from in * do to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend '../'. case $to in [\\/]* | ?:[\\/]*) target=$to;; *) target=../$to;; esac # Do not overwrite unchanged header files to avoid useless # recompilations. Always update the parser itself: it is the # destination of the .y.c rule in the Makefile. Divert the # output of all other files to a temporary file so we can # compare them to existing versions. if test $from != $parser; then realtarget=$target target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` fi # Munge "#line" or "#" directives. Don't let the resulting # debug information point at an absolute srcdir. Use the real # output file name, not yy.lex.c for instance. Adjust the # include guards too. sed -e "/^#/!b" \ -e "s|$input_rx|$input_sub_rx|" \ -e "$sed_fix_filenames" \ -e "$sed_fix_header_guards" \ "$from" >"$target" || ret=$? # Check whether files must be updated. if test "$from" != "$parser"; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$to is unchanged" rm -f "$target" else echo "updating $to" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the parser. This is a # blatant hack to let us support using "yacc -d". If -d is not # specified, don't fail when the header file is "missing". if test "$from" = "$parser"; then ret=1 fi fi done fi # Remove the directory. cd .. rm -rf $dirname exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gsoap-2.8.60/install-sh0000755000175000017500000003452313227173557014307 0ustar ellertellert#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gsoap-2.8.60/makemake0000755000175000017500000000124413227173557013776 0ustar ellertellert#! /bin/sh aclocal autoheader rm -f missing automake --add-missing autoconf automake ./configure --enable-samples --with-openssl=/usr/local/opt/openssl rm -f gsoap/wsdl/wsdlC.cpp rm -f gsoap/wsdl/*.o rm -f gsoap/src/*.o rm -f gsoap/samples/*/*.o rm -f gsoap/samples/*/soapH.h rm -f gsoap/samples/*/soapC.* rm -f gsoap/samples/databinding/addressC.cpp rm -f gsoap/samples/chaining/envC.c rm -f gsoap/samples/chaining/qServerLib.c rm -f gsoap/samples/chaining/cServerLib.c rm -f gsoap/samples/chaining++/envC.cpp rm -f gsoap/samples/chaining++/QuotequoteService.cpp rm -f gsoap/samples/chaining++/CalccalcService.cpp echo "Please run the following command now:" echo "make" gsoap-2.8.60/missing0000755000175000017500000001533013227173557013675 0ustar ellertellert#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: gsoap-2.8.60/gsoapck.pc.in0000644000175000017500000000046213227173557014656 0ustar ellertellertprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: GSoap Description: SOAP C Web Services with Cookies Enabled Version: @VERSION@ Requires: Libs: -L${libdir} -lgsoapck Libs.private: @SAMPLE_EXTRA_LIBS@ Cflags: @SOAPCPP2_IPV6@ -DWITH_COOKIES -DWITH_DOM -I${includedir} gsoap-2.8.60/stamp-h.in0000644000175000017500000000001213227173557014166 0ustar ellertellerttimestamp gsoap-2.8.60/.xpce/0000755000175000017500000000000013227173553013305 5ustar ellertellertgsoap-2.8.60/.xpce/Geometry.cnf0000644000175000017500000000106013227173553015565 0ustar ellertellert/* XPCE configuration file for "persistent_frame" Saved Sun Jan 24 21:48:13 2010 by engelen */ configversion(1). [persistent_frame]. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Option lines starting with a `%' indicate % % the value is equal to the application default. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /* (X-)geometry for persistent frames */ history/geometry/pui_manual = '880x413+91+-1'. /* Sub-window layout for persistent frames */ history/subwindow_layout/pui_manual = layout(*, [*, layout(*, [200, *]), *]). gsoap-2.8.60/config.guess.old0000755000175000017500000012706313227173553015376 0ustar ellertellert#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2007-07-22' # This file 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa:Linux:*:*) echo xtensa-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: gsoap-2.8.60/autom4te.cache/0000755000175000017500000000000013227173553015074 5ustar ellertellertgsoap-2.8.60/autom4te.cache/traces.40000644000175000017500000014173113227173553016451 0ustar ellertellertm4trace:/opt/local/share/aclocal-1.15/amversion.m4:20: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) m4trace:/opt/local/share/aclocal-1.15/amversion.m4:37: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) m4trace:/opt/local/share/aclocal-1.15/auxdir.m4:51: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) m4trace:/opt/local/share/aclocal-1.15/cond.m4:32: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) m4trace:/opt/local/share/aclocal-1.15/depend.m4:156: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) m4trace:/opt/local/share/aclocal-1.15/depend.m4:166: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) m4trace:/opt/local/share/aclocal-1.15/depend.m4:189: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) m4trace:/opt/local/share/aclocal-1.15/depout.m4:61: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ]) m4trace:/opt/local/share/aclocal-1.15/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) m4trace:/opt/local/share/aclocal-1.15/init.m4:171: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) m4trace:/opt/local/share/aclocal-1.15/init.m4:198: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) m4trace:/opt/local/share/aclocal-1.15/install-sh.m4:21: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) m4trace:/opt/local/share/aclocal-1.15/lead-dot.m4:19: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) m4trace:/opt/local/share/aclocal-1.15/lex.m4:19: -1- AC_DEFUN([AM_PROG_LEX], [AC_PREREQ([2.50])dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) m4trace:/opt/local/share/aclocal-1.15/make.m4:49: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) m4trace:/opt/local/share/aclocal-1.15/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) m4trace:/opt/local/share/aclocal-1.15/missing.m4:38: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) m4trace:/opt/local/share/aclocal-1.15/obsolete.m4:15: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) m4trace:/opt/local/share/aclocal-1.15/obsolete.m4:24: -1- AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) m4trace:/opt/local/share/aclocal-1.15/obsolete.m4:27: -1- AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) m4trace:/opt/local/share/aclocal-1.15/obsolete.m4:28: -1- AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) m4trace:/opt/local/share/aclocal-1.15/obsolete.m4:28: -1- AC_DEFUN([fp_C_PROTOTYPES], [AC_DIAGNOSE([obsolete], [The macro `fp_C_PROTOTYPES' is obsolete. You should run autoupdate.])dnl AM_C_PROTOTYPES]) m4trace:/opt/local/share/aclocal-1.15/options.m4:12: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) m4trace:/opt/local/share/aclocal-1.15/options.m4:18: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) m4trace:/opt/local/share/aclocal-1.15/options.m4:24: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) m4trace:/opt/local/share/aclocal-1.15/options.m4:30: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) m4trace:/opt/local/share/aclocal-1.15/prog-cc-c-o.m4:44: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) m4trace:/opt/local/share/aclocal-1.15/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) m4trace:/opt/local/share/aclocal-1.15/runlog.m4:17: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) m4trace:/opt/local/share/aclocal-1.15/sanity.m4:82: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) m4trace:/opt/local/share/aclocal-1.15/silent.m4:60: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) m4trace:/opt/local/share/aclocal-1.15/strip.m4:28: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) m4trace:/opt/local/share/aclocal-1.15/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) m4trace:/opt/local/share/aclocal-1.15/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) m4trace:/opt/local/share/aclocal-1.15/tar.m4:132: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.ac:3: -1- AM_INIT_AUTOMAKE([foreign]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.ac:3: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.ac:3: -1- AM_AUTOMAKE_VERSION([1.15]) m4trace:configure.ac:3: -1- _AM_AUTOCONF_VERSION([2.69]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.ac:3: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.ac:3: -1- _AM_SET_OPTIONS([foreign]) m4trace:configure.ac:3: -1- _AM_SET_OPTION([foreign]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([foreign]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- AM_SANITY_CHECK m4trace:configure.ac:3: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.ac:3: -1- AM_MISSING_HAS_RUN m4trace:configure.ac:3: -1- AM_AUX_DIR_EXPAND m4trace:configure.ac:3: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.ac:3: -1- AM_PROG_INSTALL_SH m4trace:configure.ac:3: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.ac:3: -1- AM_PROG_INSTALL_STRIP m4trace:configure.ac:3: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:3: -1- AM_SET_LEADING_DOT m4trace:configure.ac:3: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([tar-ustar]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([tar-pax]) m4trace:configure.ac:3: -1- _AM_PROG_TAR([v7]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.ac:3: -1- AM_SILENT_RULES m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_V$]) m4trace:configure.ac:3: -1- AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_V$]) m4trace:configure.ac:3: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_BACKSLASH$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_os$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_os$]) m4trace:configure.ac:8: -1- AM_CONFIG_HEADER([config.h]) m4trace:configure.ac:8: -1- _m4_warn([obsolete], ['AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead.], [/opt/local/share/aclocal-1.15/obsolete.m4:15: AM_CONFIG_HEADER is expanded from... configure.ac:8: the top level]) m4trace:configure.ac:11: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.ac:13: -1- _AM_DEPENDENCIES([CXX]) m4trace:configure.ac:13: -1- AM_SET_DEPDIR m4trace:configure.ac:13: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.ac:13: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.ac:13: -1- AM_MAKE_INCLUDE m4trace:configure.ac:13: -1- m4_pattern_allow([^am__include$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.ac:13: -1- AM_DEP_TRACK m4trace:configure.ac:13: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__nodep$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__nodep]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.ac:13: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.ac:14: -1- _AM_PROG_CC_C_O m4trace:configure.ac:14: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) m4trace:configure.ac:14: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.ac:14: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.ac:15: -1- AM_PROG_CC_C_O m4trace:configure.ac:16: -1- AM_PROG_LEX m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX$]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:16: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:19: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.ac:21: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.ac:22: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:90: -1- m4_pattern_allow([^SAMPLE_EXTRA_LIBS$]) m4trace:configure.ac:91: -1- m4_pattern_allow([^platform$]) m4trace:configure.ac:94: -1- m4_pattern_allow([^GREP$]) m4trace:configure.ac:94: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.ac:94: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.ac:98: -1- m4_pattern_allow([^const$]) m4trace:configure.ac:99: -1- m4_pattern_allow([^size_t$]) m4trace:configure.ac:100: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) m4trace:configure.ac:101: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_GMTOFF$]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM___TM_GMTOFF$]) m4trace:configure.ac:109: -1- AC_DEFUN([_AC_Header_sys_time_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" sys/time.h"])]) _AC_HEADERS_EXPANSION]) m4trace:configure.ac:109: -1- AC_DEFUN([_AC_Header_unistd_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" unistd.h"])]) _AC_HEADERS_EXPANSION]) m4trace:configure.ac:109: -1- AC_DEFUN([_AC_Func_alarm], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_func_list], [" alarm"])]) _AC_FUNCS_EXPANSION]) m4trace:configure.ac:109: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:110: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete. You should run autoupdate.], [../../lib/autoconf/types.m4:759: AC_TYPE_SIGNAL is expanded from... configure.ac:110: the top level]) m4trace:configure.ac:110: -1- m4_pattern_allow([^RETSIGTYPE$]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:115: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:116: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:124: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME_R$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^malloc$]) m4trace:configure.ac:157: -1- AM_CONDITIONAL([DEBUG_COMPILE], [test x$debug = xtrue]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_TRUE$]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_FALSE$]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:163: -1- m4_pattern_allow([^SOAPCPP2_DEBUG$]) m4trace:configure.ac:168: -1- m4_pattern_allow([^SOAPCPP2_IMPORTPATH$]) m4trace:configure.ac:173: -1- m4_pattern_allow([^WSDL2H_IMPORTPATH$]) m4trace:configure.ac:181: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:181: the top level]) m4trace:configure.ac:190: -1- m4_pattern_allow([^SOAPCPP2_NONAMESPACES$]) m4trace:configure.ac:198: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:198: the top level]) m4trace:configure.ac:207: -1- m4_pattern_allow([^SOAPCPP2_NO_C_LOCALE$]) m4trace:configure.ac:215: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:215: the top level]) m4trace:configure.ac:224: -1- m4_pattern_allow([^SOAPCPP2_IPV6$]) m4trace:configure.ac:243: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:243: the top level]) m4trace:configure.ac:250: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:250: the top level]) m4trace:configure.ac:291: -1- AM_CONDITIONAL([WITH_OPENSSL], [test "x$with_openssl" = "xyes" -a "x$with_gnutls" != "xyes"]) m4trace:configure.ac:291: -1- m4_pattern_allow([^WITH_OPENSSL_TRUE$]) m4trace:configure.ac:291: -1- m4_pattern_allow([^WITH_OPENSSL_FALSE$]) m4trace:configure.ac:291: -1- _AM_SUBST_NOTMAKE([WITH_OPENSSL_TRUE]) m4trace:configure.ac:291: -1- _AM_SUBST_NOTMAKE([WITH_OPENSSL_FALSE]) m4trace:configure.ac:292: -1- m4_pattern_allow([^WITH_OPENSSL$]) m4trace:configure.ac:293: -1- m4_pattern_allow([^WSDL2H_EXTRA_FLAGS$]) m4trace:configure.ac:294: -1- m4_pattern_allow([^WSDL2H_EXTRA_LIBS$]) m4trace:configure.ac:295: -1- m4_pattern_allow([^SAMPLE_INCLUDES$]) m4trace:configure.ac:296: -1- m4_pattern_allow([^SAMPLE_SSL_LIBS$]) m4trace:configure.ac:297: -1- m4_pattern_allow([^WSDL2H_SOAP_CPP_LIB$]) m4trace:configure.ac:307: -1- AM_CONDITIONAL([ENABLE_SAMPLES], [test x$samples = xtrue]) m4trace:configure.ac:307: -1- m4_pattern_allow([^ENABLE_SAMPLES_TRUE$]) m4trace:configure.ac:307: -1- m4_pattern_allow([^ENABLE_SAMPLES_FALSE$]) m4trace:configure.ac:307: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:307: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:308: -1- m4_pattern_allow([^ENABLE_SAMPLES$]) m4trace:configure.ac:315: -1- m4_pattern_allow([^SAMPLE_DIRS$]) m4trace:configure.ac:325: -1- m4_pattern_allow([^LEX_DEFINE$]) m4trace:configure.ac:326: -1- m4_pattern_allow([^LEX_FLAGS$]) m4trace:configure.ac:327: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:337: -1- m4_pattern_allow([^BISON_DEFINE$]) m4trace:configure.ac:338: -1- m4_pattern_allow([^YACC_LIB$]) m4trace:configure.ac:387: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:387: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.ac:387: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.ac:387: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.ac:387: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.ac:387: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.ac:387: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.ac:387: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) m4trace:configure.ac:387: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS gsoap-2.8.60/autom4te.cache/output.50000644000175000017500000070631013227173553016531 0ustar ellertellert@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.69 for gsoap 2.8. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @%:@ @%:@ @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in @%:@( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gsoap' PACKAGE_TARNAME='gsoap' PACKAGE_VERSION='2.8' PACKAGE_STRING='gsoap 2.8' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="gsoap/stdsoap2.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS YACC_LIB BISON_DEFINE LEX_FLAGS LEX_DEFINE SAMPLE_DIRS ENABLE_SAMPLES ENABLE_SAMPLES_FALSE ENABLE_SAMPLES_TRUE WSDL2H_SOAP_CPP_LIB SAMPLE_SSL_LIBS SAMPLE_INCLUDES WSDL2H_EXTRA_LIBS WSDL2H_EXTRA_FLAGS WITH_OPENSSL WITH_OPENSSL_FALSE WITH_OPENSSL_TRUE SOAPCPP2_IPV6 SOAPCPP2_NO_C_LOCALE SOAPCPP2_NONAMESPACES WSDL2H_IMPORTPATH SOAPCPP2_IMPORTPATH SOAPCPP2_DEBUG DEBUG_COMPILE_FALSE DEBUG_COMPILE_TRUE LIB@&t@OBJS EGREP GREP platform SAMPLE_EXTRA_LIBS LN_S RANLIB CPP YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_debug enable_namespaces enable_c_locale enable_ipv6 with_zlib with_openssl enable_ssl enable_gnutls enable_samples ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gsoap 2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @<:@@S|@ac_default_prefix@:>@ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @<:@PREFIX@:>@ By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gsoap@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gsoap 2.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug add debug symbols for debugging --disable-namespaces compile library without namespaces --disable-c-locale compile library without c locale usage --enable-ipv6 compile library with IPv6 support --disable-ssl build without SSL/TLS --enable-gnutls build with GNUTLS SSL/TLS --enable-samples enable compile for the gsoap samples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-zlib=DIR zlib installation prefix --with-openssl=DIR openssl installation prefix Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to @S|@YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gsoap configure 2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## @%:@ ac_fn_cxx_try_compile LINENO @%:@ ---------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_cxx_try_compile @%:@ ac_fn_c_try_compile LINENO @%:@ -------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile @%:@ ac_fn_c_try_link LINENO @%:@ ----------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_link @%:@ ac_fn_c_try_cpp LINENO @%:@ ---------------------- @%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_cpp @%:@ ac_fn_c_try_run LINENO @%:@ ---------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes @%:@ that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_run @%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using @%:@ the include files in INCLUDES and setting the cache variable VAR @%:@ accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_mongrel @%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists and can be compiled using the include files in @%:@ INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_compile @%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES @%:@ ------------------------------------------- @%:@ Tests whether TYPE exists after having included INCLUDES, setting cache @%:@ variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_type @%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES @%:@ ---------------------------------------------------- @%:@ Tries to find if the field MEMBER exists in type AGGR, after including @%:@ INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_member @%:@ ac_fn_c_check_func LINENO FUNC VAR @%:@ ---------------------------------- @%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in @%:@(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in @%:@(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null @%:@ Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gsoap' VERSION='2.8' cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # AC_CONFIG_HEADERS([config.h]) ac_config_headers="$ac_config_headers config.h" # we use subdirs. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi #AM_PROG_LIBTOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # AC_DECL_YYTEXT SAMPLE_EXTRA_LIBS="-lm" # Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SUN_OS SAMPLE_EXTRA_LIBS="-lxnet -lsocket -lnsl -lm" WSDL2H_EXTRA_LIBS="-lxnet -lsocket -lnsl -lrt" ;; *-*-sysv5*) platform=UNIXWARE ;; *-*-UnixWare*) platform=UNIXWARE ;; *-*-unixware*) platform=UNIXWARE ;; *-*-sco3.2v5*) platform=OPENSERVER SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *-*-linux*) platform=LINUX # if test x$debug = xtrue; then # CFLAGS="-g" #don't want the -O2 for debugging. # else # CFLAGS="-O2" #don't want the -g for release compile. # fi ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW SAMPLE_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" WSDL2H_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" ;; *-*-freebsd*) platform=FREEBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX case "${host}" in *-*-aix4.1*) osver=AIX41;; *-*-aix4.2*) osver=AIX42;; *-*-aix4.3*) osver=AIX43;; *-*-aix4.*) osver=AIX43;; *-*-aix5.2) osver=AIX52;; *-*-aix5.3) osver=AIX53;; *-*-aix6.1) osver=AIX61;; esac ;; *-sequent-*) platform=PTX ;; *-*-hp*) platform=HP_UX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac ;; *-*-mvs*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-osf*) platform=TRU64 ;; *-apple-*) platform=MACOSX # Appease 10.7 Lion (OpenSSL deprecated) CXXFLAGS="-Wno-deprecated-declarations" CFLAGS="-Wno-deprecated-declarations" ;; *-nto-qnx) platform=QNX SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *) platform=UNKNOWN ;; esac # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h locale.h xlocale.h errno.h fcntl.h ctype.h limits.h float.h math.h netdb.h netinet/in.h stdlib.h string.h strings.h stdint.h inttypes.h time.h sys/inttypes.h sys/socket.h sys/types.h sys/time.h sys/timeb.h unistd.h poll.h openssl/ssl.h gnutls/gnutls.h zlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "@%:@define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "@%:@define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM___TM_GMTOFF 1 _ACEOF fi # Checks for library functions. for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIB@&t@OBJS " in *" mktime.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "@%:@define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in random gettimeofday ftime localtime_r timegm gmtime gmtime_r asctime asctime_r memset select socket snprintf strchr strerror strerror_r strlcpy strrchr strstr strtol strtoul strtoll strtoull strtold strtod strtof strtold_l strtod_l strtof_l sscanf sscanf_l snprintf sprintf_l wctomb mbtowc poll newlocale uselocale freelocale do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for isnan and isinf ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan" if test "x$ac_cv_func_isnan" = xyes; then : has_isnan=1; $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else has_isnan=0 fi ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf" if test "x$ac_cv_func_isinf" = xyes; then : has_isinf=1; $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else has_isinf=0 fi # check for macro isnan in math if test $has_isnan = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isnan" >&5 $as_echo_n "checking for macro isnan... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isnan(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isnan=1 else has_isnan=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isnan = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # check for macro isinf in math if test $has_isinf = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isinf" >&5 $as_echo_n "checking for macro isinf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isinf(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isinf=1 else has_isinf=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isinf = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Function test depending on platform # AIX Has incompatible gethostbyname_r if test $platform != AIX -a $platform != TRU64; then for ac_func in gethostbyname_r do : ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" if test "x$ac_cv_func_gethostbyname_r" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_GETHOSTBYNAME_R 1 _ACEOF fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h else $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h case " $LIB@&t@OBJS " in *" malloc.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext" ;; esac $as_echo "@%:@define malloc rpl_malloc" >>confdefs.h fi fi # the debug build options adds symbols to compiler output (-g for g++) @%:@ Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;; esac else debug=false fi if test x$debug = xtrue; then DEBUG_COMPILE_TRUE= DEBUG_COMPILE_FALSE='#' else DEBUG_COMPILE_TRUE='#' DEBUG_COMPILE_FALSE= fi if test x$debug = xtrue; then SOAPCPP2_DEBUG="-DDEBUG" ##define DEBUG for debugging else SOAPCPP2_DEBUG= fi # set the default soapcpp2 import path SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"${datadir}/gsoap/import\\\"\"" #SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"`pwd`/gsoap/import\\\"\"" # set the default wsdl2h import path WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"${datadir}/gsoap/WS\\\"\"" #WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"`pwd`/gsoap/WS\\\"\"" # the disable-namespaces option adds the -DWITH_NONAMESPACES to the # library compilation thus disabling namespaces @%:@ Check whether --enable-namespaces was given. if test "${enable_namespaces+set}" = set; then : enableval=$enable_namespaces; with_namespaces="$enable_ns" else with_namespaces="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable namespaces in library" >&5 $as_echo_n "checking for disable namespaces in library... " >&6; } if test "x$with_namespaces" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NONAMESPACES="-DWITH_NONAMESPACES" ##define to remove nsmap link dependence fi # the disable-c-locale option adds the -DWITH_NO_C_LOCALE to the # library compilation thus disabling the use of the C locale usage @%:@ Check whether --enable-c-locale was given. if test "${enable_c_locale+set}" = set; then : enableval=$enable_c_locale; with_no_c_locale="$enable_cl" else with_no_c_locale="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable c locale usage in library" >&5 $as_echo_n "checking for disable c locale usage in library... " >&6; } if test "x$with_no_c_locale" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NO_C_LOCALE="-DWITH_NO_C_LOCALE" fi # the enable-ipv6 option adds the -DWITH_IPV6 to the # library compilation thus enabling IPv6 @%:@ Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; with_ipv6="$enable_ipv6" else with_ipv6="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable ipv6 in library" >&5 $as_echo_n "checking for enable ipv6 in library... " >&6; } if test "x$with_ipv6" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_IPV6="-DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY" ##define to add IPv6 support else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # the zlib installation prefix path @%:@ Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; ZLIB=$withval fi # the OpenSSL installation prefix path @%:@ Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; OPENSSL=$withval fi # the disable-ssl option removes the dependence on OpenSSL @%:@ Check whether --enable-ssl was given. if test "${enable_ssl+set}" = set; then : enableval=$enable_ssl; with_openssl="$enable_openssl" else with_openssl="yes" fi # the enable-gnutls option enables GNUTLS in favor of OpenSSL @%:@ Check whether --enable-gnutls was given. if test "${enable_gnutls+set}" = set; then : enableval=$enable_gnutls; with_gnutls="$enable_gnutls" else with_gnutls="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable openssl in library" >&5 $as_echo_n "checking for disable openssl in library... " >&6; } if test "x$with_openssl" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable gnutls in library" >&5 $as_echo_n "checking for enable gnutls in library... " >&6; } if test "x$with_gnutls" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS -DWITH_GZIP" WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lgnutls -lgcrypt -lgpg-error -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" # compile with wsdl2h when OPENSSL is available WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lssl -lcrypto -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" fi if test -n "$ZLIB"; then WSDL2H_EXTRA_FLAGS="-I${ZLIB}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${ZLIB}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${ZLIB}/include ${SAMPLE_SSL_LIBS}" SAMPLE_SSL_LIBS="-L${ZLIB}/lib ${SAMPLE_SSL_LIBS}" fi if test -n "$OPENSSL"; then WSDL2H_EXTRA_FLAGS="-I${OPENSSL}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${OPENSSL}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${OPENSSL}/include" SAMPLE_SSL_LIBS="-L${OPENSSL}/lib ${SAMPLE_SSL_LIBS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS= SAMPLE_SSL_LIBS= SAMPLE_INCLUDES= WSDL2H_SOAP_CPP_LIB="libgsoap++.a" fi if test "x$with_openssl" = "xyes" -a "x$with_gnutls" != "xyes"; then WITH_OPENSSL_TRUE= WITH_OPENSSL_FALSE='#' else WITH_OPENSSL_TRUE='#' WITH_OPENSSL_FALSE= fi # enable the compile of the samples @%:@ Check whether --enable-samples was given. if test "${enable_samples+set}" = set; then : enableval=$enable_samples; case "${enableval}" in yes) samples=true ;; no) samples=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-samples" "$LINENO" 5 ;; esac else samples=false fi if test x$samples = xtrue; then ENABLE_SAMPLES_TRUE= ENABLE_SAMPLES_FALSE='#' else ENABLE_SAMPLES_TRUE='#' ENABLE_SAMPLES_FALSE= fi if test x$samples = xtrue; then SAMPLE_DIRS=". samples" else SAMPLE_DIRS= fi if test x$LEX = xflex; then LEX_DEFINE=-DWITH_FLEX LEX_FLAGS="-l" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No 'flex' command detected on current path: trying existing scanner" >&5 $as_echo "$as_me: WARNING: No 'flex' command detected on current path: trying existing scanner" >&2;} LEX_DEFINE=-DWITH_LEX LEX_FLAGS= fi # check if we must define -DWITH_BISON if test "$YACC" = "bison -y"; then BISON_DEFINE=-DWITH_BISON YACC_LIB= else BISON_DEFINE=-DWITH_YACC YACC_LIB="-ly" fi ac_config_files="$ac_config_files Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/autotest/Makefile gsoap/samples/aws/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/chaining/Makefile gsoap/samples/chaining++/Makefile gsoap/samples/databinding/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/oneway/Makefile gsoap/samples/oneway++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/primes/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/atom/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/template/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsrm/Makefile gsoap/samples/wsse/Makefile gsoap/samples/wst/Makefile gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile gsoap/samples/testmsgr/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_COMPILE_TRUE}" && test -z "${DEBUG_COMPILE_FALSE}"; then as_fn_error $? "conditional \"DEBUG_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_OPENSSL_TRUE}" && test -z "${WITH_OPENSSL_FALSE}"; then as_fn_error $? "conditional \"WITH_OPENSSL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gsoap config.status 2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc") CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc") CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc") CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc") CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/autotest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/autotest/Makefile" ;; "gsoap/samples/aws/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/aws/Makefile" ;; "gsoap/samples/calc/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/chaining/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining/Makefile" ;; "gsoap/samples/chaining++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining++/Makefile" ;; "gsoap/samples/databinding/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/databinding/Makefile" ;; "gsoap/samples/dime/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/oneway/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway/Makefile" ;; "gsoap/samples/oneway++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway++/Makefile" ;; "gsoap/samples/factory/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/primes/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/primes/Makefile" ;; "gsoap/samples/roll/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/atom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/atom/Makefile" ;; "gsoap/samples/rss/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/template/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/template/Makefile" ;; "gsoap/samples/udp/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsrm/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsrm/Makefile" ;; "gsoap/samples/wsse/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/wst/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wst/Makefile" ;; "gsoap/samples/xml-rpc-json/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc-json/Makefile" ;; "gsoap/samples/rest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rest/Makefile" ;; "gsoap/samples/testmsgr/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/testmsgr/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gsoap-2.8.60/autom4te.cache/output.30000644000175000017500000070335713227173553016537 0ustar ellertellert@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.69 for gsoap 2.8. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @%:@ @%:@ @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in @%:@( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gsoap' PACKAGE_TARNAME='gsoap' PACKAGE_VERSION='2.8' PACKAGE_STRING='gsoap 2.8' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="gsoap/stdsoap2.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS YACC_LIB BISON_DEFINE LEX_FLAGS LEX_DEFINE SAMPLE_DIRS ENABLE_SAMPLES ENABLE_SAMPLES_FALSE ENABLE_SAMPLES_TRUE WSDL2H_SOAP_CPP_LIB SAMPLE_SSL_LIBS SAMPLE_INCLUDES WSDL2H_EXTRA_LIBS WSDL2H_EXTRA_FLAGS SOAPCPP2_IPV6 SOAPCPP2_NONAMESPACES WSDL2H_IMPORTPATH SOAPCPP2_IMPORTPATH SOAPCPP2_DEBUG DEBUG_COMPILE_FALSE DEBUG_COMPILE_TRUE LIB@&t@OBJS EGREP GREP platform SAMPLE_EXTRA_LIBS LN_S RANLIB CPP YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_debug enable_namespaces enable_ipv6 with_zlib with_openssl enable_ssl enable_gnutls enable_samples ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gsoap 2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @<:@@S|@ac_default_prefix@:>@ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @<:@PREFIX@:>@ By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gsoap@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gsoap 2.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug add debug symbols for debugging --disable-namespaces compile library without namespaces --enable-ipv6 compile library with IPv6 support --disable-ssl build without SSL/TLS --enable-gnutls build with GNUTLS SSL/TLS --enable-samples enable compile for the gsoap samples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-zlib=DIR zlib installation prefix --with-openssl=DIR openssl installation prefix Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to @S|@YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gsoap configure 2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## @%:@ ac_fn_cxx_try_compile LINENO @%:@ ---------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_cxx_try_compile @%:@ ac_fn_c_try_compile LINENO @%:@ -------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile @%:@ ac_fn_c_try_link LINENO @%:@ ----------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_link @%:@ ac_fn_c_try_cpp LINENO @%:@ ---------------------- @%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_cpp @%:@ ac_fn_c_try_run LINENO @%:@ ---------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes @%:@ that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_run @%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using @%:@ the include files in INCLUDES and setting the cache variable VAR @%:@ accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_mongrel @%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists and can be compiled using the include files in @%:@ INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_compile @%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES @%:@ ------------------------------------------- @%:@ Tests whether TYPE exists after having included INCLUDES, setting cache @%:@ variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_type @%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES @%:@ ---------------------------------------------------- @%:@ Tries to find if the field MEMBER exists in type AGGR, after including @%:@ INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_member @%:@ ac_fn_c_check_func LINENO FUNC VAR @%:@ ---------------------------------- @%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in @%:@(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in @%:@(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null @%:@ Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gsoap' VERSION='2.8' cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # AC_CONFIG_HEADERS([config.h]) ac_config_headers="$ac_config_headers config.h" # we use subdirs. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi #AM_PROG_LIBTOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # AC_DECL_YYTEXT SAMPLE_EXTRA_LIBS="-lm" # Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SUN_OS SAMPLE_EXTRA_LIBS="-lxnet -lsocket -lnsl -lm" WSDL2H_EXTRA_LIBS="-lxnet -lsocket -lnsl -lrt" ;; *-*-sysv5*) platform=UNIXWARE ;; *-*-UnixWare*) platform=UNIXWARE ;; *-*-unixware*) platform=UNIXWARE ;; *-*-sco3.2v5*) platform=OPENSERVER SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *-*-linux*) platform=LINUX # if test x$debug = xtrue; then # CFLAGS="-g" #don't want the -O2 for debugging. # else # CFLAGS="-O2" #don't want the -g for release compile. # fi ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW SAMPLE_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" WSDL2H_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" ;; *-*-freebsd*) platform=FREEBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX case "${host}" in *-*-aix4.1*) osver=AIX41;; *-*-aix4.2*) osver=AIX42;; *-*-aix4.3*) osver=AIX43;; *-*-aix4.*) osver=AIX43;; *-*-aix5.2) osver=AIX52;; *-*-aix5.3) osver=AIX53;; *-*-aix6.1) osver=AIX61;; esac ;; *-sequent-*) platform=PTX ;; *-*-hp*) platform=HP_UX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac ;; *-*-mvs*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-osf*) platform=TRU64 ;; *-apple-*) platform=MACOSX # Appease 10.7 Lion (OpenSSL deprecated) CXXFLAGS="-Wno-deprecated-declarations" CFLAGS="-Wno-deprecated-declarations" ;; *-nto-qnx) platform=QNX SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *) platform=UNKNOWN ;; esac # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h xlocale.h errno.h fcntl.h ctype.h limits.h float.h math.h netdb.h netinet/in.h stdlib.h string.h strings.h stdint.h inttypes.h time.h sys/inttypes.h sys/socket.h sys/types.h sys/time.h sys/timeb.h unistd.h poll.h openssl/ssl.h gnutls/gnutls.h zlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "@%:@define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "@%:@define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM___TM_GMTOFF 1 _ACEOF fi # Checks for library functions. for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIB@&t@OBJS " in *" mktime.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "@%:@define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in random gettimeofday ftime localtime_r timegm gmtime gmtime_r asctime asctime_r memset select socket snprintf strchr strerror strerror_r strlcpy strrchr strstr strtol strtoul strtoll strtoull strtold strtod strtof strtold_l strtod_l strtof_l sscanf sscanf_l snprintf sprintf_l wctomb mbtowc poll do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for isnan and isinf ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan" if test "x$ac_cv_func_isnan" = xyes; then : has_isnan=1; $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else has_isnan=0 fi ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf" if test "x$ac_cv_func_isinf" = xyes; then : has_isinf=1; $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else has_isinf=0 fi # check for macro isnan in math if test $has_isnan = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isnan" >&5 $as_echo_n "checking for macro isnan... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isnan(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isnan=1 else has_isnan=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isnan = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # check for macro isinf in math if test $has_isinf = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isinf" >&5 $as_echo_n "checking for macro isinf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isinf(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isinf=1 else has_isinf=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isinf = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Function test depending on platform # AIX Has incompatible gethostbyname_r if test $platform != AIX -a $platform != TRU64; then for ac_func in gethostbyname_r do : ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" if test "x$ac_cv_func_gethostbyname_r" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_GETHOSTBYNAME_R 1 _ACEOF fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h else $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h case " $LIB@&t@OBJS " in *" malloc.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext" ;; esac $as_echo "@%:@define malloc rpl_malloc" >>confdefs.h fi fi # the debug build options adds symbols to compiler output (-g for g++) @%:@ Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;; esac else debug=false fi if test x$debug = xtrue; then DEBUG_COMPILE_TRUE= DEBUG_COMPILE_FALSE='#' else DEBUG_COMPILE_TRUE='#' DEBUG_COMPILE_FALSE= fi if test x$debug = xtrue; then SOAPCPP2_DEBUG="-DDEBUG" ##define DEBUG for debugging else SOAPCPP2_DEBUG= fi # set the default soapcpp2 import path SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"${datadir}/gsoap/import\\\"\"" #SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"`pwd`/gsoap/import\\\"\"" # set the default wsdl2h import path WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"${datadir}/gsoap/WS\\\"\"" #WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"`pwd`/gsoap/WS\\\"\"" # the disable-namespaces option adds the -DWITH_NONAMESPACES to the # library compilation thus disabling namespaces @%:@ Check whether --enable-namespaces was given. if test "${enable_namespaces+set}" = set; then : enableval=$enable_namespaces; with_namespaces="$enable_ns" else with_namespaces="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable namespaces in library" >&5 $as_echo_n "checking for disable namespaces in library... " >&6; } if test "x$with_namespaces" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NONAMESPACES="-DWITH_NONAMESPACES" ##define to remove nsmap link dependence fi # the enable-ipv6 option adds the -DWITH_IPV6 to the # library compilation thus enabling IPv6 @%:@ Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; with_ipv6="$enable_ipv6" else with_ipv6="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable ipv6 in library" >&5 $as_echo_n "checking for enable ipv6 in library... " >&6; } if test "x$with_ipv6" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_IPV6="-DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY" ##define to add IPv6 support else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # the zlib installation prefix path @%:@ Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; ZLIB=$withval fi # the OpenSSL installation prefix path @%:@ Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; OPENSSL=$withval fi # the disable-ssl option removes the dependence on OpenSSL @%:@ Check whether --enable-ssl was given. if test "${enable_ssl+set}" = set; then : enableval=$enable_ssl; with_openssl="$enable_openssl" else with_openssl="yes" fi # the enable-gnutls option enables GNUTLS in favor of OpenSSL @%:@ Check whether --enable-gnutls was given. if test "${enable_gnutls+set}" = set; then : enableval=$enable_gnutls; with_gnutls="$enable_gnutls" else with_gnutls="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable openssl in library" >&5 $as_echo_n "checking for disable openssl in library... " >&6; } if test "x$with_openssl" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable gnutls in library" >&5 $as_echo_n "checking for enable gnutls in library... " >&6; } if test "x$with_gnutls" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS -DWITH_GZIP" WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lgnutls -lgcrypt -lgpg-error -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" # an ugly hack to get httpda and smdevp plugins to conditionally # compile with wsdl2h when OPENSSL is available WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} ../plugin/httpda.c ../plugin/smdevp.c ../plugin/threads.c -lssl -lcrypto -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" fi if test -n "$ZLIB"; then WSDL2H_EXTRA_FLAGS="-I${ZLIB}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${ZLIB}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${ZLIB}/include ${SAMPLE_SSL_LIBS}" SAMPLE_SSL_LIBS="-L${ZLIB}/lib ${SAMPLE_SSL_LIBS}" fi if test -n "$OPENSSL"; then WSDL2H_EXTRA_FLAGS="-I${OPENSSL}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${OPENSSL}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${OPENSSL}/include" SAMPLE_SSL_LIBS="-L${OPENSSL}/lib ${SAMPLE_SSL_LIBS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS= SAMPLE_SSL_LIBS= SAMPLE_INCLUDES= WSDL2H_SOAP_CPP_LIB="libgsoap++.a" fi # enable the compile of the samples @%:@ Check whether --enable-samples was given. if test "${enable_samples+set}" = set; then : enableval=$enable_samples; case "${enableval}" in yes) samples=true ;; no) samples=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-samples" "$LINENO" 5 ;; esac else samples=false fi if test x$samples = xtrue; then ENABLE_SAMPLES_TRUE= ENABLE_SAMPLES_FALSE='#' else ENABLE_SAMPLES_TRUE='#' ENABLE_SAMPLES_FALSE= fi if test x$samples = xtrue; then SAMPLE_DIRS=". samples" else SAMPLE_DIRS= fi if test x$LEX = xflex; then LEX_DEFINE=-DWITH_FLEX LEX_FLAGS="-l" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No 'flex' command detected on current path: trying existing scanner" >&5 $as_echo "$as_me: WARNING: No 'flex' command detected on current path: trying existing scanner" >&2;} LEX_DEFINE=-DWITH_LEX LEX_FLAGS= fi # check if we must define -DWITH_BISON if test "$YACC" = "bison -y"; then BISON_DEFINE=-DWITH_BISON YACC_LIB= else BISON_DEFINE=-DWITH_YACC YACC_LIB="-ly" fi ac_config_files="$ac_config_files Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/autotest/Makefile gsoap/samples/aws/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/chaining/Makefile gsoap/samples/chaining++/Makefile gsoap/samples/databinding/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/oneway/Makefile gsoap/samples/oneway++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/primes/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/template/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsrm/Makefile gsoap/samples/wsse/Makefile gsoap/samples/wst/Makefile gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_COMPILE_TRUE}" && test -z "${DEBUG_COMPILE_FALSE}"; then as_fn_error $? "conditional \"DEBUG_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gsoap config.status 2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc") CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc") CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc") CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc") CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/autotest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/autotest/Makefile" ;; "gsoap/samples/aws/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/aws/Makefile" ;; "gsoap/samples/calc/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/chaining/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining/Makefile" ;; "gsoap/samples/chaining++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining++/Makefile" ;; "gsoap/samples/databinding/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/databinding/Makefile" ;; "gsoap/samples/dime/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/oneway/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway/Makefile" ;; "gsoap/samples/oneway++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway++/Makefile" ;; "gsoap/samples/factory/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/primes/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/primes/Makefile" ;; "gsoap/samples/roll/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/rss/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/template/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/template/Makefile" ;; "gsoap/samples/udp/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsrm/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsrm/Makefile" ;; "gsoap/samples/wsse/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/wst/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wst/Makefile" ;; "gsoap/samples/xml-rpc-json/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc-json/Makefile" ;; "gsoap/samples/rest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rest/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gsoap-2.8.60/autom4te.cache/output.40000644000175000017500000070631013227173553016530 0ustar ellertellert@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.69 for gsoap 2.8. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @%:@ @%:@ @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in @%:@( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gsoap' PACKAGE_TARNAME='gsoap' PACKAGE_VERSION='2.8' PACKAGE_STRING='gsoap 2.8' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="gsoap/stdsoap2.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS YACC_LIB BISON_DEFINE LEX_FLAGS LEX_DEFINE SAMPLE_DIRS ENABLE_SAMPLES ENABLE_SAMPLES_FALSE ENABLE_SAMPLES_TRUE WSDL2H_SOAP_CPP_LIB SAMPLE_SSL_LIBS SAMPLE_INCLUDES WSDL2H_EXTRA_LIBS WSDL2H_EXTRA_FLAGS WITH_OPENSSL WITH_OPENSSL_FALSE WITH_OPENSSL_TRUE SOAPCPP2_IPV6 SOAPCPP2_NO_C_LOCALE SOAPCPP2_NONAMESPACES WSDL2H_IMPORTPATH SOAPCPP2_IMPORTPATH SOAPCPP2_DEBUG DEBUG_COMPILE_FALSE DEBUG_COMPILE_TRUE LIB@&t@OBJS EGREP GREP platform SAMPLE_EXTRA_LIBS LN_S RANLIB CPP YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_debug enable_namespaces enable_c_locale enable_ipv6 with_zlib with_openssl enable_ssl enable_gnutls enable_samples ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gsoap 2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @<:@@S|@ac_default_prefix@:>@ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @<:@PREFIX@:>@ By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gsoap@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gsoap 2.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug add debug symbols for debugging --disable-namespaces compile library without namespaces --disable-c-locale compile library without c locale usage --enable-ipv6 compile library with IPv6 support --disable-ssl build without SSL/TLS --enable-gnutls build with GNUTLS SSL/TLS --enable-samples enable compile for the gsoap samples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-zlib=DIR zlib installation prefix --with-openssl=DIR openssl installation prefix Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to @S|@YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gsoap configure 2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## @%:@ ac_fn_cxx_try_compile LINENO @%:@ ---------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_cxx_try_compile @%:@ ac_fn_c_try_compile LINENO @%:@ -------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile @%:@ ac_fn_c_try_link LINENO @%:@ ----------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_link @%:@ ac_fn_c_try_cpp LINENO @%:@ ---------------------- @%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_cpp @%:@ ac_fn_c_try_run LINENO @%:@ ---------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes @%:@ that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_run @%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using @%:@ the include files in INCLUDES and setting the cache variable VAR @%:@ accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_mongrel @%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists and can be compiled using the include files in @%:@ INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_compile @%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES @%:@ ------------------------------------------- @%:@ Tests whether TYPE exists after having included INCLUDES, setting cache @%:@ variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_type @%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES @%:@ ---------------------------------------------------- @%:@ Tries to find if the field MEMBER exists in type AGGR, after including @%:@ INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_member @%:@ ac_fn_c_check_func LINENO FUNC VAR @%:@ ---------------------------------- @%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in @%:@(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in @%:@(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null @%:@ Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gsoap' VERSION='2.8' cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # AC_CONFIG_HEADERS([config.h]) ac_config_headers="$ac_config_headers config.h" # we use subdirs. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi #AM_PROG_LIBTOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # AC_DECL_YYTEXT SAMPLE_EXTRA_LIBS="-lm" # Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SUN_OS SAMPLE_EXTRA_LIBS="-lxnet -lsocket -lnsl -lm" WSDL2H_EXTRA_LIBS="-lxnet -lsocket -lnsl -lrt" ;; *-*-sysv5*) platform=UNIXWARE ;; *-*-UnixWare*) platform=UNIXWARE ;; *-*-unixware*) platform=UNIXWARE ;; *-*-sco3.2v5*) platform=OPENSERVER SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *-*-linux*) platform=LINUX # if test x$debug = xtrue; then # CFLAGS="-g" #don't want the -O2 for debugging. # else # CFLAGS="-O2" #don't want the -g for release compile. # fi ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW SAMPLE_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" WSDL2H_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" ;; *-*-freebsd*) platform=FREEBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX case "${host}" in *-*-aix4.1*) osver=AIX41;; *-*-aix4.2*) osver=AIX42;; *-*-aix4.3*) osver=AIX43;; *-*-aix4.*) osver=AIX43;; *-*-aix5.2) osver=AIX52;; *-*-aix5.3) osver=AIX53;; *-*-aix6.1) osver=AIX61;; esac ;; *-sequent-*) platform=PTX ;; *-*-hp*) platform=HP_UX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac ;; *-*-mvs*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-osf*) platform=TRU64 ;; *-apple-*) platform=MACOSX # Appease 10.7 Lion (OpenSSL deprecated) CXXFLAGS="-Wno-deprecated-declarations" CFLAGS="-Wno-deprecated-declarations" ;; *-nto-qnx) platform=QNX SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *) platform=UNKNOWN ;; esac # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h locale.h xlocale.h errno.h fcntl.h ctype.h limits.h float.h math.h netdb.h netinet/in.h stdlib.h string.h strings.h stdint.h inttypes.h time.h sys/inttypes.h sys/socket.h sys/types.h sys/time.h sys/timeb.h unistd.h poll.h openssl/ssl.h gnutls/gnutls.h zlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "@%:@define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "@%:@define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM___TM_GMTOFF 1 _ACEOF fi # Checks for library functions. for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIB@&t@OBJS " in *" mktime.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "@%:@define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in random gettimeofday ftime localtime_r timegm gmtime gmtime_r asctime asctime_r memset select socket snprintf strchr strerror strerror_r strlcpy strrchr strstr strtol strtoul strtoll strtoull strtold strtod strtof strtold_l strtod_l strtof_l sscanf sscanf_l snprintf sprintf_l wctomb mbtowc poll newlocale uselocale freelocale do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for isnan and isinf ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan" if test "x$ac_cv_func_isnan" = xyes; then : has_isnan=1; $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else has_isnan=0 fi ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf" if test "x$ac_cv_func_isinf" = xyes; then : has_isinf=1; $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else has_isinf=0 fi # check for macro isnan in math if test $has_isnan = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isnan" >&5 $as_echo_n "checking for macro isnan... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isnan(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isnan=1 else has_isnan=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isnan = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # check for macro isinf in math if test $has_isinf = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isinf" >&5 $as_echo_n "checking for macro isinf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isinf(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isinf=1 else has_isinf=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isinf = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Function test depending on platform # AIX Has incompatible gethostbyname_r if test $platform != AIX -a $platform != TRU64; then for ac_func in gethostbyname_r do : ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" if test "x$ac_cv_func_gethostbyname_r" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_GETHOSTBYNAME_R 1 _ACEOF fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h else $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h case " $LIB@&t@OBJS " in *" malloc.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext" ;; esac $as_echo "@%:@define malloc rpl_malloc" >>confdefs.h fi fi # the debug build options adds symbols to compiler output (-g for g++) @%:@ Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;; esac else debug=false fi if test x$debug = xtrue; then DEBUG_COMPILE_TRUE= DEBUG_COMPILE_FALSE='#' else DEBUG_COMPILE_TRUE='#' DEBUG_COMPILE_FALSE= fi if test x$debug = xtrue; then SOAPCPP2_DEBUG="-DDEBUG" ##define DEBUG for debugging else SOAPCPP2_DEBUG= fi # set the default soapcpp2 import path SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"${datadir}/gsoap/import\\\"\"" #SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"`pwd`/gsoap/import\\\"\"" # set the default wsdl2h import path WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"${datadir}/gsoap/WS\\\"\"" #WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"`pwd`/gsoap/WS\\\"\"" # the disable-namespaces option adds the -DWITH_NONAMESPACES to the # library compilation thus disabling namespaces @%:@ Check whether --enable-namespaces was given. if test "${enable_namespaces+set}" = set; then : enableval=$enable_namespaces; with_namespaces="$enable_ns" else with_namespaces="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable namespaces in library" >&5 $as_echo_n "checking for disable namespaces in library... " >&6; } if test "x$with_namespaces" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NONAMESPACES="-DWITH_NONAMESPACES" ##define to remove nsmap link dependence fi # the disable-c-locale option adds the -DWITH_NO_C_LOCALE to the # library compilation thus disabling the use of the C locale usage @%:@ Check whether --enable-c-locale was given. if test "${enable_c_locale+set}" = set; then : enableval=$enable_c_locale; with_no_c_locale="$enable_cl" else with_no_c_locale="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable c locale usage in library" >&5 $as_echo_n "checking for disable c locale usage in library... " >&6; } if test "x$with_no_c_locale" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NO_C_LOCALE="-DWITH_NO_C_LOCALE" fi # the enable-ipv6 option adds the -DWITH_IPV6 to the # library compilation thus enabling IPv6 @%:@ Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; with_ipv6="$enable_ipv6" else with_ipv6="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable ipv6 in library" >&5 $as_echo_n "checking for enable ipv6 in library... " >&6; } if test "x$with_ipv6" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_IPV6="-DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY" ##define to add IPv6 support else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # the zlib installation prefix path @%:@ Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; ZLIB=$withval fi # the OpenSSL installation prefix path @%:@ Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; OPENSSL=$withval fi # the disable-ssl option removes the dependence on OpenSSL @%:@ Check whether --enable-ssl was given. if test "${enable_ssl+set}" = set; then : enableval=$enable_ssl; with_openssl="$enable_openssl" else with_openssl="yes" fi # the enable-gnutls option enables GNUTLS in favor of OpenSSL @%:@ Check whether --enable-gnutls was given. if test "${enable_gnutls+set}" = set; then : enableval=$enable_gnutls; with_gnutls="$enable_gnutls" else with_gnutls="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable openssl in library" >&5 $as_echo_n "checking for disable openssl in library... " >&6; } if test "x$with_openssl" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable gnutls in library" >&5 $as_echo_n "checking for enable gnutls in library... " >&6; } if test "x$with_gnutls" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS -DWITH_GZIP" WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lgnutls -lgcrypt -lgpg-error -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" # compile with wsdl2h when OPENSSL is available WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lssl -lcrypto -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" fi if test -n "$ZLIB"; then WSDL2H_EXTRA_FLAGS="-I${ZLIB}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${ZLIB}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${ZLIB}/include ${SAMPLE_SSL_LIBS}" SAMPLE_SSL_LIBS="-L${ZLIB}/lib ${SAMPLE_SSL_LIBS}" fi if test -n "$OPENSSL"; then WSDL2H_EXTRA_FLAGS="-I${OPENSSL}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${OPENSSL}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${OPENSSL}/include" SAMPLE_SSL_LIBS="-L${OPENSSL}/lib ${SAMPLE_SSL_LIBS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS= SAMPLE_SSL_LIBS= SAMPLE_INCLUDES= WSDL2H_SOAP_CPP_LIB="libgsoap++.a" fi if test "x$with_openssl" = "xyes" -a "x$with_gnutls" != "xyes"; then WITH_OPENSSL_TRUE= WITH_OPENSSL_FALSE='#' else WITH_OPENSSL_TRUE='#' WITH_OPENSSL_FALSE= fi # enable the compile of the samples @%:@ Check whether --enable-samples was given. if test "${enable_samples+set}" = set; then : enableval=$enable_samples; case "${enableval}" in yes) samples=true ;; no) samples=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-samples" "$LINENO" 5 ;; esac else samples=false fi if test x$samples = xtrue; then ENABLE_SAMPLES_TRUE= ENABLE_SAMPLES_FALSE='#' else ENABLE_SAMPLES_TRUE='#' ENABLE_SAMPLES_FALSE= fi if test x$samples = xtrue; then SAMPLE_DIRS=". samples" else SAMPLE_DIRS= fi if test x$LEX = xflex; then LEX_DEFINE=-DWITH_FLEX LEX_FLAGS="-l" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No 'flex' command detected on current path: trying existing scanner" >&5 $as_echo "$as_me: WARNING: No 'flex' command detected on current path: trying existing scanner" >&2;} LEX_DEFINE=-DWITH_LEX LEX_FLAGS= fi # check if we must define -DWITH_BISON if test "$YACC" = "bison -y"; then BISON_DEFINE=-DWITH_BISON YACC_LIB= else BISON_DEFINE=-DWITH_YACC YACC_LIB="-ly" fi ac_config_files="$ac_config_files Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/autotest/Makefile gsoap/samples/aws/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/chaining/Makefile gsoap/samples/chaining++/Makefile gsoap/samples/databinding/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/oneway/Makefile gsoap/samples/oneway++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/primes/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/atom/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/template/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsrm/Makefile gsoap/samples/wsse/Makefile gsoap/samples/wst/Makefile gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile gsoap/samples/testmsgr/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_COMPILE_TRUE}" && test -z "${DEBUG_COMPILE_FALSE}"; then as_fn_error $? "conditional \"DEBUG_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WITH_OPENSSL_TRUE}" && test -z "${WITH_OPENSSL_FALSE}"; then as_fn_error $? "conditional \"WITH_OPENSSL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gsoap config.status 2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc") CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc") CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc") CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc") CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/autotest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/autotest/Makefile" ;; "gsoap/samples/aws/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/aws/Makefile" ;; "gsoap/samples/calc/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/chaining/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining/Makefile" ;; "gsoap/samples/chaining++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining++/Makefile" ;; "gsoap/samples/databinding/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/databinding/Makefile" ;; "gsoap/samples/dime/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/oneway/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway/Makefile" ;; "gsoap/samples/oneway++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway++/Makefile" ;; "gsoap/samples/factory/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/primes/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/primes/Makefile" ;; "gsoap/samples/roll/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/atom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/atom/Makefile" ;; "gsoap/samples/rss/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/template/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/template/Makefile" ;; "gsoap/samples/udp/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsrm/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsrm/Makefile" ;; "gsoap/samples/wsse/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/wst/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wst/Makefile" ;; "gsoap/samples/xml-rpc-json/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc-json/Makefile" ;; "gsoap/samples/rest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rest/Makefile" ;; "gsoap/samples/testmsgr/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/testmsgr/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gsoap-2.8.60/autom4te.cache/traces.20000644000175000017500000013766713227173553016464 0ustar ellertellertm4trace:/usr/local/share/aclocal-1.14/amversion.m4:20: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.14], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) m4trace:/usr/local/share/aclocal-1.14/amversion.m4:37: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) m4trace:/usr/local/share/aclocal-1.14/auxdir.m4:52: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) m4trace:/usr/local/share/aclocal-1.14/cond.m4:32: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) m4trace:/usr/local/share/aclocal-1.14/depend.m4:156: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) m4trace:/usr/local/share/aclocal-1.14/depend.m4:166: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) m4trace:/usr/local/share/aclocal-1.14/depend.m4:189: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) m4trace:/usr/local/share/aclocal-1.14/depout.m4:61: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ]) m4trace:/usr/local/share/aclocal-1.14/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) m4trace:/usr/local/share/aclocal-1.14/init.m4:167: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi]) m4trace:/usr/local/share/aclocal-1.14/init.m4:194: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) m4trace:/usr/local/share/aclocal-1.14/install-sh.m4:21: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) m4trace:/usr/local/share/aclocal-1.14/lead-dot.m4:19: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) m4trace:/usr/local/share/aclocal-1.14/lex.m4:19: -1- AC_DEFUN([AM_PROG_LEX], [AC_PREREQ([2.50])dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) m4trace:/usr/local/share/aclocal-1.14/make.m4:49: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) m4trace:/usr/local/share/aclocal-1.14/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) m4trace:/usr/local/share/aclocal-1.14/missing.m4:38: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:15: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:24: -1- AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:27: -1- AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:28: -1- AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:28: -1- AC_DEFUN([fp_C_PROTOTYPES], [AC_DIAGNOSE([obsolete], [The macro `fp_C_PROTOTYPES' is obsolete. You should run autoupdate.])dnl AM_C_PROTOTYPES]) m4trace:/usr/local/share/aclocal-1.14/options.m4:12: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) m4trace:/usr/local/share/aclocal-1.14/options.m4:18: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) m4trace:/usr/local/share/aclocal-1.14/options.m4:24: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) m4trace:/usr/local/share/aclocal-1.14/options.m4:30: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) m4trace:/usr/local/share/aclocal-1.14/prog-cc-c-o.m4:44: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) m4trace:/usr/local/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) m4trace:/usr/local/share/aclocal-1.14/runlog.m4:17: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) m4trace:/usr/local/share/aclocal-1.14/sanity.m4:82: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) m4trace:/usr/local/share/aclocal-1.14/silent.m4:60: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) m4trace:/usr/local/share/aclocal-1.14/strip.m4:28: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) m4trace:/usr/local/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) m4trace:/usr/local/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) m4trace:/usr/local/share/aclocal-1.14/tar.m4:132: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.ac:3: -1- AM_INIT_AUTOMAKE([foreign]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.ac:3: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.ac:3: -1- AM_AUTOMAKE_VERSION([1.14]) m4trace:configure.ac:3: -1- _AM_AUTOCONF_VERSION([2.69]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.ac:3: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.ac:3: -1- _AM_SET_OPTIONS([foreign]) m4trace:configure.ac:3: -1- _AM_SET_OPTION([foreign]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([foreign]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- AM_SANITY_CHECK m4trace:configure.ac:3: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.ac:3: -1- AM_MISSING_HAS_RUN m4trace:configure.ac:3: -1- AM_AUX_DIR_EXPAND m4trace:configure.ac:3: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.ac:3: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.ac:3: -1- AM_PROG_INSTALL_SH m4trace:configure.ac:3: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.ac:3: -1- AM_PROG_INSTALL_STRIP m4trace:configure.ac:3: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:3: -1- AM_SET_LEADING_DOT m4trace:configure.ac:3: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([tar-ustar]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([tar-pax]) m4trace:configure.ac:3: -1- _AM_PROG_TAR([v7]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.ac:3: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) m4trace:configure.ac:3: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.ac:3: -1- AM_SILENT_RULES m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_V$]) m4trace:configure.ac:3: -1- AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_V$]) m4trace:configure.ac:3: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_BACKSLASH$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_os$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_os$]) m4trace:configure.ac:8: -1- AM_CONFIG_HEADER([config.h]) m4trace:configure.ac:8: -1- _m4_warn([obsolete], ['AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead.], [/usr/local/share/aclocal-1.14/obsolete.m4:15: AM_CONFIG_HEADER is expanded from... configure.ac:8: the top level]) m4trace:configure.ac:11: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.ac:13: -1- _AM_DEPENDENCIES([CXX]) m4trace:configure.ac:13: -1- AM_SET_DEPDIR m4trace:configure.ac:13: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.ac:13: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.ac:13: -1- AM_MAKE_INCLUDE m4trace:configure.ac:13: -1- m4_pattern_allow([^am__include$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.ac:13: -1- AM_DEP_TRACK m4trace:configure.ac:13: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__nodep$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__nodep]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.ac:13: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.ac:14: -1- _AM_PROG_CC_C_O m4trace:configure.ac:14: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) m4trace:configure.ac:14: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.ac:14: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.ac:15: -1- AM_PROG_CC_C_O m4trace:configure.ac:16: -1- AM_PROG_LEX m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX$]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:16: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:19: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.ac:21: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.ac:22: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:90: -1- m4_pattern_allow([^SAMPLE_EXTRA_LIBS$]) m4trace:configure.ac:91: -1- m4_pattern_allow([^platform$]) m4trace:configure.ac:94: -1- m4_pattern_allow([^GREP$]) m4trace:configure.ac:94: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.ac:94: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.ac:98: -1- m4_pattern_allow([^const$]) m4trace:configure.ac:99: -1- m4_pattern_allow([^size_t$]) m4trace:configure.ac:100: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) m4trace:configure.ac:101: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_GMTOFF$]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM___TM_GMTOFF$]) m4trace:configure.ac:109: -1- AC_DEFUN([_AC_Header_sys_time_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" sys/time.h"])]) _AC_HEADERS_EXPANSION]) m4trace:configure.ac:109: -1- AC_DEFUN([_AC_Header_unistd_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" unistd.h"])]) _AC_HEADERS_EXPANSION]) m4trace:configure.ac:109: -1- AC_DEFUN([_AC_Func_alarm], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_func_list], [" alarm"])]) _AC_FUNCS_EXPANSION]) m4trace:configure.ac:109: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:110: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete. You should run autoupdate.], [../../lib/autoconf/types.m4:759: AC_TYPE_SIGNAL is expanded from... configure.ac:110: the top level]) m4trace:configure.ac:110: -1- m4_pattern_allow([^RETSIGTYPE$]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:115: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:116: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:124: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME_R$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:146: -1- m4_pattern_allow([^malloc$]) m4trace:configure.ac:157: -1- AM_CONDITIONAL([DEBUG_COMPILE], [test x$debug = xtrue]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_TRUE$]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_FALSE$]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:163: -1- m4_pattern_allow([^SOAPCPP2_DEBUG$]) m4trace:configure.ac:168: -1- m4_pattern_allow([^SOAPCPP2_IMPORTPATH$]) m4trace:configure.ac:173: -1- m4_pattern_allow([^WSDL2H_IMPORTPATH$]) m4trace:configure.ac:181: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:181: the top level]) m4trace:configure.ac:190: -1- m4_pattern_allow([^SOAPCPP2_NONAMESPACES$]) m4trace:configure.ac:198: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:198: the top level]) m4trace:configure.ac:207: -1- m4_pattern_allow([^SOAPCPP2_IPV6$]) m4trace:configure.ac:226: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:226: the top level]) m4trace:configure.ac:233: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:233: the top level]) m4trace:configure.ac:275: -1- m4_pattern_allow([^WSDL2H_EXTRA_FLAGS$]) m4trace:configure.ac:276: -1- m4_pattern_allow([^WSDL2H_EXTRA_LIBS$]) m4trace:configure.ac:277: -1- m4_pattern_allow([^SAMPLE_INCLUDES$]) m4trace:configure.ac:278: -1- m4_pattern_allow([^SAMPLE_SSL_LIBS$]) m4trace:configure.ac:279: -1- m4_pattern_allow([^WSDL2H_SOAP_CPP_LIB$]) m4trace:configure.ac:289: -1- AM_CONDITIONAL([ENABLE_SAMPLES], [test x$samples = xtrue]) m4trace:configure.ac:289: -1- m4_pattern_allow([^ENABLE_SAMPLES_TRUE$]) m4trace:configure.ac:289: -1- m4_pattern_allow([^ENABLE_SAMPLES_FALSE$]) m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:290: -1- m4_pattern_allow([^ENABLE_SAMPLES$]) m4trace:configure.ac:297: -1- m4_pattern_allow([^SAMPLE_DIRS$]) m4trace:configure.ac:307: -1- m4_pattern_allow([^LEX_DEFINE$]) m4trace:configure.ac:308: -1- m4_pattern_allow([^LEX_FLAGS$]) m4trace:configure.ac:309: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:319: -1- m4_pattern_allow([^BISON_DEFINE$]) m4trace:configure.ac:320: -1- m4_pattern_allow([^YACC_LIB$]) m4trace:configure.ac:367: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:367: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.ac:367: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.ac:367: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.ac:367: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.ac:367: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.ac:367: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.ac:367: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) m4trace:configure.ac:367: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS gsoap-2.8.60/autom4te.cache/traces.50000644000175000017500000015057713227173553016462 0ustar ellertellertm4trace:configure.ac:2: -1- AC_INIT([gsoap], [2.8]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:2: -1- AC_SUBST([SHELL]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL]) m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_URL]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix]) m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix]) m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name]) m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ['${datarootdir}/doc/${PACKAGE}'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ @%:@undef PACKAGE_NAME]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ @%:@undef PACKAGE_TARNAME]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ @%:@undef PACKAGE_VERSION]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ @%:@undef PACKAGE_STRING]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ @%:@undef PACKAGE_BUGREPORT]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ @%:@undef PACKAGE_URL]) m4trace:configure.ac:2: -1- AC_SUBST([DEFS]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS]) m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.ac:2: -1- AC_SUBST([LIBS]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:2: -1- AC_SUBST([build_alias]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias]) m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.ac:2: -1- AC_SUBST([host_alias]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias]) m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.ac:2: -1- AC_SUBST([target_alias]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias]) m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.ac:3: -1- AM_INIT_AUTOMAKE([foreign]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.ac:3: -1- AM_AUTOMAKE_VERSION([1.15]) m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.ac:3: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__isrc]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.ac:3: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([CYGPATH_W]) m4trace:configure.ac:3: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([PACKAGE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([VERSION]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ @%:@undef PACKAGE]) m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- AH_OUTPUT([VERSION], [/* Version number of package */ @%:@undef VERSION]) m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([missing]) m4trace:configure.ac:3: -1- AC_SUBST([ACLOCAL]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([ACLOCAL]) m4trace:configure.ac:3: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.ac:3: -1- AC_SUBST([AUTOCONF]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOCONF]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.ac:3: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOMAKE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.ac:3: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOHEADER]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.ac:3: -1- AC_SUBST([MAKEINFO]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([MAKEINFO]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.ac:3: -1- AC_SUBST([install_sh]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([install_sh]) m4trace:configure.ac:3: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.ac:3: -1- AC_SUBST([STRIP]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.ac:3: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.ac:3: -1- AC_SUBST([MKDIR_P]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([MKDIR_P]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.ac:3: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([mkdir_p]) m4trace:configure.ac:3: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.ac:3: -1- AC_SUBST([AWK]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:3: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:3: -1- AC_SUBST([am__leading_dot]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__leading_dot]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.ac:3: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AMTAR]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.ac:3: -1- AC_SUBST([am__tar]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__tar]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.ac:3: -1- AC_SUBST([am__untar]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__untar]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.ac:3: -1- AM_SILENT_RULES m4trace:configure.ac:3: -1- AC_SUBST([AM_V]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_V$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.ac:3: -1- AC_SUBST([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_V$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) m4trace:configure.ac:3: -1- AC_SUBST([AM_BACKSLASH]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_BACKSLASH]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_BACKSLASH$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) m4trace:configure.ac:5: -1- AC_CANONICAL_HOST m4trace:configure.ac:5: -1- AC_CANONICAL_BUILD m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([config.sub]) m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([config.guess]) m4trace:configure.ac:5: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build$]) m4trace:configure.ac:5: -1- AC_SUBST([build_cpu], [$[1]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_cpu]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.ac:5: -1- AC_SUBST([build_vendor], [$[2]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_vendor]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.ac:5: -1- AC_SUBST([build_os]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_os]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_os$]) m4trace:configure.ac:5: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host$]) m4trace:configure.ac:5: -1- AC_SUBST([host_cpu], [$[1]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_cpu]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.ac:5: -1- AC_SUBST([host_vendor], [$[2]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_vendor]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.ac:5: -1- AC_SUBST([host_os]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_os]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_os$]) m4trace:configure.ac:8: -1- _m4_warn([obsolete], ['AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead.], [aclocal.m4:769: AM_CONFIG_HEADER is expanded from... configure.ac:8: the top level]) m4trace:configure.ac:8: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.ac:11: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:11: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.ac:11: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:13: -1- AC_SUBST([CXX]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXXFLAGS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.ac:13: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:13: -1- AC_SUBST([LIBS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:13: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:13: -1- AC_SUBST([CXX]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([ac_ct_CXX]) m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.ac:13: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.ac:13: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.ac:13: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([OBJEXT]) m4trace:configure.ac:13: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.ac:13: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([DEPDIR]) m4trace:configure.ac:13: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.ac:13: -1- AC_SUBST([am__include]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__include]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__include$]) m4trace:configure.ac:13: -1- AC_SUBST([am__quote]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__quote]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.ac:13: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.ac:13: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([AMDEP_TRUE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.ac:13: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([AMDEP_FALSE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.ac:13: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- AC_SUBST([am__nodep]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__nodep]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__nodep$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__nodep]) m4trace:configure.ac:13: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXXDEPMODE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.ac:13: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:13: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.ac:13: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CFLAGS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CFLAGS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.ac:14: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:14: -1- AC_SUBST([LIBS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:14: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([ac_ct_CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.ac:14: -1- AC_REQUIRE_AUX_FILE([compile]) m4trace:configure.ac:14: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CCDEPMODE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.ac:14: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:14: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.ac:14: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.ac:15: -1- AM_PROG_CC_C_O m4trace:configure.ac:16: -1- AC_SUBST([LEX]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LEX]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX$]) m4trace:configure.ac:16: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.ac:16: -1- AC_SUBST([LEXLIB]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER]) m4trace:configure.ac:16: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.ac:16: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a `char@<:@@:>@\'. */ @%:@undef YYTEXT_POINTER]) m4trace:configure.ac:17: -1- AC_SUBST([YACC]) m4trace:configure.ac:17: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- AC_SUBST([YACC]) m4trace:configure.ac:17: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- AC_SUBST([YFLAGS]) m4trace:configure.ac:17: -1- AC_SUBST_TRACE([YFLAGS]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.ac:18: -1- AC_SUBST([CPP]) m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:18: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:18: -1- AC_SUBST([CPP]) m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:19: -1- AC_SUBST([RANLIB]) m4trace:configure.ac:19: -1- AC_SUBST_TRACE([RANLIB]) m4trace:configure.ac:19: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.ac:21: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.ac:21: -1- AC_SUBST_TRACE([LN_S]) m4trace:configure.ac:21: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.ac:22: -1- AC_SUBST([AWK]) m4trace:configure.ac:22: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.ac:22: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:90: -1- AC_SUBST([SAMPLE_EXTRA_LIBS]) m4trace:configure.ac:90: -1- AC_SUBST_TRACE([SAMPLE_EXTRA_LIBS]) m4trace:configure.ac:90: -1- m4_pattern_allow([^SAMPLE_EXTRA_LIBS$]) m4trace:configure.ac:91: -1- AC_SUBST([platform]) m4trace:configure.ac:91: -1- AC_SUBST_TRACE([platform]) m4trace:configure.ac:91: -1- m4_pattern_allow([^platform$]) m4trace:configure.ac:94: -1- AC_SUBST([GREP]) m4trace:configure.ac:94: -1- AC_SUBST_TRACE([GREP]) m4trace:configure.ac:94: -1- m4_pattern_allow([^GREP$]) m4trace:configure.ac:94: -1- AC_SUBST([EGREP]) m4trace:configure.ac:94: -1- AC_SUBST_TRACE([EGREP]) m4trace:configure.ac:94: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.ac:94: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.ac:94: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.ac:94: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ @%:@undef STDC_HEADERS]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ARPA_INET_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_LOCALE_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_XLOCALE_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_XLOCALE_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ERRNO_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_FCNTL_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_CTYPE_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_LIMITS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_FLOAT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_FLOAT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_MATH_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_MATH_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_NETDB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_NETINET_IN_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRING_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRINGS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDINT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_INTTYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_TIME_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_INTTYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_SOCKET_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIME_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIMEB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_POLL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_POLL_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_OPENSSL_SSL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_OPENSSL_SSL_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_GNUTLS_GNUTLS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_GNUTLS_GNUTLS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_ZLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ZLIB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_STAT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRING_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_MEMORY_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRINGS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_INTTYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDINT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.ac:98: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.ac:98: -1- m4_pattern_allow([^const$]) m4trace:configure.ac:98: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ @%:@undef const]) m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([size_t]) m4trace:configure.ac:99: -1- m4_pattern_allow([^size_t$]) m4trace:configure.ac:99: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ @%:@undef size_t]) m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) m4trace:configure.ac:100: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) m4trace:configure.ac:100: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ @%:@undef TIME_WITH_SYS_TIME]) m4trace:configure.ac:101: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) m4trace:configure.ac:101: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) m4trace:configure.ac:101: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ @%:@undef TM_IN_SYS_TIME]) m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_GMTOFF]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_GMTOFF$]) m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_GMTOFF], [/* Define to 1 if `tm_gmtoff\' is a member of `struct tm\'. */ @%:@undef HAVE_STRUCT_TM_TM_GMTOFF]) m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM___TM_GMTOFF]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM___TM_GMTOFF$]) m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_STRUCT_TM___TM_GMTOFF], [/* Define to 1 if `__tm_gmtoff\' is a member of `struct tm\'. */ @%:@undef HAVE_STRUCT_TM___TM_GMTOFF]) m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIME_H]) m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */ @%:@undef HAVE_ALARM]) m4trace:configure.ac:109: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"]) m4trace:configure.ac:109: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:109: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:109: -1- AC_LIBSOURCE([mktime.c]) m4trace:configure.ac:110: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete. You should run autoupdate.], [../../lib/autoconf/types.m4:759: AC_TYPE_SIGNAL is expanded from... configure.ac:110: the top level]) m4trace:configure.ac:110: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) m4trace:configure.ac:110: -1- m4_pattern_allow([^RETSIGTYPE$]) m4trace:configure.ac:110: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ @%:@undef RETSIGTYPE]) m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ @%:@undef HAVE_STRFTIME]) m4trace:configure.ac:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_RANDOM], [/* Define to 1 if you have the `random\' function. */ @%:@undef HAVE_RANDOM]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ @%:@undef HAVE_GETTIMEOFDAY]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_FTIME], [/* Define to 1 if you have the `ftime\' function. */ @%:@undef HAVE_FTIME]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_LOCALTIME_R], [/* Define to 1 if you have the `localtime_r\' function. */ @%:@undef HAVE_LOCALTIME_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_TIMEGM], [/* Define to 1 if you have the `timegm\' function. */ @%:@undef HAVE_TIMEGM]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_GMTIME], [/* Define to 1 if you have the `gmtime\' function. */ @%:@undef HAVE_GMTIME]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_GMTIME_R], [/* Define to 1 if you have the `gmtime_r\' function. */ @%:@undef HAVE_GMTIME_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_ASCTIME], [/* Define to 1 if you have the `asctime\' function. */ @%:@undef HAVE_ASCTIME]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_ASCTIME_R], [/* Define to 1 if you have the `asctime_r\' function. */ @%:@undef HAVE_ASCTIME_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ @%:@undef HAVE_MEMSET]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ @%:@undef HAVE_SELECT]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */ @%:@undef HAVE_SOCKET]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ @%:@undef HAVE_SNPRINTF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ @%:@undef HAVE_STRCHR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ @%:@undef HAVE_STRERROR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRERROR_R], [/* Define to 1 if you have the `strerror_r\' function. */ @%:@undef HAVE_STRERROR_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRLCPY], [/* Define to 1 if you have the `strlcpy\' function. */ @%:@undef HAVE_STRLCPY]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRRCHR], [/* Define to 1 if you have the `strrchr\' function. */ @%:@undef HAVE_STRRCHR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ @%:@undef HAVE_STRSTR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */ @%:@undef HAVE_STRTOL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ @%:@undef HAVE_STRTOUL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */ @%:@undef HAVE_STRTOLL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */ @%:@undef HAVE_STRTOULL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOLD], [/* Define to 1 if you have the `strtold\' function. */ @%:@undef HAVE_STRTOLD]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */ @%:@undef HAVE_STRTOD]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOF], [/* Define to 1 if you have the `strtof\' function. */ @%:@undef HAVE_STRTOF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOLD_L], [/* Define to 1 if you have the `strtold_l\' function. */ @%:@undef HAVE_STRTOLD_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOD_L], [/* Define to 1 if you have the `strtod_l\' function. */ @%:@undef HAVE_STRTOD_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOF_L], [/* Define to 1 if you have the `strtof_l\' function. */ @%:@undef HAVE_STRTOF_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SSCANF], [/* Define to 1 if you have the `sscanf\' function. */ @%:@undef HAVE_SSCANF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SSCANF_L], [/* Define to 1 if you have the `sscanf_l\' function. */ @%:@undef HAVE_SSCANF_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ @%:@undef HAVE_SNPRINTF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SPRINTF_L], [/* Define to 1 if you have the `sprintf_l\' function. */ @%:@undef HAVE_SPRINTF_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_WCTOMB], [/* Define to 1 if you have the `wctomb\' function. */ @%:@undef HAVE_WCTOMB]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_MBTOWC], [/* Define to 1 if you have the `mbtowc\' function. */ @%:@undef HAVE_MBTOWC]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_POLL], [/* Define to 1 if you have the `poll\' function. */ @%:@undef HAVE_POLL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_NEWLOCALE], [/* Define to 1 if you have the `newlocale\' function. */ @%:@undef HAVE_NEWLOCALE]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_USELOCALE], [/* Define to 1 if you have the `uselocale\' function. */ @%:@undef HAVE_USELOCALE]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_FREELOCALE], [/* Define to 1 if you have the `freelocale\' function. */ @%:@undef HAVE_FREELOCALE]) m4trace:configure.ac:115: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN]) m4trace:configure.ac:115: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:115: -1- AH_OUTPUT([HAVE_ISNAN], [/* isnan */ @%:@undef HAVE_ISNAN]) m4trace:configure.ac:116: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF]) m4trace:configure.ac:116: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:116: -1- AH_OUTPUT([HAVE_ISINF], [/* isinf */ @%:@undef HAVE_ISINF]) m4trace:configure.ac:124: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN]) m4trace:configure.ac:124: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:124: -1- AH_OUTPUT([HAVE_ISNAN], [/* isnan */ @%:@undef HAVE_ISNAN]) m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF]) m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_ISINF], [/* isinf */ @%:@undef HAVE_ISINF]) m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME_R], [/* Define to 1 if you have the `gethostbyname_r\' function. */ @%:@undef HAVE_GETHOSTBYNAME_R]) m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME_R]) m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME_R$]) m4trace:configure.ac:146: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and to 0 otherwise. */ @%:@undef HAVE_MALLOC]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS malloc.$ac_objext"]) m4trace:configure.ac:146: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:146: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:146: -1- AC_LIBSOURCE([malloc.c]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([malloc]) m4trace:configure.ac:146: -1- m4_pattern_allow([^malloc$]) m4trace:configure.ac:146: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */ @%:@undef malloc]) m4trace:configure.ac:157: -1- AM_CONDITIONAL([DEBUG_COMPILE], [test x$debug = xtrue]) m4trace:configure.ac:157: -1- AC_SUBST([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- AC_SUBST_TRACE([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_TRUE$]) m4trace:configure.ac:157: -1- AC_SUBST([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:157: -1- AC_SUBST_TRACE([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_FALSE$]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:163: -1- AC_SUBST([SOAPCPP2_DEBUG]) m4trace:configure.ac:163: -1- AC_SUBST_TRACE([SOAPCPP2_DEBUG]) m4trace:configure.ac:163: -1- m4_pattern_allow([^SOAPCPP2_DEBUG$]) m4trace:configure.ac:168: -1- AC_SUBST([SOAPCPP2_IMPORTPATH]) m4trace:configure.ac:168: -1- AC_SUBST_TRACE([SOAPCPP2_IMPORTPATH]) m4trace:configure.ac:168: -1- m4_pattern_allow([^SOAPCPP2_IMPORTPATH$]) m4trace:configure.ac:173: -1- AC_SUBST([WSDL2H_IMPORTPATH]) m4trace:configure.ac:173: -1- AC_SUBST_TRACE([WSDL2H_IMPORTPATH]) m4trace:configure.ac:173: -1- m4_pattern_allow([^WSDL2H_IMPORTPATH$]) m4trace:configure.ac:181: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:181: the top level]) m4trace:configure.ac:190: -1- AC_SUBST([SOAPCPP2_NONAMESPACES]) m4trace:configure.ac:190: -1- AC_SUBST_TRACE([SOAPCPP2_NONAMESPACES]) m4trace:configure.ac:190: -1- m4_pattern_allow([^SOAPCPP2_NONAMESPACES$]) m4trace:configure.ac:198: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:198: the top level]) m4trace:configure.ac:207: -1- AC_SUBST([SOAPCPP2_NO_C_LOCALE]) m4trace:configure.ac:207: -1- AC_SUBST_TRACE([SOAPCPP2_NO_C_LOCALE]) m4trace:configure.ac:207: -1- m4_pattern_allow([^SOAPCPP2_NO_C_LOCALE$]) m4trace:configure.ac:215: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:215: the top level]) m4trace:configure.ac:224: -1- AC_SUBST([SOAPCPP2_IPV6]) m4trace:configure.ac:224: -1- AC_SUBST_TRACE([SOAPCPP2_IPV6]) m4trace:configure.ac:224: -1- m4_pattern_allow([^SOAPCPP2_IPV6$]) m4trace:configure.ac:243: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:243: the top level]) m4trace:configure.ac:250: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:250: the top level]) m4trace:configure.ac:291: -1- AM_CONDITIONAL([WITH_OPENSSL], [test "x$with_openssl" = "xyes" -a "x$with_gnutls" != "xyes"]) m4trace:configure.ac:291: -1- AC_SUBST([WITH_OPENSSL_TRUE]) m4trace:configure.ac:291: -1- AC_SUBST_TRACE([WITH_OPENSSL_TRUE]) m4trace:configure.ac:291: -1- m4_pattern_allow([^WITH_OPENSSL_TRUE$]) m4trace:configure.ac:291: -1- AC_SUBST([WITH_OPENSSL_FALSE]) m4trace:configure.ac:291: -1- AC_SUBST_TRACE([WITH_OPENSSL_FALSE]) m4trace:configure.ac:291: -1- m4_pattern_allow([^WITH_OPENSSL_FALSE$]) m4trace:configure.ac:291: -1- _AM_SUBST_NOTMAKE([WITH_OPENSSL_TRUE]) m4trace:configure.ac:291: -1- _AM_SUBST_NOTMAKE([WITH_OPENSSL_FALSE]) m4trace:configure.ac:292: -1- AC_SUBST([WITH_OPENSSL]) m4trace:configure.ac:292: -1- AC_SUBST_TRACE([WITH_OPENSSL]) m4trace:configure.ac:292: -1- m4_pattern_allow([^WITH_OPENSSL$]) m4trace:configure.ac:293: -1- AC_SUBST([WSDL2H_EXTRA_FLAGS]) m4trace:configure.ac:293: -1- AC_SUBST_TRACE([WSDL2H_EXTRA_FLAGS]) m4trace:configure.ac:293: -1- m4_pattern_allow([^WSDL2H_EXTRA_FLAGS$]) m4trace:configure.ac:294: -1- AC_SUBST([WSDL2H_EXTRA_LIBS]) m4trace:configure.ac:294: -1- AC_SUBST_TRACE([WSDL2H_EXTRA_LIBS]) m4trace:configure.ac:294: -1- m4_pattern_allow([^WSDL2H_EXTRA_LIBS$]) m4trace:configure.ac:295: -1- AC_SUBST([SAMPLE_INCLUDES]) m4trace:configure.ac:295: -1- AC_SUBST_TRACE([SAMPLE_INCLUDES]) m4trace:configure.ac:295: -1- m4_pattern_allow([^SAMPLE_INCLUDES$]) m4trace:configure.ac:296: -1- AC_SUBST([SAMPLE_SSL_LIBS]) m4trace:configure.ac:296: -1- AC_SUBST_TRACE([SAMPLE_SSL_LIBS]) m4trace:configure.ac:296: -1- m4_pattern_allow([^SAMPLE_SSL_LIBS$]) m4trace:configure.ac:297: -1- AC_SUBST([WSDL2H_SOAP_CPP_LIB]) m4trace:configure.ac:297: -1- AC_SUBST_TRACE([WSDL2H_SOAP_CPP_LIB]) m4trace:configure.ac:297: -1- m4_pattern_allow([^WSDL2H_SOAP_CPP_LIB$]) m4trace:configure.ac:307: -1- AM_CONDITIONAL([ENABLE_SAMPLES], [test x$samples = xtrue]) m4trace:configure.ac:307: -1- AC_SUBST([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:307: -1- AC_SUBST_TRACE([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:307: -1- m4_pattern_allow([^ENABLE_SAMPLES_TRUE$]) m4trace:configure.ac:307: -1- AC_SUBST([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:307: -1- AC_SUBST_TRACE([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:307: -1- m4_pattern_allow([^ENABLE_SAMPLES_FALSE$]) m4trace:configure.ac:307: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:307: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:308: -1- AC_SUBST([ENABLE_SAMPLES]) m4trace:configure.ac:308: -1- AC_SUBST_TRACE([ENABLE_SAMPLES]) m4trace:configure.ac:308: -1- m4_pattern_allow([^ENABLE_SAMPLES$]) m4trace:configure.ac:315: -1- AC_SUBST([SAMPLE_DIRS]) m4trace:configure.ac:315: -1- AC_SUBST_TRACE([SAMPLE_DIRS]) m4trace:configure.ac:315: -1- m4_pattern_allow([^SAMPLE_DIRS$]) m4trace:configure.ac:325: -1- AC_SUBST([LEX_DEFINE]) m4trace:configure.ac:325: -1- AC_SUBST_TRACE([LEX_DEFINE]) m4trace:configure.ac:325: -1- m4_pattern_allow([^LEX_DEFINE$]) m4trace:configure.ac:326: -1- AC_SUBST([LEX_FLAGS]) m4trace:configure.ac:326: -1- AC_SUBST_TRACE([LEX_FLAGS]) m4trace:configure.ac:326: -1- m4_pattern_allow([^LEX_FLAGS$]) m4trace:configure.ac:327: -1- AC_SUBST([LEXLIB]) m4trace:configure.ac:327: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.ac:327: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:337: -1- AC_SUBST([BISON_DEFINE]) m4trace:configure.ac:337: -1- AC_SUBST_TRACE([BISON_DEFINE]) m4trace:configure.ac:337: -1- m4_pattern_allow([^BISON_DEFINE$]) m4trace:configure.ac:338: -1- AC_SUBST([YACC_LIB]) m4trace:configure.ac:338: -1- AC_SUBST_TRACE([YACC_LIB]) m4trace:configure.ac:338: -1- m4_pattern_allow([^YACC_LIB$]) m4trace:configure.ac:386: -1- AC_CONFIG_FILES([ Makefile \ gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc \ gsoap/Makefile \ gsoap/src/Makefile \ gsoap/wsdl/Makefile \ gsoap/samples/Makefile \ gsoap/samples/autotest/Makefile \ gsoap/samples/aws/Makefile \ gsoap/samples/calc/Makefile \ gsoap/samples/calc++/Makefile \ gsoap/samples/chaining/Makefile \ gsoap/samples/chaining++/Makefile \ gsoap/samples/databinding/Makefile \ gsoap/samples/dime/Makefile \ gsoap/samples/dom/Makefile \ gsoap/samples/oneway/Makefile \ gsoap/samples/oneway++/Makefile \ gsoap/samples/factory/Makefile \ gsoap/samples/factorytest/Makefile \ gsoap/samples/gmt/Makefile \ gsoap/samples/googleapi/Makefile \ gsoap/samples/hello/Makefile \ gsoap/samples/httpcookies/Makefile \ gsoap/samples/lu/Makefile \ gsoap/samples/magic/Makefile \ gsoap/samples/mashup/Makefile \ gsoap/samples/mashup++/Makefile \ gsoap/samples/mtom/Makefile \ gsoap/samples/mtom-stream/Makefile \ gsoap/samples/polytest/Makefile \ gsoap/samples/primes/Makefile \ gsoap/samples/roll/Makefile \ gsoap/samples/router/Makefile \ gsoap/samples/atom/Makefile \ gsoap/samples/rss/Makefile \ gsoap/samples/ssl/Makefile \ gsoap/samples/template/Makefile \ gsoap/samples/udp/Makefile \ gsoap/samples/varparam/Makefile \ gsoap/samples/wsa/Makefile \ gsoap/samples/wsrm/Makefile \ gsoap/samples/wsse/Makefile \ gsoap/samples/wst/Makefile \ gsoap/samples/xml-rpc-json/Makefile \ gsoap/samples/rest/Makefile \ gsoap/samples/testmsgr/Makefile ]) m4trace:configure.ac:387: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:387: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:387: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([LTLIBOBJS]) m4trace:configure.ac:387: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.ac:387: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.ac:387: -1- AC_SUBST([am__EXEEXT_TRUE]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) m4trace:configure.ac:387: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.ac:387: -1- AC_SUBST([am__EXEEXT_FALSE]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) m4trace:configure.ac:387: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.ac:387: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.ac:387: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([top_builddir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([top_build_prefix]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([srcdir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([abs_srcdir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([top_srcdir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([abs_top_srcdir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([builddir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([abs_builddir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([abs_top_builddir]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([INSTALL]) m4trace:configure.ac:387: -1- AC_SUBST_TRACE([MKDIR_P]) gsoap-2.8.60/autom4te.cache/requests0000644000175000017500000005373013227173561016701 0ustar ellertellert# This file was generated. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/usr/local/share/autoconf' ], [ '/usr/local/share/autoconf/autoconf/autoconf.m4f', '-', '/usr/local/share/aclocal-1.14/internal/ac-config-macro-dirs.m4', '/usr/local/share/aclocal-1.14/amversion.m4', '/usr/local/share/aclocal-1.14/auxdir.m4', '/usr/local/share/aclocal-1.14/cond.m4', '/usr/local/share/aclocal-1.14/depend.m4', '/usr/local/share/aclocal-1.14/depout.m4', '/usr/local/share/aclocal-1.14/init.m4', '/usr/local/share/aclocal-1.14/install-sh.m4', '/usr/local/share/aclocal-1.14/lead-dot.m4', '/usr/local/share/aclocal-1.14/lex.m4', '/usr/local/share/aclocal-1.14/make.m4', '/usr/local/share/aclocal-1.14/missing.m4', '/usr/local/share/aclocal-1.14/obsolete.m4', '/usr/local/share/aclocal-1.14/options.m4', '/usr/local/share/aclocal-1.14/prog-cc-c-o.m4', '/usr/local/share/aclocal-1.14/runlog.m4', '/usr/local/share/aclocal-1.14/sanity.m4', '/usr/local/share/aclocal-1.14/silent.m4', '/usr/local/share/aclocal-1.14/strip.m4', '/usr/local/share/aclocal-1.14/substnot.m4', '/usr/local/share/aclocal-1.14/tar.m4', 'configure.in' ], { '_m4_warn' => 1, 'AM_DEP_TRACK' => 1, 'AM_AUX_DIR_EXPAND' => 1, 'AM_MISSING_PROG' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, '_AM_MANGLE_OPTION' => 1, 'include' => 1, '_AM_SUBST_NOTMAKE' => 1, '_AM_DEPENDENCIES' => 1, 'AM_SILENT_RULES' => 1, 'fp_C_PROTOTYPES' => 1, 'AM_CONDITIONAL' => 1, 'AM_RUN_LOG' => 1, '_AM_PROG_TAR' => 1, 'AM_C_PROTOTYPES' => 1, '_AM_CONFIG_MACRO_DIRS' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AU_DEFUN' => 1, 'AM_PROG_CC_STDC' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AM_PROG_INSTALL_STRIP' => 1, 'AM_PROG_CC_C_O' => 1, 'm4_pattern_forbid' => 1, 'AM_SET_LEADING_DOT' => 1, 'm4_pattern_allow' => 1, 'm4_include' => 1, '_AM_SET_OPTIONS' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, 'AM_PROG_INSTALL_SH' => 1, 'AM_MAKE_INCLUDE' => 1, 'AC_DEFUN_ONCE' => 1, 'AM_SET_DEPDIR' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_CONFIG_MACRO_DIR' => 1, 'AM_SUBST_NOTMAKE' => 1, 'AM_CONFIG_HEADER' => 1, 'AM_SANITY_CHECK' => 1, 'AC_DEFUN' => 1, '_AM_IF_OPTION' => 1, '_AM_PROG_CC_C_O' => 1, '_AM_AUTOCONF_VERSION' => 1, '_AM_SET_OPTION' => 1, 'AM_MISSING_HAS_RUN' => 1, 'AM_PROG_LEX' => 1 } ], 'Autom4te::Request' ), bless( [ '1', 1, [ '/usr/local/share/autoconf' ], [ '/usr/local/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.in' ], { 'AM_MAINTAINER_MODE' => 1, 'AC_CANONICAL_BUILD' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, 'm4_sinclude' => 1, 'AM_PROG_F77_C_O' => 1, 'AC_REQUIRE_AUX_FILE' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_SUBST_TRACE' => 1, '_LT_AC_TAGCONFIG' => 1, 'AM_NLS' => 1, 'AM_PATH_GUILE' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'AM_PROG_CC_C_O' => 1, 'm4_pattern_forbid' => 1, '_AM_COND_IF' => 1, 'AC_CONFIG_HEADERS' => 1, 'AM_PROG_CXX_C_O' => 1, 'AC_CANONICAL_HOST' => 1, 'AM_PROG_AR' => 1, 'AM_MAKEFILE_INCLUDE' => 1, 'AH_OUTPUT' => 1, 'LT_INIT' => 1, 'm4_pattern_allow' => 1, 'm4_include' => 1, 'LT_SUPPORTED_TAG' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_CANONICAL_TARGET' => 1, '_AM_COND_ENDIF' => 1, 'AM_INIT_AUTOMAKE' => 1, 'sinclude' => 1, 'AM_PROG_MOC' => 1, 'AM_PROG_MKDIR_P' => 1, 'AC_LIBSOURCE' => 1, '_AM_MAKEFILE_INCLUDE' => 1, 'AC_FC_FREEFORM' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_CONFIG_FILES' => 1, 'AC_SUBST' => 1, 'AM_ENABLE_MULTILIB' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_FC_PP_SRCEXT' => 1, '_m4_warn' => 1, '_AM_COND_ELSE' => 1, 'AC_FC_PP_DEFINE' => 1, 'AM_CONDITIONAL' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AM_PROG_FC_C_O' => 1, 'AC_FC_SRCEXT' => 1, 'AM_XGETTEXT_OPTION' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AM_POT_TOOLS' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_INIT' => 1, 'include' => 1, 'AM_EXTRA_RECURSIVE_TARGETS' => 1, 'AM_SILENT_RULES' => 1 } ], 'Autom4te::Request' ), bless( [ '2', 1, [ '/usr/local/share/autoconf' ], [ '/usr/local/share/autoconf/autoconf/autoconf.m4f', '-', '/usr/local/share/aclocal-1.14/internal/ac-config-macro-dirs.m4', '/usr/local/share/aclocal-1.14/amversion.m4', '/usr/local/share/aclocal-1.14/auxdir.m4', '/usr/local/share/aclocal-1.14/cond.m4', '/usr/local/share/aclocal-1.14/depend.m4', '/usr/local/share/aclocal-1.14/depout.m4', '/usr/local/share/aclocal-1.14/init.m4', '/usr/local/share/aclocal-1.14/install-sh.m4', '/usr/local/share/aclocal-1.14/lead-dot.m4', '/usr/local/share/aclocal-1.14/lex.m4', '/usr/local/share/aclocal-1.14/make.m4', '/usr/local/share/aclocal-1.14/missing.m4', '/usr/local/share/aclocal-1.14/obsolete.m4', '/usr/local/share/aclocal-1.14/options.m4', '/usr/local/share/aclocal-1.14/prog-cc-c-o.m4', '/usr/local/share/aclocal-1.14/runlog.m4', '/usr/local/share/aclocal-1.14/sanity.m4', '/usr/local/share/aclocal-1.14/silent.m4', '/usr/local/share/aclocal-1.14/strip.m4', '/usr/local/share/aclocal-1.14/substnot.m4', '/usr/local/share/aclocal-1.14/tar.m4', 'configure.ac' ], { 'AM_RUN_LOG' => 1, '_AM_PROG_TAR' => 1, 'AM_C_PROTOTYPES' => 1, '_AM_CONFIG_MACRO_DIRS' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AM_PROG_CC_STDC' => 1, 'AU_DEFUN' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AM_PROG_INSTALL_STRIP' => 1, 'AM_DEP_TRACK' => 1, '_m4_warn' => 1, 'AM_AUX_DIR_EXPAND' => 1, 'AM_MISSING_PROG' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, '_AM_MANGLE_OPTION' => 1, 'include' => 1, '_AM_SUBST_NOTMAKE' => 1, '_AM_DEPENDENCIES' => 1, 'AM_SILENT_RULES' => 1, 'fp_C_PROTOTYPES' => 1, 'AM_CONDITIONAL' => 1, 'AM_SET_DEPDIR' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AM_SUBST_NOTMAKE' => 1, 'AC_CONFIG_MACRO_DIR' => 1, 'AM_CONFIG_HEADER' => 1, 'AM_SANITY_CHECK' => 1, 'AC_DEFUN' => 1, '_AM_IF_OPTION' => 1, '_AM_PROG_CC_C_O' => 1, '_AM_AUTOCONF_VERSION' => 1, '_AM_SET_OPTION' => 1, 'AM_MISSING_HAS_RUN' => 1, 'AM_PROG_LEX' => 1, 'AM_PROG_CC_C_O' => 1, 'm4_pattern_forbid' => 1, 'AM_SET_LEADING_DOT' => 1, 'm4_include' => 1, 'm4_pattern_allow' => 1, '_AM_SET_OPTIONS' => 1, 'AM_PROG_INSTALL_SH' => 1, 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, 'AM_MAKE_INCLUDE' => 1, 'AC_DEFUN_ONCE' => 1 } ], 'Autom4te::Request' ), bless( [ '3', 1, [ '/usr/local/share/autoconf' ], [ '/usr/local/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.ac' ], { 'AC_FC_PP_DEFINE' => 1, 'AC_FC_PP_SRCEXT' => 1, 'AC_CONFIG_LINKS' => 1, '_AM_COND_ELSE' => 1, '_m4_warn' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AM_SILENT_RULES' => 1, 'AM_EXTRA_RECURSIVE_TARGETS' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_INIT' => 1, 'include' => 1, 'AC_FC_SRCEXT' => 1, 'AM_PROG_FC_C_O' => 1, 'AM_XGETTEXT_OPTION' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AM_POT_TOOLS' => 1, 'AM_CONDITIONAL' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_SUBST' => 1, 'AC_LIBSOURCE' => 1, 'AC_FC_FREEFORM' => 1, '_AM_MAKEFILE_INCLUDE' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_CONFIG_FILES' => 1, 'sinclude' => 1, 'AM_PROG_MOC' => 1, 'AM_PROG_MKDIR_P' => 1, '_AM_COND_ENDIF' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_CANONICAL_TARGET' => 1, 'AM_PROG_CXX_C_O' => 1, 'AC_CONFIG_HEADERS' => 1, 'AM_PROG_AR' => 1, 'AC_CANONICAL_HOST' => 1, 'm4_pattern_forbid' => 1, 'AM_PROG_CC_C_O' => 1, '_AM_COND_IF' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'm4_include' => 1, 'LT_SUPPORTED_TAG' => 1, 'm4_pattern_allow' => 1, 'AH_OUTPUT' => 1, 'LT_INIT' => 1, 'AM_MAKEFILE_INCLUDE' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AM_PROG_F77_C_O' => 1, 'AC_REQUIRE_AUX_FILE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'm4_sinclude' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_CANONICAL_BUILD' => 1, 'AM_PATH_GUILE' => 1, 'AM_NLS' => 1, '_LT_AC_TAGCONFIG' => 1, 'AC_SUBST_TRACE' => 1 } ], 'Autom4te::Request' ), bless( [ '4', 1, [ '/opt/local/share/autoconf' ], [ '/opt/local/share/autoconf/autoconf/autoconf.m4f', '-', '/opt/local/share/aclocal-1.15/internal/ac-config-macro-dirs.m4', '/opt/local/share/aclocal-1.15/amversion.m4', '/opt/local/share/aclocal-1.15/auxdir.m4', '/opt/local/share/aclocal-1.15/cond.m4', '/opt/local/share/aclocal-1.15/depend.m4', '/opt/local/share/aclocal-1.15/depout.m4', '/opt/local/share/aclocal-1.15/init.m4', '/opt/local/share/aclocal-1.15/install-sh.m4', '/opt/local/share/aclocal-1.15/lead-dot.m4', '/opt/local/share/aclocal-1.15/lex.m4', '/opt/local/share/aclocal-1.15/make.m4', '/opt/local/share/aclocal-1.15/missing.m4', '/opt/local/share/aclocal-1.15/obsolete.m4', '/opt/local/share/aclocal-1.15/options.m4', '/opt/local/share/aclocal-1.15/prog-cc-c-o.m4', '/opt/local/share/aclocal-1.15/runlog.m4', '/opt/local/share/aclocal-1.15/sanity.m4', '/opt/local/share/aclocal-1.15/silent.m4', '/opt/local/share/aclocal-1.15/strip.m4', '/opt/local/share/aclocal-1.15/substnot.m4', '/opt/local/share/aclocal-1.15/tar.m4', 'configure.ac' ], { 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, 'AM_PROG_INSTALL_SH' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, '_AM_SET_OPTIONS' => 1, 'AC_DEFUN_ONCE' => 1, 'AM_MAKE_INCLUDE' => 1, 'm4_pattern_allow' => 1, 'm4_include' => 1, 'AM_SET_LEADING_DOT' => 1, 'AM_PROG_CC_C_O' => 1, 'm4_pattern_forbid' => 1, 'AM_MISSING_HAS_RUN' => 1, 'AM_PROG_LEX' => 1, '_AM_IF_OPTION' => 1, 'AC_DEFUN' => 1, '_AM_SET_OPTION' => 1, '_AM_AUTOCONF_VERSION' => 1, '_AM_PROG_CC_C_O' => 1, 'AM_SUBST_NOTMAKE' => 1, 'AC_CONFIG_MACRO_DIR' => 1, 'AM_SANITY_CHECK' => 1, 'AM_CONFIG_HEADER' => 1, 'AM_SET_DEPDIR' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AM_CONDITIONAL' => 1, '_AM_SUBST_NOTMAKE' => 1, 'include' => 1, 'fp_C_PROTOTYPES' => 1, 'AM_SILENT_RULES' => 1, '_AM_DEPENDENCIES' => 1, '_AM_MANGLE_OPTION' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, '_m4_warn' => 1, 'AM_DEP_TRACK' => 1, 'AM_MISSING_PROG' => 1, 'AM_AUX_DIR_EXPAND' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AM_PROG_CC_STDC' => 1, 'AU_DEFUN' => 1, 'AM_PROG_INSTALL_STRIP' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AM_C_PROTOTYPES' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, '_AM_CONFIG_MACRO_DIRS' => 1, 'AM_RUN_LOG' => 1, '_AM_PROG_TAR' => 1 } ], 'Autom4te::Request' ), bless( [ '5', 1, [ '/opt/local/share/autoconf' ], [ '/opt/local/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.ac' ], { 'AC_PROG_LIBTOOL' => 1, 'AC_SUBST' => 1, 'AC_FC_FREEFORM' => 1, '_AM_MAKEFILE_INCLUDE' => 1, 'AC_LIBSOURCE' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_CONFIG_FILES' => 1, 'AM_PROG_MOC' => 1, 'sinclude' => 1, 'AM_PROG_MKDIR_P' => 1, 'AM_INIT_AUTOMAKE' => 1, '_AM_COND_ENDIF' => 1, 'AC_CANONICAL_TARGET' => 1, 'AC_FC_PP_DEFINE' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_FC_PP_SRCEXT' => 1, '_AM_COND_ELSE' => 1, '_m4_warn' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AM_EXTRA_RECURSIVE_TARGETS' => 1, 'AM_SILENT_RULES' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_INIT' => 1, 'include' => 1, 'AM_PROG_FC_C_O' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FC_SRCEXT' => 1, 'AM_XGETTEXT_OPTION' => 1, 'AM_POT_TOOLS' => 1, 'AM_CONDITIONAL' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AM_PROG_F77_C_O' => 1, 'AC_REQUIRE_AUX_FILE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, 'm4_sinclude' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_CANONICAL_BUILD' => 1, 'AM_PATH_GUILE' => 1, 'AM_NLS' => 1, '_LT_AC_TAGCONFIG' => 1, 'AC_SUBST_TRACE' => 1, 'AM_PROG_CXX_C_O' => 1, 'AC_CONFIG_HEADERS' => 1, 'AM_PROG_AR' => 1, 'AC_CANONICAL_HOST' => 1, 'AM_PROG_CC_C_O' => 1, 'm4_pattern_forbid' => 1, '_AM_COND_IF' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'm4_pattern_allow' => 1, 'm4_include' => 1, 'LT_SUPPORTED_TAG' => 1, 'AH_OUTPUT' => 1, 'LT_INIT' => 1, 'AM_MAKEFILE_INCLUDE' => 1 } ], 'Autom4te::Request' ) ); gsoap-2.8.60/autom4te.cache/traces.10000644000175000017500000014267113227173553016452 0ustar ellertellertm4trace:configure.in:2: -1- AC_INIT([gsoap], [2.8]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:2: -1- AC_SUBST([SHELL]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([SHELL]) m4trace:configure.in:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:2: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) m4trace:configure.in:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_URL]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.in:2: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([exec_prefix]) m4trace:configure.in:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:2: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([prefix]) m4trace:configure.in:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([program_transform_name]) m4trace:configure.in:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([bindir]) m4trace:configure.in:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([sbindir]) m4trace:configure.in:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([libexecdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.in:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([datarootdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.in:2: -1- AC_SUBST([datadir], ['${datarootdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([datadir]) m4trace:configure.in:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.in:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([sysconfdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([sharedstatedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([localstatedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.in:2: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([includedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([oldincludedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.in:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ['${datarootdir}/doc/${PACKAGE}'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([docdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.in:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([infodir]) m4trace:configure.in:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.in:2: -1- AC_SUBST([htmldir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([htmldir]) m4trace:configure.in:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:2: -1- AC_SUBST([dvidir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([dvidir]) m4trace:configure.in:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.in:2: -1- AC_SUBST([pdfdir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([pdfdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.in:2: -1- AC_SUBST([psdir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([psdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.in:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([libdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.in:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([localedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.in:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([mandir]) m4trace:configure.in:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ @%:@undef PACKAGE_NAME]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ @%:@undef PACKAGE_TARNAME]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ @%:@undef PACKAGE_VERSION]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ @%:@undef PACKAGE_STRING]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ @%:@undef PACKAGE_BUGREPORT]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ @%:@undef PACKAGE_URL]) m4trace:configure.in:2: -1- AC_SUBST([DEFS]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([DEFS]) m4trace:configure.in:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:2: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_C]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:2: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_N]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:2: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_T]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:2: -1- AC_SUBST([LIBS]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:2: -1- AC_SUBST([build_alias]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([build_alias]) m4trace:configure.in:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.in:2: -1- AC_SUBST([host_alias]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([host_alias]) m4trace:configure.in:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.in:2: -1- AC_SUBST([target_alias]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([target_alias]) m4trace:configure.in:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:3: -1- AM_INIT_AUTOMAKE([subdir-objects]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:3: -1- AM_AUTOMAKE_VERSION([1.14]) m4trace:configure.in:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:3: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:3: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:3: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:3: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) m4trace:configure.in:3: -1- AC_SUBST_TRACE([am__isrc]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.in:3: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([CYGPATH_W]) m4trace:configure.in:3: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.in:3: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE]) m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:3: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) m4trace:configure.in:3: -1- AC_SUBST_TRACE([VERSION]) m4trace:configure.in:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ @%:@undef PACKAGE]) m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) m4trace:configure.in:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:3: -1- AH_OUTPUT([VERSION], [/* Version number of package */ @%:@undef VERSION]) m4trace:configure.in:3: -1- AC_REQUIRE_AUX_FILE([missing]) m4trace:configure.in:3: -1- AC_SUBST([ACLOCAL]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([ACLOCAL]) m4trace:configure.in:3: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.in:3: -1- AC_SUBST([AUTOCONF]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AUTOCONF]) m4trace:configure.in:3: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.in:3: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AUTOMAKE]) m4trace:configure.in:3: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.in:3: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AUTOHEADER]) m4trace:configure.in:3: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.in:3: -1- AC_SUBST([MAKEINFO]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([MAKEINFO]) m4trace:configure.in:3: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.in:3: -1- AC_SUBST([install_sh]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([install_sh]) m4trace:configure.in:3: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.in:3: -1- AC_SUBST([STRIP]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.in:3: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:3: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.in:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:3: -1- AC_SUBST([MKDIR_P]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([MKDIR_P]) m4trace:configure.in:3: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.in:3: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) m4trace:configure.in:3: -1- AC_SUBST_TRACE([mkdir_p]) m4trace:configure.in:3: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.in:3: -1- AC_SUBST([AWK]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.in:3: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:3: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.in:3: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:3: -1- AC_SUBST([am__leading_dot]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([am__leading_dot]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.in:3: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AMTAR]) m4trace:configure.in:3: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.in:3: -1- AC_SUBST([am__tar]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([am__tar]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.in:3: -1- AC_SUBST([am__untar]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([am__untar]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.in:3: -1- AM_SILENT_RULES m4trace:configure.in:3: -1- AC_SUBST([AM_V]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AM_V]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_V$]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.in:3: -1- AC_SUBST([AM_DEFAULT_V]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_DEFAULT_V$]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.in:3: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) m4trace:configure.in:3: -1- AC_SUBST([AM_BACKSLASH]) m4trace:configure.in:3: -1- AC_SUBST_TRACE([AM_BACKSLASH]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_BACKSLASH$]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) m4trace:configure.in:5: -1- AC_CANONICAL_HOST m4trace:configure.in:5: -1- AC_CANONICAL_BUILD m4trace:configure.in:5: -1- AC_REQUIRE_AUX_FILE([config.sub]) m4trace:configure.in:5: -1- AC_REQUIRE_AUX_FILE([config.guess]) m4trace:configure.in:5: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([build]) m4trace:configure.in:5: -1- m4_pattern_allow([^build$]) m4trace:configure.in:5: -1- AC_SUBST([build_cpu], [$[1]]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([build_cpu]) m4trace:configure.in:5: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.in:5: -1- AC_SUBST([build_vendor], [$[2]]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([build_vendor]) m4trace:configure.in:5: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.in:5: -1- AC_SUBST([build_os]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([build_os]) m4trace:configure.in:5: -1- m4_pattern_allow([^build_os$]) m4trace:configure.in:5: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([host]) m4trace:configure.in:5: -1- m4_pattern_allow([^host$]) m4trace:configure.in:5: -1- AC_SUBST([host_cpu], [$[1]]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([host_cpu]) m4trace:configure.in:5: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.in:5: -1- AC_SUBST([host_vendor], [$[2]]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([host_vendor]) m4trace:configure.in:5: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.in:5: -1- AC_SUBST([host_os]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([host_os]) m4trace:configure.in:5: -1- m4_pattern_allow([^host_os$]) m4trace:configure.in:8: -1- _m4_warn([obsolete], ['AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead.], [aclocal.m4:766: AM_CONFIG_HEADER is expanded from... configure.in:8: the top level]) m4trace:configure.in:8: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.in:11: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:11: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.in:11: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:13: -1- AC_SUBST([CXX]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:13: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([CXXFLAGS]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.in:13: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.in:13: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:13: -1- AC_SUBST([LIBS]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:13: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:13: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:13: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:13: -1- AC_SUBST([CXX]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:13: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([ac_ct_CXX]) m4trace:configure.in:13: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.in:13: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.in:13: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:13: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([OBJEXT]) m4trace:configure.in:13: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:13: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([DEPDIR]) m4trace:configure.in:13: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.in:13: -1- AC_SUBST([am__include]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([am__include]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__include$]) m4trace:configure.in:13: -1- AC_SUBST([am__quote]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([am__quote]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.in:13: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:13: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([AMDEP_TRUE]) m4trace:configure.in:13: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.in:13: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([AMDEP_FALSE]) m4trace:configure.in:13: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.in:13: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) m4trace:configure.in:13: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.in:13: -1- AC_SUBST([am__nodep]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([am__nodep]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__nodep$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([am__nodep]) m4trace:configure.in:13: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([CXXDEPMODE]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.in:13: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.in:13: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.in:13: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.in:13: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.in:14: -1- AC_SUBST([CC]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CFLAGS]) m4trace:configure.in:14: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:14: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.in:14: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:14: -1- AC_SUBST([LIBS]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:14: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:14: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:14: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:14: -1- AC_SUBST([CC]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- AC_SUBST([CC]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- AC_SUBST([CC]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- AC_SUBST([CC]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([ac_ct_CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:14: -1- AC_REQUIRE_AUX_FILE([compile]) m4trace:configure.in:14: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CCDEPMODE]) m4trace:configure.in:14: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.in:14: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:14: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.in:14: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.in:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.in:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.in:15: -1- AM_PROG_CC_C_O m4trace:configure.in:16: -1- AC_SUBST([LEX]) m4trace:configure.in:16: -1- AC_SUBST_TRACE([LEX]) m4trace:configure.in:16: -1- m4_pattern_allow([^LEX$]) m4trace:configure.in:16: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root]) m4trace:configure.in:16: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT]) m4trace:configure.in:16: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.in:16: -1- AC_SUBST([LEXLIB]) m4trace:configure.in:16: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.in:16: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER]) m4trace:configure.in:16: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.in:16: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a `char@<:@@:>@\'. */ @%:@undef YYTEXT_POINTER]) m4trace:configure.in:17: -1- AC_SUBST([YACC]) m4trace:configure.in:17: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.in:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:17: -1- AC_SUBST([YACC]) m4trace:configure.in:17: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.in:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:17: -1- AC_SUBST([YFLAGS]) m4trace:configure.in:17: -1- AC_SUBST_TRACE([YFLAGS]) m4trace:configure.in:17: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.in:18: -1- AC_SUBST([CPP]) m4trace:configure.in:18: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.in:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:18: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:18: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:18: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:18: -1- AC_SUBST([CPP]) m4trace:configure.in:18: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.in:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:19: -1- AC_SUBST([RANLIB]) m4trace:configure.in:19: -1- AC_SUBST_TRACE([RANLIB]) m4trace:configure.in:19: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.in:21: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.in:21: -1- AC_SUBST_TRACE([LN_S]) m4trace:configure.in:21: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.in:22: -1- AC_SUBST([AWK]) m4trace:configure.in:22: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.in:22: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:90: -1- AC_SUBST([SAMPLE_EXTRA_LIBS]) m4trace:configure.in:90: -1- AC_SUBST_TRACE([SAMPLE_EXTRA_LIBS]) m4trace:configure.in:90: -1- m4_pattern_allow([^SAMPLE_EXTRA_LIBS$]) m4trace:configure.in:91: -1- AC_SUBST([platform]) m4trace:configure.in:91: -1- AC_SUBST_TRACE([platform]) m4trace:configure.in:91: -1- m4_pattern_allow([^platform$]) m4trace:configure.in:94: -1- AC_SUBST([GREP]) m4trace:configure.in:94: -1- AC_SUBST_TRACE([GREP]) m4trace:configure.in:94: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:94: -1- AC_SUBST([EGREP]) m4trace:configure.in:94: -1- AC_SUBST_TRACE([EGREP]) m4trace:configure.in:94: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:94: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:94: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:94: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ @%:@undef STDC_HEADERS]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ARPA_INET_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_XLOCALE_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_XLOCALE_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ERRNO_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_FCNTL_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_LIMITS_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_NETDB_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_NETINET_IN_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRING_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRINGS_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDINT_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_INTTYPES_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_TIME_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_INTTYPES_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_SOCKET_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TYPES_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIME_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIMEB_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_POLL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_POLL_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_OPENSSL_SSL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_OPENSSL_SSL_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_GNUTLS_GNUTLS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_GNUTLS_GNUTLS_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_ZLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ZLIB_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TYPES_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_STAT_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRING_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_MEMORY_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRINGS_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_INTTYPES_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDINT_H]) m4trace:configure.in:95: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.in:98: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.in:98: -1- m4_pattern_allow([^const$]) m4trace:configure.in:98: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ @%:@undef const]) m4trace:configure.in:99: -1- AC_DEFINE_TRACE_LITERAL([size_t]) m4trace:configure.in:99: -1- m4_pattern_allow([^size_t$]) m4trace:configure.in:99: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ @%:@undef size_t]) m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) m4trace:configure.in:100: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) m4trace:configure.in:100: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ @%:@undef TIME_WITH_SYS_TIME]) m4trace:configure.in:101: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) m4trace:configure.in:101: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) m4trace:configure.in:101: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ @%:@undef TM_IN_SYS_TIME]) m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_GMTOFF]) m4trace:configure.in:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_GMTOFF$]) m4trace:configure.in:106: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_GMTOFF], [/* Define to 1 if `tm_gmtoff\' is a member of `struct tm\'. */ @%:@undef HAVE_STRUCT_TM_TM_GMTOFF]) m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM___TM_GMTOFF]) m4trace:configure.in:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM___TM_GMTOFF$]) m4trace:configure.in:106: -1- AH_OUTPUT([HAVE_STRUCT_TM___TM_GMTOFF], [/* Define to 1 if `__tm_gmtoff\' is a member of `struct tm\'. */ @%:@undef HAVE_STRUCT_TM___TM_GMTOFF]) m4trace:configure.in:109: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIME_H]) m4trace:configure.in:109: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.in:109: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */ @%:@undef HAVE_ALARM]) m4trace:configure.in:109: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"]) m4trace:configure.in:109: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.in:109: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:109: -1- AC_LIBSOURCE([mktime.c]) m4trace:configure.in:110: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete. You should run autoupdate.], [../../lib/autoconf/types.m4:759: AC_TYPE_SIGNAL is expanded from... configure.in:110: the top level]) m4trace:configure.in:110: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) m4trace:configure.in:110: -1- m4_pattern_allow([^RETSIGTYPE$]) m4trace:configure.in:110: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ @%:@undef RETSIGTYPE]) m4trace:configure.in:111: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ @%:@undef HAVE_STRFTIME]) m4trace:configure.in:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) m4trace:configure.in:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.in:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) m4trace:configure.in:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_RANDOM], [/* Define to 1 if you have the `random\' function. */ @%:@undef HAVE_RANDOM]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ @%:@undef HAVE_GETTIMEOFDAY]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_FTIME], [/* Define to 1 if you have the `ftime\' function. */ @%:@undef HAVE_FTIME]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_LOCALTIME_R], [/* Define to 1 if you have the `localtime_r\' function. */ @%:@undef HAVE_LOCALTIME_R]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_TIMEGM], [/* Define to 1 if you have the `timegm\' function. */ @%:@undef HAVE_TIMEGM]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_GMTIME], [/* Define to 1 if you have the `gmtime\' function. */ @%:@undef HAVE_GMTIME]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_GMTIME_R], [/* Define to 1 if you have the `gmtime_r\' function. */ @%:@undef HAVE_GMTIME_R]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ @%:@undef HAVE_MEMSET]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ @%:@undef HAVE_SELECT]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */ @%:@undef HAVE_SOCKET]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ @%:@undef HAVE_SNPRINTF]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ @%:@undef HAVE_STRCHR]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ @%:@undef HAVE_STRERROR]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRERROR_R], [/* Define to 1 if you have the `strerror_r\' function. */ @%:@undef HAVE_STRERROR_R]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRRCHR], [/* Define to 1 if you have the `strrchr\' function. */ @%:@undef HAVE_STRRCHR]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ @%:@undef HAVE_STRSTR]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */ @%:@undef HAVE_STRTOL]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ @%:@undef HAVE_STRTOUL]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */ @%:@undef HAVE_STRTOLL]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */ @%:@undef HAVE_STRTOULL]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOLD], [/* Define to 1 if you have the `strtold\' function. */ @%:@undef HAVE_STRTOLD]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */ @%:@undef HAVE_STRTOD]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOF], [/* Define to 1 if you have the `strtof\' function. */ @%:@undef HAVE_STRTOF]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOLD_L], [/* Define to 1 if you have the `strtold_l\' function. */ @%:@undef HAVE_STRTOLD_L]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOD_L], [/* Define to 1 if you have the `strtod_l\' function. */ @%:@undef HAVE_STRTOD_L]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_STRTOF_L], [/* Define to 1 if you have the `strtof_l\' function. */ @%:@undef HAVE_STRTOF_L]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_SSCANF], [/* Define to 1 if you have the `sscanf\' function. */ @%:@undef HAVE_SSCANF]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_SSCANF_L], [/* Define to 1 if you have the `sscanf_l\' function. */ @%:@undef HAVE_SSCANF_L]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_SPRINTF_L], [/* Define to 1 if you have the `sprintf_l\' function. */ @%:@undef HAVE_SPRINTF_L]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_WCTOMB], [/* Define to 1 if you have the `wctomb\' function. */ @%:@undef HAVE_WCTOMB]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_MBTOWC], [/* Define to 1 if you have the `mbtowc\' function. */ @%:@undef HAVE_MBTOWC]) m4trace:configure.in:112: -1- AH_OUTPUT([HAVE_POLL], [/* Define to 1 if you have the `poll\' function. */ @%:@undef HAVE_POLL]) m4trace:configure.in:115: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN]) m4trace:configure.in:115: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.in:115: -1- AH_OUTPUT([HAVE_ISNAN], [/* isnan */ @%:@undef HAVE_ISNAN]) m4trace:configure.in:116: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF]) m4trace:configure.in:116: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.in:116: -1- AH_OUTPUT([HAVE_ISINF], [/* isinf */ @%:@undef HAVE_ISINF]) m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN]) m4trace:configure.in:124: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.in:124: -1- AH_OUTPUT([HAVE_ISNAN], [/* isnan */ @%:@undef HAVE_ISNAN]) m4trace:configure.in:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF]) m4trace:configure.in:136: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.in:136: -1- AH_OUTPUT([HAVE_ISINF], [/* isinf */ @%:@undef HAVE_ISINF]) m4trace:configure.in:145: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME_R], [/* Define to 1 if you have the `gethostbyname_r\' function. */ @%:@undef HAVE_GETHOSTBYNAME_R]) m4trace:configure.in:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME_R]) m4trace:configure.in:145: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME_R$]) m4trace:configure.in:146: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.in:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) m4trace:configure.in:146: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) m4trace:configure.in:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC]) m4trace:configure.in:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.in:146: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and to 0 otherwise. */ @%:@undef HAVE_MALLOC]) m4trace:configure.in:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC]) m4trace:configure.in:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.in:146: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS malloc.$ac_objext"]) m4trace:configure.in:146: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.in:146: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:146: -1- AC_LIBSOURCE([malloc.c]) m4trace:configure.in:146: -1- AC_DEFINE_TRACE_LITERAL([malloc]) m4trace:configure.in:146: -1- m4_pattern_allow([^malloc$]) m4trace:configure.in:146: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */ @%:@undef malloc]) m4trace:configure.in:157: -1- AM_CONDITIONAL([DEBUG_COMPILE], [test x$debug = xtrue]) m4trace:configure.in:157: -1- AC_SUBST([DEBUG_COMPILE_TRUE]) m4trace:configure.in:157: -1- AC_SUBST_TRACE([DEBUG_COMPILE_TRUE]) m4trace:configure.in:157: -1- m4_pattern_allow([^DEBUG_COMPILE_TRUE$]) m4trace:configure.in:157: -1- AC_SUBST([DEBUG_COMPILE_FALSE]) m4trace:configure.in:157: -1- AC_SUBST_TRACE([DEBUG_COMPILE_FALSE]) m4trace:configure.in:157: -1- m4_pattern_allow([^DEBUG_COMPILE_FALSE$]) m4trace:configure.in:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_TRUE]) m4trace:configure.in:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_FALSE]) m4trace:configure.in:163: -1- AC_SUBST([SOAPCPP2_DEBUG]) m4trace:configure.in:163: -1- AC_SUBST_TRACE([SOAPCPP2_DEBUG]) m4trace:configure.in:163: -1- m4_pattern_allow([^SOAPCPP2_DEBUG$]) m4trace:configure.in:168: -1- AC_SUBST([SOAPCPP2_IMPORTPATH]) m4trace:configure.in:168: -1- AC_SUBST_TRACE([SOAPCPP2_IMPORTPATH]) m4trace:configure.in:168: -1- m4_pattern_allow([^SOAPCPP2_IMPORTPATH$]) m4trace:configure.in:173: -1- AC_SUBST([WSDL2H_IMPORTPATH]) m4trace:configure.in:173: -1- AC_SUBST_TRACE([WSDL2H_IMPORTPATH]) m4trace:configure.in:173: -1- m4_pattern_allow([^WSDL2H_IMPORTPATH$]) m4trace:configure.in:181: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:181: the top level]) m4trace:configure.in:190: -1- AC_SUBST([SOAPCPP2_NONAMESPACES]) m4trace:configure.in:190: -1- AC_SUBST_TRACE([SOAPCPP2_NONAMESPACES]) m4trace:configure.in:190: -1- m4_pattern_allow([^SOAPCPP2_NONAMESPACES$]) m4trace:configure.in:198: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:198: the top level]) m4trace:configure.in:207: -1- AC_SUBST([SOAPCPP2_IPV6]) m4trace:configure.in:207: -1- AC_SUBST_TRACE([SOAPCPP2_IPV6]) m4trace:configure.in:207: -1- m4_pattern_allow([^SOAPCPP2_IPV6$]) m4trace:configure.in:220: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:220: the top level]) m4trace:configure.in:227: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:227: the top level]) m4trace:configure.in:264: -1- AC_SUBST([WSDL2H_EXTRA_FLAGS]) m4trace:configure.in:264: -1- AC_SUBST_TRACE([WSDL2H_EXTRA_FLAGS]) m4trace:configure.in:264: -1- m4_pattern_allow([^WSDL2H_EXTRA_FLAGS$]) m4trace:configure.in:265: -1- AC_SUBST([WSDL2H_EXTRA_LIBS]) m4trace:configure.in:265: -1- AC_SUBST_TRACE([WSDL2H_EXTRA_LIBS]) m4trace:configure.in:265: -1- m4_pattern_allow([^WSDL2H_EXTRA_LIBS$]) m4trace:configure.in:266: -1- AC_SUBST([SAMPLE_INCLUDES]) m4trace:configure.in:266: -1- AC_SUBST_TRACE([SAMPLE_INCLUDES]) m4trace:configure.in:266: -1- m4_pattern_allow([^SAMPLE_INCLUDES$]) m4trace:configure.in:267: -1- AC_SUBST([SAMPLE_SSL_LIBS]) m4trace:configure.in:267: -1- AC_SUBST_TRACE([SAMPLE_SSL_LIBS]) m4trace:configure.in:267: -1- m4_pattern_allow([^SAMPLE_SSL_LIBS$]) m4trace:configure.in:268: -1- AC_SUBST([WSDL2H_SOAP_CPP_LIB]) m4trace:configure.in:268: -1- AC_SUBST_TRACE([WSDL2H_SOAP_CPP_LIB]) m4trace:configure.in:268: -1- m4_pattern_allow([^WSDL2H_SOAP_CPP_LIB$]) m4trace:configure.in:278: -1- AM_CONDITIONAL([ENABLE_SAMPLES], [test x$samples = xtrue]) m4trace:configure.in:278: -1- AC_SUBST([ENABLE_SAMPLES_TRUE]) m4trace:configure.in:278: -1- AC_SUBST_TRACE([ENABLE_SAMPLES_TRUE]) m4trace:configure.in:278: -1- m4_pattern_allow([^ENABLE_SAMPLES_TRUE$]) m4trace:configure.in:278: -1- AC_SUBST([ENABLE_SAMPLES_FALSE]) m4trace:configure.in:278: -1- AC_SUBST_TRACE([ENABLE_SAMPLES_FALSE]) m4trace:configure.in:278: -1- m4_pattern_allow([^ENABLE_SAMPLES_FALSE$]) m4trace:configure.in:278: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_TRUE]) m4trace:configure.in:278: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_FALSE]) m4trace:configure.in:279: -1- AC_SUBST([ENABLE_SAMPLES]) m4trace:configure.in:279: -1- AC_SUBST_TRACE([ENABLE_SAMPLES]) m4trace:configure.in:279: -1- m4_pattern_allow([^ENABLE_SAMPLES$]) m4trace:configure.in:286: -1- AC_SUBST([SAMPLE_DIRS]) m4trace:configure.in:286: -1- AC_SUBST_TRACE([SAMPLE_DIRS]) m4trace:configure.in:286: -1- m4_pattern_allow([^SAMPLE_DIRS$]) m4trace:configure.in:296: -1- AC_SUBST([LEX_DEFINE]) m4trace:configure.in:296: -1- AC_SUBST_TRACE([LEX_DEFINE]) m4trace:configure.in:296: -1- m4_pattern_allow([^LEX_DEFINE$]) m4trace:configure.in:297: -1- AC_SUBST([LEX_FLAGS]) m4trace:configure.in:297: -1- AC_SUBST_TRACE([LEX_FLAGS]) m4trace:configure.in:297: -1- m4_pattern_allow([^LEX_FLAGS$]) m4trace:configure.in:298: -1- AC_SUBST([LEXLIB]) m4trace:configure.in:298: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.in:298: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.in:308: -1- AC_SUBST([BISON_DEFINE]) m4trace:configure.in:308: -1- AC_SUBST_TRACE([BISON_DEFINE]) m4trace:configure.in:308: -1- m4_pattern_allow([^BISON_DEFINE$]) m4trace:configure.in:309: -1- AC_SUBST([YACC_LIB]) m4trace:configure.in:309: -1- AC_SUBST_TRACE([YACC_LIB]) m4trace:configure.in:309: -1- m4_pattern_allow([^YACC_LIB$]) m4trace:configure.in:353: -1- AC_CONFIG_FILES([ Makefile \ gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc \ gsoap/Makefile \ gsoap/src/Makefile \ gsoap/wsdl/Makefile \ gsoap/samples/Makefile \ gsoap/samples/autotest/Makefile \ gsoap/samples/calc/Makefile \ gsoap/samples/calc++/Makefile \ gsoap/samples/chaining/Makefile \ gsoap/samples/chaining++/Makefile \ gsoap/samples/databinding/Makefile \ gsoap/samples/dime/Makefile \ gsoap/samples/dom/Makefile \ gsoap/samples/oneway/Makefile \ gsoap/samples/oneway++/Makefile \ gsoap/samples/factory/Makefile \ gsoap/samples/factorytest/Makefile \ gsoap/samples/gmt/Makefile \ gsoap/samples/googleapi/Makefile \ gsoap/samples/hello/Makefile \ gsoap/samples/httpcookies/Makefile \ gsoap/samples/lu/Makefile \ gsoap/samples/magic/Makefile \ gsoap/samples/mashup/Makefile \ gsoap/samples/mashup++/Makefile \ gsoap/samples/mtom/Makefile \ gsoap/samples/mtom-stream/Makefile \ gsoap/samples/polytest/Makefile \ gsoap/samples/primes/Makefile \ gsoap/samples/roll/Makefile \ gsoap/samples/router/Makefile \ gsoap/samples/rss/Makefile \ gsoap/samples/ssl/Makefile \ gsoap/samples/template/Makefile \ gsoap/samples/udp/Makefile \ gsoap/samples/varparam/Makefile \ gsoap/samples/wsa/Makefile \ gsoap/samples/wsrm/Makefile \ gsoap/samples/wsse/Makefile \ gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile ]) m4trace:configure.in:354: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.in:354: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:354: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([LTLIBOBJS]) m4trace:configure.in:354: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.in:354: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.in:354: -1- AC_SUBST([am__EXEEXT_TRUE]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) m4trace:configure.in:354: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.in:354: -1- AC_SUBST([am__EXEEXT_FALSE]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) m4trace:configure.in:354: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.in:354: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.in:354: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([top_builddir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([top_build_prefix]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([srcdir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([abs_srcdir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([top_srcdir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([abs_top_srcdir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([builddir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([abs_builddir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([abs_top_builddir]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([INSTALL]) m4trace:configure.in:354: -1- AC_SUBST_TRACE([MKDIR_P]) gsoap-2.8.60/autom4te.cache/output.00000644000175000017500000070172313227173553016527 0ustar ellertellert@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.69 for gsoap 2.8. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @%:@ @%:@ @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in @%:@( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gsoap' PACKAGE_TARNAME='gsoap' PACKAGE_VERSION='2.8' PACKAGE_STRING='gsoap 2.8' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="gsoap/stdsoap2.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS YACC_LIB BISON_DEFINE LEX_FLAGS LEX_DEFINE SAMPLE_DIRS ENABLE_SAMPLES ENABLE_SAMPLES_FALSE ENABLE_SAMPLES_TRUE WSDL2H_SOAP_CPP_LIB SAMPLE_SSL_LIBS SAMPLE_INCLUDES WSDL2H_EXTRA_LIBS WSDL2H_EXTRA_FLAGS SOAPCPP2_IPV6 SOAPCPP2_NONAMESPACES WSDL2H_IMPORTPATH SOAPCPP2_IMPORTPATH SOAPCPP2_DEBUG DEBUG_COMPILE_FALSE DEBUG_COMPILE_TRUE LIB@&t@OBJS EGREP GREP platform SAMPLE_EXTRA_LIBS LN_S RANLIB CPP YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_debug enable_namespaces enable_ipv6 with_openssl enable_ssl enable_gnutls enable_samples ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gsoap 2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @<:@@S|@ac_default_prefix@:>@ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @<:@PREFIX@:>@ By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gsoap@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gsoap 2.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug add debug symbols for debugging --disable-namespaces compile library without namespaces --enable-ipv6 compile library with IPv6 support --disable-ssl build without SSL/TLS --enable-gnutls build with GNUTLS SSL/TLS --enable-samples enable compile for the gsoap samples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-openssl=DIR openssl installation prefix Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to @S|@YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gsoap configure 2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## @%:@ ac_fn_cxx_try_compile LINENO @%:@ ---------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_cxx_try_compile @%:@ ac_fn_c_try_compile LINENO @%:@ -------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile @%:@ ac_fn_c_try_link LINENO @%:@ ----------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_link @%:@ ac_fn_c_try_cpp LINENO @%:@ ---------------------- @%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_cpp @%:@ ac_fn_c_try_run LINENO @%:@ ---------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes @%:@ that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_run @%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using @%:@ the include files in INCLUDES and setting the cache variable VAR @%:@ accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_mongrel @%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists and can be compiled using the include files in @%:@ INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_compile @%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES @%:@ ------------------------------------------- @%:@ Tests whether TYPE exists after having included INCLUDES, setting cache @%:@ variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_type @%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES @%:@ ---------------------------------------------------- @%:@ Tries to find if the field MEMBER exists in type AGGR, after including @%:@ INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_member @%:@ ac_fn_c_check_func LINENO FUNC VAR @%:@ ---------------------------------- @%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in @%:@(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in @%:@(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null @%:@ Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gsoap' VERSION='2.8' cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # AC_CONFIG_HEADERS([config.h]) ac_config_headers="$ac_config_headers config.h" # we use subdirs. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi #AM_PROG_LIBTOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # AC_DECL_YYTEXT SAMPLE_EXTRA_LIBS="-lm" # Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SUN_OS SAMPLE_EXTRA_LIBS="-lxnet -lsocket -lnsl -lm" WSDL2H_EXTRA_LIBS="-lssl -lcrypto -lz -lsocket -lxnet -lnsl -lrt" ;; *-*-sysv5*) platform=UNIXWARE ;; *-*-UnixWare*) platform=UNIXWARE ;; *-*-unixware*) platform=UNIXWARE ;; *-*-sco3.2v5*) platform=OPENSERVER SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *-*-linux*) platform=LINUX # if test x$debug = xtrue; then # CFLAGS="-g" #don't want the -O2 for debugging. # else # CFLAGS="-O2" #don't want the -g for release compile. # fi ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW SAMPLE_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" WSDL2H_EXTRA_LIBS="-lssl -lcrypto -lws2_32 -lkernel32 -luser32 -lgdi32 -lm" ;; *-*-freebsd*) platform=FREEBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX case "${host}" in *-*-aix4.1*) osver=AIX41;; *-*-aix4.2*) osver=AIX42;; *-*-aix4.3*) osver=AIX43;; *-*-aix4.*) osver=AIX43;; *-*-aix5.2) osver=AIX52;; *-*-aix5.3) osver=AIX53;; *-*-aix6.1) osver=AIX61;; esac ;; *-sequent-*) platform=PTX ;; *-*-hp*) platform=HP_UX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac ;; *-*-mvs*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-osf*) platform=TRU64 ;; *-apple-*) platform=MACOSX # Appease 10.7 Lion (OpenSSL deprecated) CXXFLAGS="-Wno-deprecated-declarations" CFLAGS="-Wno-deprecated-declarations" ;; *-nto-qnx) platform=QNX SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *) platform=UNKNOWN ;; esac # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h xlocale.h errno.h fcntl.h limits.h netdb.h netinet/in.h stdlib.h string.h strings.h stdint.h inttypes.h time.h sys/inttypes.h sys/socket.h sys/types.h sys/time.h sys/timeb.h unistd.h poll.h openssl/ssl.h gnutls/gnutls.h zlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "@%:@define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "@%:@define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM___TM_GMTOFF 1 _ACEOF fi # Checks for library functions. for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIB@&t@OBJS " in *" mktime.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "@%:@define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in random gettimeofday ftime localtime_r timegm gmtime gmtime_r memset select socket snprintf strchr strerror strerror_r strrchr strstr strtol strtoul strtoll strtoull strtold strtod strtof strtold_l strtod_l strtof_l sscanf sscanf_l sprintf_l wctomb mbtowc poll do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for isnan and isinf ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan" if test "x$ac_cv_func_isnan" = xyes; then : has_isnan=1; $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else has_isnan=0 fi ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf" if test "x$ac_cv_func_isinf" = xyes; then : has_isinf=1; $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else has_isinf=0 fi # check for macro isnan in math if test $has_isnan = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isnan" >&5 $as_echo_n "checking for macro isnan... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isnan(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isnan=1 else has_isnan=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isnan = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # check for macro isinf in math if test $has_isinf = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isinf" >&5 $as_echo_n "checking for macro isinf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isinf(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isinf=1 else has_isinf=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isinf = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Function test depending on platform # AIX Has incompatible gethostbyname_r if test $platform != AIX -a $platform != TRU64; then for ac_func in gethostbyname_r do : ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" if test "x$ac_cv_func_gethostbyname_r" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_GETHOSTBYNAME_R 1 _ACEOF fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h else $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h case " $LIB@&t@OBJS " in *" malloc.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext" ;; esac $as_echo "@%:@define malloc rpl_malloc" >>confdefs.h fi fi # the debug build options adds symbols to compiler output (-g for g++) @%:@ Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;; esac else debug=false fi if test x$debug = xtrue; then DEBUG_COMPILE_TRUE= DEBUG_COMPILE_FALSE='#' else DEBUG_COMPILE_TRUE='#' DEBUG_COMPILE_FALSE= fi if test x$debug = xtrue; then SOAPCPP2_DEBUG="-DDEBUG" ##define DEBUG for debugging else SOAPCPP2_DEBUG= fi # set the default soapcpp2 import path SOAPCPP2_IMPORTPATH="-DSOAPCPP_IMPORT_PATH=\"\\\"${datadir}/gsoap/import\\\"\"" #SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"`pwd`/gsoap/import\\\"\"" # set the default wsdl2h import path WSDL2H_IMPORTPATH="-DWSDL_IMPORT_PATH=\"\\\"${datadir}/gsoap/WS\\\"\"" #WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"`pwd`/gsoap/WS\\\"\"" # the disable-namespaces option adds the -DWITH_NONAMESPACES to the # library compilation thus disabling namespaces @%:@ Check whether --enable-namespaces was given. if test "${enable_namespaces+set}" = set; then : enableval=$enable_namespaces; with_namespaces="$enable_ns" else with_namespaces="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable namespaces in library" >&5 $as_echo_n "checking for disable namespaces in library... " >&6; } if test "x$with_namespaces" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NONAMESPACES="-DWITH_NONAMESPACES" ##define to remove nsmap link dependence fi # the enable-ipv6 option adds the -DWITH_IPV6 to the # library compilation thus enabling IPv6 @%:@ Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; with_ipv6="yes" else with_ipv6="$disable_ipv6" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable ipv6 in library" >&5 $as_echo_n "checking for enable ipv6 in library... " >&6; } if test "x$with_ipv6" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_IPV6="-DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY" ##define to add IPv6 support else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # the OpenSSL installation prefix path @%:@ Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; OPENSSL=$withval fi # the disable-ssl option removes the dependence on OpenSSL @%:@ Check whether --enable-ssl was given. if test "${enable_ssl+set}" = set; then : enableval=$enable_ssl; with_openssl="$enable_openssl" else with_openssl="yes" fi # the enable-gnutls option enables GNUTLS in favor of OpenSSL @%:@ Check whether --enable-gnutls was given. if test "${enable_gnutls+set}" = set; then : enableval=$enable_gnutls; with_gnutls="yes" else with_gnutls="$disable_gnutls" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable openssl in library" >&5 $as_echo_n "checking for disable openssl in library... " >&6; } if test "x$with_openssl" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable gnutls in library" >&5 $as_echo_n "checking for enable gnutls in library... " >&6; } if test "x$with_gnutls" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS -DWITH_GZIP" WSDL2H_EXTRA_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" # an ugly hack to get httpda and md5evp plugins to conditionally # compile with wsdl2h when OPENSSL is available WSDL2H_EXTRA_LIBS="../plugin/httpda.c ../plugin/md5evp.c -lssl -lcrypto -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" fi if test -n "$OPENSSL"; then WSDL2H_EXTRA_FLAGS="-I${OPENSSL}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${OPENSSL}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${OPENSSL}/include" SAMPLE_SSL_LIBS="-L${OPENSSL}/lib ${SAMPLE_SSL_LIBS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS= WSDL2H_EXTRA_LIBS= SAMPLE_SSL_LIBS= SAMPLE_INCLUDES= WSDL2H_SOAP_CPP_LIB="libgsoap++.a" fi # enable the compile of the samples @%:@ Check whether --enable-samples was given. if test "${enable_samples+set}" = set; then : enableval=$enable_samples; case "${enableval}" in yes) samples=true ;; no) samples=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-samples" "$LINENO" 5 ;; esac else samples=false fi if test x$samples = xtrue; then ENABLE_SAMPLES_TRUE= ENABLE_SAMPLES_FALSE='#' else ENABLE_SAMPLES_TRUE='#' ENABLE_SAMPLES_FALSE= fi if test x$samples = xtrue; then SAMPLE_DIRS=". samples" else SAMPLE_DIRS= fi if test x$LEX = xflex; then LEX_DEFINE=-DWITH_FLEX LEX_FLAGS="-l" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No 'flex' command detected on current path: trying existing scanner" >&5 $as_echo "$as_me: WARNING: No 'flex' command detected on current path: trying existing scanner" >&2;} LEX_DEFINE=-DWITH_LEX LEX_FLAGS= fi # check if we must define -DWITH_BISON if test "$YACC" = "bison -y"; then BISON_DEFINE=-DWITH_BISON YACC_LIB= else BISON_DEFINE=-DWITH_YACC YACC_LIB="-ly" fi ac_config_files="$ac_config_files Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/autotest/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/chaining/Makefile gsoap/samples/chaining++/Makefile gsoap/samples/databinding/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/oneway/Makefile gsoap/samples/oneway++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/primes/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/template/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsrm/Makefile gsoap/samples/wsse/Makefile gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_COMPILE_TRUE}" && test -z "${DEBUG_COMPILE_FALSE}"; then as_fn_error $? "conditional \"DEBUG_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gsoap config.status 2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc") CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc") CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc") CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc") CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/autotest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/autotest/Makefile" ;; "gsoap/samples/calc/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/chaining/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining/Makefile" ;; "gsoap/samples/chaining++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining++/Makefile" ;; "gsoap/samples/databinding/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/databinding/Makefile" ;; "gsoap/samples/dime/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/oneway/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway/Makefile" ;; "gsoap/samples/oneway++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway++/Makefile" ;; "gsoap/samples/factory/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/primes/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/primes/Makefile" ;; "gsoap/samples/roll/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/rss/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/template/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/template/Makefile" ;; "gsoap/samples/udp/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsrm/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsrm/Makefile" ;; "gsoap/samples/wsse/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/xml-rpc-json/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc-json/Makefile" ;; "gsoap/samples/rest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rest/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gsoap-2.8.60/autom4te.cache/output.10000644000175000017500000070172313227173553016530 0ustar ellertellert@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.69 for gsoap 2.8. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @%:@ @%:@ @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in @%:@( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gsoap' PACKAGE_TARNAME='gsoap' PACKAGE_VERSION='2.8' PACKAGE_STRING='gsoap 2.8' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="gsoap/stdsoap2.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS YACC_LIB BISON_DEFINE LEX_FLAGS LEX_DEFINE SAMPLE_DIRS ENABLE_SAMPLES ENABLE_SAMPLES_FALSE ENABLE_SAMPLES_TRUE WSDL2H_SOAP_CPP_LIB SAMPLE_SSL_LIBS SAMPLE_INCLUDES WSDL2H_EXTRA_LIBS WSDL2H_EXTRA_FLAGS SOAPCPP2_IPV6 SOAPCPP2_NONAMESPACES WSDL2H_IMPORTPATH SOAPCPP2_IMPORTPATH SOAPCPP2_DEBUG DEBUG_COMPILE_FALSE DEBUG_COMPILE_TRUE LIB@&t@OBJS EGREP GREP platform SAMPLE_EXTRA_LIBS LN_S RANLIB CPP YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_debug enable_namespaces enable_ipv6 with_openssl enable_ssl enable_gnutls enable_samples ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gsoap 2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @<:@@S|@ac_default_prefix@:>@ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @<:@PREFIX@:>@ By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gsoap@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gsoap 2.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug add debug symbols for debugging --disable-namespaces compile library without namespaces --enable-ipv6 compile library with IPv6 support --disable-ssl build without SSL/TLS --enable-gnutls build with GNUTLS SSL/TLS --enable-samples enable compile for the gsoap samples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-openssl=DIR openssl installation prefix Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to @S|@YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gsoap configure 2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## @%:@ ac_fn_cxx_try_compile LINENO @%:@ ---------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_cxx_try_compile @%:@ ac_fn_c_try_compile LINENO @%:@ -------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile @%:@ ac_fn_c_try_link LINENO @%:@ ----------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_link @%:@ ac_fn_c_try_cpp LINENO @%:@ ---------------------- @%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_cpp @%:@ ac_fn_c_try_run LINENO @%:@ ---------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes @%:@ that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_run @%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using @%:@ the include files in INCLUDES and setting the cache variable VAR @%:@ accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_mongrel @%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists and can be compiled using the include files in @%:@ INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_compile @%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES @%:@ ------------------------------------------- @%:@ Tests whether TYPE exists after having included INCLUDES, setting cache @%:@ variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_type @%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES @%:@ ---------------------------------------------------- @%:@ Tries to find if the field MEMBER exists in type AGGR, after including @%:@ INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_member @%:@ ac_fn_c_check_func LINENO FUNC VAR @%:@ ---------------------------------- @%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in @%:@(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in @%:@(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null @%:@ Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gsoap' VERSION='2.8' cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # AC_CONFIG_HEADERS([config.h]) ac_config_headers="$ac_config_headers config.h" # we use subdirs. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi #AM_PROG_LIBTOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # AC_DECL_YYTEXT SAMPLE_EXTRA_LIBS="-lm" # Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SUN_OS SAMPLE_EXTRA_LIBS="-lxnet -lsocket -lnsl -lm" WSDL2H_EXTRA_LIBS="-lssl -lcrypto -lz -lsocket -lxnet -lnsl -lrt" ;; *-*-sysv5*) platform=UNIXWARE ;; *-*-UnixWare*) platform=UNIXWARE ;; *-*-unixware*) platform=UNIXWARE ;; *-*-sco3.2v5*) platform=OPENSERVER SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *-*-linux*) platform=LINUX # if test x$debug = xtrue; then # CFLAGS="-g" #don't want the -O2 for debugging. # else # CFLAGS="-O2" #don't want the -g for release compile. # fi ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW SAMPLE_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" WSDL2H_EXTRA_LIBS="-lssl -lcrypto -lws2_32 -lkernel32 -luser32 -lgdi32 -lm" ;; *-*-freebsd*) platform=FREEBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX case "${host}" in *-*-aix4.1*) osver=AIX41;; *-*-aix4.2*) osver=AIX42;; *-*-aix4.3*) osver=AIX43;; *-*-aix4.*) osver=AIX43;; *-*-aix5.2) osver=AIX52;; *-*-aix5.3) osver=AIX53;; *-*-aix6.1) osver=AIX61;; esac ;; *-sequent-*) platform=PTX ;; *-*-hp*) platform=HP_UX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac ;; *-*-mvs*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-osf*) platform=TRU64 ;; *-apple-*) platform=MACOSX # Appease 10.7 Lion (OpenSSL deprecated) CXXFLAGS="-Wno-deprecated-declarations" CFLAGS="-Wno-deprecated-declarations" ;; *-nto-qnx) platform=QNX SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *) platform=UNKNOWN ;; esac # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h xlocale.h errno.h fcntl.h limits.h netdb.h netinet/in.h stdlib.h string.h strings.h stdint.h inttypes.h time.h sys/inttypes.h sys/socket.h sys/types.h sys/time.h sys/timeb.h unistd.h poll.h openssl/ssl.h gnutls/gnutls.h zlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "@%:@define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "@%:@define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM___TM_GMTOFF 1 _ACEOF fi # Checks for library functions. for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIB@&t@OBJS " in *" mktime.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "@%:@define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in random gettimeofday ftime localtime_r timegm gmtime gmtime_r memset select socket snprintf strchr strerror strerror_r strrchr strstr strtol strtoul strtoll strtoull strtold strtod strtof strtold_l strtod_l strtof_l sscanf sscanf_l sprintf_l wctomb mbtowc poll do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for isnan and isinf ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan" if test "x$ac_cv_func_isnan" = xyes; then : has_isnan=1; $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else has_isnan=0 fi ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf" if test "x$ac_cv_func_isinf" = xyes; then : has_isinf=1; $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else has_isinf=0 fi # check for macro isnan in math if test $has_isnan = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isnan" >&5 $as_echo_n "checking for macro isnan... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isnan(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isnan=1 else has_isnan=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isnan = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # check for macro isinf in math if test $has_isinf = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isinf" >&5 $as_echo_n "checking for macro isinf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isinf(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isinf=1 else has_isinf=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isinf = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Function test depending on platform # AIX Has incompatible gethostbyname_r if test $platform != AIX -a $platform != TRU64; then for ac_func in gethostbyname_r do : ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" if test "x$ac_cv_func_gethostbyname_r" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_GETHOSTBYNAME_R 1 _ACEOF fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h else $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h case " $LIB@&t@OBJS " in *" malloc.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext" ;; esac $as_echo "@%:@define malloc rpl_malloc" >>confdefs.h fi fi # the debug build options adds symbols to compiler output (-g for g++) @%:@ Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;; esac else debug=false fi if test x$debug = xtrue; then DEBUG_COMPILE_TRUE= DEBUG_COMPILE_FALSE='#' else DEBUG_COMPILE_TRUE='#' DEBUG_COMPILE_FALSE= fi if test x$debug = xtrue; then SOAPCPP2_DEBUG="-DDEBUG" ##define DEBUG for debugging else SOAPCPP2_DEBUG= fi # set the default soapcpp2 import path SOAPCPP2_IMPORTPATH="-DSOAPCPP_IMPORT_PATH=\"\\\"${datadir}/gsoap/import\\\"\"" #SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"`pwd`/gsoap/import\\\"\"" # set the default wsdl2h import path WSDL2H_IMPORTPATH="-DWSDL_IMPORT_PATH=\"\\\"${datadir}/gsoap/WS\\\"\"" #WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"`pwd`/gsoap/WS\\\"\"" # the disable-namespaces option adds the -DWITH_NONAMESPACES to the # library compilation thus disabling namespaces @%:@ Check whether --enable-namespaces was given. if test "${enable_namespaces+set}" = set; then : enableval=$enable_namespaces; with_namespaces="$enable_ns" else with_namespaces="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable namespaces in library" >&5 $as_echo_n "checking for disable namespaces in library... " >&6; } if test "x$with_namespaces" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NONAMESPACES="-DWITH_NONAMESPACES" ##define to remove nsmap link dependence fi # the enable-ipv6 option adds the -DWITH_IPV6 to the # library compilation thus enabling IPv6 @%:@ Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; with_ipv6="yes" else with_ipv6="$disable_ipv6" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable ipv6 in library" >&5 $as_echo_n "checking for enable ipv6 in library... " >&6; } if test "x$with_ipv6" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_IPV6="-DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY" ##define to add IPv6 support else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # the OpenSSL installation prefix path @%:@ Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; OPENSSL=$withval fi # the disable-ssl option removes the dependence on OpenSSL @%:@ Check whether --enable-ssl was given. if test "${enable_ssl+set}" = set; then : enableval=$enable_ssl; with_openssl="$enable_openssl" else with_openssl="yes" fi # the enable-gnutls option enables GNUTLS in favor of OpenSSL @%:@ Check whether --enable-gnutls was given. if test "${enable_gnutls+set}" = set; then : enableval=$enable_gnutls; with_gnutls="yes" else with_gnutls="$disable_gnutls" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable openssl in library" >&5 $as_echo_n "checking for disable openssl in library... " >&6; } if test "x$with_openssl" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable gnutls in library" >&5 $as_echo_n "checking for enable gnutls in library... " >&6; } if test "x$with_gnutls" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS -DWITH_GZIP" WSDL2H_EXTRA_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" # an ugly hack to get httpda and md5evp plugins to conditionally # compile with wsdl2h when OPENSSL is available WSDL2H_EXTRA_LIBS="../plugin/httpda.c ../plugin/md5evp.c -lssl -lcrypto -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" fi if test -n "$OPENSSL"; then WSDL2H_EXTRA_FLAGS="-I${OPENSSL}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${OPENSSL}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${OPENSSL}/include" SAMPLE_SSL_LIBS="-L${OPENSSL}/lib ${SAMPLE_SSL_LIBS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS= WSDL2H_EXTRA_LIBS= SAMPLE_SSL_LIBS= SAMPLE_INCLUDES= WSDL2H_SOAP_CPP_LIB="libgsoap++.a" fi # enable the compile of the samples @%:@ Check whether --enable-samples was given. if test "${enable_samples+set}" = set; then : enableval=$enable_samples; case "${enableval}" in yes) samples=true ;; no) samples=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-samples" "$LINENO" 5 ;; esac else samples=false fi if test x$samples = xtrue; then ENABLE_SAMPLES_TRUE= ENABLE_SAMPLES_FALSE='#' else ENABLE_SAMPLES_TRUE='#' ENABLE_SAMPLES_FALSE= fi if test x$samples = xtrue; then SAMPLE_DIRS=". samples" else SAMPLE_DIRS= fi if test x$LEX = xflex; then LEX_DEFINE=-DWITH_FLEX LEX_FLAGS="-l" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No 'flex' command detected on current path: trying existing scanner" >&5 $as_echo "$as_me: WARNING: No 'flex' command detected on current path: trying existing scanner" >&2;} LEX_DEFINE=-DWITH_LEX LEX_FLAGS= fi # check if we must define -DWITH_BISON if test "$YACC" = "bison -y"; then BISON_DEFINE=-DWITH_BISON YACC_LIB= else BISON_DEFINE=-DWITH_YACC YACC_LIB="-ly" fi ac_config_files="$ac_config_files Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/autotest/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/chaining/Makefile gsoap/samples/chaining++/Makefile gsoap/samples/databinding/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/oneway/Makefile gsoap/samples/oneway++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/primes/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/template/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsrm/Makefile gsoap/samples/wsse/Makefile gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_COMPILE_TRUE}" && test -z "${DEBUG_COMPILE_FALSE}"; then as_fn_error $? "conditional \"DEBUG_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gsoap config.status 2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc") CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc") CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc") CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc") CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/autotest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/autotest/Makefile" ;; "gsoap/samples/calc/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/chaining/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining/Makefile" ;; "gsoap/samples/chaining++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining++/Makefile" ;; "gsoap/samples/databinding/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/databinding/Makefile" ;; "gsoap/samples/dime/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/oneway/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway/Makefile" ;; "gsoap/samples/oneway++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway++/Makefile" ;; "gsoap/samples/factory/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/primes/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/primes/Makefile" ;; "gsoap/samples/roll/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/rss/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/template/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/template/Makefile" ;; "gsoap/samples/udp/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsrm/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsrm/Makefile" ;; "gsoap/samples/wsse/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/xml-rpc-json/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc-json/Makefile" ;; "gsoap/samples/rest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rest/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gsoap-2.8.60/autom4te.cache/traces.00000644000175000017500000013772313227173553016453 0ustar ellertellertm4trace:/usr/local/share/aclocal-1.14/amversion.m4:20: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.14], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) m4trace:/usr/local/share/aclocal-1.14/amversion.m4:37: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) m4trace:/usr/local/share/aclocal-1.14/auxdir.m4:52: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) m4trace:/usr/local/share/aclocal-1.14/cond.m4:32: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) m4trace:/usr/local/share/aclocal-1.14/depend.m4:156: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) m4trace:/usr/local/share/aclocal-1.14/depend.m4:166: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) m4trace:/usr/local/share/aclocal-1.14/depend.m4:189: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) m4trace:/usr/local/share/aclocal-1.14/depout.m4:61: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ]) m4trace:/usr/local/share/aclocal-1.14/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) m4trace:/usr/local/share/aclocal-1.14/init.m4:167: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi]) m4trace:/usr/local/share/aclocal-1.14/init.m4:194: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) m4trace:/usr/local/share/aclocal-1.14/install-sh.m4:21: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) m4trace:/usr/local/share/aclocal-1.14/lead-dot.m4:19: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) m4trace:/usr/local/share/aclocal-1.14/lex.m4:19: -1- AC_DEFUN([AM_PROG_LEX], [AC_PREREQ([2.50])dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) m4trace:/usr/local/share/aclocal-1.14/make.m4:49: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) m4trace:/usr/local/share/aclocal-1.14/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) m4trace:/usr/local/share/aclocal-1.14/missing.m4:38: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:15: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:24: -1- AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:27: -1- AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:28: -1- AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) m4trace:/usr/local/share/aclocal-1.14/obsolete.m4:28: -1- AC_DEFUN([fp_C_PROTOTYPES], [AC_DIAGNOSE([obsolete], [The macro `fp_C_PROTOTYPES' is obsolete. You should run autoupdate.])dnl AM_C_PROTOTYPES]) m4trace:/usr/local/share/aclocal-1.14/options.m4:12: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) m4trace:/usr/local/share/aclocal-1.14/options.m4:18: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) m4trace:/usr/local/share/aclocal-1.14/options.m4:24: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) m4trace:/usr/local/share/aclocal-1.14/options.m4:30: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) m4trace:/usr/local/share/aclocal-1.14/prog-cc-c-o.m4:44: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) m4trace:/usr/local/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) m4trace:/usr/local/share/aclocal-1.14/runlog.m4:17: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) m4trace:/usr/local/share/aclocal-1.14/sanity.m4:82: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) m4trace:/usr/local/share/aclocal-1.14/silent.m4:60: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) m4trace:/usr/local/share/aclocal-1.14/strip.m4:28: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) m4trace:/usr/local/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) m4trace:/usr/local/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) m4trace:/usr/local/share/aclocal-1.14/tar.m4:132: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.in:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.in:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.in:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.in:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:3: -1- AM_INIT_AUTOMAKE([subdir-objects]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:3: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.in:3: -1- AM_AUTOMAKE_VERSION([1.14]) m4trace:configure.in:3: -1- _AM_AUTOCONF_VERSION([2.69]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.in:3: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.in:3: -1- _AM_SET_OPTIONS([subdir-objects]) m4trace:configure.in:3: -1- _AM_SET_OPTION([subdir-objects]) m4trace:configure.in:3: -2- _AM_MANGLE_OPTION([subdir-objects]) m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:3: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) m4trace:configure.in:3: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:3: -1- AM_SANITY_CHECK m4trace:configure.in:3: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.in:3: -1- AM_MISSING_HAS_RUN m4trace:configure.in:3: -1- AM_AUX_DIR_EXPAND m4trace:configure.in:3: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.in:3: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.in:3: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.in:3: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.in:3: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.in:3: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.in:3: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.in:3: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.in:3: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.in:3: -1- AM_PROG_INSTALL_SH m4trace:configure.in:3: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.in:3: -1- AM_PROG_INSTALL_STRIP m4trace:configure.in:3: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.in:3: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.in:3: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.in:3: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:3: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:3: -1- AM_SET_LEADING_DOT m4trace:configure.in:3: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.in:3: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) m4trace:configure.in:3: -2- _AM_MANGLE_OPTION([tar-ustar]) m4trace:configure.in:3: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) m4trace:configure.in:3: -2- _AM_MANGLE_OPTION([tar-pax]) m4trace:configure.in:3: -1- _AM_PROG_TAR([v7]) m4trace:configure.in:3: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.in:3: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.in:3: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) m4trace:configure.in:3: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.in:3: -1- AM_SILENT_RULES m4trace:configure.in:3: -1- m4_pattern_allow([^AM_V$]) m4trace:configure.in:3: -1- AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_DEFAULT_V$]) m4trace:configure.in:3: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) m4trace:configure.in:3: -1- m4_pattern_allow([^AM_BACKSLASH$]) m4trace:configure.in:3: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) m4trace:configure.in:5: -1- m4_pattern_allow([^build$]) m4trace:configure.in:5: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.in:5: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.in:5: -1- m4_pattern_allow([^build_os$]) m4trace:configure.in:5: -1- m4_pattern_allow([^host$]) m4trace:configure.in:5: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.in:5: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.in:5: -1- m4_pattern_allow([^host_os$]) m4trace:configure.in:8: -1- AM_CONFIG_HEADER([config.h]) m4trace:configure.in:8: -1- _m4_warn([obsolete], ['AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead.], [/usr/local/share/aclocal-1.14/obsolete.m4:15: AM_CONFIG_HEADER is expanded from... configure.in:8: the top level]) m4trace:configure.in:11: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.in:13: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:13: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:13: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:13: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.in:13: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:13: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:13: -1- _AM_DEPENDENCIES([CXX]) m4trace:configure.in:13: -1- AM_SET_DEPDIR m4trace:configure.in:13: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.in:13: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.in:13: -1- AM_MAKE_INCLUDE m4trace:configure.in:13: -1- m4_pattern_allow([^am__include$]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.in:13: -1- AM_DEP_TRACK m4trace:configure.in:13: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:13: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.in:13: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.in:13: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__nodep$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([am__nodep]) m4trace:configure.in:13: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.in:13: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.in:13: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.in:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:14: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:14: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:14: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:14: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:14: -1- _AM_PROG_CC_C_O m4trace:configure.in:14: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) m4trace:configure.in:14: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.in:14: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.in:14: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.in:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.in:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.in:15: -1- AM_PROG_CC_C_O m4trace:configure.in:16: -1- AM_PROG_LEX m4trace:configure.in:16: -1- m4_pattern_allow([^LEX$]) m4trace:configure.in:16: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.in:16: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.in:16: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.in:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:17: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.in:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:18: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:19: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.in:21: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.in:22: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:90: -1- m4_pattern_allow([^SAMPLE_EXTRA_LIBS$]) m4trace:configure.in:91: -1- m4_pattern_allow([^platform$]) m4trace:configure.in:94: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:94: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:94: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:98: -1- m4_pattern_allow([^const$]) m4trace:configure.in:99: -1- m4_pattern_allow([^size_t$]) m4trace:configure.in:100: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) m4trace:configure.in:101: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) m4trace:configure.in:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_GMTOFF$]) m4trace:configure.in:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM___TM_GMTOFF$]) m4trace:configure.in:109: -1- AC_DEFUN([_AC_Header_sys_time_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" sys/time.h"])]) _AC_HEADERS_EXPANSION]) m4trace:configure.in:109: -1- AC_DEFUN([_AC_Header_unistd_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" unistd.h"])]) _AC_HEADERS_EXPANSION]) m4trace:configure.in:109: -1- AC_DEFUN([_AC_Func_alarm], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_func_list], [" alarm"])]) _AC_FUNCS_EXPANSION]) m4trace:configure.in:109: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:110: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete. You should run autoupdate.], [../../lib/autoconf/types.m4:759: AC_TYPE_SIGNAL is expanded from... configure.in:110: the top level]) m4trace:configure.in:110: -1- m4_pattern_allow([^RETSIGTYPE$]) m4trace:configure.in:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.in:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.in:115: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.in:116: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.in:124: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.in:136: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.in:145: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME_R$]) m4trace:configure.in:146: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) m4trace:configure.in:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.in:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.in:146: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:146: -1- m4_pattern_allow([^malloc$]) m4trace:configure.in:157: -1- AM_CONDITIONAL([DEBUG_COMPILE], [test x$debug = xtrue]) m4trace:configure.in:157: -1- m4_pattern_allow([^DEBUG_COMPILE_TRUE$]) m4trace:configure.in:157: -1- m4_pattern_allow([^DEBUG_COMPILE_FALSE$]) m4trace:configure.in:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_TRUE]) m4trace:configure.in:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_FALSE]) m4trace:configure.in:163: -1- m4_pattern_allow([^SOAPCPP2_DEBUG$]) m4trace:configure.in:168: -1- m4_pattern_allow([^SOAPCPP2_IMPORTPATH$]) m4trace:configure.in:173: -1- m4_pattern_allow([^WSDL2H_IMPORTPATH$]) m4trace:configure.in:181: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:181: the top level]) m4trace:configure.in:190: -1- m4_pattern_allow([^SOAPCPP2_NONAMESPACES$]) m4trace:configure.in:198: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:198: the top level]) m4trace:configure.in:207: -1- m4_pattern_allow([^SOAPCPP2_IPV6$]) m4trace:configure.in:220: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:220: the top level]) m4trace:configure.in:227: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.in:227: the top level]) m4trace:configure.in:264: -1- m4_pattern_allow([^WSDL2H_EXTRA_FLAGS$]) m4trace:configure.in:265: -1- m4_pattern_allow([^WSDL2H_EXTRA_LIBS$]) m4trace:configure.in:266: -1- m4_pattern_allow([^SAMPLE_INCLUDES$]) m4trace:configure.in:267: -1- m4_pattern_allow([^SAMPLE_SSL_LIBS$]) m4trace:configure.in:268: -1- m4_pattern_allow([^WSDL2H_SOAP_CPP_LIB$]) m4trace:configure.in:278: -1- AM_CONDITIONAL([ENABLE_SAMPLES], [test x$samples = xtrue]) m4trace:configure.in:278: -1- m4_pattern_allow([^ENABLE_SAMPLES_TRUE$]) m4trace:configure.in:278: -1- m4_pattern_allow([^ENABLE_SAMPLES_FALSE$]) m4trace:configure.in:278: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_TRUE]) m4trace:configure.in:278: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_FALSE]) m4trace:configure.in:279: -1- m4_pattern_allow([^ENABLE_SAMPLES$]) m4trace:configure.in:286: -1- m4_pattern_allow([^SAMPLE_DIRS$]) m4trace:configure.in:296: -1- m4_pattern_allow([^LEX_DEFINE$]) m4trace:configure.in:297: -1- m4_pattern_allow([^LEX_FLAGS$]) m4trace:configure.in:298: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.in:308: -1- m4_pattern_allow([^BISON_DEFINE$]) m4trace:configure.in:309: -1- m4_pattern_allow([^YACC_LIB$]) m4trace:configure.in:354: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:354: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.in:354: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.in:354: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.in:354: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.in:354: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.in:354: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.in:354: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) m4trace:configure.in:354: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS gsoap-2.8.60/autom4te.cache/output.20000644000175000017500000070335713227173553016536 0ustar ellertellert@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.69 for gsoap 2.8. @%:@ @%:@ @%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @%:@ @%:@ @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in @%:@( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in @%:@ (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gsoap' PACKAGE_TARNAME='gsoap' PACKAGE_VERSION='2.8' PACKAGE_STRING='gsoap 2.8' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="gsoap/stdsoap2.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS YACC_LIB BISON_DEFINE LEX_FLAGS LEX_DEFINE SAMPLE_DIRS ENABLE_SAMPLES ENABLE_SAMPLES_FALSE ENABLE_SAMPLES_TRUE WSDL2H_SOAP_CPP_LIB SAMPLE_SSL_LIBS SAMPLE_INCLUDES WSDL2H_EXTRA_LIBS WSDL2H_EXTRA_FLAGS SOAPCPP2_IPV6 SOAPCPP2_NONAMESPACES WSDL2H_IMPORTPATH SOAPCPP2_IMPORTPATH SOAPCPP2_DEBUG DEBUG_COMPILE_FALSE DEBUG_COMPILE_TRUE LIB@&t@OBJS EGREP GREP platform SAMPLE_EXTRA_LIBS LN_S RANLIB CPP YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_debug enable_namespaces enable_ipv6 with_zlib with_openssl enable_ssl enable_gnutls enable_samples ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS YACC YFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gsoap 2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @<:@@S|@ac_default_prefix@:>@ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX @<:@PREFIX@:>@ By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gsoap@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gsoap 2.8:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug add debug symbols for debugging --disable-namespaces compile library without namespaces --enable-ipv6 compile library with IPv6 support --disable-ssl build without SSL/TLS --enable-gnutls build with GNUTLS SSL/TLS --enable-samples enable compile for the gsoap samples Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-zlib=DIR zlib installation prefix --with-openssl=DIR openssl installation prefix Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to @S|@YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gsoap configure 2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## @%:@ ac_fn_cxx_try_compile LINENO @%:@ ---------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_cxx_try_compile @%:@ ac_fn_c_try_compile LINENO @%:@ -------------------------- @%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_compile @%:@ ac_fn_c_try_link LINENO @%:@ ----------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_link @%:@ ac_fn_c_try_cpp LINENO @%:@ ---------------------- @%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_cpp @%:@ ac_fn_c_try_run LINENO @%:@ ---------------------- @%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes @%:@ that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } @%:@ ac_fn_c_try_run @%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using @%:@ the include files in INCLUDES and setting the cache variable VAR @%:@ accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_mongrel @%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES @%:@ ------------------------------------------------------- @%:@ Tests whether HEADER exists and can be compiled using the include files in @%:@ INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @%:@include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_header_compile @%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES @%:@ ------------------------------------------- @%:@ Tests whether TYPE exists after having included INCLUDES, setting cache @%:@ variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_type @%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES @%:@ ---------------------------------------------------- @%:@ Tries to find if the field MEMBER exists in type AGGR, after including @%:@ INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_member @%:@ ac_fn_c_check_func LINENO FUNC VAR @%:@ ---------------------------------- @%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } @%:@ ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in @%:@(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in @%:@(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null @%:@ Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='gsoap' VERSION='2.8' cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # AC_CONFIG_HEADERS([config.h]) ac_config_headers="$ac_config_headers config.h" # we use subdirs. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @%:@include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi #AM_PROG_LIBTOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # AC_DECL_YYTEXT SAMPLE_EXTRA_LIBS="-lm" # Platform-specific Makefile setup case "${host}" in *-*-solaris*) platform=SUN_OS SAMPLE_EXTRA_LIBS="-lxnet -lsocket -lnsl -lm" WSDL2H_EXTRA_LIBS="-lxnet -lsocket -lnsl -lrt" ;; *-*-sysv5*) platform=UNIXWARE ;; *-*-UnixWare*) platform=UNIXWARE ;; *-*-unixware*) platform=UNIXWARE ;; *-*-sco3.2v5*) platform=OPENSERVER SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *-*-linux*) platform=LINUX # if test x$debug = xtrue; then # CFLAGS="-g" #don't want the -O2 for debugging. # else # CFLAGS="-O2" #don't want the -g for release compile. # fi ;; *-*-cygwin*) platform=CYGWIN ;; *-*-mingw*) platform=MINGW SAMPLE_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" WSDL2H_EXTRA_LIBS="-lws2_32 -lkernel32 -luser32 -lgdi32 -lm" ;; *-*-freebsd*) platform=FREEBSD ;; *-*-openbsd*) platform=OPENBSD ;; *-*-irix*) platform=IRIX ;; *-*-aix*) platform=AIX case "${host}" in *-*-aix4.1*) osver=AIX41;; *-*-aix4.2*) osver=AIX42;; *-*-aix4.3*) osver=AIX43;; *-*-aix4.*) osver=AIX43;; *-*-aix5.2) osver=AIX52;; *-*-aix5.3) osver=AIX53;; *-*-aix6.1) osver=AIX61;; esac ;; *-sequent-*) platform=PTX ;; *-*-hp*) platform=HP_UX ; case "${host}" in *-*-hpux11*) osver=HPUX11;; *-*-hpux10*) osver=HPUX10;; *) osver=HPUX11;; esac ;; *-*-mvs*) platform=OS390 ;; *-*-os400*) platform=OS400 ;; *-*-OS400*) platform=OS400 ;; *-*-osf*) platform=TRU64 ;; *-apple-*) platform=MACOSX # Appease 10.7 Lion (OpenSSL deprecated) CXXFLAGS="-Wno-deprecated-declarations" CFLAGS="-Wno-deprecated-declarations" ;; *-nto-qnx) platform=QNX SAMPLE_EXTRA_LIBS="-lsocket -lm" ;; *) platform=UNKNOWN ;; esac # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h xlocale.h errno.h fcntl.h ctype.h limits.h float.h math.h netdb.h netinet/in.h stdlib.h string.h strings.h stdint.h inttypes.h time.h sys/inttypes.h sys/socket.h sys/types.h sys/time.h sys/timeb.h unistd.h poll.h openssl/ssl.h gnutls/gnutls.h zlib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "@%:@define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "@%:@define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM_TM_GMTOFF 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" " #include #include " if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRUCT_TM___TM_GMTOFF 1 _ACEOF fi # Checks for library functions. for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIB@&t@OBJS " in *" mktime.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS mktime.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "@%:@define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in random gettimeofday ftime localtime_r timegm gmtime gmtime_r asctime asctime_r memset select socket snprintf strchr strerror strerror_r strlcpy strrchr strstr strtol strtoul strtoll strtoull strtold strtod strtof strtold_l strtod_l strtof_l sscanf sscanf_l snprintf sprintf_l wctomb mbtowc poll do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for isnan and isinf ac_fn_c_check_func "$LINENO" "isnan" "ac_cv_func_isnan" if test "x$ac_cv_func_isnan" = xyes; then : has_isnan=1; $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else has_isnan=0 fi ac_fn_c_check_func "$LINENO" "isinf" "ac_cv_func_isinf" if test "x$ac_cv_func_isinf" = xyes; then : has_isinf=1; $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else has_isinf=0 fi # check for macro isnan in math if test $has_isnan = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isnan" >&5 $as_echo_n "checking for macro isnan... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isnan(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isnan=1 else has_isnan=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isnan = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISNAN 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # check for macro isinf in math if test $has_isinf = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for macro isinf" >&5 $as_echo_n "checking for macro isinf... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { { int foo; foo = isinf(0); } ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : has_isinf=1 else has_isinf=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $has_isinf = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "@%:@define HAVE_ISINF 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Function test depending on platform # AIX Has incompatible gethostbyname_r if test $platform != AIX -a $platform != TRU64; then for ac_func in gethostbyname_r do : ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" if test "x$ac_cv_func_gethostbyname_r" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_GETHOSTBYNAME_R 1 _ACEOF fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF @%:@define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h else $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h case " $LIB@&t@OBJS " in *" malloc.$ac_objext "* ) ;; *) LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext" ;; esac $as_echo "@%:@define malloc rpl_malloc" >>confdefs.h fi fi # the debug build options adds symbols to compiler output (-g for g++) @%:@ Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;; esac else debug=false fi if test x$debug = xtrue; then DEBUG_COMPILE_TRUE= DEBUG_COMPILE_FALSE='#' else DEBUG_COMPILE_TRUE='#' DEBUG_COMPILE_FALSE= fi if test x$debug = xtrue; then SOAPCPP2_DEBUG="-DDEBUG" ##define DEBUG for debugging else SOAPCPP2_DEBUG= fi # set the default soapcpp2 import path SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"${datadir}/gsoap/import\\\"\"" #SOAPCPP2_IMPORTPATH="-DSOAPCPP2_IMPORT_PATH=\"\\\"`pwd`/gsoap/import\\\"\"" # set the default wsdl2h import path WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"${datadir}/gsoap/WS\\\"\"" #WSDL2H_IMPORTPATH="-DWSDL2H_IMPORT_PATH=\"\\\"`pwd`/gsoap/WS\\\"\"" # the disable-namespaces option adds the -DWITH_NONAMESPACES to the # library compilation thus disabling namespaces @%:@ Check whether --enable-namespaces was given. if test "${enable_namespaces+set}" = set; then : enableval=$enable_namespaces; with_namespaces="$enable_ns" else with_namespaces="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable namespaces in library" >&5 $as_echo_n "checking for disable namespaces in library... " >&6; } if test "x$with_namespaces" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_NONAMESPACES="-DWITH_NONAMESPACES" ##define to remove nsmap link dependence fi # the enable-ipv6 option adds the -DWITH_IPV6 to the # library compilation thus enabling IPv6 @%:@ Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; with_ipv6="$enable_ipv6" else with_ipv6="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable ipv6 in library" >&5 $as_echo_n "checking for enable ipv6 in library... " >&6; } if test "x$with_ipv6" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SOAPCPP2_IPV6="-DWITH_IPV6 -DWITH_NO_IPV6_V6ONLY" ##define to add IPv6 support else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # the zlib installation prefix path @%:@ Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; ZLIB=$withval fi # the OpenSSL installation prefix path @%:@ Check whether --with-openssl was given. if test "${with_openssl+set}" = set; then : withval=$with_openssl; OPENSSL=$withval fi # the disable-ssl option removes the dependence on OpenSSL @%:@ Check whether --enable-ssl was given. if test "${enable_ssl+set}" = set; then : enableval=$enable_ssl; with_openssl="$enable_openssl" else with_openssl="yes" fi # the enable-gnutls option enables GNUTLS in favor of OpenSSL @%:@ Check whether --enable-gnutls was given. if test "${enable_gnutls+set}" = set; then : enableval=$enable_gnutls; with_gnutls="$enable_gnutls" else with_gnutls="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for disable openssl in library" >&5 $as_echo_n "checking for disable openssl in library... " >&6; } if test "x$with_openssl" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable gnutls in library" >&5 $as_echo_n "checking for enable gnutls in library... " >&6; } if test "x$with_gnutls" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS -DWITH_GZIP" WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lgnutls -lgcrypt -lgpg-error -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" # an ugly hack to get httpda and smdevp plugins to conditionally # compile with wsdl2h when OPENSSL is available WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} ../plugin/httpda.c ../plugin/smdevp.c ../plugin/threads.c -lssl -lcrypto -lz" SAMPLE_INCLUDES= SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" fi if test -n "$ZLIB"; then WSDL2H_EXTRA_FLAGS="-I${ZLIB}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${ZLIB}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${ZLIB}/include ${SAMPLE_SSL_LIBS}" SAMPLE_SSL_LIBS="-L${ZLIB}/lib ${SAMPLE_SSL_LIBS}" fi if test -n "$OPENSSL"; then WSDL2H_EXTRA_FLAGS="-I${OPENSSL}/include ${WSDL2H_EXTRA_FLAGS}" WSDL2H_EXTRA_LIBS="-L${OPENSSL}/lib ${WSDL2H_EXTRA_LIBS}" SAMPLE_INCLUDES="-I${OPENSSL}/include" SAMPLE_SSL_LIBS="-L${OPENSSL}/lib ${SAMPLE_SSL_LIBS}" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WSDL2H_EXTRA_FLAGS= SAMPLE_SSL_LIBS= SAMPLE_INCLUDES= WSDL2H_SOAP_CPP_LIB="libgsoap++.a" fi # enable the compile of the samples @%:@ Check whether --enable-samples was given. if test "${enable_samples+set}" = set; then : enableval=$enable_samples; case "${enableval}" in yes) samples=true ;; no) samples=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-samples" "$LINENO" 5 ;; esac else samples=false fi if test x$samples = xtrue; then ENABLE_SAMPLES_TRUE= ENABLE_SAMPLES_FALSE='#' else ENABLE_SAMPLES_TRUE='#' ENABLE_SAMPLES_FALSE= fi if test x$samples = xtrue; then SAMPLE_DIRS=". samples" else SAMPLE_DIRS= fi if test x$LEX = xflex; then LEX_DEFINE=-DWITH_FLEX LEX_FLAGS="-l" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No 'flex' command detected on current path: trying existing scanner" >&5 $as_echo "$as_me: WARNING: No 'flex' command detected on current path: trying existing scanner" >&2;} LEX_DEFINE=-DWITH_LEX LEX_FLAGS= fi # check if we must define -DWITH_BISON if test "$YACC" = "bison -y"; then BISON_DEFINE=-DWITH_BISON YACC_LIB= else BISON_DEFINE=-DWITH_YACC YACC_LIB="-ly" fi ac_config_files="$ac_config_files Makefile gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc gsoap/Makefile gsoap/src/Makefile gsoap/wsdl/Makefile gsoap/samples/Makefile gsoap/samples/autotest/Makefile gsoap/samples/aws/Makefile gsoap/samples/calc/Makefile gsoap/samples/calc++/Makefile gsoap/samples/chaining/Makefile gsoap/samples/chaining++/Makefile gsoap/samples/databinding/Makefile gsoap/samples/dime/Makefile gsoap/samples/dom/Makefile gsoap/samples/oneway/Makefile gsoap/samples/oneway++/Makefile gsoap/samples/factory/Makefile gsoap/samples/factorytest/Makefile gsoap/samples/gmt/Makefile gsoap/samples/googleapi/Makefile gsoap/samples/hello/Makefile gsoap/samples/httpcookies/Makefile gsoap/samples/lu/Makefile gsoap/samples/magic/Makefile gsoap/samples/mashup/Makefile gsoap/samples/mashup++/Makefile gsoap/samples/mtom/Makefile gsoap/samples/mtom-stream/Makefile gsoap/samples/polytest/Makefile gsoap/samples/primes/Makefile gsoap/samples/roll/Makefile gsoap/samples/router/Makefile gsoap/samples/rss/Makefile gsoap/samples/ssl/Makefile gsoap/samples/template/Makefile gsoap/samples/udp/Makefile gsoap/samples/varparam/Makefile gsoap/samples/wsa/Makefile gsoap/samples/wsrm/Makefile gsoap/samples/wsse/Makefile gsoap/samples/wst/Makefile gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_COMPILE_TRUE}" && test -z "${DEBUG_COMPILE_FALSE}"; then as_fn_error $? "conditional \"DEBUG_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in @%:@( *posix*) : set -o posix ;; @%:@( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in @%:@( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in @%:@(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH @%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] @%:@ ---------------------------------------- @%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are @%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the @%:@ script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } @%:@ as_fn_error @%:@ as_fn_set_status STATUS @%:@ ----------------------- @%:@ Set @S|@? to STATUS, without forking. as_fn_set_status () { return $1 } @%:@ as_fn_set_status @%:@ as_fn_exit STATUS @%:@ ----------------- @%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } @%:@ as_fn_exit @%:@ as_fn_unset VAR @%:@ --------------- @%:@ Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset @%:@ as_fn_append VAR VALUE @%:@ ---------------------- @%:@ Append the text in VALUE to the end of the definition contained in VAR. Take @%:@ advantage of any shell optimizations that allow amortized linear growth over @%:@ repeated appends, instead of the typical quadratic growth present in naive @%:@ implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append @%:@ as_fn_arith ARG... @%:@ ------------------ @%:@ Perform arithmetic evaluation on the ARGs, and store the result in the @%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments @%:@ must be portable across @S|@(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in @%:@((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @%:@ as_fn_mkdir_p @%:@ ------------- @%:@ Create "@S|@as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } @%:@ as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi @%:@ as_fn_executable_p FILE @%:@ ----------------------- @%:@ Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } @%:@ as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gsoap $as_me 2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ gsoap config.status 2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gsoap.pc") CONFIG_FILES="$CONFIG_FILES gsoap.pc" ;; "gsoap++.pc") CONFIG_FILES="$CONFIG_FILES gsoap++.pc" ;; "gsoapck.pc") CONFIG_FILES="$CONFIG_FILES gsoapck.pc" ;; "gsoapck++.pc") CONFIG_FILES="$CONFIG_FILES gsoapck++.pc" ;; "gsoapssl.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl.pc" ;; "gsoapssl++.pc") CONFIG_FILES="$CONFIG_FILES gsoapssl++.pc" ;; "gsoap/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/Makefile" ;; "gsoap/src/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/src/Makefile" ;; "gsoap/wsdl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/wsdl/Makefile" ;; "gsoap/samples/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/Makefile" ;; "gsoap/samples/autotest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/autotest/Makefile" ;; "gsoap/samples/aws/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/aws/Makefile" ;; "gsoap/samples/calc/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc/Makefile" ;; "gsoap/samples/calc++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/calc++/Makefile" ;; "gsoap/samples/chaining/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining/Makefile" ;; "gsoap/samples/chaining++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/chaining++/Makefile" ;; "gsoap/samples/databinding/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/databinding/Makefile" ;; "gsoap/samples/dime/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dime/Makefile" ;; "gsoap/samples/dom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/dom/Makefile" ;; "gsoap/samples/oneway/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway/Makefile" ;; "gsoap/samples/oneway++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/oneway++/Makefile" ;; "gsoap/samples/factory/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factory/Makefile" ;; "gsoap/samples/factorytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/factorytest/Makefile" ;; "gsoap/samples/gmt/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/gmt/Makefile" ;; "gsoap/samples/googleapi/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/googleapi/Makefile" ;; "gsoap/samples/hello/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/hello/Makefile" ;; "gsoap/samples/httpcookies/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/httpcookies/Makefile" ;; "gsoap/samples/lu/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/lu/Makefile" ;; "gsoap/samples/magic/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/magic/Makefile" ;; "gsoap/samples/mashup/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup/Makefile" ;; "gsoap/samples/mashup++/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mashup++/Makefile" ;; "gsoap/samples/mtom/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom/Makefile" ;; "gsoap/samples/mtom-stream/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/mtom-stream/Makefile" ;; "gsoap/samples/polytest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/polytest/Makefile" ;; "gsoap/samples/primes/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/primes/Makefile" ;; "gsoap/samples/roll/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/roll/Makefile" ;; "gsoap/samples/router/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/router/Makefile" ;; "gsoap/samples/rss/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rss/Makefile" ;; "gsoap/samples/ssl/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/ssl/Makefile" ;; "gsoap/samples/template/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/template/Makefile" ;; "gsoap/samples/udp/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/udp/Makefile" ;; "gsoap/samples/varparam/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/varparam/Makefile" ;; "gsoap/samples/wsa/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsa/Makefile" ;; "gsoap/samples/wsrm/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsrm/Makefile" ;; "gsoap/samples/wsse/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wsse/Makefile" ;; "gsoap/samples/wst/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/wst/Makefile" ;; "gsoap/samples/xml-rpc-json/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/xml-rpc-json/Makefile" ;; "gsoap/samples/rest/Makefile") CONFIG_FILES="$CONFIG_FILES gsoap/samples/rest/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gsoap-2.8.60/autom4te.cache/traces.30000644000175000017500000014467413227173553016461 0ustar ellertellertm4trace:configure.ac:2: -1- AC_INIT([gsoap], [2.8]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:2: -1- AC_SUBST([SHELL]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL]) m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_URL]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix]) m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix]) m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name]) m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ['${datarootdir}/doc/${PACKAGE}'])]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir]) m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ @%:@undef PACKAGE_NAME]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ @%:@undef PACKAGE_TARNAME]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ @%:@undef PACKAGE_VERSION]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ @%:@undef PACKAGE_STRING]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ @%:@undef PACKAGE_BUGREPORT]) m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_URL$]) m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ @%:@undef PACKAGE_URL]) m4trace:configure.ac:2: -1- AC_SUBST([DEFS]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS]) m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T]) m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.ac:2: -1- AC_SUBST([LIBS]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:2: -1- AC_SUBST([build_alias]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias]) m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.ac:2: -1- AC_SUBST([host_alias]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias]) m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.ac:2: -1- AC_SUBST([target_alias]) m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias]) m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.ac:3: -1- AM_INIT_AUTOMAKE([foreign]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.ac:3: -1- AM_AUTOMAKE_VERSION([1.14]) m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.ac:3: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__isrc]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.ac:3: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([CYGPATH_W]) m4trace:configure.ac:3: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.ac:3: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([PACKAGE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([VERSION]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.ac:3: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ @%:@undef PACKAGE]) m4trace:configure.ac:3: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) m4trace:configure.ac:3: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.ac:3: -1- AH_OUTPUT([VERSION], [/* Version number of package */ @%:@undef VERSION]) m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([missing]) m4trace:configure.ac:3: -1- AC_SUBST([ACLOCAL]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([ACLOCAL]) m4trace:configure.ac:3: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.ac:3: -1- AC_SUBST([AUTOCONF]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOCONF]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.ac:3: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOMAKE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.ac:3: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AUTOHEADER]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.ac:3: -1- AC_SUBST([MAKEINFO]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([MAKEINFO]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.ac:3: -1- AC_SUBST([install_sh]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([install_sh]) m4trace:configure.ac:3: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.ac:3: -1- AC_SUBST([STRIP]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.ac:3: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.ac:3: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) m4trace:configure.ac:3: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.ac:3: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.ac:3: -1- AC_SUBST([MKDIR_P]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([MKDIR_P]) m4trace:configure.ac:3: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.ac:3: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([mkdir_p]) m4trace:configure.ac:3: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.ac:3: -1- AC_SUBST([AWK]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:3: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.ac:3: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:3: -1- AC_SUBST([am__leading_dot]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__leading_dot]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.ac:3: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AMTAR]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.ac:3: -1- AC_SUBST([am__tar]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__tar]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.ac:3: -1- AC_SUBST([am__untar]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([am__untar]) m4trace:configure.ac:3: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.ac:3: -1- AM_SILENT_RULES m4trace:configure.ac:3: -1- AC_SUBST([AM_V]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_V$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_V]) m4trace:configure.ac:3: -1- AC_SUBST([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_V$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) m4trace:configure.ac:3: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) m4trace:configure.ac:3: -1- AC_SUBST([AM_BACKSLASH]) m4trace:configure.ac:3: -1- AC_SUBST_TRACE([AM_BACKSLASH]) m4trace:configure.ac:3: -1- m4_pattern_allow([^AM_BACKSLASH$]) m4trace:configure.ac:3: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) m4trace:configure.ac:5: -1- AC_CANONICAL_HOST m4trace:configure.ac:5: -1- AC_CANONICAL_BUILD m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([config.sub]) m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([config.guess]) m4trace:configure.ac:5: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build$]) m4trace:configure.ac:5: -1- AC_SUBST([build_cpu], [$[1]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_cpu]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.ac:5: -1- AC_SUBST([build_vendor], [$[2]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_vendor]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.ac:5: -1- AC_SUBST([build_os]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_os]) m4trace:configure.ac:5: -1- m4_pattern_allow([^build_os$]) m4trace:configure.ac:5: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host$]) m4trace:configure.ac:5: -1- AC_SUBST([host_cpu], [$[1]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_cpu]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.ac:5: -1- AC_SUBST([host_vendor], [$[2]]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_vendor]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.ac:5: -1- AC_SUBST([host_os]) m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_os]) m4trace:configure.ac:5: -1- m4_pattern_allow([^host_os$]) m4trace:configure.ac:8: -1- _m4_warn([obsolete], ['AM_CONFIG_HEADER': this macro is obsolete. You should use the 'AC_CONFIG_HEADERS' macro instead.], [aclocal.m4:766: AM_CONFIG_HEADER is expanded from... configure.ac:8: the top level]) m4trace:configure.ac:8: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.ac:11: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:11: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.ac:11: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.ac:13: -1- AC_SUBST([CXX]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXXFLAGS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.ac:13: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:13: -1- AC_SUBST([LIBS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:13: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:13: -1- AC_SUBST([CXX]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXX$]) m4trace:configure.ac:13: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([ac_ct_CXX]) m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.ac:13: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.ac:13: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.ac:13: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([OBJEXT]) m4trace:configure.ac:13: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.ac:13: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([DEPDIR]) m4trace:configure.ac:13: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.ac:13: -1- AC_SUBST([am__include]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__include]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__include$]) m4trace:configure.ac:13: -1- AC_SUBST([am__quote]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__quote]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.ac:13: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.ac:13: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([AMDEP_TRUE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.ac:13: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([AMDEP_FALSE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.ac:13: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.ac:13: -1- AC_SUBST([am__nodep]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__nodep]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__nodep$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__nodep]) m4trace:configure.ac:13: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CXXDEPMODE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.ac:13: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:13: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.ac:13: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CFLAGS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CFLAGS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.ac:14: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.ac:14: -1- AC_SUBST([LIBS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.ac:14: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CC$]) m4trace:configure.ac:14: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([ac_ct_CC]) m4trace:configure.ac:14: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.ac:14: -1- AC_REQUIRE_AUX_FILE([compile]) m4trace:configure.ac:14: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([CCDEPMODE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.ac:14: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:14: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.ac:14: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.ac:14: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) m4trace:configure.ac:14: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.ac:14: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.ac:15: -1- AM_PROG_CC_C_O m4trace:configure.ac:16: -1- AC_SUBST([LEX]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LEX]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX$]) m4trace:configure.ac:16: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.ac:16: -1- AC_SUBST([LEXLIB]) m4trace:configure.ac:16: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.ac:16: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER]) m4trace:configure.ac:16: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.ac:16: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a `char@<:@@:>@\'. */ @%:@undef YYTEXT_POINTER]) m4trace:configure.ac:17: -1- AC_SUBST([YACC]) m4trace:configure.ac:17: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- AC_SUBST([YACC]) m4trace:configure.ac:17: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YACC$]) m4trace:configure.ac:17: -1- AC_SUBST([YFLAGS]) m4trace:configure.ac:17: -1- AC_SUBST_TRACE([YFLAGS]) m4trace:configure.ac:17: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.ac:18: -1- AC_SUBST([CPP]) m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:18: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.ac:18: -1- AC_SUBST([CPP]) m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) m4trace:configure.ac:19: -1- AC_SUBST([RANLIB]) m4trace:configure.ac:19: -1- AC_SUBST_TRACE([RANLIB]) m4trace:configure.ac:19: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.ac:21: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.ac:21: -1- AC_SUBST_TRACE([LN_S]) m4trace:configure.ac:21: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.ac:22: -1- AC_SUBST([AWK]) m4trace:configure.ac:22: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.ac:22: -1- m4_pattern_allow([^AWK$]) m4trace:configure.ac:90: -1- AC_SUBST([SAMPLE_EXTRA_LIBS]) m4trace:configure.ac:90: -1- AC_SUBST_TRACE([SAMPLE_EXTRA_LIBS]) m4trace:configure.ac:90: -1- m4_pattern_allow([^SAMPLE_EXTRA_LIBS$]) m4trace:configure.ac:91: -1- AC_SUBST([platform]) m4trace:configure.ac:91: -1- AC_SUBST_TRACE([platform]) m4trace:configure.ac:91: -1- m4_pattern_allow([^platform$]) m4trace:configure.ac:94: -1- AC_SUBST([GREP]) m4trace:configure.ac:94: -1- AC_SUBST_TRACE([GREP]) m4trace:configure.ac:94: -1- m4_pattern_allow([^GREP$]) m4trace:configure.ac:94: -1- AC_SUBST([EGREP]) m4trace:configure.ac:94: -1- AC_SUBST_TRACE([EGREP]) m4trace:configure.ac:94: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.ac:94: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.ac:94: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.ac:94: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ @%:@undef STDC_HEADERS]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ARPA_INET_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_XLOCALE_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_XLOCALE_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ERRNO_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_FCNTL_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_CTYPE_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_LIMITS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_FLOAT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_FLOAT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_MATH_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_MATH_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_NETDB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_NETINET_IN_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRING_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRINGS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDINT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_INTTYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_TIME_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_INTTYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_SOCKET_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIME_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIMEB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_POLL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_POLL_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_OPENSSL_SSL_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_OPENSSL_SSL_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_GNUTLS_GNUTLS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_GNUTLS_GNUTLS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_ZLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_ZLIB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_STAT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRING_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_MEMORY_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STRINGS_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_INTTYPES_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDINT_H]) m4trace:configure.ac:95: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.ac:98: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.ac:98: -1- m4_pattern_allow([^const$]) m4trace:configure.ac:98: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ @%:@undef const]) m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([size_t]) m4trace:configure.ac:99: -1- m4_pattern_allow([^size_t$]) m4trace:configure.ac:99: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ @%:@undef size_t]) m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) m4trace:configure.ac:100: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$]) m4trace:configure.ac:100: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ @%:@undef TIME_WITH_SYS_TIME]) m4trace:configure.ac:101: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) m4trace:configure.ac:101: -1- m4_pattern_allow([^TM_IN_SYS_TIME$]) m4trace:configure.ac:101: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ @%:@undef TM_IN_SYS_TIME]) m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_GMTOFF]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM_TM_GMTOFF$]) m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_GMTOFF], [/* Define to 1 if `tm_gmtoff\' is a member of `struct tm\'. */ @%:@undef HAVE_STRUCT_TM_TM_GMTOFF]) m4trace:configure.ac:106: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM___TM_GMTOFF]) m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_STRUCT_TM___TM_GMTOFF$]) m4trace:configure.ac:106: -1- AH_OUTPUT([HAVE_STRUCT_TM___TM_GMTOFF], [/* Define to 1 if `__tm_gmtoff\' is a member of `struct tm\'. */ @%:@undef HAVE_STRUCT_TM___TM_GMTOFF]) m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_SYS_TIME_H]) m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_UNISTD_H]) m4trace:configure.ac:109: -1- AH_OUTPUT([HAVE_ALARM], [/* Define to 1 if you have the `alarm\' function. */ @%:@undef HAVE_ALARM]) m4trace:configure.ac:109: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS mktime.$ac_objext"]) m4trace:configure.ac:109: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:109: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:109: -1- AC_LIBSOURCE([mktime.c]) m4trace:configure.ac:110: -1- _m4_warn([obsolete], [The macro `AC_TYPE_SIGNAL' is obsolete. You should run autoupdate.], [../../lib/autoconf/types.m4:759: AC_TYPE_SIGNAL is expanded from... configure.ac:110: the top level]) m4trace:configure.ac:110: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) m4trace:configure.ac:110: -1- m4_pattern_allow([^RETSIGTYPE$]) m4trace:configure.ac:110: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ @%:@undef RETSIGTYPE]) m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_STRFTIME], [/* Define to 1 if you have the `strftime\' function. */ @%:@undef HAVE_STRFTIME]) m4trace:configure.ac:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRFTIME]) m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_STRFTIME$]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_RANDOM], [/* Define to 1 if you have the `random\' function. */ @%:@undef HAVE_RANDOM]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ @%:@undef HAVE_GETTIMEOFDAY]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_FTIME], [/* Define to 1 if you have the `ftime\' function. */ @%:@undef HAVE_FTIME]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_LOCALTIME_R], [/* Define to 1 if you have the `localtime_r\' function. */ @%:@undef HAVE_LOCALTIME_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_TIMEGM], [/* Define to 1 if you have the `timegm\' function. */ @%:@undef HAVE_TIMEGM]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_GMTIME], [/* Define to 1 if you have the `gmtime\' function. */ @%:@undef HAVE_GMTIME]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_GMTIME_R], [/* Define to 1 if you have the `gmtime_r\' function. */ @%:@undef HAVE_GMTIME_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_ASCTIME], [/* Define to 1 if you have the `asctime\' function. */ @%:@undef HAVE_ASCTIME]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_ASCTIME_R], [/* Define to 1 if you have the `asctime_r\' function. */ @%:@undef HAVE_ASCTIME_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */ @%:@undef HAVE_MEMSET]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ @%:@undef HAVE_SELECT]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */ @%:@undef HAVE_SOCKET]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ @%:@undef HAVE_SNPRINTF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */ @%:@undef HAVE_STRCHR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ @%:@undef HAVE_STRERROR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRERROR_R], [/* Define to 1 if you have the `strerror_r\' function. */ @%:@undef HAVE_STRERROR_R]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRLCPY], [/* Define to 1 if you have the `strlcpy\' function. */ @%:@undef HAVE_STRLCPY]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRRCHR], [/* Define to 1 if you have the `strrchr\' function. */ @%:@undef HAVE_STRRCHR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ @%:@undef HAVE_STRSTR]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOL], [/* Define to 1 if you have the `strtol\' function. */ @%:@undef HAVE_STRTOL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ @%:@undef HAVE_STRTOUL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */ @%:@undef HAVE_STRTOLL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */ @%:@undef HAVE_STRTOULL]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOLD], [/* Define to 1 if you have the `strtold\' function. */ @%:@undef HAVE_STRTOLD]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */ @%:@undef HAVE_STRTOD]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOF], [/* Define to 1 if you have the `strtof\' function. */ @%:@undef HAVE_STRTOF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOLD_L], [/* Define to 1 if you have the `strtold_l\' function. */ @%:@undef HAVE_STRTOLD_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOD_L], [/* Define to 1 if you have the `strtod_l\' function. */ @%:@undef HAVE_STRTOD_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_STRTOF_L], [/* Define to 1 if you have the `strtof_l\' function. */ @%:@undef HAVE_STRTOF_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SSCANF], [/* Define to 1 if you have the `sscanf\' function. */ @%:@undef HAVE_SSCANF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SSCANF_L], [/* Define to 1 if you have the `sscanf_l\' function. */ @%:@undef HAVE_SSCANF_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ @%:@undef HAVE_SNPRINTF]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_SPRINTF_L], [/* Define to 1 if you have the `sprintf_l\' function. */ @%:@undef HAVE_SPRINTF_L]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_WCTOMB], [/* Define to 1 if you have the `wctomb\' function. */ @%:@undef HAVE_WCTOMB]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_MBTOWC], [/* Define to 1 if you have the `mbtowc\' function. */ @%:@undef HAVE_MBTOWC]) m4trace:configure.ac:112: -1- AH_OUTPUT([HAVE_POLL], [/* Define to 1 if you have the `poll\' function. */ @%:@undef HAVE_POLL]) m4trace:configure.ac:115: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN]) m4trace:configure.ac:115: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:115: -1- AH_OUTPUT([HAVE_ISNAN], [/* isnan */ @%:@undef HAVE_ISNAN]) m4trace:configure.ac:116: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF]) m4trace:configure.ac:116: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:116: -1- AH_OUTPUT([HAVE_ISINF], [/* isinf */ @%:@undef HAVE_ISINF]) m4trace:configure.ac:124: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISNAN]) m4trace:configure.ac:124: -1- m4_pattern_allow([^HAVE_ISNAN$]) m4trace:configure.ac:124: -1- AH_OUTPUT([HAVE_ISNAN], [/* isnan */ @%:@undef HAVE_ISNAN]) m4trace:configure.ac:136: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISINF]) m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ISINF$]) m4trace:configure.ac:136: -1- AH_OUTPUT([HAVE_ISINF], [/* isinf */ @%:@undef HAVE_ISINF]) m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME_R], [/* Define to 1 if you have the `gethostbyname_r\' function. */ @%:@undef HAVE_GETHOSTBYNAME_R]) m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME_R]) m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME_R$]) m4trace:configure.ac:146: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ @%:@undef HAVE_STDLIB_H]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and to 0 otherwise. */ @%:@undef HAVE_MALLOC]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC]) m4trace:configure.ac:146: -1- m4_pattern_allow([^HAVE_MALLOC$]) m4trace:configure.ac:146: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS malloc.$ac_objext"]) m4trace:configure.ac:146: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:146: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:146: -1- AC_LIBSOURCE([malloc.c]) m4trace:configure.ac:146: -1- AC_DEFINE_TRACE_LITERAL([malloc]) m4trace:configure.ac:146: -1- m4_pattern_allow([^malloc$]) m4trace:configure.ac:146: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */ @%:@undef malloc]) m4trace:configure.ac:157: -1- AM_CONDITIONAL([DEBUG_COMPILE], [test x$debug = xtrue]) m4trace:configure.ac:157: -1- AC_SUBST([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- AC_SUBST_TRACE([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_TRUE$]) m4trace:configure.ac:157: -1- AC_SUBST([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:157: -1- AC_SUBST_TRACE([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:157: -1- m4_pattern_allow([^DEBUG_COMPILE_FALSE$]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_TRUE]) m4trace:configure.ac:157: -1- _AM_SUBST_NOTMAKE([DEBUG_COMPILE_FALSE]) m4trace:configure.ac:163: -1- AC_SUBST([SOAPCPP2_DEBUG]) m4trace:configure.ac:163: -1- AC_SUBST_TRACE([SOAPCPP2_DEBUG]) m4trace:configure.ac:163: -1- m4_pattern_allow([^SOAPCPP2_DEBUG$]) m4trace:configure.ac:168: -1- AC_SUBST([SOAPCPP2_IMPORTPATH]) m4trace:configure.ac:168: -1- AC_SUBST_TRACE([SOAPCPP2_IMPORTPATH]) m4trace:configure.ac:168: -1- m4_pattern_allow([^SOAPCPP2_IMPORTPATH$]) m4trace:configure.ac:173: -1- AC_SUBST([WSDL2H_IMPORTPATH]) m4trace:configure.ac:173: -1- AC_SUBST_TRACE([WSDL2H_IMPORTPATH]) m4trace:configure.ac:173: -1- m4_pattern_allow([^WSDL2H_IMPORTPATH$]) m4trace:configure.ac:181: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:181: the top level]) m4trace:configure.ac:190: -1- AC_SUBST([SOAPCPP2_NONAMESPACES]) m4trace:configure.ac:190: -1- AC_SUBST_TRACE([SOAPCPP2_NONAMESPACES]) m4trace:configure.ac:190: -1- m4_pattern_allow([^SOAPCPP2_NONAMESPACES$]) m4trace:configure.ac:198: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:198: the top level]) m4trace:configure.ac:207: -1- AC_SUBST([SOAPCPP2_IPV6]) m4trace:configure.ac:207: -1- AC_SUBST_TRACE([SOAPCPP2_IPV6]) m4trace:configure.ac:207: -1- m4_pattern_allow([^SOAPCPP2_IPV6$]) m4trace:configure.ac:226: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:226: the top level]) m4trace:configure.ac:233: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1472: AC_ARG_ENABLE is expanded from... configure.ac:233: the top level]) m4trace:configure.ac:275: -1- AC_SUBST([WSDL2H_EXTRA_FLAGS]) m4trace:configure.ac:275: -1- AC_SUBST_TRACE([WSDL2H_EXTRA_FLAGS]) m4trace:configure.ac:275: -1- m4_pattern_allow([^WSDL2H_EXTRA_FLAGS$]) m4trace:configure.ac:276: -1- AC_SUBST([WSDL2H_EXTRA_LIBS]) m4trace:configure.ac:276: -1- AC_SUBST_TRACE([WSDL2H_EXTRA_LIBS]) m4trace:configure.ac:276: -1- m4_pattern_allow([^WSDL2H_EXTRA_LIBS$]) m4trace:configure.ac:277: -1- AC_SUBST([SAMPLE_INCLUDES]) m4trace:configure.ac:277: -1- AC_SUBST_TRACE([SAMPLE_INCLUDES]) m4trace:configure.ac:277: -1- m4_pattern_allow([^SAMPLE_INCLUDES$]) m4trace:configure.ac:278: -1- AC_SUBST([SAMPLE_SSL_LIBS]) m4trace:configure.ac:278: -1- AC_SUBST_TRACE([SAMPLE_SSL_LIBS]) m4trace:configure.ac:278: -1- m4_pattern_allow([^SAMPLE_SSL_LIBS$]) m4trace:configure.ac:279: -1- AC_SUBST([WSDL2H_SOAP_CPP_LIB]) m4trace:configure.ac:279: -1- AC_SUBST_TRACE([WSDL2H_SOAP_CPP_LIB]) m4trace:configure.ac:279: -1- m4_pattern_allow([^WSDL2H_SOAP_CPP_LIB$]) m4trace:configure.ac:289: -1- AM_CONDITIONAL([ENABLE_SAMPLES], [test x$samples = xtrue]) m4trace:configure.ac:289: -1- AC_SUBST([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:289: -1- AC_SUBST_TRACE([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:289: -1- m4_pattern_allow([^ENABLE_SAMPLES_TRUE$]) m4trace:configure.ac:289: -1- AC_SUBST([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:289: -1- AC_SUBST_TRACE([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:289: -1- m4_pattern_allow([^ENABLE_SAMPLES_FALSE$]) m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_TRUE]) m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([ENABLE_SAMPLES_FALSE]) m4trace:configure.ac:290: -1- AC_SUBST([ENABLE_SAMPLES]) m4trace:configure.ac:290: -1- AC_SUBST_TRACE([ENABLE_SAMPLES]) m4trace:configure.ac:290: -1- m4_pattern_allow([^ENABLE_SAMPLES$]) m4trace:configure.ac:297: -1- AC_SUBST([SAMPLE_DIRS]) m4trace:configure.ac:297: -1- AC_SUBST_TRACE([SAMPLE_DIRS]) m4trace:configure.ac:297: -1- m4_pattern_allow([^SAMPLE_DIRS$]) m4trace:configure.ac:307: -1- AC_SUBST([LEX_DEFINE]) m4trace:configure.ac:307: -1- AC_SUBST_TRACE([LEX_DEFINE]) m4trace:configure.ac:307: -1- m4_pattern_allow([^LEX_DEFINE$]) m4trace:configure.ac:308: -1- AC_SUBST([LEX_FLAGS]) m4trace:configure.ac:308: -1- AC_SUBST_TRACE([LEX_FLAGS]) m4trace:configure.ac:308: -1- m4_pattern_allow([^LEX_FLAGS$]) m4trace:configure.ac:309: -1- AC_SUBST([LEXLIB]) m4trace:configure.ac:309: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.ac:309: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.ac:319: -1- AC_SUBST([BISON_DEFINE]) m4trace:configure.ac:319: -1- AC_SUBST_TRACE([BISON_DEFINE]) m4trace:configure.ac:319: -1- m4_pattern_allow([^BISON_DEFINE$]) m4trace:configure.ac:320: -1- AC_SUBST([YACC_LIB]) m4trace:configure.ac:320: -1- AC_SUBST_TRACE([YACC_LIB]) m4trace:configure.ac:320: -1- m4_pattern_allow([^YACC_LIB$]) m4trace:configure.ac:366: -1- AC_CONFIG_FILES([ Makefile \ gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc \ gsoap/Makefile \ gsoap/src/Makefile \ gsoap/wsdl/Makefile \ gsoap/samples/Makefile \ gsoap/samples/autotest/Makefile \ gsoap/samples/aws/Makefile \ gsoap/samples/calc/Makefile \ gsoap/samples/calc++/Makefile \ gsoap/samples/chaining/Makefile \ gsoap/samples/chaining++/Makefile \ gsoap/samples/databinding/Makefile \ gsoap/samples/dime/Makefile \ gsoap/samples/dom/Makefile \ gsoap/samples/oneway/Makefile \ gsoap/samples/oneway++/Makefile \ gsoap/samples/factory/Makefile \ gsoap/samples/factorytest/Makefile \ gsoap/samples/gmt/Makefile \ gsoap/samples/googleapi/Makefile \ gsoap/samples/hello/Makefile \ gsoap/samples/httpcookies/Makefile \ gsoap/samples/lu/Makefile \ gsoap/samples/magic/Makefile \ gsoap/samples/mashup/Makefile \ gsoap/samples/mashup++/Makefile \ gsoap/samples/mtom/Makefile \ gsoap/samples/mtom-stream/Makefile \ gsoap/samples/polytest/Makefile \ gsoap/samples/primes/Makefile \ gsoap/samples/roll/Makefile \ gsoap/samples/router/Makefile \ gsoap/samples/rss/Makefile \ gsoap/samples/ssl/Makefile \ gsoap/samples/template/Makefile \ gsoap/samples/udp/Makefile \ gsoap/samples/varparam/Makefile \ gsoap/samples/wsa/Makefile \ gsoap/samples/wsrm/Makefile \ gsoap/samples/wsse/Makefile \ gsoap/samples/wst/Makefile \ gsoap/samples/xml-rpc-json/Makefile gsoap/samples/rest/Makefile ]) m4trace:configure.ac:367: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.ac:367: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.ac:367: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([LTLIBOBJS]) m4trace:configure.ac:367: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.ac:367: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.ac:367: -1- AC_SUBST([am__EXEEXT_TRUE]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) m4trace:configure.ac:367: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.ac:367: -1- AC_SUBST([am__EXEEXT_FALSE]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) m4trace:configure.ac:367: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.ac:367: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.ac:367: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([top_builddir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([top_build_prefix]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([srcdir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([abs_srcdir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([top_srcdir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([abs_top_srcdir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([builddir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([abs_builddir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([abs_top_builddir]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([INSTALL]) m4trace:configure.ac:367: -1- AC_SUBST_TRACE([MKDIR_P]) gsoap-2.8.60/configure.scan0000644000175000017500000000344313227173553015123 0ustar ellertellert# Process this file with autoconf to produce a configure script. AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADER([config.h]) # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_AWK AC_PROG_CPP AC_PROG_LEX AC_PROG_RANLIB AC_PROG_YACC # Checks for libraries. # FIXME: Replace `main' with a function in `-le': AC_CHECK_LIB([e], [main]) # FIXME: Replace `main' with a function in `-lgsoap': AC_CHECK_LIB([gsoap], [main]) # FIXME: Replace `main' with a function in `-links': AC_CHECK_LIB([inks], [main]) # FIXME: Replace `main' with a function in `-lm': AC_CHECK_LIB([m], [main]) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([arpa/inet.h errno.h fcntl.h limits.h netdb.h netinet/in.h stddef.h stdlib.h string.h strings.h sys/socket.h sys/time.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM # Checks for library functions. AC_FUNC_MALLOC AC_FUNC_MKTIME AC_TYPE_SIGNAL AC_FUNC_STRFTIME AC_FUNC_STRTOD AC_CHECK_FUNCS([gethostbyname localtime_r memset pow select socket strchr strerror strrchr strstr strtol strtoul]) AC_CONFIG_FILES([Makefile soapcpp2/Makefile soapcpp2/samples/Makefile soapcpp2/samples/calc/Makefile soapcpp2/samples/dime/Makefile soapcpp2/samples/factory/Makefile soapcpp2/samples/factorytest/Makefile soapcpp2/samples/mybubble/Makefile soapcpp2/samples/quote/Makefile soapcpp2/samples/quote2/Makefile soapcpp2/samples/quote3/Makefile soapcpp2/samples/quotex/Makefile soapcpp2/src/Makefile]) AC_OUTPUT gsoap-2.8.60/mkinstalldirs0000755000175000017500000000132213227173557015100 0ustar ellertellert#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here gsoap-2.8.60/config.guess0000644000175000017500000013135513227173553014615 0ustar ellertellert#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-01-01' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: gsoap-2.8.60/changelog.md0000644000175000017500000025334113227173553014551 0ustar ellertellert [![Go down](images/go-down.png) Go down](#latest) to view the latest changes Version 1.1 (1/1/2000) --- - Added typedef conventions. - Added enumerations. - Added hexBinary encoding. - Added base64 encoding. - Enable pass by reference operator (&) for output parameter. - Enable specification of methods in classes. Version 1.2 (9/9/2001) --- - Added WSDL generator. Version 1.2w (9/14/2001) --- - Win32 port. - Fixed a socket communication problem in win32 version. - Added namespace name pattern matching to ease validation. Version 1.2.1 (10/24/2001) --- - Added chunked HTTP 1.1 transfer support. - Improved buffering. - Fixed a problem with nested vector allocation. Version 1.2.2 (11/2/2001) --- - Support for special XML element names with dots, underscores, and center dots (see documentation section 5.3). - Fixed a decoding problem with dynamic array of pointers to polymorphic objects. - Fixed an encoding problem with enumerations. - Added a "safe-mode" flag to disable serialization of multi-referenced objects with `soap_disable_href = 1;` - You can set this global flag anywere in the code, but at least before serialization is performed. It will disable the use of href attributes when sending multi-reference data. Instead, the data is copied in the payload. When set, this flag will hang the serializer when sending cyclic data structures. Version 1.2.3 (12/5/2001) --- - Added bool type encoding/decoding. - Added dynamic multi-dimensional arrays. - Added support for primitive polymorphic types. - Added full support for CDATA content decoding. - More convenient customization of SOAP Headers and Faults. No separate soapheader.h and soapfault.h files required (and therefore no .cpp files have to be created for these). Instead, the compiler generates customized SOAP Header and SOAP Fault marshalling routines when struct/class `SOAP_ENV__Fault` and/or `SOAP_ENV__Header` are specified in the header file input to the compiler. - On demand generation of the marshalling routines for the primitive types, which reduces the size of the executables. - Fixed a WSDL incompatibility problem in the WSDL generator. - Improved decoding of multi-reference elements (no *`xsi:type`* required anymore in receiving message so gSOAP does not break). - Improved support for encoding/decoding indirect data (e.g. pointers to pointers to data). - Improved encoding of data with the same pointers to shared data but with the shared data declared with different XML schema types (formerly encoded as multi-reference data which could cause type incmpatibilities at the receiving side). For example, in the declarations `typedef char *xsd__NCName; xsd__NCName *s="SOAP"; char *t = s;` the pointers s and t point to the same data, but will not be encoded as multi-reference data since the types are different. - Added flag `soap_enable_null = 1;` - When set, all NULL pointers will be explicitly encoded. By default, NULL pointers are omitted from the SOAP payload. For example, with this flag set all NULL strings and other NULL pointer data will appear as nil values in the SOAP payload. - Added flag: `soap_enable_embedding = 1;` - When set, multi-reference data will be encoded inline which will guarantee the exact preservation of the structure of the data transmitted. However, some SOAP implementations do not support embedding inline multi-reference data although this encoding style is likely to be included in future verions of the SOAP protocol. The flag is useful when creating C++ applications that need to communicate data to eachother and the data structures need to be preserved. Setting this flag may cause a duplication of multi-reference data by the receiver created with the SOAP stub compiler when the data is part of a struct/class or array. The data is not copied by the receiver when the struct/class or arrays use pointers to the data type. - Added the ability to declare virtual destructors. - Fixed a compilation error with fixed-size array of pointers. - Fixed a problem with padding in Base64 (en/de)coding. - Fixed XML entity decoding (hexadecimal). - Added encoding of sparse arrays. A sparse array MUST be declared as a (fixed-size of dynamic) array of pointers. NULL pointer values are omitted from the output and *`SOAP-ENC:position`* attributes are used for non-NULL elements. - Changed `soap_put` and `soap_get` functions to include explicit schema type parameters. This fixed a problem with Web services that need to return typedef-ed XML schema types The new stdsoap.cpp and stdsoap.h files are incompatible with the previous version(s). - Added the ability to ignore the names of accessors when decoding fields through the use of a leading underscore (`_`) in a field name. For example: `ns__mymethod(xsd__string in, xsd__string &_return);` - When used to invoke a remote method, the actual element name of the remote return parameter used by the service is insignificant. - Improved memory management. Added new function: `soap_destroy()` to remove all class instances. - Improved documentation. - Added `time_t` type support, but still need to add encoding/decoding routines to the runtime (next version). - Added `wchar_t` type support, but still need to add encoding/decoding routines to the runtime (next version). Version 1.2.4 (12/17/2001) --- - Added support for wide character strings (`wchar_t*`). - Added support for `time_t` type. - Added support for SOAP literal encoding. - Fixed an obscure bug in the deserialization of data from the SOAP4R toolkit that caused the deserializer to hang. - Fixed a problem with the `soap_disable_href` flag. - Fixed a problem with the position attributes in sparse multi-dimensional arrays. - Fixed a problem with the generation of .nsmap files. - Fixed a problem with mixed content decoding in strings. Version 1.2.5 (12/27/2001) --- - Fixed a memory leak in the block allocation scheme used for strings, hexBinary, and base64 types. - Fixed a bug in the WSDL generator for fixed-size arrays. - Fixed a problem with the use of trailing underscores in field names in struct/class declarations. Version 1.2.6 (1/25/2002) --- - Improved portability. - Improved id/href hash table efficiency and storage. - Improved namespace URI matching with wildcards. - Improved stand-alone deployment. - Added `soap_disable_response_count` flag. - Fixed operator declaration parsing (cast operators). - Fixed a WSDL generator bug for output parameters and enumeration types. - Renamed function `soap_return_fault()` into `soap_send_fault()`. Version 2.0 (2/2/2002) --- - Rewrote the compiler (soapcpp2) and the run-time engine libraries to create a thread safe implementation. Versions 1.2.7 and 2.0.1 (2/11/2002) --- - Added new soapcpp2 compiler options (-h -c -d -p). - Added optional specification of service name, location, and namespace URI in header file. - Improved interoperability. Versions 1.2.8 and 2.0.2 (2/24/2002) --- - Added function callbacks to support customized I/O and HTTP operations. This allows for plug-in HTTP code, NSAPI interface code, reading/writing from/to files or string buffers, etc. - Added HTTP 1.0/1.1 keep-alive support. - Added HTTP 1.1 chunked transfer support. - Added `soap_disable_request_count` flag. - Added `soap_enable_array_overflow` flag. - Added type naming conventions to serialize elements without generating *`xsi:type`* attributes. - Fixed a fixed-size array decoding problem (type mismatch). - Fixed `` print bug in the WSDL generator. Versions 1.3 and 2.1 (3/10/2002) --- - Added client-side SSL (HTTPS) support (thanks to Massimo Cafaro for his suggestions). - Added a naming convention for dynamic array `__ptr` fields which enables the naming of the XML tags of array elements. - Added WSDL Header and Fault schema generation. - Improved doc/literal encoding style. - Improved WSDL service/schema namespace generation. - Fixed *`SOAP-ENV:Header`* to be self contained. - Fixed WSDL generation of xsd schema types declared as string. - Fixed a method overriding type clash for derived classes. - Fixed spurious occurrence of `id="-1"` with `soap_enable_null` flag enabled. - Fixed a front-end gSOAP compiler problem with forward and cyclic struct declarations. Versions 1.3.1 and 2.1.1 (3/25/2002) --- - Added header file source constructs to support transient data types and transient struct/class fields to control gSOAP's code generatiion window for (de)serialization routines. - Added callback for handling XML elements that are ignored on the receiving side (e.g. because of schema type problems). This feature is intended to enhance the reliability of services/clients. - Added server-side SSL support and included an example multi-threaded stand-alone SSL secure SOAP server example. - Added proxy server support. - Improved message logging in gSOAP 2.1.1 (thanks to Jessie Ragsdale for his suggestions). - Fixed WSDL generation for dynamic arrays. - Fixed deserialization of empty multi-ref derived class instances. Versions 1.3.2 and 2.1.2 (4/15/2002) --- - Added socket timeout management. - Added optional client and server cookie support. - Added support for `maxOccurs="unbounded"` for arbitrary elements in complexTypes (not just limited to SOAP arrays). - Improved generation of schema *`xs:extension`* definitions to allow XML validation in the presence of class overriding. - Fixed ULONG64 type handling. - Fixed light validation problem (now rejects invalid XML schema URIs). - Fixed a deserialization type mismatch with typedef-ed pointer primitives. - Fixed WSDL and schema interoperability problems. Versions 1.3.3 and 2.1.3 (4/27/2002) --- - Added `mustUnderstand` declaration qualifier for SOAP Header processing. - Added `soap.actor` attribute for SOAP Header processing. - Added method-header-part directive to identify methods with header message associations (WSDL requirement). - Added bitmask (de)serialization. - Added FastCGI support. - Improved DLL build support (gSOAP 2.1.3 only). - Improved WinCE support (gSOAP 2.1.3 only, thanks to Sean Ryan for his suggestions). - Improved Mac OS X support. - WSDL generator improvements and fixes. - Workaround a bug in .NET SOAP Headers (non-unique id name values in .NET). - Fixed `disable_href=1` bug. - Fixed XML in string parsing code generation problem. Versions 1.3.4 and 2.1.4 (6/9/2002) --- - Added non-blocking `soap_accept()` with timeout management. - Added support for SOAP Header and Fault declared as classes. - Added syntax for `extern` declarations for transient types and fields. - Added support for SOAP Headers in SOAP Fault messages. - Added one-way SOAP messages (2.1.4 only). - Added support for user-defined (de)serializers (2.1.4 only). - Improved object memory management. - Improved support for AIX and HP platforms. - Fixed proxy server connect bug. - Fixed an OpenSSL bug. - Fixed `soap_instantiate_ClassX()` derived class allocation problem. - Fixed generation of spurious .xsd files when lots of trailing underscores are used by identifiers in the header file. - Fixed syntax error that occured with header files containing cyclic class declarations. - Fixed 'class in struct' and 'vector of classes' VMT initialization bugs. Version 2.1.5 (6/22/2002) --- - Added non-blocking remote method calls (not supported in win32 version). - Added specification of default values for struct/class fields. - Added specification of minOccurs and maxOccurs for struct/class fields. - Added support for the resolution operator `::` in identifiers. - Added abstract method declaration support. - Fixed WSDL generation of SOAP doc/lit. - Fixed `WITH_FASTCGI` option. Version 2.1.6 (7/10/2002) --- - Added DIME attachment support. - Added win32 non-blocking sockets. - Changed `"%lld"` and `"%llu"` format strings into `"%I64d"` and `"%I64u"` format string for win32. - Improved I/O. - Fixed multi-dimensional dynamic array (de)serialization. - Fixed WSDL enum and header namespace generation. Version 2.1.7 (8/6/2002) --- - Added generation of example SOAP/XML request and response messages by the compiler. - Added RSA to SSL stack. - Added two callbacks to the HTTP stack for efficient handling of HTTP headers in Apache-mod and IIS. - Added compiler option -m (malloc() memory control) and updated doc on memory allocation policies. - Added compiler option -i to support #include and #define directives. - Improved HTTP cookie support to handle new and old cookie protocols. - Improved external class (de)serialization support (std::string example is included). - Fixed a SSL+proxy connect problem. - Fixed uninitialized '//gsoap..executable:' string which caused sporadic exits. - Fixed XML literal string encoding problem introduced with DIME. - Fixed and removed WSDL duplicate response elements. - Fixed LONG64 and ULONG64 types for WinCE. Version 2.1.8 (8/28/2002) --- - Added client-side proxy class source code generation. - Added `soap.enable_strict` flag to enable very strict validation of messages (unknown namespace URIs and XML elements are not allowed). - Added `soap.socket_flags` to control socket send and recv flags, e.g. to disable broken pipe signals (`soap.socket_flags=MSG_NOSIGNAL`). - Added `//gsoap ns service method-action` header file directive. - Added server-side `soap_receiver_fault()` and `soap_sender_fault()` functions to return SOAP 1.1 and SOAP 1.2 faults. - Added seeding of the PRNG for SSL. - Added soapcpp2 compiler option '-2' to automate SOAP 1.2 support (SOAP 1.2 features are Beta-release). - Changed keep-alive support (see docs). - Improved WSDL output. - Workaround Bison 1.6 for win32 bug in gSOAP win32 version. - Fixed a wild-card matching bug in `soap_tag_cmp()`. - Fixed a string deserialization problem. - Fixed a deserialization bug that can occur in a client-server combination with gSOAP and Apache Axis. Version 2.1.9 (9/08/2002) --- - Added HTTP proxy authentication. - Added plug-in registry (Beta). - Changed compiler exit status for compilation errors. - Fixed stdin/stdout binary mode for DIME transfer with gSOAP for win32. - Fixed win32 soapcpp2.exe bug in .res.xml file generation. Version 2.1.10 (10/14/2002) --- - Added `//gsoap ns service method-documentation:` directive. - Added provision for additional documentation text with `//gsoap ns service name:` directive. - Added #import pragma to (recursively) import gSOAP header files. - Added plugin features and included a plugin example in 'extras' directory. - Added automake/autoconf to generic gSOAP package (thanks to Christian Aberger). - Added `-DWITH_LOCALTIME` compilation option to control `time_t` (de)serialization. - Changed `time_t` (de)serialization (now uses timegm() and gmtime() to handle UTC). Found that mktime() library call is buggy on some systems. - Improved and reorganized package directory structure. - Fixed DDL linkage problem with instantiate/delete routines dealing with class instance memory management. - Fixed compilation problem with Sun Workshop CC compiler and other compilers that adopt a specfic class VMT structure that could break object (de)serializers. - Fixed bug in WSDL generator with multiple service namespaces. Version 2.1.11 (11/10/2002) --- - Added a multi-functional SOAP router application (message forwarding and message relay server). - Added keep-alive support for asynchronous one-way messages. - Improved parsing and handling of function prototypes and class methods. - Improved modular design to enable the compilation and linkage of multiple client and service modules. - Improved user-defined SOAP Fault detail handling. - Fixed `SSL_accept` bug. - Fixed serialization of pointers to dynamic arrays with multi-references. Version 2.2 (12/12/2002) --- - Added XML attribute (de)serialization support. - Added XSD QName parsing and conversion support (`typedef char *xsd__QName`). - Added compression support (`-DWITH_ZLIB` requires Zlib). - Changed and improved transport and encoding settings by splitting up sending and receiving side flags into separate sets. Deprecated `soap.enable_X` and `soap.disable_X` flags. - Improved keep-alive support (automatic client and server sides). - Fixed a bug in mustUnderstand handling. - Fixed a sporadic crash of the gSOAP compiler under win32. - Fixed user-defined SOAP Fault output in WSDL generator. Version 2.2.1 (12/18/2002) --- - Added callbacks to enable custom streaming of DIME attachments. - Fixed broken serialization of pointers to dynamic arrays with NULL `__ptr`. - Fixed some WSDL issues. Version 2.2.2 (1/25/2003) --- - Added gzip support (`-DWITH_GZIP` requires Zlib). - Added `faccept()` callback. - Improved HTTP chunking. - Fixed OpenSSL and `accept_timeout` (OpenSSL requires blocking sockets). - Fixed HTTP header buffering. - Fixed UTF8 decoding of a subset of characters (2-octet UTF). - Fixed `operator==` parsing. - Fixed a couple of WSDL issues. Version 2.2.3 (3/2/2003) --- - Added server-side HTTP basic authentication. - Improved speed. - Improved Tru64 portability. - Changed `fpost()` function callback signature: added `int port` argument and added port number to the Host: HTTP header. - Fixed memory leak in SSL connect when using OpenSSL DH. - Fixed custom (de)serializer definitions parsing. - Fixed a gzip/deflate bug with large transfers. - Fixed use of `ftime()` for `time_t` (de)serialization with timezones. - Fixed a problem with concurrent access to global namespace table by multiple threads. - Fixed crash with //gsoap name directive. - Fixed deserialization bug with multi-ref object encoding by Apache Axis. Version 2.3.1-8 (9/24/2003) --- - Updated SOAP 1.2 support (implements the SOAP 1.2 recommendation). - Added STL container support and built-in `std::string` encoding. - Added stand-alone Web server example to serve static and dynamic pages with a new HTTP GET plugin. - Added `void*` (de)serialization, e.g. useful to support polymorphism with C applications and as an alternative to union types. - Added XML DOM parser to support SOAP document encoding and for mixing of application data (de)serialization within an XML DOM. - Added `WITH_LEAN` and `WITH_LEANER` compilation flags to improve support for small-memory devices such as WinCE and Palm. - Added `SOAP_XML_CANONICAL` flag for canonical XML output (XML-C14N support and SOAP 1.2 normalization support). - Added `//gsoap ns method-encoding:` directive. - Added `//gsoap ns schema import:` directive. - Added optional class getter and setter methods for object (de)serialization. - Added `volatile` qualifier to indicate that certain type declarations should be treated 'as-is' when types are declared externally (e.g. part of a library). - Added a new string notation for declarations to specify simpleType restriction patterns. - Added soapcpp2 -I option to indicate #import path. - Added support for (de)serialization of application data to C++ iostreams. - Added `fsslauth()` callback. - Added HTTP code error values. - Added `SOAP_MALLOC` and `SOAP_FREE` macros to replace `malloc()` and `free()`. - Added `soap_strdup(soap, string)` to copy strings in gSOAP's memory space. - Added chunked streaming DIME output (thanks to J. Li for his suggestions). - Added `SOAP_SOCKET` for win32 support (thanks to B. Gille for his suggestions). - Added `SO_LINGER` support with `soap.connect_flags`. - Added support for iso-8859-1 encoded XML parsing (default is utf8). - Added #module directive to build shared libraries. - Added C++ namespaces support to enable the compilation and linkage of multiple client and service codes. - Added `WITH_CASEINSENSITIVETAGS` compilation flag to enable case insensitive XML parsing. - Improved WSDL types schema output. - Improved custom (de)serialization (note: extras/stringtest example has been changed). - Improved SOAP literal encoding. - Improved speed. - Improved HTTP1.0/1.1 support. - Removed `soap.defaultNamespace` in favor of automatic SOAP literal output based on `soap.encodingStyle` value. - Fixed GMT to DST localtime conversion, but still issues with Sun Solaris. - Fixed dynamic array `__offset` handling. - Fixed class definition order. - Fixed sporadic memory leak in HTTP cookie reader. - Fixed multi-threaded server-side OpenSSL initialization. - Fixed enumeration-based XML attribute deserialiation. - Fixed *`SOAP-ENC:position`* attribute placement when arrays of pointers are mixed with nillable data. - Fixed crash when parsing incorrect SOAP/XML attribute content. Version 2.4 (12/20/2003) --- - New WSDL parser and importer with improved support for SOAP document style and literal encoding. - Added optional full schema validation (partial by default). Use `SOAP_XML_STRICT` flag. - Added SSL session caching. - Added `soap_set_namespaces()` to switch namespace tables. - Fixed plugin memory leak. REQUIRED CHANGE to plugin allocation and copying. - Fixed server-side blocking SSL accept. Version 2.4.1 (01/07/2004) --- - Changed `_USCORE_` and `_DOT_` naming conventions into `_USCORE` and `_DOT` to improve name mapping. - Updated DOM parser (integrated into core gSOAP library). - Improved WSDL parser and included several new features. - Fixed WSDL schema import and WSDL literal output. Version 2.5 (01/28/2004) --- - Changed default encoding to SOAP RPC literal, as mandated by WS-I Basic Profile 1.0a and best practices. - Added soapcpp2 compiler option -e for backward compatibility to gSOAP 2.4.1 and earlier that use SOAP RPC encoding defaults (helpful when migrating gSOAP projects to 2.5). - Added automatic compiler-side WS-I Basic Profile 1.0a compliance warnings (warns before deployment). - Added `fget()` callback for HTTP GET responses. - Added IPv6 support contributed by Wind River Systems. - Added VxWorks support contributed by Wind River Systems. - Improved SOAP Fault handling. - Improved interop with Axis RPC encoded response messages. - Fixed `std::string` *`xsi:type`* attribute value. - Fixed gSOAP 2.4 problems with serialization of enumeration values outside enumeration range. - Fixed gSOAP 2.4 Pocket PC build problem. - Fixed wsdl2h SOAP Fault and Header output. Version 2.5.1 (02/12/2004) --- - Improved WSDL output and WS-I BP1.0a compliance. - Improved WSDL parser stability. - Fixed problem parsing empty *`xsd:base64Binary`* elements. - Fixed VxWorks and TRU64 portability issues. - Fixed HTTP 400 error problem. - Fixed soapcpp2 2.5 stability problem with one-way messages. Version 2.5.2 (02/23/2004) --- - Fixed WSDL generation warnings. - Fixed LONG64 problem for PalmOS. - Fixed module build link problem and 'components' example. Version 2.6.0 (03/28/2004) --- - Changed default style to doc/lit. - Improved doc/lit WSDL handling. - Improved soapcpp2 sample SOAP/XML message output. - Added proxy support for wsdl2h. - Fixed CONNECT method for proxy+SSL+gzip. Version 2.6.1 (06/07/2004) --- - Added optional multibyte character support. - Improved WSDL output. - Fixed STL container multi-ref deserialization problem with missing data. - Fixed doc/lit server code generation from doc/lit WSDL definitions. Version 2.6.2 (06/12/2004) --- - Added Matlab(tm) code output (documentation is not availabel yet). - Improved wsdl2h output for schema facets. - Updated dom.cpp. - Changed wsdl2h `std::string*` to `std::string` generation (to avoid double pointers `std::string**`). To obtain old behavior, add entry `xsd__string = | std::string* | std::string*` to typemap.dat. - Fixed wsdl2h handling of *`xs:include>`*. - Fixed wsdl2h handling of empty namespaces and absent targetNamespace schema attributes. - Fixed MB char handling. Version 2.7.0a/b/c/d/e/f (09/10/2004, 2/1/2005) --- - Added multipart/related support for SOAP with MIME attachments (SwA). - Added API functions for DIME open and closed layout support. - Added `//gsoap schema elementForm:` and `//gsoap schema attributeForm` directives. - Added `fclosesocket`, `fshutdownsocket`, `fpoll`, `fserveloop` callbacks. - Added `soap.authrealm` string attribute to set basic authentication realm. - Added `soap.prolog` string attribute to output optional XML prolog with processing instructions and directives. - Added soapcpp2 option -t. - Added wsdl2h options -e and -i. - Added Palm OS and Symbian instructions and examples. - Added xml-rpc support and examples. - New `mod_gsoap` directory with modules for Apache 1.x/2.x, IIS, and WinInet - Improved XML validation with `SOAP_XML_STRICT` flag. - Improved memory footprint (reduced code size and reduced serialization overhead). - Improved runtime id-ref serialization and deserialization. - Improved wsdl2h translation. - Updated dom.cpp. - Updated webserver.c. - Fixed issues with namespace qualification in doc/lit messages. - Fixed `SOAP_HREF` error. - Fixed proxy+SSL+zlib+chunking. - Fixed SSL `select()` polling in `frecv()`. - Fixed wsdl2h multidimensional SOAP arrays generate problem. Version 2.7.1 (03/31/2005) --- - Added new style of C++ proxy/object generation (objects derived from soap struct), enabled with soapcpp2 option -i. - Added new features to wsdl2h generation to enable user-defined class/struct extensions such as member data and functions which are declared in typemap.dat. - Added MIME multipart/form-data parsing to support HTTP POST HTML form handling (example included in samples/webserver). - Added built-in memory leak detection enabled with `-DDEBUG`. - Added UDDI v2 API and examples. - Added 'WS' directory with WS protocols, such as WS-Addressing. This part will mature as more WS protocols will be added over time. - Added `fseterror()` callback. - Improved wsdl2h code output. - Enhanced Web server sample code, and httpget and logging plugins. - Fixed base64/hexBinary XML attribute serialization. - Fixed a missing min/maxOccurs check for validation. Version 2.7.2 (05/11/2005) --- - Added SOAP-over-UDP IPv4/IPv6 support with examples. - Added UDDI v2 API publish example. - Improved wsdl2h parser accepting multiple WSDL/XSD files from the command line. - Fixed wsdl2h schema import from included schema bug. - Fixed SOAP 1.2 Fault Subcode handling. Version 2.7.3 (06/27/2005) --- - Added MTOM attachment support. - Added 'plugin' directory with example plug-ins. - Added 'import' directory for commonly #import-ed files such as stlvector.h. - Added HTTP digest authentication plug-in 'plugins/httpda.h'. - Added new import feature to wsdl2h using `ns=URI` convention for typemap.dat files, which enables wsdl2h to parse a WSDL that imports known WSDLs/schemas such as XOP, XML MIME, and WS-Addressing without actually reading the imported WSDL/schemas. - Added soapcpp2 options -C and -S to generate client- or server-only codes. - Added multi-path support for soappcpp2 option -I. - Added C and C++ examples to combine multiple clients and services into one executable, see the samples/components directory in the package. - Improved soapcpp2 option -e to generate SOAP RPC encoding style client/server codes by default (instead of document/literal by default). - Fixed wsdl2h circular import of schemas. - Fixed attributeGroup handling in wsdl2h. - Fixed soapcpp2 handling of 'invisible' tags, e.g. `__any`, that should only be populated after all else failed to match the delivered XML content. - Fixed validation of numeric enum constants with `SOAP_XML_STRICT` validation. - Fixed engine's spurious log file generation issue. Version 2.7.4 (07/24/2005) --- - Added union serialization. - Added `//gsoap ... type-documentation:` directive. - Added `//gsoap ... method-mime-type:` directive. - Added wsdl2h option -g for generating global element/attribute declarations for building modular .h files. - Added wsdl2 option -y for generating typedef synonyms for structs and enums, with improved handling of typedefs by soapcpp2. - Added wsdl2 option -u to disable union generation for *`xs:choice`*. - Improved wsdl2h documentation generation. - Improved wsdl2h and soapcpp2 MIME bindings. - Improved dynamic memory allocation in engine with look-aside buffering. - Fixed wsdl2h *`xs:complexContent/extension/attributeGroup`* translation. - Fixed wsdl2h *`xs:choice`* with min/maxOccurs != 1 translation. - Fixed wsdl2h *`soap:body parts`* attribute. Version 2.7.5 (08/01/2005) --- - Added *`xs:redefine`* processing to wsdl2h. - Added HTML POST application/x-www-form-urlencoded plugin httpform.c (demo samples/webserver). - Improved wsdl2h output. - Fixed wsdl2h handling of duplicate values in single enum list. Version 2.7.6 revision a/b/c/d/e (08/19/2005-02/18/06) --- - Added WS-Security authentication, tokens, and signatures with new 'wsse' plugin, see documentation in 'doc' directory and 'samples/wsse'. - Added 'doc' directory for documentation and moved soapdoc2.html and soapdoc2.pdf. - Added `SOAP_XML_INDENT` flag. - Added `soap_sender_fault_subcode()` and `soap_receiver_fault_subcode()` for SOAP 1.2 subcodes. - Added `WITH_DOM` compile flag to enable flushing serialized and deserialized data to DOM (as well as a stream). - Added soapcpp2 option -L. - Added soapcpp2 option -a. - Added wsdl2h option -a (for backward compatibility). - Added wsdl2h option -d. - Added `WITH_TCPFIN` comile flag to enable optional shutdown with how=1 (TCPFIN) after final sends to force EOF on other side (used to be the default behavior). - Added schema substitutionGroup support. - Added `soap_ssl_init()`. - Improved DOM implementation and documentation. - Improved AS400 portability. - Improved schema choice support. - Fixed wsdl2h multiple schema include issue. - Fixed `soaps2dateTime` and `soap_timegm` functions when `timegm` is not available. - Fixed exc-c14n formatting. - Fixed SOAP 1.2 fault handling. - Fixed missing `soap_flag___item2` issue. - Fixed partial MIME boundary parsing issue. - Fixed base64 parsing with `WITH_FAST`. - Fixed MIME encoding of `\r\r` sequence. - Fixed QName normalization issue. - Fixed relative path schema import. - Fixed MTOM cid matching with URL encoded IDs. - Fixed wide-character (`wchar_t*`) XML attribute handling. - Fixed `std::vector` element id-ref ordering in deserializer. Version 2.7.7 (04/07/2006) --- - Added streaming MTOM support (see also example in samples/mtom-stream). - Added `long double` serialization support with custom serializer (`custom/long_double.h`). - Added automatic detection of application's `soap_malloc()` data overruns in `-DDEBUG` mode. - Improved `time_t` and `struct tm` (`custom/struct_tm.h`) serialization. - Fixed issue with a wrongly generated namespace map entry. - Fixed PalmOS socket connection issues. - Fixed XML attributes with bitmask enumeration (`enum*`) values. Version 2.7.8 revisions a/b/c (06/05/2006-06/24/2006)) --- - Added X509 extension checks. - Added advanced MTOM streaming features. - Added WS-Addressing plugin and demo. - Moved soapcpp2 and wsdl2h to bin directory. - Improved SOAP1.2 MTOM interop. - Changed `soap_send_empty_response` function signature (additional status argument) for HTTP optional response binding. - Changed `fmimewriteopen()` callback signature. - Fixed wsdl2h top-level element and complexType name clash issue. - Fixed HTTP chunking with empty response message body. - Fixed WSSE digest authentication. - Fixed WSDL response element output. - Fixed SOAP 1.2 *`RPC:result`* handling with `SOAP_XML_STRICT` flag. - Fixed WSSE signed response messages. - Fixed Win32 max open connection exceeded checking. - Fixed *`xsi:type`* matching for `__name` fields, which required a signature change of `soap_element_begin_in()` with an additional 'type' parameter (affecting custom deserializers, see custom dir). Version 2.7.9 revisions a/b/c/d/e/f/g/h/i/j/k/l (10/24/2006-09/26/2007) --- - Added wsdl2h option -j to omit the generation of SOAP Header and Faults for customization of these. - Added wsdl2h option -q to generate C++ namespace qualified header files. - Added `SOAP_SSLv3`, `SOAP_TLSv1`, `SOAP_SSL_SKIP_HOST_CHECK` flags. - Added file input and output specifications (with `<` and `>`) to wsdl2h's typemap.dat to specify input and output for wsdl2h. - Added WS-Addressing 2005/03 support. - Added function `soap_free(soap)` that executes `soap_done(soap); free(soap)` and renamed previous `soap_free()` to `soap_temp_free()`. - Added wsdl2h option `-_` to translate `_USCORE`. - Added *`xsd:anyAttribute`* (using DOM parser) with wsdl2h option -d. - Added multi-WSDL types section schema component merging. - Added TCP keep-alive settings. - Added QName list normalization. - Changed soapcpp2 default rule for generating attribute form qualified to unqualified. - Improved wsdl2h SOAP Fault coding. - Improved performance and stability. - Improved portability. - Improved wsdl2h empty namespace handling ("" namespace). - Improved wsdl2h and schema conversion to C and C++. - Improved SSL timeouts and error handling. - Improved soapcpp2 option -i (generate proxy and service classes). - Improved class instance initialization. - Improved use of IPv6. - Improved proxy and server code output for soapcpp2 option -i. - Improved soapcpp2 code output with additional exception checks. - Fixed MIME/MTOM start id handling (SOAP message no longer required to be first attachment). - Fixed WS-Security wsse plugin canonicalization format issue. - Fixed ZIP content remainder parsing (CRC check). - Fixed WSA API handling of messages with MIME/DIME attachments. - Fixed wsdl2h *`xs:include`* relative path includes. - Fixed `_XML` literal string parsing of root attributes. Version 2.7.10 (01/27/2008) --- - Combined pre-built win32, Linux i386, and Mac universal binaries into a single software distribution package to streamline the distribution. - Added new Web service examples and removed XMethods dependence. - Added soapcpp2 option -qname for automatic C++ namespace qualification. - Added HTTP PUT, DELETE, HEAD callback support. - Added ability to derive classes from soap struct (in gSOAP header files). - Updated certificates and fixed cacerts.c. - Improved soapcpp2 option -i proxy/server object generation. - Improved socket timeout handling. - Improved HTTP chunking handling and efficiency. - Improved web server implementation. - Improved soapcpp2 and wsdl2h warning and error reporting. - Fixed dom parser handling of default xml namespace bindings. - Fixed wsdl2h default ("") namespace handling. Version 2.7.11 (07/26/2008) --- - Added new wsseapi signature verification API functions. - Added mutability property of `SOAP_ENV__Header` and `SOAP_ENV__Fault` struct to allow consistent redefinitions and on-the-fly member additions. - Added wsdl2h -r option parameter for web proxy access. - Added MINGW portability. - Added configure option --disable-openssl to build wsdl2h and libraries without OpenSSL. - Added `WITH_C_LOCALE` compilation flag to enable the use of `c_locale` and local-specific numeric conversion routines. - Added WS-Addressing metadata (wsam) support. - Fixed *`xml:lang`* in SOAP 1.2 *`SOAP-ENV:Text`*. - Fixed XML literal strings with maxOccurs="unbounded" - Fixed SSL connection engine issue. - Fixed RPC literal part name handling issue. - Fixed in update: SSL alloc/free issue and s2dateTime. Version 2.7.12 (10/01/2008) --- - Added multi-endpoint connect capability. Endpoint string can be a space-separated list of endpoint URLs, where each URL is tried in turn. - Added `SOAP_SSL_NO_DEFAULT_CA_PATH` option. - Fixed SSL connect issue when the SSL handshake or network connection fails. - Fixed *`xsi:nil`* handling for strings (NULL vs. "") in case of empty elements. - Fixed DOM xmlns="" namespace issue in XML output. - Fixed `IP_MULTICAST_TTL` failure to compile. - Fixed non-critical WSSE API `soap_wsse_verify_nested` code. Version 2.7.13 (03/21/2009) --- - Improved wsdl2h code output. - Updated gsoapWinInet. - Updated DOM xmlns namespace binding handling. - Fixed OpenSSL memory leak. Version 2.7.14 (09/07/2009) --- - Added support for `poll()` to replace `select()` to prevent `FD_EXCEEDED`. - Fixed enum local simpleType restriction attribute initialization. - Fixed utf8 string parsing issue when first char in CDATA could cause problems. - Fixed UDP IPv6 multicast-unicast exchange. - Fixed gzip end-of-stream check. - Fixed wsdl2h portType operation-input/output matching to ensure operations can be safely overloaded. Version 2.7.15 (11/07/2009) --- - Added `soap_read_X()` and `soap_write_X()` macros to simplify object reading and writing. - Fixed `soap_new_X()` functions compilation problem. - Fixed SSL session in context copy. - Fixed win32 `select()` in `tcp_select()`. - Fixed wstrings in unions. - Fixed preservation of CDATA sections in literal XML strings. Version 2.7.16 (04/05/2010) --- - Added soapcpp2 option -T to generate auto-test echo server code with an example in samples/autotest based on 294 patterns for data binding W3C workgroup. - Added soapcpp2 option -b to serialize byte arrays char[] as fixed-size strings (array of *`xsd:byte`* otherwise). - Added *`xsd:duration`* serializer: import custom/duration.h. - Added gsoap header syntax '$' type qualifier to indicate special struct/class members (array length, union discriminators). - Added "colon notation" to attach XML prefixes to C/C++ names without changing the names, an alternative to the `ns__` prefix notation by writing `ns:name` instead of `ns__name` where the former stands for just `name` to the C/C++ compiler. - Added wsdl2h options -z# for backward compatibility flags (-z1, -z2). - Added `SOAP_XML_IGNORENS` to optionally ignore XML namespaces. - Added WS-ReliableMessaging plugin. - Added custom *`xsd:duration`* serializer. - Added WSSE plugin `soap_wsse_set_wsu_id()` to simplify signing of elements (sets the wsu:Id of a given element tag name). - Improved handling of struct/class member name clashes resulting from XML schemas definitions. - Improved SOAP RPC ecoding response element tag acceptance. - Improved VxWorks compatibility. - Fixed FastCGI SOAP/XML processing with MIME attachments. - Fixed `typedef std::string XML`, for literal XML serialization problem. - Fixed a rare incorrect well-formedness error when xmlns default namespaces are absent. - Fixed a zlib compression error when obsolete crc check is used. - Fixed WS-Addressing HTTPS message relay (OpenSSL crash). Version 2.7.17 (05/10/2010) --- - Added WS-Policy 1.2 and 1.5, WS-SecurityPolicy 1.2 support for wsdl2h. - Improved WS-ReliableMessaging interop and verified MT-safety. - Improved WS-Security WSSE plugin documentation. - Fixed soapcpp2 line number error reporting. - Fixed WSSE plugin `soap_wsse_set_wsu_id()`. - Fixed wsdl2h cycle problem with recursive *`xs:include`* and *`xs:import`*. - Fixed enum translation of enum symbols with colons. - Fixed `std::wstring` used as XML attribute value UTF8 encoding (internal stdsoap2 API changed). Version 2.8.0 (09/20/2010) --- - Added wsdl2h option -W: suppress warnings. - Added wsdl2h option -i: for advanced uses only to skip schema imports. - Added automatic *`xsi:nil`* output for NULL pointer members when minOccurs>0 (member has '1' occurence annotation). - Improved wstring and `wchar_t*` handling when `wchar_t` is less than 4 bytes. - Improved use of custom serializers in builds. - Fixed wsdl2h type mapping of nested *`xs:sequence`* and *`xs:choice`*. - Fixed soapcpp2 handling of extension base qualified elements and derived type unqualified elements. - Fixed WSRM message resend buffer leak. - Licensing change for reasons of consistency and transparency: the soapcpp2 tool (2.8.0 and up) is licensed under the same conditions as the wsdl2h tool, which means that soapcpp2 is no longer covered by the gSOAP public license. Version 2.8.1 (01/14/2011) --- - Added WS-Security WSSE plugin-integrated streaming XML encryption. - Added WS-Security WSSE plugin `soap_wsse_sign_only()`. - Added soapcpp2 -f flag to split large output source code files into parts. - Fixed C++ mapping of *`xs:sequence`* with maxOccurs larger than 1. Version 2.8.2 (04/17/2011) --- - Added soapcpp2 -j option to generate C++ proxies and services in alternative format to the -i option. - Fixed wsdl2h issue with optional elements with default value. - Fixed cyclic WSDL import dependences in wsdl2h. - Fixed WSRM server-side fault state handing. - Fixed leading unicode character parsing and conversion issue in literal XML strings. Version 2.8.3 (06/24/2011) --- - Added soapcpp2 -y option to generate C/C++ type access information to the generated sample XML messages, allowing for the verification of C/C++ data access to the actual XML content. - Added JSON support in addition to XML-RPC, see the XML-RPC content in the samples folder. - Improved DOM processing (an optional feature). - Fixed bugs, compilation and porting issues. Version 2.8.4 (10/24/2011) --- - Added NTLM support (enabled with `-DWITH_NTLM`, requires libntlm). - Added WS-Discovery 1.1 support (see doc/wsdd and plugin/wsddapi.h and wsddapi.c). - Added `//gsoap` typed directive to control *`xsi:type`* attribuation per namespace. - Added `SOAP_XML_NOTYPE` flag to disable *`xsi:type`* attributes. - Improved WS-Security encryption (AES, `soap_wsse_add_EncryptedKey_encrypt_only`). - Improved HTTP proxy authentication support (digest and NTLM). - Fixed bugs and portability issues. Version 2.8.5 (11/19/2011) --- - Fixed build issues with WS-Discovery. - Fixed HTTP basic auth crash. - Fixed `WITH_COMPAT` and `WITH_C_LOCALE`. - Fixed wsdl2h output for XSD abstract element extraneous ';'. Version 2.8.6 (12/14/2011) --- - Improved WS-Security compatibility. - Fixed multi and cyclic WSDL import. - Fixed tags of qualified referenced elements. - Fixed C builds for improved portability. Version 2.8.7 (02/07/2012) --- - Added new REST examples. - Added versioning checks to ensure project builds are consistent. - Improved interoperability of wsdl2h output wrt. to element qualification. - Renamed `-DTANDEM` to `-DTANDEM_NONSTOP` to prevent naming conflicts. - Fixed WS-Discovery URL. - Fixed soapcpp2 option -i and -j server chaining. Version 2.8.8 (02/20/2012) --- - Added REST plugin (httppost.c) enhancements and examples. - Added static version checks to prevent linkage to old incompatible libraries that could lead to runtime failures. Version 2.8.9 (06/10/2012) --- - Added examples to interoperate with WCF basicHttp, basicTransportSecurity, basicMessageSecurity, and wsDualHttp. - Added soapcpp2 option -A for service dispatching based on Action values only. - Added wsdl2h option -z3. - Added wsse support for WS-SecureConversation. - Added wsrm5 WS-ReliableMessaging 1.0 2005. - Added iOS plugin with examples. - Improved WS-Policy analysis and reporting. - Fixed and improved wsse plugin for WS-Security interoperability with WCF and other implementations (required a small API change). - Fixed HTTP headers for NTLM. - Fixed httpda plugin OpenSSL init crash in md5evp.c. Version 2.8.10 (08/16/2012) --- - Added soapcpp2 -Q option (C++ namespaces). - Added wsdl2h -b option (bi-directional operations for duplex services). - Updated WS-Addressing and WS-ReliableMessaging plugins, documentation, and examples. Version 2.8.11 (10/14/2012) --- - Added soapcpp2 -0 option to remove SOAP bindings when applicable. - Changed wsdl2h output for the few cases that multiple service bindings are defined, use wsdl2h -Nns for backward compatibility. - Improved DOM processing. - Improved C++0x/C++11 compatibility. - Fixed httpda plugin crash. - Fixed wsdl2h processing of *`xs:group maxOccurs="unbounded"`*. - Fixed `mod_gsoap` plugin compilation issues. - Fixed literal XML UTF8 (UTF8 is now retained with `SOAP_C_UTFSTRING`). Version 2.8.12 (12/8/2012) --- - Added WSDL 2.0 support to wsdl2h. - Added //gsoap method-protocol directive. - Improved XML REST support, soapcpp2 -0 option for "no-SOAP" services. - Improved class instantiation with `soap_new_X`, `soap_new_set_X`, `soap_new_req_X`. - Improved soapcpp2 -b option. - Improved WCF WS-Addressing interop (duplex) channel. - Changed code to normalize in/out MEP for solicit-response messaging. - Fixed client-side OpenSSL host check that is known to crash in OpenSSL. Version 2.8.13 (1/21/2013) --- - Improved XML-RPC/JSON API and documentation, with one change: now must use `SOAP_C_UTFSTRING` to hold UTF8 in 8-bit strings. - Improved VxWorks compatibility. - Updated `soap_read_X` and `soap_write_X` to serialize object graphs with SOAP encoding enabled: use `soap_set_version(soap, V)` with V=0 (no SOAP), V=1 (SOAP1.1), V=2 (SOAP1.2). - Fixed broken WSDL *`types`* nested schema XSD import. - Fixed operation action overriding by input/output SOAP action. - Deprecated old-style C++ service proxies and objects (use soapcpp2 -z1 flag to generate). Version 2.8.14 (2/4/2013) --- - Added explanation of wsdl2h option -Nname which is used to generate a service (and its prefix name) for each service binding (bindings are collected in one service by default). - Fixed PRId64 formatting. - Fixed broken MIME with doc/lit (when SOAP encodingStyle is not used). Version 2.8.15 (5/12/2013) --- - Added wsdl2h option -R for auto-generation of REST-based service operations (also added examples/rest example). - Change `soap_read_X()` and `soap_write_X()` to prevent removal of HTTP headers after calling `soap_connect()`. - Fixed automatic detection of DIME/MIME transfers. - Fixed HTTP 1.0 chunking issue. - Fixed HTTP digest authentication with DIME/MIME transfers. - Fixed OpenSSL subject alt name check. - Fixed HTTP 100 message handling issue. Version 2.8.16 (8/12/2013) --- - Improved support for Android platform. - Improved WCF interop duplex messaging requiring ChannelInstances. - Fixed complexType restriction of schema types with redefined attributes in wsdl2h output. - Fixed wcf/WS/DualHttp example (wrong use of `send_X()` replaced by `X()` for client-side operations X, to allow HTTP keep-alive to be used). - Fixed use of sprintf's that trigger Valgrind and Fortify warnings. - Fixed parsing character strings from CDATA sections ending in ']'. - Fixed DOM output for `SOAP_XML_CANONICAL` c14n normalization of xmlns namespace bindings. Version 2.8.17r (12/1/2013) --- - Added WS-RM message queueing option for WS-RM NoDiscard. - Added wsdl2h option -r for authorized web access and proxy access. - Improved C++11 compatibility. - Improved ISO compatibility (compile -pedantic). - Improved I/O timeouts timing accuracy in the presence of EINTR interrupts (set `SOAP_MAXEINTR`). - Fixed in 2.8.17r: fixed socket timeout issue. Version 2.8.18 (8/24/2014) --- - Added *`xs:precision`* and *`xs:scale`* support. - Added support for BPEL PartnerLink and VariableProperties to wsdl2h in support of BPEL projects. - Added soapcpp -z2 flag for backward compatibility with to 2.7.x: omit XML output of elements for pointers that are NULL even when minOccurs=1 (required). - Changed wsdl2h C++ output to always generate pass-by-reference response parameters (disable with -z6). - Improved WS-RM interoperability. - Fixed message part elements and types in default (xmlns="") namespace. - Fixed `&#;`-entity code conversion bug in XML attribute deserialization. - Fixed wsdl2h nested simpleType restriction with itemTypes. - Fixed wsdl2h substitutionGroup element in other namespace. - Fixed *`xs:choice`* strict validation. - Fixed timeout/EINTR issue. Version 2.8.19 (11/8/2014) --- - Added string validation callbacks fsvalidate and fwvalidate for regex pattern-based validation of strings and wide strings against XML schema regex patterns. - Fixed *`xs:choice`* strict validation with *`minOccurs="0"`* element(s). - Fixed `TCP_FASTOPEN` with UDP. - Fixed MTOM Content-Disposition ID overriding problem. - AIX portability fixes. Version 2.8.20 (11/30/2014) --- - Added XML 1.1 control char encoding support. - Fixed C/C++ compiler warnings. Version 2.8.21 (12/05/2014) --- - Added `-DWITH_REPLACE_ILLEGAL_UTF8` compilation option to replace UTF8 content that is outside the allowed range of XML 1.0. - Improved WS-RM (memory usage). - Fixed additional C/C++ compiler warnings. - Fixed `strftime` `%F` and `%T` use (removed). Version 2.8.22 (4/12/2015) --- - Added XSD 1.1 support (*`xs:override`*, *`xs:defaultAttributes`*, *`xs:targetNamespace`* on element and attribute declarations, and other additions). - Added import/wsdd5.h to support WS-Discovery 1.0 with WS-Addressing 2005/08 (typemap.dat now sets wsdd5.h instead of wsdd10.h by default). - Improved portability, including Solaris and AIX porting. - Improved option -R is now required to enable REST WSDL bindings and non-HTTP transport (in addition to enabling REST WSDL operations). - Fixed wsdl2h handling of *`xs:redefine`*. - Fixed deep class inherited `xsd__anyType` deserializer issue causing serialization and validation errors. - Fixed `std::vector*` deserialization bug that occurs under very specific circumstances. - Fixed wsdd plugin `SOAP_WSDD_APP_MAX_DELAY`. - Fixed wsse/smdevp memory leak. Version 2.8.23 (8/17/2015) --- - Added TLS SNI. - Added Unicode C++11 identifier support to soapcpp2, supported directly by UTF8 encoding and the UCN `\uNNNN` extension of identifier naming in the C99/C98++ standards. - Added wsdl2h option -U to allow UTF8-encoded Unicode C/C++ identifiers upon mapping universal XML tag names to C/C++ identifier names (this is a C++ standard-dependent and compiler-dependent feature). - Replaced C lib functions `memcpy`, `memmove`, `strcpy`, `strcat`, `strncpy`, `strncat`, `sscanf`, `sprintf` by more secure alternatives when available on target platform. On windows you should add an [Invalid Parameter Routine](https://msdn.microsoft.com/en-us/library/ksazx244.aspx), to ignore and let gsoap safely continue with truncated strings (and deal with soft errors later). - Updated OpenSSL and GNUTLS integration. - Fixed soapcpp2 SOAP RPC literal WSDL output (supported are SOAP RPC encoded, RPC literal, document literal, and REST). - Fixed C++ struct soap context constructor memory leak when `WITH_GZIP` is enabled and changed struct soap context allocation in C++. - Fixed redundant call to `OpenSSL_add_all_digests()`, since `OpenSSL_add_all_algorithms()` already adds digests. This caused issues on certain platforms with OpenSSL 1.0.1 and higher. - Fixed missing client-side `soap_recv_fault` with empty doc/lit responses. - Fixed missing *`xs:restriction`* tag in soapcpp2 WSDL/XSD output. Version 2.8.24r (11/01/2015) --- - Added new soapcpp2 option `-c++11`, enabling support for C++11 syntax and features, including: - scoped enumerations (`enum class`) with underlying types (`enum class : type` is 8, 16, 32, or 64 signed int); - serialization of smart pointers `std::shared_ptr` and `std::unique_ptr` (and deprecated `std::auto_ptr` if needed); - virtual method `final` and `override` syntax; - `nullptr` constant member initializer. - More efficient C++11 STL vector, list, and deque deserialization code based on `emplace_back()`. - Added new `xsd__date` custom serializer `custom/struct_tm_date.h` to bind `struct tm` to *`xsd:date`*. - Added new `xsd__time` custom serializer `custom/long_time.h` to bind `ULONG64` to *`xsd:time`* with microsecond precision. - Added new `xsd__duration` custom serializer `custom/chrono_duration.h` to bind C++11 `std::chrono::nanoseconds` to *`xsd:duration`*. - Added `xsd__dateTime` custom serializer `custom/chrono_time_point.h` to bind C++11 `std::chrono::time_point` to *`xsd:dateTime`*. - Added new TLS/SSL flags `SOAP_TLSv1_0`, `SOAP_TLSv1_1`, and `SOAP_TLSv1_2` to limit TLS protocol selections. - Added new SHA224/SHA384 digest options, ECDSA (requires OpenSSL 0.9.8 or later), and HMACOutputLength truncation (within limits) to WSSE. - Added Galois counter mode (GCM) authenticated encryption to WSSE with AES128/AES192/AES256, requires OpenSSL 1.0.2 or later. - Added the concept of "mutable" structs and classes, which allow for incremental compile-time addition of new members to the struct/class, which gives them a tuple-like behavior with the tuple being populated in distinct parts of the soapcpp2 input source. This is similar to the way the `SOAP_ENV__Header` struct was already handled. This is not a standard C/C++ feature. - Added `$CONTAINER = name` and `$POINTER = name` definitions to `typemap.dat` for specifying the C++ container to use (`std::vector` by default) and C++11 smart pointer to use (no smart pointer by default), see [databindings](https://www.genivia.com/doc/databinding/html). - Improved soapcpp2 input source code analysis and C/C++ syntax coverage. - Improved soapcpp2 output WSDL and XSD with added root-level elements and attributes on demand, see [databindings](https://www.genivia.com/doc/databinding/html). - Improved efficiency and case coverage of SOAP encoded messages with id-ref anchors using redesigned pre- and post node graph construction analysis algorithms (`soap_id_enter`, `soap_id_forward`, `soap_id_lookup`, and `soap_update_pointers` have changed). - Improved cyclic data structure detection and XML rendering with non-SOAP-encoded literal style (and/or the `SOAP_XML_TREE` flag) to prune cycles from trees. `SOAP_XML_TREE` produces XML document "trees" rather than id-ref XML graphs. Graphs are produced with SOAP encoding or with the `SOAP_XML_GRAPH` flag. - Improved primitive `union` members access in C++ by removing unnecessary pointers. - Improved checking of signatures in WSSE plugin. - Updated soapcpp2 `size_t` mapping to transient (non-serializable) type. The wsdl2h tool does not generate `size_t`. If `size_t` is used in your header files for soapcpp2, then use `unsigned long` to replace `size_t`, which replicates the old `size_t` mapping to `unsigned long` (beware, this is not portable). - Updated *`xsi:nil`* serialization rules for pointer-type struct/class members, by forcing *`xsi:nil="true"`* element output for required **nillable** elements (no longer requiring the `SOAP_XML_NIL` flag). - Updated wsdl2h Nillable optional element annotations (i.e.g for `nillable=true` and `minOccurs>0`), now requiring inbound elements with *`xsi:nil`* or validation error. NULL pointer-based outbound nillable elements with `minOccurs>0` are now serialized with *`xsi:nil="true"`*, see above. - Updated dateTime content validation with `SOAP_XML_STRICT`, otherwise accepts ISO8601 variants. - Fixed `SOAP_UNION_name_type_member` macro constants for C++ namespace `name` (wsdl2h option `-qname` to ensure that the generated macro names are unique. - Fixed attribute serialization when attribute of type `std::string` has a default value while actual value is set to "" (empty). - Fixed class inheritance from base class `soap_dom_element` (declared in `dom.h`) which should include the content of the DOM node(s) together with the (de)serialized content of the derived class instance. - Fixed default/fixed values of element/attribute references to global elements/attributes with global default/fixed values. - Fixed *`xs:group`* and *`xs:substitutionGroup`* element namespace prefix qualifications of struct and classe members. - Fixed deserialization of nested *`xs:sequence`* class pointers to NULL (structs are OK) when *`xs:sequence`* is optional and sequence data is not present on the inbound stream. - Fixed missing `custom/struct_timeval.c` inbound microsecond fraction of *`xsd:dateTime`* values. - Fixed `typedef` of a custom serializer type. - Fixed `typedef` pointer type use in `@type` attribute declarations. - Fixed linking against newer EVP functions in older OpenSSL versions to compile WSSE plugin. - Fixed WSSE decryption with HTTP-chunked and fragmented messages in transport. Version 2.8.25 (11/11/2015) --- - Added `xsd__decimal` custom serializer `custom/float128.h` to bind `` quad precision float `__float128` to *`xsd:decimal`*. - Added group circular reference detection to wsdl2h. Generates code for circular group references that is safe to use, but with loss of occurrence validation constraints, if any are present. - Updated and improved XML-RPC and JSON implementation with wider `_int`, now 64 bit, while keeping XML-RPC type `_i4` to just 32 bit. Existing project C code that uses the XML-RPC and JSON plugin SHOULD be updated to use `_i4` (`int`) instead of `_int` when `_int` is still used as a 32 bit `int` in their project. - Fixed strict validation of empty elements unless the element is href/ref-attributed with SOAP encoding (this validation check was temporarily lost in the 2.8.24r release). - Fixed missing `#include ` for smart pointers. - Fixed float type minInclusive and maxInclusive fractional bounds validation. - Fixed compilation issues when C++ namespaces (soapcpp2 option `-q`) are used with custom serializers. - Fixed wsdl2h option `-p`, which may cause type name clashes with generated C++ `xsd__anyType` wrapper classes for simple types. Version 2.8.26 (11/30/2015) --- - Added new **jsoncpp** code generator that takes a JSON sample document and renders it in JSON API code for C or C++. The jsoncpp tool is located in `gsoap/samples/xml-rpc-json` with the XML-RPC and JSON APIs and samples. - Added new C/C++ XML-RPC and JSON APIs `xml-rpc.c` and `json.c[pp]` to simplify JSON and XML-RPC in C and C++. The old `json_c.h` and `json_c.c` are deprecated and removed in favor of the improved APIs `json.h` and `json.c[pp]`. - Added `xsd__integer` custom serializer `custom/int128.h` to bind big int `__int128_t` to *`xsd:integer`*. - Added floating point exclusive range bounds notation to gSOAP header file syntax, with `<` on the side of `:` for an exclusive bound (`min <: max` makes `min` exclusive, `min <:< max` makes both exclusive, and `min :< max` makes `max` exclusive), while keeping `min : max` for inclusive bounds. - Added C++11 syntax for struct/class member initialization with `{ initval }`, which has an identical effect as declaring members with `= initval` initializers. This works in C and C++. - Added HTTP2 support to WinInet plugin. - Expanded [XML-RPC and JSON documentation](https://www.genivia.com/doc/xml-rpc-json/html). - Expanded [Data Bindings documentation](https://www.genivia.com/doc/databinding/html). - Improved wsdl2h schema import processing when WSDL and XSD have the same namespace and *`xs:import`* is used instead of *`xs:include`* to populate the schema. - Improved wsdl2h output for integer enumeration constants, omits trailing underscores for pseudo-numeric enum constants, updated soapcpp2 to accept duplicate enum constants in different enum lists when their values are the same. - Fixed `soap_del_string` memory issue in `char*` string deletion. - Fixed soapcpp2 option `-s` by enforcing `SOAP_XML_STRICT` on the body of inbound messages for client and server. - Fixed a rare issue where elements end up missing in a substitutionGroup when several WSDLs with the same namespace are imported into one WSDL. - Fixed strict validation rejection of empty element body when empty when permitted. Version 2.8.27 (12/7/2015) --- - Added new JSONPath code generation feature to jsoncpp in `gsoap/samples/xml-rpc-json` with new option `-p`. Supports C++ (and C in the next release). - Improved JSON API functionality and robustness. - Improved substitutionGroup union member: removed prefix `__` from member name and removed rogue `;`. - Fixed `WITH_NOIDREF` broken `iht` initialization introduced in 2.8.25/26, which may lead to a crash. Version 2.8.28 (02/01/2016) --- - Added new **domcpp** code generator that takes an XML sample document and renders it in XML DOM API code for C or C++. Can also convert XPath to XML DOM API code with option `-p`. The domcpp tool is located in `gsoap/samples/dom` with the XML DOM samples. - Added many new API functions to a fully redisigned XML DOM API v5 for C and C++ with new DOM API documentation. The redesigned DOM API v5 is mostly backward compatible to DOM API v4, but with DOM string `data` members changed to `text` members. Many API functions are added to define a clean interface without having to use the DOM structure data members. The `soap_dom_next_element()` function now takes a second parameter that is an element pointer to stop deep traversal at (use NULL for old behavior). See updated [XML DOM and XPath](https://www.genivia.com/doc/dom/html) documentation for details. - Added C serialization to/from strings with new C `soap` struct members `const char *soap::is` input string to parse from and `const char **soap:os` pointer to string that is set by the engine to point to the output. Note that C++ code is unchanged and the `soap::is` and `soap::os` are still members pointers to `istream` and `ostream` streams (use `std::stringstream` for input/output from/to strings). - Added JSON API C function `set_size` to set/change array sizes and JSON API C function `set_struct` to create an empty JSON object. - Improved jsoncpp command line tool to generate JSONPath C code and improved overall to generate more compact code. - Improved `SOAP_DEFAULTNS` flag to emit XML default namespace declarations. - Improved strictness of XML verification under default settings (i.e. without requiring `SOAP_XML_STRICT`). - Changed string deserialization when XML content with tags is encountered: XML tags are no longer parsed as part of strings. You must use `XML` string type to parse literal XML content or use DOM. - Fixed C++ JSON/XML-RPC API `time_t` type usage to `ULONG64` to ensure portability. This affects the `value(time_t)` constructor, the `value::operator=(time_t)` assignment operator, and `value::operator time_t()` cast, which have been replaced by versions using `ULONG64`. To use these in C++ for `time_t` ISO 8601 date time serialization, simply cast `time_t` values to `ULONG64` values. - Fixed gsoapWinInet.cpp:243, `pDst` should be `a_pDst`. - Fixed SNI `SSL_set_tlsext_host_name` call for OpenSSL 0.9.8f. - Fixed `soap_instantiate` of smart pointer when instantiating derived class by *`xsi:type`*. - Fixed friend `__declspec(dllexport)` declarations in generated classes. Version 2.8.29 (02/24/2016) --- - Added new soapcpp2 option `-r` to generate a soapReadme.md report that summarizes the input .h file information, the serializable C/C++ types, the services, and the generated code. Use a markdown converter to browse or download the free readmeviewer.html from https://www.genivia.com/files/readmeviewer.html.zip to view the soapReadme.md report in a browser. - Added new wsdl2h option `-M` to suppress error "must understand element with wsdl:required='true'". - Upgraded HTTP digest authentication `httpda` plugin to 2.0 to support RFC7616 "HTTP Digest Access Authentication" with SHA2 (replacing MD5) that is compatible with RFC2617; compile and link upgraded `plugin/httpda.c` with `plugin/smdevp.c` instead of `plugin/md5evp.c`. - Updated wsdl2h HTTPS-enabled build steps to use upgraded `httpda` plugin. - Updated `samples/webserver` to use upgraded `httpda` plugin. - Updated the samples with new AWS S3 SOAP API example `samples/aws`. - Improved soapcpp2 code generation of inline object read/write functions in C++, instead of macros generated in C. - Fixed and improved soapcpp2 code generation with options `-p` and `-q`. - Fixed definitions/service/port/wsaw:UsingAddressing processing. - Fixed SNI `SSL_set_tlsext_host_name` call for OpenSSL 0.9.8f. - Fixed wsdl2h skipping *`mime:multipartRelated/mime:part`*. Version 2.8.30 (04/02/2016) --- - Added backtick XML tag name syntax to interface files for soapcpp2, which allows for the overriding of the translated tag names of struct/class members and service operation parameters, see the [Data Bindings documentation](https://www.genivia.com/doc/databinding/html#toxsd9-5). Older gSOAP versions do not support the backtick tag in the generated WSDL and schemas (messages are OK). - Added macro `SOAP_MAXLEVEL` to trigger `SOAP_LEVEL` error when XML nesting level of inbound XML exceeds the value of `SOAP_MAXLEVEL`. Default value is 10000. Redefine `SOAP_MAXLEVEL` as needed, with lower values to restrict XML nesting depth for receivers to accept. - Added macro `SOAP_MAXLENGTH` to trigger `SOAP_LENGTH` content length error when string content in inbound XML exceeds the value of `SOAP_MAXLENGTH`. Applies to strings that are potentially unbounded, i.e. that are not already constrained by XML validation maxLength constaints (which could be larger than `SOAP_MAXLENGTH`). Default value is zero (0) which means that string length is unconstrained if XML validation maxLength is not given. Redefine `SOAP_MAXLENGTH` as needed, with lower values to restrict string lengths for receivers to accept. - Added macro `SOAP_MAXOCCURS` to trigger `SOAP_OCCURS` content error when array and container lengths exceed the value of `SOAP_MAXOCCURS`. Must be greater than zero (0). Default value is 100000. Redefine `SOAP_MAXOCCURS` as needed, with lower values to restrict array and container lengths for receivers to accept. - Updated wsdl2h WS-Policy processing to include WS-RM protocol versioning. - Updated `soap_ignore_element` processing efficiency. - Updated `import/saml1.h` and `import/saml2.h`. - Improved soapcpp2 generation of WSDL and XSD for unqualified C/C++ types or when mixing qualified and unqualified C/C++ types and type names. - Changed soapcpp2 default behavior for generating WSDL and XSD files with *`elementFormDefault="unqualified"`* from the old default behavior with *`elementFormDefault="qualified"`*, i.e. when `//gsoap ns elementForm:` directive is NOT explicitly included in the interface .h file for soapcpp2 and when soapcpp2 option -e is not used. *This change DOES NOT affect interface files produced by wsdl2h*, only those interface .h files that are not auto-generated and do not have elementForm directives. *If you use soapcpp2 to generate WSDL and schemas AND you need backward compatible SOAP document/literal style messaging AND you DO NOT have `//gsoap ns service style: rpc` (or soapcpp2 option -e) AND you DO NOT have `//gsoap ns schema elementForm:` directives already in your .h file, then you SHOULD add `//gsoap ns schema elementForm: qualified` directives to your .h file for each `ns` prefix*. This recommendation ensures backward compatibility in your current SOAP document/literal style messaging projects. Changing the soapcpp2 default behavior to *`elementFormDefault="unqualified"`* simplifies data bindings. It is also the accurate form to use when C/C++ types are not namespace qualified in the .h interface file for soapcpp2. - Improved DLL export with compiler flag `/DSOAP_STD_EXPORTS` (which defines `SOAP_STD_EXPORTS`) to dllexport the API, classes, and the proxy and service classes. Modified the plugins to support dllexport. - Fixed soapcpp2 crash with enum constants > 255 due to libc `isalpha` crashing on some Linux systems. - Fixed `import/wsp.h` soapcpp2 compilation error. - Fixed soapcpp2 option `-w` that may cause a message response element tag name inconsistency with SOAP doc/lit style. - Fixed deserialization issue with dynamic arrays of STL containers/smart-pointers (i.e. a pointer to an array of containers/smart-pointers, which is an unlikely combination to use, but should work). Version 2.8.31 (05/1/2016) --- - Added engine context `sndbuf` and `rcvbuf` attributes to (re)set `setsockopt` values for `SO_SNDBUF` and `SO_RCVBUF`, respectively. Default value is `SOAP_BUFLEN`, same as engine's internal message buffer size. Setting to zero forces the engine to omit the `setsockopt` `SO_SNDBUF` and `SOAP_RCVBUF` calls, which for example can be used to enable TCP buffer autotuning with Linux (Linux 2.4 and up). - Added "http://userid:passwd@domain/path" userinfo syntax for HTTP Basic and NTLM authentication, i.e. this automatically sets `soap->userid` and `soap->passwd` from the userinfo and also sets `soap->authrealm` to the domain if not already set. HTTP Basic authentication is not recommended without secure https. For NTLM authentication, set `soap->ntlm_challenge = ""` to proceed immediately with NTLM instead of Basic authentication. - Improved strengthening of `SOAP_XML_STRICT` and the soapcpp2 `-s` flag to reject all extra (non-deserializable) XML and character data by the parser and deserializers. - Improved client-side certificate checking (DNS or IP, and wildcards). - Improved soapcpp2 option `-t` and `//gsoap ns schema typed: y` directive that force the addition of *`xsi:type`* attributes to XML content except for types whose type names are prefixed with an underscore (i.e. root elements w/o type as per wsdl2h data bindings rules). - Fixed crash with nested dynamic arrays in C++ (C is fine) i.e. classes and structs with `__ptr` and `__size` members as arrays of elements, where these arrays contain nested dynamic arrays. [See here for patch](https://www.genivia.com/advisory.html). - Fixed typedef of `xsd__hexBinary` struct/class, which should map to hexBinary but instead mapped to base64Binary. - Fixed `nc` and `cnonce`, which are removed when `qop` directive is absent in HTTP digest authentication as per RFC2617. - Fixed the digest authentication plugin from blocking basic authentication. - Fixed soapcpp2 naming of unnamed function/method parameters as `_param_N` with N now counting up sequentially *per function* instead of globally counting up. Use soapcpp2 option `-z3` for backward compatible global parameter indexing. - Fixed (smart) pointer deserialization of non-base (derived) objects that are XML serialized with SOAP id-ref encoding using a href/ref that references a derived object (i.e. should result in a (smart) pointer to a derived instance, not a base instance or missing instance). - Fixed strict validation (`SOAP_XML_STRICT`) of unqualified attributes in elements with a default namespace. - Fixed wsdl2h 2.8.28-30 parsing of *`xs:unique`* causing wsdl2h to skip over schema components. The fix also improved string-based parsing of XML content with a fix for 2.8.28-30 XML string handling. Version 2.8.32 (05/10/2016) --- - Improved soapcpp2 code generation of type converters `int soap_s2T(soap*, const char*, T*)` and `const char *soap_T2s(soap*, T)` for primitive and binary types T. - Fixed unqualified *`xsi:type`* content matching with default namespace, which may lead to a failure in the 2.8.31 release to instantiate derived instances for complexType extensions. - Fixed Solaris-specific memory issues in `soap_wstrdup`. Version 2.8.33 (06/14/2016) --- - Updated WS-Trust gsoap/import/wstx.h `__wst__RequestSecurityToken` response message parameter to `wst__RequestSecurityTokenResponseCollection` - Updated WS-Security gsoap/import/wsse.h with optional SAML assertions in the Security header. - Updated response processing for empty HTTP body with HTTP code 200 to 202: no longer forces socket close when HTTP keep-alive is enabled. - Updated `_XML` literal string XML serialization for qualified tag names, no longer uses default namespace (as in *`xmlns="URI"`*) but a prefixed tag name only. - Updated wsdl2h options `-p` and `-d`, now generates `xsd__anyType*` (i.e. with pointer) data members without requiring the user to define a typemap.dat rule to do so. This change reinstates some of the old behavior of 2.8.23 and earlier versions. - Fixed wsddapi.c compilation issue on Windows (`usleep` replaced). - Fixed validation of *`simpleType/restriction/length`* when restriction base is a list that is mapped to a string. - Fixed validation of *`simpleType/restriction`* with base type string length bounds restrictions. Version 2.8.34 (08/17/2016) --- - Added custom serializers for QT primitive types and QT containers. This serializes many QT types directly in XML. The QT types to use for XSD types are specified in the typemap.dat. See the updated gsoap/typemap.dat file in the distribution package and the updated [databindings](https://www.genivia.com/doc/databinding/html) documentation for details. - Added HTTP server session management plugin to manage server-side session cookies. - Added basic common WADL support to wsdl2h to generate code for WADL REST XML applications. - Improved client-side URL query generation and support for URL templates for REST operations. - Updated the iOS plugin and its Web service examples. - Updated SSL calls for improved iOS portability. - Updated wsdl2h headerfault support (optional fault details in SOAP Headers, not widely used by Web services tools). - Updated VC++ ISAPI plugin. - Fixed `soap_send_empty_response()` with HTTP keep-alive to prevent exit of the server loop back to `soap_accept()`, i.e. prematurely killing the keep-alive connection causing EOF/RST. - Fixed `#import "wsse.h"` in `gsoap/import/ds.h` by moving it down to avoid missing type declaration of `_ds__KeyInfo` which may cause a soapcpp2 syntax error. - Fixed WS-Security interoperability issues, fixes issues with XML encryption. Token handler callback has new parameters to pass the key data of SecurityTokenReference/KeyIdentifier. - Fixed the internal `feltbegout` and `feltendout` callbacks: when set no longer emits XML and (alternative) output is expected to be emitted by these callbacks. Version 2.8.35 (09/19/2016) --- - Added auto-generation of new C functions `T * soap_new_T(struct soap*, int n)` to allocate and default initialize one (or more with `n>1`) value(s) of type `T`. Uses `soap_malloc(soap, n * sizeof(T))` and applies `soap_default_T(struct soap*, T*)` to each value allocated. - Added WS-Trust wst extensible framework with SAML 1.0/2.0 tokens, PSHA1 algorithm, and an example WS-Trust client and server to request, create, sign, and verify SAML 2.0 tokens. - Changed `soap_new_block` to `soap_alloc_block` in stdsoap2.h and in the gsoap libs to prevent potential name clashes with generated code for a `block` type. - Improved UDP connectivity with WS-Discovery to reuse current socket connection, i.e. preventing premature socket close when `soap->socket` is the `soap->master` socket. - Fixed wsdl2h option `-u` to prevent a deserialization issue that occurs in the specific case of an *``* within a *``*. Version 2.8.36 (09/21/2016) --- - Fixed a problem with `SOAP_ENV__Header` missing in wsdl2h-generated .h file (problem occurs with 2.8.34/35 due to an update for headerfaults). Version 2.8.37 (10/25/2016) --- - Added server-side HTTP cross-origin resource sharing (CORS) access control using HTTP OPTIONS `fopt()` callback. - Fixed `make -j n` parallel builds. - Fixed an issue causing UDP message fragmentation. - Fixed `soap_mq` message queue plugin dropping connections. - Fixed missing nested [] in arrayType value in SOAP 1.1 encoding (SOAP 1.2 not affected). Version 2.8.38 (11/11/2016) --- - Added auto-generated client-side REST API functions to simplify REST GET, PUT, POST operations with XML data: `soap_GET_T`, `soap_PUT_T`, `soap_POST_send_T`, and `soap_POST_recv_T` for XML elements/types `T`. Also `soap_DELETE` REST DELETE added. See [get started](http://www.genivia.com/dev.html#services) on how to use these functions. - Updated samples/webserver to use both the httpform and httppost plugins to serve HTML form data and REST PUT, POST, DELETE operations for the updated samples/rest example person.c and person.cpp clients. Version 2.8.39 (11/17/2016) --- - Minor improvements: the engine sets the temporary "C" locale for floating point conversion on most systems. This is now the default on most systems, rather than an option. To disable, compile source code with `-DWITH_NO_C_LOCALE`. To enable, compile with `-DWITH_C_LOCALE`. As before, the setting is temporary and thread-local in the engine so it does not affect the application's locale. Version 2.8.40 (12/10/2016) --- - Improved wsdl2h import/include relative path search. - Fixed wsdl2h schema import when imports are deeply nested in imports/includes. - Fixed MinGW compilation issue. Version 2.8.41 (01/11/2017) --- - Added updates to support OpenSSL 1.1.0. - Added HTTP header `Accept: multipart/related,application/xop+xml,*/*;q=0.8` when MTOM is expected (i.e. when the input mode flag is set to `SOAP_ENC_MTOM`). - Improved CORS internals and compatibility. - Fixed minor issues with `WITH_NOIO` and `WITH_NO_C_LOCALE`. - Fixed bug in XML attribute serialization of QT QByteArray and QString types. - Fixed WinCE7 `IP_MULTICAST_IF` issue. Version 2.8.42 (01/20/2017) --- - Improved `WITH_REPLACE_ILLEGAL_UTF8` flag to compile the source code of the gSOAP libraries: this replaces illegal UTF-8 input/output with the replacement character U+FFFD (or define your own `SOAP_UNKNOWN_UNICODE_CHAR`). - Fixed shared pointer to QName string QName output normalization. - Fixed wsdl2h pointer member to vector for minOccurs="0" by removing the unnecessary pointer to the container, i.e. just using the container. Version 2.8.43 (02/05/2017) --- - Added `SSL_CTX_need_tmp_RSA()` check (OpenSSL 1.0.1 and greater). - Fixed string length limiting issue in QT QString type serializer `custom/qstring.h` and addressed compilation issue with other QT types serializers. - Fixed documentation of `soap_copy_stream()` followed by `soap_free_stream()` to chain services. - Fixed `soap_psha1` string buffering. Version 2.8.44 upd (03/04/2017) --- - Improved windows portability and stability. - Fixed WS-Discovery `soap_wsdd_listen` memory cleanup on timeouts. - Fixed `soap->os` saved message string NUL termination (a problem in C code, not in C++). - Fixed Cygwin and MinGW missing xlocale.h error. Version 2.8.45 upd (04/07/2017) --- - Fixed an issue with the WSSE plugin that caused WS-Security SignedInfo/Reference/Transforms/Transform/InclusiveNamespaces/@PrefixList ending up being ignored by the canonicalizer. - Fixed Windows and WinCE compilation issues. - Improvements. Version 2.8.46 (05/16/2017) --- - Improved WS-Trust API, updated import/wst.h, import/saml1.h, import/saml2.h and import/wsdd.h definitions. - Added `soap.client_interface` string to set the client IP address interface with `inet_pton()` (not generally available on windows). - Fixes for minor issues, improvements. Version 2.8.47 (06/07/2017) --- - Added CURL plugin to use libcurl for gSOAP client applications. - Fixed spurious occurrences of `` elements in XML renderings of DOM nodes. - Improvements. Version 2.8.48 upd (06/21/2017) --- - Improved element and attribute `default` and `fixed` value validation. Changed the code generation by wsdl2h slightly for optional elements with default values. This fixes an issue when an optional element is omitted in XML and becomes indistinguishable from an empty element because in both cases a default value is assigned. An omitted optional element has no default value. New XML validation error codes `SOAP_FIXED` and `SOAP_EMPTY`. - Added `soap->transfer_timeout` max transfer timeout, to use in combination with `soap->send_timeout` and `soap->recv_timeout`. - Fixed a potential vulnerability that may be exposed with a large and specific XML message over 2 GB in size. After receiving this 2 GB message, a buffer overflow can cause an open unsecured application to crash or malfunction. Clients communicating with HTTPS with trusted servers are not affected. Version 2.8.49 upd (07/28/2017,07/28/2017) --- - Improved JSON API to compile with XML data bindings, see updated JSON API documentation on "Compiling XML-RPC/JSON together with gSOAP XML data binding code" - Improved white space handling of built-in XSD types that have "replace" and "collapse" white space properties. Further, types derived from these built-in XSD types will now inherit the white space "replace" or "collapse" property, meaning that white space of inbound strings are normalized (`xsd__anyURI`, `xsd__language` `xsd__ENTITY`, `xsd__ENTITIES`, `xsd__ID`, `xsd__IDREF`, `xsd__IDREFS`, `xsd__Name`, `xsd__NCName`, `xsd__NMTOKEN`, `xsd__NMTOKENS`, `xsd__normalizedString`, `xsd__token`, etc). - Fixed a memory leak in the deserializer of `std::vector` (and dynamic arrays of `xsd__anyType`) where `xsd__anyType` is a DOM node imported with `#import "dom.h"`. - Fixed WSSE plugin recanonicalization of inclusive C14N SignedInfo. - Fixes for minor issues, improvements. Version 2.8.50 upd (07/23/2017,07/28/2017) --- - Added samples/atom Atom 1.0 XML REST example. - Added `soap->recv_maxlength` to change the limit on the length of messages received. Default is 2GB max. Greater lengths are possible, but at your own risk. It is recommended for services deployed in uncontrolled environments to use the [Apache module](https://www.genivia.com/doc/apache/html/index.html) and [ISAPI extension](https://www.genivia.com/doc/isapi/html/index.html), see the gSOAP [tutorial](https://www.genivia.com/tutorials.html) and [documentation](https://www.genivia.com/docs.html). - Removed client-side `SOAP_PURE_VIRTUAL` from `copy()` in the code generated by soapcpp2 for options `-i` and `-j`. - Updated memory deallocation of `soap_del_xsd__anyAttribute`. - Updated the callback function signatures of `fpost` and `fresponse`. - Improvements. Version 2.8.51 (07/28/2017) --- - Additional stability and robustness improvements. - Fixed WinInet HTTP GET blocking issue resulting in EOF. Version 2.8.52 (08/18/2017) --- - Added testmsgr "Test Messenger" with documentation. The Test Messenger application is used for functional and non-functional testing of Web services and clients. The Test Messenger is located in samples/testmsgr. - Added `SOAP_MAXALLOCSIZE` macro to limit the size argument of `malloc()` calls, where zero means unlimited (default). Exceeding the limit results in `SOAP_EOM` (out of memory) errors. Some systems raise signals or throw exceptions when the the size argument of `malloc()` exceeds a certain size. To avoid signals and exceptions set the `SOAP_MAXALLOCSIZE` as needed. - Fixed 2.8.51 issue in parsing HTTP empty lines, fixed with: `if (i == len) /* empty line: end of HTTP/MIME header */` - Fixed WS-RM plugin blocking issue on fatal errors. - Improved use of STL containers: `#import "stl.h"` is no longer required. - Improvements. Version 2.8.53 (08/29/2017) --- - Improved testmsgr "Test Messenger" to handle element repetitions, selections, and optional values for complete XML message randomization to test services and clients. Updated soapcpp2 option `-g` to emit XML message templates with the new template indicators. - Updated plugin/threads.h to let `THREAD_CREATE` return 0 (OK) on Windows like pthreads, thereby making the `THREAD_CREATE` return value portable. - Fixed DIME receiver looping on specific malformed DIME headers. Version 2.8.54 (09/17/2017) --- - Added Google Map Directions and Distance Matrix API XML examples, updating and replacing the old gsoap/samples/googleapi example. - Added Google Map Distance Matrix API JSON example gsoap/xml-rpc-json/json-GoogleDistanceMatrix.cpp. - Added wsdl2h option `-S` to specify a name for the soap context member variable of generated classes (C++ only), use `-S ''` to remove the `soap` member variable. - Improved handling of empty SOAP Body responses by client applications using doc/lit style messaging, returns `SOAP_OK` instead of HTTP 200 error code. - Improved Apache module with new `IMPLEMENT_GSOAP_SERVER_INIT(user_func)` to specify a user-defined initialization function to initialize the soap context and register plugins, and service operation faults are now returned with proper HTTP status codes. - Improved Borland C++ builds. - Improved `soap_GET_Type` to close socket if connection does not use HTTP keep-alive. - Improved DIME/MTOM/MIME attachment handling and detection. - Improvements. Version 2.8.55 (10/26/2017) --- - Improved Test Messenger to generate and consume XML test messages with MTOM/MIME attachments, new options `-A`, `-C`, `-H` and `-M`. - Updated WinInet plugin. - Updated DOM node serialization of embedded serializable data: to serialize types defined in C++ namespaces, please see the updated DOM documentation about the new `-DSOAP_DOM_EXTERNAL_NAMESPACE=namespace_name` flag and how to "register" additional C++ namespaces. - Fixed deserialization of pointers to Qt types with the custom serializers `custom/qbytearray_base64.h`, `custom/qbytearray_hex.h`, `custom/qdate.h`, `custom/qstring.h`, and `custom/qtime.h`. - Fixed `WITH_NOIO` compilation errors (`close()` and/or `gettimeofday()` not found). Version 2.8.56 (12/07/2017) --- - Added new `soap::bind_v6only` context flag, replacing compile-time flag `WITH_IPV6_V6ONLY` (`soap->bind_v6only=1`) and `WITH_NO_IPV6_V6ONLY` (`soap->bind_v6only=0`). - Added wsdl2h option `-D` to make attribute members with default values optional by adding pointers to member types, so assigning a NULL to an attribute member is identical to assigning the default value, this flag does not affect deserializing from XML (i.e. the default value is set when attribute is missing). - Improved wsdl2h code generation for struct/class members with default/fixed values. - Improved JSON and XML-RPC C and C++ APIs. - Improved `SOAP_NEW` and `SOAP_DELETE` family of macros by passing the `soap` context to user-defined replacements, updated `soap_link()`. - Improved `import/saml1.h` and `import/saml2.h` to fix WS/WS-typemap.dat `wsu__Id` optional attribute. - Improved required attribute pointer member rendition in XML, producing default XML value if attribute pointer member is NULL. - Improved HTTP/S cookie handling. - Fixed non-portable `isalnum()` call in JSON parser. - Fixed missing C++ custom serializer type object allocators (e.g. `gsoap/custom/qstring.cpp`), when pointers to custom serialized C++ types are used. - Fixed memory leak in JSON C++ API `json.cpp` struct/array append `operator+`. Version 2.8.57 (12/10/2017) --- - Fixed issues `WITH_IPV6_V6ONLY` compiler flag and new `soap::bind_v6only` runtime context flag. Version 2.8.58 (12/17/2017) --- - Improvements to prevent macro `USE_32BIT_TIME_T` to cause misaligned `soap` contexts, due to inconsistent size of `time_t`. - Improvements to support obsolete HTTP cookie formats. - Fixed Windows tools wsdl2h.exe and soapcpp2.exe "The application was unable to start correctly (0xc000007b)" error. Version 2.8.59 (12/30/2017) --- - Removed `#include soapH.h` from generated `.nsmap` file to promote transparency and to prevent accidental inclusions that may cause definition clashes when soapcpp2 option -q is used. - Fixed UDP message transport compression, compile flag `-DWITH_ZLIB` and runtime flag `SOAP_ENC_ZLIB`. Version 2.8.60 (1/15/2018) {#latest} --- - Added wsdl2h options `-O1` and `-O2` to optimize schemas internally after reading WSDL and XSD files: `-O1` removes duplicate members from nested choice/sequence and `-O2` also removes unused schema types that are unreachable from WSDL and XSD root definitions. - Added ability to specify `$SIZE = TYPE` in `typemap.dat` for setting `size_t` or `int` type for array sizes, see [databindings](https://www.genivia.com/doc/databinding/html). - Changed wsdl2h C++ source code generated for *`xs:choice maxOccurs>0`* with simpler `std::vector` instead of a dynamic array with size and pointer members, use wsdl2h option `-z7` to revert to the old wsdl2h behavior for backward compatibility. - Improved soapcpp2-generated sample XML messages and fixed a special case where base class namespace prefixes may be rendered incorrectly in an XML sample or test message. - Improved handling of nested *`xs:sequence`* in *`xs:choice`* by removing duplicate name warnings, the duplicate member is still generated by wsdl2h however as a reminder, but should be ignored in your code. Use the new wsdl2h option `-O1` to remove the duplicate member altogether. - Fixed a soapcpp2 problem with bitmask enumerations of QName values. [![To top](https://www.genivia.com/images/go-up.png) To top](changelog.html) gsoap-2.8.60/config.sub0000755000175000017500000010622313227173553014257 0ustar ellertellert#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-12-03' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: gsoap-2.8.60/NOTES.txt0000644000175000017500000000470613227173557013734 0ustar ellertellert DISTRIBUTION NOTES To install gSOAP, unpack the archive. You will get the following files: README.txt read this first LICENSE.txt licensing information, please read INSTALL.txt installation instructions NOTES.txt this file license.pdf gSOAP public license APPLICABLE TO SOME PARTS, see LICENSE.txt factsheet.pdf Quick overview of facts and features The 'gsoap' folder contains essential source code for the run-time libraries: stdsoap2.h header file for stdsoap2.c[pp] stdsoap2.c C library with the gSOAP engine, this is the source for libgsoap stdsoap2.cpp C++ library (functionality identical to stdsoap2.c) dom.c C DOM parser dom.cpp C++ DOM parser (functionality identical to dom.c) and the following folders: bin pre-built binaries of wsdl2h and soapcpp2 for Mac OS and Windows doc documentation, including the user guide samples examples import #import-ed header files for soapcpp2 compiler plugin plug-ins for advanced features custom custom serializers for various data types mod_gsoap Apache mod_gsoap, IIS, and WinInet support extras contributed extras src soapcpp2 tool source files wsdl wsdl2h tool source files for WSDL and XSD translation WS WS-typemap.dat and WS-* protocol schemas for plug-in development uddi2 UDDI v2 Palm Palm OS support (deprecated) Symbian Symbian OS support TandemNonStop Tandem NonStop OS support VisualStudio2005 To build soapcpp2 and wsdl2h for MS VS platforms 2005 and up The SOAP/XML client/server examples, XML-RPC, JSON, RSS, DOM parsing, WS-Security, SOAP/XML auto-testing services, XML databindings, and other examples of advanced features are available in the 'samples' subdirectory. The 'gsoap_mod' directory includes Apache 1.x and 2.0 mods for gSOAP, IIS, and WinInet support. WinInet allows gsoap to use the WinInet API instead of calls to the socket API. The primary benefit of this arrangement is that "if IE works, your program will work". There is no need to read proxy settings from the registry, deal with proxy configuration scripts, etc. Changes in the "Internet Options" dialog box will immediately take effect in your program. Additionally, this will allow gsoap to handle forms of authentication not yet supported natively, such as NTLM (Integrated Windows Authentication), etc. Contributions are included in the 'extras' directory. All contributions are covered by the gSOAP public license, unless specifically stated otherwise in the contributed file(s). gsoap-2.8.60/factsheet.pdf0000644000175000017500000145001213227173553014734 0ustar ellertellert%PDF-1.3 % 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x͝qǿSMڕ[E-%QڴXK/G}Wf1=ӳC"#udUYY5ߧHO4oҶҺӗWWWyU_= vӪߤyfY6ipЦnP|ڼ۴]WweQ7ɣ^Ufe1~} k}.?+[SdUZݮ+4]WzeQZ?../ fzM_yZg<-ӳ|twz駗Q` J:=<@ӳ@ b8/]V&ԭ* A0> <r}ٟBဟDu~]kD>2N ᯕؿ_Yɋ KlmuQBіXB[-M}D9t6BDY$gOGGz^V)e a@(#V[1Czf|l_"t`~±G5Y4WJ, 44g>ΦeQpǨ`5/=O geeQL΂[_;Ž izwˋvx{[yoU[ھEavq=$@ =CAsmC]]ff M Cc!؂-_QϸkU]3+o"_4'+w5o@58% Q5pIW:ft}/FżrNdB~ nrEN3ς(c_y~ o..'Ur߄wUb]+G`ote(P' Ep{BsX_ ־;H֔-Z.]V]6r֞h6gOy2$.ESF1 "DFy‡gއ=|,!(/La,9v]!D0;254`bIpjh}k>iVUu)vZD p_ d^DMz9lbwX"hu^;#QvP"g Dbe`M]wPA*4&2 0hiڠt5MƷ5mVi]fcviG{wh[O#V¼"x׋ŒcS\y-@Oabgt]0-`4zz`]{ O\JH!sh񑋈F'!끅Q+:IbmqZTe ^`9\~9hu+Oy--]DY/u9q{& 0ˏăβ|g#J%"z[`ej^a{evB}$xXQ4Z#Lγ'5!sBWCtH0āD[r`yWޙלufFŹۑD{<8}@9-d٣Jǁe@ʿ Tp3W۲Hv{_13$CnPkY@ hĝfZ[=:$wmc }vb%4):pbvgz"1yrlb*#l쑰<ܢ6yh-6bfa ߞ'C I z%<@!p'}a[ ew i8JNy.>-gHs1kgS,/¾{y ;YH}f$ԸUd.bqԇ<2){X#x+ 0;L{mm!x&h&Hy[A3WQWT L]픷^Pot{ )e2鏼@2gسBI0,? e?)hx5 +021!&Qoanۘ :ZcaJ 'M|ertqY"1GQ? PjmZQ܍U,@;$+3b-. /Br0g,-JpĘJu%XmoMn&6$M>B/D@ꬎ{d4*V߯a$0˶.w O[77E ;ڄ0917%ڲ87]Gtmw虌^ۀo^e襁,.Qw# aDD0 [s&8+%¢+u8t1SU=䢉a~:=Ie fV'#%_fӞRgrQnBP| m~S?<O^ɧ.j:َmj%4l%$>1v['4XԿV޻ݐLRݴ6nKRvS+ ؖ$%mhʚr+8cM" 3A&GjR.:@%sV7,.qȶ ї&p =zcmga29EA(V߬#FTmⱨEY슺/I!_/+6-|˵ C45`b-DB0 G#2er=GKPnoQPWhoe3?&+FZcXn![Gb."}xFBDž4I ?G9wHRIm3+HǙM&r|@qSE{ԕ8r$VX̪X+Zg$l>:3$w? ;3FFL06 = kEm(D2>t)E9XUřcRHdzfHOn$CQf Bf%`Z`c$XS %Ķc,XS2j BI*؉L8X4-gsAb`,ʱs}mp5J"ZN3UėzqAZ`΍'ьuj2i6Z ÷S25X:ҜЯQNV:q l5#XelG۟_vuFl Ns, ǕƎc;\M^;^=x] 6K޹ $soҳshLI^rG)?߅-,I_(Svy˛-Yzl<\Ko=Dû aȎ]Os>6p mJ7b ɋg(VdLtJpu|<&$IklS8[5T_rr7*lZ3 /=U4k"EXໝ:*^Ien|u ғM,&+CQξtB_IeO $`\QYW>("0il2>RkAW-92&s ߢ9]^mlz 4n$`(Rz`@h~^P,Jp,@Z vAYU\O @AyDzdPz7xlc#.JLJ? |76/熓]F+઎vBoI'9@2C ւ/{XJ5吔3U+$hVy@ҧ5k\7,l{jyɠfW*nr (w88XV`fv1/A@59ng9ZHҁV1 NB,z(UGʁ^k{d6c7bn\V'5W<'E&`6GԹ%f71 C=oRyLJҼۥshy&`6d̔m[4MpwUXla玳 n"{Єf3]ımc)LGop3%V(ms9/y\/xۻOe >S8ycz嵭3,m qEDMZXwnS؎6A }~;/ѱ-{/[M ipQEe|9drg Jٿp)zz<[wI Ot:7r>+&J{N5ߪreOS ]gB6?rr$+\OZSL fDecx[|=$1oSgYyl[6IUu7 91$_ S\b}(rCGĄZ̝T~c^_Dr+vq&hɵqe wuC޳]87*RvЃs=:9xDT>ÛكWSye-_3?hA gRBhU=kĂR0HZ- z gbEĢKmC j5 q|b=x=-9=l_7bs}Lȷ[fMa8fkf1 7"ri2;U^aՖ`Mt66z9f<2C;Z<Fis;D-ʤa,bA$-<1'D#&tx-7nEhQh~.FY*v6wʠ`gmQSW@ ǿl NfwNŅԈr7{I$v-Wlrd뿸 RXX/k-n+~`lv8CWxC^{#kW 0ԑy`~b>YkW+w/q 1g=rҖQ+O7ef`k=i,ƏlTP?&lR}/dtcJ{6^+I+Wrǖ'=LX!^9tð@ pX!$ok}4nWΜl&`FF4@PA,C8`A}T;Vں78uʬuf%D"=V i u r.QO R`1I&a 9`U(wE1EqoF @b"4Ӂ|g&!1%4tu dmob`0YO5 )@Li@薍^t% ?ELnWs] u sL*[d ! #j V.н ^%-A s&֯_KR_VrhMޢd)HYc wȜ2ZXB ۷zM$CEDد?> endobj 6 0 obj << /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ColorSpace << /Cs1 7 0 R >> /ExtGState << /Gs1 36 0 R /Gs2 37 0 R >> /Font << /TT7 27 0 R /G1 21 0 R /TT3 10 0 R /TT5 20 0 R /TT2 9 0 R >> /XObject << /Im10 34 0 R /Im6 24 0 R /Im2 13 0 R /Im1 11 0 R /Im4 17 0 R /Im3 15 0 R /Im5 22 0 R /Im7 28 0 R /Im9 32 0 R /Im8 30 0 R >> >> endobj 34 0 obj << /Length 35 0 R /Type /XObject /Subtype /Image /Width 1024 /Height 332 /Interpolate true /ColorSpace 7 0 R /Intent /Perceptual /BitsPerComponent 8 /Filter /DCTDecode >> stream JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmExifMM*JR(iZHH02310100LC     C   L" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?aݧ6>=w;3HKo|!Z`@4؂7+ %ezWiy.{m5cvӆXC]ڥkӱ'<rx't~JEr5 Zm۟!Ez#9?7_&kP \W to*ST[Ϛ5+8v t/_xI"+u,:һmf']RxQkZk>+'B~`3TP0w纨.W"-6wЅ|?oe]5FH"l@Q?&[,s|)&x !RX85_5F2漚-T}o5j=^UҮ~9#?ΧUWz8vp?g\mΛjʑ5Afv@̹PVti9Vfa?X/\[Vu؁3 I9J%R\rrjnVΔQNGd^a ~xdɀrruSCcd=ZxZ-b)"WBytW 2vW\g9)ntI$?:%xok =oQ!;?5~k@+^ U&\ 85Faqk7߈b>eDln˞=Nr̄cO0I@{y'YFڲgˉc|`~u1ϗg/ksk+mX {QX^) r7 uJ؈kD2yN(֠bY TΥiJ&L*Q2;]lh#|YvcT%\[:9+h]6wιNʲ]N6F\DExU5NWHۉ? ^9Cx21^Mx~鱷b 6o!w"kꭾMh4N+WE@$\g5Yl2k) ITY0(?ZF4nnT~5`X)!GΙ~4ï(yC2) f'єswU"̋`|6Д|i}T|E#?;HY"PV<;?1T? HݢAmhE^ٶ؛X?s*9i>qmvڋ@f;]-D29a)r:vk@>kSQ+?j=N(@jW}.$\_WGcCOQQBqB?mz>M=.orikb?JSo(?/TGZ*uJHHndz[v?Iƺc?#1PIñ_%?nvՙ|?WJ[ȏ Ui>"hp.c~/ݰcu! ѭ}O~-Ѭide^y{EN?IB>kTŠE?_o:/#Fē]^4eO+ZP =]s :xz<3U}'C^jzyܷ5̛-l;iJ׿i#icHOR\uO~ $z5|D5^i.M"?55Tϸ|?Lnd~`Ϳx~OkNu{MpeϽxS)4˖LoJsNڮY+H[rLߝH /w"Eg?S'ڰok s޼*z ^nJ5{z<>WCZ|L@=SFs\-jbYBҼ<;.A5/gxSwgJ hV?{{$h%m+p~|IGb}+,\a_ʼh䝟SI'k<7|Tn?7)#}>ظ~Uc>n|8y)z3^CO?~'Ӯ $pk4X`RD1_Lh߲%tT,<]:x]ViJ INf_)f*1 cA?vexD 09#^vU0xSīf Fz [jIYa\38?-Cq:ʪ<$vrfF*sַhh 8A5AgdRpx-(%AUw&}oœxE^&>qּosGXTW@>~MjnÃfJo7M56reJ,=е*x(@߭Sq/r*v?C5/7qW|P &h >S3_x㟊%Dv ]_wv5!C'5R=\'.ݽE! }YMX<z!X$ck KRos]/F`4*qӊ>l2*~_d#psLMRSk|BGbxrpwm$*-< W;=k*j^~.ߋKb<DG`0?k[9ootg?jfj~cch| 07AP?_Ҿo>X[,>i?؃GW7w;38ʾ,*|uy~2`rz5Uǧ| orm"c)pңm㊐G_Ed|P>rO`y4yCp}Mm 9S"vqVv,sN)6 d"<'299ޚ1+7 SžU<ڵ.péTru8`z3|0=r+=c唒*\᳐T97Ra }̨mHICʐmG/i?+rc$u6OS"Nw c1=Gjܜ·Of@Wp$:暹aݩ~Boى9o@-+wYXI=mn`\XgzaT^)kcVՏ<~QJ#_q;ھ׬İ/01H:dVTeκuqgnٕp xA5 0+̪B٫ކUm<zҹbк2tݸz0?5JJpg֤QD9)([[rO`fz s ڦA;3 º DDCuVS 7F] MNcB792| `=koW2GATt&ހHwod[KN3Y׊6vo?`[WQ|:V9n~Ѡs$W]&z~ׇ,$3dZ'϶'a/٪3%l~U^q_=$3ϵ}+>G,p b^wG|͵ŊMo;k R@׻`8UVBmlhů>?ҟz&xCo9,%#WԬu4z_^ ~ ~f}u7OXx~fT(J=%~T:g7oϽ[}>vF*uپ~i-)RC;PY o_zjw_Q[mM'%+4oC,~˗#=+x cW %p[MZ;sVa-GkLޯ}+ٴH/앤Kb6&G֧Zi.i# Ƶnop+g|q'$Yyf|Ym 4 sھ/ ެbtjU4Û-A>6?=A Z{"s}jYtw.3=$̫| M-.,y`H3ڹq_S4uy-Jk/I9[޾}RqɆʬ>bÒxqʾũ\*fO@>b+җt:>]2,\n-"q־43FhE|,qpW6mc^ijq-7^/ ˸<5E`K9ȯ$'~5} թRgR2_'4'hkõm7уu ,#!x+)-ڇ:l5fWZ+p+WZcyEuԣ7cRo[P1\`E}(%X]6@mͬgtZ>o0r}x'WQOqnqV❮l%d\+FC If7JTZ׍>daJWZX^|t&Nޤ9f7(5e99x4$LU ~>WG;3t9ހ*~-\P*<7bGp8I#*sMR|#u=~%p6ZhwW+REx_o4`bMWl YYNGe9$gOX|{>}}﷍ɯ:Ak^UfXҰfb/#"|U/YXجPb4y)X!@(G.<̣"W>GB*,ZQ4xw!wX>>$<==GUt,=+`Ԧsgo3nkyCD^p6f`MY=7~A=8;lܠ#~,mdoq)4?폌ցڣ@}bϧ1'NC?emdh_F7N=:WÝJM'ƞ W1K/85%mY_6m>r*F1TR]SP ʏZmv3 K+dRR?Ӯ!0̚5Ěav"<)?JtJ-u>QU _c?2muan?A]7C =52D_͆<B ~%Z~ մch *~dS?¾R$mY~~7PZ|0R]kҶ0W9;B7GN*%gԺΗgc N d\]msf '6\svǴrOeBB#>5mbԨQ6 0Y+E9?ZѾ'jl' ׎xmjϧ>Z=J=cI ϟ]7$KB?85MݿV>>܂J8Ȩ*xca|O&. T ǵz> ms6v}0Eu,D$%cX*wN$`cdL$*5oJqQMp\nNw"@T.$(OZ+gw5VL)RxA^}C:."Y+Nj&kJXcB8wt^$Y3q{T"<9nJԊL fv2#9MW2! nʴM=E/W1ҟ%S3-N>mRvt \yMD.JNF*yɶrJ=z.WjkRҧ(=ԡۗP=[SYrv确 :[H ^6I?Y8Q7EΞ|< f^<3Uq |+ii̥rz27I>״E ~ץ#!˖1m#Ѓ:H&o*[d{Ú͹o۷' Wϝm5U#XI$K+|y!kQt#)CM ]⫘>Tt1z'謴mCaXk}e6o&S'6>ak_÷Nm1Wn"<$ˇh㡑ud>Y]+zyq_'^x}70h_5&vɕDx>#*NoYtR#K>W*~)Y,Hfw3ZE06GXdD- j' szNW(k7EmںitOGJ}tĈH>$Qu9FΥ8ּɦJt5zDūˎcIIj5fSǰ|$@ y8+mg2~b]qM8{j7ob1uue-OtJ9>t f?Ҭ 7l8GiV < ȤʾR/]nHѽRF~{|ogW 圱=޽'^Zxw{ɪ];B]=[mJz߈!еR[Ê[Ϗj~֡u+lњ٢ f.!d`pAIRң>­xmDGUҹc+JoF5!mKZoKq3< Cą +Fp+ٜt80=&}To,VE$[a$LvGxV\qj=Jbpgpw2pX,y^[[rU#bevjcj[q/tm>$4+_RxwWD4eeكtؾ$D| %TU=q\8O+FOi-Ϗ'<73FN@(.Y( xNkU<-_$lZk^ /~Ĭ9+ tu%Ni.ΟibZ(jsZ4v(㹍vF-tUH.;5tͮNUEMR8Pn<Zr\ v^X]ر_QX׈=B!G^|\):0U߃6PWZkQU@Vu0u^FXYh:RC *=?h XeI=C+ j;0$J+(e,izPë]S[Fs{Ec9f*h Ie8i[D{:}+vzMY;07]H 5/`TC$9z:ZًJ;-5?$CzV֛4zK뺽{ND1tMx[s?lu9֨{߂-ƘbPf,k<=Y8q^'t2RAJb-<o- R=fs˱Ͻs^" Rf+۳^0Xy}N[#j/YYܑzѷwZLc9 ȯ^9'{w#ZcƟ)$6Q+fb:+UL:R{!:=W&.cFu=1^i@ i?5m Y]!Xנ_5K S;~.x~u).|qjs&~i tbC9sF/B}pZaytPLWL՟/-f0\o L&G'v҂Rv#/ɱ䐚ݞSl!Nk'9+7wW 8UdԢa^w if+8C%vuOv0klFgR#Q FSkГwg:沾cTӣTj+6d iJ-o _Xva';P¼Ųɩ\u^tڠ{W-,wQZ~5 E5c`@)CA 4#j}@ٿëTk2 XA-+W+_cS_e.>* ^G idlS^pUp]Zsm>t>Eɥ=E34,:8#6Ii[2Dl%7vbYyuVXBGg*կ}~G.|:*Gt|F-P⹳abPN}AR2eF1@׵cFiȿIu;ޝp ѱWlh` 921_>|G ;WfN^\Ӂ~ٚHB#]kzqY],jwdcc^)ӡfdU|WWɥudtğ+`9+(4]Pnlrk|CoV/Ö/ "~16xbPuhH%kDee[:+ʎ.)ڌ[]},4y/.7VhL=ҹoRӼe]|ϡzÚ3qXWwm G"άr Ĺ< (C_h}-/z>\*9?yV$a _nW7:[{f`pS5Ꮓ d$p;Ed,*?+ ַmۖZNӆQ|hyle2m[kռ4IYV O)ƻ]WLJ5hK[!L$hLP 5^Ěo8ApGt +C2n5L[PW}Exorš= c1X.Hrϑ,3ou:ޯV_Mk1!۶IoɒHsOO*]#E|֯u,uh*s")j׎ [\ƻLg'+/Mr=_ֶ̦K(/!o=#YO563s l"z+VII` ZӤ)8{U#x4Qd{w,ÌvױxcNL^k&܆ӝ>/dvR.DZ5sJVB-s~_J4Bݥ=+f-FG ZNjo5f~՞&>S`}Zj5bӜ #mXWx[ӌ(~|.c rISfh&6⽹ՙK kӤ^8[kwyş!6`3_c^4',,w 5/ع[}vS*RR'{Rrêk P)Jm1=p1Vtj-Ȕe/OSn>OΪ\kikV-LozeXCT}g QH_>-G-܅ bNk⦬vFRV!8pkXeuvQ;-c孝c^|sjT|^m737U}=Y,H:vY]#-_5j-gs.x9:d5e2~T|K䉷QIc /-+a_]O2ckm2EMa5~-ηuKB*gf!>}6 ć- }/xw_I k irTXg-J?e|_'t3>!='|{Tձudp:SE 9-ȡRq.M-)ϵc:*.:ź5sj=ȩI𮪹ʡ>-qV:7yשMйe|9扞u-k5hOZ|I[&٦fP NԵ}YV,ѥu9ds*p*HPD鎢 AW j988O$j2 Td9v9V>zzk'G7t!w^E_!//Csnl\k'4!Z4s>ͼ7pku!cMtS2v)\/L{1}xiw`F} xG3ZSڼU5yQ9`~ku{٣v50POs^{ZM36ӎkwS=C2t|Gqq9$ZҩyQEZ^r| yϽaxo \jrG"\5EF 'E#Ӽb%NGp4}knHqx]l֕#{+}#& \{{ɆUs_!(;L,#q'̦ R-rUo\\}Ky:\xMލ?k>Ts-{HOf'q;kf72p* x:R+='p,A$Wx"Rn;ש SRgȣUkqҹl>k|zbWh5KW"})@FN WZ*v[PiXvI&!ܳ ϸjiyt}F|í{ xǥxǵ{F3|/ީtu)D˃r+ZЉ.֟(tzt)HuzbP=5b$@hjyj<`DJ͍$j2ּ ;AiiJ2c^ J<mi夳hf)>Wؕ&̳k%{5^_ yCgSA+'CVԼ={km,S4:g%fc헴g /F[>}NY}SE>{s}6v[< `𕚫ldr+Ƒt+Ȩ}w*j!C-+$]$\,x}%WWP}G}q <(Ѻe^/r; 6zbA̱9S{O} +Ƣ<㥑7E[ ^q_/AOar]j<Wo-F[{+m2Ym#8hDIsySGyAtl-VD7c+BKh:G9k>__F\w|̧u7iOc>FO{s὘ܓ[/`QQ^d+˟csyTTmǞ_qeEOQ^wIuS,MG\Z֖hM%'1ibq8wY[˄*Rώ>$-Uˤ"D 2zz`c ~#'2`$qh>ק\0ѼbB]7|X4(x} |3Mé||CqgZ1E(-!8?l+q*^Y| xu n>>mW8{>Ե9QV[R0pk̼)44H[b1xx <ӦU,{y"c/1>^}ԝgݧ׿:=V [OIҬpzZWºݗy,J=+ nQas,G{۩8TxlTcqt_ }|v𥤄Et=`jX<;>#ԍ|EIʜe[pjp3^Aǵym2,w|:ǻ9zc|g#5 mH#+~k2}v8BX +=zвЋ:Ա2EC>$3Hckc$ƃ9c+OjW2i iJvKvncF\0QT}'B.-OY_gg{WxZ*\3y:8<+Fܾ"O,7*+>> ⿉vךf2O+ m,{㰯9cSylziIyG}:vIyEU2te6~Lc.]IhM\_7+?as+4gi_ms d^N3V5(95_ )En}٣-2[":u⌛ԑ~7>7U.e-6le H>ޔL4^')1Lc6<†3H}k)'vsϾ&WMELgJ<^=z!! OpkCźuǭyRV{Qg̶>2Ɖ=j$UO1\8,]/ݚ?k~ c39-R;-mV28qqj\ȋ[XoMޤ֦6ַ$Juk献 ;[5 '('Ԍz8F&9I[t}NjKCCV,$ ׹-"|-j'z?H :JiOˌpZݰ潲ݚz?!F{*H6bOzI]XWB'_չ˂0bUc_E唥$As[iޜ׮h8fWk3KlIHoj.܄b1r6jN~ȳ}X+/4w8nA> w 7dVGwzⱵoP10|g83/ŞVdYGJ_hd*΢`39L3Gf̻W(WB[3OY*|ԑj-4d\Ҿ1]:(WS_F/WöCGD }i60$ufGB}0V͎.,ڬ{(TkCP]ĊbxO/J}I$C\v5⿵GϣNvfJQgVs>Z{ȴ &!TEG2Mg+8I$Ҵl{W9f8"Oҡs]2ívV~$ F ~}>Sפ?, yDEג6הYQ] [Uس܎ka< \4C= ;h\¾oC/ D&u|"i&FSi2Mn񚼰`UǥxnYmbzV-ZOIb'^ɭOVKfUcǭu6:dkx?I+%&%̉Siٞ!Źzor]<Ȗkћkּ}gF!iwl̠}kx(6Lb.#1]X|Jp%{W iׅYf\zf[;MФ.Z"S潧*>4ңW59M J݁M\݇EpmԈ83ֵu;`SWgdZKN+3R sy,sҿ:ZCF{tzgoϭXP+ѫC3ޮZ![4^Q_QmyWY1E6Wr#+nl5$<0KFᷞ#/?ޗ諺r5:<;C^y" {xwO?aOx5k.vR,p8b_x=ޭ}[\JHz6T'Q)0zf> [HHz>qg^H m4-Jړ=+sDN;nr$+JA-BUASiCR7|_/[v0dWo.0 B12{"ֹ%9Tvm}kO@?0ҾhS=ۓQ%+N\Ew}>&{J~+vdh0'We-7U s??8;E?:q;>д{>Sy)"P V5}jkl8_+};| 1_FxÛ_Rۉ$>S ka`>.$̱8Ht]Zy FhMclQ#yaՁA׽|pKZxk.m>4YOBmZ1t %$Tg_:CF%mf9y~FuU//-$լy~EdڼT!= jME24 V@:_څ\I"(i,dF3 CK BּlDU-7g1I(-wv#oÝM+a8;Ш+/r՘G/!8?J5i|PN]h:,6Ѵv:W_2r{(0XNkwm< vZolȊr=[mZ(VDUS r:C^c?^iGa*O }Mg Kv01ӛgkV3MA/S4 o&GuP9XT~TZ߁WI+l6Ąu%y`:fs,<_{wsҼ\W+c]$_xm&>x)eS-Xtkĥ\֯c~&x{^9\}*k+-kSdȶ8l5ᥗmp0ޕW m4eiä1b>V5\yq_P.VZ_ yT2+o|YY Ke֠H6WxE/;iN~S8tΧ<é¨_PAr+19fZwG>3 õ)^VkALx''5|ijVb/;ʲHgbyDQ5|2=CWsk-fcik_d8^N bU|Tc2]EF9?u-#xDf۵a'W-ۛ9.!ױAS^emAr-)%CK if2vxv^cT?v<[w#/(`)sI#g,Q_\[$E-kb9iܸb0N+jN3|ONT-%9}k7/gw+%s9>Эi \pGZy8ez<'.mnZɷbDE'Ue~mwi$N9x/̾"!W4uEZwṴJpY9eu%Зmu=Gb{ժsx_~NzW6k*gAng3[ɐp+/Dk``5y⹤em3 d׉k@,Y5WxcC,m oM8M ݲk^<TbYm f lS+sJzt=YQ#O-zGʽb⊰ZUY&N؞f/O L]SB*{8^={cQV1I yd[XˬG+_jWs^e61X0 e؊1S]5 c\v5^I޹mrL۹~UFk ;reٺs[_?ii+iNw\n+*hFuʀB}zW6WSF㟋$i^rMmi?"ʢg33\FӼo"]t*XT?>i-Y#G؟-u)SNwp0ZRo3E _|U=^ܛu~psI+pU>W^g?-r_ -:;'fEc]w$'¿%!wge6꙳@bN §O@O֭Xٙiֹ?AXf$lWX]SA{M7bO-H̯{ Ely^_žVv:Wc&rI8۞~]x!\q_DxJJCs{a ˹SG+p4mOJO]KqS|o<_LϙEusx+M+0@ښu:lw*2A_|^Z 8,OֿD>TOmyWz'+XÕ{56x}kV9%B+q,. s\'QӊtTF2U@Kn bHBsU/`2'!Gjmx32SGhcM\6i-e;hBWz_Dw;豭+5rT"I^$fOQx8tԏַ1s|]NHV&~$cM(TFWtմȜ8;+_tq#S!|A-iXýg\0SgšHׂN+jdS|V˰<"]4|3 _j̫ ~uWrCoIK+tDyQ㊫zf]S :mTy< ZjxY3$F+jmv[5rYJzWx1ɭ8VSAcw}ک /kez͌ukV b+SR "+N2]E42^ox"F$g_ ʿ-}?xx¶2 `~sշ俺{bU \-i~x\t&f/ב_$( |ksc %k4 C˰(S+g:c5tz?ZVZcV1b/>١PgAZνIr(csN缏9졧x%--|v^ /mun=A4ĈO|?kZBA|d>Ur9j>Jt.,<ꎣp'u)uqak+p5,z,渏>3n֘za!x9$e#<.uYgtۚoE`S#h*y9cvl=xC&%Dé iQkzwLu5>#i\~_?AIՍ84m\a֤,y'Meb\"$'ЭcK{Jc|zЯX~9,Zؐ^n?ڭm7NҔaC{G4{锬˃56lFO g?/WV[G!A; Dg-q`,Ο)nr`%_&>X1Y!cQ^m.]icw)>k|wl'kaNu8 ,^:tZGS#խzN^|@t s*2k߈X- l*jpInTki{H*!.-u(2:_5ojOɯ|gGG )Z0H+D:y"k#ލÏ$H M&?it4(m/& Zf'S:2dp5O_G?S\M72DbH$_况t!֖,m{U?#fH>*1k6|>f8DZ./gIwJiI%D7?}Ԥ2ȠH@< \Es,N;q}t{I8*e*$_WZMgҚXToKuTp3pi$~U6̻R=ꌑa!`duF6={{ԦӺ42MThs:U) #'ͣE2 u;vy@Ob^>_ֹrGU'(,'m~ήc}!PO$c]K 8Ahmg#;W4)=ڳ2Ab*}Ҵ#SZiX.: Hp{WN{eZZMR#hns^&fyU?F#wps{[6|E_3ͩX얚',JV{͖։GJPyh6rmd\qOëD'Wo^ڬ9iltgtRˤR4H~SU.W$5d2ynt2lm)ln^SҼ)cgoXT(1V-:MET֗2T<+5ӭ͓Q˥M;ҥVJ HwJ)N1H1]ΛqBM"T^˜֒7p.4Jq`$^֋2UBE2>AAhЩiOj`zbY[Mm)|lW΄^7\s_7VҎ[F@q+Rqbahomu ??t+f.rz |U #ߕsXsw?5%zr٤#s\e_ !hĻB88wuUa2^/%RR&Nͽ֛掣7zCq)G|ey[CD;ályq2x__J5IUG,@dz#uwjbEb3^^|lddNe xe}3^*}k߃!9B`/_]oVwm.~XiZ>+ FWKsl% U/ ulIǭt[`æ:S}~k;nw[A'8mmP 0z ]В4^M2t|*aHa\="J׭%kE7,UgQn{.?硩Ɔs暸d]qs˸bQƏ82Pxv5^+Ȫv9p? ZrFZ? &pWd}+:gBvi´,RvD #8 lɤS=kAu[}\. 1ֺgMZSg?:&X^ $~!Zز\;?A%B9wWݟ oo|VʴzqTZ|/k7>,Pm֯8R8JɨݭEc^i\4*DʟOG.▔BqeLckM.<>{_KOّ@ZhN6cxEI?ݪ_ o<1 r(붨|ϦMkwaV{$4.3O{7/bYR|ʚ; H煪zs0ܚ2yrt6::4q?0n¶]Yl9sX f+j [gVWh?0 ֆUj5?ekO-OOwƋV]_LӇ|(t?V1qXb*=#RR,ݑZU2aI oƇ}-rӀѾK0aP0S2Zl_# V3 QF}{ZzxOQm$0,:ײ^\ .= }I~˫Zy^@q yҞ_7 S^6}O :tʥs!\Ov\rkXE_C¶VF\. 9m1k25^JǕQkfqǽTZY_4[N( g㔥^,:.kح$3:sX6B9zfӛhgsZ; 蘪nk1k u&*> $z⽃:}Ҍqώpk>jOa"Fvc0]FyQTv0'^L/5VӨ.yoL4؁\w>,ģ\ĿݤEf=1_/ըMy a1YsM}GZDF8 ?Fm5z4X~&5 fծX<0Ykk~i4,E>/ qb"&-} 7Ƨ_Q*2h~c%+v6UgO+[ 鳂dtż{'6ۜ$IFsYn%'+g\U; }~۱0*{vz?ë1,I$W+־Nh7eGկfix&V2Etw&O\Hṓx=(t$CQEgˢDmWa֯%PYG>շP-l0q]Ǜ-V8NM+IGK^|LD`Z޹5+gcHa&g\Bpsp:ɹ̃\r4ƽdxxMOǫ7n&o>*n/}uD*~  ?g)Sš+<Ȟ`W? b1xXe1 #9N<:,!@=9u|`b~˓ ctⳬJV~A59~B-Ñ\N9jY`f'ӽR wk샴 ccFdltj=b܉l̻4Bg<#O,;tܷ=ZHibIhC<@V' >j7\5NW9wtnۂǯ^ka0UtڴQF'f -Gf6+UBIƒZV`ā<0Iɜa־z1izƓذ^5kmp~v&5iMɳ -$y'qZK}>qI%%;^xNfRz՛yS%rz5jD}VԜ3j`?9S#n?r{YCDt{8reDUoCƬeO)H1qRaMhsE'1ک^XQ5e%To/$q='UX#Mc- d961pQe=Y0TKvCte"s>}Wڎ)P O$zףNn5"*J.3`ڮ2Hp3X wrQfW-(#,kO;wu{آbg\]yt|ssl mr➚*vwgӤADqW~ 4uJ󼳀}^5KG_;[42S)Iqc_xoųE<ӧ:eq-UlfF;]45OOb5Oja$D\z\Z)C(T6H=ED9VyVFdި \)XvהI:f3ֽ%׳^]Y& Hk߀OmYķ,{RAk֪ޮc$"t6|KV7?(.r+vmy% Fk8uw'8>~̾'mH q^v?Ѽ4hƧ+WGx/?+t׎j[9"(4O3槼(cExXb^^Nj~YWׄ43[6Xd niڀyuf jKXIn7moek9o$(0(` 4}E;]>X[m^4^ƐFYkͫK* u [zͷ k3~3xXԮrWF(\NS?8]<\1psCFxiQnzozl0c!m.І~j8>hi<;#Ʌqϥ>xOEF]Bm! DzUfLkeYV$}ndo/uuO͖:]w_!d<{:ːe)JΟZ/y']7YOz+\{hVVKWEaj^lFWI^ϝ.O,效5ꐗ:3lNt 1X]yr# ^n(pzk"g=V=vϽp\ x$6k 쯪wgQ7uL9q ,:+3 @Ţ]~#d 5fm.Y7ջpұ%,Qyar=i`(&C gV+gnJu E%%ZpΧGs{ Cj1_7~zOA(B}1'J&0ez<{#2H~R}Yk-q4R>|04Z35\ir&(k%QO5%ЉW.=ZYugN_6QUJ{Wý:#;RAd\S)o;k:xeu+FVylJTui>Z~)= Aֳ4^~й%~eC0lS?:7]dFb:yԱS}ײzn8H's #:Xg-E`tMî L:uE( <]r8 κB\lVQ*958ԥ:m xYۈ:cڵHϖzf* ^F"hJf1Nr{V ف.\䒢2.UoQoBjnJ<A$sN#9N+lEz88:35J.Zv;yɪԮرhۜ5z\#ɾy.f 'w:$b+ClFwOI77Qœ3qtUU+;Ö)E?i𺱏o.?ռmŘ' Wia9#2<=sSھzҎ5R\^ #2Jv]]}oaS)=xX1'UBɉҔfM)?skhed _:^(k[_Y\<1+/ٯcz+y5 Uu9{NJiIҺ(d85ZfmL|\7<__B/m} %X|^rj0r4g__S|U3Fd)־BM[SKR h3Ԛܒ/ xe]ϥp"[J5ukXQ`Vy]=khavz>Z^F*su&[|MI 36kng2I%oÊ[N?qsE߽r7f / Ǧk ^;Sp˞Yml i>Y xCv vCPu-![FT986¦n&Q#8OXhWF⍬J~=MrƛxXu#e)B;=ڀpOk#_ ]kL"ܮdilcrw*qj$uT"d\Z,_5l!u#ָ[(9UnZN|#>(Jy$5oMxH@:_-ţo s^cy[+۷73ד18'N|p:jpi6۫Gݷ'}H<ǧDjkWq+ {Gn*X·9'Ry=W']dz51\%LFJ9JI`>JOj/7>?ϴ4YXB=X`Wk~h:蹒Y3^y7[]7T[rJhrRbkKhj/>l*0^* ~9p)C}L9bܞZ%ijтY>l3 ߴBxs [ںѢ{ٮIy2뺱eG-.2סO%zX-ٲͨ0wp:eL4[cuPON-e= ucF"Pǝ5sh}η27Ev&H5Pwʽ9-|YzoHђXxԍU9=Oj5K>$fq_9{fٷviөGX;1V>Կg_Ok߳6hKZ?\-䀏S]6k(̨:We,Io3~xKc\փX%u^+b)&fk?pu8Hg7)'5Iʕӕ.Y}gs%2ækfy58ѧЩu>} J[}vWhc9qብY{6)#(i0j.F=ifn,IN[.l۫믇H#ңW ;Jc+<z$KqV,﶐wT䘣g8qV"\$ )\W~yo5]汩[m> 5ڨ-'h[\d 0U5)\^qY3rB`z՘ r9Mn29DC)u_UٯOZLwYҜԛ&f-pbmp~2u#ٯCF/gޱ3FryaO;\ w(ՍՑjMB~\-T`0VSfVQE| '"ßR+<5Ηڵa&Nָ+ͦx5rk\V;XC=+#? U*sw T*H~y[{SMz^9go/ sYw$ ZBq@+Ϝj<ʪ%,]N?R?}_+aVQWju~]6?d iB5\vSiR-#ݼqc7z^;S7ןҹ?|<3G5<׌5K)PҺߍz7g6HEʼncWa"d~oϭ?%x4&{İi1yak-N cOTtԴhRHp<;6Cm6pOZ% $p+r(N}e)+U[5,ᛜճPy7 5,Bx[ƂUf!ujxϭy/mQҽp$QW+2saxQs5N:=.jJO򯷓*nzykgv:uE}YBKHzWA᠁n8w@}W4aʑh` "3vֻI1W*c9V}?}srUz֎SG.ﰟZ<GK7?}_"-ژP (?wZОg%X_Sψ4;ǎ=F9[Ѽ]4#ˑVw2rw,k*3SEӫ(>[k >rŰ]ڵ8 g5kvr{ӳК~E$::ղN& gΞ*[ki9U{IL,LWW"DY',*h<7]ΉW,L"Fe5.// -}g:Y]hpѲw^jR|eaӁTޓD}LU]U18ǡ 7QB>R4/°n%7,YIZǞ('u-bཤ7' .}jǍu)H͛?;~u%Ytc;m;V>֎c/`mt\zWqM31rS]˫O%=_"$[{wŦxJjjs >S85ؗɻ45S>F:w~ k## ^E?x͜۴G whyw&5QǨ928cK Y=IZV"kCZw|82®OZ2 p]`ݫ;&|JdN{VOb:Ѥt fRnJVki0N_SCt I*,$T먀GJfu8xʞ7+Ԏ]:VܶoNxȤk{7\I)~=ah*0[!pʙnsL$)8N1wzE@,pGu4 M8?Ms֘s֜GT|qT'ߊGwstɻ,{ԑZZt)m7ү {KF g1=1VmJLt_fR<!F\Ԯ 3\%W2TUJWPM9'-iO94k65ٔ>56R _W ?vQ$t՘C$maF|~ۯc}{1|<"3ѓ¾C +Vb]+CxIMlKujqs^ܪG9!LUKH4}RAey5vO5ˑW5r TVU!F^k̯@(q>NUn%K s,jy~4AmddW,ꨝ4:>6f.2xG0%ܳªb%l, L3JqJ< Seyr+%{'F=Ev n&)#?t>x˧,k3.k3,د4lc5:x/X`zZh¤6e':Sx C=|wy*bƾ,vn-|#xT8+"0~jǟ(ڿ>St>E/k>GL(&<#zU3Ç+.'@yP+S̀ Ev)hsw^1SՆrU[-=*XƼM()+u. `p G>/QqXzϊmtd{HQxb?xbuݹKu8潌DjJ53Ĥঽv<=~FijzC]nbNH[C gŢ-LKFޞnH*ХU+֚o{5QvTao6#֝d'-+uK)8\5hBrH`1^yl=G.]FW}O ]. oc0߅Q^ZܤSPmݹ*Αs.4t))'nJ1^[&Mg]Mym\ ^jOI*b g4-qx:N(D?C^e{.ž^k2IY47qUsޤ%@px5FY!< I`lkP dM)'ajZIrq5Rz79'+|W s]a[9'?A;w=~8e'DRؓŗ)ޟgvǙ G 6m&Jv?" ?F5+}]/xGCA(W@~;j!R!i>bQfF0oROf9OG\9eSufmn׎jb {e}2X}J=-\־ sYMיxp4ڍ5x~UIT5^vHGNyXM KU%]W)YY.BZd`Jnx_Ri`5'Q X*?ZcH4gf ?\Y _GF1SJ +Rz_=qV̓DAVpur]VWTLzt2`:UyT[̮d %&j)JےFsSpxtizKXYd=JAii:Xxui~}H-/?bBԺL{qSq\%d> 4[uȐ`KY~ֲѱɐ3MX Su<ձ攆Aث+й5,|⾤ۀÊ~,/Fa]>XWbJOǍidlT|cc}{ji!F+N&%67^AVCz֒|.fw>FHYSU/tF>s[w4[5h[K"K&<|v7";K7aR*k>v`}zTmzF\xXbM@n)]|dNۚS\|=9d }U:biҨ8547ZZV+# {1. UԬ"ӮT9 -WS4א0W@=Mw:/ƻ <:Ն`٩H+4oqHTJߝvoĝ:.d5'qʜG]oj[A0`W+(oiqW5ՌgF++'i񅽅yOz?ڿNBM;>Ɓ BPH%i y"Ե> {3IJ9F|xgB{ pM|ѥMherzW?6rRF$Ӈ*ͥvg7E$R}k5όyƢo3ǥmj;9-V=KPkY}W{5b+uu9O-{ŸZKPgNOgU8Vὦ̯3\֥CGO '_A_<%ǭEh}޹|GѾ'xaV%rOuh⪫IVkO+?):42g~DHR5#xyzooƌqJ~͢q}hp.!B-5ϊ7M+Q va@"{޽⬾uj(ؐSOaRt:tNdZD(2sEgbÜd49rsUHj:D"GX8mԹ] GAU8Z$mvjS8%8Ӛ+N+,JΦf*ڶUn$Kp('5T s߼Rq^u[u9}kqs#Y}c2lĜOZ)OQX> ˮAg/tdR)}h Q^nHAR]ca?JA'j-2+IP?g=w'L2aQY5B7Tug^9?kWd̓U- ȭ]$cx'+ţ-ǎsq^7Vp[?4_ 8(#6 ^?l=zK5xGlɴj .6^fv#s_]JfqѵV}WAܵ<` y5$1/UqIޕrRH)1Sȥ-c z╇rXjP197O XpXK9"Ͷ@WEt9fwo6&ϣӔں`<Vt3F]xW̌fՔlC'5Lc`o'MUE.6}3R𦟨UP8~eFv}kŝ>W|Ӊ*x$ȡa)B<$\ױ>H4ϏZm0FƨޢL>=qXxu]h<œ,l 0tۖLz֚ӠW=}f+a^1xhFOBh?j:K"5;6? m ??pZӒZ28\?4֤y8ٟGVt'S$U +̦Gf/I#B՘! UmCVD4>SewfMk*AN,wRo&"q\HS{@s<[}k|3![t0իѭ5m:op[˙B,F6z1?I}Vx+k̾5GjPZ9WZ_NKB8k jگcv( K;y=cIۼKfUIb4Wj.;CYQPjAozer CroVg$MX6 PVW*Р9w:J8şԠVԕ5\)KJ +2 C&wKm|ReAm:"iWqI_}TaGPƣ9SLl SUQk!5fzҋSZv(&:W5\ YkI_'o]{נxgDOY@TI$`c^5^wyrM{;Axt1mi>"?q _(xOŗ>`C&a_ {:Cbp0Uv37mHH |خ/ h~ P SUhYrH/n=xFIs;qO37d麭΁rc?4o]-%r8\uEr=+h3{VZkzFOh#.: C]Ə/ K :T(A}o~_?`V{Woj|zqTuAKό/v qھa ,Hǭw{ۜ0$#|] [a+vE=+OP/.IVT%>^_G}}7}1 SĚ|?DfOkkE=V=ׇvnss9gkˢbͲw3[~)21~??]&|]"BGԏ{N]Io[=̧!)'E3q,ί1Sٿcʨ{ $#-^u@tYST-n~ /T1ǿkSH q덧Ip^3E W}OF:4u)n/;b+W^c93|8񽾁Oo.u_u֑/wtOb2 (su/V<2xH%xb daєk11JXYi%7'-5 2; W7 Ơ+A/4OROOqR[7E:澹/GZ# ^h-ճ{z8>zrٯg,3cSR-E{L:z[)R3uN 4b0qfjre}+FWڙ=Ԧ>Y\ZTvV5vbkzAq> mx/r0H~,I]x W:_D'*.qΣf>**Wfn-o"[} iGq!v҉E`|W+x;UK Q;H#]jaG |3iy/ĝ8YKAoNk ukG-B. ךxòLNw`Rxqe`"n0{kB@j;QgB 1Mc^G8'A-:/&4D:]HfCu\)EKP+׮emFmayt?wK425=@"62s\rݪvyڹ]bm"i'mNkƚߑnwZ\56AUN# 7m}u$ՏҾ&sK=gxF_t3Ond zf]N+| fGWk豕9)/Bvosq!mz;fjSEdaܞAXP.Wat㯯]F?v{ke)KW\ZKJSK`Uղv%g֊I'" &3NU朊Fx 9qSy`4AW8G4J #m('u+40r4"Hw'=-&i1YRT2kx$KDr><9&W3LCWKc\VVo|nYiP eǥte{=-ǥtRpau9Vqkg.5Ss8)((֤o3-vj7qYPVekG cV5PtHO)v@5c֔uW $MBRA v }@Ri6ۏ2Aa+Do.60~4QFcªI F|H6qIB]([se"%p"ڹl  cjdj|\.xGB𢌳 m"RE=TB֬?&E^3V4'VDӏh7z趐榴Z&x='_r#\+ס0xp+-x'p9u 5ux.XB{xB? ؾd5gROjb[5G F^׽R:<5:u*n1d'_1w[Du k+p7wE뭖A}o|ut'p8>-j~/Չ3sW<1D#9A5O`ik\{r8$ȥOD$:YW oXZmEGZM𥦉/U ǥ 'd|usH[K0j|)tIU~SҽsXQM_6zٵDgj=gY#诀?0Ez&<@AdW~ >-&6,2վ(_-öPfGsδXrȕq+F|BkmXT޷à+չnEf73d ZY`vG"¤YJo*v溭}SHOtJZ} ;5&~'ܼ ?moCp!W˿ R[W2ǖL>ua>gyQƗţ-m%eתA>o&|ǿ3Iul7vW 7|F-~R1M]:4ѴWp֓kvjat@I Vl'p8Z*9˪3R$T*MKWz*GGNOg޵/ꬴ$ WһZՔ:Keb~fɯ!W|Uk Ir{r+46OQPwOc(6g2? ;^h'ҽe$t,rP^ge"S}󩩰GWbg5F=rɵ!N_[<+a^㨖it2Ǹy,5+eKrtԎ$? uXy|irM?2|Uc/^N'Ly,y["񏁮YZ־-:B/s_xEu(@x|f)A~Z?G|9X(ATq}Dbh+Q{z>-bfٯKKuo[H;[oY;}WϮG~F-KEm]>Uܗ ÿ|sKפЯZLa.DF yo|V~-xsuދu]YZRa?oO<|sԟ⹭U<׃xSkX=ѣ[/O-ϼjߌ1kZB[d?9#5iS[ 9+hl|W9iP2l" vvxL!U4[q]X 0Wm i-D2 [#ұĩ+)iٟG,S^Z]5fHmLv) rv5^)MX01פj#,W%]8Rrpz`k+-W@zξ[+k2ZR%{ Om W3* (m>>|%mԐ$TckH϶mnH~k[F *^JN1Z팪Y{imڽjTS牍ɻM{v 0}>h"68#tBUwV*Nqkiϛ/m<vBW [⺘ulqBoT{|G~Dmzu^Y(26NNH5R W+'=Njկ|,H8yu2'ˏη|Gn:WlP5-X]xjTq0Su&q~=/rQ S\ ŘrO$_Q0T*>H^<`_,wW~ٮ2M}G$lm:yhYZ|O QP)n r[ګ^jg>/mia8T.ۏrjj--pWMLd ]@'8+VF~niZnץ!L]6m z8so !2ADJٱҼHr9:ԼcʼAcfq}Ό-LD4tcm&ȗw?n7sMyN^c&j/ʸ+j.Rp}O]ӥsլ@E + W/ٔ?ިVVZ V97О+;xs(.C®Z;BmAAYuwǚG!<l3Z ᝛|3O֡89ju272mZ{wPl W4{KUvF+ Jyc*OulCn#8J%;\iQ_iH9*: fxkޤEfρY-z屚θ_qRG74>+5_&_k?} *\7Wٻ_[ўlrgml\wu;hv8 mnbXyljw zTqWdy QVgMk2Y1b`k^ك.+͔؛$X$qLsҮ@rd\ :kchkTaWрkv 83Hҹ u52Yԛ6ǚ-l^\RŧÀ >G&54=#zFQpb_i]@Qgԥ%ò-!`fLѰzb^`{ecctN=T3zքVP??2r) e/n; W>v_JEՌsϸ\vG%Z8Jxȫ6yCoSui ] S_*Pɮ^f})7soh&|?i/۾5*i}6@5rVyc"~uYTQ:&7F[+i1àY=*xkQ|3<{O?j7ҕ8K6uOBG,%)" Iy6a Z@Y0~?I_/LqVc& hL1_Ji$D! )Kw&Wy5W4Vwg+7y G>3YnVdY,VL0}ohnL^LpΜyL']wluO9#;s$aVo=:_oy{W _Q_ bH\ԃRBz3GT+ X!E|s/&O4I^_h#.gq?cxQ[#swWT)pC֩V Xl]B[ `y5x;Ե-qПFS^˦|ˢe隖?8d$I+FQOЪrW<sҭxh 2̄-C|:T2*,CzWg#O}OTvvJdR8YM(Q"=6C kOè^P/ݏ 5 vӤYiL~%OeSSUQ]*\C pUbaװxlżTHvaF2^^ZTmD\G &~6TusGmHUpA*+NZ1xYvܷ>#?+ [&vi7Mxѽ+!ek31_g"u52tY:>n?qG~z];A:![{qRT^_]2]a^N&麄%ݻsXr3_K |aJMQJUѵ(nmf߇ Cqz[nmff_ s|Lߌ4ۭ#YWIEE% ھG bVRjMi*u-os+ JEgƶ^`\9bC^%2|\Iw&$wt=6JOW _&5Rx}ygM”}߯Y|}Ib3v#S63ЏZ?þFB'Ҽ7j𶡣g1`1=qc8rUh:uGy3lSYQĻ>knj|%j9g !P{aot89q^*-Ks+2;k$yA~W_~σsCα$/wHvPǓ^=E6Jq}@+8X;ZI)hy: ٮUcaG?Aun!=vLtrtԹUλp7!Hc I֮MBzFf (z"ŬIAִuC SSX^#~ çiWN*砯敋K^.d.rrj~N3,X|((zcԎkOMMgRMo[ыiQӏxv4^Y 4Ǹ7Gw}+N?:pC~W|sILF;+be{=|?T$K4{rˀH!d !:NsvUa"zchch!|,̺'+;BEK hÎOoq7iwBUhɾ<ļI ?*ӥKpʳPi܅kgI߹e[;컷'»˺ t G[rPFsypөw'&>uf!uDשؼavWϿ ] m^a-.8veuV[s|/VΎ+Fb Z6rˁ(iͲ4ߏJOYBa|N]NtQO]5J*}My|C-TTUuaF ?c."SC.,tؼk+4,H tȬA{:«MV̖F'=!}xHE0KZ<R&#O5k?4>#l> l T+G /iER緼o\2k15 > YkJeZuI g5u1ؚ9gL@5tפÈzƷ DmZ> Ĭnw y)T{8M+ŗ],^đ._Wvs^_qfiiCz>?Jx]"¥$TK!vА`ǓQzV;TlwWn:TmjلsP7'4 ̣,oo 5lV9v<ըcHM&VӾ2[c*v~џuk OyVU5_o?es0=jj|J>ҞtO̸1T/{}^i q5u.;A)v~LG M(dxs_Gv 52gY,WR0m?z޴(kRdw=~zpø{:JZ3_:DI-}_×B)3Bk=kRHDl*81{5a|]i=؁]߀i5HHI`Ee+{[j&+cs qW=.N\s1k~ jv$?{JwĞfx3e^Jk%Wt4k{R$sz_>$!CUk>i:%={mZ"q_ApӇ*~ycIFkdՀrE77Z[y?1s^a\"S\$kNS 5Z<'qOSFtR0jkOSLvlw)2R(&8nP&SY<ڜ´ 9Sղ֟!^-eDHcWox `&亹;s1*_chlgnj-K@eeGrk~1icvzj 2FMg~-bTњkz͎ $lבxm*C+=}koYeY|1)%f}>1UtJAf5]IÐeXc3貨bQ$P{!N¯x# Qp?@j{,VHG3C{Y.Eg WExo⹙K ݕmt P=H-˜JTezRk7a.s7|AreѴnDQxLM.?)qnC@qx>0<[xx$[ֽ6ZEe!ss壜#jj'JSŷk1myP$fڣzst5X;u?Pn⻭f% D|_Xm"2GBqP[^OI%"|8kvN5 5%Q=#5_i xCNM¿ҽ*7ޥsx_ُ^&Qң 6HNԊRTqݤT||a7WiHEDźOC=\؊ҽ|s\,~4cE} x ,ƞ0ɷ֠Ebl$z6y;R7hXZa*b5FM__>l6V$}+Ƨ[ɚY\%\Գ+/Vcv=O``?|D8 uUQ=[y~LaA߀2#EL֩(3uAS]tIfPȶc;uic%`d(4~_%)_}8rAisIb]>~Uo2Ci0a-Kx{-.'lu#V-Q^$۵`\xxgMry4PCČ9qڬh\3~8:I@@-Ȇ$ssXGṥJcV0ZDyyg+֓R<ЄL zؓSežR\}+|whRc'@6ǂ?k˩:\Kc{*Iwg)1iݷϹꭓlVZRr~RRQWh|mYZTy#nbdP䞵8"lͷ! e[$-.wj}+&+tO 둥% #5+҃иZ- u\"T11eAWK4iP0g@޺t]&BVe [ҩ7?=] $ yPE.#PVy}R;tqO3Riq〠sTo /fM:$u5.6Wp!_;EcYˎe2sX*gs<%qW-&i,a&ƾ1mڸKSK` i:mD6\[ ?G0F1|x%)$#۳U)YJ'D)g\kņB# cL6q.hl.mH,RvNaޙ <]JߋSm3ķ.CW+2Ǻ@׌hRжcbY *ϚglEt}/>#[Tvܪk2:f;t鳮d`ncW9crNVʛ=R8^mwo_։ZfB:n1qvhq䋋=.aJKQ\U)7ZZ签^&>p TSu3\vC#bSԂ(憿sY Ӕ!ϵ>V;_*x"Y.NV`z|{ (Y!s{r=E>moju+H̊ǣnܥs/W|SӼ3}˥xHFϰG`~K|.7ig#$]D|pL\+)svamdEЁzW׋4|?⛀T&S~xMmGF688ȯ/m~wcp"j^G jgkKºg-cFnb8gG#%Lk0PZZ>ǣro xDebcWJ n^7ZxxRcyy`sܥZQXr)tFt'Iq.%+}/nsNP5j8;֡F|Ҽ[ &8q^(5.7i8 ꕟH-"[ .:ܜwv)_Cǩ_ 6xiFg +޴):\ !ֽ>u0I+>fءV~ _UnVGVQó 5sFA"3)Ҽ7.H3/YqܸkHG˷8'4RTk^u3zo\ 19z/3jx0?z!|Gw]+<$yјײxgŶ:HYK:=RVmc=Ɵn.Z02+ bFsO@Uu5 E$y1x96nxv51qfk/KC r=_%6*U>՝sxBQѢ'\d]DۂHمFU`:zbZUƣl|R湏ٷ㶥sь3c&I J|ԥ{I4}n~eSwgIjRua n3޿C~~6^?ҭ剾fkʾ)gZP'9` cREzZV _OK+gMUၛSS_6 F7klutz.Ij eLƼ^[^'kTERĕT(l.]VWՅkF'>j0T'2`k 0||JrnڢGҨf5l7+[@衯.&aG,*ԚjjbQ5ي\8poC¾%ZԤHCzkĵdz,>o>_@RRHw^I f{!vyy#QQ)!Рn,rXWm~uO _È^gndϝ `-ZuPLdT?k]so_S݆u Aj =Z ][%aY 5)-n䱗hm۔76yk|Mt#@g猨/VP|J= N/i{bT-xTrQ4Ǎ|/abe \ 5{d?ѵ-a1cċ0oάx hWvy|ն~c>3W|SstG+&{}FmIkpўU&Rw8 O!`wm Dg|"o|tgIZm=QcjZulVŀ1⽫vӂDGZɟa%C{iSvrr?ufPI*C?=ѩ5}sㄺvk] xPwt{CxHھUWc:ι^4A_8'V{?W8\2׽FZFp*RG.%=9W 99e_WV'mH.y=(R'5Kaw7GQ^#ǣ1o`N$^1]e$(99O-\R=M3e㓞ΣMSWXkT]kTXp~_"GDBLo[|,.:4ּSRy%RO$ⓖ)$9/Ϭ5ĆIUWprI[VF kbĮq).[EtD2梿E^mb}jw~WvZs}YC41I#9*ml~&o[t+n'1$bAQxN޵| =Niaj?\8NLI*:* 4ۺG?t~> O(18o1 pz ?^W-֭+H J~8LMVzYi{%a/1_/YF7M_&;uc~t,2}X>/n8HOUqB99pw5TmzPVNLfj$-f&(Gd#pVޭz.X2rN)藚6`!KOj>t+sT֪++szxWvB];nj|H,JZz#,(*&h C&~Ҿ.rk>+3sP[G-""3WZ\J8"$dP:?0^H_W<Խ',2nPޖp$O6܃Tq01Wn>M3; sڼOMNEv^+zG$gNP}Or~5n# i(TZ .u%ЖYI ȓnL~n1lN+n/Yc0u5% 9!s+e$0H5kOoy'sCm; B@|?q rXkV$fF?am#Epo:IUUs*{e+ [SNSFR6WՊYѾsV`x4_=3r*yXrN7MJ*e;դd2(zTUHQVH̬0íRnRRr¶u5a_p!Ԣ鷱%} hl6 nVOFLqձ*ՔIjޝ6-5-L:h%aozÆ@\אrzx(ӫUk/G\JɦW(i3}ɷMDc~%4~$~k05xϊaH<ڴKjwb6CTaest~pz5rnz 0"ԴY!Ҡ11Xu[\[*3x?\yBq y>;%-vx?ccJwŸEk{ۢN yt?hbha5b_dpXZ,^Kh|}N+珊:g4wo6) \Y8]í>2"H׭:!MBFyaQo6{rH{J46SAoq%i+u w+" Q6!V[u9exlv*],NegJ:'| xi#-l%k}/$QFO7V-qU-4'fJSZ{ܻ I}mAOwYn OM}{EVQq+|-G眖oCR+q#NYcǚ'! F/95|#}=^NRkz6Ӧ, 35O"OWҸv?'2F2{5F2ލ)Hf>Z"/c/} MGvq"'!e\:c/Z<3>xwsu^ЭbrWuG`W[ia=iy?g cQX‘FgdCl港NdٕO`:גx/wrs.X~ L\ϲ,GBU3I[]4 sk"{9hAl Y؛Fy7+W͑l֥8jx+@Ǔ+ҭi<+Хp+إ%RS kK*7QJ}8A^} UCi_3濉Hx@ù+PddzGiNΉƼ⽤k30C.?^ $H>l}:4ӹM$ywbc_Ӆ>35tخ,1 L+> 7l*$gaWTױCCJkYj ]SN-}DQ^_$;hF ,xԓ8=.DS-owi(hߡNW?쑸UjS[xKv235JyMfEݰT >л=k>\3H/<^6ϿJ#l=zxw&5ףhx.2'I;FyR)ޥ {dr3Z WiA+ł5vқ]NVj*vK[s1nw5e]}g5ު OWSf..1FI$oʩxTgS#' _ƸjS=MsuU5!.tHyc^m*rV\4Ө8\ʼ+_uZo<4jνvsر+TQfI\,S0&þkQd]:|(IerF2V8B•p,T\z6\"jgHUEڛl zUUϿJϹC#z֝|TA8Jnڟ#3qdB,(=h2K휟ic0zG*(#ϷZ)<="j~z׫#?jڕ)cחtQW?4Z9 >1K[Dvy;5|YۂTr[/ Y =FFqǠֳS~-|҆g$q[]: \D $ҹ[؍Ω :9=I;Zqnt>H4ԓqT젗^դL,*գ]7H2Z|YCOmָ;~KU$/*[r߻2|2Vc+F}z¸ M?Hxa}|>BZxv|AuxBE~USDUVP@I!C_RƯi$dtǷQO2bNj֓!bOB~"a<ֻ ,I 5+d˜8a].T8yK3czq]WTk k}ʺ)s4Ā:=#!LJi+2146I}S, `WX)|0I34mODW=csr߻RMkǨ]J G_O|--ZX6h1v4621Kyy.$Sqm Wv;Fs_f}s㎟oI"6`pkw<Ϙ>5.И_܊(nQEQElR캲|>jWxysHצǓ }wb=gfE~UL.Zo8:ֱJ:d* *wMe'varװ;͎=Ť,׫|>uxyt;9J[uj׌T21_q~5Y~/*]M5˝د3SR;l봧4G <222px,l.5+_ <+]Ͻ \ xkWCG<ޱt'uy+;#dϣN-QҾ6b%,0A|/j0 \]kT&g= IexVgwl׋5ԥ$o[ /#vj>0%ܧ̹.7i&cWhgS0KJ4s߃'+`CTWxOa~,m˪ ?cߜ,ס[QϚ$1xrrQuYcf@}k"Ʒ\ʤS5]B uB a+ f_Wӫ&|YD_dPyhxC#^Y¾Ҿx+AX L1Jc :Yu&$[̦];AXEyF ϭzjjV*+$I"2[]hSbyq+;5d9椵K+|P#!+̀߭uo3=N_4I0޵J !&2N^Zxl>\Y G SWҹ@;W/a_sVLBݺJc9oAS+Pxz? X>0UO V\ j$tʫ jgRp1NiKkZO;~W]L7B:T^a1A5O#Qr)zާ_Q gd pT͉[˜R}\kZM mgYA D`vȹZ:EQ@Q@Q@UO}WTYYz|V/*R~@ mYspq5ED\<`c׬m$ce򎦼ǵ85X79 9V*\(֚ߕ4z|ѠX^C_VչFx|U-ɤ;&?^_^~KNdoƮ摫?@fllpOּS-ͱ_*56֫xv0@%č1?_~.X[șF|4qTip L18/ (#lɵjMWl ̪Gjt\M8.UQT/O XOw۫ c3+h(a(NqA|8ODLM7B| 3WS&T#V@Ecm՛}ņҜ"2|SCaHd\ːw 2?x.1v@2J Z?ebjَdvWQ hQs,=Gx sӏBigg({e{*i6wlU3G֜cGp{_Bn5ʁĿsop˞kYݹ)Zm)\|T z}'HM-í·?BO5HCdd9 WxSWMǞt\}pk1]Ω;>ǺO\Y?T-_5 ZywEv"|? }*ŢXP WU:59H7QXhC.2XSj$EY9z04}n#Xiq̱B\|;QClxаrAMJ~g,,. &E$mp{Wovi̜b2vۏxø$\GNyv i~ZPi,93SF6w= V GҼL'LP |\`쎿Myu3+\TGKm Bz5nw\V$xAcr62@ +.-D~5 pvb ĜͽуޥɡF9]b> WAj<\~Z0G@AfHtSYv2J9v4hmAԎkR1ճғVfcݱQw' y< 13; W˅S^o l+rv<-Nbr$%0^2]ΥewץnizŨFlTi |>]>i6=]G `;mBFGJ)dwsĖ'YwmMhqW~9<$-bdF,7⭳&%yLyz\# D!kBr GecY蟙cD:q|TNc=?xUFYbߙ+>! ^l;86rKH2 MJEF+A2+p4oP媠ȹ[FfUdV=k7&ADqVVQ=*cq9cJ f̜Bk҅NHrōH|2'ɩaWaR r`z}+Jx29O|һ磷sQ]N Ijr-8;sBXfo#FW6WyZ'*Of}EjD-J3}KJ.9Ep^ ԍÌ˴½G Nmv=JnMK6.b_%w dnA&H.a]X)rVM1GQ|='Y4ZWm-# \4lLk]SP%C C*&~g֭>D>l+ ]}o ksn*J_2H% r1WM+2Vѡhsۋ.>ym>Ig4J!E(RǀOҤ{B 'ٛî$Qb;TZL61<'7FX^gJc`eh=J'c)|G-+1 I5k Yd>VQҾmD\Ak~x~H#q=`*\Mq9bf亞ccs*$\WUxY-“1h>.eبr_z6x7Ew%5_AXRF!U օyex1xT폠Kos, ҼRdǑ޹V©П%-J߆z+$7> 0}k73`_q/PV@r>bjldz^nu T9 My7d+5߉s\i0= sHV|ZY%ڡ2* zWvH@1|OXxk|YDl#5\bxյ'%EWM;MKu5|{ZƦ-X+:Ʊ+آiev 2g|oՍiS3j?A oz&(QXI-ǕXtFeGz=۾NU `!ԓw,ǭOrwF`Y۠=f]Z躯%Y+-|__^F =z*G~:~x~7 *`?tD:dVXwc`V Av1X@-rE}/v4@HއkR/٣:O.hf=n~cϜ ׎|ZOsvT2S88Zr,Yd11oݱ9Xv `4UzE?Y+; C$W躊BmӺG~85[BiO,rzfٜĮ"KLV<㷇mq[ )}KdG+ ($I[vgOr)`⇇#?cՍ ȼw6kK Lf?®?ƽ|_vK^Eu+tkaaxnkD>\>j<<@$F++3xrv Cs\oCzp5ivl~Z'|Yi{_p=b2atFH,x.^GA`a/{I75n3U8;uFӻ/b3CT5% 9EhIcV}t'Q(p9=K!$$}bI_$w}!>H䲮EsC*kqY4]36AUrZ;T}qڸy7T6 [q8t mpb nRv5W-Og?ޮ~D2=qWgsmޕSά<\# :nPcۧU7 /.,Vͻ2B7{r\GP#%WW):d=ɜ 8^7ʹr}v6PH.z+؋\O/gM~847!Sq]ô[nG G' -mFg% 5Xv1ʯӹWxMDl-QrE?I+{[=<#MrG&(7|̊eBӭewy$D}8J4PmT4VI=&n ~]~?#m6]x[NROm$b]`4,QOV#-ྐA?JƹYdcs-߉xYm/J3dgL)+ے9e-<>$8D^(9So_Lf[[6sƤUju qhܭs퇆`^[^i$0F&uO +p|ԩ(Ue&p- +^ի}:3La WCQu 7N<LW$ ڶ2j'%,<#ȴ%D|˝jL"r+2KYMRե5usGƯ%j{xҝ}!X rſDA61KQ"կEwnCVmSM7Jȹmk)Gʹ} %҈[F<ǟo[x09Sc~$Z]>źVj&uw_ũ]BَE>j,`9n_M,YY:5 oZ?1Iv^ |qT|G]]9q] ʦcέc?=t{,ܚFXJ#<爛ط^k|QKD9_f ,.<P{JwCs8+Qg%re5>1{c\ט'ŹVVs׮jj{(Vm UeGC>cQ}kE-]y>:7} v샍r+~*x>|_3PSᔥJx0Ȓ8b9w wCvyPk Ҭa՟}\x_}DV-tQ^Sڒ)-JxhƧ2+VXh-~=VoQVt:WGa=>lU`WUaM?49b3]쭔[ xy2I\{:0I(hяy>-<$.-ov6~]xեYE / @kj >+èGA^|n[#/ #?f׆[rȊ܆a^q03{˦))j}miv5_ )). F"d(O_P6Aw@tS8a{1bO_BI4yx&:tI]3f޻Y_B+g u]C:,ET~I ̇ݚe݋7"~OpsS螩>ۧ嶕/LUsgND:~zϛ:FK}Rp͊ n .XIKI .qkJV/>cy$Iy;qÏ +xAk1$!Ljr@~ta׼'pI8ejxzB{;M|)|,m=rZ(x<贤ۍzW9 KE3].皜V5耈z(ǻyJS= wT*d5/Jgc1*Z\ZO#Jz.Pϥl\B\gdJ޵dytRNX+yyToߒ:{sU/~xrkZg3''#\Υ-uG2ck_.n;-slܒ՝qZB8Q{VT tⱮFBSEYw$RYk$ޔ'F޳U>Y^ Ci^+u^=ӾmexG$_Zskq,jیE_G>z*99w|%ʻ"Ѵ?1E+VonrX|ƪW0Th|vT>)iY~EFZ0kOmܑ_LYw5tk5KݜLʲcѷS~ &m`<]p*?J?<;2reҏ5J#= ɦW/F|}xiYT5>[9l)jS-՜R_ϙt.RO΄՝p#Hd?!-^i8enZnи?ңyF${ҢϢbwqVwFx1_Kjz_:FW? -ljO?+RwS endstream endobj 35 0 obj 81755 endobj 24 0 obj << /Length 25 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /Interpolate true /ColorSpace 7 0 R /Intent /Perceptual /SMask 38 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x흅w[Wگ_w5&ff;I̴)M$MF;f&Y23333l&NlYe[Nwy$Xofϳf}sSWc$B( 餗ʓO{7^?EJ; !r!! VU[=J?mG4<CF.;OF'~2\mzSW:>*Y ѐQagίM?Ӫp3( anM5=T H|q]f!! 2 1myg(x 4Ol{ӝcC7U k٤ uϚ?=cysO=35 ys dM ! 2"&","2R#8#>;mRW}9>hHȈHȋHȎ 8eKcNL"n;3};?}E61 v)AvA/mo̞̜OKOlr YɁgUIIbB dDL$EXEdFpdG|"(V:k}a@zth풂ClBrQGUHK'68),I/O? ̓H%RI$EXEPGv LFߌIQi\ˈa8wF޶<B2Cl[{bGiu{zⱉ~%L(-~r 3[R&!#b")"/"#uc#>@`ԦaͲ +ׇ6>5!3&'򅢊}Ipdޘޘ>aJb Ğ5_TI%"#b") yOU@v Hbc,>,_2{3g(eTs)͉~HgohOhOS'#zENEXd_Tdb\ԽȎ 8%@8iKx ;h@IEx nV]nԦ⪃'cG#Iũ^,|W1>5r/jDB@HȋHȎ DcP@ 0 dKXaAsB27H̵O!0Ǣm=ÝБnhTl$6?lw5ca*[;^ቦ\b","2R#xlAp4@8Z?myc^6v<y ¼/;eC]AA#A=Naz֤ObAqvFIIUEdF!!l h&` p"(5; iX=b< ϐ;*l Sߩn lFU0v OOv W4dx%zb𒓼El-JLq0+2#; h&` p"(:K)-s(U&!.M搭ϏXV=ի{{cƆ;|fgdMuxUx6Bd 𒓼ExM93*a;j#; h&`It(KR#oWvALyZfpۢgZyz$o@rmF149 hVdt̙&~_ Os w(z_G{oKo.N =jw)Kkh|Ç񒓼O2Zge LD_ZY3q[A΂2OjOkU)Y O]zl:|k9rXvdس&55czzZ C"Ajj*d͆#9֏J@`'uUJf1?m+G[o}[ZfN\ !cɅ|Lɰ5 e/ p,'`n#<Ă`r}1/ʩ$vCE>iࣖZ׬|ZysmV䅉hP:x ? V^r4s9 ǀ X D*b-cFZ bgG9n(O6Æ>leZ-?6_~U;Fl`pwI{k ǀ X S47V |*Zt*摝kym{m.j}+7 >jzKrf&R}oF~3P@ 0 ds|g{ybrC,Y$1X皬wi~1ݦia֦5tzar*w8I"-A&g.&C%5^4@&d+ Vk7W<7VQV}_jn_ZS Woh{oSEG+y[_tL1Y7v-/v8 XW+-=dbP.*믒ok5ogِ̿4MKh_ۚ= i4dEi%+2,Hoi!_U)w̋P<7ߨOqi/7T4O^ט|xa$'_y :b0^L-uҙLg~oKɯ֥ZjڴZߔ~kӹ&mXy|Ɋ 6 5_|H_ׁ?'PRmukR>n>?u>٩.e<'Fϫk-'>m;^@`RQl/'5oL|&ڔR_S75nlL: _lH8E$huGsN8rn YñGZGd8<:T"7&4gcG)p|[hLr긘WLp91Y,nce¦j_ySemO+;uNgq65dEOۧ/Ee^I75B2dvl$@5, 8Ԉ,#B~\yA 0K/8Ib |lcSƺ?M .6#Crq+"dKtW O#Fh.nafTB]}b5FgܐXt$#17dHdN<ʇH7@ CPF)%d' @dA$"Ǣ*.1,[ A2p e+7$PJ74"~A;#C|eq)ɹ9%u咕qW BaA <=xzwvhNv/t ѡ>孺iiɞ8[n>o'1󥹞uSު ">^#F]8/Bp#qx$L)2e#EJv 'HJrjDd@`> R]muN /ʿOɳ2Z:&L~MXcwr|szzjj c %Ei) 9V̘Ki-]m] 7̛c[s/ֲZwH%sdKAARVu-@qh%=PܔB!"4$LeR7o" !r!)Cs0?nnkd! w,r*P:G&B6'nٝ̾+W<3I}LGO{y]ijnrxdx,hGdا.JPb(qtlE-Gӗn-κZW7Ց8󶛗sQ}#1ɲRmuB7cJIޝ=#::Jc}S ,|@%@ |)/S/_ a`UVoMmW a$vյ{ׯ_V]_KS낭[bxL訒H3Ū 9EPPvQVc[=-7to~Urh:z>˗ţ%JNM KGbΆU xS@h wiK:ap*:fO]wWq~mtqX= p!#&sMMi utUdtGQݱ%A irR[wu&~G%6v9rkEo(X&qr6֦ƯڝFtS<]wTхtmکϯ@#Rxo88$+˻}KơKRr2YY>"!"Q)u Y~LjvT_72&l\Nm h&` p"| V"_Z޻B5>Udsƚ3k*OGNة Woܻܽ{wR#3Cx3?6Ѿ!axNI.tfCHXKb.B.' ~:Vrqp*Ω&^ `i%rNo/2&_C}ƾGB,flfHKS4D8`Y9tE86AYue}]8Xh( s>ƒ:[F&/8=R*@Cy#-'%O%*xjѫwU-ĩ9)\K7>p p'jaB85}5!8kzjDFuW8X 0 dA P$lZV|~O5N|&v&~Eo`P٩STjC_m]-ɂA#f(r2h{,8d$><. pgp ?q'qUܰL WjO5^ ]m'K0UK; ]1 C ^!YaŌc6Ѕ7m+Z"UO߽؛^uM.ͤPPmUi^k[ƚ#n sD]řa2yp߲0xΓ$[fQhc*qp{OXit*\zEXxO9%ٜkZ󡠜O[bl$DZV[+)Dk36ߍY48K8/FryyJњ&hMm]X9\hCիWjzNr٦X m)QjuFǓG&2?hB@3$N| N19lr"*&_)"KJWs,kn:UjuŚꄯuP[TT z0qpɩnyهF&AAG$>2%mBDC8'@@`> `ip[M"i͌ȏ},SRޫl}^C1}nʻSᕞ,%\[h8 }|ձxH/",,}jt:[Q _ZնT'#DmUih{5acuQE從0 D|%~(tE%v?Bm^0*AڣK UѶmmp 35& \2ވ\9h$Mn,(X݀_>d,If)> #ʘdjT0+-M-Br>/%Ւ[µ",/̴sXW_)*u&1I& ((BWHl[Mء˸*ie (= ,|%@ _/ *-ZUꀮ셋+ˢ'Gn*arRwNH]rj]FsbCZ `ݮR|%g-K^ a*ONz;TFVԝrFt881U'کBaZeWqKNF/)3')4ơR'\"1Oʋ/W#NǪD?6:ht\nc f0jp,Eyx&LqRI&FF)Ip,@8+pw7[H|C ]5$Ohr.ti/wqa|wB䆒h[GhS8˸hElsG_7\LHr#iďYKMA ">Of(&m%!w%0i+]잢Dr<?  X MƀiT.BC]Z,Bq kVx@P#ɺKߵ[*KQPS$#qmT.PQhbZ|оpZ>ئ K8]G܄2if-|wYx['ۦe!R {pfU,̴8ÆZӎ10awp('3FSmJ?vjlƦc^(1|tOj ڋǫ쳔!ABepr!b.OpΟEp pWEg^[ޗ6I(^ =3 sJI d>-=J [EؕɆղ0OAFu([gqz\G5r (e ) 5EՅ I _ `ݦk*(>sEj8}uF>4h&΂FoM)F+J.=9g[ѡҘJHjx{D/E/[.߭9Khr+h^kk1V?7?j&;aikh#D˾'8_KsPoڮ.LەL\T 3/Rw5y/L߹980JKo^aY(4Ug:z@==+{GyDPv3?b&s1N ],BX|/fvbn~Wu{K+cID⎢Jf^jIaF?quͬBMD۹GAGٕMo-o;]5#c.U? ,|@%@*=-. 8%96@ZVU47%+^|<ɃG&O'O_yaһ'NLxJfɗL뷧jқNFPe$ǥ~"N6 *|m;*cT|lbI 8fS- *!.^'/Isϵt5WUUuߜW9+Y{i_T+3/ϥ~HA__@UU53Ν:7ʟ4w6Dž|OJQ/I+ `a'_>'ߣ_0mI}]7u)5ds7n^onCu>1|`օ z>=|pnr"fbQ?W)JZ*7{RSUF -zGw5q6Av!2C*Ui|ٞtS_H5Vy-C'NI*\td]j^nu-- o ̦H8?C1'V512o?8Uq~nA   `Cñ'~  X `˷,v8ff*^"ڵ[d>=5Hď*dfrCR[alqKmjqyG#P/MN?|<f2Î^%p69y-L_FGLC\#-b"We̢Dr9f =S憚}TKY;n>BQ¦1)t$CwKQ.M&YuR*)i϶B X Ju?=d<:-p/=pj5 䄻Ŗ={FDńw sx>3(Ș[+n^|>&3?WXJ)Zqyrx:Y-щ %S9T2:#LJkcef3ǖ 4J/A _E1p#jKj ~,ȈyyhB,3?: A֮X7SìN4_P[Ys rykWiLOCI.id8?\tV3`^q{#; \-@[İghɖSOj} HZdOFl* 6R[PlE3bIK+s[P I7ŗ_G%,֒x˲d_G˹phdLwʝJrpU|ĦbQy: O>uΖ8PL.|g@ 0 dA)_4Z2_aes#\Jۗ1p, 63KXY^qnWO"!#{i69!-P\$P rE o|*K<@qY_5P4G=OpTdU'drWtFv]2 >nfek`lj'++||,b-P"߫)~s/S 2ᙻ|A~Z|WբlRW\p@MU1/9[$k!1,ݣG.u[ Ԇ-ҚÉyat0y42(Xw=>_7Jf6'x@Xf]jۼ ':BCm[yRDum8""GX_ˈpt&Q"*N YC!|m?!JF0+d;7|eW!:߃&_cש9wUx$8g1J|K[o2#Y+ˑ~! 6  R@霟EשHP+_b|AIU~Olcf WO 1eA;jVafFZfpm_G87#F+?8p_s 5T?T-}e5%u_NAG+bZN)7 !JsV #+DPU=|-C_Iw10o pdo 5m,/y:ip,h\NA9)t~y-bL#NRXz9&'b|Aym|DIQ3 hluϊ,:?:/HF]k _!PbzUz1Z}N3WΐKD#BW$21d=H\k=\A 18bي#Jڦ_ƁGM'̣<,-]hlD#+xғ|*,'"gE٪g'}Rq̼MԷ iϝHDK_8ȄTr@AG*Vp@$-98g' MW&2>@`WIA Pw煾7rR@_R#:+HyIIv%FM޸u9˔1|:ŎIFb.Bٗ)dBV)(&ب7J. h̄PB4!J4хwwqSyEeu `qf6yAfy;s.҃>e-YiNEc+*+k{]PZ* 69>\F/_8N3c'Ume6 MF-ېW=9SW#GFmhn]|>&2g7XO R.M,kS~(7n/G+Zdod[[ C7-'LLH8@א2շ4WjmTZq"Nfe|Ud @,uyIdز8 h %=UL.p4#pGRhL# 21+ X Jb:7XT*ttD%%1-: y,irAz4W|߉HWކ~2k$a <,XBJf+ZB*liк9~q(XOѽΨƤBY**sAYged<}aLԽ/Sgc!"4T.!]1Am838@8iq???S1f1 ɾViVY*)| V",o,n^ вcfߤy >zJ}vkS%bKZ޼1BF  Z7+{>&龦YYv@5#:L4^L-=Ҟy/vXw6r5cmB:||!塟B!GR^rP,0S?C/0^F᚟ݞyMf65Kofs W."(tɇ48OB8EhHK"""/Ly܈ؼ+>\V5=`|g\IcZdY taz5˦oO ~mt$KzΗlɜ"B#@Jf5fs|sQQiYyeeO֤*&|\>}uހgSe&ynI2sGn]M6c+qX*X J~n>|i B6BʪHe$ʪ/ْx{[G}nuG6ot$i XC,},S}ҹO֦JQoW9vZGGGg98OK42![2 ~-ٹJO5_FJjawdr0D SH'H%)dNO9߽GX"4#.q^RGa9Ձ//?o^S}Ye[Sw?.#58@by<F՟~׻2gxXvDUNQz[XZY2N tȚh}7'lsH@2Vy4*/T%Ů] A k> `Η磻~r_YΌڦ18i(&5.o-/pY  nҿYMY^o3P8)gF}C4K\x՚:8_ן{Y7 K,!űeEхM5OMz41eO1K<65M3pa\2$۵5@κ8q>O=m]^{ 5 >iIr͉Jj+$ߜ£dJ^R]JMC 4*//4Ik:_8h> `f4r "2v`ĤW,ǃud|(#5otD5<6K&I$5hZ3uq|Am |~"P(gxY$y[>=MR|mGk|zZ^a_1A䭅w,Y \Lraqa`]X|Iw%i$=]_is]Pty!/m io^MNjM\txeL #0^C?3Xw>s/K leO _/ he75gf%WɄ"`W_ `lYw|r 鈱r :<"ۂ6T*=@|J=mV<#-.r/J"\N ~A P~] Hd03>b~4UB7?=|-R |SG{ׅ2ؤ `U7)Bg2}X~4,<^2ç"|Odu{HkK2s >JKYlkc) +Cv#gR>lwFGp4z#Xe=E=L\*<;.;hІd$撧 YI_]I5+@;*Sn;A-hchfK Hik)YnF [/}"$p3L +x LIReYe}gL4Wr$Ujw3 :$DzY3|&Ɖ.U6X6޻uol2e$p3~2gœ3{X qVaU&Qz1Jkx(I XFXf#4OsO1<4Mr~kKIʷ=i rN D}*1MA@`hAª:w޺=&6+':DU?-(˺8Zl^6)S%> i #9@8 03Z߯;`-I L"]Lc$ R_kL$wDi|ڢ9D LҚAՀθiz IsLG+ᒻ SQ~QTKpE͝VLaš~br+k{*,&t™'3|!E*3WK,j. !M83,|>l-PLgghrr͵ۿBԿ"*2[Y *y;ǚ~f/w):ZR+-6e1c)\je[-X{Hs Uğ<JP!>!-*[f0 d_?_GKW6mK2fQTEwAԩYeOγkg3BiY8oe^wTU9+1Ig}%&t| ĒN?V@%t U[8FpdG|>!4{>}O{gFL&Q"KMz pC&P}%Q_ @ 0=1Xab}ALУfB !JʴeeE^Xlyf)0댆HJHȎ e 'R-#&=ϟ}!:?}0?K9ZlfUӭb SE?ꃼ@ U1fF;d$Sf9iQ@%r!)"Tg) ?uv=^}XksLX<$@9 8FS?!r!! 2"&","2R#83Cw޺[mpG#221amk,nĤAljH0ejȈ'"2R#ob[eF{dok=d{ p~x},ROUUꆀȈH`U/5ƣa[׻ z;p-_i~W \%8@=OB.DL׻"#b*U}2ۘ-X0ͧwU7B1)5\lZ endstream endobj 25 0 obj 19325 endobj 13 0 obj << /Length 14 0 R /Type /XObject /Subtype /Image /Width 256 /Height 61 /Interpolate true /ColorSpace 40 0 R /Intent /Perceptual /SMask 41 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xYeŎ/=IOIҷEߋNP@1S` 2?_uvCqZB/v G}؟v -[`nv -[`nv -[`n/ ;wcW_}+d!drן9sgsAJ?\|~r}Q+NhjJt9[駟EC\σgþ _~_|=< 99[o>h-=G_|n:5\cW7~N8~"T1Gq;/ag}[bh}W<eN_;n6zq8SO=ŖQ)[ҧCXIÁ+6G՘iFwlԛ^k$T~m]愯<򈊵{V Hk[ s;+gpYء=|I|dc.s pQ2t&@+dnS(>TasHA&y^}Uz'* x2ku?Zc76) /^L-n2y=M0ف0 |Wv -*ϴm|JOʍd%ٴ8lwgOBO>Bcg}6Z o]-p[o}ක:{r'mfZ=Om`77;iA>EgJCMGvXc#` :6LJ8AS7׿ll<)ehaW\b!l#_e\nO50 AUTm2Wp?ÜU ~ cϕ,3Jf`8???()j8`C—~U$NH`X`w,P= 8#’"0\{:h#1B֤'Ϟ=mĻp#2Tv^SrӒtvaTgg V^pts+ֳ0+rB*G몂6`)[M > P5}0{}4 C4GD>SsY#P8h`Db^<ၘhx2 N >T)qD|[;y`Kl֨"X)WNh|_EQjhz1hwѿ#+0ln7H)&:s NhL`mAm0\9kA(>8WuI# `/q>'I]tPBV$00U qE9N73Ua[&(Ĩ C"P*v#O(8 h4@L",kD&$!1:D PJ'ެ"q\83E&AN4ImH mOFDCF$P]씿 p <|AS[z' 8 GїN^~|@ 㢚hrrIKq"J&4T~+j-1; !vqFB8Tb`ɖr>$d<^];&W!&o)4VmUf\|Db25NVǀca;{Ml7sI6-YK ɵͩل*ϔ\ RYWОV65JsD<[ VDw !>D9s91dJkL#RjRG3[ u̹i,g 2sgհ(P 54p2 ;PdBV02H#1%e(H,i }?xj @ą)SƑ,sYp¯oyE)C1JN }Ɩ%H'^ 2Eټ2ˎ`θkcB-_W m9jJz% lj"g=Nbm c[bmԻWԛ"[qYkȄtĶGd6i,J&-$#M,g+cjA,B}sGqnQ&!4"1Aiр̉MD0X!tbR!IS]iF%B"S(Lb 1gi%>r ?}MMGk- Q~Ҍbdp ^4ɍ؛Rkk fYIkhB:[F2gü\*fBhN{^/+ NM+[l11lC mڍ"r.kJKfl=ћJsm g!*Opܶ g(KcJۢT)ʊ$Ke ^b%P)fUx[Ì̒Y\Nvw}qJ%fXrl:7m|QsY gGAmWb9fq?ܨoLI~ehM+jDV[EyjJ,Yc׮'V^ n!1xIy%ƇA$FlO&RE8)WM-r0'}5єRV Q^IGqw㦐ZVdm4Ұ|#^9`MPL4iAVBݒ2~圢M=$ctfT '%yvp䚶<9UX wjbV_#?i.ՊԶSM =Mfm]ITacc@W6<>Tj=ۄ=hmčCF!b`g*X (jlW ~l^ <0nF KU]2VsFOX*'&mzj˼Drsd me^S&"BEܪՔ pF^LovJ#nork TM k̥qV䆲ɐl?*z5&m'~޴5-Zo2U+e,Uc'>5 mX u话WW,GJg8J {.-)Fu%{ 4KO<;%Lrr| 8 ᗍu# Yb0+2fٴJLQ{F\aɿ1zt ĕ_>H/z]yͤa۩qː}sf}t1GͷL#:Hc"IjZE4JE G敡0=8LLҜ!$ }ZEWYh8XdCObiUQJ]T+9?BNP BkQCFԮn8o6G/HL]uxhyRh'BoUH^XUDFcg%Yj߉$y)P9/V%NϏ(D"z} ")@٧P(k[ic 8?ckM" Ƥ!k=_9!!!~q;tN2JrŜX'FF{^9*=liP(-kMTPtp:)bĘe4e:LЍ7;nNUYi& թ<-&"akP0g )6}_hOMpF*U<3Q`ȩ%DƳCӈrH[IVSȖjVٚ,#/1$~ F%iohOkRƇW*eN"UcEi!prg M'rR5\03bbЁ 1*Lb64)|H^\WTyqs:vFT-X5; 3 2F(H+Q_۱!*J%BgmZ*}ŭ#]mĀn6nފF yQ8wa! LW[5C^W'>jrۨ?03[Gپi)r`n+1q|`qzJ2cB4OYJIrT9הKVFkŰ3Y PF\ѳgQ,q!7E[L"ڲ:0K 2!p1V2"<-gc!i%16d$SD~ kL+s/g `)u] b47OZwA%_D2$E 1wT,,FgYl{1SH̥H*Jwg/K8R $S;  PǹxWK@``$9N  xF p2b: CB!ʈ= |{p6h/ 'M=<.j-[`nv -[`nv -[`nv s,2 endstream endobj 14 0 obj 6105 endobj 11 0 obj << /Length 12 0 R /Type /XObject /Subtype /Image /Width 207 /Height 144 /Interpolate true /ColorSpace 7 0 R /Intent /Perceptual /SMask 43 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x]YpyvUJ򐇼18eَdeٖLKe[mQ⁽]"uaܝk @[-:EI$@޻eII;+JU{`f4ꫩFoOwwŋ1` 0c1` 0c1` 0c1` 0c1` 0c1` 0c1` 0c1` 0c1` 0ƀ|B# E^ #LdL*:K,G atp6̗b+ΰl_(  anwc'BAKs#M(Yl= b:UDEXѿ_ޱlxt)֩T yݤf[[*7/_TbcU]I𮣡ݯh#_߫]ɌO()O}96~VKxmV+F3g#(jUnb%o_ۯ[O_ssƕ}@.6K2RQFmvy-ڥt KaFUb}p#BQ^J@P>Ivd<|P@N>>:Kkcԉͻ׿G{`:*HkxdZر;ܛ<7MmMdDi-̰Gȷ: f\]7 NoW-p)lɓ_·OŋݗsR!Lxp:\>g<@Hnߌລb8+b=_b~>_bɜ{m9bgKch-h*mܚAĆ7˃Ӹ^*(}V*خ*}C')6's |;I:L|ځ mj % j%،K>[|T`$6͚Ўn kO*M2`M29'5N_s?|j{2׶ƿQi@LS!䝚QEdm 5>2@5N r`ڟ,]}_\&U lI\6bãv%O:4s~lO/˾x%UܢZ6?.'a2(0?^JR/Wq Ugj֙#9*t@02wC¼G,\(uIsi)+.i#೴L`&EňXF~im O^isC'3C$ ܉˪F\4@- cVrbapg- Xpf2sIUGj`eeWl+2Ҡ7b*]¢Cœ=7EP_|2;x{?pC)T_Bh_zn`ѓLl_ZFtj˦PthЩ+Et`K0f{[7I}Lʨj9ldLnJTbxUnoAɊjN n)j&;Up ^=Jzrx0{"wMFӱBl t䣃yF1v[vuQLHѡسQf|5'jW4peҸ+S;,7=QG7"Q0CTJfZ$UnɄ§(FJ$ْc% eԥk:W1舍u+jtID4y/,|w>{ .͝CM..zZPwB_12>[Ahl`|>8Zl$d̕4x*x7:.P;17%9zt[:ë/JikzI̓TPC:OGU8KpA^wP簉W7J.LѫrltӡzWkJMϡ%62n 9V 2Peƻ36tjA!+{ &B-lưj\3+kUp)JC'zJ"&5)z̈jf&*C1T^P0= d͂U4^iRLD"0k(qV] 1'T r,V]O,B-*"z\0C(>nbR (/ P&uk:LF:8 9 ~b%{`j !smzܚqE&g%Hl-lmZ Ԣ'$E2~]t cBz3!^Ǘdr_ZRp d@͡) _#Xp8LW1yPtry B_K5b}m lk(X%VN-AiƈOm b%wT{c: yIk7\?u@+ pP+;8M$C†ؠXNj-7 Ok- cntqCFNZtS4Ba=V]Ǯ}ܷ^U7EN\_o6vf<^UhZC-5Luz$܌`o9 M36nB8`g>._.^;'QHZ8M;'x[cg$q?”w,m*,l=P6R<ІJHSb ua+iM]izjJSy:09/~LC/P?¨ DQ3j'wsUV<TDl**.}XM5u驧+M9i-mOrlwΗ~4Z j"5WZ׃dbq!' : +Gy5R;17<-J-q+Y"N uA!i4a.1 {388!|5wahgp COBj kٮT1E 7! @lwے TlVЉj1Llb깃dwwg_M'O|j^w>@ĖPj6'5 4̈́,{·!r yCudJlRk,ڙ|FUlYzMA,&@W%,i,߿o|^c d՝khI}#NDlꧫoEx+e =mF{䖫Ȉ_Gl?:f*۹yMl< /~!}9uIo#+Mzr9^ [V2`FHf&~;44=5r8i8Am2GyR5H]u5#$L HM1_*<ꤏws WbC|kRa.q 66)9h3(}x &&"rNXZFc Vc!Utc.(k&q+LtH1Ϡs%+ #Q`Lwq18C'u53* AڽzђC)=9ARpz! كZ('P cgxYLR%ri<D&ND%'"Bd[( gL!fq,"0X@-*Z9]D !o2frȀŢ$?X)X_?o&ȥupM`V̲on& 焐rgHY:1>2BLqΞ&Y,&ZCF/dԃbK8:@*l4U#Y|XMާVǔvMHf'b҅L2BwuYpvRnh0S(|bM:gsCLLȓM|-Iv&0߽;ۛSG ?~Go>7>3z,|] *X7G V#QLz-x=YPvRdJ6茄DĆ%+ Ԝ@6*hZ!DΞ|敖ZU&6qc='t)-mAhW"G;;8Fqc[綦 [Gjlšmdj:=(R- =QqmuËono9<Ef5*Q6,02uLltFh]ׄa>l jĆvb]"cêw$94=8S2qR-d#)YOd J1tc!a"٭g,^l*rO?/L N)ڙVQ)frSj>E%$iuubWwG֘*66qLP%kO4cp^AQn)3<*7Kl tws|Ǯpޛ"ʑ=G/ؼäahNe&+|LTU*64<ffFkvJpb$[:Ig7-@!~ 𽻆ߑet B-6ZCޤfkX4͉4cHu2.6訇WUMLStJN_CX:AL%w`;/ἅV v9|76ͣkUlP(S'6ҙA¹WM;iu5u6_ [ f=O $z6zwɺb3'32oleʹ4Y+zZ4@rӄn!H<>%^iјm dPSVTl8AɌlfNlI:!zUL >R&MT_Y TnP(xI Y#-f`/(1|[tGda7S2nb.,ԻU_m yCgFpȻSDZЕ_9Xvӑ7'3~pE=h5_. W"Z/e"GlX! s ~ }yX GONgݏQ;#8D$N9L+UrT\)8%UEjF ՘(VF+Ÿ%:b`=Q iCkЪ̯VJk8b#y8욲8 >\[1励)Z]ƘyfTq4z5hr^Gj׿n4C|;]Ԃ {3G>Р5Lc@F]Ѱv;j["vc"N,F RvX>PlĆ}*f>\Oˀz[w.`FW 0alnNa?B`.c&cK[CU pϟ̢ {X5FɢNCm7Yp3P`gn"7bb& b4b2DV,bU>da+m18"e pdۚ[0]sDYQ_76ѽĆU`L66Z$ bö*v /w?|{L]bQPW쭆q$HlVKhảޱ) d)WbA뺱 eF(æ޺*wS*Lµ?=Ѐod `^6])?8k@Տ/ҖW7428Z8}6hg&ҵ?;#o(_2FKPaS+L"dvꫪmՃt"Kh-:K7>V KT0QdֶI]٦ț,Egwc{2 w#ߞ&rLw_;x^ޏmqw$0ltV,G > stream xyUǿV}RiJ(RH,ٲ~-)J (EHHQBK(Խw;sg>sY?O TtтG33HQ_ɉ0nܸxz۶m["}yfΜyԮ]N:j:C222|[%R;^oz^lYRBiȪw, z&]ʯV*)s^'YGwx(7k aG?w)~u%xhnsJe[oU9|w}'PJy#F%`F7(E.Y.-XM <6m:\s{Mj~B%.i٧lIDnؐ3@fe`o?'pBfOa9U#V] ?T05#Ը/?_|+x8ٹsL5rV,Z'kVEMjK>`t_+3i$5k֯_6nxƌIM ?y.R=|LN?t =z\tEG _#,]:Mϒ|X.^vVZzCϾ}zi!=k,{APOx~WC.06gx@hѢ-ZXb3Θ?CUI?3_["[5M:y[ѕ O-`6_}V=ӬY^zɎ-|~g\nQ8㇋/Vrɤ͐|~&fXy g]cڕ;ld̑K,L0B'jݦ}mٶڵ3f !bOBxeG qճP:tׯߨQH:た^{2ƅyg&"(Ҽys)1Bߓ |ɵ^ˬǍ7zGydvavB-IȆMY}jSSS=jڴi(B04h,rrrYUV3Hڒ̊Z{gQ)W93jsXF ʕ+*x%B_ލO>;y /p޼ywuJv6joJ %Ppd?jtؑq5<G{Of/OozztiġڿЄXzrbO8QGYx(V _~s1Yge7~v*^GK6gTK|ٺGa;WU6-.{5\#8x.ڵkUR+*\'-3wljШQ#g[ucu5ϭW̌I&$ H 4L#Tz$K?d]N) k7r 2]K 15[mٮ)s=|:op'//kA> 69TWO:?ʉ߲eKsaɓRw iǏ @,\ 9k| mb,#nж`~8W*HyH,:᪂*Lv(61_[nJ@K 뮓lfy;x ТxywJOVPv衇*9F[!ygԩwy'lz9%?#YNm<}P•խ[W2v؁3G}$eB{'xaYG5Q-[򯺅+nJw>`TVq|IY܋>[. /lٲK. NlB+'~.CHɡ4R 6#dRqx챿j̏>ƉB A $.~,+|Q9T~Mf>jC-(ݸ՗p18A;K#o߾r0^8e.0\K s#7~x nSRrme<~?ݹnxFaOFY(([6oެ[ N:~pC{9~r> `mX8q:t@ bu ~P(9wP] {dn\lVHF#KwJ^'Qqa`T9>dR)fY WJ NLs=W:l;w4H8)2/n` Hҷ㉬0Դ* ~֭[w#NN5ҪU+0|p. $D%.$'6WkD"R%\bb\u_1v 0rփ>4R2h%5 $\C J$;w k2\9g^sv$a^ E&ntʔ)X’SNRDbdwJ㎓fKP\#4) GT"-w^J%T_*kHN#ERLzWMaɧ7t ?uX~I̤&0^N:ȺD1Z6^SJk. gaTzCkH!н{I1FE8qO׈s H].>J€ͼNPkk@d'j9Q[:;n A)![So!T09q d?(Yfk&+oe'SH#(v NpC ےƫ1Zu cQ$;\9(;e.?A A?ͻv]U˩үeso^6hٮWd_F? 5\мUyvslРԯ` `̨uC9ۙ%J+7ΛSNs=Vb*&դC hH0A1jkl4;!Ӹ#fpdOyL &Lu`H(̶Gv* 6^ ׫vG>Zl~&P!R?,:Mv͓bީvO,$w݊MFx"^=XެM_Vü+o 3X5V}(U)Hp9}P !m$YI7er<;`YIjJH Ӹ#7pңQOEU[xzL_>X1%ҫ݂7 ߓh-[x3+pG$,KNX~8 *d4{eQ߉L@ `(fsQe2?[j%82M(\-9*i t~Jɑeofe|9ݨC(ubue*W$U7ذ{Ur0E⺘!E~SBVX!9{4oWijÉna6):E[) 02;|[Ht+oڛR;X+ M;V4g//7?PntvYfWn IS#י$5q?)P8Ŀ3]p┃plrK/UWٛKW-~6ɻ|w٘>ON%FwџHlpY-հyNlcߒ}Wv/@'B2VNz~~Q3kd|L!rTHV^ KKM%Sy>% B[r};yU,Z<~U4oQqbh bd|9Ѭ)))/\nM)8M}uVJ B澳yPV1&UQ])sN%LDCZ6G#AKg]OG@J#J J+|r>_!#_+=甡%;}_{^pCʁTygY:D5Q@S<۫ZInt3ɼVJ~U*r[BYEKiy_) MҁP9ՠ(ع95MP"^:00b9+"3)H9B#Fkӻq\g$%D~>/&g*@+.y4#*$:%N(+/*:Bըbʗl\-"ClJ9Tŵlh |Zoݼٵr ?2P( H8?xK_vE{o6yVΚ-.&&f([AK6} '((V g~WCrCi+{74Qq?f7Ii Xxʶ$1s/\l׉/,?$DUoĂ3|!%уA]"O$9s'x\1SBA\g-CHMf6K[Nzrp"+?AD~uתxp,!$v76+ҕBc4%m-~~I7w.J6nawG>]oy.F-Hxw}by? pBm!%=(|gF9"i|J=D*iTe9- y;bbuG>B /.1D%+' S T(c7O?eȱ*)/ukd۶m۷Sa(**?M*6$RPPj8=ȆPDc)~,WԄ~ JɎ2wPlH_7/lؘ8Fʖa10Sp P5F$g-aUVjVd endstream endobj 18 0 obj 6031 endobj 15 0 obj << /Length 16 0 R /Type /XObject /Subtype /Image /Width 202 /Height 60 /Interpolate true /ColorSpace 7 0 R /Intent /Perceptual /SMask 47 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x}xTU?U!NˤgJ +6,EEV]EQPJ !@ NS3Lzo 3w& χ3}s=w{=7SL~&%0)I LJ`Ri D;xu`#=j[ti{mwOw{&s7=$)f13gzqāu3 +8qZ0pa^_ FYw;ݝ<|Uqmd7% 8ĉćޛtcOzqM+x7MW[RuG>b랲ƟSտ1MחN[}~<_~d;#)>LFU_ڲ]c2h,u4x45S&{>'{I/W兢U/zZ7*^{[?}oVO?9xL`MXY]&)2s%|͚5MvבQcn>gf,~${_gO=_񷗫VVں]7oXO7ll߷|?mٽq{jRқ/UhuiYӧϕ:clW.[13γxEaEK XCyrU_^~UoMKk^}jͺ7߯Y$67~߾#%!/;\-.)Je*F؜_uj le7,ѧ_x75Uo}}ŵϼRrU*_+<7*V?k|_~CU~howw$ JtU5rUefn4[=~% t7DO( K5ZmcSesRY-(\uX&P+L=RVYyw>O6|]'4>50Hɕ =+ʕԧVm;쭓41|RV6$6)d|Bl|sS22 )LӶ7 4{}(ze˟yYʵO|㺨]CC֒R@s".}3z[!իWm3rr `oW7454676464457TUj** Ui8/0=#+5-#+;L$JstGh5Q+_x]}gtVuumGGptUTT*m ;#dN 74ίoכ=Q:|'Nƞ:}y>वgDV\ƬWl1{R]Vલruu垪C'or܉qJ$UVpBP9?U G#Tx^;TVrKJX29KH*s!*n'|QC ˭K;ohg֝v- 0}Brl=!e\ȼ;#Z 5 :kY,Z[Ư. l|gKg1~Q'ؾ]{%B끝Q "G*rʁ=995##VQkjjH ;*(꺎@(\bca) p{vwu =}MOoFK~wG;C/k2Ju#XkHZYHfG0p Ʃ1N~%d>'n@5 9!U#*gp:`| :^n(]M%xR(1r(NJjy<;T,(1"&{bRrFfw@ iniB/78HEPP TJUhZݍ?-=}mGcުUS{:y#"5J@P=6Oe[9#Hk.MBD%B;x+cA \={?Y'i]ܙi*1tؔi WԠ^-zbx.dtKLk۸5<CDS&U2-[F8*ZZ}Cڑʡ!]_S[ߨh:1%%- ŒL,a;W]]D'VU@!"H]UEV@ [ 8 :<< >44 rkW5(n{OtuL} (܃~&:QB#,YVT!thϞ0a\ g GP2L+ zOLs@L=&F.@5`9@ye^XY`H&w1JP?_z#mұYfK!kĥ78 5}'\2QsV&Mm{jvjW,2;.fxzzD-(;'іk:`C'$, B7GȅzOڪ|ǝӁ#ǰT 8px=8@ɝro2E $%ԇVqgX9aTD_If 5a3=dXaiŤe.#f::CePmٳкm}dW jhBV󵬾^RT{is/rWdyPwq/U-` ,/z% YaK N x$ oDʕ+.*h??F&馭Yku;sY0 Js2}ᢻb6 nx]4g 5\ۘr2F3P}E =@x-yr΀'TY{ZRXVS.t4;a!f۱gme.T=0RY+f <sw9rɑĆN8iBXBHMeЉ/wuJOYHڦ[QE/~Qg#M +O:T/J33Urc$㊏r39T{3ta6BZF~@2(J>xǢmݎOItBDɜ&cXYTJXf7'5sye2#ʌu”6qW:jn=z؄ 73]fj`(Hlݕ~A}ce_W=3< He@`/‘{er/:onnc@bjWW'uR+WUv P>KYa{qa7 HFYݠ$=NŢ*f 0z\L F؎nYA  6Ps)QKYyklٺ3Y}yf0xepC*[(8b-g s.?9T0#&qCO^ ,ֆfa80DPVkk+Vʺ/o}𶎶f?YZo5wo}KG||]c9,[- gX-$pUY=<Px~d&Z J;WV`8IWnG25!It@ "&{fzg ̂-P!Ztb`+f |/X ?K#\RIAOy78鉾aѽC#CCHe`+WFam fU+)OQKVT!շ+gZ XVlk6FheR9_c (xG ^ }` S,ZN զue'b,Y!EYko{I^LhD@KPѕ}tl>Aoc"x74g3#}يƒ21׵Σ *Cg@_-?Po/E59/v/p9ndPr]zuf²# X΋)~atBIbƢbV4C#7P#b Z%4ƵnWqtQn'=ALJ_CI&1)HgӮ`$`'$GxN3/`Рo g xхp ?%$)8v|'Tbty F'ï7TJiN


WWU#WVag$O"gM.ԢUL EJe^Vxs8s)V@ DR… 5#.%st\,^ۛKav$5ꏸ* GNK $oA.7B,U/1^lA _WpUK1T$и; W 0EXK0Vrճ\3q~a^kFG}qm 8|Pfs LbiDz xcAք*-ޡXJ.ObW lUo&rCr}(rrHq8B/`Y |bჾ%vGsn!ЂrpM! -/H̠}v<0YaZ%h_9l`ɀ8_<ݓC܇8TqC(M @DLh}dYq0K7bx#Q B0y̒1<4a7>!YsDsՁs2ВN/Hܪ8xL#֏LH`,C4&HhYp~kCZ&#2Lw"P A?+00|bYy…s?˛*MUEQ4 .'RXF$!|0I Qn8@Vi7.9YEsD7&1G>$Xġh)s'D=}`L 3]}rC2xJ穂W̑ x!ڨ/U 0 P$ NllKDzjCwqfX*'T$E0𑸊C` ?!NUTuu>l7 wHh,'M= Jf&=xs8I1^Se.tk ;d|o<. :W7.XUR=VZxe\OtSXįk:@-|]YjaM<~Vi M@_T[ '#]e0A,|"*hI`_k7ygH cd2¾j+] !adb 7Bc6"g //cgzpd`"ZH{+Ec!Ɂ7 hNvbQ%JBy|Y\b?=CJ FއO0,6?m[Y*Mr5E)ZPalj]BB277ʻqD$%Dd[$,Sa-+ݭy)7'3kNPy4PȢVWJ5_*Tf?aA+ Y bلۊ 7p՞Ӎ;ou# )lqn2iIJ?^ %J'ZMPd! {*r4ie}&AH$ 5CCHo+**kIV}Do`7/ū K=xE = ^2eS,1P8#zAYI9H*䌫 bbn+N\ 7xOXftYe 3$ 횣1zX\C;dݫ;:/u1[_#8d.X^*u{s 5L`! w7B2,-4≜X +(>c*wU &7"ڎ=DdM%:(W1%kAY%Y0"@H&s'ܗ`d @y2eRp\p/ś/ +(-UC_ D++*%\Y| KE̬l ˿6fFY{d Tw@buW Iʛ[X4`p{H`!'N|@!킇4PGܯ OD./c˸a!̱J= -OصM)0v,J*BW_6 J@6lG(3#RW:d/o@KX҅=]fr\0eRyb`7_xĈ%^hc'Zih}JŤ ::6=#;R*쮾z"==spV?K5vtk K@z8~ ty$()9,~(o#{,~r#>2hI=Iy @b9yEsjH8~<{/ɕIқ(!P " - de` deU|; n7 dü?~c,~bɊ{Wh>\>j^K.Q 1B+H[X/jZ]Ko~ԁJ]`&.$+*sWH'U'hWuͭ29,ozrI{\;ǟK.yT{XHPa- S?>{ M>9sOXh {C 5M1132&1fw:# \ѭ&[}I)/ÿ"+oС&{|@1 F' ,YQ-}\h$E$7剩x]*^k'@K"s_l";l-mv'P-7C~lIU ws*YΜsWxْGKcKZS&/|Ef^ᅗ&mʑ7;08*Zbck\BF "%bg\}y]5_(CAsR<'aQ=V~RU8u͛0>ݼekJjzo@uMlCb 6+RCZHFv3/20xR_귫غr.  E'7tce5}E:[m3bx;ܑ'6m./8e۶tњ!/(lTHoD+RŐsp+ఇΩ㽂vd'> stream xwT`G7hb, (HE)"*"*R)RH., owk3s]+Wٙs}?3}1sο                                                                                           E… [lY`ĉ_6k֬AoFիVZ?UVMXvm҇~ؾ}AMz'UdOw^<@@@@HZ`߾}7~衇.BVO\uU"=zhҥ     `@NNΰa'ZoFO n~{رPQ     H 33e˖wW'ڵJ4^C@@@@4 ߿馛|%v;ZjEء[@@@@/cՔ]wեK'O @@@@P"0a„ *{\RV:{l%t    a8sLN,@wٿO9G@@@@ikڴi2eM/mkݺǥ0    N 4߾=ASW\ѲeӧOn0    *pa.]ObҾ"} @@@@@ ,C.AkѣGXƉ    A1"$wu]ӧO›6@@@@@e?#~Ȱٳc!    ͛_vea N+ԩxvE@@@@͛wO Br֭[@@@@@ yF9/ pJ/@@@@@w~4%x}s0@@@@,Э[ҥKկ~5zhS     `T"#oh{c     ۷-[6:<<''ô     *0y2eȋi9^n̴n@@@@H( . +b̘1 '@@@@@> ("_~iqC     P/ %eu)fxM|x~?7YFU1A~}',s>N֎#+Pѳ7Ł?iBI3~dyl'#.R \-y*i?Vݒxn%K 2-E8wSO=,W^{5zuc6䮶]Łaomu1 FAYA}f6Vt9 Iךּ! 3cNe*A/1t"Ӟ,TRwq?_nVZu}cǎ2e7i$СCvשSg[}kbx@5o_"wMpUjv1jC$ g:tN77y$ȩ|SY:m/[ X)ț=T :je|)zԨQ&p5׼_|HVL֭[Ǎg+-\uUV}{9/\Џ(@׊/v+$e8Oş!E ½H6st*$A=5`.e!U7;XfKsa豖uWhO= BQol&3=\ҥ=}_4 ]rqrהvR_ avI?,M hz7-' OM36} dUג̒,(QRQ\4[(ͽ۴g% >[o͜.\0aBժUԾ?C%ftrWo@VC"w9 @`l>b] B[ ]rRn:)иd5˔^,,sĴ0q*Tg*c zq  fu6}ðv?W_˕=ƛ|8T2l/=,ɚ.]Z\7=z8On۶Zٻϻ,]c䮶5`.jI 6be`N%9/AU㵜% jakۨfmCa>^V]S@]E2lGTt,<Ϳ-={[o-2H\{i`aR wMW-ۓw̛ܵx4bi,CjLi@H-`trPRj^Zg5S&byWMɳCm|e*^tq l&OZj?Sq+yCSĕ.qi|棏>7dZV#@o"wUߋ 87"=@H;w@׹M<f6sם;9g#ꪳ'9i3,S~zer&k_~{6mOƏN3˖-3U< Ec䮞ldH*:g?MjFrWvuM`|PXorbR3n܌J*|gK8HU7 H#pO>7͆+77nFw}7Nx͹kٲe9 w}]myczmu:$w5aiYytL^gڽYijfJ&5g qj)p7]jժ|j|\z3g2(y4FwgC1I ]cf I4nlT*U;ܮĮ]/ՒhW:Uv8lzj+gյzB^}'-S;|iٳC9]_9RNw~[T)qe`]1r`)Z3-w-<{Y*o.LlJ T^suV6.+n9cmnlVnjneFYۨ&o=zpfgg}տou9GW c$w ׍i퐻53wsܢ䃈ܵd# @xF&k9%+^+s6Xu%ҬlWe+[H|].92СC$@\[ ROpq'0h7Frנ~ݘ-VcsWqHWhK| &Ո @oOOf:sU[P35OV]K,SҸd]baѣeʔۦMnݺzop>jr`-MsWq ~x+6fRj|MFkܒUW#>]&PpjvSLfCR8{y^qf^[񭖿G}x=f5~ joܯfRK٪a׌ ;w^ve}&woΨ-rWq@K~DrWގGC Oto ΍(.GFq?xFG1\k- M҇Ce{E,˯\|cǎ&rT{ァej>%k"^C@8źr1rWgȘH Յ?Ke?yONsϫy埻$Pva4 wmydQ_^j6XvGWo9d<]ovvdnݺFS\ŊOP2eΞ=k$ wMk4w-xcUlRUW6} P0kxʛqR5=6QX5G7|SqdY#GT}ȴU *n>388{s҈/򞠑t, K+7ZdAoT~*s;+VTzaֶbVLE:,^*N*6(]#.I-mp=A%T;Kђ-oN '卻ZlmlLUW5%+jtIPXKU!D|/U\Yev6L,мyss'W (X#274;nx㗭i-fUkPηC{[m3"F*44{n9mjT?/ګYu061ࢂs%Xf`8;w/Ws=5LbT`릛nJTvT @.H pZx.&8y)Z Z#SntG7vo./z==FĪl4Of[ [~Nob.H/X ddd( ]EGcǎE>XΝ;e˖[?(@ &M!8*n)p i3bl=$N¾IdXFϿ7[ xv)]_ @b)H]'(DHfi2S2srW3H %([x;?k~FQcXhoUWP@kKc;X\8%҂s<ʗ/&wꪫΝ;fjƎrWt@Uٛw3S⌮Yi L,zբ[* ^c{oDw6}&)v*{vfp_fG.7^F 鱰nVti5Zd2rWet@Rsױs?lw{&{zjy4IrW&Ko$ze_{7%ZK M6%K~6ߞN]3as˗ ]E/W'2F@JmB ^@j{='x!whJ޻|)[&x3w*jt?g?z}KV]gЙԕZqǮ'I(@ҥ;H\ "@ 䮁0) H=iMR3Wq Ekw}GrWS`K$̔:{Wߤj~\堖iΓps`+5Ryiܻ@dQ)n-{ˮ3wt|J䮭[S'"GrWPl$r`tӗn>1੫1ET>iF- K.Sby[* ӻb(V]#ŨșknI?c[@voYMi& 8)*k }fƔjŏVL E0 &P!Zש6RbmRFqZlYjDg JW\Ae[ *6JrSr-.1L w5yv- Rf|axUrd-k|:? 6rWgǨHq$53cj>H&_h2c &UB9+v8OݦpP}`n4tR5k c/@jQRsr5f!qagqZ^}~9yElf΋U8)~Z޴Qxa>%9Eh+Qp-bSDxVYcWM:uT ;58ƭN(8L/b[t'r0 xZM;}b|=?#>sw)(HV"YxR@K<.2~6ڙ:_৤dm?`ucjrӧO[ EX$@jdQs?{bɞ)^\vuVL7dB$&̂556 Rqb*|'cG+Xu&Wȿ{';AE]Ԥ-n}ĢZ}cfd5n@߮I/ܦe&C㨓:(%["kD*X +="юe] w߿/GjA~-Mtioa`~- ;wx3hșQO5 w5vjL+1j-Ѳ/k2KSW͢Hs׹+wzp]*ѧ@<:]Q(ތU1ݑ;w+ߺ巢%>Xы_Pd#]L2+XLZ@z}%҅-7w*l253D'u6NJ%5kdQu3I u-%w8˛.e_8qFQ%2j;"}qɮl?n#M;5#fI67JUרO1OM d5NЈ8WW- %]?CЌeڴi r뮻Xd #w%wMѲ=_Z[:;:uW>}!i$5*@v 7Q(r ._]1˽:KP%kt+WI,ڬ&%fʎUW;v0e6)]7a7:ܑ5@L"p{~%Uٲ"ǷFfݦYmOvOk!2rkP)Ę2d4kac _}!_+HA >q*8JBv~|?Y;_T:zlBHa{o*]&w%wb wǹE>O_z9#' *6J/-c]}gwu#Pů5[ v >[Ykz7Mgu ~ ʳB_OT@Y\ __o\ܳ,A=&w5j3tV>]Zq\k!= H;d7 pc3okRD7u½J좵WŖ2SֹzˡDƏU[0g2F3֘ u*@^\ZܕU1],^^"w h gSVbNX坢~q%]N>]e ;> 3Sw -Pv{*؏92GV]gǁ^j6Xe-qv{G=%\䮟ܕU͑rȒrWG ۞|_Sz}Vq%J=]8 Kq,.7{x\:m\f'hjcFwjXu8I 6&XUz齎͘=&}W%QkÆ \W䮺%wkR 8A[͠{h|M_3AI: SlPZYەQ\(FÙamAёbV]N>Ue?cۗ%:҅8jX_ fM==NYS{@Hc]N]*r[UY|'`xv'\+,W VEczc٪e2vĪک=cXbl7pif涘e(bS-;^)]˖-k Hux&VLZ8 O{F{~Nj$άqKjmz3&-/s_7'nJ䮢}If]]ruGxy/Ur<M,Uo?Wl:3G:iA )pSQИ%NW_TƏr`811 _@@ruz/UM 5>S޵A Z^rss3fH\-Zq@jqnrN|Ֆ%c*w;7+CB|LFm5Yz!d=,^+</'_g'*Su]V-'`Më)Tkjʢ)Ԧe9 @(W]htZLk#=ZܕՊ5z%O1ǹE s~V vr@ r@ @fYS;~A4w'KJ͚#k\Q;d,G1mt]\&}]DV[\9kJ-]]<2c"we1G?&+p*( }[پNNVˮϻnݓ$Md%7dl5}fCdO 6#tEEn:tZa"\샧m?_re$]]8\]#kxj]8M.ܵPӴYdU#' |$w9AN`DWFdBˈ.ݢef){#bյ}Д+anaԨ=Ӽ)7Fkq-[*]E۷oчQ5^6FUw ~n\%6FaS. e:vL,q,SKt!wؓW`uf*UƊ'6}Nw])j.jr~YB8 2w ꂊ3"!]x}_.1g&Xj 7Ef$C(]3'0s^ܨJgĢgfn6.p(J`- < ?[բ+ f6mRl>T殝F,Y-#@xrW1w;z>gM<:rQjGлQ6/E`ڌTϩYBTd}', Q]d>I̠ Xu͟#+*}8WKŗĭZ)s_+,U+t! `D *w[pGF_OLH/ k b.$NK%Pk^%Ç+]SNX0Mմ Fϸ+I_ɞl5*KM'wֶ1 sgc5:G/nդ@:MHΓĖ :6ʆv )Ъ,e>efP@8]9rטX~-_-f9%grט#I,8K^~e'}ZO]"uԺHjt_R8)*͆$԰!ⶒ e]lRYz5*!6rװ85M5~F=]!gqebH^6?&wGK'޲jrTb֋_|u~5{/ŰάqM]ą xI=l$5,wW@h]9+ OKeyf(=U7-&zZ'whP%I;?`|J]l|+\`;֟=^u[U4v-5VeK:64{M7)^˔)s-tӕ ۼynՍyd &=+>[]|e!wMpX EL_pW.}á)w8y3@R`M-{E-x^_͛+]EGjrIOXʗ/rwX5" [55 dL*^`䮉[^%e\_Ԗ *qʝA'ᯏf Dϳh V`a%[wիWD_˗/6Ǝx;vtǯ24bTripthE]KI`ڎ۷W+쪧nݺlvZrN:C6Jtl6Wm1)lF1|3'Vl:sq}q'ܰ&sþ~1F]>=v7M`[I7yLPQѣG/29_uV#u^dZ7 wMj|=ѴWkRG;5a(Lqh!V['#-6#SYU7̳\w:L@8?O00yJ*)xA-//鍊nR!3y3״OaTBZorH`W;9g cH" "YS Y{Yg8> /Vd»+X"^z}9ĉT0nݺ?O F]~]S[OOş)~5#ĴHL[NcѼKV,{弧jyB8 8Vdx>"pjv:ѾFG}U]}۶mMY .,U91qV6ɾ:"w wMϿ7@㹜]S>Bڑg1lTjEjmD?#qQ98Vdx>"F$iѣY/UrȌ[WyV)(~߾}7p)[E 䮁0) L'v~/]nC1g_s"̕Tpa=؋`-'#{UCp4dOX|Ȼ"LСC3]͜ wn9 rWG -0 ֓"۟9s-@n ?i7= l{A)xywRY#gwhrh7:j#w  ^z-̍v3.~D "A@ \ШJ}պ:S`k D_Ν;gϲ;| 7G]5|+c75퓻xThl@#>]) 3fU:?_x!a/pdA٪$-J4k@ FwmSM~_gKU<"P(@*HrUeE`2L nh>w`U0l},bK .ԛo "Ό2ee/]Ν; 7G]5cGk45BK$Z4@>3-]%ܥģՐ 8R}63w(U3#ѽJ,W_՛/:X TM4Ѯ- 裏* w5g.$䮲X >1#DM$j%)܂"kI,eIC(IO`ߴ:!q%Z(J_@\hk5! 7q!l߾]] gw]VLE:,@fr~9Nɶ.]!{!-L R%Nm*VPMwvRCKܠC"tۧ¬`РA&䮢;vhIٻw+s&U<%@jtPL]MWWvF`GʎHq? 3^ nH&0|]=fB`C % g4 2-͛qslz-V ]>w@U$fɺr/!wUy@--zk`Lm9^vnH&0gƬ$~ymBWTOeXx޽W]u9_m)fa͛7w2GoϷZU殒~lKr.@xVl:Pf^"wU|H@,"f1-}ճd@L# :?xO"d+nI yq#W%YùwPDӣ˰I +Əo#~_9o<19Z5߶6E}Uɷ{=P͠tٛSF5dq^U)8g$Ԥ73z,bZϽ6>S?VRŴPS\SB:|;@>CL @s6|wr!/jq4[X#$NI'`ڦ1IܺD5Xu\C۶iޫb5I9^m1<K_B EIȑ#MMKK33q-̮M61˯c?z/ڒUWG ,,&dF_d 6]`uufF9E*cZ];-cyɒ%J23zU+~w?ܹE^{hW_};4u6̯yӚ"w;#'0]#$Iy#g^|z\j;-'ޜ&;WeY*4JO6xj+'_t1R_W~ 6lX#%`ҤI/@57rW32oU/7y\p]!@#ǥIfF,=vwLUױ Ma86fo K3JFƦх]yUV5jh8p`"5SD-[T#C/j]: ^]uzz&5Y ^z(a_I˫~/f H6}GBNEdžʼn BoSz|A}qc͙ZǍ״iӻ| ==prU׽䮁eo5pr&ԴHL)N/ǛjyXu j*`M@f ߪ^&:ij-O?3f̲e˒#7o^BnGZl3g(8TB]Y*ME8IcG䮒Zq$.e]JfOX1av*XD4>2^05s]Ge GKk׮-SLtg_sSO=%_|{ďO>,JV#d- J wYrU']a #8"ЈO tepVdg{nh9yhEW lvX/W[ w y&~l]ફZfK!cjYؕuJ9ԍ}@jL^I;[4qG!)DhxM _ +}8T#][-k)^RuN-N(x%[+=H_"-Hf/ p]zy݆Uq~Z5y#]7Gv=O`|QBz@ 5Vlkj;+wؗo;O, ^5݋Ǯ )WձcG[My|rֽ]'Vh}Y w5I0 ֻj ` Tp}6g@ucL/2&Ɨڶm7Nw/Æ f1c?z/ڒU~/\ *q!w2SoC`Qai ćɋ).ʙ- oQnY\xyg 9\߿ٽm֬mt %+@f kɎwS~uE~όI̘HN@ѵ}jek[U=Bӣ{Y6?Zgjf3fݦi[l+T}24jkJ؏䮆(ܵ>}]:4%V$rWT*"HE}t =}7sv=z[UK#;]]J@HZ@YslIVwh߾}W i1 wYf5V]e{ř%5Y >{z%cU7TGG"5 C+cN9Gn^lwފE+N/4ii wYfU[]K$2g]N4ū9JH豯^qgks3HךּLa42E2=UVa53˷K3Z3fW\Q\jڅ vhP\rט5ֱ]h5EumoUm1BBAnveD S ??U.zcfCU7Qo+[ąkHޥlr;z^& _F ]w^n[ʘY4Y5zu1]͟ %-6>C`QsD,zH<@=|w%F}cI\f Q޽;yFǓ'O8/@YZ|@j[9*BewY%w-ߺ'I2 شӤkvGcR`Mή;jV'ˤqZg>m%w0~yyy*T3~o?<rս濑]͟*]]yj.4Ƨ#R`Mͺ#{i*l4㽎rL/ƬVZE<$Pt鴴4%SJ' ƬHj/,r( nuzI]7];,(ITOU"uIZ`5{~߄eRLѴg1z:=v<|6OF7|+?)rWe]?G+<{M{;יWI0DIcӮSl` Դs .Ǡ+5maMt|P)So߾'xT/|ԩ[oShK"})@̛ i3Z=_{䮩͈i{6#ԓ_[(j' R+(RUH$mfb"DgX]\wLYFdk/J*%#{ gW]uUzzz <\rWc|/c wof$Oyb `3< ztNY(7ZTɱgώg{c gwuW8c`G#dgg! wUVk75s6_Mޒ١jM .#XuK$zZv!J6PhR1KA]'|_Sa\u&{h:rWy -$w5pŦx[orפݘةd٠)+(QUD"{7XfW'Zz${ܫ\|!|IzlN9ιY܈6n(>r+T?$) 䮒gC%w5Mj%[cgm/E5Y3'0s^*5 j+_Oj5XuXs %nG\`ϑ<+Bij&Ɲ'xDiii]w]hCԤ~-;6'"    B ??iӦ\v A+.,Ю];@@@@@ );vTT)AΗ.첷~ȑ#Ia1     Xr~i8#QW^}֭     ) X"+k;"    @ 6K ψ6jh׮] Xx @@@@) .m_wuf۷o瓋@@@@@ƍX*nUr3gzw`K@@@@@ X}m۶lٲ=P׮]?!    ) lܸUVwq]/'\SwvD@@@@;vիWŊ 33ثW^8p     ܹs?gy檫қ^s5/h%K M!    ֭[׿ >eʔ^{O?tӦM yfk@@@@@@!4'|RzG}[n˓c[oUdjφ`#G     V:t\bŋgqM0ҥKK6mɱb8                                                                                                                                       v?:{) @@@@@Rq(CƲǛ t lYSh]@@@@@0 ϱnbaO? cG@@@@ܞbZ|W'.eA@@@@B%p,3?btjO>pCu,Th @@@@(R@0n3˷_O I@@@@p[`ܯdFn?qno}0:@@@@8w ڶfEǧsh|#    c+i> OSSho9v81@@@@,p4BoŨw[a>;    ^np7 6[` @@@@fvì`WnÒ"    `f>txq+v(O     fVr҄%ݛ#F    Vuì`WqO,\A     7 6rYY'^t`    (` M_5o>'@@@@@Foll<@@@@\aV,2@@@@@pY~ @@@@.fr-.     `@holL;@@@@0+5R0#    aV$#oi?)@p@Q?mC@J^='}z&|5~/neq"N', ,u?cm}D)@KծZ@p^@|ӼagNS{h߮sQ9N3myHmlG@0k^jLν@@t D4sRkʕ"A@p kv2Vb&@rdI ,Wz- ka5H+d_wc(Qѯ ЗJ~]N2A! GMkq dIIC F-Ƹ.xﺻdl"A !O@ET"pg!ڏ+hd DbA@RP)lI SZY(cz(J>#M'g%tA@(' ; ~i܄ `J . dE@IA@(h&,x1vPᇿfJ" PCS67SQl»֐^!A@0# ԇy* kj^XV7zR VA' woPՌ<A@!QCZ) |"" $G`ʧC׿5z/~ |A!` XIuWC 9$[A@B@j/V(d)X[*c_ҋA ^Gь̪4S1»AE$A@# G1A#@Gk.t ?٘W-S,! kqt P4,m0 Z4A*" >' @ld ()A`ծXV:] )iSC"Ԇ2SxWK C |*,lwS)Ѫ5RŔ| . $A O@&kwA@>)"@a! OaH+tŲ_iQa DD#] @Og) '`V Ձ#ylP)ZA =I >5@q Y0/v\q ]H-BD˄ut@Sa|@N&RxB " ;B}C*  2ؠ$iA U4=W1^O?~~6,!jhFQp64 k»֨^$A@C@0d$^" Sx%sA@pGg)vWE{I `PxW% @MF@RwA GhA@]~pHxx-"o @r(FUQi$A@"@@"hD PS&2 5]kx E@PY߽T S^.A@B} j)H(2P4$,L" DB@q+oXxH}I  x~?_ GA!A@(w-9AJTsF*y푔    ]&o @eKʏR7?A@A@A@@@xhG P(cY@+0aYEs12ϼikS$,    ]-   d%)A@xה4!   XwM/]qj  w %Kv`譎^a3ߔ>ݢ/F7vw!_F|DzfR"bMSH ȅ)u+[! f=hPguqϹF-ܱ~k?3o.~lȜV#l)ƽǿ#x(zٸZMhs1{A{&:MX9rN6z4TcG?shg[8vո,i;vU'.߳COV [ 'FQ/ x{=/Ǡbh{^1+v9|*O+uq~ܒݮnW'/CO#hlē-l,nJF!Kph# swUżs(}̧=JV /[x t~̕6Wbv'DM2F.uIbIwSL`cș](t(u{NZD'5HU{NPQtSK!T`KU$7$a !-X(T.%g6AB}4Tµ/~3˨}]-uf&".E6jbpYpϿ QF9R =<9G\g>dT$i7Dr2Fv 1~.?^`?v}Q]F-]H!V]+7naC׫t'=Vkwџ;>AߕhŽU 79wwZfw?n1wѭnRXUB -SCŰKqQ V{UpZAR;mkKMG_gh/_xX|Ws|Ix mh0NGx*.kCzإƓ*[8k';G*(^b+.cl9\ʮȇąx[KnRG-aZK[햢&OtXxݔ0 dHX^Xцxh 3y$.<<,K tQpyqD槄w>+vf;LXd1y!'oo? 45vca@zgw + :޼;_oâ˫]eۗp޿e)`/%,Vٯ cVo|ui\^ xҧ"yW4HaXxַX5eV(g~Ua|4PN9 ` \w_ V=` ĸVbfUAΰGzg~bPv&s G 6 ؈A CVoh7`'lUm?\m'++e є=eMVuB]J `Sɓ,$ۆ/{[, 49]iCߠ6Gf ?12{0os0mkpàgN] %s`E蟑*k f|>q@ɂZl2=p=K?L[86Cb>kL=x/rCw0L%ޮct0߁+E"?lG1aXqE_τɠqkar::qvh%{M#{'/r,{*CT|wXM*2Y?Ҝ tj T*:P']O_SMj gs8_@o=Vqal ],$@{\ vXuZW/wA | rjp>V\|~3;`IO|sa¢%Pv6h1͍k}D8 @_v+[+|caC{%רReMo] f8 'y'ay$"RS5;:= CxXEp,m- O:?0:%7xIᎡV%LSxW /2kJX)pt`_zDph@5 0}ءcԠvƓG}/^g8QuoZ.+`CUޅ]4IYJ]OTmh;\PH{Nj9kOqGU'5Ԕwb?,(3@&@ExcI1wGĸ׈ջmJi w_'Q|_/w;_:~u:@`iu:: J"sد88YW1 t͢;fƊi_+ΧkweTG\a7Tμf3UOl.'/V=z۝9aX0c*!ėyۛ[GxW]3`m昼.R05q.yW% F*P",`թ Pd` uJ륱/a,>)`B3z WKLxרwq:3 Qswi_k޵ ; wSTb-t:pk'@e?KyJB]]բP~-eƻNZ[ gp& C-;xN9 a(Ğ r"4 ?Wc=w[bȞ쉏X~Q Qѳ7G&=+mL(k?`*Jcat`o 9UMͯԘ~ӄwEޕx K?4 b܁%q |#@a4'ax l6R! x'*stJ" -BQsCs`~aa]`c\Zs}P͕5< P;5끁yWۇ&jvE#g؝K]a!=ŐF ]o7'S.UTQtxd\a9cQiZ49:ac<@^v~TU.c#9Y 8I:0bwS^el:Y*h8]}| [h^rƻȗG؈YϿ-,A%`&~VFVkl eF>.lNR5|Q.Z0y>ae)ftTmY0,#U3 e.gٷPxW|16 C ͜s{K@?y$]=xaC@; 훀7%V`}` )扦cUn ǕUg5+Z^F# 4@w5⤹㙟wG38l[7)}'MlHAgi]xרȻV礴@ahqq,cVGx8xS6>=%M 8[?jrh 棓:y׻%W$U Lְ)^ GةE,lCh`vތ@ʟ=zа-k7х[Z Uy.IU{ĹNQJgxt)ӨM"{?QBxW'. r K/r]5M8u[HWQSuCzTp}OL ;\0`%kb]r_{L2z|Gڑc_v rw{Cܨ2k`qhvSQ° "a1G{,v8awJA»[Ű .\XrΈy/8*cŮerxOe-~ BʟEڅ.qm^T >T/;rфŷzN%tPpum)JItbEjZ7֌ ޕ^O},@æ5ו;ODԆɅ[9p2͆,1%kV<\w MWheO4ouuQ+5^ 3i*f( ?jXl~+842*D&YxJUaT#RLЎWo kN Z`ajRX᨝w:Kڭ ̕7[1-~tË]/+,&Ur6@3WT#0~Yc203Qut E{|'SJPʪowwt5wC>˨L 0kt@> / b+!NӠF arR!.0)wYw O< A' :aa80i9zLcu*Kب2 Y;LZy3mS Ē2ir#NsH]S9ќ8<ü˟cVlML0UJiXTO#S7DAx.c1veQwN00=~~ֹ>`s֚9.9]YHjQCeE0OذU.-ǫ 퇝)1=? Գ*Z`ѯˠIȮv`vƾwb5w ym~DҫW"9?Gk`U/xm u,1x4 Rj,AAg- cIλ2++ ˑ1=w(UF6`bs]?'s.zoJþVGO|< "%F*}#+0)0eTQt"axkƁ/)]V c)&  j z|}rȃJX YIT >v&+D+*!iA6aг@z5#+W=D. v}'.H)ֱL)Ԉ08^)j_}Jh* U eMIm~RP»fERKwc6 ޵" f-LJuxkQ 9~J9a3, rovy[[[y eI79!}U ZdKU|ؗV?j8Uw54T=Y6؆hZM6w[y+տ*1C-]tR^ftg/UvG#ʳXH晋7"Ǔ3ؑ O/uz鈯{8y-Qp(} ww͖c(m8Ҝ*8AMQ1$TkFxWT]/O3WY.67{1+Xp}EЏKw54h.HGK[Wlj͸%-& O_@xר !:gc% 3QkX010"}-I]4h\v˚ƻ/cPH8eV 施']xeZq*Ll.R3eH"w AR[<SV1}S1/M某/@s7?@]mѴ() 40ŸѣdE 0]O:M*OOxjjK7.q+\̈́1 9j6MǪݚv_pF#HGElO=wELho]3;yjS* 4@ 0ROtQ*H{[]50.Mqo?t,]Ze2mTGB`K0xW V»Fy,<| a|PWҬwQ$Bg@t@B3WZ1pb7/^}%?)$KmOYϲk +ӮHO~1ӂ arF.lj5/:LxWڠy D^ui۷Ʃyo5hr3۾bAI6kQo ,\RS((+]w25+U %أ.$y|Ȼ>}Y:kPpӝkl=ȁ:u5v1Dr$L @yӄamJ&:ᤒ¾r{OU8/Mi)~٥By=,Ĩ. bHPVP7=+D xG"APR''jThSzԦl ٢dCƴKVͰ!+@]f`c uMhIfڌrfŀ@)W?TD?QUε G8UE 0m~$_+q<kaj8s縑'5XA0ubtH/&| Rڂ=s&}*oGZl#"[B봷C*ш+!@QzQXxj";O5 jޕ'p)ٮ}卻 M@@xW(Pc´zXCBk8̌ӏ~Ȼw0V36< _ tOuC uL/wxRݨș }^4b?V =%,ao8d8&V/ 2_[VV 1]$(kimx¨s ^@q{Ce'+ђwU*0J^N l"ͼ+h&:t<ȃE]?rdj D%@쎧!jo9+`f( 4 &\Pv13!)FB'\{heт=lkP91c 6l܎}\BMQͤoوDӔ."fEhR&&7Hx 'X!a+/V@ Ss5 c5JVƁ] `N7Ȝ{CvB%!2F "]v%perVKr̾ƀtZXWXcf'E_e]swj{!FЦJ*}iΖ "/njTvZ+,Wu&K4qj06e؋Eۍ[=`\]X񋹙̵cyz.oȷ[!ޣ%)n|p&K_^RuaY YGPŇVPr&pL4 h{̉Wێ|L hY&+ڂwE>PPb8.f޵LOƾz5?Up1ũu~л]na!ĸb 0?sɻ?:uTZ-VÐkE}Le5aO$bj-Sri=E~;b9/0 0!6'XE+*C9P6CB ,.F$&8-5XFY#PZ!A!TKixx]3ߔY Z҃xd?1f{``͵Cj, >dh9R Eg92@-Xo{>mF4;Y%FSGn;p:0&^ӊKv_eaoƃ҉M*D~ zQ@=4& 2DJ)=i'1;9ha쿞k5]ҭllbqؼő7}~ Fh*v1:XI8UKսJW;ӍL8J*0o>.h>5)x;Ha'OhUNUʮ(j5/åMm0੕SxWwՌІY`5/CXYwln/7G^ɨ̽xeqؗmkAJlo)W"(g+ʕioaH%U4 F߲+{fX]A+Sbg~)*6յ2Kn +2SAk b7eF3mvcV^V K5+x08k  ^v_ Lxרz)i[:1Y>ft{y] # ܄ӫFB3r[>}90a70Bx ˇ=/fos*»w}x#} 8#)0ZZSq>형X VTV+C2JD ] QG j ĹkPa7qX'T>:sû u NyzM݈Cvټ4(7+.%s;Z 0+Oj:6 W®W$ v$ai9*OXF@B?x1w+. ?ݼda0 )$&lV2G6%84i ׀TA֟ha𮚑ء}fC࠰axahMTY6yzui_5M1jDԲbDI%Î/F)6SRmJm zR/=ԢJ?HF!w kǖ3ε1L7mgLXTw &{i62hcxqh0N8co%[M\͠(f9V'$y -kEs+ wXn e;h#JӠY[F.#sBU_`FB]̼FwDJ2˩> Dot]%^!T!ޏeUece9<+X9]Nqy=5鏔8%G!Ybv _uX8|o'Pl$_˅j*t_\]Ż@͢rKHt(n~p* +zw*+6ޕB25RQỠw0^1&ʱibwB*Ǵo#_K7N\vjc}hT4O5d`~7yXxs"JR?UCwr֨\z]WB?*RAΰa!i:0 d0WbT 0iyiH{X2Hꔰv.3b͗RfdJQ~<-_I|^BT$i@B J+.?> _ʅ:<dTqz}sf܋Q l-RsxW\W<##* o26=PKs$,~wTl,+UMo_ K,3aEPл(ѬG t*+~b/a+k+NS\Ԃ,ɌQ4@Rˮ^kxfnq^ M^jҡ }8LdP yh\6yWxk4٭ P[88ZI85ğ^t.iv9ڨl#A"o&"I51l5߾Tf-]%s0/ʲ:p_)g/p:o,/f溌VL,[/LOX{"E,ð'X 6X]aeC ~HIģIࣵT~N^o4J4'/fEY0UI0zNw6f2|ZC].5w*퇌f.@}YgW啒Ï4U׼+tJiX^Z״^[qe{j:(vИO}=NU/gN=k%Lm7,0W-KX8X 62W;B+OeCBduwE] \7-]pUVog%ml]yj kx6X檂JD޺]vQ)6xӰAҵs^~x)U&OiQ_8:ZJOX>#(*p*a9ej!tPzC=B0$=!a^ٰ^^ñlHm%vl(׸mm"iw CFůzα͋O%@ AwOs7j7n-/jMjeMҞ@Y Pf~hDQo$_l=QW_@3׼+Јfa^g,ES ]y v(jG2VqJ΄00iVKY(ހ.h;aEQxWO&)?n1P ڻx@h-F9W^QSE,jx6xib[vx[Eu8l&[2kQt$6#ݥ0v$ eCQK*C qAqIa;yX.V8Ǽs/%I3FunP"~ =pcN `StXT >aB%~ц_B;:p}lpRR(M\uØe6/#t/f1}WW]k1Z'EĽoϥ۰dC Чv ‡_%.OZmj^#$bhR.=,FP͇aT6e ClW4ZG3*X; VjDeW3\yfL5Wwt#%:s%;o+:e}HKd\}U])$65EH6 aӬv$,»fUMѥ]ѻW270}`qQj0I0xwdeɿw-=Gglv?{ޕڑW/(ўkV J", {F؆ۜrZj'ٷj`UAahˀûhBVD>1, :;Ob) CJN]C_dzO:nGIةt7nQJ{`ྚ XCUwsM+|Qw5OOԸ+z,KIJ ऀvW̏6bؤ@sTNy[LV¼6Ի{M-w6}ܸOaEL@JɁ$R$1,cP筵r 9rH%ܙEՄw5uچxWӁ 5*ap ӎSaB7 *H/}' m'$i3y[aI=)9 b=m\0>aݪa]怶 !2vHMr/Q=2^pܠB SWPfO$zYԻ&J?gkȓ*8U1'\b~yGJG8dT@e q[+],IQyneͼ7ӱRӴ!OoAI޽QBVwNyWj6 hs7(3k5Mlb%=nQyקq-歷';h@UB€CGT;;k~s $DbJm5gUs0xw̷u~Bؑx»7mU+:UyMy۰5C F_+ OLj>6qyþ"b+q P덻NG}awU ]7;iZ9QM{\.;֧ܺaPղe@ ]Z:6,IFF.cC%-K:h'LǔxWP1NK_g<ќjU]f=R̦X\#zPe| zR+N`C>c[X"OFՏO+PhM~aJ6q1O[;d86W4c&,֬ZmVsx׭a!#NX UXJ |3*0IXxWKe@ ]aTullB-IF1 =WHbs]]{W4jѥ-5,~@$y3oFhaxx]p`4u,یĻ^+?'?^*yES4ʢ5wQC#RR˻sY͇Gs塥^HB֌zj;]#w5L Wpp0̀i -FW_tQ* `5 [3M7+hclwGfΪ&nCX'Ka#]2𮰼V^1qlˡA>jc_Q9㖨jJewMHoj1SiߦŻR*xd~6x|Y»Ȼj"ޗO/E7829sǻD%Fc^LFn,ٰj Xm,F3{M»AȻ(Fڝk.3|tSex;,;NQ}z2ξ+3pG[!sO;lH ;7h/+5B" +t˚ \a@m{Ӏ+ؽgb7`e(vƂp>ŻNYT9c$ɪXyeۏ=mRtͣK&rF*!+84Yb5fo0YvJ`g>5j4gce`^Fo2mTbЛ`<ʻj^b'Qyn|}_ @l*dԾgr͚Gu_q5+Hrg7Ɓ6"0Ę*> ygQ|G?L4WF=ݲ)ݜFxW3>jD ͼ+v޲7_ Com)NP` +|y?7YP;P.lPuT5]#[|+5;. هȥBop{nT tZ 0xN,pjweX5b yŸi];&؃S)wn}P*5wvH<j+ :]yZOw(CO{ d 9>}F!pbb6 cT>v%ȻR;y5Sxʻk@X 2)ZؙhW> 9qvG;Uێp | lf4 RW»Fxǿa1w'pRn#-jNa@^făzWY^;Nc2G{B֜ypjyǪ\>=}gcТ]0&i.wpł-\57&wp1Lޕzc\h`b|:rx Gb\E[ME`N5jR.1*I/yp9qEAeEꦃ&bb : !4@v#JW؅*[Q<;w]񠣽øy[͍k> lhs;1 .g] MfiRE})W~5.rWuwj1hVXF`0v5.7AoyTne6P&XỎ%Eҕ1r|u:]6hRR5(qqm@l"A0o ㋆w}m)\́WABa].R\ k_ZehLFQP *Y9:#],iQ,1E j'Q 8yh}^?l"¦ -5GEJywhLFQ.Ho8UE% 5ȀG»]w:pzA͍k4^N#]¥JXxWCK  B| I c]1œtŰwDqU Ld<4#Džf|~?çkO7_ w=w:.o2p9uJ7_ʖq W%J,ohO^6)Gi]7?KC4Ew˪#q]{TH:wŽ<5[(u1$^R~T ֫͠O6gͧ(&y{yRi~sJIO 2MߐAxWCS j#wS ;_0wܶc Bljh>$sgC=  `; Wx_9qaĈhgYvSȻȰً-J,e3)޵Ez)E BGkwZDR|}o>x (V':h^PW2N_ĹjwEm'U0~{9:ȴ񮵚flL?g"V7[\?ǩЯ,wwZ86ƻsJZ};aٶsT8Mc pvOb޳(|ס 㬥؅H56FxWC J[=>1jQIbv[X*\pvyFMcEɍ=Y.Ά;꣋`s_҉qx׾VG:az}'8|βK',."]:erjJh*@M,z߹ Pb]`p@[%2!Ï=x~@]{ּx )mǬT-$fI%ot5 +Lf!w5*ޕ.ѝxGvpk`zkm{Od?=]](ILzxW V=׮ => b޻ޮ95Z&0B|»3l96l0jg+ڙ{ }TÁG--=GSpaUN/~"F% jFѾ+&z5kA X5睞 [xWU),/uhۄ!'Z4)ϺWRu,׽gẺ (s23VX4|xo6[Ht=6!$ wrp hUb<.Lj+<}ptbܑQ+O6$!WFQ=04⩅^`XJȚɻN^W:D | tʹ4RYkЧ ,7^$l,(i_n;,f|O!%^E/,[բ7ЋyB$,8Imb c`cDRįV P~S3C ̨NIjT=J+kx.&#ޭ)ዺߕHH ?-yq9l܂~X»F0m+={MCIMOJKޕVGv2AXU3kbCIZƾ5C*FyZ fAy͞DF` {# SŻ0ˣuƓE &λ~1 s.6RpƄ;t RaHn-\QMlc￴SŻB6H]Jm񠣨U6Ϛɻn?|mFwՇ7Hm0ywq\zH+][uJ0F1ڑhAqT[=2g2*rV}I~ҝ J[&)Z{o *)m'-鵠E[5 +27rfzО>wM+h~g5i]qw;GYCgxWcӴai,`P~VׁUtM]*sq?'fH CYs^]ou\Sr\ey~FpmXm?HD҆S3qƻB}KU  Лk& Us HCixxߠQcn0DI +I\]z)5Z]6\zx(i OI4PS`Ka`T3Z]w1C{dHx <-,-ml4&/kxW\/ynV^V}yƘ{aɼܪn7>[?Uy»F3mk.KԜKf Z]R qoU2~BOJ-z)PRXHޥB5~9&fڲ]>1sbX>cfo Hd|;ֽbnJAt&F1$Oh7}lȒ355MNx-"!mrFq dldnfc`o=4LQ$hbwD[g$?EƘ=RbܪGѩvqf[e1Ol]6_JxWQ>^fOhD[xҿ>37HMλLxץ' knb f~jw/cI& n]v: Ș1V蕨iY Ϸr~kw)=n[DVL hׂڄש ڿK7cļ|t#e#J3|H'^>){"5\i]=]}² 5 Btd jG]p)M.Pp0øؠk]\eW2[?Frq JZu#0Ѧ'/D.; Yм+n QfQ&<}%iFnwF ]]5Z<ԩ(@ĨA 5G='bժ58l{4%'"Uk6ZP@R^x*Ą fiF 6V]gph} ُl(/L>u)\wET2 R"p?&Ib(9_UeIutj&&A-( 9y ʬr ޵G G;/۷[qԬͭ\嵜OjG1o=h֑1,k$0󮌇ުXo}bOĸ_VkQqt{k][B UO_{໑A@*\[VbvdH/M KwwKhÌ.Y-h_-Jj\M AnަV^n1Ys[nX HHd[+Gӑb)yԦҬM}rޕ,רO4&&(DؑAD3w.I˻[9  u{Wa.`ph-&L6X^kN2wi5&%M3ABo?a@tBr-#T uLλRB6ꞒE5U+1ļ4WlT)6av{J08IxלGrWլ̎#tyٰ߯t6Y 1k-b¥-+]#wfx޺ ;REZq0^ =-:,,k2a)]6PB| KyW9[]m֣V £'/ Sý94m+o*;yhˉI_絓 rUwz?qeT%y6È$/70e,4I ?]~P/Wlvh癋 V3y0ǻR@0/lt70^w}K6P`n/v\wቆ,8CG&#iZU \ J0Z%( RfU!_i3/WNR`7q4? o}w0--" o,sLJxW֌ڜ/[VLa^yW((* yU_@j|FL[9ɪj-gx{O+ོ+<򇚷$\">mi+c$woe?W7mEYYczd)ڟ ]YIciu7Zm}zL[ͫs|՟lICKd  x+\5[o Ԃ.*I%dKޕEx*N1(P@Ŷ;tž^4-퓤Xj=ZqEcoE?òM{t!V%!{~~]is8ۥNZ!'Y95 U8<sMTÁ1%+Hs89Q"„ w]1;WP7 }p% ] ]6"ҏ^ptBz72oc?#HonC@W[2]\LOxh9m2޾7j)]9-+w? wW`LрrN]7y3piY\#m6x1f ;MޱF;]BI]M*aJŒ˹; $m2v֞!BOF{qߌwPlFϤP\͢t^i_#MFeE&rNKnmoVɦ |C{E8M\bVj[u*YӉhh*ОK/*sC%-.;:F n pX +}MP0@c'hW S;oT?»wEli=Er:l|˝qq")k2Ե^1G  ؼk<)?Y$ƞw^v?JKD8[i`*_cKA0 MZ(i.J|rQJx[qϟ^[喨]d@>!2hY6a ]*]b͐0651+УujZp#Ʀkn }z}#X?X%{>BK8' h&eeE6Q.1+JB\byI;[X4#UC%$*D*c%pXC㾆ԇH-ﺭ0HC3V,`ٶs`Ci4 gXK uuw{9vp[iƄ??-݇{%;>4,eEͤyWxQc {@:DǑz (wtі̙W*yK 0dl_n1Tm뢊䆽m$_42e+Ьf8MxW?&昔u.4064$8 Ay[|lS%6Z5xrݸR@ sfi؄w w_^:^jNM?4iej ]XQwlTCux\ۤT4I,=51tSj E`{n0.G[e49qȁH?V_"}t,KDGDB5%+d" z6f7}= yneHaCwx(Sz{0t\Đ w][q h* ;qqS-]x^,v?Q<{N ƙk1c/Ps`$Ҭ»FE,%giC=zAK¸Č毆YuÚk'AJ]&f!NP< jwin»wEs,p pSHhu:x#aue M騷 ؼ+%2n.1Zu] 2^wcª<ؔ-21wҩ ^sK8-޵τU+8Nq}! 5Zh0=HjIbֲrnPJ6Nwq%.減͘S]s[DE{Us#=m=&* @JxWH@tqLp.tE }[(죠V,h˶Ӓ};b +u<5/ϔN\4*`]ࡕz賑UniMcSxяe:]o{gEq?%$טŬ$jVD^75p/ 6 °30,(IQtoT|pjSU]z)eSlTx~ĪʹYI4%EWjsikK)x]~>D6ZQ=MuW5%Zʢ~~b9iQ<L7ȵ:M/\Fݵvg-g}jv8m $nϞ3?rEu>+jFDxŰ˹DIʵtYk}թ:,W˾Gby\MIkSM~L߭ړ,|읞 ^@ze+Z?}hȋ]U9KQoFFoKݩv+[%ܢ击^փܘ I6]SRvW7eHG.vRc  .u.TAtFgFZ *k#:r"|WF0r_Tv*)Eެԑa)Ub27VzQw"KCG٧idfqmr{ C%YGI^Uά*JwU߭Z^OC"wܠY^ZtGY<C-`wisS#({8}n&c8y8񑔒o(qk_O]uQ2Oٌi@P@5^" A1PQO`|M]='~l>|ΫB:_sӮ|_}ڳJ]?\hwV eAp!:Z!*^|EJTK(nU5Aw 3:{x*o*_Dێo/]-n40U'l+MwU~f`zŠ GN]t_rRwЇ_?S?5[)(T5}|6N[ tbVM&DaXpeTaxvpa+SOUܪJ"rE h->ZH) k܆TQ2Θ yi+RWؕZh{`ZLe?Z3%A6#U J.ح˫N#WM_]+GwKG,P/ /o=ثNhX<}e5^-i]Q>uOxU~➫e:׾i8Q@S?'SԈ&?>l*f^~of/e? ]돞UsxD:w)wⶃg^c?MZΞ ]tvP{ EDhu7ev=dPsg@8cs9gyGu;A)Ӹ; RX M _2UE;t׸ +MwUqr~7M[5ωڰ|,%W[K~*%]/}UԼtWeXg xٌa.(h۞zz+k鮪M^p[ zks>/0k؊[M] Waoڥ*cx]}@tnwZ$ÓG#ߣLpz{(C>UabKvh"WQ4[_4,*Pwe&g)}\ԥMeH67 zEkpbrx 0qВ̳傀$kY4 Ʉ4 Uo˃|*IIv[NRg/LI9%գ-.l;q}u׽mi ehi@N,[ZjG{g% nGs?˒b.e۷L,#Ky |W=vpCF6r{vr{ƷuWOc;rF'?8i2MgY{$Lo?cT\Awщwa98y2%%i ѥum%MU3+z0Tz}M/UzcݼnoYU*Z t:|7kXu9EC|3'y2_gŝۚ=GrxYҢ_>aSc}smi 7oIK !]Oo.ū_ő6mo$zȹktyW.ͻ-%*sUZy~6H6ĉ禌QQ(Tl:d k+g jW <`ΉeUs7+,[ eyJ&N ȶ8cסكxs|vSn Xo\K6hR%͟5 ]ɾ̾c5ynP5>:y#Ufq(\Lsc.ߌtrA9hMP+F_ *DweFI]R&+U*:SE3|krل$}䚭^7Un9tCc ǝ''`z/ɁI7[ɗn?%dʶUm*#?d~ ojG梻*Z+m̑eF`bh[p_q,U Y6k~PqUd#Oc0kI]k}Y\Xӌ(K!ǓI =t_?JE+Y,tJŔBpTw|X|^XIՊ0ʛ >{x=FwK/e*)Vco/d"}O3f[&7݇hߨIeZsb42*/k,uWUw}F:(*}+^ZP49{(U9ab˷72ýQp(S;7wDZ]y/?vFwKbuWDFcMv,Cd^p@B{gk\N' Cvf%+nz(f̷}v{ǘ>n*˙π]S(e@ D be2:R3%lwr[a{ZU6?}^H6Vg`oTXn+dl&,nGw (o^Gʡ[+y]cu ?R/G`3 lZ 44e{NRz  ] |d%~ GcfZw44zV%V"ƔOwR_3H@旱(7v0ܮ4 U4[Augiiaea j~i*lݎ#v=͉ {?]ԨJ^4IC>SφLUmOzk ͧe2uy` &FLZZ +iR|~ui/Z0')/:]mqЂSS'kشY0zcTV wr9`*v#)-ɃZ=FtnNlzEFJb-퀾>yNa803vT Mj0 c/\R'ˌ&(=glYL%[Dn>hcl*+Ww>gKV03xUp_#VbIYuܘJQT"i،BrncbW#g.RD_!V)PZ/GzN1]=I\4͖胉Jq:g}R~zZ+:#ɳ/I=|2qH3W,YqoP˹ 䐜с}^(f|f{dƾ'A8y%|q6abҌwX߷zM^X]e*A{5x0_) >+#r^ɜVlfPP#WL_-NcYL.[i)s[2|Uyъd| >Q+b)on8w33P^XW<=%TlO=%Wڙ@qV PB v_)/>~v)y\{LN_m *;5$~o2$Q׷:)FGk%t=Y{ϓL%%cH*!%Qr5Xc贺/Ѽ{O݉;W{π* k~4a7ntن V$ EQ; *WO+yѵ[ Zx{:tKuǗ9 Zʉ$ 2" #X~5q)_SսS_ΐkCC"hmPhi=}k,Є6R;u;,]TڣAċ{reO#9Qshϯ`X6_&_4i&kY0u'%7W"sv)}Hkٜz|ƽGM^%%_gŵXE:=lwO% 5`:%^ Ku52~@AA-!Y Iuk.b~}4kC]:M)Sp ~b6EvPsq];C-wj9@/Bezܣ%'^;qڋPŚ,E6VIFէulvNaA5-vy=V=unl/; Z97[˞͖=,iA'hO}ٴPam  xW6yn"wUN'Vifcl:t\aw ' < ȒSS]mpw27ݱmygnXhΖxyR%9WCfѵDr+1gjdB/Og"4V|kd4km^^ PО 4K Z/P뒳[𓬼x.#͒MB4Pӝ.ҘΘ7DI3@O_:th?- C)ՂiE/= +b_Q#Ъ,Xl(ˠ!YB@~Jڋj}ˤ.^7v=uEe5zY%I@_$EQF-غ2qn2{5,S$GHI }+H҄yDԕA7^])Zgn$In _C~#%M]:=MoЬ5;4ǔ_VD!ZuI(Ivpڰy[4,ήj.X>5JʖRp$DNUҽDO R)b-0֞bUu9GUm=#ʢ&rO]due $CZ:WK#l0e:7&֪^[hF;4BIPg%sI+v6(\L֌:7v:@'|PfXYhOlpmjaWEhDW6rq_g3"@V#Оd觓kº;ҎWG^ȳr W2un @ @ q2O1.Af|4}5q`J_r @ @ @ O&UziË0vdGyj+ @ @ dw"c8iu,~f`0Z'Wv_׫x1 @ @ @N _ى;xęlՕV?N1 @ @ N`惮`1@ @ @Hu2&k(  @ @}]˨f/U9D$ @ @b1rIg"> gbf@ @ @~DьzvuŇx @ @ %p?}Fh,Eu{B~@ @ @n :q_#u,]mA @ @HFKw==g֟HV| @ @ Whʨnբ_fJ!@ @ "CYl#@<=ڷo *,@ @ @ȍk_MZ7UxgSϭ$@ @ @ Sk5z^97a-7Ztoaҭr(9 @ @ 8p},osj#|bi뷵#Xs-&C @ @(/cgv> stream x콇uN!%Rޞ}>\K(RC?޴v廼ISH @&[}̮ =ER]]݃7n܈O@X?_'r:)NN5,ߩJm}_'Ph˂Tmul'kRʝ˜d**ƂrW ػ.MŮ$I|{)xw{W XKWy0%oGa^@v!v!yw۾r'܏;antU?,cFV~O(UkHβ|Fw\7Vkk׍w,w-5薵ݶ6nw;{݁ͻ]x+tr7>I SmDžXc@ي1uAލ½fnaie*m,e,eȿy}2Eò1qCxʒckճwI|{@Aσo\޼u~*!1zm1'Xw{=o2YJv];m-[kmKCʻnr]dEt?G?x]̵w\-{]kmSw>!zz<7oUPFo2v:~5qߚoK>%߳:G#W;x##wU|UOTqVn+*j툲d7&nm?և>VUi+y|)uwͅȚ{I蛗"`su➅pSSG#g1QKW;ԍkn˓淼mWp}-S_副W}>Vzky!w㮫qqqvQ}ih #LU=bP48ȵqgN,tQyo>7~L؋ Nm?ȏ2oǹyE`K~i" T;IH yw޲9HS~l*;^O"g0R;ԎPAW/1^W/㵫AWf|1 U+x2^L4 "2\I,%S"H8N Ga,!$qi7.;[1ITyff<+AS;ׅ{{cO$6! gqqB uo' Y\%dkS SnN7ʒeޯ cYuA> SqdÐb )v}ReL5/E?OCYunT(>LIRATvD+>OO+DyMIQ~iHh7 P(ݶ}5;A3AŨwؘ`ODI2^ث$yF(͘!‹dY+cm9^hB"ģksGy"| PWeqmxC".P"#ggi}3L0{{NrFV3qsoA~{=7{V=b,yh&)L7 }xxxB4y -w婴UU۾U"B,) /y1M[iտsyMCf(+-Seʉ(Šy"'gl4zavp>ˎw/3=+/fnkW^QTAb ,v;E1(!`t;K Ue OU09[ruy\#$s qJNwβ݋b mrV]Gt]= 4!X`A'~*|W4C^+Qsu⻩&^rȋ#SEn ]?]qT*=Koա22V:/pj\]XZ57v85h4p3݃ cYn> P9H/{Qs ,Cg.+=kg(()ZWWnQB\?B0! S-]tk~E]kA}z%YՍduJF  1NhD~]kt.yZ]j]gUqT{ZVXkCKmt]jSSmfͯj򲪞WՓ2VMA,w4Sr\?0;L(r#yUq`, Ux8jU=Ok^QFIqiqYi9q `b{P6_!Z̵0֖zUW/jIeyXZEbCUqvjs^?4'9ًwSdzx\:FYwc}0;41a'$ݞdIV4 ҸuX%]MYB o, AIڄ{^^NguрFN^By2GH/^/*~FWcl썱16f07ƺJ7˺zZ]^66IJUQd"e01| P30*Le51v3#/31C?; 74GQah4-24Gy uq:*Ѩ7'7Vd5zBȐ1b|i@R1=/0.fll,QMT n%"./s`FZLwR__IL 1e0'RGcdм4; 7 5aJ6֚$Wd<ߙ:"ԝiLpv'UN ѯ]θ;@ѯqL,OXKC( 20M0 r>}32Cxd&vjg6vae"UȨzVCR˚pz7&)W伡j˳ ?ɍ΋Xk3K\ͼM4MB$Obi=MI,.eAY(+sBUUfP7)2%MMeJԣZ߰w'LCYnvbLTG%He M)$CQ}=L\-mʩA̪&VK#;9̰)VϦ vpAļ!^T_,\x _shΠPsQakyZ^lNe,޲҇ޢ5 Ҝ6~e{3pJ)Kkp7u @uEY=ʷG(&8Iyu1x5vrbNQPT- WČR(WP(R.عՌi~eL̍ \zx/"/<#YL%yRpjjijVK6Xj `͹ΉEz ͚YO!ֺ`yI](qCT[ #Ʋ ;![8 Gsiojm+ӮN[ 1]үDw͍ 7c]2?)37Ija(êNNu5 2ZFZ i"Y2ԪDjmևPm Uf%hhhZhA4Gsa8u `n{tM`|texR.#mԆiq$z: 7pS77w5x#^S,M:T鴵dֹܽnWJ$* 8Ei7k?ɫA4E5Râ2^&e1yleը#1֘ƎUM*~n$UalZFk OD4uoF81ܝP#q"&cqŘ99x. v&:c5L. =_W_5;,Th@%mTyDm-m-֢m5& YMjZV3%;jc>hD&Zsk M8R Q^{rC˛"nUH'[ʑ WZIE)ʑ &s=ba76琇_x%;Ac fX,/3WA! =Ski4apy.hΖ5o[KZPBd-.j鮖U|_+4DOd7՚SiTZk-qגfJSMj7 ohٞpY|eZS^#b"VUuWS'̛6ŤXoskb+,<-@u&v3L3\Ώ[ۚMPꫀR]m#vpGthGuDGMt ܌zZpDMTkL5vq39&̵Z`UeJ\ucU=Z;el0 #zLGf?qJ@(s?xTcj Xe^%M]{ItKBο4sKJZ@BiiiiپhTʹ\c dĥֆTMDRHQ5Jlp2u4)e zn/S4hљxkt..b̋WQǰœnᩏ'QZnc,RG #U}uFh2Zlk/ژ/HXUoW+ZZEZ|%ZZenaGĹ X嗚Z**iiuՕi=Uk+tB Go"k:奄p}3b|I^k3XjRE3j F 3`U:uj* 32$BDu$J/M ^8RBvHGQ+,gkROk4p1ӂ}-<"-6C-IjjVi5ܕsaۥ +jZ\`U5M`|n@_jPML5.jT@ zRMdFi: K\/AJ~wh,, ^[eLccij,;%]#u퉷o<pC-<Ԣ ;c-9R#-=2#-GUkVhuXft\~Pt4M+r4(S}hPQ; :ߕ _Zڈk XʵqQ"KXKI&noN ?"Ɍ-y1;$XuZ AuCef44wꪁGfJ쪀ihhkʼnV5\vq߀ ³:ٍOo2kMm@ѯ:by{_&ΔH]h( boZ$J_t +XXϥf(zLђS-5S-3rS-MT+MTȘ[kp.L"&. :&(ntM{6/Ny@#N)F_|u K4^syk4o,ϋIEGaTV3b $ O5{IN/Ӌ s%k.#X!#;vqS'7SPGoT_8bmd*T[r%,8Լ,uC563-9R3-=Ӳ3-730J3<*36ٲ  |:]_gᗺnAqAxS1BLģ9$ #z^ݢ-hh&JO7{)NI wZAǑ⯓vAdZjglwl 5@`)]%騗doO T[3s|(aEM -=ײ - @UkVk-e\Ukslj\Upްހoxca]T]k1/ dR  |̉&=XMzD6k@yd+ z]UHr{'%,5/&s*&kVWChL)UpY/+a9вK-KJTVYhU]ҩВfkz|3,o {,.? X7^^x\_5&Dmja1]ZLҰE'taᦂ(M("V*Bފr@ "nZZX*}so bD+fuo/14VP1H_'0zZaFY`%dUjEU+ZY*VURjJ0#B =N'jOuC/Ɔ*P#JouV檎p7|e QX:J@D4":9)_ ΠHϴcVƇ8:bw{xgYp,[+pLPk-/b/5Iy#ȀP~~HYM@FjBvBz(֩mu:knێTm.ɥoX_„/1x{#J?_L$4V~tl#ͷB/'CS=N4XMHPMuUglny;$lSsetYƸhEbiY9vL47$O_^Y["- *tLetКQ40wnOK(<9fD;IQ0>v1!n]yߏs>(ߴ/r֟u!z_yLfIt4ׇ`h o̕hO@q)J{PibR ! >^A9ɦ;q!aP&-װ%Rs-ceb0ps3 c!N&8骶bS 窧.5ȡ0EZxV-m**=zOB߸XOW&%z!˚Ɨmf"Uk8\ i-4Q]դa[]8?ÉYN5qfŴ [ݴKqjQ mOY[nT:0ޘ B/,B]R9^[UΚ-09gY4FQi.CS! w3p"S{4b , K9hNTu8LO ބS&lwtF yXv*v˂ P[LSٖOqqe58Þo-Ss$8Sy|"5'k*Kv3)`XTS%c/Y$W8&OS;PQBϴ3RH=gTT$p|9U=,fի_*Zn |~HtBMnI`[}I13Gܘ7`1##@W`i{PUѠVMQ7k:\q?|QSeٲ?[b4_fϗ`PI ׿~ŷ;z>\a;%pɢ;ÿU|e z8 p ڿBKAptݭ "g<+>B<$Woq|2,VdfFTc֙8%{hOي؈TH r?]c_ +u0(Eq`Ȭ-^GY%5%XtQ&3eLAܳ bXB+M}t:Se< >E JGLKsέp[rE l  ZM$+.bzRUb՛).LJXOV,9 r@}d/3혼,/O!:|L#>_Κ$?XF*]AA޵at `ـ H[`I1}z#+mW&=3!cw4( z!wry 1]c+@ SbXݳzv1Ȓ a EO#3yuDrcͷڒuc"'T["^W)br84 ,I-WcoLc 67 I!TZ3Als8RÏSțR1p!<7Xz2gb=D7S2n^DMh@q W竃&GӛW0z^C.H<"_֛d1"#/ɬd<|WtUu>K1L|C0D8HcLMJ-Z e_hfѬ%w$^-5U|\ђNB$ |hr\!*^BOv f:ˌ{_ag J(N6򥁺;"o{9Պ/ͬz]]l<[#|U{2*AfȰ*a.ւ$Ŏ V!,g!HY7S)\rER^b*1k_'(*ƓɏdҗuEVYBYbX_,1`8 \XGL򅅱%D|/Em YnuR;SFShBCh; Wd,M%9}|Ip^Wz|^3_—m5S.Yae0m$ʍx-#EL|jB-P1Ub%U8 'm ~aCWSE2k=MS*;c2  ^-|_h!][ՓU ϺmW + )Yo4돉zhJt/lr5_vW|XJ@Y;[oxU^IUe1odK,V}İ73%-UYQѬ*&sL[b9WUPmvK Tt $=EĩzhϋuL L!?T]}HRMPò VLW%|0 ҘLmKiKfe|·_fWzS—$+`ϭfLm[ ˛c!mA?O|@H-+^a04>80]t ,в&Qj\GW_T ڳhg!X/kثKR蕅Iqnri:La $V|ļ$,?7fE挟`D,Lp|vK(k`K_ 0/ۈILpݙjaKA/ [A)b24^[G=ALo3y'oLV!zeii,9ATIGuҰK&G,I'πKhj%Y+/ ļĘaİ) ļ:\dJdyHwn,ofBab;؃O}O̞&ϖշ2L?G + ȩyψKLJ8.-%֚x2}!V4Oƅ~zW^aaVY0B49Ɗgݼha: QX-#JS5Ό@_0/n+>|K&~\obNJ^8w7ùXٔ)3D2(Gc؎=}ht߿߻=4Z{IdqNIZODNәz2W8PǡάjX6bQ[`H?vCN7S*DKBB_rXA̍(ߑ*lg$J2Idވ*ף\k=)[E=YҪKWY\7_}ګsbFp̌7V^%9fdpiL &h<:mIXvZO}.wOLwwϮ,@ʐ(2KaS\4<,Е5RYiša8G:iLǓP`|F9|C /oaJw Ͽ<|u7@zW'+I?8 fej]!Z՜I&Gg=²͜2g}͗|Vf$27X7[ufSۖԉo=:BVcCW{'[w/SwL`W.=a/8, Eܛu9vQ)i`p?|)!t#/ZǍmtG1y[|nv1.l6I!z5%[|BftOY0e~_Ն-r%NIG։6|eMٙԬhLi/y^dȬ`^=s-1B#@s*&Y (R) 5\${ /N .o]^,O MV/nٺȒ}LUĬ<)csaG4P6pV/V u#<: P&8~w|q0<;%3zL1QTQiaGKk e},y.M2-EVId! |WK3Y% [Dfjudʼ,̋A)Uf^j^4PisK8raOI'1ps]]Z__<=3lhG['%(tyS ʁrӏ !*ʄG6NHbIֻakudJ|w#NGUrqw__|W煮-<֫-Lh {#ݢ4._XK{.^$7k+ 5|XS͋3j GEeՌ@p+ndԠf1\Wdܱ.)#egWON {Wwn~kwB =u_ ~4*u'8 4Hf0ÅZP/L/ιz_@ E ْ/XgPAz6)D.g}.ݶ(yC"g\O蚂w@͋LjVH[2IҚƺ MyDf:-bʗbDz09̃H($% ڱ^ΧFѾo?O 띓w=vB*Fe֞ \ '7|gDustJR, uSՁGkQT(Q␫M|Ɓ8YjwLѵỎԘ̂KL(?#ͤۊUƆ 3Y-a^2Ŝ. Լ*$œv30o KVZ23tMxbG*V2ch ό6 ?B%/<#"n 1hESH29L~8I*BZ+Ҋ/2"[vQLѣ:MTX_.WUut)o=Z/7)@ThKsÿh nJS" jAg-ѴURA.!r 10 Smc vWgVãf%w c>JN⡡7WGԽ=Pju43wJ́y؍993xE4ɥɑƐ \S JDʈSFBoLF`#C' z[fY~%zj]GcU,bfWT韤s:&* Ѳ^ Efs9[P[g ԅ?q "bޭkS{Lօb?\??|?<~f?GstRq4/v3ZƦ6Ɓ֊:@J,LqPwd`6ˬX7*WEp̝%2'q4yI< @xw-zp>W߳ZX,]fm22n5^2Ƚ|x o.q}_3+|my]|t ݹ1[^^Y }Edqݿv3;w;=jS&~p3ZvE?j!ǤF3C \gKHJT]`'&'bAy꒧ibk,, %+[GmgJOb`]_- UV1_2~trx+w;_نŝM/lE/}i_Z{_<;6߆>~W|&ޗWWOOkg_;#?Bg_?9 #O䟏Nqtͣzvɲ{MҪ+~a ^w{rgv{KSAx"OGMzȱq&yq,c=]~jn7Du[ʭZ]ܮ@*n*wjn\U+J^BU[-w;ҝbVx+_x';}+y#|5a$P{wqus _ĭZ>L3A#Qـ~g}WAA˿r_5r]'.?8d?z }r/`2}2ol8/WG27ٗL_1b꫆˯_]~p]+WWo w-, ^?zvFzPTwʳ'6`a+pvo,{IvUEUͪjX./TLUUUŖ:{7ޛoOǝ7W˝7o___ar#Z\O2?J mtSO+EM5^{a.7x񻁋 w'p} 'x۶}߾ow?aiOjw!]m}֧/߿?c?9??gOtOwt>?Ϗk'ߺ1~*lTRS˗/?;{%']'tqd?|%+tS{ЧM{o?4q {П\ޟ]g.v?{ٳ]˓ϝl_n}p|kG8;~g'^6o#߻6__lfgjWBT$FD夁6x^.m,@lT\UOTP]rh>z0ܝno7W{{r[꿈oJlF>[|3y?͹`da|?jO  p)_D8|?O_ ݄GFJV{ ~=sO?w:g[?x_?}ӣeezpd^,O<_1?@*c+VklӅcUۖhnNAUqww"}]! q! !Hp)kݷv:8﫿f 9a59c}Oc>Q'pO)x}ǟk>X۲?|3^諒z~쳻7O?rExֲ֒-Ey[D61C{}$tui}_3^54l]2\K7vNv湿8o  p[Z|\FFǎS^]M=q)]%CCŃS]#]={O~ Msw'wN qǏxvp} ӧO>}l/d%?* # ڍ}W\!ּ9  2ĿK: .k:d| p`pN: ./󚌶",Z Z $fk p{m{`u'=Ow4v6w6w7 g MM L&ZZ~_P~`rsoѫw0ǏspaOdزk~o~~]y뽨gwyx:u\rwy{]G6֛ V%ƴikSW'My %]7^34jtqA#2 }vtNwN8o;'ڍۑv,LGZ pZ-׶ɶѮޡινΧl{_{䁮ដɉցz x-4">|vS~aG/dxwgS?Wyr죍ӻ׀+^=_vvE@|rUP;Kvxւy7f7ͯæ̮M^5&k2d,5 aïmڻ'Io^ƽzr'v䳭wBzy-sg\?su{﮹n]s޺K[ܶV]VNYv|rs֢-sglM[_2iyeژQʐҠB|\Lttll|bbb@homnw7xw7ji4)6($fg8de{UE7ĶF7ߜ궖W؃lʆKevvw˟=zw?OU?)UogyW_&>~̳ OF> t;to3ݿK˗}Aaںygҩ.7Nޘwޘs>x i+М/Cp8fyqrurebybibq||||||N1XhHP`@MmomO]w]W}g}G][Us]KGGwgksyUAIMLI3JsL>ꕟ\U|2*6nM/,.hXVzw'J_=e7 T}óWO^=N(n Owl<޺w'rv7Bo\ wog.sen7\o,Xp>|}+S'&lm.a!A˅~˹~^ ` 'k7El>dh`h`YwYwZXU[TY4W75ԕYՖ֖XVed%%h'DkńDEGۤ&sʊVՔ7fO-|m600j0888>>>99]Y{>)+[w/{+|0GvwM~N͘mD޽u-ΕAk7/X=rҙk >WyϺ_q]v4uq11Qa!ۅA~^^nnN["67ԛuՙvԘWUVT44nrRSqcQCQ]Q]AM~UnenynY~iQiaInAn^Q~aNNzVrflzdzHfxntQBIriJYjyZszZPznPjnU[ׯ*e`cg34&89+;si%k}-܍976oldn\ϸ~5ՔkIW/'\~1f}rԥ a+sK3S~s㾳gfFNOyO zN{vwryia~՞,6Y4Zu7Xt[tՙw֒1i&UZ+  J k j uu+ss4˳5˲5J4ʳ˲4ʲ4KJ˲I&ƥ9E:i:iz)I:Y @6>J=:L-,P-_3$P嬷* 8  cށʺ{zY9abg=JHALI7Z!iٓ~IYa5a}c#SSSc!#AÁF} u{wzv@lrhphokm;nnBXaPnPfV_8I+6-2.ԯ.ԫ.Щ^d@ VZijIJqrqrQRaRabAb~b,I!7I!'Q1;A!;_sRH馅&i)Zi14)Z+fBFlP Ր @?CJvÔQ=BE}(wG}Ou(4jQA_edSV55$)js 2aaſ>$n|.5)խģʳ֫ޫѳɣ٣ٽŭTg$ɹޮQH"5U7V56H z"Z@[Ev< x_Fy:ʲT T%%i٢Tĩʅ)Jdd$J^J^jnZnfnN^nnn,I';A;3^+=N#-F=9Z=)Z#1J=.B-&LBfdVXfvpcG8- #(/%@MAIM拮EYYY1qk{h#SRlGQP12DĤ%dEdDTKiJʑL--孭ll]\\O)*{+{x(y SppyxK{v']Clj.yC0wӿq\{Ny<\DN9r9 d/h'h+h#`-bo%bg 124YHF|C2QT`d`cbbe=!97;APP@AI'556)9NFAoegg?.&!!~BJRFZJNVZ^NVAANIIAEEQUUY]MUSC]KSC[[SG[KOO@_@PHdlhB24%LL M uu uյt4U4UTeT唤d$ĥd$EK I rp sp s qr201s32q20q3ha4t0jZV*ߌOMBC3 {{0Kk*| E%eyX88?00q/hll:23ˊ##ͭme98)(({...>^^!A11Q)I EUU M-=}#c⼝)WWwOgϞ;w|࠰ȨؘԔ쬌‚򲢪ʲJܫHd1@/ӧ=O;ZXۚ[ u 4tTԵUeO*KˋIɈK IH |B<܂F\0~pK6nVqr,v;-ѣG;&$$dggU\Xdhb&!-+߀ ?q!^>N^./h ,,&f!9YEA!!R'dX9- /*",)!.#}BA^^EEESSSOOؘdaaago夻ϙ3GDE"%$'''fg䖕UWUW4Vjk+*J 򳲲cc""{9flbfehH250WQTQUT9!$K xExxx8y88X9Y8XXad6-/ -񵷷pBfFFnvv n/ 7/?';KRR◲9ww7.NN[;Ȩȼl&fR خ(fff^^^AAA8/bɓgΜ  '#ڧ$deedgf}izzZrJJ|BBtLLDTTHXX@PY_8){G'k[;3K+ Y2b'DK prrrssr"paw03111+_lLtԸX7:::33o78,NVQ_ Ł+&+lcc ؝!)*+D3O)?JKK9{699 q21)KK[GPPW+2ʚz$ӧBCBOAZYYYUU]CڃWU~RnY~ ? mȀ'@TߏXt``mc@"`ⓒ:!..!&&&,,, Ǝ+" %<W tP*ÿS4 4,t, T/e" 1." JdcRVRR*",{wǝrsWu=v_1Q1)I$_lh``ffH$7((T*999##1VT74666Y}}=ம(-+#J@ <燍 >u *9AA~ j F$Wo_\:ZZqTȯRwbbA 4tD8yր//Dl}UP⢢ˇK"+{u y9yCmmgc[WWyAB:rrυWVUUֶv|Z0q܄D~E +#sBRRqQQ, |98|KTd%KKOƗ,QQSS\zjc(Q.RQ"UFG_apH/m=q)v.|x8xRI&&a 79(~Chhh]/H#AK$_u=}}S0+gt<=q?##RSpY C^䅗NggW{GG[k+~ (}jp3/>w;@OO[KSCMMYQI^VNFꄤq0B̫/b`D8\2TԴTT02THTTlllaaa^PÄD3gQqp[|ؙEEBDѰD6A1CN^) 5%%P&/?h4/H9rQ a!/wugg'~(#b#O#\bjqqqP` bowwvv֖f&&F 4ii)h!aA~_:Z1Z1023G12aɞKMCIE THSDr u,C2:}T\Jba'h),|.8/ ` +kiivvx.".!/^TTUl@yHθX*8/|1ghppttdbbbzjjvfb,^L{c?kkO Gů%bu|| aa9_oow7W"[X Jkkiʞ"h!3<<(z×PZ*MDcTSʣGC׿oN ) [[[;0((`KC#YH@"T1;7lyy*/jUS3sII)V66CKOO '[@ QQQ_,!b ;\VTV- dUU]UQ̤Qge&%&DEts;dgenbjle[GK]]UIYQYJ%.R&Y (.<$UgF&_h L̴t ̬BBA HL ݰqAfp 9n>/AEݻh@T ؊g}PNrdaaTXjz}CPqZ>A-/U V TW   utdwgv4$7&6UTT](*-(. +(  OKKM; KIONOJOL HJONKN9ꛘ⛘원t>1545Bfv\VN|N^Bn>FgFA*n]\X]z 6'|1=#C@PHIY/H ]td!?q#>08LNb&_P&ajZ*tBhP ED !2#B͡X8rە{6tĭ{Ol=y<|'o&{no|Fu/az=yl{2xhЃGCwvݼsN׵ͮ+7/o]_:xq}hem`i{fidocbfM|ٿk={1 %4<ց,a 9h}Vii02);z::|]𥢦0G77O޺?r}{@ùݹ-콚fٻ?>iŏ/~zw/ގ?;#O^<~5УC=}: NvWn_htuyybjJRB\thEgoi{OCջ'*+//!! Ro$J_૭|{2U(~9Bq qC,n \h$>޳(Og}w,w,CI.u,Qx`[}Wlj;:{Z;Z 65TWфXw )Q$E'55ŎA&4|KJQ]9w$ǥ9$=uIQ1uPj[A:*?!nAGEE ΋wZJfF:VfVFff&Ldc`fK;4ZL Dɯ1gJ*y/06-( !.R'<-M]m-5euU sS\OFe6w LN/,uOL/d: OMMJ 8} J9߳hnqgw@ Y`C~ 㜯  |L"_ [$t!iYN> 1994IΞMHCo9#cc?g,վ035d@pK-iUUCKK7nx1tɩq$n ]v] ega275AimiA UWWhW<%IOO#EHp9M$t@Mgss fׇ^}"hni%-'$,6&:Wo}xcDΟDNcBDD(~.55^H_ õ#Zy9ySR` Vv6']<<1Xiai>(<:&)-#'/z@nA! iEhB{  8HP(H_Tt\ SR 4Wz S2^l:#.{xbS@H=lڐa+22#cwqpv12175w7Є##+Dfh9v;^@*  SX J<(=_B²Zo|EXbbJbDKB |!O!b*@S 3MF$C Q I#^dhlB253657"iôutП004177 /y=C#]}Ckkh"UUo0 %_BZSw'`|B켂<̜|L0^ߍCEJFEݷh߾:t9JpcG(h#:|_&:t Тьy# eeg#KX4:>_1O7q50K6$::`455%O@HA&|||PsAߏ AeJh&C|m-v*+/h$ n=jlI +lCcmlm] bi+))Hu`bBb"|B<|x C 3̠uMN dX Vx/ zkŢyHrh!Š%I`(vܜ OWb>] JOG٥%@L4Xh+zDJO'~qn..UCC@:GhvAMlf&Jc""coDǙqqqB[}1ϩJ솄Ǒxy17 GfǎC ÇAa(̈́CDYAm(<1_oFY:Y\bܘbW!n^^ 3y"/ᾠe?Bcrrh]rxPP bp 1 fa nOMEvb,+`; "ڛ xBWa0 ű 0v+Lâ/rttD {Qo #0ƍ/''%Av۷/ѯF_BxyB‚DLQbҋ qϼ; |RKNNDmlee898?R ! {(ƭPT"n޼~.]BN[K{e  ;@EY( i2C 60rCEGC|1GW7( sާOR<|(!aq3|fSSSEfBC5 SSB`cEKE@Oy숙ɕx+@WaQ/US1OE*<1郤\VV BИ$&!|9P"qKX 30i(N!LԔǜ580fohh |1ˇ 99**> CC>0zT^Q!$,S3Ҝ<ԩI ٪EED0!l/!nF1 q*"4)t/ȈVWV1ֈ:<2 9M $;_h ܀&蚱1 1$,3 K)Y_`tg6tq7Pq|P 3fϘ驩(ʾvS3B C)Ą$9> ?n&p'bQ5R0jPp hܼtS 4Ύosax xE{WWh2`(/&5`eacl4 E./@k@7|Z 'aJXH>n?:]WT>(M.NCM݅8[0| n@ t8]Esx_'F/\1*y(<\ثa*5O0v3Sp*YQYO@K˅!Z-/}NWXH ' &q` /a:ZJvN#VuUn>B(NKCM k{{ 2???9[TX[nAQ~Aa_ȃ<4ZjJw}6ES n R𥥢db_Wy(t=2.J`sH^""0Ψ\/"*^GjZ(9@Vyi^dtEqV_1jA'pvQ2SRP_x扌,y flZ4p_** >^P|᳌LM #C+3`fgν0N!2_LnBs'◊ &r04;4>6~+UЖq3EGD4 7qkok:</E :atEA*'_<0?b X({ !_ GaЬiр@%2Mی _>/9yyB!aexE & <* b3߀~X|b4pl#^Q/@! ByFW'3`1 !ā&H}]ZHsx1两$h1|x3}*1r |OTL0̆"`|8n +Lqsr3Od?$b5(dd0)Џ̉)btY ٝ?hjn& xjE}6p!JDDg%%TH=|cn3L `h)C/`zM Q◣ %zed1q&Cl,Ա"?a3$5@c/k͍/J$7`B;t Qa"2e &$faf$eEVtswǻNMഏ7O AGz?߻;\iiiHh$AuptTL̓D |8mD OlűϿ߁\T endstream endobj 29 0 obj 34315 endobj 32 0 obj << /Length 33 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /Interpolate true /ColorSpace 7 0 R /Intent /Perceptual /SMask 53 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xgXcW0wg{neWQDI PBYBBBBB @s(*Getϻ;;{z\v{*LA9Iw3w |?ߟg3@[6nnh69]5'+q&Y إ~o{zSvGΤ3[.'ڽ0;s;^)+*.z}k5F{IkdRp5?//./ FKE[buC}+{z''lw5w뽣Ȝo9>i_k,4&j{fGz{FINDóKwB 55Fcbhwz@{1VC{Wcqtvtb]C vuEN5Pt/ޜdkw?ۿ1>9;y}zֽc`90itv[=V7띟siIM=WO?}:2QmayiIqqianr}bghՇZ[^\XX\Z[޽|GZK:GoiǢKs vhj|8y"I݇7.ol 9*j8"-%I,%'dd'JT*bsV`b3ͻVb/ラGlJYyq I/ǽ&[`w/'N]_9U:@fIl9#'ˤd%+*M-镱[=˷C[c6#";\:} ͡ŕ`tK s=yMXKx:4{mr^l`+>z0{'+O?ٽ7r#2iN-WWV+Q3'e^LNOLMH'g'%7Вv,=`wuZ$:֠k"<9z돖,^<`x 0a *L7&_5wFc&xc{576H__70:>=?6εoGO[hN{FzG]Ў$"5;^[|xԢөPy Nk 7_O>rBX?c##ss++ׯ]zoxJGl+dcXx?5.cV!iV[du!-AV*M+ -]?j[KK}h,N,oܾ~?]ڮspT TnP1Z;b-fKhvxCN[Īه{<с1;.b`5Zݼze}7u{{=V_;]ϷFMAO<@7F3;s[fC2ĕr;?wO} Τա % 3x$:RsDd&rDRV-Plpprnl~uv12 "D]ϕ;ڮ]}%iIF d㛷WGgzƜ&R'K@el/d:~)[DA%#M@$: -iL^-VW֙lEJKhXf H1|l`d?0k5Z[Tmz+L10d CV kkf6[۫5F+:~G kHY(UBlXVT - 46>oh49SWGCs$WU#$bZZ,H^]t?|oOjP,u(<+D2Z6 ӫoMfXQkB \{\P^U[ L-,wnT5sZEU}M O6az VO_i1?7>=-`3wϙ|}5fW)56teݥͫ=Mf;8QtJJmjwCoG`nay`hyP3Yv{}k[/(4+go/_ǿ^}'6FTuPv:ݑ+}P]~ [Nk^(S18bP޹BPCݽ3K7Gc5J.L"0v10^x$-/~[cúFKGGL 7ͭ6=f[RSKXc}caX.q!_1BC4дc`*Nj8ΞE3dB.qΐhg& ٵY 6@"bC$ayjndae]Rݜjjn={N_( 'iFɫ qLٳ:HO]ru:O!O㌹]8QD %]6N@-Utyd|lˀ3능cyP# 98S\q76LvRNqNl@`Źxn. lsP lm^hXV3}7߸QDR;;gIJCq` P~o.AW*>rR"wxA Mx6C< zgbz`~P,IZC@ؒk&<478 [L*p YZ'nUd5:Y k,W[C@tl) Jbiwo6b4"_ NYI,(ԙX>5\ݙk u Mspn~dkD%I&fĵ{`g=N%=} g MLbɴBhq k[ǏWZ*]n`ʒa$Os˻ޥ1-$ᣇ'6%lnN'Z"Z?x ̬]"/g0 (սoѱlXY޺ն[hɕ"*^v54_ Ej\(3M<sl[rL?}d<3>߷jjlD8w+綯,"vaj^ѱb &gA|}=[GeHID駟|[)bzgf#fs|UZw 2p:~_u9Rr~VC#K\ޅ"·E ȃE7}5y>30Q (k%H:(Y"T^d({t3%gn޾X]V“ǏUju|v}Gu\=s1I\(a|_ ů+ KE*kZp$TLIŦ6>I Y۷o}d1 rA]yԞ̿FWOu//mK_TԽ>kX]( 675x 2u˭{>vL,4'>-\0>(kF _Pp3}_\Y;:W|Znu@s~9^;lx3+b@ Tk`@!Os<Ρ+_?I;7o~AQ0bvu :{FO,1)<5-QeBUkrm2?|ykh}vc Fqk Y}Ѯo2SKK.u޺ @opj=:lξ&%Jx`{3YYBM|_Ә5jkOcnЙd8="44EG>{ )- 겷&ee&ATs Qf3*WԾ&H$VLvkp?kKX|Qhx!!1Wvv@N23hO@d{b.Z\}= $y g8M.Q׾W\RQխ{~A/0}}15#? ZeHQEKKmщnkh `ϦWRIrfju":Dy ~*tV A^N_q_t:geR!}kkx2% |=spp֔Lf7$A A uBE{/t:n6A}` 5~BٽX=VPR>p^SPY!|_3Iaƈpu$'oݼP' =_] Lnk_{eĴo'<)W)㳑{}Bt)0VihfeF# K{No6ŗ +n,ykkK A0쉥 w&vj]_ñi7A7&mN~YEw<`lk @|p%[:ϑHz^CO^=8M2 ޡ2 sߨDJ,`WZoU^KpR3lP?ѕt=|PR%[|_3 N4ʵDO|:3l7}Voػt_jB2/>=1qDʪ<%272&VOK3w;<5F_7;n}JSK/Gȸ3~?Ȍބt)7"{^?S`qgOI-*S9y|VTPbpr\p~潇_ǺfC/Rޜx@&.P{Eh~>^}E$ʕΥKUYfoW^IP3:sh$2sż 8H/N$1xbj ktkMί'=}sn@ V鉝g+9FDŪ`$284TX3W^Bdp@9"hp3R@4\vSۮk^'̢:mǏNgIA|Z?ښ]$;oܺ&g-:خ֓?akRMM~Lr;~kglf{oz&Jd&-ٕ7۠K4/Y|߻1Yd89:-v vMw6#ܽ},dFSN,nGO?gSplpbkߺ8X%=9gagPEZ?Brrhx8ZdW]9~ wy`b6B 9`,/e@AN#{ot?38O\VJ&R mUv@|LWzCBvqyS']?x螴Ɩ&׎$+]qY7o$QIp ا;"؂)4>L,@lmXͣ*@|G0#bM mooST=cl=sMqW vO’NHSA5_O}eO$/u_S?~fo\;k\ $e*L?zzt=֞zߨ9&P)?yr`'k=/؈q3ȍg#{b~Gcq2_JʾtKo:F-#!ሙx^?5 +П&-)X;=YKdpf= VX,)+/2\qT&ڠ]#zӲ*kRz~rG9/2+DjIBa-o=C_ɣ\e|rZ ڶ[w_I_8: 9;'8UyrLt gخ\RW k=>Vt>UMWAL~볹_X _m Mu(*SϟŗXZTq(,>X=:ԯs X?䷯jxnLɏE"O[RZrWe7f:FC}GwCnhk1aL=U.FYY-?ÓSM{{pBnyU`4W_վ& L/c^ř+#2vutgtb> s{+u1W ݢP*AYtw;F 1s[1)p{򕝃c&Zӹï-UziMTXOr)B6 ;)0 {(>55;Ft(u5t MuuŷԺIp<>/>#2+ TW1wXBU>yt29#~%6:o L:^X/J`cb7g c#JRI\6?-ncxsp':⠊JN)t$CKڹ\g#~ɟ;23S%=ËQxƵW3'M*{߼K7%Srq"U3Z6g꣧;Ӡ͆cV3(fF5={_ݖVܺUM, ԹmѸ)wW%(Lj1 ݱY{u D(J ޫW=$6<:Fj&)ƒ3ikt'sₜ- n͓hp-T|3rzz^,^,?NE>hnurr '7_HW^o&0!S; 03LK)`gz+ ޘȁb~mHV@GɁFo9p!8yK$&Ƞw*zpOqErh{gJ_ X>'R/äuGomrFNӊˊaLEԳK! f6I* puZs#f{tx$<5\.IUU0_I#a|R)2ѻ;͞=|*@ֆE"6W/AzFNϬ);~O~T S8qX?`gg$Țm}`0BZA?$Z!U>-`Il?w9K9xv{iα ήe" 7֎B, /XvS6671h{OHU56;C֝{拉s}+裏bŌZk7NK<^'ty}\b8 Jcu NX">*@rVUwB:.49C:A׮:A̞Y$ovGNT61o # 0|=h?EEdQ M4u}'t:E`L5dfDGgs8OfWVjNnnu;Q ZBt 9 B :d@Y@#bKO1Gݹ{_Tm9][YyD:'||4qreqKkd=o|XAگvħ'IrxQsC##)9(қS :ө߅T(μs˅{H\f,,U?/'+Χ՚O ' 6ot/#hP(޾>Uh(bh|RBC'_.+"J`é*"$/2 1%8;񙎎5(w2Uγzb )M)NX$!Ѿ)rpA`!h^ G "y|K)YSdq.9uAkc3 Хk[7R9 M%o߾PEfJ]JH,O~W(>YzZt-?񟺽H$U6+V(߾+w6nGowx~fj|dxhpt~;_>Xٽucig{!-n\ݽq=yݹ qu+7`Jơ{7n]yN䲭k(9#`58VF݃ɩP8huEBc#{;[_$ds؏Ac/'e!HbA*PJKR2!)$3DDʤDǐ$D=,r@A|E)OJ(tg,#.Gb˄ a9/dʗ9R*GBaA)gYbC]b+d p)l-%4604JPhLQ%"xA~nvVfzjJR"ۿ[o׿?M5==]/%|j2gyr]&q *@ Sk Ȭ0qB}Uְ=jpǚ|-<숌8AqgPl'qw;1Gd LwSm +|[TTxVNUnbʍti}DOR)-R*aD~VH~+>5[lr?M>Em .啵4YHF.S@#hRWCd(!j: HcUj" rSqD^SgkpnT{z==ཫ1Lm{٣UMe2):XGUDZPKW4KHNXE< ܾsP&{9 żL ʮ+6JEmgWIj&iZz\oRZjCX 荕 P kt||]khn06Zmu&{=Xml09fwl2g]ejZʖ)$nj7X(7aFG/))EBApl 7󐟝KmsyhV7WhT4ɴ/h:~y>G h6!H!\jE]ׁN +[5t*͑*GLo 6Р-4` v/ VW]K[mUZclYWTSTc8|jj]AmVEL$2I[:MR];^MP*Q_~~~i^e;qQ_aptLB󦞥5Zxvw~mhauxf [[X\Z]Y_X[_ZX^[_^XXZ^][[[ܛ؛]ߛ^[ߌLwXz" u3Ic:,6q ] ]Z#\XERl)7Y0z%V^7.# Ve $ķ-(z#~vb6&{Pjhk(0rQ*q]bK}L3 wGVv&Vw'WwVwg76,n g卭ŵU rR`|=8o͙"`Q oR:+m*HuHf5p# v$0!\W;ڦϻ}N&tBy>Djk['h\S9c׊mtsn{k|q]{{p;nݽw>㧟<|>'|s;FW{7]RKd!0:*lC2S/>¬S5nŽ"/,B)_!޾R]k%TiզNeCџK{#` ήsT"niUN}Pbi\c9Kߪ{|;p͙?X?ypoލk`R xw>X>zO|۫?پ{7s׼CuSt1T_4ڎ5n ]j^m"Je^ܷY9jWC U  (Q<vs!*@cT *@F H]-RU-2y[#S6|a .Fah,4 ,e2.g |Xɪ+ڦVU]^nptv\&'4%4I.^LG31N ^Kҟߺ319JWPjy>Y!kT7]_jvf\]̧&130L0#LGrjW6.BIخmԷ&wVumUrm@* @Fb$YT*F0nL'^f82.Xl*Ea1eL IK"*N[k24ٍfWhFP)ྒྷMV4/511sYbIEJ+qT*R-+%1##"Ph<8@|hFN^:$'%3;)=3!5rrZ\bʥĔ ɗ/'$$&e@ 90 J9(bf^Q|j s Υ"~q~Zeb)%&$^RoITmN˅#=i89o'^b䜤<IP @lV@~@Q߮nhݕ ]c) t-A/P`X+(U`> sYd$r)JB(J\Q!i5Tq1˅$D1.1˅qL)-^P G,y _^))"0eT\))$|,"U,-paQRX-Bt47E$LXM%T\`4夬sIw3䗃./KTYh н~1 u–t_餱eo'_By2KLI@a%H, Kf<ᇒQxR.Ԁ{ [-T2@& 1EX*Cdq4Fh$(8&SH2R б6IV)W#V( E@h<QF2.- 0H@\3,<,WCU1UZ QDe3 `J %4<-$a cEhdqI \ā" Gr Q*H(x< 'v6 epgez,+. r.1 ?x;~xvrjȒ\HOBV'Q@R:es THfVN^>$KPXS1R &1+B$0?d@(L) h6ͥt r.\@SAee H)J PA()DW%說(щJ qلJށRB ǩ[<.bphpT|) K!bA'F!QL ’G@Qz @_H!aIN1W N{+7 "\]k9eF;:9)'!-7-3\PB0aG(F=-)A!KP4ppScRRAHRYƥ(rlRI8*@)ɤHJ24]dā$H,9] y/;8%,QKr&_ 'bs,f0Y4D dPh*̃f3ahJVA|zIyo];?u/B *1>A|`s# 񠝟W4d=䫲o[N%^N+H,Hdd47+5 ._ #t*͠Yt)᳤B|IE|H  B1/a񤥠{!`7!_&"gb@~}Ɨ04TԛId`) IQĨR zoeE{K*.—A1\$-A,$AqIxB$蛗r>I9o`%gLcjuu T^S{'MONMHJɅ[=*ql`Bm~7~a3LGC`|$cH|)$?# W*DRP<'_@~/ bv*TyhP^-.-`[1:U¾z#D;hx1x)t)x1p1p!^L;ߤPK|/GfWDLdV!%҈ʫ]Ɂ(JW+($J$kOX`ll)" \yRj+kWWW^-- x8i] *8H*O{UHU41C{>9=8ZQ\BmK5tYy '/nm9rH"suvfh c3ቲn|u ѩمNn%44/|?-ͫc^mܡ62&?M[lV_^e3r nZ_ 8-. ۀ$TU4*[:O_-,6d1&46B {7P3kjjXC]H\<_jV{dSUG JIY%L۵ 3K;p<UU.5 @!9zF&&'#I$u&ލ" ͭĒ ib4SSZF&3+{_sܛ<5===!!!,,쒙uTTp<3!,,yBIYU5w8%a2|HsTsD\ `Kp f8Fz[:[:jhh 媛_JJjrr cX &~W00L9888:9kkHJIIHJѧy899Y؎"L}03A (B SkS;Op.`hjrM}Nnhr隅%+=]] !20GX"XYY988Qhjhh@gDD?n߾M./׿@VV6I\("*Ã8v z?SGC!QP^#jD Ö^5TDK蟢7oW(I} 顛B0OERعE$$D HgTw%tFaWJߥ(*+*)+)TUTΨ0duHs#z^[_C[~y-@Uz5U8"ي%yEy%zU@̓(B"1p)HYsrRWWb"~^̮}D@\14bdioblaf5\Y\ruK'o GzfW~'ƅ1Y7 \ t=$2A1^Q^7]@U+'osG/s/89DdC-=?qU/'+6NfVv,lL̬L- t4tϪUecc@о---]wbd:*&*,/'rF]]뢖U5\|-~!q,…08SP_WSQ%H.{zݣ ݢ[ #_@JNJNW2l!O/LJ*L,L(9hwxbD!C,-OʯVU\ 2&Ofh qsW6d yFYQZR "^8ŏBHK*# #k]K qƆcsI),rsne+ 7ϬHTK!K.J$wǓ{b@1ee}zC~M}y`WDEFz"tVF /(A*&܍%vi-K [v'v:%؈%ԥfcGغްp6KZtZ('|4 GFfW)m}lrrJ*Q48ocfojap?ZXRpBv\ʭZ3;s n=%'T=Qj^315'gvF^<_z_퀆:7ftOoݟؼ;6:lڿRx"{9W>=20FyZ0;#56!*: K J׍8+.~f:ZP? '+tH:΋ܫ}N|_v>~z}\{qǥo?n_mtCV/c-C' ;#yMY)  1YaIE!љ!>an@yeSK=} #~FUYAL\8oDTW,]FJ Y`P:5leU-U:4 ?=2;>C'w/>}yͻۿyfqmaә徉Ż#%O {s$S2ȑxD_H/Wg[3+\ЁWa jx=>>1񵪭 %,syJDg)x'% MLfml]zCX{؍B񰥷]/>\[^Zvc>~ 㧷?l|X{ڛխכsKӋ%8'ͽõO˚{(wsɷԤlr (<.;$<5 0Ow_WG'/䒮 ںZZZ5ΩWW=$'+# č!x+TXNZB\ТRŤD%ťe啀rm`ljfmc $C/РȔⲢ**rѽ}OG^ Oν\X\\^^Y[/;IO뛛yeuhyu}iu}*mym8m$l'#=ƗeT`2qIQXk^pwr172?~AY5:2!$0;窣eSsk^>oamxQ꽃bCb18R&"7(B}wYK_S۟T,Nl;nV!>"!8)8 BKˍNx,8`܌K0Dl$]iQIigwq(Ɠ3zDlL&&MN NIF%&ecpq |,0ES $TLiaxb*omٗ+}C}m-ϯ.oy "C΍L:2tdbqލم婹,hd|zxl$dEvx|fdbKx_[ZY\݀Aáӣs36V6'gW I endstream endobj 33 0 obj 22512 endobj 30 0 obj << /Length 31 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /Interpolate true /ColorSpace 7 0 R /Intent /Perceptual /SMask 55 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x`UgֆHXIr $A'  N !w(@[Z}}ܹC͞5!H޽z7h'7 hkXXYXint.rv>>&Rlm}\mM_X|aOZnhEc""BM u_X& I1*>PWI^ h8Gf.Zа;ǮYy-{ZlTWtKy~oSmkn$ PH+]ǧ7wWɟِ}@S#}|V~4\:~cW2":>ڔw$qNILXw{ϰ}W?/?Q8>]/]mWGȸ{jܽP+n>wwº 'Kdj$ -=|虛ұ>>~O~7lMII ֋f}hk2b7>؊[OگQŁfꪭWOH&0&KҪWU'O<~|??=p WFE:Z'/PL|}\}@zG>xƏnxQ3Ã}TUZ11]~{wo~!ǘO^tۣNWڮvpk7|V/~ɏ5w~zxރotݯ_Ե1v΅#C=/C;{.^ŗ_^ow>(S<}rӭMpOv=+Ltu4Dyj*&:rkdf'ns.>x$ nxww.['~ҕ_^{f[cWZl{EO3)ҽ};vwѓNp_^n߾wO|龫ʷ]T)ζfjMbjgge{UG]H6c޺ӵw/߼}'>z.=qnN=quVѕ3+dh 4+??tpҥ׬ݶN>qܩs}W׾Ï0pǏq'd͢%G^=]-1,)Kɲ%{sJ|cd1_=Cg?]GN5";yę.}77s?ØUgzO٘եO_Mtͼ}}: zzwn]kw\kÖ un??"M?֭B|Cbs:w-1jnEŦXi3(gO:z/׾㛏6|͗jh_8&2 8uQ4ٲmm;پ{kÞýQ(o͊u *O+6~%V HOo`hpdlF\rǮ]|œg?}ȉ='Ϝݾs'OV_?ił^CÃ}ݝm,L dbjжÈ.sQZx։W}x;[w=5_݇`wM-=}q' 9ϠaCnjrYS\xzEdv,9j{EًN;ܹNP/^}֣ WT4xZ\\@u?蓸2R0ww~oQ[ 2^}oO\z̥GO8t pw)F߯}7k6TV[6o);y=2O_EUUE-80":}QcƮ^fC.]>/ @ܱOZTX\zCxޕ6ΟpU0@>OJBCã2s;aFȢg_@µN>zCqxG)I|qƋl.sJVRus 2fWoBg?_^=rgw9?۾3*#0+pw}~mkwZiἥ3&N0l:vfש{fvNf(QUQQyEfv8i򖚭 ,y Y|/A ewڕgTTXNZ~HGCծ4](M2 uN^@vסG.[yX>2PZO 4^^=K?qGJ%x?{ƉK_>skG {цG@ dpZ, AqV[bܙs_R8hpnӲ~6ٙ{47{Ft++U Z'OC`YW2]pg鋗}n|?9rYhgeҺE֟lI8xcm8Y~! +vaYu+j+tV_D ssmdZ-cұ[,/Pk쌜.=zk<Z, }܊;v">"EDGO8 蒜>zgOp/Qo gl3ʔ.B,ڪSV(l')ʑ39ѝ4?]P<=H**%,(]l߽~ ͘0mL!vVvYilQWSz^h]LBjq^AN>~ 9~34ӗr7wԟqC9=Qܴ2"tjc+#-a5g&GOs賆߽n瞺{v۹n>_K; ɠGzJRX,>\ۭ\R5kJÇu+)w@}zBZhzҦu+o/^˗/G: ώr_?|dgGg?;cgq桯nuԈ`_'ks&-?XW5 2aLe×~ݻw[a7UoRSnK͵۷lkغ}4AbAJL/fWA&޶sSmúM[W,VL6klVv)ɽ ts{'@DwUV7ܵ{߁ރu?_8gAJνkؽkUSa׾CGvj/_bC6HGen#gN5kݡ1R 5.&Izfݧo~Aa~:vi&ϚYpe(roް7n޺MB~SM}VD .}ݸ^m6׭^[>e~f[ 楐Nc#Ȼt|ҤS7oVm;Vv[j6oݰiW^lIsL^6f!E c̐vOHUoz@-8:|^xn]ޣW~S'L-Zzk7`+!Rfۦ--k FuCu-fݦV+7aȈ;GXGnPy7.MHM/1sㆍlК-5u|luV\ps+c{>}Y9 fOXMO_h-۸.]hQw9s^n]ݿoѐG̘*훾d#wE~Q3܋έ?xhN;vԡSNt/.4yv̅0EKpǫu6A6b7լM[ukm؂YWr% *gR+/"6)X?`XJJrˏ?l5ӵu s{{/7QtA d~9S;uXBAPۂމ){%oRzAZر[訷zҺ~]7o*bҚ>/jn]QQo@z̶iJl6-4;7G{^ׂ^C ]T4y̘') \`%5jkV,[|O6s wo?K]6_hlȝl{6NrC {cK;/߀fM^1cSf3E nW4Cv}R2@gB2=.g|r &*/Ku+$:*]dmӯf  +ҝ65#+5#SHzVzFVfV̬eKwԱ@IQ1(9|y *.OVXVU|+_2wZ}}-2rN lbn9/2>Engho;p K :O0;h hnqvI kPO($ ^0ZH_Gnnܫ׮m]dQ;M)ii险iiY|q:uѵb 'υQϞb-EȒ͙{q@ ɸcV4xWQaK6Z<\[動O݈٫+jTV?SYRҳ@695IMLIH Zg,V{(u{u/`؀g-f/3oɼ(]0oqZFF ;k:P}𶃍Elrʕ3f tyz:8kjԬ-Z98f''h߾살^i=0llR&d1IJpq@ ݢR2rRerI(i[e/k۶V.[6~n p)II)iIi)״tt9###3Cr@NԹtԳk~@\"'-|6s/3AY'j"D{z9h6柶065 h5>KL\؄H7IZ*p'qSJ/ZS{o~Q}+K!kn哧NU/#CrzfbJ"$195Y"95-5-ED\9r:ک3-P+< ΟYlּҲ3Yo.y9A F'1087"st,[\B^8We NL:!x@ :7{#=#nFҲCuڝ+.&ABS n|b2+I2rJ]NL_aSd ^gvԩ5pA"7Cy)mvk7аryi e#쟗)55!$M,psW8ʀstquK m%l5-_z&Xk EF{tryEA?ߊJ~۷o[r%Zԩ[όITJ@2!9E,} |G)@ mF&vsrгSn݆=K^JXo@DBJD\rXtBBFvN^} 5zԑ{{ؖZQ`hxnO޻ĉ[k=+>}ȑ# sssbb2w'9=LL eQ*(8:a>!aj%V>?'=0"\[:kɬ6UDGu0̭o|S__GahFY9y.={g6!%-^4$MV+4W(ZuRrJ05%95U貈]VVvffn۶]rrڵkt{y=ɂG&e¢<ťN߿G[ketpvZ7n7u„q HU,ttVWiҪ6VvNHpa%w,xu|k QjcPKۡۼeP7ʇᅲs?]qc{}*4wpQq^:SeV3q I J'&)U&%%'aפgċTHjjFrrr\\H`'WfaQhO@M{Y3&F|]7pvrHgշ>N8QaٲeJ'w,;sn XLM,m^Pab@Y=%qIX.]:5_/(:o^ pgHR>`95+΄x,#J (c(/'oK hŀ1•/Ll\Ldd "stvf(:;999CF<d>NvN)^B;bĒaAZ,1۠) .}?]pavg,2jԈz+nN2r7߲@Gy}Pvtxz(5X4@3>uTE6FG7Y,Fv4 a%TeV" Jy& C a OOHLO {puuqv $C]`D?ӐC&ZZ>Ar'W,fq{qW4x_ǎoٺ6ѩ%cF#E򶳵Ro_JkX:|>9BDvUPcE>W\RԶS) ˢڦe~aEϘA'dӳsIHNPLay^\.ocH|BB|B\\|ltLTDdp`;wpr;:D,{<=80=sx ]T2|IDUJOE%wK[epdLnߒʭ{Y+q۬:۵gҥO(),Mn/߅]nn}\l~h(a>qAYD£юJL+6ׂ+}ο~Y>cWy2jGm/s*Ypf%1!K*,"k+9e$ll\|LtldDdhHK:]]1[Ksm-u#C KKwrr9=cb239iА#KfN*--[0k٦NqҔi鉑4eveU5?>|˗?`U3Lӿ~ZF_ p ??3c(*lek"ڑWdLȘnqcXbmTx/KV<Ol'R)ig^)g VzvX℘؈ȐPO/1ZɅ6@#25Սu-::Z:dx0ڞ2_ܴΝF;xD3_`βY;~„0ߏŸ̞C[}{O?z׬[W:eAm,%ae3a_~A!"A{T\4* m,Yy-]=}TAld(aQQaYC\.rO-Uo7EGSV-[h;x+|CBRcbRu&N/l㢚V;{UIH?O_iXV7bjƍoN:tƸN 9{x} :ZjFFFVvt9?3(cXT׈^e3FK/KM}CbW XdUbLlBtL\T4NTxxDppqP)R=drZ|W}& а]:?`ƨ1YX5[O9nv6f/El-:PqؚEwH wv\+0NuՍD [9$On޼%+u~|ֶ%4Xz}qٰа`@*&DZ!*wwvr41Pچ<+O JIe ec&̞1w5,=9vQeCYX/.S~ɬݧ..K 9"BNT\++͌^hiZ;}Y):W+#,Z bp|i| Pب@6P YJ5ſO>np% ȡ!IvĈ9'-왗C+6-Cc j!<|p+y1)FF p]=B=\^jkZ;=/!WE]C/&Q}q@7j(Ԗr%[Du5~j񱞾?]Z^= =tK66qz#ų6N*#fz_y'Os-\[y禭><|s2 u՟OZ6{7(8kx7o(/-7``"8;dҺuks+k-*EVk׮`ѢSGҩsz {X@_6-䥞ͮV6v$0?0(=9_疖/Zfw}?rČEÆx_bmnԡ׀ɋ%GܸyѣL;f=0e ?uNNboP5u芲9K6,W܄=F-9cٰ!SNo'?~NdtQzw vswsy .UožJI89;;ɂ]m7+>{[__ AqDd}M+[1w5/]i8gR7J0h {O{rϿv۶fOB46WAk)s՚fxI'@ކ:yrXZzrrF7d ^TwyŹ:/=-%*%huP{\پs'[2&C y{hix4([YɠDEwѿ1㧕W/_7Q9R 9xKW۟C{g-ԑ#tD]Y AMN-E?wPԿ𑣊&L;jBfA 򇍙tMUw%Խq&+|.Y:dlqnt ^JhFr|A2^iGn K{ 9n9KiXY:vȞ su:< MxNYuu5Ğ +ZmD$L߀qgv7~wߝ8}e-()W:11W~ܯےutubu.5 '爤_ܟ pϜ?n;9-ۓe4I#~~@gS]]=5UV-[iаt#6Z:zƺz8bt++&y'`jj*=`ˌd3z̷kiYnbVTԁ,w7220634cg t3H%qcJ 9 pvKlt;^uM-HNXۀ홺b˦땟* G 2Hbbcv565qZZm*FE_O_G[ƦuV1VS@uXƦfzFfpi-=c :CST*OjĪRlsQy{{{{2n+300TFC[RSQfNN@ISSYf~ikl:K?MLC 617257300C%aM+8k:]dREHKR3b%fΞQ s%άgHeN=_lD6767_H+"&y'B\QF1PG7@y*tڊXQgR` ÒC##sXPcͬ~~~F,hrV|.E{6ǰPl  I*//*bp6*DetAVU55%\RSSk7Qa#3 )6ŠFfVnHV目~^\hŅ UhYp*)IRUQ4J MmZQd൲:a҆-K['#skC3s3PxӚt(2z2^ p!Bc`aVJ98c>@a  jL//6bX2$t L-mE)b:d5fX+,<˸T'MD'Q[]v:H#?//&G%+ 634!7Nc*Ƒc &PYD+{YR<|M.#K+kOJ]xU]B_Hå kYY`!idA pM,`zFfVDg@eh>,=u򍈎2ì`,!^h>E%%Zj KYqaGco M-55&2Vv Kai&OXǚECCB#"#I/rQ)ѓ,.% eV*/('S4̸2}`f`mn1aW'&#=}(" TH6^ws@\Tgh ® &hbBgvb^ 4(b6@B\EqK vɑ2bP@b|QgCtYBK6~!bFh'-rGGNe2"2^^<̖(MDT &a%G68><#z*Hm908{l涁`1>{(%7 CMc^XDig@FkU#mvt\J1ᴦ{ŤآvE6CUUinBn*2/?b] hH}ņƢ܆Wa)FG^xxx6L@]ޤBBm"`n.z- 3A&g=`_(t QFLԘ+6ZWPDbzh p{;.`#y,K(-r>;p ~.t2q.<'S>DM(m|[Tc}DmBdicGK!=~<8ƉEނz¤Hb8KopI 4ۄ1Y S_" Tjӕ$/v_oq4J\5}"ijin@v CM،Bz1G-O/ceB![>tEF<KHE p 03|F:$F;ZhjPhmeMREJ:Cy1R  G,贩KP9 S |1fZ_bn ve27?2DfU=Zh6d(G8[(7j«^jO+ 20ԂQa!]F@/f*֋䇘\c PGFaYҌ.& Y/H1ATf,I)IHB#&TTix%T*1#Axa1 A%_MћOgKl+XYFrf"idSױҴ$\9Mp&Mi!AUKJ̘dB2"¨{Pf7U\V!#5Pa]=XF3Fp2'rP1?écKJY&Jm^~p ,VZ\ Cmd&*olje)z= BHKUGsa87PEk;'C(8>Wv>A>IH هP}&2SL qKiED-MD-.tSڂO۫Mܐ^>Nf J0. $]B9,@8.(Hl` 8:;;Q.აsM-DX=L`EW̌3H)3QnQF|WoٍvqsG.ÔPIQ&Z4:iG?>c=hgk#9 "_<8l0I+-:6)[?$t|%#,swz=^)~h2Z>F/3QQ%¯xE[)el{g!J%LB%C-RAYp-u r\=Xpl0j/!Tcwy,[a.rgCT)%O'hz>V |Rm ]\]]) c]h_Ihʖ~M/ah<%.Ŕl)ݡ277j$nnn\Yv$K0”I TX"K6^ZI(%!bIpEKջ~X͖(j_3Y2 jFzFd?bSy|[&I2~nÓt9􅏯  |}Vasئ&T,1!#^_X'(Il Ē"cZ,)29.&P,h Ɉ&^!NO_;Uc>aaħ0πY&@69dqˆoՅtdn0?()fLƽ+XXi&k-0j j8 jˋd/\hjB]BKnV@w+6BdŊmYkZSi~E'i.`:ӢC 0Ԓ%Hp 1gQ5S,6?nr2~/HN}`ǭ꒏V.IHRm43H|Yfjj)K͚A3AN U{H1pi_ 5j ]V,Z.I]gms&%ffS\kFK%RVj}4*SRC^RI &K&!iBjL2 ݢ8tZ )kaM,xK3T.)TdS\B@k}nuv!|-,JYf>_5.)> ]$oA xpƨ!hnHs$(NZ1OR,%x%Δ'b1άd,p\ C;+3T]Es ҇Irs5/*+DL,B MQ)`;1=&ȺLH0LutCM;8:X>7==3Hbkh1IH VccQgS\=.D0u_Aͩ~d/[z$%/F%m+h'WO>9D Ae+ l%Z䎅K pL31\,b=T܄RgY?BVtJUx]e24pU$ʍLs0|M%Xb"X|!M<` :mhb]/j|>H^uSK(õ 1egk=<05.Kpse)dÆ%3J,,tB4X7#֖#bY@s06~M-)k/Ks8 ^1?#L/7@)QJ"5Q;PR+v\1f7_N?DpXBt@W"jj,РEe9}KIӴ,@1\xz^nwE-*J HtN`3r|B8Fi<7qt'Q|!ZɀlJpEpᖓU]rjRKPWʫ^??ECMM +/ 9[I) 54H`/A.1 '@9)l%X>&hٲ%MI..gNR/:+*jjVp!,-o9/S|^yA@ XEo~ ZJZ+Ϧ]$>#Z]։D/Ex' 0"}*3ռ1aMMy`nQCl#>XEfSaY\QF^𣉏!:nc4x3IsQ&t?yml!+: p9WvfxP_ I>"K' ␕ {}-T!ռn-HBN+? endstream endobj 31 0 obj 21887 endobj 47 0 obj << /Length 48 0 R /Type /XObject /Subtype /Image /Width 202 /Height 60 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xXyPUU?(J*f ``P@ehepiQP --Dp_'rԬl-7pI2Ss!Jv}}Ofs;;ws92 <2xڸCĻGH#w{zesYԟzY!Sq= s"ewf'\KmpDNh5wm~GkLaZ̕6Yu2Cc0):Z!ghjdM _h'eGЫ̸"+ƎRkr\l|[8t8{KRg fyFءNVG1逰K1P:&'FҟB;FOKH@P v΃׹Hm?D9}"8,r[ 4$wE)|- lNV(ۤ]tG e+uN;[dIފ')#ɕx :^o/"=NQ!&EҴ$g*juvy0 ˯JJRcrMJs?͏ MjlwF HnX Ojʤ 4dcP E9\O#c)lI G` QMZţsv2։df"yxOҜU>V;_})`h@xH6 Abt!ا+jL"rQ叢|B[2|D5TBxw؛$+?$L2NÐ&saߍui7Pq"P 鵛bv*Ǥ \3E[or'2YS#Œu`AJ;^ =5^y0_aW)=15}Upalc%b]+3As*=J4,tv* =5Ƹ&c$)@)ҴُWA  PiQo.pMqqHGj!ay[MHTj jS ,K nQݽ%ڳa%LKV- !|"C-(q T\u" ^nb _i~F+ڇEY(2!)q(g$3ǰcs璼R4k,e9w|&\4qk+lH= Ͳғ+?Vtn]FPK#'[_B: endstream endobj 48 0 obj 2056 endobj 49 0 obj << /Length 50 0 R /Type /XObject /Subtype /Image /Width 1832 /Height 473 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x}8/]%]mF"@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $`@H_urH $Hл2H $p[Q@@H +%^DH $'-ԟK!$z%@H @˛t@H tދiby$[ 4CAH _M j $N]/0M@H':?*FH ?@˯GH $s 4?,FH H $[ 4῕-EH O`L@H Pͯ "$w'0!ݙ=@H J9_ {"$7'0ק͹;@H D}/YK"$&0׫9@H @y+"$&0uׯs _:/F_OKij3?Z.JU=uj;Iـlnә4[*,{> S{ɾ a* :@wUC]a$Zqrb@i<Ȉuڜ4u4roGvכ ޑ1@?+cw'`O00|J%mj>heo%!ceiؐiZuֲE6jS}ufmB2"\9 {ؽDs½77EӨ MuKKo{-!Ȕ 7]iy+в =aˆ3_!Fe6*ܷxr[4z(8 uDR%6B~Nl[`><4 Ҩ)G^hN/\tνi7svĹ7TBvn\a|ZU97%GfmsМ1ss}GJ|aOT3:">,oD+5g\:Ź280BMET^7 !;u ykxL ,qQMe}#@vV9QGȍy)FNsPG*3)Z7!^sw Y<@x߅9!b'j7C*HőR9^gN8]ANDg†$7_TM ͐tш=xo?QoP? KS飊EMwf2M1xjiǽ|0"B{ w=k 1 w4m67>*=T_ A:ظA@=b.!5-а.u pItuwX^SaOKy\rmПC <@s*!2w$ #`:=N=żEĘf擆uyRH7Ȁ9ܐ4g1!3F\#ˆA$ClGU0'^1eROwƠ?Jݶ2(6zLpF`hg4YN2ɪh4t,Pchܦ3]E!J6/< 3膻5cQϑo2ѪlTut0Ncdܧ3]G!߭J:/5n<*Y!7a(QOQn"٢.?kiz|_bب3^H&!mJݓ>3wXg~O ` "/iުvu媅JÀ4rݠ ->[Ǝ7 !;h,A"2^=_)ǖw8=f>؊ZYr@z0" aKsѼa I1hX#CӇw!=NWܤ}ІC 9A=⭜V[!ӷ:PV6h;E2CVwД`Hd8t8% ly 9m U`jc-7BcRMə#_{M];ΐ a!:-tBH!@s=o7!5"ORX!.]nA,tb~3!?Րe_'\y+}}$xy=@M&کM^V eӆXC*ei}bڴA48#){2O#~rtX,fg[b=GN!ÎƯCYE@3͜6Q7!& Acc(;4޺َ }!d9; ZBȰ-3PV!y͔oBnJ<%v$|V]ѓB~-ꅲϛ7ko|CL8$rd(xϣ+s*lr Yy,iW^C~KCYAbM5W7!Q =@#S72P^F.D}w]BNR`} ٭)?{ eJџ7kd$ RSKSIH?/I*2Q^ 7ExNYNw(ixٗqzfc%^-S ,?ݙb?W/S%/"+-"/^i}jOW*]6o#moV qzn[':hMzӆ]+*ߴVp0W{)s(9刅9J${eul⁤H^]Q[Tn7V|r|bqA^IEܡPYk a RLjuedU1kTiBp?-~\ϠH+|bT/1͢w"s{I?D;jQ㍈)_!~wZU얾Xy.ZQלzx05ٸZuю2*~v ;j\K7}^OHCxxKØ J!=z'P7!0؊H7>ƯJ)IյFI9S^nФP.+{*ls @K *wKb+CB.SϿHMDs`xN|RKddp K bJ4GOn`tȸ&&ſ v*VwN] K= M*g-Ŧ)Vy9&'KܤPyd|aZr)\;"myZUNJK!3VfUn%@)6i)F)= GUvQƨ0s&Y1 .C0 (K\كeBՖ +׋̦Txe?EEFZ1ڬ*) ǎ;K s'ݬ "QA~UTnof+vy{\WDEnTo3@OK!1J!F<6*JJC[cn\i7+ˑZuMۨM*w-K(.+ 27*T60_pOK15R1&2,7RSksn[!a7+ɇKRuM!]M*M* .+2*w*T޷v X LTU[lErW1w𔮛heIQI,J&/&6_^VZ }Ν M i)*Fy=*)r\LErOU34ZksϩY)V\PxY,Q!.NE_*g%z9 ܓL]:5*e$ٻk;ZwSIr^Q#uOqyoNh!;KDIIp|[OP~]۩\SC7XjgK2%V5$f]\jm̉☗S/p2;ܫPydt`R;r{d)S=uv,n?>gܬtC.UrEG"ֵұ6V2L(y;粊N~üJ] HI-tUHFڜq0cGc{mf{Z0r%Z%Zڤr[rF5͸q*[ܬPydpJe+6QL)ˮ(:"Zk3 bnV',,OOյڤr{Xx♗*Q7p̬TxXL:vmuژjBj*ⱽAS fe{rܺjkg^z*8k*VMW6^RmP{26ZyQrrl| h=tc_z^b-AŘKڪr{[X|YnT!߬kJ٢{堵Y[w!ȸIL$ſۏ=7f' S$HU#UGYLJfe2q\vY&ܘ\8x]h( ԁ)7%\nO&sNX×w2nm#]}d{*"?aIBdڜIZ%AYup5%@5GT Υ]ֱk;ӺB!]-Xڂ%fB5t04'Ȉ1ݬRJLc ^,j 50ZhȢIKV qI);9QEϙU")_OG]_bm{]|J ^$RH Zc5 Զx_JbqNT*H1pݬRY@h֥ ]TTnK9(ypPʪwf\*j>oHZUIY)ƟU\F )kjm-˖eV&/e٫`uxZVIY#_a77* KAhե gmR-ٲlʵkBMXƭ e ^_/M +ŔIX!U\"]i pHFg-rkmE+'[c DJ6!8jxw}x9PliΞ+'4P.Qn^{p] *pxO>K?r TzeyGtJ'CT+4ZyO%}!}f5ccwH3`4B{0VRh7ux`5  49OYvXnGd|s/Zc{CKF{ꁅ[2h9EO(&8c][o*}scs\MW m1}݂6Pw'Ϝ!"hŽQF+yq^ nVq&-ZbBkA:!ԉSB_?>SXȊg\_>Y jNh3 =vVS'N ~4g([a#M ٦YMŝjPh#Q =vRKgˇ\ JG a}QBf51 wV0L3>+z1-r6h!e }*7CD7aaLWB'{L*zANbڴIB!ӯƗ0>KWXÅO턌jYMÝLu5O,d޸B Ϛ!f 2>hx݆gqK󗼭6jaw\04iӞ m恞4Vxuxm#9nV77!3y|Pꍏ\}ax%Uoήt^B;ꎅݡ.W4];`œW$BWL5ɭ!3ٕ~9OGn*A$퀝Q툽&)STo\oq5.Zf|; t;G!3-8s P޽AڄzsHzI,ח6Vdsըlh!Ci\ ֩c#+_e@EL $Bu!Z [kMUn5rA3^S@/lSGL䑢5)U\3 p!: MXlWFOb*Y2 *,dwKUͣgBi꺹왟quEs Ί]cP66.,GG'ڶ<Ս}Ts vw f!KBYyyО/{]y E&Y ϻ8i{en7 5]?'`|- !L~Z4鬿|O/W Y8.1do.<6MչmYߤԤ6:3ݠ㈬("<ƈ7;0L:7m?O[ݥZ`]K`Τ*zo #jȚ/?- Y߀]Jޞ@|X\j䴬ԯrCk7bq}lFB3o4[5hM^ˤ.*ߵ'ѹzXnx}ss%_E.&n_|@x~Koɣh^}UxTnb't|M5Oq}{Yews;;D7?4穝*񩳐3߯5kt <14hǯ ,@h x5_K@Ѥ}@E^HVHmx)/X$RZ/-maZH?rhY OI׵\ X  x$j7z5ǒuqHrhX JHץL X$ $rVyK񿑀I߈["? Oו< X*+K$n_3} h?TX5PH rPKt]$ H?cB/'𝿕tx$'xR1!$Hr`U g> ߋvX;!7y}b2~AQG@bw麘MA&~4aY0^O`__0Q{#N RaPt]< I tHοW䡚 Ho u$ [@H '5>f $Nޞb"H $K`P|n'LBH $0161/@H <6@H`zmRmW"$x>IoE"@H;nzM"$x+wcxkEH $pcE7r @H kӑ@H ܜțfkGH $B}@H Gh~U> C@H @˛r@Ha@H ߔ+$@'`*7H $K@yUg@H SbC@H @\$|!$x-M FH $v?CH $@H $@H $@H $@H $@?5tE\%Km$* |b>ΧSz̍8鄔nN@ =n҃iH1]` _<:& SG5A sO d/`Y?A A`n1Kr6hpS`Y?9?5ém1/K*5W]$%-Vuk޷Pp_zU{-R^+㯤5=f ˆ`_/*mvkflHHpR0N|M/j$or]/ sDV]|:A_ 6Z?@-i%P?|?@~ɰPF-Wyf+h"' ?*Q}2&TNnl~8 N?3K30EJ ?~=&bH`o`Y?s<ĞěO0bΦF:?3#grnb?c[19̽m[dﶨ;7\.OOGf؏6<3|2Ȉ[W痓ydwH-CGrt[䀝tq>I#_n__N#1 mvj1d'~eu~9GvG2~$GEة O4d?s9`&?cO{҈[W痓ydwH-CGrt[䀝tq>I#_n__N#1 mvj1d'BH }2ޓF|h!$tot,."@GRM΋0 $ oνE{0 $ |?a2X!7?x Xlq(E|b `\]ɤ[S!zo[gcCS f a7SG,^M@|Br1Sf,$ɈHT1ΞA%-SƪV4J 51^%9>ZuV oL%bB0VӎK7fjx\V9TPR|y4WhP Gӊ=ʒ/2KVM-IUGIWbL[GƓ D\M@>ũ[& ☪WRE&XDG=Gt8>L֪qHb2^!WY7ʖqYSW O"c l ^OCT2`jϖHL^LxPUvOaUu SB{,ѳe E eOT8Upھ^`>Z jQ4 tLkOwÕ>#%ڠ y./MkF<'L,f$ƛn'!% f'l2Tpu:g\ pp h4N{FoF} !ظEO*ff$}n'(!i.)7^/Q+€&-ܐ㨗įtS됥 لPnzpe.i͑YP\}g-ޞë"sXĄ*'`R+\#vTj["XQeʮrHJ;XT Հj`̿|da:j%HY)C'Ԃ懁I:rM"X-^K[eYOÀU|JcټGYf-%υ Hnq*҂VRegS#vJ N"tЮm1--ƱBO" #=8I֙Ƃ3OUy%-,X6[hM'  ȥ? pC+}O>u#Ҙ tu?KtԔI=Hlf> }-*5!dž]M3'@B7EQsh%ˆlahHc?)o@.i`ZI84 .at28M[LiY(i{LsR)oiG+㐾tH5fLUlVEj&i&C頄Q7 i@٨p0tgOtCޤdhh:JDI9DZ0ڸ +8Vb~t9a3Vp(b6"5@/Mi^S}83P)5 ĭln,q _iI&]USݟs9 e^;c1Q* sHi+أ-TsLc۔n85'V1}rUko;(J#'HtNc ;̹&u0gV"O+Gi&K3PM>$JM[,ٜ҂=6[5O ĉOʬiUGuÈHǴӀN_rɦrԭCX- 0!Bk3_cr#Z N[%j0DIR<5@4vz)5 Wժc[ui$=ah//D"kR:D 4fPЅ 1~f8K#`bav (Qˤޓ6Kt]ۧfNo j:[zlAml]#ڌQH$6|Oʟð(@w7VD~-CvGx_F/0?Mge3 smBGvL)/CE)5 W*cl^mk1&t2<(2Ó!5&ԄG" WwBbw@93E@&Xnn5W辋; Py (T@ @ H1@u -3ό1h@'S g4Czt 49AKն6r 5fOLś`߻t9 xSBRf6V蠋7 s2$VO^sklTC >NEgޱ1OTgH=ʌ1 ޯ& r)y|$+z؆a\[FDi1EPKXxEŋTW[ouS|Z*^R"|Au*ǩl;WCɖJRg O3x#tvEA7{xeC%=qMxZn bhւ-vO(>=]7 k2V6n*4$79)!uǪL!qZ!]"joUnѦ!:&PyOw{ӳ paRj@USF]nivpZMۍ,=?E| Rt *rsK<1Y夤Mg:)8v·Lq!o2U?g q"P^o~vFtHP9 S1A(nґ$ekBeS9_rv|7N!22J\EݮWG"kTr{WRmchaH )U!i=Q5|?TRRTӍ6S%:O3װ@]oA5ygJ8ǥQlTl[3|Bo6mA9 R( R@kPjV˷nybu)B,Oj%<t$"(IX@*$-NҊMv$z>nWd,i1J./}O^~f$쬓Q.02xxksƷ؆.9 =A4֣.TW۴)tTPF{½gDK"xg\E{hVOM>S= YsRpAc\ 5{٘d2^>qF]X5B(K]\Kp.QԥpOZצ[1G쇊9e!+b(% fϘ5QͬZUǼ4x6Ky"9C:*y?4"CI!+TUǼTQru638f΁)YX|,rYlf [7`xo䪍@fxJHXx"-="jRN-ڱg Y9 ml ](QUpȼh3>,e(V9Qr'F#3kS`J9&/۠%OHr3˫,~5öl ? yzxLu\~uz#kZ`Erl|Qw<20{(RQr/ ".fp(xИLQ ґU5#wB#]z%J^B=O$Jص0)(+6Wтp,-kY\v#jCrXùErv*uTm&bLF(d0k@P0QCJ )]38ToKkyH>N^))^'mw5ݺ!c糓PwS0cF!m X>ZqeuUiRY-rvWsE|^ Fydǘ{(ْsW0LYeFɅ37!5'e=SSΔB *t^}3ᎃ5]+\aT>/XTr}N6s3fc` , X*akQV8X Jy"ybs+)Z(yϳ S:Kgg#&hW {]96M6&uh!5Ƨ90 P T,F{һ9}XCE7n ˿AFzO.chCNMϔNifO.Ǝt9P.pɦO~t:4s20Ӝ Tjuu쮥ӳŻ.RG핾qAf.dʩ- SI >L 4~zpJ\p;ؑn5ץc.iÏn^fN\&|ZJ`0VUnD@Ss)J߸C/NBW$7 I'^H'5aM&gNb .nmHU̱ lG7aC;'A. ּK=OxO`X'`.RG핾qV 1 %>,h<3b]; u~ءn9*lsoE *}𣛰ס`!OkG݀h Xgƻn|dYNJy"V[-O&P$g:!cIFzr#rM=e"sqB\Dt* [Dڄ,9;07k6Rߓ6yk aB ?]ȯ+}j cJ,Y =嘱0rUIL(9?'W.P\-Jp;r]"|{rb9gk Ou)-t9=/繋Q{oܡBm~>C %RB> 䏲)3dBU͜,_2>躚uY%uQu*5kSW(٪%2m&dɆ) qPgûj3#r|_s)J߸Cڂ} ं|UWd,;9u]ep}.]:H R'Aӫ5Nl6Gxi؄,9;= t.=gMs̳9]yJS}hQ:h.R},j cnJH Wa\['8\3 DT]dP٭7 p;Vr\"xmBlѝDbf`L< m-cS:┦b?]$9^|g'r* 9Ы5N~R[( δtQ9f5͙1.:%2m&dɆ)C$0,a: ֬Mh ֒x6C֔)d&LP*Jqp46*:O&ߝN^3a?z)Oj}&3J.u3m?>i@ssDYMsfANg#Y YsGrסjn41P'hXT` Li+Uj.j ?NglTtL;iDMLQJ{_5QrLOʄb|fd`ԅ ||SW9Ud˗|9Ÿ?'~t)'@|Qݘd~)y6&z]uέY]#j#+!ަqvhAus+̳idBnHz%~;KF8axA`ňR|䑬 |8U(L( ԧU0J.ԆSB=cz8Iq8ez;Kzj=Slݣ}GoU !@I` h%sͦTw);4.:MsC; SKv.[p 5)T!)wEz {nB+ *380JES0AKHqHA%߮u_)j{-*']~fxᕚB87xۙ#MuځλeR_m*wՍϒbRoT_-'FcWJMxgPFg +c SmO<! ]{,is7yl+RKL%zMc=֣\蔶#~dVp~! _![:+Α<m+|Sb(Ez^En_^rL~)N"F;ZfOemNx>|O`,Bج;AuaZ'~N8[;JF׽H ))ҚL!½d mT0T*Q%%^ e8R,h#] q06D!Z".2Vo ".&v;2! yQuqh"h$gگyEM(r$ W'}hJ:0VE#u{w&|B<˻#%~+-/'ࢵUZhBҡnqRg.|ZY|Z:p.n oka(n5mi!~jt\ r§?F8#k02m;A+k/H+N;bq^D\]XGF)7JV`u V(H{o&"Bo D)V D+18 M!ͩ)`ݽ.h ѝUq5ɝӕ5{L$Y╊S*Ռͬ\|z'_ S"ϣTh"o~:(!Մ ̩ 3SȢgt*QB9MfFкG+goVhz#l&wů˱0RI jy"d2>o*J Ϧ9D|Tj@rە .\u F3seiʅTp`0d㋓l5'"paOV@ެFشM}] _/`'c b≈b5㼴f0mT3*]rWP /(ʹ@oGʍު!L*~Va^`)2Qhc 8Ćww/_! >]VBN8J;3s@U!ϵHHWV45֨fv, 1`T)G=lId{"]Ht-б$V [ &>hG,WDT-˟2ft5&^sb:1'e 濦p6v ƁYmjyiхH;9(t=jvieH!Sڊ"n ґz?JZ=# WbG(FA O9 @ϻͩ&!6{ \b=bī GLi&O x-Pa-DF Sog~cBtkޏdVՄ-Ƒ MaF_)x>:aل,|l|oRw,>ew¯iRV]p1T%Jt "B%o1&)KId2 Z50;֓!*e/1%Yr!6| >`*q%JEM^/x2')3Λk9 AS:!t*dT!A:ҵ@G 3X##j`w' a3l6G!6| X$>` +{y%#4xUea9QqDY,UL`O)KIhzV!Q7[>"jH'(;4XOXfd? 6KVkLJ8:yNENְW pČ v@֨}Șj=㼵kV*tQo}t,uB&ɬA5]3סsqg@*!5N {LxOzJ;/Y{)h&2Ζ 6K{<'t Ȍ.S-F,G9S tdT IB .Jù3!ηjL? lQl' PU""#ZQ EkNiOtRKusҍ8ҵJ;`_-JkQ[ȬA5Iuגj::p.. ]/~}.4VrNczr P2]69է>Aff Dyԡc]wCm'3iH ' YˢPJù3vB6gfŻM)3ޓ۵-Q Ry9b&4b6˦:4jg#,CU4SZҎMvN}f.28Ȟb=+|vδYiѮ,o{8_t 1V!(ӎ|J[e"D]+qܛJB`[AeJ+{y,Q['^,%9 סsqπ?h#%fb]E&$3=:6X^ [Pl-$h؄055@.VqUZdNVUʫe"W*% N?=4P<ϢMt5q+lu qj-n=|:ˆ](f]ITfs=S,zfT!$b3&#֯4v Md&orlYh$ȴJ0y(#Xe'ި &׆tYG7aC⪟hqɦz]AS2{yHuPՙw@p-#\4Шn gq(ӪA3Q"K8ERPƶ{jd E.h$qu+H / |Zbe\y9&fn]jgs+$[FV9{jju4U+{-OX/7WdŠ*%>CaF`$QsˆU /h$} LJN;Hn6g{zg#|QNSA˅-GHtdMJnh(-m\.(2?Cf>OHaReQ9'tP8~Yj>Gù}:]q/Q29'ɸWB;!Od.>Tipʰ kAV v| sv*ӤH(@:2u&PBp, :JPsŠETt{;aC}:kQdzN☲R NR.MT2\{#;dNuClo)2U({y%-?Gv֎I@jZ*\鳇#opLS^FK'YAB5N*‘sE괐U]7Kx%bnm%L\YNةrtȤZHbuh!!ف";#v6V-S- 84UC2=U9A$qиȹfPN mBU/UuR`k%vbZb,gЯMWLXq^7-(w9Ueϣ\e^ g\9W˻ s?uvWF7͕ l'PUL=jzKx*25fP.$.SA]e.l"`lN4-~sJ!2ׂ$ 毷cFIoJ~*mR88IJpj'sE y1zkZ=(x;1|\]IEVVҥ@|7Y4caL[iy"].t5/ #5H $-5Wm xY"$]. |I("$7]rI("$W]* +r((!$w]*RK;p *H $4edN+@H /N@{b 4H $=u]@ $@@P!8"$]wH $߈"T $' ߟ6@H $P%N0.H $@뮷 H $HoE#¸"$ ^_/d@H ފEeqGH $7`߈[ $  @H$@^z׿@H $ &j,"H $PkR*H $Z_&:@H ?@u@H 8 4+%@H ʿ8BH $O@~]@"$@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H $@H`R޳ endstream endobj 50 0 obj 26483 endobj 53 0 obj << /Length 54 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x\g@P7 { Vk|&Qcc7V4FbAiҹٽ‹x̙3|;;̙݋{}z{Lbo35U]뀏V)ٕoe>ݚT)$1#T"XQðf#GIWG Y +7(¶È#rȃDN3E}k/alx$ؼ>F5)qT};Bp'5&:;<8=a kCF翡,,Bo*RmSo_X'CP6.b?d|as͘a_Ƨ@aöme(ɇNW1+Hbj3|"̓'UU!5 m.7x06fBU@cMGolϐ5eQj68lۖplWT`nq~M6nd7~%8pر7-\ēv0.>Gm=\ð43ƷI ɷWH!ڴö;jW,B3`lx_cw!]M۸xZM7@bf A|^b|5?q!_Im&!Ot3Zʄ͆䷴0iB{6S+;%P KW(tڔö7-mH!]TtM7&qd@ H8^Hߥ%ƃCG!5_aNxR3b_F Ap@+Ng$:r?N,"OT$_Kv{uV4܄"BuR^~>+rS$[ םE7Ac68k&.!zRNߊa| K9~1lJg/:?&q&e}ЎU}{gwu 9U 9c$S2"V||vTr )MmIe"V@δF7(~FaF3\H)*U~ (a6p0 *m ")&79" pBm|q`5Ǧ6[Z N+j!J]5~zDߎ^"%.ǶWJqlSV]JFsnp:֩8k6Wց~efo84l#=AƅX :z6H*mVG7e2Q*8( e6n &2 MQ?4JSN;ÿ"dNXdHz{}Żo!G3nBӿ<{  9cڔIǏ7b};k6%J/p9bz|v{3oL13 c3fv5rP}{vmߺyn|Yƿvf߅tHOJIb-d$Y ֕?83: ..E⯅ӳ(_g[2R^?M+ +VUT/ّ~k(MUWUi3]s+é39qCM׌jmT⠙ t $7skFzfju1ǘM˅uH7TZpqќ& eY\?jG@^5{W`w0/. D5T?WR/ QS,_'%3jtP R6?TNg/ΧƱSYZy<1S"^7)]7U_m+v:{%*ӓt#pd~zu0qȸhYϬIOv"pdO3v<ƕ%_{5\${JeI|IKHuej=v1+(٪zÃ!ޚ@uO#ƔPyLG{c]SsPG}J4ž3܂`wxFB\ȮzϐߣbmeC?Qyu//˄͜\د5^NIr|LDØ'\?d)<]yWP+iE^ѥ˶v;ɓ ۲,_/op(R\j]+tҽ"~YڨSUW\h w"'rC c%vR![y=X-FmbU/f4]/vWI4W٪u5%=9S;ԣfQ` G[o㿝tՆ=q#^tӸSRR^|4&~͈3G޺q& ծi=גM8 3.Z[=6oٲU-7poPϭvuʗ.^Aa _ == endstream endobj 54 0 obj 5106 endobj 51 0 obj << /Length 52 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x\y|MWYDDZ6QŠB>NcJDRKАQJ(S3JH頤h1)4F$ܛ{~g}o9{k2=׿5:=pÖ6 bӮ|=~ԡoRKOZmv޴:e^x3usi| nXԷ4xu(V|9n@ R x_X!O*%Q(rTDtP䱾}+ֈ>(O~G${CAP6Z?QpΓU5/ b!ګVƞ1Š>;UL *-~c`*c]oLsnYj PlOe"!A WT AI<օ3\ɣ7R0I"ܲNtO9stC1@ xݝI#k!+7?T^#,Ym>7`ɶ)5ÿe/')EO|9 Mu=g>^*}'Ao>0TD'H</]xp)BfS'99\pnwŘn6WpHx]Y,8KG:.>٭v1!l>%5_>A?$@I0|R ^ZﮌJץga%POJ?(a鏏h˖[ij Z ,6 J; ^ӁćK`Z3%\UyuΥO(|55(x)XbW]E3 ^ջÇh|R ?} )|$@W_UFE>*>ajشC rzeJѷHN,`gH*۲#81@!6QlНQH忡}(Ń_ϸU>Opի/ }BPJ@}ڇPU%K(Uf@@!B _$o7gOvH@ |rJVSw%>bB'Cʡ1`r3qH6@8Gĝv/|?>i:S +O!8AN^9JyX<*!qZ [ W2Vxcá_ Ψbk yD |J{ s"Ty#6 v'@'$X/W [z=YV0o{_RK,v7,|p%9eoMdYu'P"ml1|8=l8GG/̆>q0W;Ed X+۞Mo(K]( )z 6~ue5FnKBWJWXm8D鷼bi;WxFcXXɣ0 ?־pLN<*9 E-Xgv7Hv0$MXF(ش. CIer#,b1)3)/^`(S qm4CRy+L (0SL%uRxW/ 'Kgj1g ^Aœ:U2֟5C8*L.gRP.pE}$ị@J%~k-jqA+ljeRϢ{㰂9T:hUde, @( X{!9sZd+e3>lJR"+rq[vM:sZFx[8r-~~>v@(5>k` '}n\a 9}I{2ү_MrǓ9rGw\o)y-#݇yO Y\626_~jϦؘYD/G6NtP> vo?v0l /4/ac'N57z}}L\n1HmZ1Zncq ؕ+P O>)>q.vqpoSbx=aG׎K<̾r~0(8A!%,w/A 8"rb>_- ;wHS9{|Jjjs:/^~r۶.;B la?ƿZ.nkxS_2#,kU4{(U gbp.'fKC+7 E<ͅ^匕H$߇t-^bV1] ]#ķ]LjLKaP{Qi >]Ac D@j?Hq-dE G.FuxcjX]zp r2u9Hcoں?Yuw3CK:?!L)}0Մ'JxG4D .ΗF6+8Eu7eBX!y5)lj@\O.CxDHLgڟсSf9Rkm/c.T$>: C%=g>LZTF"oax4 D#Q_VݵN[ l0 gG'Ja͎+@4vؑ Hvs3 G6gi~c֫8TL U+.Y* r&{܅ȧ3w29&v6lu v飌S HJwnqdKyaaA endstream endobj 52 0 obj 3218 endobj 55 0 obj << /Length 56 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x\yxEBBP@LhD%¹9\ .E[ D|`E YnPT@n;=3=UIg#랞Wq~џVhv 5{b~N%m׊7uUALXejG}߾?WZc&vbdz;uv^V=_rt^ɩ711Rǣ|+ݭ24[k,.mHU[iD+˓y|F48lA:b5 Ȩ7Jង#|D=ٽhzMܹ2hnOC7A˭MQ^@ PuyM/&~)Í$$WŝQˢ.< 7;gmd/k\d=\#+r'³ldz+ dbMIނ6C_i Z=^g4"ax0%5rU33pSii9VP6JՁUue94MZ'\G\U% jtX\չ]JZsA=6PdT9_̬rӃz R WmR lXOXu G*$v;t2ŕ QSbEdBIA]bep:3,Ϙyv 'EApFQ4g#o @0JMҾQPJ1hSvcQDڜ\<8[U һ"T,cX:HnCy `g)Sq*KII2.|;ӕs.0ҥ6x[ `-}7r|mKwyV:mx,\|<Ub+ /u q N5I̪ipfN3\_bH)~&|/Lv]?1bB-?)@W0>$yHpi[u9Sr{턿6?Iy 7z=A9U:,g?; Sܷ@l[!'bA/-;>4sɋ" Ph: 5F{K3 P h6śTӔFB-{,KӳET 4#`X7x议NEAE$sJ70L蹴4G;n{i2P&D\$_䮇VF9樭Of>{S<\1T 5kgx"C ~˲ 6vǾ3bibA>,G};cːs[Sl'QŘ%z!lUY<.)1(G+T`c3lHhSVg5$**]exϩ]V~iyb*+J ;L1SpHBv# [^X&_{H~$!k\Xe qC"kXX[^Fҷ| ) ՗XnoNP,vy#tC>mѐ Ua;oy)͂<@pIbJg@*K[b|3ͳM'_3pmYc:ձ#;Y i7v0cMA ^TLGa?& :FK+sO7ϩbJFI 3\ f'`@k1nݭ+t>,- XWdV#ևˉD>8+:/P7VռKhBLܙ%\:OfHlߒv V%3" 7FYOɂh}؎;`֦-/A{wz`P+$^xq^X$[]xAQO7EifcA^t.U2LCb[j_ڤ5?<ٯU͟Mrp9نvŸr+?$2蔌+S+B:!7c"hIEV S|: VV)dU?wʶy,xoO%*xH?kn>mnh/strbl> stream x\klE{+J ?$QRyc}4?HT#/ $"ja Mi$%Vh4- }@Z;3gvs[{dΏ939s{iJŀb@1P (ŀb@1P (ŀb@1P @ZPcxCG4-8>} l.$'/ P][X%IrBrǧalpΐR:MkᠮsXbm5wAh=IH/'㮖E8j%9i)j=Rߢ0꾝yRۣ8lܛ{h,ja@qjr!+ߧ#Š [€[RY,̰ 2~.ox/C<^3|3>h;|?&=9Œ rHf@79zt{<ɤՈ497HObc%pyղJhkp߱Rvr6#,׃:S>bmɶ(-?`xBFswh*:7:ylO;3ƞ< (su(MwZxh?tehF?8`S6(:􌦥^b"ӆV}aM`}hf[lVu1viZ%wkp+ʹ~u֦ 0]+1lZcRu`Yִor6cPe x ɖ篣O;M{ߍe^c}+gu4C'ϷZ:`I5P ?p;lx J/-~ Hh襧VҞ?մ jGfEd@J듩^Я:p7c m=BƓ16iڄ̈nj Dl+P̓MK!݊&}dS rFe'Hgĝ֚B;s"<^o&'0OO'W;@4 魦e#~KVGL}2t73B4]QPyЛ$7,&*ʼHѠ- ͖,xkNVh)͉u jn.p>4T&"gS9TA5f&w' $rV3T,blH59=x5JlWOMc+ 7r0}al23S 9t.gMws)!WwrˑnrP{fx#4AͰ% 1@g5=uz $6v]`LXS08xωKzC[x}ؙx~Ŋـ$9l59xrCۦM\pR3p!}¿C VidxMp9 pFqH5S9t8ysgMC\CM.|5nl]&BǮl/#Mز%s*SM̺ ڶirޡ2nrOBg(_]MN>i |\>r Fgkx E$rf"^Vv.GN |G=xw0` lw }@qpDWw /vC6Vb@1P (ŀb@1P (ŀb@1P (ۏ= endstream endobj 44 0 obj 2151 endobj 45 0 obj << /Length 46 0 R /Type /XObject /Subtype /Image /Width 192 /Height 48 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xZmpV>IIBHA#!H4jH)V0*8@[U'"؎QEmeԒ LZ0B bRCsʹ3{>9gw~LKVdw ^ifrCDm=5+O.+|HPM V|"vSH8+W}pO͐=!IRfJ!V PS/J;$[_":_݌EVMDk~+̳[-NzKSmYag_%0^,;22Z@eOkЬNF. czG]{NO#҅^4zG۲Kco?v~$1&r$'?9YV<|y~Gl4s#R)\~a8^tG6tw<酛Bs;-t|?_qv1V;>O &O78jޛdxVCu&%av7T/3h˳ؾ)  q<=ߎqj#V;xU3?{ϳ%Jx ۝U_^]":PHh~lrs"Lg^}Ul^M|* `?O?= ~R],? "gc_a@~rH~XxN}In1 t ASC0x1vnO1jN}9mVeҐiY̛kW_sL=.ZKmw ou#cT_oxTw'-Ȕj" Y6G/D/+Uf%q`nZاkp8f}I?o!~/6㹺qoi`7ٯM1v?f1zn&^&&m|,FJ$2gz$_~a0UudST=iM5° $hw" O GY" 'yn oCUTftֵ?t=,Q<4?̿A* jji;B[:aO-Iq8 snӿÃ@^,g@7Kf$Z뿔rIŚ#Va1-;6U(5cAߍ~CI)a*x͗ :' Ɵﱑ?IWp>Wrn"k 0mQdtc駟i0-J,5lb6hإ)^{ uh]7Rzz?;N.DFN*+30=ytm4R|sy%tؓ1Zy^6ZtT5[£'I٬?+vㄾ%<δG,i1Oq!!5H[wܪHǼ(Cij3wM}tr?g? /$;I"BEQޮ/BQ!թek@3Yc$x|yNHEgeO]5ubrj~<o73?ב=ڒolv{]]WɿH Ec`΁L6MnXw0ў2ޏkO>gxן&K3/'(Agy*QZ? {x Vk3~UeU?fAi\EL}*\f6nZ Fyi{w&5PJoQpk0H.O6$Q4.lz-yĿp1cvX>kIt$9q6Z[OTcfw| i>'ʼ\QjbFFgvɿ`Z^UٿggF́CD(K(k<x? 4gT9,8 d 3G$TMFs 3{X'|rظ / d[П+@hѥX#CEk7:BKfqFqwJ endstream endobj 46 0 obj 2540 endobj 38 0 obj << /Length 39 0 R /Type /XObject /Subtype /Image /Width 160 /Height 160 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x흿N"QſH<6@BkkK`m7PkM`0V j1˰ s3$bg⛂2'_"sbg_#dt /rzن(tϞH˒[oM]43~`Im6 2/{˘T2@/#zH\0E+;ořѾ{M}'V4T/w%6{0{Ez OI\u: ※yI[oo5^W' yGI_/nv6WhG1\Qz x{}DMW=__8/K ?|oq xhkqG2\o|՗MԽvuO_&7Q8񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁Z?ࠅ񣑁A=?Nu݇A#[()jW^0DOG{?h%D{?(QO;n?hw곪ύQ̬,{1/*Z̗U;7)Q0YBTޯ,ZDyȲ~MXϷ_~(:yGsnìވuo&\[ Ms65/g endstream endobj 39 0 obj 849 endobj 41 0 obj << /Length 42 0 R /Type /XObject /Subtype /Image /Width 256 /Height 61 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xZ 啾5/BXm͈cTQ4 ⌉QhpttQ\@ H١( ^-w/U^9xN挞{{u@,WBP8EZ\9NLY1JԚzWaPRV1 010z)ߦպ; r&.SТBL؉H q Q/jgpܹ=zsQyх$M2!NhǕpeS[b1F SD0opvp0Aiޱ) :/T3|ZRǵKg2G)LcVC痿vw{,C#CzqGp)Z~W :zQ Onª¥|PB?+7+\?mMht}n-=7KLٜ^\zX=Vx W'9ɸn&sB.d$yKߓ\~a!'XE/X9qlF'.gVtgbA39E%%N'^.5fT 28ǣY 75өb5gM6ƴJUIˋqXc(+d[UtlPtu:;guHMLԸ]NJ鼎<Yl!Ur+N=]3FO߀j0."w"Bֈ%cg=M߆D*Z~a%J,dM˞<@bw}ȶb c*xE?yfߖρ:*lY}xy֣&c6ϳ.K="cN`鬱#m٘J%r ZonKLߥ`CK,b?f#׊a;V:'CE=d˭T9 kؐ& O'9^̲8|WAJ5T??"?n8k$Y立 yI4cDFTq O;K1M ߚIc!Lq}f8:h.eZGZ9^{id]א/k ۵V3me[|V"䝝jNץ,1+p."V[v>^}#ݜXҟGQ8Cjwl0Ek/Y xDڐd=5o'z5PĽ>jt Կx["~hDWfC !w`ݲ F^z? 4ʫ՚CZzA1fp^V{vp-#4Ȏ1ġ}It_,ݗ-cĬȣmQ<+)9Z?:#q`0[Tb|xd&gCL'`.7DmA&j6Ι0=7Q).aJi ~3.VV1>KuP(GaW,2XsIz6i>[ ;d F 'S\!}v#O79&>kv^'_q >lBQE&"-Bimbӈ2%qr۬2vˏjx`ڂNaLJ;3CxC45eU)ű2,2扳*Iby|~ ɘO޶Lfw|kIHW=ofBmaM%c.'y;jc[G-6:CFϯă}ȃpw,{=T?hgMIߑH1릝 4*POYCw1'9uJ>LA;>} 7?=-M0r4+AH.G|&bx&ejީpNrޡؿmQA:b:C" -6ßh/1A/+wŻ_ܞa54/5T@ wlDʣ[LADh;ӣfIixԓȇtI.N`Z>6ϟ 7G G3<JH;h2rmT}-lqp>%z!dK MAIƯBn9+9#F1 =ThCTiS" g!3Fމ|tWtT>j$EKZfZ/7L7JyF֬$5pXSFOWqvv(G;  hHJ܄. J]K?-ʷ&͎C@oS_AaքRv`ɚYz!cfNH|k92ʴX28>zR-zbhxfQXaTz\B퓝cmH/ ٩XRIVV9'/NwS˞Ԗ [m1YZNjd9|a>f܌EQ0ڰFxʟ$I<7ݑSo \T{NOղpPLDRR+ݾ5BXBZF1m`wl6˸3>E[RHS@L}E"4:I.!G'@n_+\LAZ 4A֨/ q^ӒAh2/ )\b(ip HqÀ [43:<'A8#* 5-Kwq$Է5uF~}F12U c!ۨ\)(ƥ QyuKE< j cFU#`\^#KϱՈBu!{!8&2CAB??$PM+>V|뿫/˷ rO%K M,ߵβejhJ!]V){ƳɀCs09\ռ;4fA?k&6Bޡk|(dTѡ#b捫CM&`だ хwz$rνc+o#raS> endobj 37 0 obj << /Type /ExtGState /AAPL:AA true >> endobj 57 0 obj << /Length 58 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream xwTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf endstream endobj 58 0 obj 2612 endobj 7 0 obj [ /ICCBased 57 0 R ] endobj 59 0 obj << /Length 60 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream xUoT>oR? XGůUS[IJ*$:7鶪O{7@Hkk?<kktq݋m6nƶد-mR;`zv x#=\% oYRڱ#&?>ҹЪn_;j;$}*}+(}'}/LtY"$].9⦅%{_a݊]hk5'SN{<_ t jM{-4%TńtY۟R6#v\喊x:'HO3^&0::m,L%3:qVE t]~Iv6Wٯ) |ʸ2]G4(6w‹$"AEv m[D;Vh[}چN|3HS:KtxU'D;77;_"e?Yqx endstream endobj 60 0 obj 1047 endobj 40 0 obj [ /ICCBased 59 0 R ] endobj 62 0 obj << /Length 63 0 R /Filter /FlateDecode >> stream x՝m۶SM9n|d(uN>Τ&}8q6Ino9? ZA{Z}_۶ꇯϪ՝{ɫz*-WkҪOٮVϋtZ*kvmCe,ֻͶj垎wMW'CvZjvۦYu.ݵBuͪj-V-Qevգ'vc]ΣG X>zZguު.7[v-\VT۷WRh!^o="5pT1zӭj.[U[]lv]/zs5y{ }|~bcK}X B(<]x {zoZ8ͪw9fn^!!4l0Oգ2ie=4Pi:u/Pz|Unizt#ҷ]/wuݠXN-~ WoU 9GA >D/k8.ġx-h+ҫBYUFf_7h+k/W=Z=a"+4_IU5`C Q&nn-frFr'r&|>&*h 0~q]*b#<ऐA1o+D CܘҨ.">+pו=rHsz8hnGf"2QoeSȐ54ͪdQifU;*37PqN߹@Mq\&ʹ~ՏRL)= ro8(78Tx^7uF 89mw$~ mW/khߩ{uz\>N^jaR3RTL1GIjlf!e[,X<v` !x ,;}EA"9[zٮuOy͘^*bP9c24 !nn1vB\'"5U.1ʘ!>:2glWv Lfj 2S@ 6ㆥms>bCgq(En9 ^|ZQ||Á% mmo~' 텤+FlhtZ!P<+n u,wͪ8D[Īna a- !CQ=)t@ $p1=Ǻ]AZ0Nd_sJB.!NIv2Bqp6u, $ EmD1| NGvb'kP7[䅱bNG1;#q#ٯ7R8xs=sQ!ΰ&:ѭ{M:\7؊Yj=iYƭF"eඩ9eN1> XK=L^6 h^J TE?%X_%-Ћi#:ԉJuR'ѫ2/&[[}F37aaB|q]i-rlX$Q t8,Jhha8|N$a37pƺ(LS 5lHb̫n^4 0I,| ']> 7WvethmWxCb()NCǰv ^1ס; 󇏥*jCP^&P ? gr[j3 ytt2G )e5k_k>-;oW8ZT2\C1EcpwNuȇs-|"/g=Cx?)6EӐ}<25ыg#z~;=m7DFpov%s1TJlY*xJ^rP{5f0.*CӋ?$nxw-'J|o Ld`d lŶmj&+o8 _\%8.3f4$g^CLCE-7hū|cTa5M8=hTv_BC .]3 }+L^X|*'K#QBG^nw'_evܽ G_+'`CXب1@K(A׉x:b@s̍ 5HZKl#`koO-ZzTxő )09M%;&Os2y6 1>^ZȔ< y+Oҽig%mv_C ĸŀXy@+SےUubܽk:HUCq䗁KGgojE05?5]_eh\z7{s]\40V&=#=oZ(Ry(nnt*Ls/ =.@Grx$[8;Uвq$aG+ըߨs"LKQղ%Ti^=E:jơ"hej/."֠48zK6$ԍM!kNXZvDľ4 v&y9 R!щۡL2| zQ [C^&vDwM w?I01MgSB-7 ?DOh3 db8@.)Ѧ" aCeB P]6V"2Oq<垤1N$s9 n rVlX1 SQH7KRYRfu}_7X|5Ģ q_ ^~,X~q+-ӿ%)zF!򻀇`!ck&A& _'!E`mɗ<7` lXGEFPй{2+}4LiCf f:!4g P<&\֔I.~ڇ ,T4/ "%$L,m>R|f_iyq-N#ZȞ%S׬oY1]FO@v?-pM퓢fG嶥5;26=WtDEwcza1ljöYܰ%j'ltSjQ],zܺݒr5h 5{؊F2r6vb١=`eDc-iݲ/ lJ#sU+敭NCvf=lED`f`cEhm:lXFVĶ<^t޴!AbQc֛U͞N ;ȼiE~ͮmtϛڐb0s/هn؇iI+I^pu&xKnߤTM[ePǒ7nKx%7hzՋʅZrwFoik2e&o:zѴ3}8m.lc%6qPݹ a򟈨 .oم £!%eLBf>W@lmJb]pdG1Pqi/ oum֟wN"[]Wė!!,@,Wd"ݥ~`H1lǹ5:6kd, ?`2 ώ!yl=Oԣ0_6[OaK}\gn?ii҂9 % 70؜Л_z@X.{DN\ced0]DT^lyp<࠱Ms8#o'8Lg825(ݠ[sOuX7K9/5fD\vC@l#ʕeZovP7<0٤v O}cpYN/LHH짢J@   U?AlcnB%~+a`r}#+%ۓڻc,am,'X&A[j+I 4jvdԧ0'A)I!FR[u9$%r FJg]LO4s8^C>sm/$5géi\GB[8K,=;<uF)&d8RawԄBSpbL$ V;1̾LJ S`4S(g5$d)6bz5;.T-{e7kO/n?^P핤:K(9)O ބ~Bp *=̱RJYX-YJo. `,OK۟*R3Et}].qpRNuy7!ZOvvakMmI8؉?YaRnOF6t̚dֶ̉t"xb ++Q cBpez-DƁt%>,gso(a' &魅9K C>Wz1 8_#Y ;z>ƓVz1a` \2KL74dam9oMByK3Ǟ X6 ď5/x!@ٴ s0$v>0ihh֮4^K;c\ Q ADtűjW&GE5 |&"bѴΛ< uӨ&!PYb,a%6eikYJeHF)g`u\oޏ8 8L d(aec6Sr͝y,0F Lm\Uk%qǦh[W3 |zvda M=,l CHZ:=qw: PcnʸY,ۆ)톓= cn._ׅSMefgY17eznd,uk8[a;l U ByAJpYꍬzy5ltr@085js Vnx},z4M#w:Ny)ln00/oD75u&L``8 _mߠ0>σǩ(JVbO2q?e7S~8Rv0;&ËR̬֜iP~ bƺnr|*mg0ɷ9Pwkd2nƾCu^^v;2v"&j4 f.&9WIЉwtY\Eh)I!K ױCcۡL:fj0),6d$hx(sDa9fc "(BΎj[+%5Ih[r\^Zc)|} eTxP+xZ&ovȷbJ[QYy(;&(AX+򤓚ZQXD{[j;NMр KRAaŀIjtȄ,IjIѳ)A(vZ$dOq`oq B }qmzM6t_)aDZ&k@zr9yaDHշھw@d~eo{?B4+* -B%yV,@>cV^YjDBh~XyM"|`BtD^zb%hf8I>"_V$VRaN slgbNaI0z tX\mafv-cE;H{~w{6%,0Z&7;mh$jIO96B]+D19y̓Co[%K b\\Nht:iTAI^j6C 〙pjdZb gl9yQ`0 )F&4'lƬO,=ͪM&%u!5A'" 0aXjgQ['-8(W$giv2J^Dȣxn@v4۸s 2L 4xsr r.r7{;zPK=q3yk ڿvk42k[9˲Y1cJvp:y:o|]A""1ppY;۟?Y/#9"Y`A}5@R`@t0D9˯e lwi5 h}pbw%̭܄uU]C:?ˁ:d޾r;B9ZZ&Y|ReOe=.;e_.#6%ZN[ΨCg" I2k5[ch j nn=c%;na䐹bDU:Dg>V"°Śs:H?S76CE'>Jn( O+}L#}h j ڗ[Cc9y.ǝՀ-;C3$A<Űr!21o!Z ui})yve}x?+gX^ˑBs>^ 툝a )qW߈&JLIw8/@Ep0Br:KVyD1DBQEaHK>ȧɒR#Nw>'Y4`*rɌ!-aS}4C”t7l .thm6[\3 Eo.X70{d y%ᅒy_f'k5bۦ? TÌgtZ,T}4y5]; VDmFIx(z[RKcA&&Ap'.F] j]ZE+%[$Wh1hMoް_/@ѲG<57EDl)7CV^aQ6TF-k*gZQ"nXl I3a<,$tF+S c=C } ` so#+ʞ OۍM{Hz1v/͚g֔W!/dw)xoAvki \+`W>և@!ߔ 36rvyÙ!spV'Uz `½ ? n`;Gp(L ۄAt2g5UH˜Vy'Ȧ;)߂DMmSHXOI!ª1ɽ=*2$8'piOWp 3OjI b3S8>=>R0DjIH'C|g9!m &yC16:ը#W.'u@v"%v z{}0ـ#"($>y@Tf3eB`<<4^E=¼:=q!+5/ZX)4`LBAH㆚EHS:mj؜9ߌZF P󑢭2m`hqOcDWB,-3ڱW-ZGGԩT>#*Q\eq7HvH *`P>|Qd_jyeb5Up4B[^$;6( Mz㦉\вWR轍J:I0#DyϮVߚ٠44״F @o^~`Mݵ-lEޛc\-LƻDTƵbsH\`g0ŽT76yЇb-4?ta@9pٴH'bU9?SNl046Þ/D}B ~s PE)I|^ftF{1o~4'OO&mng|=ia|ͧ -tGNx2zIݳ_K_aOd ORf$2$;\F `7X?l²Q&ka\xkjmeϼߦzT@! ~+s.!u`~S4! jҪ \<ϰZe|7 > S Y C0- G 4y4=S9ஃ|j1 `yhj9G#> *la*hnd"OGJ~Q$GYyZwF>6s/oU,{44SYDBrŲ,b:͏K#ֻf0Xwq^=_`isXU b^s~>~X֜ P.^ס@֨വy* +H\X`}I BKK ĺ]~mIO6D{_2©Ensq|'Я`Wު-YcOǟ4xدꋾT(} =#3LÿHYj=r^&Qfk :0q:Mi_hMO޲{(Sz=6L}e2 "CL$ ]ƙlt8]%_9c1YNOz*yp'5]OqB yr 345_‚31kk(ݨ`hJy?kYk v_lu07!'3դ0v~Φ1CegPut0O玲R^&9.p'lI}ǑYrMF Rzʕ&,=w3w0#h'Egs(bN ɠ] WVO^ByjR |/ΏWZ86nr0=s86G.oմky6> &-R|˰nXh`B9)|)3EVKh,w9_GnVr7,A~.xKoB_in?I.˔ʻbY8C9݊@2k)z[UMsdSpz?t癫*ٟyM>~N<_{τB/L{!uBӇi{.WC<`sg}޼[u> Tp[K}v30k4"*x`q |Oyx# (r 0jU(qBq僩a@a"hΙ6utƨU*vnDxQp| edKF+%E-!eT-D+!F`&5˙t!,KG F^[ ҫ:;E*Pe= ַj-O@SDcSGExQTS'LN +w7'Jn&:b\\7[="7]m `mwebi:E0WwIcjʚJUHUбmk׷q(o\avmꢬaQC)Y}JF6 K^򪟈 5,tPEE-[gydν8="s[L;_{kcl|@d_r){ dW$DJDB++{emof- `T2.,YKH7,R'_8xŏx5 *tE&e(ʡ$=LDŽ%b"H#`\0'XrNI $K>0#nAҘ+M\+%̉W[КYi!Zp؄ASOj:`Q$1Bs:O8͜A|H0;ci>!O1cg"}Q#VCmѠDs.>>G'PL42|SL%?` y9C 炧5sU;dh^1}y{ s){W9>i14>BGJˇ8 C!φ ~Ng!QŀuB7,SeXk}COn@dpWf,b9틷GFoA}Iv17`:Q9?fd$"|EV`@1BP bH3gDds<̉[\`Bn`IlR]%rs0?C7H+Kls,_ǝCʞ7,OTbB{~@z+,JlJ%Op``,,5 gS_ EgW!nn J.^8Z{ /u lIް`~3Y&qF5-Ӫ,ͷ[cΐW%\2,l,INnWf.3:gb21j A]A smvEMb<9$|ҎQfܹOG ݔ2JZ,V_ak֜,p| qjWf]gh5>"SVAUW(SKcm˷R]ZNf [y^mLONjs.Uȸo p&LkmqVJS/("X{^sܵtm F>σ᫱  }](}m-Iֹe?hHɲV&{UCedQ*! ?IoɵdG|@`f`BH 9r b<'K0yVA!1/̋|5dJ7- ~&>1 4mPO|V=TL>c|sj6`ܼ#1Yj|.AAn.|`n"}?Fw)?`mmsvPffj}\ .ؾ=(a^}*v9:eY7|e;0RC8 3NzU,ITbQU8 60&)O< %\>5e /99noggݶ: endstream endobj 63 0 obj 13664 endobj 61 0 obj << /Type /Page /Parent 3 0 R /Resources 64 0 R /Contents 62 0 R /MediaBox [0 0 792 612] /Rotate 0 >> endobj 64 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /ExtGState << /Gs1 36 0 R /Gs2 37 0 R >> /Font << /G1 21 0 R /TT8 65 0 R /TT5 20 0 R /TT3 10 0 R /TT2 9 0 R >> >> endobj 3 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 2 /Kids [ 2 0 R 61 0 R ] >> endobj 66 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 65 0 obj << /Type /Font /Subtype /TrueType /BaseFont /OVVIWC+Garamond-Italic /FontDescriptor 67 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 121 /Widths [ 250 219 0 0 0 0 0 219 0 0 0 0 219 260 219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760 0 0 0 0 573 0 0 323 0 0 0 0 781 677 531 0 0 500 583 0 0 0 0 646 0 302 0 302 0 0 0 406 406 271 406 292 219 323 417 229 208 521 219 625 427 354 406 427 302 292 250 427 344 531 500 333 ] >> endobj 67 0 obj << /Type /FontDescriptor /FontName /OVVIWC+Garamond-Italic /Flags 96 /FontBBox [-217 -315 1129 993] /ItalicAngle -6 /Ascent 862 /Descent -263 /CapHeight 644 /StemV 0 /XHeight 410 /MaxWidth 1153 /FontFile2 68 0 R >> endobj 68 0 obj << /Length 69 0 R /Length1 24136 /Filter /FlateDecode >> stream x `ŕ7^Lsjf4)4stOݲlK%cKXotXL0bv 2@l &1XB$q@bHH#g{U#5ڋH$68y5$?^s; !pxtö̾>o]Ù}^Rm\?8GBZdq1vLdMS>udyK{ N,\ n[) ixtd~1_P"̱BmxKJ1o3t4RvܞoOQ 93!d#e1?zxS HaBen9 mm\Np?_*eRt9̵Y }؋ހ+Is3#:!LGviS4_xV:>$\g=ϒ?#6oxi9__>`~y|w@'bz}|Ezf|\jb|_s#80Sm{ ]NhjBS3ͣ3qRӮΒl<hsh9i:sӮ=/G0h% Q6=O!M ɛA3=i,H!|bzDSL{NdCE |ysxHOϞ}zD I[~jz$ *g758p2uDp}4bvivF˳0bӮW2Hkzd;t|~ܣ)C{]hupu`&ru |y0KcմymfEQ6 .KyVC<BP,X-챟~{=v{vm챛cc5U_UNCaSXfQ!(xVVp QP B ۦ.Cm׹>`nYSBj뮳 dU7U2rT"mJtUiMw`;),mKPX!ܶty[]a]Or.(pL.pL.p CcO X&ںz& |v_۔˽,F,AR˥h5eE0{KJbQX&kěP K uT N.v>ӚKn ,F.5. ˡPA 4GߍNH@r P۔W*w?pzzO|?;=9}%sJ2σCR(/]Ӎ7(C S}KX],}8xx}\6uVzZ)=C8̏Ĭ>^s~|r8_ݔWIk._czC,$үXo\Z 5 jjSOinJ) {ݾ߰f+ؾn@SDj~)a) GD"Dg#7. Enk9}?Fw"D!HgO3V8.g9 #P;G&C=/ Bt5^ D$% pPݏF 9~f,UG =UD. |\Z~*G 8@!h/G}b|oGA?vIыUI sHWrA+4|?@4&JB)GQ@%݊ELAK9P*F"ʠǵFd3lѣ)]3VbA>xO{pWpE z-{ Nt';z .XD>q3")r΢{rrQ*F55@0s!ytzMgG`Wygخb3ggfwa|;>ƗD5zbx"R7y]6ܣ4Y) TZ`ZaǝoJڊGc tP0ޅyzy*lO)؞B߆;}p7o??I> [>l›V<'2~O; ooxY6l1"Iˈ.b%N섻# wGgW)+ERҍzO0^||ߚa0̞_ T b1F: öplGl cOٻ=B&o`D߄ z ߣ,f/XNpƨR@ք[p;^W~ mQ 7m|@#8o ?K07[/c%D}jb1bq8B|xF+%9Nz0!b&7{m{G \X j::Oc[[2yL9c??0c泍Iv>a$q~ |KAM}R7 Tߠ OK_`\`DnSЧ.މ?%n@w)e‚x,?/ q-j1ACS$Q4kpO9O ]̔[7%[I1SRV*Tu|43Y/nf|v<NY76;5ոs$ (>}빼(:ͩ To4nrhLUSY8kHM*4CRCSKO_^t ׯ]7$d+Ae)V{:>0y UWNFjJ;kj}ɚuN)e~=ݲ\ )&T{r{ekFm{=k_.t{;F5Itd`{Jm<eBwymYǭ)dw3hr3-EOH2j3a2\\AK=L@cГ^(֗ue0#0`& ):ܓ! |dp?BI\͝ɑ(%yѝSmQ=CB #];S{f:4cL̅3ҙgU9?"!Ӕ"x͆Ɗ)l9>s'>Mсɥ]}@ՍՓ>w|n7ymr4ܘsSwm0SEј2vBLvrm]e,/Ak_&Q8ψ[㔈l+#c@lŖRDKwP:HW+F|an8>_G@eԎ6@:hF܂hބhk@: h+\'_k)<t.@ UB[}kY t{{Ha!\Kh/~t_8 4"r,0 PSF>ۆQ zINj~W^{13ҭeQeG Lԣ y^()IB EBbE) p6ֳNjSuTHX.Mf #or&4`b`tV$屴H/X(yrR~PXP(5(˰ť.󆂡̆!ku%PӀd}S!F6O5O&1t5.ƐpI҇÷Fka7>ojtƸN4(,^Hh^ av+i;[fQ `^׽R>VGciRxIq(XRQrW^;ӏW7x%qgq_[B*"8."f1zfh"rXy9]r c$~’Z+Z`}^60$mrqy(Xh0|n\p!mT˨@5nSi=;;J<|P17wMDS5ج<Ϧ=]SQS,ZW' )8B::a /|૪ԳsVWO ϭxg?O?ύ޻#?\=^g@ߝVMkvn=:ENѧS)))yy9mUk焋E"}]T]T_\^]// ..GQ({TqTy;:>9=Wop nC↸QǑ5-mw3٘ټyYшX4F&5o;9qC]^[['Vl3k#ȿ6NGqg5>81#ddM~ E\PPAcc4P,QC&@r$1I[Q 3&FRš-f6f4HLJyph] @@]i3ϫ JD).-^ҐP7EujYh~5PWE4j,DE(?&Q0bگӷ2a͎*t&";P]idcsj#^_VVP,a7Y=Zٳ.ZR}}KfGF`A3[Gu4v_i5M|>w?m G.)ӊ\sNMhZJk<L9$%UJ6Xbȱ/qۗ,TZE &(^а=R:$~3* eϯYAʮSy 0g.t+^!媔=MUSSlK\GSLU+¶mag!hWĒ˫W\^tS/~i5`g`(8Yzwaw4$ψu D6A]e LVlׄmoB-d Bh~-0R !noX%3X#6+ mm.軁>+fpor ǝ۫,^9X-`!Ќf%哞26+/˜R>? )K|Śa(&~vT׏rsp\kIYށ|%mTR0$3pH a)%$/qCA MJlP(j(,ɆJl^ L#+YoHdt4*J%-fmc~9aC(zO=%`3q/ĂFڠcUTGrJ5߶ѿbWWJ-Eh5Te&HJa7hMrվ~S@*p>CC Ͻ 4y nk:xOb6c~|if,K3p}z^SJ(dRI, ($! D@U' 8(C 4!I0AP>$R$%h,BFc540:%#N~RT:2cW)QC+x[H!m]m~84UUpdфhA|)QRQUX#;VUf ow^ ލ,LXZoXzYD`lE9U\9j%e|A`iCYL5k\ckH?,8 ꜝ{G~;1vKXT @ZM~D -G?k%(`x5JAW(r%Rm_+-TpeBZi&v*8[IR ɝF7vw0i!rZVD?CEtХRR\:~\)SLx;Qӳ鱫/)~@QN>3/PlGI&yaDV%^I1P j1!{s,[iIe]<ȳ/m8)\fFԔswǬD׶$4xឫ+ѣmL,Ɓw}Sܗ9 n6:߉U+4ʰsjl\C \ƭڡkVӊac?;jN[qZXe{qgO7]~bĘl#yψ&مbGب oP(P*,1@c/]MN$pFhT/g A)cWDN d9%t[(0'0"x\R;lZVGG2 @7c8XSHt H>(`2JCbvɧ#93iW4j9>du7j%zMo\3#:rTE_Q;=4&smΛ:ceEG+*T_#cy8ll#7eDu|!bRհ0,g:W9@]LpD劉ɉj#Qq:KܱΎW;(h\}G'5w"] V:S_V4 w4V3iVX1C-3`siscf&ԜLOpk~7WR6[We$l$햬`d.% Kc01XBKxN(bۚ;d7YìZdn yNeFI|aa g3E"@Y FAJi{omY׭5TUy`(Ra[z´Jkϩ(^gq-b!D i uPJ\戴U&+ׇkkfswKXR$MYtCI'[e-˾ch$㸔ܖ!B"thɈQEr`)3[MfYJ!Di-u IAHڡ$MrdR幖T`Z;(-.˨\DzMƪS9ݏV՛sVAUE!֢EAB9$(6u\YmrzC`x)_CaV0E%őۜaՍ)#j#Kq'_[-9JG#b;v(v(Ny6[[`) OVJ֦U׻IEX)V "Y sX(B'lD]\ɀhoJ'>7_ysw.O$P%[v8+„Yvj/E gŒNGRm*ɩu4>5&YUn}y&lB+=x%8=@y_t-XӘ\.| ˒X͉FywE+IzH[Ncv:ڄZYX0 8I8!MGjUj͔ЧCՌuվXjHK$'YY9a"I\iRwXJ]n) @XIWʁpTZ? d8! -/1LD_` ?XrK2&LLiB:!%jPC@;[Y A4vѤxLֲ$+5#>^ѵ52 {;E:~01- ~-Uh lYK| 9I8,r]X([0;u bؑdpC{5W~]QpnN~A2R z,m!/)~WeǡCbBf +JDDa :Q|DN<k]p$di#|GW4;*uտhacTyJ2"lfkZR tElMEkkZm_ZwC[Ӷl=O)isLa3JXQ'*`feD' TS.LXS%CGS6UŅ]ìErxI^k{Q#絩TY95ū|)uvd $i-<QV\[ea0󨧛`2X];Wod?ى0uqホ%~!~Sy Pѹ[u@U|IKXR  OosMn$ƒ[Ko\ dtk9^t,fٕh]vn0ku7qsQb"mL?v9]-]7ܵ[5{5 Aa`9 "}ɺTХPN "%n܌J|a) ^·%l$iQ,8EuPȪCR+hA2,6 ݋Hv´l*V Έ#\[Tǔ dy3߿)'TKY=rK_-%sy?o)$5vNz!5PUֵm֚xpj8{] DYE+<]iPiW,D h(֐ F+O`[}UL$htU KFXQj~XVVE⽰p80< /j"\YW82]jEVeTY;43B'Ab5x-ⅅ<2%e'J 6E;,ZƝB 9/\\Rڪ6ʥRL@${4,NqWc Y/ٸ"k+n!X0g*1]UzWnxcv=OJ%Rj@Dg?ayDiK>N:XBd~x3h{HWj]iS994Q/.uOl)id'/yzA/Bn=*k.&4ɘ 2(G@ɐ >$Y. }+ W۵1mՆJhN6g > 9CV ypks؃XMNI]?;?^p:*!,F[O=8SD0g"Y+: gʶ (yrgEVKrK%K^zYbE _i,0ܳ䮺2{4YP{$2 6A u.Ph.J:`@J2J&ȖY2Jk] R@Lm-V޺9m(I$k/N7 9pY{IϲnFe&ނrE,f]p)]DX4-#<1u6WV`nc*:N-żNcj-ն@p-OZDeKOJuqKYz3|w]Գ2C0-'ASb_o`hF Oʌb cIkZߟ#O4([`J0vs_/w?A~iEϕk|+;O`8F&`RR0&KF3R&'1;ɨh:LS^cTCyM+,VvzzuWx2r5[ QN#GJFB;|*TWVW!VVV`}MC#7oRhnڸzӍǛCCXj~+oWvÍnmiO=KsǞ0˃xE2UYsɆІԼ)lbMK;J~Eתkӵ:tKtCaJ\ƴJ go7OoXbbo6zQ&XYѹXQ &k&杔iO;K[ޞ.1VWѡ͎Oi9xm{L={LfNŴ{Fb舋IFٗ)*4m T,;kXZJ?m/$#D:=*^}', 2,VItY<̗ߑJԇiC:ehZ}ldv]qWQ ZRꔻ=ZZ5fӵu~ݟu%R56R^PJ%G]d r`UԞe52P4De>؍ސpA(/8t:a,~+8.Ѹ7:FW#i̭SyD*Y+8s|xGn{Y`hu?rGjܽn[rK~)X3 ,E^5)?"F2˖Xzi*qX2ɂ@*@:Bgoƻy%5 o&Xz,15NmѠ`ү6yزш)2BM}{s6-QM*=ies0X0Y=9坟ق>x0jc>`2KFpWi[ I+hg6xdiţZ>~.A)Yoqƭ6Z6v7op6+fs8Òe5:.II}T NL#$ך(ub!^J#Jo<L$zSz1IP#f .HU *͎]3>df!-P$`5,6JCLkB K!B!^{ˆh/7\[n<y2^)nwصoԚɏwwv1 ޼tE=q:BO7ZvOl/)bT^0,~bEmhokKsAXb ْ7ZO쾉_26`ZnoTu<߷F'u}ktnMb$3Eݛ#8e.ĝe\H}A_2," eͱ*c$gʢ Vp69^ J?0!}.ya^Z-b Y[,jy~rix-<:¯3ٰ.M7M%*c|Πh8U1nbYk;Kn :#`*{JL×Nt5mw]n608KQ\"ЀՄ1UTjUY8L~RS*- ݜWe!A#o}/";ICD~1?j^_ Tig835TrNXߘ?=o|f@ }f֚5jYsb͛5NAB(]5crڄ0. r9;@l΄d! Πi@dLd<$;[  B !-5u>QG[*}=1hL| jN H>bW@r5{* ~[UXKܙ_/_UC3YAc_?8!ϭ*s ZMJ#Bn5=-4'͚k~fu&Gٿ_{((=2^o)VRZ<ʠ2q}\Ӌ\BXe^s^^},`IWά !nllnlH/y|e&'7vK%ҒӘH_Ҽ{ެR*LΰA0pv0QD1=$}&ig4睁X r D4Q^'/9Q),_]Z8\x_|!)ąTIIfprv]J_NJ_ˉ,d6=~dK¢H Rw7{]; ,zي)m#%Ma-pesכTN]Miu+G҇ $k1Kr`%-Hǒ]aŞ :m +%d2Y 30|jj&&qgDFʭPzUi8m)ZGY8D!)MO1AU`NtZǹiWg?~8mD[NxmDSDTDe0yDz"ZDɮv>C1)qJbs :D`ŢdHܐ@ymT]ޯu՚&>pstMX2qﲹ7mji.t`;a}b."K@"?ʪjub2PB +*B!gJ- 'h3>*Tb xO"tqމnX I"PQR^[+*^O.:tǗb& TFaK_4Ă'bⶰ5WbKB^ v '%# ~,Ci]p[ttsjsLsl6mõne1[:oXYւ/fbœMھl+IZ4&<& 1T0 mCJ.Zi2foNu)R V+ ]t0(g`g3#$Bva鉎&UK&r[eUUV-Ri[%;inhѾLN_JKve M1ӻlm Nrh_3"+H2)c d\+rmne$Ϧ6$paOUkQTŶx[^`Q*iU;>kLBn]1ۡ5|kWڤoXo3MW6CGڔjFɣsq?K-A_8[8 )(֢NSKl $@mЙ DbtEqX\H۩_dx[1OpdGv}a a2()bҲEgbgL 3d&*Dd^ʄhdWɃ R  s؃XtK|ݭ.gaVkfUt턻3hYi.|kOUan)Y^HXX$jט #c]i./Z+}`ǭ ?hVja I"KZXݔW&[rZrme7o:M7糟um8_4[`M0@ tJ6k8]LT_ˋ^Hj>W`P%Dr:A.ەNfwffg?@ A"8CzJ  ~A;`ew^7+ ؗX7Tud(˶s|}@2aɃ_,'-2+UJQ"&P"TSDUmT+t|hVҎޜ] Dy^j/-7Zo\e鄃< ^pSۡB'E>d o(CjNӭ9.q.IDQ8a(PZllku(ib>b[t:,/)ctaFLW&ƅ2&օ 7&>V=whB3s;_T.']`ZJ)#`47p5'Gy)G@e*F dJGgps9WLƄ<,D>u_[H`Qb!ގf*4zlp`?.]?Āq81<clj=SGp&3#Ygݟ@2 uƺVf0agfA Pq eCB^>"Du#k b;ZDt2 喍G)?E,8B]f+-#>mZ£h-8||56?NrfglEPbe O O50\w~w^6^;ws:\ZҁZhMhox+C .Ҥ3ܬK8neDv:M@n$"N0Q0 \^ǐjںZR̅ՆV4J ]\+hՋeB#Xh͡EfZk[zq@ ZB*4 [_UPjeFEk@@։İ 䢁cȞ<95VJZYO5RQHu endstream endobj 69 0 obj 18921 endobj 20 0 obj << /Type /Font /Subtype /TrueType /BaseFont /RFAATS+Wingdings-Regular /FontDescriptor 70 0 R /ToUnicode 71 0 R /FirstChar 33 /LastChar 34 /Widths [ 891 786 ] >> endobj 71 0 obj << /Length 72 0 R /Filter /FlateDecode >> stream x]n wd,]R*U>Tx i*u/s|p׸e0$8o˽j=8þ\0EPB֒w8<8޲ :Ö7. 58hݫIW zGs_Q=!P""[$X&ȔZ].apF);x4SRRIb 5MǏv˙µ5\`s endstream endobj 72 0 obj 234 endobj 70 0 obj << /Type /FontDescriptor /FontName /RFAATS+Wingdings-Regular /Flags 4 /FontBBox [0 -211 1359 899] /ItalicAngle 0 /Ascent 899 /Descent -211 /CapHeight 799 /StemV 0 /XHeight 599 /MaxWidth 1443 /FontFile2 73 0 R >> endobj 73 0 obj << /Length 74 0 R /Length1 4108 /Filter /FlateDecode >> stream xW{pTιM6&$eQrM@KHIkۄaQv7  "`&ے:U *zPlhflk騣ѱ"6{o`廿=wsl꾫C[źȺ2[S[7ol[#Wܺʶ3Xmӿ7vau6!ϼ2psvnhgb[&u@\Yڰqi>DB?tq I%2 q%1K@KyA<2kyխZ;Y ~>RJa:}ҋD}Do}t92@I l_ ו[ /ڰ߆lxֆ6챡ކ:n 6, tz7A_==}4)ht;:^K ۰φlxچZlɆr$ @GC_B_@ m+u:'fܫ$w+]JrTd\$+Ɉ +שUMVNQ <5WQ]jTTUUQ*dLB<\BƉV 5f}5-7$9! T9Ĩ%J?=Up+Ը8McI}2 fx7iznP7z ]Qj]A֘t)#5+liu{"yJBO61~J/NȀ}U*3$5B(P1";Sy?8R*Vh?m>NBͅh5ЧQKk-"#G0V CY] f-|Py;Lp/F(6B~:DLH/FxY~>J`ǑbփaiY6n(jN> ~R҈#W:QZl04seW5+ӟgMu0F!_s_Y7BTtIkg #R)UFmdB `@M`Fw= K/Ro> }H0;Y|VA"n|~Ov' ;ږNG?7G%V qaO8 %%։^xVbaT+&BV١\yJy-m6僗hXmh'%UKz2B< LL6RH-gQmd[.3z=#=v}i.<^|_#oZ?_Ž{Cp<σc#LB"*l ao+ťm~J<'~ JiMꕞƎFe')#yP~_S&+ytlTiV:zQXNC_M.) vÝB40w*5|fb> B)Z&JR\HWl{IAڧlfDž0* OJT#Z-u(YxY}yEQ6W |땞B@Ʈ !G2cK %7-+S2-uE=ڴkɹr]Y4Ȓ(pFހjFQ:i18bsD 9f>CL?2W]33K[D|^-kju|Z,o VhƨվjEZV3XT @e=TZ:hA+łj``AF^0u<2Ba f46n'UdYV XrXhk С^-=rQohI؃Q>ͤ$l1@QVP>M]ЫQ,֔AKzOiZ%{n=ʥĒ~ʈϛre3̚h83h*1e-T3sDzk0nr^NrÌE`gH.]K'l}+= \:Of.bFq1kS,-FVi|FHriFSFa<YP)xUSm/"KˏGul#8&j,Wޤ@pRTh h/][Hu-&bC=q]sT( m) uHäs0&Մ77w&Z-D|W\\O_d揪gm&Ѓs[TpՃz5"3Vg)o3m,'i\8>!*8_^:gn'ГhEF-G;i\[Wz3r$͔Q2_A此t˗IPdhƌ7-!׉ Eo}ڋ\M߽* ߎ bel`8x9P%>g޺6oز#ֶ[0ʙy ZY ѷ}]nNӒ endstream endobj 74 0 obj 2691 endobj 21 0 obj << /Type /Font /Subtype /Type0 /Encoding /Identity-H /DescendantFonts [75 0 R] /BaseFont /VLYMPF+MS-Mincho /ToUnicode 76 0 R >> endobj 76 0 obj << /Length 77 0 R /Filter /FlateDecode >> stream x]j0 ~ Ż=@Rȡ?4xI04QC޾[Pl/}G"6+|O!{k_\6Vq_ D]g"k!]qWW 3>/cS-/,B'0ݳ/nنXR/> DJ"f!gwOZi~AmŖzGrէofd endstream endobj 77 0 obj 208 endobj 75 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /VLYMPF+MS-Mincho /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /W 78 0 R /DW 1000 /FontDescriptor 79 0 R >> endobj 78 0 obj [ ] endobj 79 0 obj << /Type /FontDescriptor /FontName /VLYMPF+MS-Mincho /Flags 4 /FontBBox [-977 -137 996 859] /ItalicAngle 0 /Ascent 859 /Descent -141 /CapHeight 762 /StemV 0 /XHeight 570 /MaxWidth 1000 /FontFile2 80 0 R >> endobj 80 0 obj << /Length 81 0 R /Length1 1768 /Filter /FlateDecode >> stream xmTKU_N$]ak A"G0I&!?FA d@ EQ RlOUOB@޽u}{}W;E^$NϜvƮCkVߝߐ56K.\A\؛N>ǿwaƋ} ?BfRӳ3X[=ٵ\xc4ȇ|TOi{Ѭ5a#6q `{z6; k Џ5 괬*{s{XӛFwtQ5)&z太Q12$Ԡ#hROqYz),FnJӍՆIɔҞs,Iqg݂q#:FcLRKtW"0Pa:НPmp{-b %coxHS43O@Q2)sﴌfbm\DwŦ3#!xVͺ::(&${ df]8 iP<09.&#p/Ky (("+Se@'d}f--jurܹpa!LX-<ʡ4.'Ģ=!:tG/.ݳ|ɵKD$ endstream endobj 81 0 obj 1217 endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /LXOAQP+Arial-Black /FontDescriptor 82 0 R /ToUnicode 83 0 R /FirstChar 33 /LastChar 70 /Widths [ 833 667 667 333 611 667 778 667 611 444 667 1000 444 389 667 611 333 778 667 333 667 389 722 333 944 667 667 667 611 1000 667 667 722 833 722 722 333 778 ] >> endobj 83 0 obj << /Length 84 0 R /Filter /FlateDecode >> stream x]n@<,EĘv"!(U$/}` o\ŷ8sᒿ>aueiu0%]%צ0fš[ߕufr˚·\Ue?(=ĩMtmiƓ{zusW糺v1_sr>"a=R/mNGꦘ.sӥO):Kc/O-6u%/uVm%IDYr;n$Hs|B٘hj{%wH@FɈj Ʉ:=H.  ^sZ 0'H(`(5d@o~k fوbPY*5`~KU2^A*jʹZ=-*peK jŧ0 %^z: JN?d,߭^i?. j?ms4Ow endstream endobj 84 0 obj 453 endobj 82 0 obj << /Type /FontDescriptor /FontName /LXOAQP+Arial-Black /Flags 4 /FontBBox [-194 -307 1687 1083] /ItalicAngle 0 /Ascent 1101 /Descent -310 /CapHeight 978 /StemV 0 /XHeight 733 /MaxWidth 1722 /FontFile2 85 0 R >> endobj 85 0 obj << /Length 86 0 R /Length1 3668 /Filter /FlateDecode >> stream xuWy\G;"DH AD@A" x"HJ Hmzjt..ֶZu]Kc[Z!} 07}1eĎ,#ls޻xᒞyJr{96O)6/O\7\ow}Ғ m۱.\_Osx酕_DhAfpđkM[ZFe;D<&5|rIMX/ۋ/xt]hcc8'*$A1p6gI8*'Y@-8&lqՊ ų=k(Ǭ_Wq^!ŵ8k l'Q)8"j2oWp͓7C˝qӃ NDC"~zED *B^!#qVD<(!:r$Ia#|)p;;|"!GX'nzqX,֊(?SgTJ/$tS"":ʹ*h'R,#UG^%㠕2I@oB$LaaaPB#RVvV( * #c2i38˵Mt1ls<:&<<2,2+H:?|NC{#6!zI)~{s;qFa;<۞8ho!j:}9/OoNH$ F*T5!aLX+x`!r-Uk sc7NT/%;篆,PA輛>#theFǣo07cz:ڣ`ڙC$P2:gosܒ %Ķۊ>Z~}Gm9toߌ2g6KmNX츿Y]~b={^#ъ~y8lBjVBXcβQ >NT!x9ShAb!ns=GK豣gN6w?}MPc9'*Cȹfĥ_<)y{]O3t8skA[qEJjt DmǢwĉ9yU/{a.O?zJ? :v{cW]XOӭJ S7OapnvFMӕ,|9hGXZ Fˢj49lj5ZA`y88wY5@y\FSU9S$(L^ n>=bϨ}-x5wڨ@/uKޯjvGؐUIWi0CK!!=`beCrrbgaM~Jc)X >gcM_( $YE`qh*gV2,<pʅR<LpVh&%c7C#tt2e|':N^9vDr^&OMӽq{?1w]6@NkeWU6fD=egqJGPэo֭*zW`yfQL:*'jԡ.%&mM q9 Ʌ,Iy _\;bKm'ȶHyH0B,b`y,B?V񔢦ރ^͎ ИA~`D-k3L63G;귯^ ?!>yq ?Gts0MBGp!Z%ononV??<(euàs#]hX u7ނ$ Ŋ(fH^y> u5ԯvMU|.ch팔Eə[w4gOpGVَ8]pkW0L7.Šy 7sr=PѬFCmSIawO҂Q+֔.Z2I\X8 e71?V[o>̿k ˉ+!:x{!} $-\9W;yU&DQճWv:,2JJʉ4l]-tOvуLay¤W,\fWxu.aOrˏ/P3elg/j{`?{_E{a:hx Zz~Bк`jڼrӳwb *REľ([G't~jG| *1EMr:'-^7EE~gҲ5̍xHZ^uC TM6:~P_- 7c2@Bw=9(wfwoJ4NK5DZyK/9q܇V;xƎ?fVɯ!~WUՒ35iBC.쨝:=@Lֻ|*%jIgbuqR XN{` Z׏ni.􎔼CXQb !bA/k{N[2aþ]vZ>Λ\VoA.JP0l+=.&I7K6C'|c(o3N&yWs/廯hrr[XXjOȭz~\> endobj 88 0 obj << /Length 89 0 R /Filter /FlateDecode >> stream x]Pj0+m% |胺[ZA- Y>Rzϭ5TFcuŭA! 8*ڨxg޳ݶD[;:$Yb`wn} v_.woF(q$޿3BV@#P"RTHi\|0vB&RU2t }WRd hB<%z2nx'*6tG~@RZcqW|J$Dy endstream endobj 89 0 obj 250 endobj 87 0 obj << /Type /FontDescriptor /FontName /IGOMCU+AppleColorEmoji /Flags 4 /FontBBox [-18 -23 1055 1000] /ItalicAngle 0 /Ascent 1000 /Descent -313 /CapHeight 889 /StemV 0 /XHeight 666 /MaxWidth 1000 /FontFile2 90 0 R >> endobj 90 0 obj << /Length 91 0 R /Length1 664 /Filter /FlateDecode >> stream x+)*Medh``fHM,` Sғ2RS |?@,(7*%P~O<P yL q(_H@dP= Ȧ" m2r2+$ojW>;w>`qN&(0+g@' `Dd1P#T%@Q&~Q%}O ?(P?3; "S?)'Ӭ azP%= @,F6SWoe0HVĽ,FfF` LI' XPꜟ_䚛 =H* endstream endobj 91 0 obj 351 endobj 10 0 obj << /Type /Font /Subtype /TrueType /BaseFont /LPEHOY+Geneva /FontDescriptor 92 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 213 /Widths [ 333 0 0 0 0 0 727 303 447 447 0 667 303 379 303 538 667 667 667 667 667 667 667 667 667 667 303 0 0 0 0 0 871 727 636 651 701 576 553 674 689 242 492 663 583 788 708 735 583 735 606 606 640 667 727 947 610 610 0 0 0 0 0 0 0 553 610 545 602 576 390 610 583 235 276 538 235 894 583 606 602 602 386 509 443 583 564 780 530 572 553 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 879 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 303 ] >> endobj 92 0 obj << /Type /FontDescriptor /FontName /LPEHOY+Geneva /Flags 32 /FontBBox [-808 -638 1686 1396] /ItalicAngle 0 /Ascent 1000 /Descent -250 /CapHeight 780 /StemV 0 /Leading 83 /XHeight 561 /MaxWidth 1716 /FontFile2 93 0 R >> endobj 93 0 obj << /Length 94 0 R /Length1 24920 /Filter /FlateDecode >> stream x|y|EUs_#d2rr r% ( (h!EkwPBp=p/qAEVWXY]2}' }睙ꮮz깟喅H6cD\9usgOm׵ui9!Ͽan.%D|f5@?p"Qg̚r[n 4N o;Pޭ-??t*"g$NpĂ438"*Yql5ʯi@Ѻ{O9nsPձ)$Ncwkέ5.z꿨vnRR5/ Dqp ?j˵mQ#%\S2}<_v =O_!^⣿I=U~_m7%#DA}n$>/r.Oeׅ.\/v3{>,jf%*W]FӺ"9hnjW)]&uEV`HX-q2 m8Kcі y{@|qw,=ۺ|{hMֆ4i߮l說.j*|7'ZD4Ǭ]N?XMt4Xon.jQb :HeIC yRy y4y}>O^+ϔiC)ŤUQIN!h.8$6%vl^aŁ8@,*MҾ{MjvW۪u5f3];9&ǏC:fЀ:wɾ WLz;s S;Lm,d}Mc:L_5u/Ew]l4u/Ew^Y5MMctZ;  ;|:k:wu]3l =HRD(cCm2 |h#˹5$\* OygnBHH'=mLRLh#|K뻽#<+ |E0dG?8M^7)}7IhL<.gFn.ý!uBWX_s㟌{n']"GQ:Rnr\Ww'f3}]Ba諑܀~lvh=!}TQZG_|\+fQapTlzI<o]QH0hr̼Va} FyAXFhǨ`?} 9+,\Ĝ?s'[& 1a_$YszїٷcT*2rlM{HH(`,nMi56INW@tC~|r<'sV%r5\ wrܣܓ~5|KJ7s]ˆ?`ԐBpp\TD،onvHo刼NoUF5o5Ft[)Wג'iGZseXv]^8J>IBwA,bC kP4" qrBޢ;srr) /. 2/-5%qj1SdIx`tgxz81;8UwiN?o.]2hM^hI-JR ;WC?Xk#*׺g;tmg]5ytoˠ咽\Az$#g, #YNo13;ǍZ[4vґ$۵;呝Ht݉ /붐kfgθjj'?]vZs:]NגnĩP&BV{,mkWh^5Bu3:bXu:XuG06j6\2-4}S>g:@m$W,tyѽZĩ@guriFMNib.OJ^^@nol_pߑ_b{>~GЂa ?m4Qi6@22Ck >ugk.57tΜAXfV(mLη;!ɸihk[%עҹ|DOM"HNS'7]y$ve+nRf&qv* ?%^;kh'Mo.7ka&qSwRz_S7nRyݤa\QIpfBHBs{SS0u6:MRnA&0S^4*ԖqSO\^ E Jz `} D&C.#^6?ry \jrtvF:fhnš0Z^삁dv"0<"v?up!<¸qgF;LpAxą^;^ƍAh5_Ax셑^y,p/`00q7p;E҅&N~1NJvKh$k'QBف2PQ6oR]dXJb"4|7F63dd8lA^ ž 6BLx xsZ8Sڷij'k1FNumڈKBUT؀\" K1'iڇ%@k^UBFA. vx3J&)$AbAAB3gC'!$fS@BR V@BPRA*5p#I \OF.6ݍ!/_q#V) 3ͯ_SYI>Ҧu)nCa)cqTct|3?ۮr,us%'u .ws.ޓW_R_JKOۈeR+7cll$υc:YJs r*O:QJGn5ll|v[6 5 ~no;9~}Zl!"}osX:z_tgheUd蒊+[FmrVW?>g9t"IZf)YvYeWSekŎY;HܯUQ.y7횷kO )}·j֋^~B2RjpoJ4jjjSAjfpx u@ <8gټ^ \ΨxB-h {G !{G=O DOiiky,rVn+'է+O#sL,V9LPU auU2} UP$l Mf`楨0,8h8鱩iȊMy. ,*-̏Bf.O h0=™\Iq-*$6WF9gh.)GcH$DAQaiY㿜yhֿx1XMlOhE==~*O}c˭|i_x`644yz?o4ڳ X|^(d ,FiVT,y NlYˢUNF*:>z[q_bhWDoVis~#pR dDFnz}=GvwQ>z@1ߊQJd뷧=']]}Ī|U, Yewg=Xk Do˔2Qi7s礴WO~gc?=+WknɘQ%o[>/חĉ_W5>n |ZQa)Ģw5û`4:^g*nz{DEhUZv)_cb|yei'L-PbL+,=.G{G;E!:+چi  m3I0ICuf8'-8LkDzmk{fϾFz~tS6r?y~D Wl?7ypUOp8\hj~W^UTu@n ݪb+4q7" : 19@0HWJsrctɪ'e# \;҅&L<9vvsyy l,Iɷ&?,>-s}w}oPx<¯ĸElJ5 )USJ%_(,U%:ĂZ+v/,.Pean1 \",Q3`z,d)…J ƒBbqȹy$Ѡ=G y\)ǥz}y|)Ԋş-\j*?k{q*lu˺u1)⊇'NyF>O_D4V*s6)O z>kSsRs367f roK-me6oSf:II^7FFfF6P}7xģF {"SYujHH=5 3&/;aO]F,a)35nb[b (s˯R[ e&D>6F#ko̚tMuA꫟hjʥi~׻od=-^#u;z`0?Hi48Vc71Uq=ү[Hh kV_tRRCFdD{('$~`le`u~ȘGENLGj^d=SES ^${jwqLC7c Xeor $C̷Xp` 'p+Z9ba  gL[v 9ięV\C RBdɲH8faiC9{'\ G&.~nH{kx7wӑ5$9-څ`!yoQE+O8 E<`(T&yH| /FG~즍{GK;{x %T-bLzkoW=9k:m'3)9c|rC6v ~oRsdE1EEG_79̤s(r$_#1'Sl܌JK@n8B$ؤJ\Nqm2zo\点UCgԯ~Α`o9o~x>@/_w͛>477Crށe74nSy 51=89T tOT՞w* 6fjQh(esj眤9is||jj5tL1sUxRj#?9K7Q]Uf`/BF3=ɪnP昝Θc4gWO#iz MJ7ܤKƏW^d%h ":13b#^6[mR8CX"}H.}%g'Wq:,YSIG0YLp F.")C$㿠` =(zsU&rֽZ&;tXh3OOz"(.F8XWb4G[:bХCInwgC3x8\3Ǝ0W({guKx:Gшٴ,j 'N gs"g#a&2;b|.T1i=H Hb7m4߇Eeђ#WʖXҬmhOɝB$sf{a2^ :?۠U j_—OM}pZ,M0d E~}Q=Fź\MgE]>b ]-J}.-P^͔ !LN'@a=A;KgO*8-?&}w:?w.H "70rѠ<EM'aL \1 q.lnXÜF"LFk4Ez^.[>\v޾DaeLg ۠3_5U*`` wPx]|]y]UjKAnQyP%΢sHIE\Pr+2EhQJ UDg]D/,N:H LN[|Q5) וNh~F]zڪGLO/zzhdd㕞<7E.nQ"ݥcǸռղɶɾô%5E[INƅl6fu8s\IH67Ybyd+y+; 43HJH7Ws4i@ wjU̽ΌV J ɹ4⚞H\@+ \IL/GCaUw=e+V=,YyXUR8pn8anЫy^>|s:aC<#ckX%ā gLf8BY@y,Mb)C߶?:;k-lOj{͉K?iL]ѼG{G6]]0*sX /0rLIBw.9 ?lsfBV8ܩS",E3|+=#Vlyס54h5Q6izN.._:)qRg!2c;po a{HTqDgr "k*[y 9- PaCvϻ=Nz"~jd9=W?t./~׿}~%T]F0THKJ idd"#Nd䷕LZmJZF_-gyo^!}}ͥtݹPP}1Zm$y>l$QnpP*d:ވzAJH7J#ejyC<3\ZC2= P`paul͐0;KͶe؃2]znnٴWޫ55*Gc17_;R:umZ^m\m[<":-˞(qlIrs2`lVIdo8dž,hdbklf%(WC/ Nw3E(V ԅ ]Q| p\o9Y/6,[u8?`ڬeܲeXꕚi**(3fe~_tuu?R a߾}B(FM/w4zh"ލ|@QEA:*Y68$1lqU#He*bxLG]l&̝ \6sU U)XlϫEA/H-GCz ]x0A|4;sq{>`..o1\urb¿ D 3@y>"rHcH .z^yokah˜XE g2 ٤ r뾠mq>_{/w7;.(2SF{Sw£u#&]s9|6wK%Դp[ڼy^ty1Puhh:-Uݟ* ;-;=uye36Eq  2USv+-47 q>^LlOf ~ 6-G 1 bjb5DflLbn&ʔ%{BGa7Ywo>uu>q;)>* L]?T_Ə}/{?r; pl)dh)cWbܧʨ|zbֺۼS^VJ[czcJ@C_,ހ'T gY%%4ϧ 𵥊>?Ex<8v?uqƧWIdr?uIMc`̟7a߂=+bς}u/fSl7:h{'갫~_5zDžzߣהBYUjgopH<<_ޫ;gT%9jvnF0<C^}s4M (] +-?Ȁ%ENљPΛI&lct10$b&Q%r\bQAmvFg 7-uE~1B,#=0j [UeyG ==7qytc]&RS}t<-)f7|a)l9#ۄHA4~(?-로 s , Oy>TSpMf  &Nw; 1{5iKIJw#<_[;V)UEp;GsgX>A&ܞ 󌎅c{He2pGMgS X48p$+IWUbޕЦ AFnրgbѳqUOQWll{7ݽܢ?p6@JtiG?Eb5@a?2UB.$ H&]ZRD.#\ߺx#}0CL::xj[c!j@1pv樇8Ar>:==À#$+{.fQ7~1SW/dž'nkخ]k5Wh!67Pv;tX>|"}"RJg^fAg*o6hɈlpͫ%yˌ+0~<:'{L(w0"ME#~{q'96XF]^ԍf-W70}z7U5%zQAtltz QJǜKMKKOKJNJ&mr4;2Ԡ>4Sij%Uu*Kt#T $g!5^$/X~?|ij.vJY adDxFM߰hWb{8>X~󹼚܋B'lB{.?521KSmOSc%~<]" 1qffr3[˔]Jt2] Ebw1qU^#6a_dBńu{r.a;<57gW5=jo7Ye7<`/xu֐wa]hak IkBcKp0Ӥq0N3٘|?S_q/q~] KYK {0gEL,mI^^V{KxKjXH!@rq i:jr&Hd ,a?%gL3YEh^!u3~MZ1Z={6߿g)!8Ƴ ~/嗯,xЂ2}bg^*8}xDIHXԐbKޠ@#О _4lPv>3::S)S)S5ER-\dZ%L# zxҏv+,Ͱ6]:wy:w0Kvs t-К6L&1@tNLNN3(f%$œ6Ewb W (lou!-L pj\Mw},1 S 31[я 3sxFGia8H0-YKKn[y珝\=QÕӆXs7La5ސ|;f hxc{2+~z t:JlǾ-Z -f++_u tIE7جJI^a-F ?xktr` `o`W9Bز7W%D3d@"0W5Sa^ueL|*o;zR&w/ͅY'y0:޲r֪!V;o22ںX#|XPo w a\QM"|נXt&UUCPIB΁,oT񱞞[:s 0Ei:@ox̑o%tN%*JG,&΍,eR%䊅bqmϊlxPOA4H EhE5`|E=2R: ߜ(e9(2ȝ4"| o3s z=yorDr5A;Z{3{vttxe=!CFb>pP?;'/gT X_l(6*zJRKCCZF$NM-\fqʸ lہ w8 /7fes׌&cXҀ\82\A&?d J/W߈km١Hȉ$cՎ) H:(x=iFPv@9r,gŁRR2e&J JFPv@9r,&8P2PQjP&DiAiCوn(QNP(((5(QflDy e7('P"G@qdԠLD҂҆1(P0]8?Τ3ԳԳԵ44__ހzoI_0uKW6z#kkG 3o9z@}̀: oPP?~ŀ:%ϛ8x&>e@Iz@.~u3ԛԯPa@}ր974d7P?^[\u@e@}z/Pեuf endstream endobj 94 0 obj 17459 endobj 95 0 obj (factsheet) endobj 96 0 obj (Mac OS X 10.12.5 Quartz PDFContext) endobj 97 0 obj (PowerPoint) endobj 98 0 obj (D:20170722230506Z00'00') endobj 1 0 obj << /Title 95 0 R /Producer 96 0 R /Creator 97 0 R /CreationDate 98 0 R /ModDate 98 0 R >> endobj xref 0 99 0000000000 65535 f 0000411462 00000 n 0000008534 00000 n 0000361903 00000 n 0000000022 00000 n 0000008514 00000 n 0000008648 00000 n 0000346594 00000 n 0000000000 00000 n 0000387520 00000 n 0000392820 00000 n 0000116888 00000 n 0000125272 00000 n 0000110542 00000 n 0000116867 00000 n 0000131564 00000 n 0000142030 00000 n 0000125293 00000 n 0000131543 00000 n 0000000000 00000 n 0000381764 00000 n 0000385301 00000 n 0000142052 00000 n 0000211890 00000 n 0000090975 00000 n 0000110520 00000 n 0000000000 00000 n 0000391598 00000 n 0000211912 00000 n 0000246447 00000 n 0000269223 00000 n 0000291330 00000 n 0000246469 00000 n 0000269201 00000 n 0000008993 00000 n 0000090953 00000 n 0000343751 00000 n 0000343805 00000 n 0000337765 00000 n 0000338806 00000 n 0000347801 00000 n 0000338826 00000 n 0000343730 00000 n 0000332649 00000 n 0000334992 00000 n 0000335013 00000 n 0000337744 00000 n 0000291352 00000 n 0000293599 00000 n 0000293620 00000 n 0000320296 00000 n 0000325637 00000 n 0000329047 00000 n 0000320318 00000 n 0000325616 00000 n 0000329068 00000 n 0000332628 00000 n 0000343858 00000 n 0000346573 00000 n 0000346630 00000 n 0000347780 00000 n 0000361600 00000 n 0000347838 00000 n 0000361578 00000 n 0000361717 00000 n 0000362057 00000 n 0000361993 00000 n 0000362499 00000 n 0000362730 00000 n 0000381742 00000 n 0000382271 00000 n 0000381941 00000 n 0000382251 00000 n 0000382499 00000 n 0000385280 00000 n 0000385749 00000 n 0000385445 00000 n 0000385729 00000 n 0000385950 00000 n 0000385970 00000 n 0000386192 00000 n 0000387499 00000 n 0000388385 00000 n 0000387836 00000 n 0000388365 00000 n 0000388612 00000 n 0000391577 00000 n 0000392131 00000 n 0000391785 00000 n 0000392111 00000 n 0000392360 00000 n 0000392800 00000 n 0000393503 00000 n 0000393738 00000 n 0000411288 00000 n 0000411310 00000 n 0000411338 00000 n 0000411391 00000 n 0000411420 00000 n trailer << /Size 99 /Root 66 0 R /Info 1 0 R /ID [ <305600dc3b3107e099973d45174b07f9> <305600dc3b3107e099973d45174b07f9> ] >> startxref 411567 %%EOF gsoap-2.8.60/gsoap.pc.in0000644000175000017500000000041413227173557014335 0ustar ellertellertprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: GSoap Description: SOAP C Web Services Version: @VERSION@ Requires: Libs: -L${libdir} -lgsoap Libs.private: @SAMPLE_EXTRA_LIBS@ Cflags: @SOAPCPP2_IPV6@ -DWITH_DOM -I${includedir} gsoap-2.8.60/gsoapssl.pc.in0000644000175000017500000000054613227173557015065 0ustar ellertellertprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: GSoap Description: SOAP C Web Services with SSL, ZLIB, DOM, and cookies Version: @VERSION@ Requires: Libs: -L${libdir} -lgsoapssl Libs.private: @SAMPLE_SSL_LIBS@ @SAMPLE_EXTRA_LIBS@ Cflags: @SOAPCPP2_IPV6@ @WSDL2H_EXTRA_FLAGS@ -DWITH_DOM -DWITH_COOKIES -I${includedir} gsoap-2.8.60/README.txt0000644000175000017500000003644213227173557014003 0ustar ellertellert================================================================================ Thanks for using gSOAP! The gSOAP toolkit provides a cross-platform software development toolkit for C and C++ server and client Web service applications, and simplifies the overall use of XML in any type of application. The toolkit supports SOAP 1.1/1.2 RPC encoding and document/literal styles, WSDL 1.1, MTOM/MIME/DIME attachments (streaming), SOAP-over-UDP, request-response and one-way messaging. The toolkit also supports WS-Addressing and WS-Security, with several other WS-* available or under development. See the official open-source gSOAP website http://gsoap2.sourceforge.net for project status and latest news. * The gSOAP 'soapcpp2' compiler and code generator and 'stdsoap2' runtime engine are stable since version release 2.1.3. * The gSOAP 'wsdl2h' WSDL/schema parser and code generator is stable since wsdl2h version release 1.1.0. The 'wsdl2h' tool fully supports WSDL 1.1, XML schemas, WS-Policy, and other WS-* protocols (details in the fact sheet). The software is provided "as is", without any warranty. However, gSOAP has been extensively field-tested in production-quality software development. We continue to improve gSOAP and add new features. See NOTES.txt for distributed notes and an overview of the package contents. See INSTALL.txt for installation instructions. See LICENSE.txt for software licensing. ================================================================================ WHAT'S COOL? ================================================================================ The gSOAP 'wsdl2h' tool is a gSOAP application itself, which demonstrates the capabilities of the generic XML handling by the toolkit to parse WSDL, XML schemas, and SOAP/XML. The gSOAP toolkit supports streaming technologies to expedite SOAP/XML and MTOM/MIME attachment transfers of potentially unlimited data lengths. The gSOAP toolkit is the only toolkit that supports the serialization of native C and C++ data types directly in XML. You can use it to export and import your application data in XML without having to write wrapper routines. The gSOAP toolkit ensures as small memory footprint. XML is a processed as a transient format and not buffered. Many optimizations have been applied to reduce resource requirements and to expedite XML parsing. The gSOAP toolkit provides stand-alone HTTP(S) web server functionality as well as Apache mod and IIS hooks (located in gsoap/mod_gsoap). Also CGI and FastCGI are supported. A web server example demonstrating the stand-alone functionality is included in the package. ================================================================================ FEATURES ================================================================================ XML data binding tools for C/C++ XML schema <=> C/C++ type binding means XML and C/C++ data is type safe XML streaming auto-serialization of C/C++ data (with optional use of DOM) XML-RPC from/to JSON from/to C/C++ serialization (also in streaming mode) No need to alter C/C++ types for serialization (declare type as 'volatile') WSDL 1.1/2.0, XSD 1.0/1.1, SOAP 1.1/1.2 compliant REST HTTP(S) 1.0/1.1 operations (GET,PUT,POST etc) for XML, JSON, etc Send and recieve XML over sockets, file FD, and C++ streams WS-I Basic Profile 1.0a, 1.1, and 1.2 compliant W3C schema patterns for data binding full test pattern coverage RSS 0.91, 0.92, 2.0 XML support MIME and MTOM attachment support (also in streaming mode) WS-Security XML authentication, signatures, encryption (also in streaming mode) WS-Policy 1.2, 1.5 and WS-SecurityPolicy 1.2 compliant WS-Addressing 2003/03, 2004/03, 2005/03 compliant WS-ReliableMessaging 1.0 and 1.1 compliant WS-Discovery 1.0/1.1 UDDI v2 API NTLM authentication HTTP basic and digest authentication SSL/TLS communications with SSL session caching (OpenSSL or GNUTLS) Proxy and proxy authentication support Compression (HTTP compression and zlib) IPv4 and IPv6, including direct TCP and UDP data transfer SOAP-over-UDP Apache 1.x and 2.0 modules IIS (ISAPI) and WinInet modules CGI and FastCGI support Stand-alone Web server included (multithreaded, SSL, compression) Integrated memory management with deallocation and leak detection Plug-ins for additional capabilities Internationalization/localization support (UTF8, UCS4, MB encodings, etc) WSDL/XSD conversion to C or C++ and vice versa Portable to small devices (WinCE, Palm, Symbian, VxWorks, Andriod, iPhone) Auto-test server code generation for (dummy) server testing Automatic XML document and message generation from WSDL and XSD C/C++ (cyclic) object graph auto-serialization (with SOAP id-href encoding) STL container auto-serialization and custom C++ container auto-serialization Over 40 example client and server applications included ================================================================================ PACKAGE ================================================================================ This distribution package contains platform-independent source code. Pre-built 'soapcpp2' and 'wsdl2h' binaries are included for the following platforms: * Win32 i386 compatible * MAC OS X The binaries are located in 'gsoap/bin'. Important: these 'wsdl2h' binaries use the default configuration without SSL support (no HTTPS site access). To configure and build the toolkit binaries and libraries, please see the installation instructions in the 'INSTALLATION' section below. ================================================================================ GETTING STARTED ================================================================================ Follow the installation instructions in INSTALL.txt first. The gSOAP 'wsdl2h' tool converts WSDLs into a gSOAP header file for processing with the gSOAP code gnerator 'soapcpp2' to generate XML serialization, stubs, and skeletons code to build Web services applications. Use 'wsdl2h' followed by 'soapcpp2' to translate an entire set of WSDL and XML schemas into representative C or C++ data structures and associated XML parsers. You can also use the gSOAP 'soapcpp2' tool directly on existing C/C++ data structure declarations to create XML serialization routines for these types to simplify the storage of data in XML. Example translation of WSDL to code in two steps: $ wsdl2h -s -o calc.h http://www.cs.fsu.edu/~engelen/calc.wsdl $ soapcpp2 -CL -I/path/to/gsoap/import calc.h The 'calc.h' header file contains the services and XML schema types represented in C/C++, together with other useful information copied from the WSDL related to the service. Run Doxygen on it to generate a nice set of pages. Do not include the wsdl2h-generated 'calc.h' header file directly into your code (the declarations are replicated in the generated code). The header file is processed by the gSOAP stub compiler 'soapcpp2' to generate the following files for your project: soapClient.cpp client-side stub routines for service invocation soapServer.cpp server-side skeleton routines for server development soapC.cpp C/C++ parameter marshalling code calc.nsmap An XML-to-C/C++ namespare mapping table To compile a client, all you need to do is to compile and link 'soapC.cpp', 'soapClient.cpp', and 'stdsoap2.cpp' (or the installed libgsoap++, see INSTALLATION) with your code. To access the service in your code: #include "soapH.h" #include "calc.nsmap" main() { struct soap *soap = soap_new(); // alloc 'soap' engine context double result; if (soap_call_ns2__add(soap, NULL, NULL, 1.0, 2.0, result) == SOAP_OK) std::cout << "The sum of 1.0 and 2.0 is " << result << std::endl; else soap_stream_fault(soap, std::cerr); soap_destroy(soap); // dealloc serialization data soap_end(soap); // dealloc temp data soap_free(soap); // dealloc 'soap' engine context } First, this imports all soapcpp-generated definitions and the namespace mapping table. Then the soap_call_ns2__add() invokes the service. This function is generated from the calc.h file by soapcpp2. The calc.h file includes instructions on what functions to call. To develop a C++ client application based on C++ proxy objects rather than C-like functions, use 'soapcpp2' option -j: $ wsdl2h -s -o calc.h http://www.cs.fsu.edu/~engelen/calc.wsdl $ soapcpp2 -j -CL -I/path/to/gsoap/import calc.h This generates 'soapcalcProxy.h' and 'soapcalcProxy.cpp' with a calcProxy class with service methods that you can use to invoke services. For example: #include "soapcalcProxy.h" #include "calc.nsmap" main() { calcProxy service; double result; if (service.add(1.0, 2.0, result) == SOAP_OK) std::cout << "The sum of 1.0 and 2.0 is " << result << std::endl; else service.soap_stream_fault(std::cerr); service.destroy(); // dealloc serialization and temp data } Compile the above program and link with 'soapC.cpp', 'soapcalcProxy.cpp', and 'stdsoap2.cpp' (or -lgsoap++). To develop a C client, use 'wsdl2h' option -c to generate pure C code. There are many options that you can use depending on the need to develop C applications, C++ with or without STL, or C++ proxy and server objects. In addition, the XML schema type mapping is defined by 'typemap.dat', located in the project root and 'WS' folders. The 'typemap.dat' file is used to customize the 'wsdl2h' output. It is important to use this file for larger projects that depend in WS-* protocols, such as WS-Addressing and WS-Security. More information about the 'wsdl2h' and 'soapcpp2' tools and their options can be found in the gSOAP documentation and the Quick How-To page on the gSOAP Web site, see: http://gsoap2.sourceforge.net See also the 'gsoap/wsdl/README.txt' for more details on the WSDL parser and installation. The 'gsoap/bin' folder includes pre-built 'soapcpp2' and 'wsdlh2' executables for various platforms. ================================================================================ BUILD NOTES ================================================================================ QNX On QNX the bison.simple file is located in $QNX_HOST/usr/share/bison.simple Update your .profile to include: export BISON_SIMPLE=$QNX_HOST/usr/share/bison/bison.simple export BISON_HAIRY=$QNX_HOST/usr/share/bison/bison.hairy WIN32 Bison 1.6 can crash on Win32 systems if YYINITDEPTH is too small Compile with /DYYINITDEPTH=5000 ================================================================================ CHANGELOG ================================================================================ Visit http://www.cs.fsu.edu/~engelen/changelog.html to view the latest changes. ================================================================================ LICENSE ================================================================================ See LICENSE.txt ================================================================================ COPYRIGHT ================================================================================ Copyright (C) 2000-2015 Robert van Engelen, Genivia, Inc. All Rights Reserved. ================================================================================ USE RESTRICTIONS ================================================================================ You may not: (i) transfer rights to gSOAP or claim authorship; or (ii) remove any product identification, copyright, proprietary notices or labels from gSOAP. ================================================================================ WARRANTY ================================================================================ GENIVIA INC. EXPRESSLY DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY RIGHTS, AND ANY WARRANTY THAT MAY ARISE BY REASON OF TRADE USAGE, CUSTOM, OR COURSE OF DEALING. WITHOUT LIMITING THE FOREGOING, YOU ACKNOWLEDGE THAT THE SOFTWARE IS PROVIDED "AS IS" AND THAT GENIVIA INC. DO NOT WARRANT THE SOFTWARE WILL RUN UNINTERRUPTED OR ERROR FREE. LIMITED LIABILITY: THE ENTIRE RISK AS TO RESULTS AND PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU. UNDER NO CIRCUMSTANCES WILL GENIVIA INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND OR NATURE WHATSOEVER, WHETHER BASED ON CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, ARISING OUT OF OR IN ANY WAY RELATED TO THE SOFTWARE, EVEN IF GENIVIA INC. HAS BEEN ADVISED ON THE POSSIBILITY OF SUCH DAMAGE OR IF SUCH DAMAGE COULD HAVE BEEN REASONABLY FORESEEN, AND NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY EXCLUSIVE REMEDY PROVIDED. SUCH LIMITATION ON DAMAGES INCLUDES, BUT IS NOT LIMITED TO, DAMAGES FOR LOSS OF GOODWILL, LOST PROFITS, LOSS OF DATA OR SOFTWARE, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION OR IMPAIRMENT OF OTHER GOODS. IN NO EVENT WILL GENIVIA INC. BE LIABLE FOR THE COSTS OF PROCUREMENT OF SUBSTITUTE SOFTWARE OR SERVICES. YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED FOR USE IN ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS SUCH AS OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR CONTROL, OR LIFE-CRITICAL APPLICATIONS. GENIVIA INC. EXPRESSLY DISCLAIM ANY LIABILITY RESULTING FROM USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS AND ACCEPTS NO LIABILITY IN RESPECT OF ANY ACTIONS OR CLAIMS BASED ON THE USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS BY YOU. FOR PURPOSES OF THIS PARAGRAPH, THE TERM "LIFE-CRITICAL APPLICATION" MEANS AN APPLICATION IN WHICH THE FUNCTIONING OR MALFUNCTIONING OF THE SOFTWARE MAY RESULT DIRECTLY OR INDIRECTLY IN PHYSICAL INJURY OR LOSS OF HUMAN LIFE. ================================================================================ EXTERNAL THIRD-PARTY LIBRARIES ================================================================================ The gSOAP toolkit is self-contained and does not require any third-party software to run in its standard configuration. When compression and SSL encryption are required the Zlib and OpenSSL libraries must be installed. To build the gSOAP 'soapcpp2' compiler, you must have Bison and Flex installed or the older Yacc and Lex equivalents. Note that licensing differs for Flex versus Lex, and Bison versus Yacc. Win32 builds of clients and services requires winsock.dll. To do this in Visual C++ 6.0, go to "Project", "settings", select the "Link" tab (the project file needs to be selected in the file view) and add "wsock32.lib" to the "Object/library modules" entry. The distribution contains a Visual Studio 2005 project example in the 'samples/calc_vs2005' folder with the necessary project settings to link libraries and automatically invoke to soapcpp2 compiler as a custom build. ================================================================================ DISCLAIMER ================================================================================ WE PROVIDE YOU WITH "REAL-WORLD" EXAMPLES BUT WE CANNOT GUARANTEE THAT ALL CLIENT EXAMPLES CAN CONNECT TO THIRD PARTY WEB SERVICES WHEN THESE SERVICES ARE DOWN OR HAVE BEEN REMOVED. ================================================================================ gsoap-2.8.60/gsoap++.pc.in0000644000175000017500000000042013227173557014460 0ustar ellertellertprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: GSoap Description: SOAP C++ Web Services Version: @VERSION@ Requires: Libs: -L${libdir} -lgsoap++ Libs.private: @SAMPLE_EXTRA_LIBS@ Cflags: @SOAPCPP2_IPV6@ -DWITH_DOM -I${includedir} gsoap-2.8.60/gsoap/0000755000175000017500000000000013234023226013366 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/0000755000175000017500000000000013227173555015553 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/README.md0000644000175000017500000014641213227173555017042 0ustar ellertellert@mainpage The iOS Plugin @section title The iOS Plugin [TOC] By Bethany Sanders, Robert van Engelen, Ning Xie, and Wei Zhang @section ios_overview Overview Consuming Web services on iOS (iPhone and iPad) platforms is increasingly in demand today. Xcode does not offer built-in tools that make consuming XML Web services easy. This means that detailed knowledge of XML processing is required to send SOAP/XML and XML REST requests to the Web services and parse the XML response. By contrast, the gSOAP toolkit offers an automated XML data binding toolkit for C and C++ to develop SOAP/XML Web services and clients. You can also use the iOS plugin to consume XML-RPC and JSON Web services with the [XML-RPC & JSON/JSON-Path](https://www.genivia.com/doc/xml-rpc-json/html/index.html) plugin for gSOAP. The plugin makes it easy to consume Web services on iOS platforms, such as iPhone and iPad. Moreover, the plugin takes advantage of iOS network connectivity by supporting 3G/4G/LTE and wifi. To use the iOS plugin for development of client applications on iOS platforms, register the plugin with the gSOAP engine context as follows: @code #import "gsoapios.h" struct soap *soap = soap_new(); // new engine context soap_register_plugin(soap, soap_ios); // register the iOS plugin ... soap_destroy(soap); // clean up deserialized data soap_end(soap); // clean up temporaries soap_free(soap); // free the context @endcode When coding in C++, it is recommended to generate C++ proxy classes with soapcpp2 option -j which are then used to instantiate proxy objects that manage the gSOAP engine context to register with the plugin as follows: @code #import "gsoapios.h" Proxy proxy; soap_register_plugin(proxy.soap, soap_ios); ... proxy.destroy(); @endcode There are no other plugin API calls necessary to make a Web service client application work with iOS. This means that you can develop iOS apps that consume complex SOAP/XML, XML REST, and JSON Web services. @section ios_start Getting Started To start building Web services client applications for iPhone and/or iPad with gSOAP, you will need: - The [gSOAP toolkit](http://www.genivia.com/Products/downloads.html) version 2.8.50 or greater; - Xcode with the iOS SDK installed. Developing Web services client applications on iOS is no different than developing these applications on another OS with gSOAP when you use this iOS Plugin. The steps to create a client application on iOS: - Use wsdl2h and soapcpp2 to generate C++ code with client stubs or client proxy classes (soapcpp2 option -j) from WSDL and XSD files; - Create an iOS application project in Xcode; - Add stdsoap2.cpp and stdsoap2.h from the gSOAP package to your iOS project; - Add gsoapios.h and gsoapios.mm that are part of the iOS plugin files to your iOS project; - In your client code create an engine context and register the iOS plugin; - In your client code add the Web service methods invocations that you want, see the wsdl2h-generated header file (first step above) with interface declarations for instructions on how to invoke services. All of the source code files should be of type Objective C++ source. Mixing C files with C++ files will cause errors. Rename .c files to .cpp files as necessary. @section ios_cache_policy Specifying the Cache Policy The interaction between the client and the Web serviceserver can be controlled by specifying the cache policy. To specify the cache policy, use the API function `soap_ios_setcachepolicy(struct soap *soap, unsigned int policy)`. This API function cannot be called before the plugin is registered. @code #import "gsoapios.h" struct soap *soap = soap_new(); soap_register_plugin(soap, soap_ios); // Specify the cache policy for the request soap_ios_setchacepolicy(soap, NSURLRequestReturnCacheDataElseLoad); ... soap_destroy(soap); // clean up deserialized data soap_end(soap); // clean up temporaries soap_free(soap); // free the context @endcode The available cache policies that can be specified are: @code enum { NSURLRequestUseProtocolCachePolicy = 0, NSURLRequestReloadIgnoringLocalCacheData = 1, NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData, NSURLRequestReturnCacheDataElseLoad = 2, NSURLRequestReturnCacheDataDontLoad = 3, NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4, NSURLRequestReloadRevalidatingCacheData = 5 } @endcode The default cache policy is `NSURLRequestUseProtocolCachePolicy`. @section ios_timeout_interval Specifying a Timeout Interval The timeout of a network connection can be specified using the API function `soap_ios_settimeoutinterval(struct soap *soap, double seconds)`: @code #import "gsoapios.h" struct soap *soap = soap_new(); soap_register_plugin(soap, soap_ios); // Specify the timout interval as 30 seconds soap_ios_settimeoutinterval(soap, 30.0); ... soap_destroy(soap); // clean up deserialized data soap_end(soap); // clean up temporaries soap_free(soap); // free the context @endcode The default timeout is 60 seconds. @section ios_http_auth HTTP Authentication To support authentication when access is denied (HTTP 401 error) when the client tries to connect, enable HTTP authentication as follows. Basic authentication is simply enabled at the client-side by setting the `soap.userid` and `soap.passwd` strings to a username and password, respectively: @code struct soap *soap = soap_new(); soap->userid = "someone"; soap->passwd = "somepass"; @endcode When using a generated C++ proxy class: @code Proxy proxy; porxy.soap->userid = "someone"; porxy.soap->passwd = "somepass"; @endcode Make sure to **never use Basic authentication without HTTPS**. HTTPS must be used to ensure that Basic authentication is secure. @section ios_example Examples This section introduces four examples to demonstrate the development of client applications consuming Web services on iOS platforms, such as iPhone and iPad, by using the gSOAP tools and the iOS plugin. The first example @ref ios_example_calc is a basic calculator client app. The second example @ref ios_example_geoip is a web service that locates the country of a certain IP Adress. The third example @ref ios_example_weather returns weather results for well-known US cities, and the fourth example @ref ios_example_air shows information on every airport within a given country. We assume you already have had some experience developing applications for iPhone and iPad using Xcode with iOS SDK installed. Experience is not required to read on, but helpful in case you get lost in the details of the Xcode iOS SDK. General recommendations: - Rename .m files to .mm files; - Generate a C++ proxy class using soapcpp2 -j, which produces the source code you will need to access the Web service; - Add stdsoap2.cpp and stdsoap2.h from the gSOAP source code tree to your iOS project; - Add gsoapios.h and gsoapios.mm that are part of the iOS plugin files to your iOS project; - In your client code register the iOS plugin. @subsection ios_example_calc Simple Calculator Example (C++) This example shows you how to develop a client application in C++ using gSOAP and the ios plugin, which consumes a simple calculator service on iOS using gSOAP. The simple calculator service was developed and deployed as a demo to [get started with gSOAP](http://www.genivia.com/dev.html). The gSOAP Calculator Service provides several operations such as add, sub, mul, div etc. In this example, we use the operation add as a demo. Other operations are applied in a similar way. The wsdl file for this service can be obtained at the following link: http://www.genivia.com/calc.wsdl The Xcode project for this example can be found in gsoap/ios_plugin/examples/calc. @subsubsection ios_calc_step_1 Step 1: Generating stubs for C++ API The gsoap/ios_plugin/examples/calc directory already contains calc.h so you can skip this step. To generate codes for the calculator Web service, we first run the wsdl2h tool from the command line on the URL of the WSDL and use option -o to specify the output file (Alternatively, you can download the calc.wsdl and use the local file instead of the URL): wsdl2h -o calc.h http://www.genivia.com/calc.wsdl This generates the calc.h service definition header file with service operation definitions and types for the operation's data. By default, gSOAP assumes you will use C++ with STL. We have not yet generated the stubs for the API. To do so, run the soapcpp2 compiler: soapcpp2 -CL -I$GSOAP_HOME/import calc.h Option -CL indicates client-side only files (soapcpp2 generates both client and server stubs and skeletons by default). This generates a number of source files for client application development. We do not have to generate a proxy class in this example because it does not use a Proxy class. @subsubsection ios_calc_step_2 Step 2: Creating Xcode project for iPhone Launch Xcode, create a Single View-based Application project and name it Calc. Open the ViewController.xib (main storyboard) file in the Interface Builder. Double-click on the View item and populate it with the views listed below and shown in Figure 1: - Two Labels ("+" and "A Simple Calculator") - Two Text Fields (operand1 and operand2) - One Button ("Add" button) @image html calc-view.png "Figure 1. View of the Calculator Web Service Client App" In Xcode, edit the file ViewController.h to make it look like the following: @code // File: ViewController.h #import @interface ViewController : UIViewController { UITextField *op1; // operand1 UITextField *op2; // operand2 } @property (nonatomic, retain) IBOutlet UITextField *op1; // this code is generated when you link the text fields @property (nonatomic, retain) IBOutlet UITextField *op2; // this code is generated when you link the text fields - (IBAction) buttonPressed; @end @endcode Link the op1 and op2 to the two Text Fields and delegate the button action to method buttonPressed. In Xcode, edit the file info.plist to make it look like the following: NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight These changes ensure that you can access the web services despite the added layer of protection (App Transport Security). @subsubsection ios_calc_step_3 Step 3: Adding generated source stubs to the Xcode project Add the source files soapC.cpp, soapClient.cpp, soapH.h, and soapStub.h generated in Step 1 of this tutorial to the project. Also add files stdsoap2.h and stdsoap2.cpp to the project from gSOAP package as well as the iOS plugin files gsoapios.h and gsoapios.mm. Once all of your files have been added to the project, ensure they are all of type "Objective C++ Source". This ensures that there will be no issues with mixing Objective C and C++ code. @subsubsection ios_calc_step_4 Step 4: Implementing the Logic by calling the soap service Firstly, edit file main.mm to import the file calc.nsmap. Link errors may arise without importing this XML namespace mapping table. @code // File: main.mm #import #import "../../calc.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } @endcode Then, implement the source file ViewController.mm as the following: @code #import "ViewController.h" #import "soapStub.h" #import "gsoapios.h" @implementation ViewController @synthesize op1; // Set or get operand1 @synthesize op2; // Set or get operand2 - (IBAction) buttonPressed { double x = [op1.text doubleValue]; double y = [op2.text doubleValue]; struct soap *soap = soap_new1(SOAP_IO_DEFAULT|SOAP_IO_KEEPALIVE|SOAP_XML_INDENT|SOAP_XML_STRICT); if (soap_register_plugin(soap, soap_ios) == SOAP_OK) { // Specify the timeout interval (optional) to 45 seconds instead of // the default 60 seconds soap_ios_settimeoutinterval(soap, 45.0); double result; // Call Web service operation add int status = soap_call_ns2__add(soap, NULL, NULL,x, y, result); soap_free_temp(soap); // Cleanup temporary resources // Check soap response status if (status == SOAP_OK) { NSString *resultString; NSString *titleString; resultString = [NSString stringWithFormat:@"%f",result]; titleString = [NSString stringWithFormat:@"%f + %f =",x, y]; // Show the result in an alert UIAlertController * alert = [UIAlertController alertControllerWithTitle:titleString message:resultString preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}]; [alert addAction: cancelButton]; [self presentViewController:alert animated:YES completion:nil]; } else soap_print_fault(soap,stderr); // Print soap error in console } soap_destroy(soap); soap_end(soap); soap_free(soap); } @end @endcode A screen snapshot of the client is shown in Figure 2. @image html calc-result.png "Figure 2: Snapshot of the CalcViewService result" @subsection ios_example_geoip GeoIPService Example (C++) [GeoIPService](http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP) is a live SOAP Web service that enables you to look up countries by IP address or by Context. This example shows you how to develop a client application in C++ using gSOAP and the ios plugin, which consumes the GeoIPService on iOS using gSOAP. The WSDL file for this service can be downloaded at the following link: http://www.webservicex.net/geoipservice.asmx?WSDL It is crucial to follow these directions in order for your app to work: - Rename the .m files to .mm files. The iOS plugin implementation file gsoapios.m must be renamed to gsoapios.mm. The main.m must be renamed to main.mm. Other files such as your ViewController must also be renamed with .mm. - Generate C++ proxy using proper options with wsdl2h and soapcpp2. - Use stdsoap2.cpp from the gSOAP package in your iOS project. The Xcode project for this example can be found in gsoap/ios_plugin/examples/GeoIPService. @subsubsection ios_geoip_step_1 Step 1: Generating stubs for C++ Proxy To generate codes for the GeoIPService Web service, we first run the wsdl2h tool from the command line on the URL of the WSDL and use option -o to specify the output file (alternatively, you can download the GeoIPService.wsdl file and use the local file instead of the URL): wsdl2h -o GeoIPService.h -Ngeoip 'http://www.webservicex.net/geoipservice.asmx?WSDL' This generates the GeoIPService.h service interface header file with service operation definitions and types for the operation's data. By default, gSOAP assumes you will use C++ with STL. To generate the stubs for the C++ proxy classes, run the soapcpp2: soapcpp2 -j -CL -I$GSOAP_HOME/import GeoIPService.h Option -j tells the compiler to generate the C++ proxy class and option -CL indicates client-side only files (soapcpp2 generates both client and server stubs and skeletons by default). Option -I is needed to import the stlvector.h file from the import directory in the gSOAP package to support serialization of STL vectors. @subsubsection ios_geoip_step_2 Step 2: Creating an Xcode project for iPhone Create a Single View-based Application project and name it GeoIPService.Open the ViewController.xib (main storyboard) file in the Interface Builder. Double-click on the View item and populate it with the views listed below and shown in Figure 3: - A Label ("Enter IP Address") - A Text Field - One Round Rect Button ("Find Country" button) @image html geoip-view.png "Figure 3. View of the GeoIPService Client" In Xcode, edit the file ViewController.h to make it look like the following: @code // File: ViewController.h #import @interface ViewController : UIViewController { UITextField* IPAddress; } @property (strong, nonatomic) IBOutlet UITextField *IPAddress; // this code generated when you link the text //field to IPAddress - (IBAction) buttonPressed; @end @endcode Set the ipAddress outlet and the buttonFindCountry:(id)sender method to delegate action of the button. In Xcode, edit the file info.plist to make it look like the following: NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight These changes ensure that you can access the web services despite the added layer of protection of App Transport Security). @subsubsection ios_geoip_step_3 Step 3: Adding generated source stubs to the Xcode project Add the source files soapC.cpp, soapGeoIPServiceSoapProxy.cpp, soapGeoIPServiceSoapProxy.h, soapH.h, and soapStub.h generated in Step 1 of this tutorial to the project. Also add files stdsoap2.h and stdsoap2.cpp to the project from the gSOAP package and the iOS plugin files gsoapios.h and gsoapios.mm. Once all of your files have been added to the project, ensure they are all of type "Objective C++ Source". This ensures that there will be no issues with mixing Objective C and C++ code. @subsubsection ios_geoip_step_4 Step 4: Implementing the Logic by calling the soap service Firstly, edit file main.mm to import the file GeoIPService.nsmap. Linking errors would arise without importing this XML namespace mapping table. @code // File: main.mm #import #import "AppDelegate.h" #include "../../GeoIPServiceSoap.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } @endcode Then, implement the source file ViewController.mm as the following: @code #import "ViewController.h" #include "soapGeoIPServiceSoapProxy.h" #import "soapStub.h" #import "gsoapios.h" using namespace std; typedef struct _ns1__GetGeoIP RequestStruct; typedef struct _ns1__GetGeoIPResponse ResponseStruct; @implementation ViewController @synthesize IPAddress; - (IBAction)buttonPressed:(id)sender { RequestStruct ip; ResponseStruct response; //creates proxy GeoIPServiceSoapProxy service(SOAP_IO_DEFAULT|SOAP_IO_KEEPALIVE|SOAP_XML_INDENT|SOAP_XML_STRICT); soap_init(service.soap); //sets IPAddress from input std::string ipAdd = std::string((char *)[IPAddress.text UTF8String]); ip.IPAddress = &ipAdd; // ----- register plugin for callbacks ------ soap_register_plugin(service.soap, soap_ios); // Optional: timeout internal, the default is 60.0 seconds soap_ios_settimeoutinterval(service.soap, 30.0); //call web service int status = service.GetGeoIP(&ip, response); string* result; string err_msg = "Invalid IP address"; if (status == SOAP_OK) { NSString *soapResult; NSString *titleMsg; if (response.GetGeoIPResult && response.GetGeoIPResult->CountryName) result = response.GetGeoIPResult->CountryName; else result = &err_msg; soapResult = [NSString stringWithUTF8String:result->c_str()]; titleMsg = [NSString stringWithFormat: @"%@", @"Country Found"]; //show result as an alert UIAlertController * alert = [UIAlertController alertControllerWithTitle:titleMsg message:soapResult preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}]; [alert addAction: cancelButton]; [self presentViewController:alert animated:YES completion:nil]; } else service.soap_stream_fault(std::cerr); service.destroy(); } // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { // [ipAddress release]; // [super dealloc]; } @end @endcode An image of the app is shown in Figure 4. @image html geoip-result.png "Figure 4: Snapshot of the GeoIPServiceViewService result" @subsection ios_example_weather Weather Example (C++) GlobalWeather is a live SOAP Web service that enables you to look up the Weather in popular cities around the world. For simplicity, this example is limited to cities in the United States. For some reason, some very popular cities are not supported by this web service. For example, no results for New York City will be returned. There is an error message within the app that shows whenever one of these cities is entered. Know that the error message is not an issue with the app you just built, but something that the web service itself does not provide. This example shows how to develop a client application in C++ using gSOAP and the ios plugin, which consumes the Weather service on iOS using gSOAP. The WSDL file for this service can be downloaded at the following link: http://www.webservicex.net/globalweather.asmx?WSDL It is crucial to follow these directions in order for your app to work: - Rename the .m files to .mm files. The iOS plugin implementation file gsoapios.m must be renamed to gsoapios.mm. The main.m must be renamed to main.mm. Other files such as your ViewController must also be renamed with .mm. - Generate C++ proxy using proper options with wsdl2h and soapcpp2. - Use stdsoap2.cpp from the gSOAP package in your iOS project. The Xcode project for this example can be found in gsoap/ios_plugin/examples/Weather. @subsubsection ios_weather_step_1 Step 1: Generating stubs for C++ Proxy To generate codes for the GeoIPService Web service, we first run the wsdl2h tool from the command line on the URL of the WSDL and use option -o to specify the output file (Alternatively, you can download the GlobalWeather.wsdl file and use the local file instead of the URL): wsdl2h -o weather.h 'http://www.webservicex.net/globalweather.asmx?WSDL' This generates the weather.h service definition header file with service operation definitions and types for the operation's data. By default, gSOAP assumes you will use C++ with STL. To generate the stubs for the C++ proxy classes, run the soapcpp2 tool: soapcpp2 -j -CL -I$GSOAP_HOME/import weather.h Option -j tells soapcpp2 to generate the C++ proxy class and option -CL indicates client-side only files (soapcpp2 generates both client and server stubs and skeletons by default). Option -I is needed to import the stlvector.h file from the import directory in the gSOAP package to support serialization of STL vectors. @subsubsection ios_weather_step_2 Step 2: Creating an Xcode project for iPhone Create a Single View-based Application project and name it Weather. Open the ViewController.xib(main storyboard) file in the Interface Builder.Double-click on the View item and populate it with the views listed below and shown in Figure 3: - A Label ("Enter US City") - A Text Field - One Round Rect Button ("Get Weather Results" button) In Xcode, edit the file ViewController.h to make it look like the following: @code #import @interface ViewController : UIViewController { UITextField* inputcity; } @property (strong, nonatomic) IBOutlet UITextField *inputcity; - (IBAction) buttonPressed; @end @endcode Set the inputcity outlet and the buttonFindCountry:(id)sender method to delegate action of the button. In Xcode, edit the file info.plist to make it look like the following: NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight These changes ensure that you can access the web services despite the added layer of protection of App Transport Security). @subsubsection ios_weather_step_3 Step 3: Adding generated source stubs to the Xcode project Add the source files soapC.cpp, soapGloabalWeatherSoapProxy.cpp, soapGloabalWeatherSoapProxy.h, soapH.h, and soapStub.h generated in Step 1 of this tutorial to the project. Also add files stdsoap2.h and stdsoap2.cpp to the project from gsoap package and the iOS plugin files gsoapios.h and gsoapios.mm. Once all of your files have been added to the project, ensure they are all of type "Objective C++ Source". This ensures that there will be no issues with mixing Objective C and C++ code. @subsubsection ios_weather_step_4 Step 4: Implementing the Logic by calling the soap service Firstly, edit file main.mm to import the file GlobalWeatherSoap.nsmap. Linking errors would arise without importing this XML namespace mapping table. @code // File: main.mm #import #import "AppDelegate.h" #include "../../GlobalWeatherSoap.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } @endcode Then, implement the source file ViewController.mm as the following, where we used the [gSOAP domcpp](http://www.genivia.com/doc/dom/html) tool with option -i on an example weather XML data file to produce DOM code to extract the XML data (see further below): @code #import "ViewController.h" #include "soapGlobalWeatherSoapProxy.h" #import "soapStub.h" #import "gsoapios.h" #include typedef struct _ns__GetWeather RequestStruct; typedef struct _ns__GetWeatherResponse ResponseStruct; @implementation ViewController @synthesize inputcity; - (IBAction)buttonPressed:(id)sender { RequestStruct sending; ResponseStruct receiving; std::string result = ""; GlobalWeatherSoapProxy service; soap_init(service.soap); // ----- register plugin for callbacks ------ soap_register_plugin(service.soap, soap_ios); std::string cname= std::string((char *)[inputcity.text UTF8String]); sending.CityName = &cname; std::string USA = "United States"; sending.CountryName = &USA; if (service.GetWeather(&sending, receiving) == SOAP_OK) { std::ofstream xmlwrite("/Users/bethanysanders/Documents/work/Weather/Weather/message.txt"); std::ifstream xmlread("/Users/bethanysanders/Documents/work/Weather/Weather/message.txt"); if(xmlwrite.is_open()) { xmlwrite << *(receiving.GetWeatherResult); xmlwrite.close(); struct soap *ctx = soap_new1(SOAP_C_UTFSTRING | SOAP_XML_INDENT | SOAP_DOM_TREE); ctx->double_format = "%lG"; xsd__anyType dom(ctx); if (xmlread.is_open()) xmlread >> dom; if (dom.soap->error) result = "Error: Try a different city"; xsd__anyAttribute *att; xsd__anyType *elt; if ((elt = dom.elt_get("Wind"))) { xsd__anyType& dom_Wind = *elt; if (dom_Wind.get_text()) { result += "Wind = "; result += dom_Wind.get_text(); } } if ((elt = dom.elt_get("Visibility"))) { xsd__anyType& dom_Visibility = *elt; if(dom_Visibility.get_text()) { result += "\nVisibility = "; result += dom_Visibility.get_text(); } } if ((elt = dom.elt_get("SkyConditions"))) { xsd__anyType& dom_SkyConditions = *elt; if (dom_SkyConditions.get_text()) { result += "\nSky Conditions = "; result += dom_SkyConditions.get_text(); } } if ((elt = dom.elt_get("Temperature"))) { xsd__anyType& dom_Temperature = *elt; if (dom_Temperature.get_text()) { result += "\nTemperature = "; result += dom_Temperature.get_text(); } } if ((elt = dom.elt_get("DewPoint"))) { xsd__anyType& dom_DewPoint = *elt; if (dom_DewPoint.get_text()) { result += "\nDew Point = "; result += dom_DewPoint.get_text(); } } if ((elt = dom.elt_get("RelativeHumidity"))) { xsd__anyType& dom_RelativeHumidity = *elt; if (dom_RelativeHumidity.get_text()) { result += "\nRelative Humidity = "; result += dom_RelativeHumidity.get_text(); } } if ((elt = dom.elt_get("Pressure"))) { xsd__anyType& dom_Pressure = *elt; if (dom_Pressure.get_text()) { result += "\nPressure = "; result += dom_Pressure.get_text(); } } xmlread.close(); soap_destroy(ctx); // delete objects soap_end(ctx); // delete DOM data soap_free(ctx); // free context } } NSString *titleMsg; NSString *Weather; titleMsg = [NSString stringWithFormat: @"%@", @"Weather Results"]; Weather = [NSString stringWithUTF8String:result.c_str()]; //show result as an alert UIAlertController * alert = [UIAlertController alertControllerWithTitle:titleMsg message:Weather preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}]; [alert addAction: cancelButton]; [self presentViewController:alert animated:YES completion:nil]; service.destroy(); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end @endcode You will notice there is much more code in this example's ViewController.mm. This is because this web service stores the whole XML response within a string instead of appropriate variables. The dom parser can fix this situation so that you can still access your results without having to parse the XML yourself. The dom code in this example was generated via command line in UNIX. To do so, once you have dom executable in your working directory, just execute the command ./domcpp -i weather.xml where weather.xml is a file that stores an example xml response. Option -i tells the domcpp tool to generate the code you need to parse your result. To obtain an example XML response, test the web service on http://www.webservicex.net/New/Home/ServiceDetail/56. The domcpp tool is found in gsoap/samples/dom and should be built in that directory with: make domcpp Then move or copy the domcpp executable to use it for your projects. For more information about domcpp, read [XML DOM and XPath](https://www.genivia.com/doc/dom/html/index.html) of the gSOAP documentation. @subsection ios_example_air Air Example (C++) Airport Information Web Service is a live SOAP Web service that enables you to look up Airport Information of countries around the world. For some reason, some very well known countries are not supported by this web service. For example, no results for Russia will be returned. There is an error message within the app that shows whenever one of these countries is entered. Know that the error message is not an issue with the app you just built, but information that the web service itself does not provide. This example shows how to develop a client application in C++ using gSOAP and the ios plugin, which consumes the Weather service on iOS using gSOAP. The WSDL file for this service can be downloaded at the following link: http://www.webservicex.net/airport.asmx?WSDL It is crucial to follow these directions in order for your app to work: - Rename the .m files to .mm files. The iOS plugin implementation file gsoapios.m must be renamed to gsoapios.mm. The main.m must be renamed to main.mm. Other files such as your ViewController must also be renamed with .mm. - Generate C++ proxy using proper options with wsdl2h and soapcpp2. - Use the stdsoap2.cpp instead of stdsoap2.c from the gSOAP package in your iOS project. The Xcode project for this example can be found in gsoap/ios_plugin/examples/Air. @subsubsection ios_air_step_1 Step 1: Generating stubs for C++ Proxy To generate codes for the GeoIPService Web service, we first run the wsdl2h tool from the command line on the URL of the WSDL and use option -o to specify the output file (Alternatively, you can download the airport.wsdl file and use the local file instead of the URL): wsdl2h -o airport.h 'http://www.webservicex.net/airport.asmx?WSDL' This generates the airport.h service definition header file with service operation definitions and types for the operation's data. By default, gSOAP assumes you will use C++ with STL. To generate the stubs for the C++ proxy classes, run the soapcpp2. compiler: soapcpp2 -j -CL -I$GSOAP_HOME/import airport.h Option -j tells the compiler to generate the C++ proxy class and option -CL indicates client-side only files (soapcpp2 generates both client and server stubs and skeletons by default). Option -I is needed to import the stlvector.h file from the import directory in the gSOAP package to support serialization of STL vectors. @subsubsection ios_air_step_2 Step 2: Creating an Xcode project for iPhone Create a Single View-based Application project and name it Air. Open the ViewController.xib(main storyboard) file in the Interface Builder.Double-click on the View item and populate it with the views listed below and shown in Figure 3: - A Label ("Enter Country") - A Text Field - One Round Rect Button ("Get Airport Information" button) - One Text View (to show the results) In Xcode, edit the file ViewController.h to make it look like the following: @code #import @interface ViewController : UIViewController { UITextField* country_name; UITextView* showResults; } @property (strong, nonatomic) IBOutlet UITextField *country_name; @property (strong, nonatomic) IBOutlet UITextView *showResults; -(IBAction) buttonPressed; @end @endcode Set the `country_name` and `showResults` outlets and the `buttonFindCountry:(id)sender` method to delegate action of the button. In Xcode, edit the file info.plist to make it look like the following: NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight These changes ensure that you can access the web services despite the added layer of protection of App Transport Security). @subsubsection ios_air_step_3 Step 3: Adding generated source stubs to the Xcode project Add the source files soapC.cpp, soapairportSoapProxy.cpp, soapairportSoapProxy.h, soapH.h, and soapStub.h generated in Step 1 of this tutorial to the project. Also add files stdsoap2.h and stdsoap2.cpp to the project from the gSOAP package and the iOS plugin files gsoapios.h and gsoapios.mm. Once all of your files have been added to the project, ensure they are all of type "Objective C++ Source". This ensures that there will be no issues with mixing Objective C and C++ code. @subsubsection ios_air_step_4 Step 4: Implementing the Logic by calling the soap service Firstly, edit file main.mm to import the file airportSoap.nsmap. Linking errors would arise without importing this XML namespace mapping table. @code // File: main.mm #import #import "AppDelegate.h" #include "../../airportSoap.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } @endcode Then, we implement the source file ViewController.mm as the following, where we used the [gSOAP domcpp](http://www.genivia.com/doc/dom/html) tool with option -i on an example weather XML data file to produce DOM code to extract the XML data (see further below) @code #import "ViewController.h" #include "soapairportSoapProxy.h" #import "soapStub.h" #import "gsoapios.h" #include @interface ViewController () @end @implementation ViewController @synthesize country_name; @synthesize showResults; - (IBAction)buttonPressed:(id)sender { _ns1__GetAirportInformationByCountry sending; _ns1__GetAirportInformationByCountryResponse receiving; std::string result = ""; //stores resulting data bool webserviceresult = true; //keeps track of if the web service returns a readable result airportSoapProxy service; soap_init(service.soap); // ----- register plugin for callbacks ------ soap_register_plugin(service.soap, soap_ios); std::string countryname = std::string((char*)[country_name.text UTF8String]); sending.country = &countryname; std::ofstream out("/Users/bethanysanders/Documents/work/Air/Air/xmlmessage.txt"); std::ifstream in("/Users/bethanysanders/Documents/work/Air/Air/xmlmessage.txt"); if (service.GetAirportInformationByCountry(&sending,receiving) == SOAP_OK) if (out.is_open()) out << *(receiving.GetAirportInformationByCountryResult); out.close(); struct soap *ctx = soap_new1(SOAP_C_UTFSTRING | SOAP_XML_INDENT | SOAP_DOM_TREE); ctx->double_format = "%lG"; xsd__anyType dom(ctx); if (in.is_open()) in >> dom; if (dom.soap->error) webserviceresult = false; xsd__anyType *elt; for (xsd__anyType *it = dom.elt_get("Table"); it; it = it->get_next()) { xsd__anyType& dom_Table = *it; if ((elt = dom_Table.elt_get("AirportCode"))) { xsd__anyType& dom_Table_AirportCode = *elt; if (dom_Table_AirportCode.get_text()) { result += "\n\nAirport Code = "; result += dom_Table_AirportCode.get_text(); } } if ((elt = dom_Table.elt_get("CityOrAirportName"))) { xsd__anyType& dom_Table_CityOrAirportName = *elt; if (dom_Table_CityOrAirportName.get_text()) { result += "\nCity or Airport Name = "; result += dom_Table_CityOrAirportName.get_text(); } } if ((elt = dom_Table.elt_get("Country"))) { xsd__anyType& dom_Table_Country = *elt; if (dom_Table_Country.get_text()) { result += "\nCountry = "; result += dom_Table_Country.get_text(); } } if ((elt = dom_Table.elt_get("CountryAbbrviation"))) { xsd__anyType& dom_Table_CountryAbbrviation = *elt; if (dom_Table_CountryAbbrviation.get_text()) { result += "\nCountry Abbreviation = "; result += dom_Table_CountryAbbrviation.get_text(); } } if ((elt = dom_Table.elt_get("CountryCode"))) { xsd__anyType& dom_Table_CountryCode = *elt; if (dom_Table_CountryCode.get_text()) { result += "\nCountry Code = "; result += dom_Table_CountryCode.get_text(); } } if ((elt = dom_Table.elt_get("GMTOffset"))) { xsd__anyType& dom_Table_GMTOffset = *elt; if (dom_Table_GMTOffset.get_text()) { result += "\nGMT Offset = "; result += dom_Table_GMTOffset.get_text(); } } if ((elt = dom_Table.elt_get("RunwayLengthFeet"))) { xsd__anyType& dom_Table_RunwayLengthFeet = *elt; if (dom_Table_RunwayLengthFeet.get_text()) { result += "\nRunway Length (feet) = "; result += dom_Table_RunwayLengthFeet.get_text(); } } if ((elt = dom_Table.elt_get("RunwayElevationFeet"))) { xsd__anyType& dom_Table_RunwayElevationFeet = *elt; if (dom_Table_RunwayElevationFeet.get_text()) { result += "\nRunway Elevation (feet) = "; result += dom_Table_RunwayElevationFeet.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeDegree"))) { xsd__anyType& dom_Table_LatitudeDegree = *elt; if (dom_Table_LatitudeDegree.get_text()) { result += "\nLatitude Degree = "; result += dom_Table_LatitudeDegree.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeMinute"))) { xsd__anyType& dom_Table_LatitudeMinute = *elt; if (dom_Table_LatitudeMinute.get_text()) { result += "\nLatitude Minute = "; result += dom_Table_LatitudeMinute.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeSecond"))) { xsd__anyType& dom_Table_LatitudeSecond = *elt; if (dom_Table_LatitudeSecond.get_text()) { result += "\nLatitude Second = "; result += dom_Table_LatitudeSecond.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeNpeerS"))) { xsd__anyType& dom_Table_LatitudeNpeerS = *elt; if (dom_Table_LatitudeNpeerS.get_text()) { result += "\nLatitude N or S = "; result += dom_Table_LatitudeNpeerS.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeDegree"))) { xsd__anyType& dom_Table_LongitudeDegree = *elt; if (dom_Table_LongitudeDegree.get_text()) { result += "\nLongitude Degree = "; result += dom_Table_LongitudeDegree.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeMinute"))) { xsd__anyType& dom_Table_LongitudeMinute = *elt; if (dom_Table_LongitudeMinute.get_text()) { result += "\nLongitude Minute = "; result += dom_Table_LongitudeMinute.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeSeconds"))) { xsd__anyType& dom_Table_LongitudeSeconds = *elt; if (dom_Table_LongitudeSeconds.get_text()) { result += "\nLongitude Second = "; result += dom_Table_LongitudeSeconds.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeEperW"))) { xsd__anyType& dom_Table_LongitudeEperW = *elt; if (dom_Table_LongitudeEperW.get_text()) { result += "\nLongitude E or W = "; result += dom_Table_LongitudeEperW.get_text(); } } } NSString *airPorts = [NSString stringWithUTF8String:result.c_str()]; if (result == "" || !webserviceresult) airPorts = [NSString stringWithFormat: @"%@", @"Error: no know information. Try a different country."]; showResults.editable = NO; showResults.showsVerticalScrollIndicator = YES; showResults.text = airPorts; soap_destroy(ctx); // delete objects soap_end(ctx); // delete DOM data soap_free(ctx); // free context service.destroy(); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end @endcode You will notice there is much more code in this example's ViewController.mm. This is because this web service stores the whole XML response within a string instead of appropriate variables. The dom parser can fix this situation so that you can still access your results without having to parse the XML yourself. The dom code in this example was generated via command line in UNIX. To do so, once you have dom executable in your working directory, just execute the command ./domcpp -i airPorts.xml where airPorts.xml is a file that stores an example xml response. The option -i is what tells the dom tool to generate the code you need to parse your result. To obtain an example XML response, test the web service on http://www.webservicex.net/New/Home/ServiceDetail/20. The domcpp tool is found in gsoap/samples/dom and should be built in that directory with: make domcpp Then move or copy the domcpp executable to use it for your projects. For more information about domcpp, read [XML DOM and XPath](https://www.genivia.com/doc/dom/html/index.html) of the gSOAP documentation. gsoap-2.8.60/gsoap/ios_plugin/gsoapios.h0000644000175000017500000002067613227173555017563 0ustar ellertellert/* gsoapios.h iOS plugin (iPhone and iPad) gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc., All Rights Reserved. This part of the software is released under one of the following licenses: GPL, the gSOAP public license, or Genivia's license for commercial use. ------------------------------------------------------------------------------- gSOAP public license. The contents of this file are subject to the gSOAP Public License Version 1.3 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.cs.fsu.edu/~engelen/soaplicense.html Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Initial Developer of the Original Code is Robert A. van Engelen. Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc., All Rights Reserved. ------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. ------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com ------------------------------------------------------------------------------- */ #ifndef GSOAPIOS_H #define GSOAPIOS_H #import "stdsoap2.h" #import #import /** @brief stores states for connection establishment, buffering soap request and response */ @interface GSoapiOSURLData : NSObject { @private NSString *endpoint; NSString *host; NSString *soap_action; NSString *http_method; NSString *content_type; NSMutableData *http_req_msg; NSData *soap_req_msg; NSData *soap_res_msg; int port; int req_content_length; int received_length; // received length of response for deserialization bool request_sent; // flag indicates a soap request has been made // The timeout interval for the new request, in seconds double timeout_interval; unsigned int cache_policy; // The cache policy for the new request NSString *user_name; NSString *password; } @property(nonatomic, retain) NSString *endpoint; // Web service endpoint @property(nonatomic, retain) NSString *host; // host name @property(nonatomic, retain) NSString *soap_action; // soap action @property(nonatomic, retain) NSString *http_method; // http method @property(nonatomic, retain) NSString *content_type; // http content type // http request messgae @property(nonatomic, retain) NSMutableData *http_req_msg; // soap request message @property(nonatomic, retain) NSData *soap_req_msg; // soap response xml message @property(nonatomic, retain) NSData *soap_res_msg; //---------------------------------- @property(nonatomic) int port; // port @property(nonatomic) int req_content_length; // request content length // received length of response for deserialization @property(nonatomic) int received_length; // flag indicates a soap request has been made @property(nonatomic) bool request_sent; // the timout interval for request @property(nonatomic) double timeout_interval; @property(nonatomic) unsigned int cache_policy; //-------------------------------------------- // user and password: must appear in pair @property(nonatomic, retain) NSString *user_name; // user name @property(nonatomic, retain) NSString *password; // pasword - (id) init; @end /** plugin identification for plugin registry */ #define SOAP_IOS_ID "SOAP_IOS-1.0" #ifdef __cplusplus extern "C" { #endif /** @struct soap_ios_data @brief soap_ios plugin data to override callbacks and store states to manipulate SOAP connection using iOS libraries */ struct soap_ios_data { // Stores states such as endpoint, serialized request and response GSoapiOSURLData *url_data; // Buffer variable char* buf; // Tracks the size of the buffer size_t len; // Pointer to the result message const char *res_msg; // The number of bytes the buffer has left to copy from the res_msg size_t res_len; // A callback function to replace the default tcp_connect function // Rather than establishment of a tcp connection using socket, this callback // extracts and saves states (endpoint, http-method, content-type etc.) and // buffers serialized request SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int); // A callback function to replace the default tcp_disconnect function // Since no connection is established in fopen, this function does noop int (*fclose)(struct soap*); // A callback function to replace the default send function // This function buffers serialized request including HTTP header and body // (soap message) int (*fsend)(struct soap*, const char *, size_t); // A callback function to replace the default send function // This function sends a synchrous request to the endpoint and receives // response using iOS SDK class NSURLConnection. The response is then snet // to soap for deserialization. size_t (*frecv)(struct soap*, char *, size_t); }; /** @fn int soap_ios(struct soap *soap, struct soap_plugin *p, void *arg); @brief Save the old callbacks and set new callbacks to handle soap client applications on iOS platforms (iPhone and iPad) @param soap The soap context @param[in] p The soap plugin data @param[in] arg The arguments for soap plugin @return SOAP_OK if registration is successfull; SOAP_EOM otherwise Usage: @code struct soap *soap = soap_new(); soap_register_plugin(soap, soap_ios); @endcode */ int soap_ios(struct soap *soap, struct soap_plugin *p, void *arg); /** @fn void soap_ios_setcachepolicy(struct soap *soap, unsigned int policy) @brief Sets cache policy The constants used to specify interaction with the cached responses are: enum { NSURLRequestUseProtocolCachePolicy = 0, NSURLRequestReloadIgnoringLocalCacheData = 1, NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData, NSURLRequestReturnCacheDataElseLoad = 2, NSURLRequestReturnCacheDataDontLoad = 3, NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4, NSURLRequestReloadRevalidatingCacheData = 5 }; @param soap The soap context @param[in] policy The policy to be specified for he request */ void soap_ios_setcachepolicy(struct soap *soap, unsigned int policy); /** @fn soap_ios_settimeoutinterval(struct soap *soap, double seconds) @brief Sets timeout interval @param soap The soap context @param[in] seconds The value for the timeout interval to be specifed (in seconds) */ void soap_ios_settimeoutinterval(struct soap *soap, double seconds); #ifdef __cplusplus } #endif // __cplusplus #endif gsoap-2.8.60/gsoap/ios_plugin/gsoapios.mm0000644000175000017500000004350013227173555017734 0ustar ellertellert /* gsoapios.mm iOS plugin (iPhone and iPad) gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc., All Rights Reserved. This part of the software is released under one of the following licenses: GPL, the gSOAP public license, or Genivia's license for commercial use. ------------------------------------------------------------------------------- gSOAP public license. The contents of this file are subject to the gSOAP Public License Version 1.3 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.cs.fsu.edu/~engelen/soaplicense.html Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Initial Developer of the Original Code is Robert A. van Engelen. Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc., All Rights Reserved. ------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. ------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com ------------------------------------------------------------------------------- */ #import "gsoapios.h" #import #import // ----------------------------------------------------------------------------- // Start of objective-c Class GSoapiOSURLData implementation // ----------------------------------------------------------------------------- /** Class GSoapiOSURLData @brief The class stores the states for connection establishment, buffering soap request and response */ @implementation GSoapiOSURLData @synthesize endpoint; ///< Set or get endpoint @synthesize host; ///< Set or get host name @synthesize soap_action; ///< Set or get soap action @synthesize http_method; ///< Set or get HTTP method @synthesize content_type; ///< Set or get content type @synthesize http_req_msg; ///< Set or get HTTP request message @synthesize soap_req_msg; ///< Set or get SOAP request @synthesize soap_res_msg; ///< Set or get SOAP response @synthesize port; ///< Set or get port @synthesize received_length; ///< Set or get received message length @synthesize request_sent; ///< Set or get the flag for the first time sending @synthesize req_content_length; ///< Set or get request message length @synthesize timeout_interval; ///< Set or get timeout interval @synthesize cache_policy; ///< Set or get cache policy @synthesize user_name; ///< Set or get user ID for authentication @synthesize password; ///< Set or get password for authentication /** @fn init @brief Constructor */ - (id) init { self = [super init]; http_req_msg = [NSMutableData alloc]; timeout_interval = 60.0; // 60 seconds by default cache_policy = NSURLRequestUseProtocolCachePolicy; // The default cache policy return self; } @end // ----------------------------------------------------------------------------- // End of objective-c Class GSoapiOSURLData implementation // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // Start of C plugin implementation // ----------------------------------------------------------------------------- /** plugin identification for plugin registry */ const char soap_ios_id[13] = SOAP_IOS_ID; // Unique plugin ID static int soap_ios_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); static void soap_ios_delete(struct soap *soap, struct soap_plugin *p); static int soap_ios_init(struct soap *soap, soap_ios_data *data); static SOAP_SOCKET soap_ios_open( struct soap *soap, const char *endpoint, const char *host, int port); static int soap_ios_close( struct soap *soap); static int soap_ios_send( struct soap *soap, const char *buf, size_t len); static size_t soap_ios_recv(struct soap *soap, char *buf, size_t len); //void soap_ios_setcachepolicy(struct soap *soap, unsigned int policy); //void soap_ios_settimeoutinterval(struct soap *soap, double seconds); /** @fn int soap_ios(struct soap *soap, struct soap_plugin *p, void *arg); @brief Save the old callbacks and set new callbacks to handle soap client applications on iOS platforms (iPhone and iPad) @param soap The soap context @param[in] p The soap plugin data @param[in] arg The arguments for soap plugin @return SOAP_OK if registration is successfull; SOAP_EOM otherwise Usage: @code struct soap *soap = soap_new(); soap_register_plugin(soap, soap_ios); @endcode */ int soap_ios(struct soap *soap, struct soap_plugin *p, void *arg) { p->id = soap_ios_id; // set a unique plugin id p->data = new soa p->data = static_cast(new soap_ios_data); // Allocate memory p->fcopy = soap_ios_copy; // set fcopy callback for soap_copy(truct soap*) p->fdelete = soap_ios_delete; // set fdeete callback if (p->data) { if (soap_ios_init(soap, static_cast(p->data))) { delete static_cast(p->data); // free resource upon failure to initialize plugin return SOAP_EOM; } } return SOAP_OK; } /** @fn int soap_ios_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src) @brief Duplicates the plugin context for the soap context @param soap The soap context @param[out] dst The destination plugin data to store to @param[in] src The sources plugin data to be copied from @return SOAP_OK if registration is successfull; SOAP_ERR otherwise */ static int soap_ios_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src) { *dst = *src; dst->data = static_cast(new soap_ios_data); if (dst->data) return soap_ios_init(soap, static_cast(dst->data)); return SOAP_ERR; } /** @fn void soap_ios_delete(struct soap *soap, struct soap_plugin *p) @brief Destroys the plugin context @param soap context @param[in] p plugin data */ static void soap_ios_delete(struct soap *soap, struct soap_plugin *p) { soap_ios_data *data = static_cast(p->data); if (data && data->url_data)// Free url_data // [data->url_data release] delete data; // Free the pointer to url_data } /** @fn int soap_ios_init(struct soap *soap, soap_ios_data *data) @brief Initializes the plugin data @param soap The soap context @param[out] data The plugin data to be initialized @return SOAP_OK if initialization is sucessful; SOAP_ERR otherwise */ static int soap_ios_init(struct soap *soap, soap_ios_data *data) { data->url_data = [[GSoapiOSURLData alloc] init]; if (data->url_data == nil) return SOAP_ERR; // failure to init data->res_len = 0; data->res_msg = ""; // save and set callbacks data->fopen = soap->fopen; // save old fopen callback data->fclose = soap->fclose; // save old fclose callback data->fsend = soap->fsend; // save old fsend callback data->frecv = soap->frecv; // save old frecv callback data->buf = nil; // sets initial value of buf to nil data->len = 0; // sets initial buffer length value to 0 soap->fopen = soap_ios_open; // replace open callback soap->fclose = soap_ios_close; // replace close callback soap->fsend = soap_ios_send; // replace send callback soap->frecv = soap_ios_recv; // replace recv callback return SOAP_OK; } /** @fn SOAP_SOCKET soap_ios_open( struct soap *soap, const char *endpoint, const char *host, int port) @brief Extracts states from soap context and saves states for soap connection @param soap The soap context @param[in] endpoint The Web service's endpoint @param[in] host The host name @param[in] port The port numer @return 1 A valid socket Note: This open function does not create a real socket for communication. The actual connection establishment happens in the frecv callback */ static SOAP_SOCKET soap_ios_open( struct soap *soap, const char *endpoint, const char *host, int port) { // Pull out the pluin data soap_ios_data *data = static_cast(soap_lookup_plugin(soap, soap_ios_id)); if (data == NULL || data->url_data == nil) return SOAP_INVALID_SOCKET; GSoapiOSURLData * url_data = data->url_data; [url_data setEndpoint:[NSString stringWithUTF8String:endpoint]]; [url_data setHost:[NSString stringWithUTF8String:host]]; [url_data setPort:port]; [url_data setRequest_sent:false]; [url_data setReceived_length:0]; [url_data setSoap_action:[NSString stringWithUTF8String:soap->action]]; [url_data setReq_content_length:soap->count]; // Extract a pair of userid and password if present if (soap->userid && soap->passwd) { [url_data setUser_name:[NSString stringWithUTF8String:soap->userid]]; [url_data setPassword:[NSString stringWithUTF8String:soap->passwd]]; } else { [url_data setUser_name:nil]; [url_data setPassword:nil]; } // Extracts and saves http-method switch (soap->status) { case SOAP_POST: [url_data setHttp_method:@"POST"]; break; case SOAP_GET: [url_data setHttp_method:@"GET"]; break; case SOAP_DEL: [url_data setHttp_method:@"DELETE"]; break; case SOAP_CONNECT: [url_data setHttp_method:@"CONNECT"]; break; default: [url_data setHttp_method:@"POST"]; break; } // Extracts and saves http content-type if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) { [url_data setContent_type:@"application/dime"]; } else if (soap->version == 2) { if (soap->mode & SOAP_ENC_MTOM) { [url_data setContent_type:@"application/xop+xml; charset=utf-8; \ type=\"application/soap+xml\""]; } else { [url_data setContent_type:@"application/soap+xml; charset=utf-8"]; } } else if (soap->mode & SOAP_ENC_MTOM) { [url_data setContent_type:@"application/xop+xml; charset=utf-8; \ type=\"text/xml\""]; } else { [url_data setContent_type:@"tex/xml; charset=utf-8"]; } return 1; } /** @fn int soap_ios_close(struct soap *soap) @param soap The soap context @return 0 Note: This open function does not create a real socket for communication. The actual connection establishment happens in the frecv callback */ static int soap_ios_close( struct soap *soap) { return 0; } /** @fn int soap_ios_send( struct soap *soap, const char *buf, size_t len) @brief Buffers the http/soap request in plugin data @param soap The soap context @param[in] buf The buffer holding the serialized http/soap request @param[in] len The buffer size @return The number of bytes buffered Note: This send function does not send any data to its peer. Rather it buffers the serialied soap request including http header to the plugin data. The sending happens actually in frecv function. */ static int soap_ios_send( struct soap *soap, const char *buf, size_t len) { soap_ios_data *data = static_cast(soap_lookup_plugin(soap, soap_ios_id)); GSoapiOSURLData *url_data = data->url_data; [url_data.http_req_msg appendBytes:buf length: len]; return len > 0 ? SOAP_OK : SOAP_EOF; } /** @fn size_t soap_ios_recv( struct soap *soap, char *buf, size_t len) @brief Sends soap request, buffers soap response and serialize the response @param soap The soap context @param[out] buf The buffer for the received data @param[in] len The number of bytes received @return The number of bytes received Note: This recv function sends a synchronous soap request through NSURLRequest, receives soap response, serializes response. */ static size_t soap_ios_recv( struct soap *soap, char *buf, size_t len) { soap_ios_data *data = static_cast(soap_lookup_plugin(soap, soap_ios_id)); GSoapiOSURLData *url_data = data->url_data; // Handle HTTP basic authentication if present if (url_data.user_name && url_data.password) { NSURLCredential *credential = [NSURLCredential credentialWithUser:url_data.user_name password:url_data.password persistence:NSURLCredentialPersistenceForSession]; NSURLProtectionSpace * protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:url_data.host port:url_data.port protocol:@"http" realm:nil authenticationMethod:nil]; [[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential forProtectionSpace:protectionSpace]; } // -------- End of auhentication handling --------- // Execute once: sending the request and receiving response // Send request through NSURLSessionDataTask and completionHandler // and receive response if (url_data.request_sent == false) { [url_data setRequest_sent:true]; //int msg_len = [url_data.http_req_msg length]; NSRange range = NSMakeRange([url_data.http_req_msg length] - url_data.req_content_length, url_data.req_content_length); url_data.soap_req_msg = [url_data.http_req_msg subdataWithRange:range]; NSURL *url = [NSURL URLWithString:url_data.endpoint]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestCachePolicy)url_data.cache_policy timeoutInterval:url_data.timeout_interval]; [request addValue:url_data.host forHTTPHeaderField:@"HOST"]; [request addValue:url_data.soap_action forHTTPHeaderField:@"SOAPACTION"]; [request addValue:url_data.content_type forHTTPHeaderField:@"Content-Type"]; [request setHTTPMethod:url_data.http_method]; NSString *conten_length = [NSString stringWithFormat:@"%d", [url_data.soap_req_msg length]]; [request addValue:conten_length forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody:url_data.soap_req_msg]; dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); //ensures DataTask is synchronous NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // Error handling if (error) { NSLog(@"ERROR:<%@>\n", [error localizedDescription]); //const char *fault_string = [[error localizedDescription] UTF8String]; soap_receiver_fault(soap, [[error localizedDescription ] UTF8String], ""); } else { url_data.soap_res_msg = [NSData dataWithData:data]; } dispatch_semaphore_signal(semaphore); } ]; [dataTask resume]; dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); //[url_data setRequest_sent:true]; } // may execute multiple times depending on the buffer size and response length if (url_data.request_sent) { if (data->res_msg == "" && data->res_len == 0) { data->res_msg = (const char*)[url_data.soap_res_msg bytes]; //result message as string data->res_len = [url_data.soap_res_msg length]; // response length } if (data->res_len < len) // if the # of bytes you neeed to read is < the max num of bytes. Only copy what you len = data->res_len; // need memcpy(buf,data->res_msg,len); // copy to the buffer data->res_msg += len ; // point to the byte you will start copying from on the next call data->res_len -= len ; // update the amount of bytes you still need to copy } return len; // no longer calls function when len = 0 } /** @fn void soap_ios_setcachepolicy(struct soap *soap, unsigned int policy) @brief Sets cache policy The constants used to specify interaction with the cached responses are: enum { NSURLRequestUseProtocolCachePolicy = 0, NSURLRequestReloadIgnoringLocalCacheData = 1, NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData, NSURLRequestReturnCacheDataElseLoad = 2, NSURLRequestReturnCacheDataDontLoad = 3, NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4, NSURLRequestReloadRevalidatingCacheData = 5 }; @param soap The soap context @param[in] policy The policy to be specified for he request */ void soap_ios_setcachepolicy(struct soap *soap, unsigned int policy) { soap_ios_data *data = static_cast(soap_lookup_plugin(soap, soap_ios_id)); data->url_data.cache_policy = policy; } /** @fn soap_ios_settimeoutinterval(struct soap *soap, double seconds) @brief Sets timeout interval @param soap The soap context @param[in] seconds The value for the timeout interval to be specified (in seconds) */ void soap_ios_settimeoutinterval(struct soap *soap, double seconds) { soap_ios_data *data = static_cast(soap_lookup_plugin(soap, soap_ios_id)); data->url_data.timeout_interval = seconds; } // ----------------------------------------------------------------------------- // END of plugin implementation // ----------------------------------------------------------------------------- gsoap-2.8.60/gsoap/ios_plugin/examples/0000755000175000017500000000000013227173555017371 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/0000755000175000017500000000000013227173555020104 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/.DS_Store0000644000175000017500000001400413227173555021566 0ustar ellertellertBud1%Airdsclboolclbool  @ @ @ @ E%DSDB` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/0000755000175000017500000000000013227173555020617 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/.DS_Store0000644000175000017500000001400413227173555022301 0ustar ellertellertBud1clbool Airdsclbool Air.xcodeprojlg1Scomp Air.xcodeprojmoDDdutc Air.xcodeprojmodDdutc Air.xcodeprojph1Scomp  @ @ @ @ EDSDB ` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/0000755000175000017500000000000013227173555021332 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/.DS_Store0000644000175000017500000001400413227173555023014 0ustar ellertellertBud1ts.xcaAssets.xcassetsdsclbool Base.lprojdsclbool  @ @ @ @ EDSDB ` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/main.mm0000644000175000017500000000040513227173555022610 0ustar ellertellert// // main.mm // #import #import "AppDelegate.h" #include "../../airportSoap.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/ViewController.mm0000644000175000017500000001703013227173555024644 0ustar ellertellert// // ViewController.mm // #import "ViewController.h" #include "soapairportSoapProxy.h" #import "soapStub.h" #import "gsoapios.h" #include @interface ViewController () @end @implementation ViewController @synthesize country_name; @synthesize showResults; - (IBAction)buttonPressed:(id)sender { _ns1__GetAirportInformationByCountry sending; _ns1__GetAirportInformationByCountryResponse receiving; std::string result = ""; //stores resulting data bool webserviceresult = true; //keeps track of if the web service returns a readable result airportSoapProxy service; soap_init(service.soap); // ----- register plugin for callbacks ------ soap_register_plugin(service.soap, soap_ios); std::string countryname = std::string((char*)[country_name.text UTF8String]); sending.country = &countryname; std::stringstream xmlmessage; if(service.GetAirportInformationByCountry(&sending,receiving)==SOAP_OK) xmlmessage << *(receiving.GetAirportInformationByCountryResult); struct soap *ctx = soap_new1(SOAP_C_UTFSTRING | SOAP_XML_INDENT | SOAP_DOM_TREE); ctx->double_format = "%lG"; xsd__anyType dom(ctx); xmlmessage >> dom; if (dom.soap->error) webserviceresult = false; xsd__anyType *elt; #define USE_ATT(path, text) std::cout << path << " = " << text << std::endl #define USE_ELT(path, text) std::cout << path << " = " << text << std::endl for (xsd__anyType *it = dom.elt_get("Table"); it; it = it->get_next()) { xsd__anyType& dom_Table = *it; if ((elt = dom_Table.elt_get("AirportCode"))) { xsd__anyType& dom_Table_AirportCode = *elt; if (dom_Table_AirportCode.get_text()) { result += "\n\nAirport Code = "; result += dom_Table_AirportCode.get_text(); } } if ((elt = dom_Table.elt_get("CityOrAirportName"))) { xsd__anyType& dom_Table_CityOrAirportName = *elt; if (dom_Table_CityOrAirportName.get_text()) { result += "\nCity or Airport Name = "; result += dom_Table_CityOrAirportName.get_text(); } } if ((elt = dom_Table.elt_get("Country"))) { xsd__anyType& dom_Table_Country = *elt; if (dom_Table_Country.get_text()) { result += "\nCountry = "; result += dom_Table_Country.get_text(); } } if ((elt = dom_Table.elt_get("CountryAbbrviation"))) { xsd__anyType& dom_Table_CountryAbbrviation = *elt; if (dom_Table_CountryAbbrviation.get_text()) { result += "\nCountry Abbreviation = "; result += dom_Table_CountryAbbrviation.get_text(); } } if ((elt = dom_Table.elt_get("CountryCode"))) { xsd__anyType& dom_Table_CountryCode = *elt; if (dom_Table_CountryCode.get_text()) { result += "\nCountry Code = "; result += dom_Table_CountryCode.get_text(); } } if ((elt = dom_Table.elt_get("GMTOffset"))) { xsd__anyType& dom_Table_GMTOffset = *elt; if (dom_Table_GMTOffset.get_text()) { result += "\nGMT Offset = "; result += dom_Table_GMTOffset.get_text(); } } if ((elt = dom_Table.elt_get("RunwayLengthFeet"))) { xsd__anyType& dom_Table_RunwayLengthFeet = *elt; if (dom_Table_RunwayLengthFeet.get_text()) { result += "\nRunway Length (feet) = "; result += dom_Table_RunwayLengthFeet.get_text(); } } if ((elt = dom_Table.elt_get("RunwayElevationFeet"))) { xsd__anyType& dom_Table_RunwayElevationFeet = *elt; if (dom_Table_RunwayElevationFeet.get_text()) { result += "\nRunway Elevation (feet) = "; result += dom_Table_RunwayElevationFeet.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeDegree"))) { xsd__anyType& dom_Table_LatitudeDegree = *elt; if (dom_Table_LatitudeDegree.get_text()) { result += "\nLatitude Degree = "; result += dom_Table_LatitudeDegree.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeMinute"))) { xsd__anyType& dom_Table_LatitudeMinute = *elt; if (dom_Table_LatitudeMinute.get_text()) { result += "\nLatitude Minute = "; result += dom_Table_LatitudeMinute.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeSecond"))) { xsd__anyType& dom_Table_LatitudeSecond = *elt; if (dom_Table_LatitudeSecond.get_text()) { result += "\nLatitude Second = "; result += dom_Table_LatitudeSecond.get_text(); } } if ((elt = dom_Table.elt_get("LatitudeNpeerS"))) { xsd__anyType& dom_Table_LatitudeNpeerS = *elt; if (dom_Table_LatitudeNpeerS.get_text()) { result += "\nLatitude N or S = "; result += dom_Table_LatitudeNpeerS.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeDegree"))) { xsd__anyType& dom_Table_LongitudeDegree = *elt; if (dom_Table_LongitudeDegree.get_text()) { result += "\nLongitude Degree = "; result += dom_Table_LongitudeDegree.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeMinute"))) { xsd__anyType& dom_Table_LongitudeMinute = *elt; if (dom_Table_LongitudeMinute.get_text()) { result += "\nLongitude Minute = "; result += dom_Table_LongitudeMinute.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeSeconds"))) { xsd__anyType& dom_Table_LongitudeSeconds = *elt; if (dom_Table_LongitudeSeconds.get_text()) { result += "\nLongitude Second = "; result += dom_Table_LongitudeSeconds.get_text(); } } if ((elt = dom_Table.elt_get("LongitudeEperW"))) { xsd__anyType& dom_Table_LongitudeEperW = *elt; if (dom_Table_LongitudeEperW.get_text()) { result += "\nLongitude E or W = "; result += dom_Table_LongitudeEperW.get_text(); } } } NSString *airPorts = [NSString stringWithUTF8String:result.c_str()]; if(result == "" || !webserviceresult) airPorts = [NSString stringWithFormat: @"%@", @"Error: no know information. Try a different country."]; showResults.editable = NO; showResults.showsVerticalScrollIndicator = YES; showResults.text = airPorts; soap_destroy(ctx); // delete objects soap_end(ctx); // delete DOM data soap_free(ctx); // free context service.destroy(); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/AppDelegate.mm0000644000175000017500000000360313227173555024042 0ustar ellertellert// // AppDelegate.mm // #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. return YES; } - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } @end gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Assets.xcassets/0000755000175000017500000000000013227173555024430 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Assets.xcassets/AppIcon.appiconset/0000755000175000017500000000000013227173555030125 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Assets.xcassets/AppIcon.appiconset/Contents.json0000644000175000017500000000221313227173555032613 0ustar ellertellert{ "images" : [ { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "3x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "1x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "2x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "1x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "2x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "1x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "2x" }, { "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } }gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/ViewController.h0000644000175000017500000000051113227173555024456 0ustar ellertellert// // ViewController.h // #import @interface ViewController : UIViewController{ UITextField* country_name; UITextView* showResults; } @property (strong, nonatomic) IBOutlet UITextField *country_name; @property (strong, nonatomic) IBOutlet UITextView *showResults; -(IBAction) buttonPressed; @end gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Base.lproj/0000755000175000017500000000000013227173555023331 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Base.lproj/Main.storyboard0000644000175000017500000001130313227173555026325 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Base.lproj/LaunchScreen.storyboard0000644000175000017500000000320013227173555030010 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/Info.plist0000644000175000017500000000311613227173555023303 0ustar ellertellert NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air/AppDelegate.h0000644000175000017500000000025113227173555023654 0ustar ellertellert// // AppDelegate.h // #import @interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; @end gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/0000755000175000017500000000000013227173555023326 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/0000755000175000017500000000000013227173555027324 5ustar ellertellert././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/contents.xcworkspacedatagsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/contents.xcworkspac0000644000175000017500000000022413227173555033265 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/xcuserdata/0000755000175000017500000000000013227173555031467 5ustar ellertellert././@LongLink0000644000000000000000000000017000000000000011601 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/xcuserdata/bethanysanders.xcuserdatad/gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/xcuserdata/bethanys0000755000175000017500000000000013227173555033225 5ustar ellertellert././@LongLink0000644000000000000000000000022600000000000011603 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/xcuserdata/bethanysanders.xcuserdatad/UserInterfaceState.xcuserstategsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/project.xcworkspace/xcuserdata/bethanys0000644000175000017500000006463313227173555033243 0ustar ellertellertbplist00X$versionX$objectsY$archiverT$top'()*+,-./39QRSTUVWXYZ[\]uvwxyz{|}~   &*<=KLMNOPTUV\]^jklmnoptuy    &'()*+,0159=>BFJPQR\]^_`aeinouy}~  $%&./04:?GHPQabcdefgwxyz{|}      !"#&+,-.:;<BCGMQRX^fghpqrz{ #$./0489quvz{$%&'()*+789EFGSTUVWXYZfghijklmyz{| !"./0<=>?KLMNZ[\]ijklmnop|}~ !"#$%&'/3489ABCDEMNXYZ[cmnopqr|}~U$null WNS.keysZNS.objectsV$class aE_$9AE6F07F-4802-41CD-8FD5-719EEC2F8E47_IDEWorkspaceDocument &  ! $% CK^IDEWindowFrame_!IDEOrderedWorkspaceTabControllers_>IDEWorkspaceTabController_26FCCB0D-7EB3-404C-982E-6FC5DBBD99E3_,IDEWorkspaceWindowControllerUniqueIdentifier_IDEActiveWorkspaceTabController_IDEWindowToolbarIsVisible_IDEWindowTabBarIsVisible_{{4, 0}, {1436, 877}} 024567Z$classnameX$classesWNSArray68XNSObject :E&;<=>?@ABCDF$HIJKL$NOS]`OK[IDETabLabel_IDEShowNavigator]IDEEditorArea_-IDEWorkspaceTabControllerUtilityAreaSplitView_IDENavigatorArea_,IDEWorkspaceTabControllerDesignAreaSplitView\ViewDebugger_IDEShowUtilities^IDETabFilePath_AssistantEditorsLayout]Air.xcodeproj ^i&_`abcdefgh !"#$%&jkl$OOpqr%'ҀOOހCK_IDEEditorMode_Genius_IDEEditorMode_StandardZlayoutTree]IDEShowEditor_VersionEditorSubmodeZEditorMode_IDEDefaultDebugArea_DebuggerSplitView_ DefaultPersistentRepresentations_ShowDebuggerArea &()*+K]SplitPosition_%EditorLayout_PersistentRepresentation"? &,-.\KYAlternateTMain /01O2OZE_)EditorLayout_StateSavingStateDictionaries_EditorLayout_Selected_EditorLayout_Geometry 3Y &456789:;?@%ɀABCDE_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#AY ĶX{0, 439}X{241, 0}45\NSDictionary8 O_DocumentLocation^IdentifierPath_DomainIdentifier_IndexOfDocumentIdentifierPGSO 2HL &IJK_navigableItem_name_ViewController.h45_NSMutableDictionary8 &MNKZidentifier_;Xcode.InterfaceBuilderKit.GeniusCategory.SelectionAutomatic [documentURLYtimestampQR_Hfile:///Users/bethanysanders/Documents/work/Air/Air/Air/ViewController.h45_DVTDocumentLocation8_DVTDocumentLocation45_(IDENavigableItemArchivableRepresentation8_(IDENavigableItemArchivableRepresentation_@interface ViewController_ViewController.h_&Xcode.IDEKit.EditorDocument.SourceCode  WNS.base[NS.relativeXQ45UNSURL845^NSMutableArray68 [Y_{{0, 0}, {457, 462}} !/01"O$]OE '2(^ +3&456789:456789:_`vzK_*com.apple.InterfaceBuilder3.Storyboard.XIB >D?@ABCabcdeEFCHIfheilE_SelectedMemberIdentifiers_EditedMemberConfiguration_SelectionProvider_#IBStoryboardStructureViewController_IBCanvasViewController Q2RgZaHC-d7-90VWdefault WY&XjZkK_LastKnownOutlineViewWidth#@p _d&`abcmnopefghqrsuKZZoomFactor[CenterPoint_EditedTopLevelMemberIDs_$ObjectIDToLastKnownCanvasPositionMap#?\{279, 332.5} q2rtZBYZ-38-t0r vw&K z{}~xSw_/Xcode.IDENavigableItemDomain.WorkspaceStructure 2y} 8ZIdentifierUIndexz{|_Main.storyboard45_IDEArchivableStringIndexPair8_IDEArchivableStringIndexPair ~|SAir O~O| ހR_Rfile:///Users/bethanysanders/Documents/work/Air/Air/Air/Base.lproj/Main.storyboard\Show Results_7Xcode.IDEKit.InterfaceBuilder.EditorDocument.Storyboard  X 2_{{0, 0}, {916, 462}} &)K &-K OOЀE_)EditorLayout_StateSavingStateDictionaries_EditorLayout_Selected_EditorLayout_Geometry 2Ȁ &Ҁڀƀ̀̀΀πK\FileDataType[EditorState_ArchivableRepresentation_NavigableItemName_DocumentNavigableItemName_DocumentExtensionIdentifier[DocumentURL_com.apple.xcode.project 通ŀE_(Xcode3ProjectEditor.sourceList.splitview_+Xcode3ProjectEditor_Xcode3BuildPhasesEditor_,Xcode3ProjectEditorSelectedDocumentLocations_,Xcode3ProjectEditorPreviousTargetEditorClass &K_DVTSplitViewItems Y E]DVTIdentifier_DVTViewMagnitude_!sourceListSplitViewItemIdentifier#@e@  EP#@H & !"#$K_+Xcode3BuildPhasesEditorDisclosedNamesKey2.0_58596A171D53A2F2002C48A8_58596A191D53A2F2002C48A8_&kXcode3BuildPhasesEditorScrollPointKey_58596A161D53A2F2002C48A8_58596A181D53A2F2002C48A8 -/._Link Binary With Libraries4523\NSMutableSet248UNSSet 67&K :;&KV{0, 0} ?@&K CD&K G2HK LMNOYselection_Bfile:///Users/bethanysanders/Documents/work/Air/Air/Air.xcodeproj/#Ac#9 SW&TUVXYZ€KVEditorVTarget_ Xcode3BuildPhasesEditorLocations_Xcode3BuildPhasesEditorSAir b2cÀ fg&K45jk_Xcode3ProjectDocumentLocationlm8_Xcode3ProjectDocumentLocation_DVTDocumentLocation_Xcode3BuildPhasesEditor pq}tˀǀSw v2wȀ zOɀO|SAir ހ̀R_Bfile:///Users/bethanysanders/Documents/work/Air/Air/Air.xcodeproj/SAir_7Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project  X 2р_{{0, 0}, {916, 839}} _rootLayoutTreeNode_geniusEditorContextNode_primaryEditorContextNodeڀӀ XchildrenVparent[contentType_ documentArchivableRepresentation[orientationڀ }ـՀSw 2ր O׀O|SAir ހ̀R ۀ܀ 2Ӏ45_'IDEWorkspaceTabControllerLayoutTreeNode8_'IDEWorkspaceTabControllerLayoutTreeNode45_#IDEWorkspaceTabControllerLayoutTree8_#IDEWorkspaceTabControllerLayoutTree &̀߀рKXLeftView_IDESplitViewDebugAreaZLayoutModeYRightView &܀%O$COK_VariablesViewShowsRawValues_VariablesViewSelectedScope_ VariablesViewViewSortDescriptors_VariablesViewShowsType 2 &K_DVTSplitViewItems Y EXLeftView#@| EYRightView#@|   & OOK_ConsoleFilterMode &K Y  !"EYIDEEditor#@~ '*+,E_IDEDebuggerArea#@u 12&K 57&8K ;<=Y @CEE#@@ ILNE#@k RY&STUVWX  Z[\]^_  /=>JK_ Xcode.IDEKit.Navigator.Structure_Xcode.IDEKit.Navigator.Issues_Xcode.IDEKit.Navigator.Debug_SelectedNavigator_Xcode.IDEKit.Navigator.Logs_"Xcode.IDEKit.Navigator.Breakpoints ho&ijklmn  pqr%t%CCK_IDEExpandedItemsTree^IDEVisibleRect_IDESelectedTree_!IDERecentDocumentFilteringEnabled_,IDENavigatorExpandedItemsBeforeFilteringTree_IDESCMStatusFilteringEnabled ~E_IDEValuesAsTree &KSAir &KPSAir &K_Supporting Files_{{0, 0}, {259, 782}} E &K E &K &j! "#$%&'(%%%ɀC)*+C,-C.K_IDEErrorFilteringEnabled_IDECollapsedFiles_IDEExpandedIssues^IDEShowsByType_IDESelectedNavigables_IDECollapsedTypes_IDERecentFilteringEnabled_IDECollapsedGroups_{{0, 0}, {259, 753}} / / Y / / &j0123 4%O%C5OC;N@OE_IDEValuesAsTree DE&K HJ>NKQE NO&K_{{0, 0}, {259, 782}} SU&VTK YZ[\UX[Y _bcdVWE_IDENavigatorArea#@p@ ilmnYZE]IDEEditorArea#@ svwd\WE_IDEUtilitiesArea |&}~^_$$K_ShowsOnlyInterestingViewObjects_ShowsOnlyVisibleViewObjects_:/Users/bethanysanders/Documents/work/Air/Air/Air.xcodeproj &bcdefghi$j`cq}K_BreakpointsActivated_DefaultEditorStatesForURLs\ActiveScheme_ActiveRunDestination_DefaultEditorFrameSizeForURLs_0LastCompletedPersistentSchemeBasedActivityReport_DocumentWindows_RecentEditorDocumentURLs &klmnopq{BMK_'Xcode.IDEKit.EditorDocument.LogDocument_'Xcode.IDEKit.EditorDocument.PlistEditor_7Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project_&Xcode.IDEKit.EditorDocument.SourceCode_7Xcode.IDEKit.InterfaceBuilder.EditorDocument.Storyboard_(Xcode.IDEKit.EditorDocument.AssetCatalog &rtK  Xs_2x-xcode-log://17D2EE0B-46C3-4E24-9CA0-DBE357202D84 &ŁuǁvK_SelectedDocumentLocations 2́w _expandTranscriptYindexPathzsx _NSIndexPathLength_NSIndexPathValue y45[NSIndexPath8[NSIndexPath45_IDELogDocumentLocation8_IDELogDocumentLocation_DVTDocumentLocation &|~K  X}_Bfile:///Users/bethanysanders/Documents/work/Air/Air/Air/Info.plist &K_IDE_PLIST_EDITOR_SELECTION_KEY_ IDE_PLIST_EDITOR_VISIBLERECT_KEY_IDE_PLIST_EDITOR_EXPANSION_KEY_{{0, 0}, {880, 787}} / Y &K  NX &通K 2K  NO#Ac"Z %)&TU(*Y,K_ Xcode3BuildPhasesEditorLocations_Xcode3BuildPhasesEditor 122 56&K_Xcode3BuildPhasesEditor :U&;<=>?@ABCDEFGHIJKLMNOPQRSTįVWXYZ[\]^_`abcdefghijklmnoƁ́Ձ݁ !$'+/3;?K  tX_Hfile:///Users/bethanysanders/Documents/work/Air/Air/Air/ViewController.m  yX_Wfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.h  ~X_7file:///Users/bethanysanders/Documents/work/Air/dom.cpp  X_ofile:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/locale  X_pfile:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/ostream  X_file:///Users/bethanysanders/Documents/work/Air/Air/Air/main.m  ӀX_Afile:///Users/bethanysanders/Documents/work/Air/airportSoap.nsmap  ؀X_:file:///Users/bethanysanders/Documents/work/Air/soapStub.h  ݀X_?file:///Users/bethanysanders/Documents/work/Air/Air/Air/main.mm  X_Ffile:///Users/bethanysanders/Documents/work/Air/soapairportSoapProxy.h  X_Ifile:///Users/bethanysanders/Documents/work/Air/Air/Air/ViewController.mm  X_Efile:///Users/bethanysanders/Documents/work/Air/Air/Air/AppDelegate.h  X_Efile:///Users/bethanysanders/Documents/work/Air/Air/Air/AppDelegate.m &ǁȁɁʤ%"ˁ̀CK_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#AS X{0, 497}  &  ΁ρЁѤ  %ҁӀCԀK_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A[bY{0, 2513}Y{4976, 0} &ցׁ؁٤ %"ځۀC܀K_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A[Y{0, 2851}Z{74399, 0} ,1&ǁȁɁʤ23%"ށ߀CK#ASz*]{49635, 1386} :?&ǁȁɁʤ@A%"CK#ASeB]{21710, 1607} HM&IJKLNO%QCK_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A[2Y{0, 2696}W{49, 0} [`&\]^_ab%dCK_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#AU'3\{2157, 1880}Y{3625, 0} ns&IJKLtu%wCK#A[Y{0, 1917}X{630, 0} }&ǁȁɁʤ%CK#ASY{0, 1614}X{289, 0} &IJKL%CK#A[Y{0, 1880}W{53, 0} &ցׁ؁٤%CK#A[zY{0, 2685}Z{33118, 0} &IJKL%CK#A[zY{0, 2281}W{10, 0} &IJKL% C K#A[lfY{0, 1923}W{20, 0} &\]^_%"  CK#AU'+8]{24928, 1796} &IJKL%߁CK#A[tX{0, 329}W{28, 0} &Ā=>?@%"CK#AY ,Y{0, 1308} &%CK_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#AcgXOY{0, 2799}Y{2665, 0}  &IJKL  %C K#A[Y{0, 2650}Y{2459, 0} &ǁȁɁʤ%""#CK#ASLX{0, 337} #(&IJKL)*%"%&CK#A[ V2X{0, 597} 16&IJKL78%:()C*K#A[=Y{0, 2794}W{13, 0} @E&IJKLFG%I,-C.K#A[sX{0, 296}W{14, 0} OT&IJKLUV%X01C2K#A[*|Y{0, 3315}W{25, 0} ^c&_`ab4567de%g89C:K_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#Ac]~[{220, 2303}W{23, 0} qv&IJKLwx%z<=C>K#A[ϞX{0, 169}W{24, 0} &ǁȁɁʤ%"@ACK#AS_WY{0, 2034} &ACK &?@ABCabcdeCDeEFK_&heightClass=regular-widthClass=regular &XjZkK &`abcmnGopHIJKLK_LastOverviewZoomFactor#?Z{440, 412}#? 2rt &K &āNƁPK  ˀXO_Hfile:///Users/bethanysanders/Documents/work/Air/Air/Air/Assets.xcassets/ &ԁQRSTUVہWXY]^_K_detailController_selectedItemIdentifiers_source-list-area[sourceItems]sclicing-area]overview-area_IBICCatalogOverviewController / &Z[K_expandedItemIDs \45448 / &K &K abE]IDENameStringSAir      defghijk$%$lCmnopEYtargetSDKZisEligible_targetDeviceIsWireless_targetDeviceLocation_targetArchitecture_targetDeviceFamily_targetDeviceModelCode_targetDeviceIsConcrete_iphonesimulator9.3_>dvtdevice-iphonesimulator:949C3351-857E-4EF6-A71D-9360DB1F9CE8Vx86_64ViPhoneYiPhone8,2 (+&)*rt,-v{K  2Xs_Hfile:///Users/bethanysanders/Documents/work/Air/soapairportSoapProxy.cpp  7Xu_?yzEUwidthVheight#@#@ FI;<wx>Ky|E#@ OS&PQR~TU~K_0IDEActivityReportCompletionSummaryStringSegments_IDEActivityReportOptions_IDEActivityReportTitle \]^_`aY dh&efgij~K_&IDEActivityReportStringSegmentPriority_+IDEActivityReportStringSegmentBackSeparator_)IDEActivityReportStringSegmentStringValue#@c % sw&efgxyzK#@Q UBuild &efg~K#@R: &efgeqKc %  WNS.dataOabplist00;Troot#-27EKR[boqsu!$-4<ILNPU]`eruz?Á45]NSMutableData8VNSData &egiЁK_"IDEActivityReportStringSegmentType_"IDEActivityReportStringSegmentDate_'IDEActivityReportStringSegmentDateStyle_'IDEActivityReportStringSegmentTimeStyle WNS.time#A^"=45VNSDate8_8/12/16 at 11:26 AMj  Y RȁY  ̀X_Afile:///Users/bethanysanders/Documents/work/Air/airportSoap.nsmap  ҀX_Hfile:///Users/bethanysanders/Documents/work/Air/soapairportSoapProxy.cpp  ׀X_Ffile:///Users/bethanysanders/Documents/work/Air/soapairportSoapProxy.h  ܀X_9file:///Users/bethanysanders/Documents/work/Air/soapC.cpp  X_7file:///Users/bethanysanders/Documents/work/Air/soapH.h  X_:file:///Users/bethanysanders/Documents/work/Air/soapStub.h_NSKeyedArchiverUState"+5:?$3579;=?APRTVXZ\^`o%A\t}  (;Iy     4 6 8 : < > @ B D F H ] _ a c e g i k m o q s  + > K P R T Y [ ] _ m  7 O X [ ] _ l { }  * 6 H U ^ ` b d f o q s u w y    # ( = P _ r   #%(*,7uw %.Y^%4;DGIKbovxz|)+-/13>@BDFHJf  -6CLNPRT]_acegr~ R[bdfhjw#0246 !#%257:<>KRTVX_aceg )5Pd N}  /S\inprwy{}~,Up"#$&/246GQSUWY(+-/<=>@Iip "gk:<>@B[dkw +-/13<?ACLv{ &(*,.09Q\fs|~     ' * , / 1 3 G P U W Y [ h m o q v x z | !!!!!!!!!!)!.!0!2!7!9!;!=!G!P!]!b!d!f!k!m!o!q!!!!!!!!!!!!!!!!!!!!!!!!!!"" " " """""""/"<"?"B"E"H"K"N"["^"a"d"g"j"m"o""""##(#5#B#E#H#K#N#Q#T#a#d#g#j#l#o#q#s#####$$*$-$0$3$6$8$J$W$Z$]$`$c$e$i$v${$~$$$$$$$$$$$$$$$$$$$$$$$% % %%%%%%%(%+%.%1%3%@%A%B%D%Q%d%g%j%m%p%s%v%y%|%%%%%%%%%%%%%%%%&&*&F&[&r&{&|&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&''2'L'g'''''''''''''(&(/(2(4(6(E(\(^(((((((((((((((((())!)G)])))))))))))))))**********4*\*i*l*o*r*u*w**********************+++ + ++++$+&+(+-+0+3+5+H+Q+^+c+e+g+l+o+r+t+++++++++++++++++++,,$,a,n,,,,,,,,,,,,,,,,,,,,,---9-l-~-----------------..:.t..////////*/,/./1/f/s/v/y/|////////////////0 0 0"0%0.0:0?0K0T0m0t00000000000011$1+1.11141;1=1@1C1E1f1111111111111111222 2 22"2$2&2(2*2325272:2=2?2H2K2N2P2a2d2g2i2k2t2222222222222222222233&3]3`3c3f3i3l3o3r3u3x3{3~33333333333333333333333334444 4 4444444!4$4'4*4-40424?4A4C4F4444445 5555M5Z5\5^5a555556Z6g6i6k6n6666677#7%7'7*7u77777777788+8-8/828888888888989E9G9I9L99999::*:,:.:1:v:::::::::;; ;";$;';h;u;w;y;|;;;;;<<< <"<%> > >>>>.>U>c>>>>>>>>>>>>>>>>??%?M?V?`?j?w??????????????@@#@-@8@E@N@Q@T@W@Z@c@f@i@k@m@o@x@@@@@@@@@@@@@@@@@@@@@@AAAA A A'ANA\AAAAAAAAAAAAAAAAABB'BOBXBeBoB|BBBBBBBBBBBBBBBBBBBBBBBBBBCCCC$C-C0C3C6C9CBCECHCJCMCOCXCbCjCwCCCCCCCCCCCCCCCCCCCCCCCCCCDD DD D)D,D/D2D5D>DADDDFDIDKDTD^DfDsD|DDDDDDDDDDDDDDDDDDDDDDDDDDEEEEE E"E$E-E0E3E5E7E9EBELEYEbEeEhEkEnEwEzE}EEEEEEEFFFF&F/F2F5F8F;FDFGFJFLFOFQFZFdFnF{FFFFFFFFFFFFFFFFFFFFFFFFFFGG GGGGG"G+G.G1G3G6G8GAGKGSG`GiGlGoGrGuG~GGGGGGGGGGGGGGGGGGGGGGGHHHHHHH#H&H)H+H.H0HKHrHHHHHHHHHHHHHHHHHIIII$I-I0I3I6I9IBIEIHIJILINIWIaInIqItIwIzI|IIIIIIIIIIIIIIIIIIIIIJJJJJJJJ(J+J.J1J4J7J9JRJ[JfJoJxJ{J}JJJJJJJJJJJJJJJK KK$K'K*K-K0K3K6KCKFKIKLKOKRKUKWKjKKKKKKKKKKKKLLLLL!L"L%L.L3L SchemeUserState Air.xcscheme orderHint 0 SuppressBuildableAutocreation 58596A191D53A2F2002C48A8 primary 58596A321D53A2F3002C48A8 primary 58596A3D1D53A2F3002C48A8 primary ././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcschemes/Air.xcschemegsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/x0000644000175000017500000000777713227173555033225 0ustar ellertellert ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcdebugger/gsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/x0000755000175000017500000000000013227173555033201 5ustar ellertellert././@LongLink0000644000000000000000000000021000000000000011574 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlistgsoap-2.8.60/gsoap/ios_plugin/examples/Air/Air/Air.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/x0000644000175000017500000000013313227173555033200 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/Air/airport.h0000644000175000017500000020042013227173555021733 0ustar ellertellert/* airport.h Generated by wsdl2h 2.8.33 from http://www.webservicex.net/airport.asmx?WSDL and typemap.dat 2016-08-17 14:07:57 GMT DO NOT INCLUDE THIS FILE DIRECTLY INTO YOUR PROJECT BUILDS USE THE soapcpp2-GENERATED SOURCE CODE FILES FOR YOUR PROJECT BUILDS gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc. All Rights Reserved. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia Inc., contact@genivia.com -------------------------------------------------------------------------------- */ /** @page page_notes Notes @note HINTS: - Run soapcpp2 on airport.h to generate the SOAP/XML processing logic. Use soapcpp2 -I to specify paths for #import To build with STL, 'stl.h' is imported from 'import' dir in package. Use soapcpp2 -j to generate improved proxy and server classes. Use soapcpp2 -r to generate a report. - Use wsdl2h -c and -s to generate pure C code or C++ code without STL. - Use 'typemap.dat' to control namespace bindings and type mappings. It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces section below and add the modified lines to 'typemap.dat' to rerun wsdl2h. - Run Doxygen (www.doxygen.org) on this file to generate documentation. - Use wsdl2h -R to generate REST operations. - Use wsdl2h -nname to use name as the base namespace prefix instead of 'ns'. - Use wsdl2h -Nname for service prefix and produce multiple service bindings - Use wsdl2h -d to enable DOM support for xsd:anyType. - Use wsdl2h -g to auto-generate readers and writers for root elements. - Use wsdl2h -b to auto-generate bi-directional operations (duplex ops). - Use wsdl2h -U to map XML names to C++ Unicode identifiers instead of _xNNNN. - Use wsdl2h -u to disable the generation of unions. - Struct/class members serialized as XML attributes are annotated with a '@'. - Struct/class members that have a special role are annotated with a '$'. @warning DO NOT INCLUDE THIS ANNOTATED FILE DIRECTLY IN YOUR PROJECT SOURCE CODE. USE THE FILES GENERATED BY soapcpp2 FOR YOUR PROJECT'S SOURCE CODE: THE soapStub.h FILE CONTAINS THIS CONTENT WITHOUT ANNOTATIONS. @copyright LICENSE: @verbatim -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc. All Rights Reserved. The wsdl2h tool and its generated software are released under the GPL. This software is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial-use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- @endverbatim */ //gsoapopt c++,w /******************************************************************************\ * * * Definitions * * http://www.webserviceX.NET * * * \******************************************************************************/ /******************************************************************************\ * * * $CONTAINER * * std::vector * * * \******************************************************************************/ template class std::vector; /******************************************************************************\ * * * Import * * * \******************************************************************************/ #import "stl.h" // enable STL containers when used (option -s removes STL dependency) /******************************************************************************\ * * * Schema Namespaces * * * \******************************************************************************/ /* NOTE: It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings below and add the modified lines to typemap.dat to rerun wsdl2h: ns1 = "http://www.webserviceX.NET" */ #define SOAP_NAMESPACE_OF_ns1 "http://www.webserviceX.NET" //gsoap ns1 schema namespace: http://www.webserviceX.NET //gsoap ns1 schema elementForm: qualified //gsoap ns1 schema attributeForm: unqualified /******************************************************************************\ * * * Built-in Schema Types and Top-Level Elements and Attributes * * * \******************************************************************************/ /******************************************************************************\ * * * Forward Declarations * * * \******************************************************************************/ // Forward declaration of class _ns1__getAirportInformationByISOCountryCode. class _ns1__getAirportInformationByISOCountryCode; // Forward declaration of class _ns1__getAirportInformationByISOCountryCodeResponse. class _ns1__getAirportInformationByISOCountryCodeResponse; // Forward declaration of class _ns1__getAirportInformationByCityOrAirportName. class _ns1__getAirportInformationByCityOrAirportName; // Forward declaration of class _ns1__getAirportInformationByCityOrAirportNameResponse. class _ns1__getAirportInformationByCityOrAirportNameResponse; // Forward declaration of class _ns1__GetAirportInformationByCountry. class _ns1__GetAirportInformationByCountry; // Forward declaration of class _ns1__GetAirportInformationByCountryResponse. class _ns1__GetAirportInformationByCountryResponse; // Forward declaration of class _ns1__getAirportInformationByAirportCode. class _ns1__getAirportInformationByAirportCode; // Forward declaration of class _ns1__getAirportInformationByAirportCodeResponse. class _ns1__getAirportInformationByAirportCodeResponse; /******************************************************************************\ * * * Schema Types and Top-Level Elements and Attributes * * http://www.webserviceX.NET * * * \******************************************************************************/ /******************************************************************************\ * * * Schema Complex Types and Top-Level Elements * * http://www.webserviceX.NET * * * \******************************************************************************/ /// @brief Top-level root element "http://www.webserviceX.NET":getAirportInformationByISOCountryCode /// @brief "http://www.webserviceX.NET":getAirportInformationByISOCountryCode is a complexType. /// /// class _ns1__getAirportInformationByISOCountryCode operations: /// - _ns1__getAirportInformationByISOCountryCode* soap_new__ns1__getAirportInformationByISOCountryCode(soap*) allocate /// - _ns1__getAirportInformationByISOCountryCode* soap_new__ns1__getAirportInformationByISOCountryCode(soap*, int num) allocate array /// - _ns1__getAirportInformationByISOCountryCode* soap_new_req__ns1__getAirportInformationByISOCountryCode(soap*, ...) allocate, set required members /// - _ns1__getAirportInformationByISOCountryCode* soap_new_set__ns1__getAirportInformationByISOCountryCode(soap*, ...) allocate, set all public members /// - _ns1__getAirportInformationByISOCountryCode::soap_default(soap*) reset members to default /// - int soap_read__ns1__getAirportInformationByISOCountryCode(soap*, _ns1__getAirportInformationByISOCountryCode*) deserialize from a stream /// - int soap_write__ns1__getAirportInformationByISOCountryCode(soap*, _ns1__getAirportInformationByISOCountryCode*) serialize to a stream /// - _ns1__getAirportInformationByISOCountryCode* _ns1__getAirportInformationByISOCountryCode::soap_dup(soap*) returns deep copy of _ns1__getAirportInformationByISOCountryCode, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__getAirportInformationByISOCountryCode::soap_del() deep deletes _ns1__getAirportInformationByISOCountryCode data members, use only after _ns1__getAirportInformationByISOCountryCode::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__getAirportInformationByISOCountryCode { public: /// Element "CountryAbbrviation" of XSD type xs:string. std::string* CountryAbbrviation 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":getAirportInformationByISOCountryCodeResponse /// @brief "http://www.webserviceX.NET":getAirportInformationByISOCountryCodeResponse is a complexType. /// /// class _ns1__getAirportInformationByISOCountryCodeResponse operations: /// - _ns1__getAirportInformationByISOCountryCodeResponse* soap_new__ns1__getAirportInformationByISOCountryCodeResponse(soap*) allocate /// - _ns1__getAirportInformationByISOCountryCodeResponse* soap_new__ns1__getAirportInformationByISOCountryCodeResponse(soap*, int num) allocate array /// - _ns1__getAirportInformationByISOCountryCodeResponse* soap_new_req__ns1__getAirportInformationByISOCountryCodeResponse(soap*, ...) allocate, set required members /// - _ns1__getAirportInformationByISOCountryCodeResponse* soap_new_set__ns1__getAirportInformationByISOCountryCodeResponse(soap*, ...) allocate, set all public members /// - _ns1__getAirportInformationByISOCountryCodeResponse::soap_default(soap*) reset members to default /// - int soap_read__ns1__getAirportInformationByISOCountryCodeResponse(soap*, _ns1__getAirportInformationByISOCountryCodeResponse*) deserialize from a stream /// - int soap_write__ns1__getAirportInformationByISOCountryCodeResponse(soap*, _ns1__getAirportInformationByISOCountryCodeResponse*) serialize to a stream /// - _ns1__getAirportInformationByISOCountryCodeResponse* _ns1__getAirportInformationByISOCountryCodeResponse::soap_dup(soap*) returns deep copy of _ns1__getAirportInformationByISOCountryCodeResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__getAirportInformationByISOCountryCodeResponse::soap_del() deep deletes _ns1__getAirportInformationByISOCountryCodeResponse data members, use only after _ns1__getAirportInformationByISOCountryCodeResponse::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__getAirportInformationByISOCountryCodeResponse { public: /// Element "getAirportInformationByISOCountryCodeResult" of XSD type xs:string. std::string* getAirportInformationByISOCountryCodeResult 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":getAirportInformationByCityOrAirportName /// @brief "http://www.webserviceX.NET":getAirportInformationByCityOrAirportName is a complexType. /// /// class _ns1__getAirportInformationByCityOrAirportName operations: /// - _ns1__getAirportInformationByCityOrAirportName* soap_new__ns1__getAirportInformationByCityOrAirportName(soap*) allocate /// - _ns1__getAirportInformationByCityOrAirportName* soap_new__ns1__getAirportInformationByCityOrAirportName(soap*, int num) allocate array /// - _ns1__getAirportInformationByCityOrAirportName* soap_new_req__ns1__getAirportInformationByCityOrAirportName(soap*, ...) allocate, set required members /// - _ns1__getAirportInformationByCityOrAirportName* soap_new_set__ns1__getAirportInformationByCityOrAirportName(soap*, ...) allocate, set all public members /// - _ns1__getAirportInformationByCityOrAirportName::soap_default(soap*) reset members to default /// - int soap_read__ns1__getAirportInformationByCityOrAirportName(soap*, _ns1__getAirportInformationByCityOrAirportName*) deserialize from a stream /// - int soap_write__ns1__getAirportInformationByCityOrAirportName(soap*, _ns1__getAirportInformationByCityOrAirportName*) serialize to a stream /// - _ns1__getAirportInformationByCityOrAirportName* _ns1__getAirportInformationByCityOrAirportName::soap_dup(soap*) returns deep copy of _ns1__getAirportInformationByCityOrAirportName, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__getAirportInformationByCityOrAirportName::soap_del() deep deletes _ns1__getAirportInformationByCityOrAirportName data members, use only after _ns1__getAirportInformationByCityOrAirportName::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__getAirportInformationByCityOrAirportName { public: /// Element "cityOrAirportName" of XSD type xs:string. std::string* cityOrAirportName 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":getAirportInformationByCityOrAirportNameResponse /// @brief "http://www.webserviceX.NET":getAirportInformationByCityOrAirportNameResponse is a complexType. /// /// class _ns1__getAirportInformationByCityOrAirportNameResponse operations: /// - _ns1__getAirportInformationByCityOrAirportNameResponse* soap_new__ns1__getAirportInformationByCityOrAirportNameResponse(soap*) allocate /// - _ns1__getAirportInformationByCityOrAirportNameResponse* soap_new__ns1__getAirportInformationByCityOrAirportNameResponse(soap*, int num) allocate array /// - _ns1__getAirportInformationByCityOrAirportNameResponse* soap_new_req__ns1__getAirportInformationByCityOrAirportNameResponse(soap*, ...) allocate, set required members /// - _ns1__getAirportInformationByCityOrAirportNameResponse* soap_new_set__ns1__getAirportInformationByCityOrAirportNameResponse(soap*, ...) allocate, set all public members /// - _ns1__getAirportInformationByCityOrAirportNameResponse::soap_default(soap*) reset members to default /// - int soap_read__ns1__getAirportInformationByCityOrAirportNameResponse(soap*, _ns1__getAirportInformationByCityOrAirportNameResponse*) deserialize from a stream /// - int soap_write__ns1__getAirportInformationByCityOrAirportNameResponse(soap*, _ns1__getAirportInformationByCityOrAirportNameResponse*) serialize to a stream /// - _ns1__getAirportInformationByCityOrAirportNameResponse* _ns1__getAirportInformationByCityOrAirportNameResponse::soap_dup(soap*) returns deep copy of _ns1__getAirportInformationByCityOrAirportNameResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__getAirportInformationByCityOrAirportNameResponse::soap_del() deep deletes _ns1__getAirportInformationByCityOrAirportNameResponse data members, use only after _ns1__getAirportInformationByCityOrAirportNameResponse::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__getAirportInformationByCityOrAirportNameResponse { public: /// Element "getAirportInformationByCityOrAirportNameResult" of XSD type xs:string. std::string* getAirportInformationByCityOrAirportNameResult 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":GetAirportInformationByCountry /// @brief "http://www.webserviceX.NET":GetAirportInformationByCountry is a complexType. /// /// class _ns1__GetAirportInformationByCountry operations: /// - _ns1__GetAirportInformationByCountry* soap_new__ns1__GetAirportInformationByCountry(soap*) allocate /// - _ns1__GetAirportInformationByCountry* soap_new__ns1__GetAirportInformationByCountry(soap*, int num) allocate array /// - _ns1__GetAirportInformationByCountry* soap_new_req__ns1__GetAirportInformationByCountry(soap*, ...) allocate, set required members /// - _ns1__GetAirportInformationByCountry* soap_new_set__ns1__GetAirportInformationByCountry(soap*, ...) allocate, set all public members /// - _ns1__GetAirportInformationByCountry::soap_default(soap*) reset members to default /// - int soap_read__ns1__GetAirportInformationByCountry(soap*, _ns1__GetAirportInformationByCountry*) deserialize from a stream /// - int soap_write__ns1__GetAirportInformationByCountry(soap*, _ns1__GetAirportInformationByCountry*) serialize to a stream /// - _ns1__GetAirportInformationByCountry* _ns1__GetAirportInformationByCountry::soap_dup(soap*) returns deep copy of _ns1__GetAirportInformationByCountry, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__GetAirportInformationByCountry::soap_del() deep deletes _ns1__GetAirportInformationByCountry data members, use only after _ns1__GetAirportInformationByCountry::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__GetAirportInformationByCountry { public: /// Element "country" of XSD type xs:string. std::string* country 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":GetAirportInformationByCountryResponse /// @brief "http://www.webserviceX.NET":GetAirportInformationByCountryResponse is a complexType. /// /// class _ns1__GetAirportInformationByCountryResponse operations: /// - _ns1__GetAirportInformationByCountryResponse* soap_new__ns1__GetAirportInformationByCountryResponse(soap*) allocate /// - _ns1__GetAirportInformationByCountryResponse* soap_new__ns1__GetAirportInformationByCountryResponse(soap*, int num) allocate array /// - _ns1__GetAirportInformationByCountryResponse* soap_new_req__ns1__GetAirportInformationByCountryResponse(soap*, ...) allocate, set required members /// - _ns1__GetAirportInformationByCountryResponse* soap_new_set__ns1__GetAirportInformationByCountryResponse(soap*, ...) allocate, set all public members /// - _ns1__GetAirportInformationByCountryResponse::soap_default(soap*) reset members to default /// - int soap_read__ns1__GetAirportInformationByCountryResponse(soap*, _ns1__GetAirportInformationByCountryResponse*) deserialize from a stream /// - int soap_write__ns1__GetAirportInformationByCountryResponse(soap*, _ns1__GetAirportInformationByCountryResponse*) serialize to a stream /// - _ns1__GetAirportInformationByCountryResponse* _ns1__GetAirportInformationByCountryResponse::soap_dup(soap*) returns deep copy of _ns1__GetAirportInformationByCountryResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__GetAirportInformationByCountryResponse::soap_del() deep deletes _ns1__GetAirportInformationByCountryResponse data members, use only after _ns1__GetAirportInformationByCountryResponse::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__GetAirportInformationByCountryResponse { public: /// Element "GetAirportInformationByCountryResult" of XSD type xs:string. std::string* GetAirportInformationByCountryResult 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":getAirportInformationByAirportCode /// @brief "http://www.webserviceX.NET":getAirportInformationByAirportCode is a complexType. /// /// class _ns1__getAirportInformationByAirportCode operations: /// - _ns1__getAirportInformationByAirportCode* soap_new__ns1__getAirportInformationByAirportCode(soap*) allocate /// - _ns1__getAirportInformationByAirportCode* soap_new__ns1__getAirportInformationByAirportCode(soap*, int num) allocate array /// - _ns1__getAirportInformationByAirportCode* soap_new_req__ns1__getAirportInformationByAirportCode(soap*, ...) allocate, set required members /// - _ns1__getAirportInformationByAirportCode* soap_new_set__ns1__getAirportInformationByAirportCode(soap*, ...) allocate, set all public members /// - _ns1__getAirportInformationByAirportCode::soap_default(soap*) reset members to default /// - int soap_read__ns1__getAirportInformationByAirportCode(soap*, _ns1__getAirportInformationByAirportCode*) deserialize from a stream /// - int soap_write__ns1__getAirportInformationByAirportCode(soap*, _ns1__getAirportInformationByAirportCode*) serialize to a stream /// - _ns1__getAirportInformationByAirportCode* _ns1__getAirportInformationByAirportCode::soap_dup(soap*) returns deep copy of _ns1__getAirportInformationByAirportCode, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__getAirportInformationByAirportCode::soap_del() deep deletes _ns1__getAirportInformationByAirportCode data members, use only after _ns1__getAirportInformationByAirportCode::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__getAirportInformationByAirportCode { public: /// Element "airportCode" of XSD type xs:string. std::string* airportCode 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webserviceX.NET":getAirportInformationByAirportCodeResponse /// @brief "http://www.webserviceX.NET":getAirportInformationByAirportCodeResponse is a complexType. /// /// class _ns1__getAirportInformationByAirportCodeResponse operations: /// - _ns1__getAirportInformationByAirportCodeResponse* soap_new__ns1__getAirportInformationByAirportCodeResponse(soap*) allocate /// - _ns1__getAirportInformationByAirportCodeResponse* soap_new__ns1__getAirportInformationByAirportCodeResponse(soap*, int num) allocate array /// - _ns1__getAirportInformationByAirportCodeResponse* soap_new_req__ns1__getAirportInformationByAirportCodeResponse(soap*, ...) allocate, set required members /// - _ns1__getAirportInformationByAirportCodeResponse* soap_new_set__ns1__getAirportInformationByAirportCodeResponse(soap*, ...) allocate, set all public members /// - _ns1__getAirportInformationByAirportCodeResponse::soap_default(soap*) reset members to default /// - int soap_read__ns1__getAirportInformationByAirportCodeResponse(soap*, _ns1__getAirportInformationByAirportCodeResponse*) deserialize from a stream /// - int soap_write__ns1__getAirportInformationByAirportCodeResponse(soap*, _ns1__getAirportInformationByAirportCodeResponse*) serialize to a stream /// - _ns1__getAirportInformationByAirportCodeResponse* _ns1__getAirportInformationByAirportCodeResponse::soap_dup(soap*) returns deep copy of _ns1__getAirportInformationByAirportCodeResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__getAirportInformationByAirportCodeResponse::soap_del() deep deletes _ns1__getAirportInformationByAirportCodeResponse data members, use only after _ns1__getAirportInformationByAirportCodeResponse::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__getAirportInformationByAirportCodeResponse { public: /// Element "getAirportInformationByAirportCodeResult" of XSD type xs:string. std::string* getAirportInformationByAirportCodeResult 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /******************************************************************************\ * * * Additional Top-Level Elements * * http://www.webserviceX.NET * * * \******************************************************************************/ /// @brief Top-level root element "http://www.webserviceX.NET":string of XSD type xs:string. /// @note Use wsdl2h option -g to auto-generate a top-level root element declaration and processing code. /******************************************************************************\ * * * Additional Top-Level Attributes * * http://www.webserviceX.NET * * * \******************************************************************************/ /******************************************************************************\ * * * Services * * * \******************************************************************************/ // This service supports SOAP 1.2 namespaces: #import "soap12.h" //gsoap ns1 service name: airportSoap //gsoap ns1 service type: airportSoap //gsoap ns1 service port: http://www.webservicex.net/airport.asmx //gsoap ns1 service namespace: http://www.webserviceX.NET //gsoap ns1 service transport: http://schemas.xmlsoap.org/soap/http /** @mainpage Service Definitions @section Service_bindings Service Bindings - @ref airportSoap @section Service_more More Information - @ref page_notes "Notes" - @ref page_XMLDataBinding "XML Data Binding" - @ref SOAP_ENV__Header "SOAP Header Content" (when applicable) - @ref SOAP_ENV__Detail "SOAP Fault Detail Content" (when applicable) */ /** @page airportSoap Binding "airportSoap" @section airportSoap_operations Operations of Binding "airportSoap" - @ref __ns1__getAirportInformationByISOCountryCode - @ref __ns1__getAirportInformationByCityOrAirportName - @ref __ns1__GetAirportInformationByCountry - @ref __ns1__getAirportInformationByAirportCode - @ref __ns1__getAirportInformationByISOCountryCode_ - @ref __ns1__getAirportInformationByCityOrAirportName_ - @ref __ns1__GetAirportInformationByCountry_ - @ref __ns1__getAirportInformationByAirportCode_ @section airportSoap_ports Default endpoints of Binding "airportSoap" - http://www.webservicex.net/airport.asmx @note Multiple service bindings collected as one, use wsdl2h option -Nname to produce a separate service for each binding */ /******************************************************************************\ * * * Service Binding * * airportSoap * * * \******************************************************************************/ /******************************************************************************\ * * * Service Operation * * __ns1__getAirportInformationByISOCountryCode * * * \******************************************************************************/ /** Operation "__ns1__getAirportInformationByISOCountryCode" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by ISO country code - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/getAirportInformationByISOCountryCode" - Addressing input action: "http://www.webserviceX.NET/getAirportInformationByISOCountryCode" - Addressing output action: "http://www.webserviceX.NET/getAirportInformationByISOCountryCodeResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__getAirportInformationByISOCountryCode( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__getAirportInformationByISOCountryCode* ns1__getAirportInformationByISOCountryCode, // output parameters: _ns1__getAirportInformationByISOCountryCodeResponse&ns1__getAirportInformationByISOCountryCodeResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__getAirportInformationByISOCountryCode( struct soap *soap, // input parameters: _ns1__getAirportInformationByISOCountryCode* ns1__getAirportInformationByISOCountryCode, // output parameters: _ns1__getAirportInformationByISOCountryCodeResponse&ns1__getAirportInformationByISOCountryCodeResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: getAirportInformationByISOCountryCode SOAP //gsoap ns1 service method-style: getAirportInformationByISOCountryCode document //gsoap ns1 service method-encoding: getAirportInformationByISOCountryCode literal //gsoap ns1 service method-input-action: getAirportInformationByISOCountryCode http://www.webserviceX.NET/getAirportInformationByISOCountryCode //gsoap ns1 service method-output-action: getAirportInformationByISOCountryCode http://www.webserviceX.NET/getAirportInformationByISOCountryCodeResponse int __ns1__getAirportInformationByISOCountryCode( _ns1__getAirportInformationByISOCountryCode* ns1__getAirportInformationByISOCountryCode, ///< Input parameter _ns1__getAirportInformationByISOCountryCodeResponse&ns1__getAirportInformationByISOCountryCodeResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__getAirportInformationByCityOrAirportName * * * \******************************************************************************/ /** Operation "__ns1__getAirportInformationByCityOrAirportName" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by city or airport name - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/getAirportInformationByCityOrAirportName" - Addressing input action: "http://www.webserviceX.NET/getAirportInformationByCityOrAirportName" - Addressing output action: "http://www.webserviceX.NET/getAirportInformationByCityOrAirportNameResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__getAirportInformationByCityOrAirportName( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__getAirportInformationByCityOrAirportName* ns1__getAirportInformationByCityOrAirportName, // output parameters: _ns1__getAirportInformationByCityOrAirportNameResponse&ns1__getAirportInformationByCityOrAirportNameResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__getAirportInformationByCityOrAirportName( struct soap *soap, // input parameters: _ns1__getAirportInformationByCityOrAirportName* ns1__getAirportInformationByCityOrAirportName, // output parameters: _ns1__getAirportInformationByCityOrAirportNameResponse&ns1__getAirportInformationByCityOrAirportNameResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: getAirportInformationByCityOrAirportName SOAP //gsoap ns1 service method-style: getAirportInformationByCityOrAirportName document //gsoap ns1 service method-encoding: getAirportInformationByCityOrAirportName literal //gsoap ns1 service method-input-action: getAirportInformationByCityOrAirportName http://www.webserviceX.NET/getAirportInformationByCityOrAirportName //gsoap ns1 service method-output-action: getAirportInformationByCityOrAirportName http://www.webserviceX.NET/getAirportInformationByCityOrAirportNameResponse int __ns1__getAirportInformationByCityOrAirportName( _ns1__getAirportInformationByCityOrAirportName* ns1__getAirportInformationByCityOrAirportName, ///< Input parameter _ns1__getAirportInformationByCityOrAirportNameResponse&ns1__getAirportInformationByCityOrAirportNameResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__GetAirportInformationByCountry * * * \******************************************************************************/ /** Operation "__ns1__GetAirportInformationByCountry" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by country name - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/GetAirportInformationByCountry" - Addressing input action: "http://www.webserviceX.NET/GetAirportInformationByCountry" - Addressing output action: "http://www.webserviceX.NET/GetAirportInformationByCountryResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__GetAirportInformationByCountry( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__GetAirportInformationByCountry* ns1__GetAirportInformationByCountry, // output parameters: _ns1__GetAirportInformationByCountryResponse&ns1__GetAirportInformationByCountryResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__GetAirportInformationByCountry( struct soap *soap, // input parameters: _ns1__GetAirportInformationByCountry* ns1__GetAirportInformationByCountry, // output parameters: _ns1__GetAirportInformationByCountryResponse&ns1__GetAirportInformationByCountryResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: GetAirportInformationByCountry SOAP //gsoap ns1 service method-style: GetAirportInformationByCountry document //gsoap ns1 service method-encoding: GetAirportInformationByCountry literal //gsoap ns1 service method-input-action: GetAirportInformationByCountry http://www.webserviceX.NET/GetAirportInformationByCountry //gsoap ns1 service method-output-action: GetAirportInformationByCountry http://www.webserviceX.NET/GetAirportInformationByCountryResponse int __ns1__GetAirportInformationByCountry( _ns1__GetAirportInformationByCountry* ns1__GetAirportInformationByCountry, ///< Input parameter _ns1__GetAirportInformationByCountryResponse&ns1__GetAirportInformationByCountryResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__getAirportInformationByAirportCode * * * \******************************************************************************/ /** Operation "__ns1__getAirportInformationByAirportCode" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by airport code - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/getAirportInformationByAirportCode" - Addressing input action: "http://www.webserviceX.NET/getAirportInformationByAirportCode" - Addressing output action: "http://www.webserviceX.NET/getAirportInformationByAirportCodeResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__getAirportInformationByAirportCode( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__getAirportInformationByAirportCode* ns1__getAirportInformationByAirportCode, // output parameters: _ns1__getAirportInformationByAirportCodeResponse&ns1__getAirportInformationByAirportCodeResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__getAirportInformationByAirportCode( struct soap *soap, // input parameters: _ns1__getAirportInformationByAirportCode* ns1__getAirportInformationByAirportCode, // output parameters: _ns1__getAirportInformationByAirportCodeResponse&ns1__getAirportInformationByAirportCodeResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: getAirportInformationByAirportCode SOAP //gsoap ns1 service method-style: getAirportInformationByAirportCode document //gsoap ns1 service method-encoding: getAirportInformationByAirportCode literal //gsoap ns1 service method-input-action: getAirportInformationByAirportCode http://www.webserviceX.NET/getAirportInformationByAirportCode //gsoap ns1 service method-output-action: getAirportInformationByAirportCode http://www.webserviceX.NET/getAirportInformationByAirportCodeResponse int __ns1__getAirportInformationByAirportCode( _ns1__getAirportInformationByAirportCode* ns1__getAirportInformationByAirportCode, ///< Input parameter _ns1__getAirportInformationByAirportCodeResponse&ns1__getAirportInformationByAirportCodeResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__getAirportInformationByISOCountryCode_ * * * \******************************************************************************/ /** Operation "__ns1__getAirportInformationByISOCountryCode_" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by ISO country code - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/getAirportInformationByISOCountryCode" - Addressing input action: "http://www.webserviceX.NET/getAirportInformationByISOCountryCode" - Addressing output action: "http://www.webserviceX.NET/getAirportInformationByISOCountryCodeResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__getAirportInformationByISOCountryCode_( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__getAirportInformationByISOCountryCode* ns1__getAirportInformationByISOCountryCode, // output parameters: _ns1__getAirportInformationByISOCountryCodeResponse&ns1__getAirportInformationByISOCountryCodeResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__getAirportInformationByISOCountryCode_( struct soap *soap, // input parameters: _ns1__getAirportInformationByISOCountryCode* ns1__getAirportInformationByISOCountryCode, // output parameters: _ns1__getAirportInformationByISOCountryCodeResponse&ns1__getAirportInformationByISOCountryCodeResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: getAirportInformationByISOCountryCode_ SOAP //gsoap ns1 service method-style: getAirportInformationByISOCountryCode_ document //gsoap ns1 service method-encoding: getAirportInformationByISOCountryCode_ literal //gsoap ns1 service method-input-action: getAirportInformationByISOCountryCode_ http://www.webserviceX.NET/getAirportInformationByISOCountryCode //gsoap ns1 service method-output-action: getAirportInformationByISOCountryCode_ http://www.webserviceX.NET/getAirportInformationByISOCountryCodeResponse int __ns1__getAirportInformationByISOCountryCode_( _ns1__getAirportInformationByISOCountryCode* ns1__getAirportInformationByISOCountryCode, ///< Input parameter _ns1__getAirportInformationByISOCountryCodeResponse&ns1__getAirportInformationByISOCountryCodeResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__getAirportInformationByCityOrAirportName_ * * * \******************************************************************************/ /** Operation "__ns1__getAirportInformationByCityOrAirportName_" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by city or airport name - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/getAirportInformationByCityOrAirportName" - Addressing input action: "http://www.webserviceX.NET/getAirportInformationByCityOrAirportName" - Addressing output action: "http://www.webserviceX.NET/getAirportInformationByCityOrAirportNameResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__getAirportInformationByCityOrAirportName_( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__getAirportInformationByCityOrAirportName* ns1__getAirportInformationByCityOrAirportName, // output parameters: _ns1__getAirportInformationByCityOrAirportNameResponse&ns1__getAirportInformationByCityOrAirportNameResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__getAirportInformationByCityOrAirportName_( struct soap *soap, // input parameters: _ns1__getAirportInformationByCityOrAirportName* ns1__getAirportInformationByCityOrAirportName, // output parameters: _ns1__getAirportInformationByCityOrAirportNameResponse&ns1__getAirportInformationByCityOrAirportNameResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: getAirportInformationByCityOrAirportName_ SOAP //gsoap ns1 service method-style: getAirportInformationByCityOrAirportName_ document //gsoap ns1 service method-encoding: getAirportInformationByCityOrAirportName_ literal //gsoap ns1 service method-input-action: getAirportInformationByCityOrAirportName_ http://www.webserviceX.NET/getAirportInformationByCityOrAirportName //gsoap ns1 service method-output-action: getAirportInformationByCityOrAirportName_ http://www.webserviceX.NET/getAirportInformationByCityOrAirportNameResponse int __ns1__getAirportInformationByCityOrAirportName_( _ns1__getAirportInformationByCityOrAirportName* ns1__getAirportInformationByCityOrAirportName, ///< Input parameter _ns1__getAirportInformationByCityOrAirportNameResponse&ns1__getAirportInformationByCityOrAirportNameResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__GetAirportInformationByCountry_ * * * \******************************************************************************/ /** Operation "__ns1__GetAirportInformationByCountry_" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by country name - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/GetAirportInformationByCountry" - Addressing input action: "http://www.webserviceX.NET/GetAirportInformationByCountry" - Addressing output action: "http://www.webserviceX.NET/GetAirportInformationByCountryResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__GetAirportInformationByCountry_( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__GetAirportInformationByCountry* ns1__GetAirportInformationByCountry, // output parameters: _ns1__GetAirportInformationByCountryResponse&ns1__GetAirportInformationByCountryResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__GetAirportInformationByCountry_( struct soap *soap, // input parameters: _ns1__GetAirportInformationByCountry* ns1__GetAirportInformationByCountry, // output parameters: _ns1__GetAirportInformationByCountryResponse&ns1__GetAirportInformationByCountryResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: GetAirportInformationByCountry_ SOAP //gsoap ns1 service method-style: GetAirportInformationByCountry_ document //gsoap ns1 service method-encoding: GetAirportInformationByCountry_ literal //gsoap ns1 service method-input-action: GetAirportInformationByCountry_ http://www.webserviceX.NET/GetAirportInformationByCountry //gsoap ns1 service method-output-action: GetAirportInformationByCountry_ http://www.webserviceX.NET/GetAirportInformationByCountryResponse int __ns1__GetAirportInformationByCountry_( _ns1__GetAirportInformationByCountry* ns1__GetAirportInformationByCountry, ///< Input parameter _ns1__GetAirportInformationByCountryResponse&ns1__GetAirportInformationByCountryResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__getAirportInformationByAirportCode_ * * * \******************************************************************************/ /** Operation "__ns1__getAirportInformationByAirportCode_" of service binding "airportSoap". Get Airport Code, CityOrAirport Name, Country, Country Abbrv, CountryCode,GMT Offset Runway Length in Feet, Runway Elevation in Feet,Latitude in Degree,Latitude in Minute Latitude in Second,Latitude in N/S, Longitude in Degree, Longitude in Minute, Longitude in Seconds and longitude E/W by airport code - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/airport.asmx - Default SOAP action or REST location path: - "http://www.webserviceX.NET/getAirportInformationByAirportCode" - Addressing input action: "http://www.webserviceX.NET/getAirportInformationByAirportCode" - Addressing output action: "http://www.webserviceX.NET/getAirportInformationByAirportCodeResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__getAirportInformationByAirportCode_( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__getAirportInformationByAirportCode* ns1__getAirportInformationByAirportCode, // output parameters: _ns1__getAirportInformationByAirportCodeResponse&ns1__getAirportInformationByAirportCodeResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__getAirportInformationByAirportCode_( struct soap *soap, // input parameters: _ns1__getAirportInformationByAirportCode* ns1__getAirportInformationByAirportCode, // output parameters: _ns1__getAirportInformationByAirportCodeResponse&ns1__getAirportInformationByAirportCodeResponse ); @endcode C++ proxy class (defined in soapairportSoapProxy.h generated with soapcpp2): @code class airportSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapairportSoapService.h generated with soapcpp2): @code class airportSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: getAirportInformationByAirportCode_ SOAP //gsoap ns1 service method-style: getAirportInformationByAirportCode_ document //gsoap ns1 service method-encoding: getAirportInformationByAirportCode_ literal //gsoap ns1 service method-input-action: getAirportInformationByAirportCode_ http://www.webserviceX.NET/getAirportInformationByAirportCode //gsoap ns1 service method-output-action: getAirportInformationByAirportCode_ http://www.webserviceX.NET/getAirportInformationByAirportCodeResponse int __ns1__getAirportInformationByAirportCode_( _ns1__getAirportInformationByAirportCode* ns1__getAirportInformationByAirportCode, ///< Input parameter _ns1__getAirportInformationByAirportCodeResponse&ns1__getAirportInformationByAirportCodeResponse ///< Output parameter ); /** @page airportSoap Binding "airportSoap" @section airportSoap_policy_enablers Policy Enablers of Binding "airportSoap" None specified. */ /******************************************************************************\ * * * XML Data Binding * * * \******************************************************************************/ /** @page page_XMLDataBinding XML Data Binding SOAP/XML services use data bindings contractually bound by WSDL and auto- generated by wsdl2h and soapcpp2 (see Service Bindings). Plain data bindings are adopted from XML schemas as part of the WSDL types section or when running wsdl2h on a set of schemas to produce non-SOAP-based XML data bindings. The following readers and writers are C/C++ data type (de)serializers auto- generated by wsdl2h and soapcpp2. Run soapcpp2 on this file to generate the (de)serialization code, which is stored in soapC.c[pp]. Include "soapH.h" in your code to import these data type and function declarations. Only use the soapcpp2-generated files in your project build. Do not include the wsdl2h- generated .h file in your code. Data can be read and deserialized from: - an int file descriptor, using soap->recvfd = fd - a socket, using soap->socket = (int)... - a C++ stream (istream, stringstream), using soap->is = (istream*)... - a C string, using soap->is = (const char*)... - any input, using the soap->frecv() callback Data can be serialized and written to: - an int file descriptor, using soap->sendfd = (int)... - a socket, using soap->socket = (int)... - a C++ stream (ostream, stringstream), using soap->os = (ostream*)... - a C string, using soap->os = (const char**)... - any output, using the soap->fsend() callback The following options are available for (de)serialization control: - soap->encodingStyle = NULL; to remove SOAP 1.1/1.2 encodingStyle - soap_mode(soap, SOAP_XML_TREE); XML without id-ref (no cycles!) - soap_mode(soap, SOAP_XML_GRAPH); XML with id-ref (including cycles) - soap_set_namespaces(soap, struct Namespace *nsmap); to set xmlns bindings @section ns1 Top-level root elements of schema "http://www.webserviceX.NET" - @ref _ns1__getAirportInformationByISOCountryCode @code // Reader (returns SOAP_OK on success): soap_read__ns1__getAirportInformationByISOCountryCode(struct soap*, _ns1__getAirportInformationByISOCountryCode*); // Writer (returns SOAP_OK on success): soap_write__ns1__getAirportInformationByISOCountryCode(struct soap*, _ns1__getAirportInformationByISOCountryCode*); @endcode - @ref _ns1__getAirportInformationByISOCountryCodeResponse @code // Reader (returns SOAP_OK on success): soap_read__ns1__getAirportInformationByISOCountryCodeResponse(struct soap*, _ns1__getAirportInformationByISOCountryCodeResponse*); // Writer (returns SOAP_OK on success): soap_write__ns1__getAirportInformationByISOCountryCodeResponse(struct soap*, _ns1__getAirportInformationByISOCountryCodeResponse*); @endcode - @ref _ns1__getAirportInformationByCityOrAirportName @code // Reader (returns SOAP_OK on success): soap_read__ns1__getAirportInformationByCityOrAirportName(struct soap*, _ns1__getAirportInformationByCityOrAirportName*); // Writer (returns SOAP_OK on success): soap_write__ns1__getAirportInformationByCityOrAirportName(struct soap*, _ns1__getAirportInformationByCityOrAirportName*); @endcode - @ref _ns1__getAirportInformationByCityOrAirportNameResponse @code // Reader (returns SOAP_OK on success): soap_read__ns1__getAirportInformationByCityOrAirportNameResponse(struct soap*, _ns1__getAirportInformationByCityOrAirportNameResponse*); // Writer (returns SOAP_OK on success): soap_write__ns1__getAirportInformationByCityOrAirportNameResponse(struct soap*, _ns1__getAirportInformationByCityOrAirportNameResponse*); @endcode - @ref _ns1__GetAirportInformationByCountry @code // Reader (returns SOAP_OK on success): soap_read__ns1__GetAirportInformationByCountry(struct soap*, _ns1__GetAirportInformationByCountry*); // Writer (returns SOAP_OK on success): soap_write__ns1__GetAirportInformationByCountry(struct soap*, _ns1__GetAirportInformationByCountry*); @endcode - @ref _ns1__GetAirportInformationByCountryResponse @code // Reader (returns SOAP_OK on success): soap_read__ns1__GetAirportInformationByCountryResponse(struct soap*, _ns1__GetAirportInformationByCountryResponse*); // Writer (returns SOAP_OK on success): soap_write__ns1__GetAirportInformationByCountryResponse(struct soap*, _ns1__GetAirportInformationByCountryResponse*); @endcode - @ref _ns1__getAirportInformationByAirportCode @code // Reader (returns SOAP_OK on success): soap_read__ns1__getAirportInformationByAirportCode(struct soap*, _ns1__getAirportInformationByAirportCode*); // Writer (returns SOAP_OK on success): soap_write__ns1__getAirportInformationByAirportCode(struct soap*, _ns1__getAirportInformationByAirportCode*); @endcode - @ref _ns1__getAirportInformationByAirportCodeResponse @code // Reader (returns SOAP_OK on success): soap_read__ns1__getAirportInformationByAirportCodeResponse(struct soap*, _ns1__getAirportInformationByAirportCodeResponse*); // Writer (returns SOAP_OK on success): soap_write__ns1__getAirportInformationByAirportCodeResponse(struct soap*, _ns1__getAirportInformationByAirportCodeResponse*); @endcode - (use wsdl2h option -g to auto-generate type _ns1__string) */ /* End of airport.h */ gsoap-2.8.60/gsoap/ios_plugin/examples/calc/0000755000175000017500000000000013227173555020273 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/calc/.DS_Store0000644000175000017500000001400413227173555021755 0ustar ellertellertBud1%calcdsclbooldsclbool  @ @ @ @ E%DSDB` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/0000755000175000017500000000000013227173555021175 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/.DS_Store0000644000175000017500000001400413227173555022657 0ustar ellertellertBud1 lg1Scompcalclg1ScompVcalcmoDDdutcӮcalcmodDdutcӮcalcph1ScompCalc.xcodeprojlg1Scomp?Calc.xcodeprojmoDDdutcBCalc.xcodeprojmodDdutcBCalc.xcodeprojph1Scomp  @ @ @ @ E DSDB ` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/0000755000175000017500000000000013227173555022077 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/.DS_Store0000644000175000017500000001400413227173555023561 0ustar ellertellertBud1 ts.xcaAssets.xcassetslg1ScompIAssets.xcassetsmoDDdutcөAssets.xcassetsmodDdutcөAssets.xcassetsph1Scomp Base.lprojlg1Scomp Base.lprojmoDDdutcӭ}& Base.lprojmodDdutcӭ}& Base.lprojph1Scomp0  @ @ @ @ E DSDB ` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/main.mm0000644000175000017500000000041013227173555023351 0ustar ellertellert// // main.m // #import #include "AppDelegate.h" #include "../../calc.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); return retVal; } } gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/ViewController.mm0000644000175000017500000000432513227173555025414 0ustar ellertellert// //ViewController.mm // #import "ViewController.h" #import "soapStub.h" #import "gsoapios.h" @implementation ViewController @synthesize op1; // Set or get opreand1 @synthesize op2; // Set or get opreand1 - (IBAction)buttonPressed:(id)sender { } - (IBAction) buttonPressed { double x = [op1.text doubleValue]; double y = [op2.text doubleValue]; struct soap *soap = soap_new1(SOAP_IO_DEFAULT|SOAP_IO_KEEPALIVE|SOAP_XML_INDENT|SOAP_XML_STRICT); if (soap_register_plugin(soap, soap_ios) == SOAP_OK) { // Specify the timeout interval (optional) to 45 seconds instead of // the default 60 seconds soap_ios_settimeoutinterval(soap, 45.0); double result; // Call Web service operation add int status = soap_call_ns2__add(soap, NULL, NULL,x, y, result); soap_free_temp(soap); // Cleanup temporary resources // Check soap response status if (status == SOAP_OK) { NSString *resultString; NSString *titleString; resultString = [NSString stringWithFormat:@"%f",result]; titleString = [NSString stringWithFormat:@"%f + %f =",x, y]; // Show the result in an alert UIAlertController * alert = [UIAlertController alertControllerWithTitle:titleString message:resultString preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}]; [alert addAction: cancelButton]; [self presentViewController:alert animated:YES completion:nil]; } else { // Caveat: Better to extract the error message and show it using an alert soap_print_fault(soap,stderr); // Print soap error in console } } soap_destroy(soap); soap_end(soap); soap_free(soap); } @end gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/AppDelegate.mm0000644000175000017500000000365713227173555024620 0ustar ellertellert// //AppDelegate.mm // #import "AppDelegate.h" #import "ViewController.h" @implementation AppDelegate @synthesize window; @synthesize viewController; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. return YES; } - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } @end gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Assets.xcassets/0000755000175000017500000000000013227173555025175 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Assets.xcassets/AppIcon.appiconset/0000755000175000017500000000000013227173555030672 5ustar ellertellert././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Assets.xcassets/AppIcon.appiconset/Contents.jsongsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Assets.xcassets/AppIcon.appiconset/Contents.js0000644000175000017500000000111113227173555033017 0ustar ellertellert{ "images" : [ { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/ViewController.h0000644000175000017500000000051113227173555025223 0ustar ellertellert// // File: ViewController.h // #import @interface ViewController : UIViewController { UITextField *op1; // operand1 UITextField *op2; // operand2 } @property (nonatomic, retain) IBOutlet UITextField *op1; @property (nonatomic, retain) IBOutlet UITextField *op2; - (IBAction) buttonPressed; @end gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Base.lproj/0000755000175000017500000000000013227173555024076 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Base.lproj/Main.storyboard0000644000175000017500000001522213227173555027076 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Base.lproj/LaunchScreen.storyboard0000644000175000017500000000320113227173555030556 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/Info.plist0000644000175000017500000000245413227173555024054 0ustar ellertellert NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc/AppDelegate.h0000644000175000017500000000050213227173555024420 0ustar ellertellert// //AppDelegate.h // #import @class ViewController; @interface AppDelegate : UIResponder { UIWindow *window; ViewController *viewController; } @property (strong, nonatomic) UIWindow *window; @property (nonatomic, retain) IBOutlet ViewController *viewController; @end gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/0000755000175000017500000000000013227173555024033 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/0000755000175000017500000000000013227173555030031 5ustar ellertellert././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/contents.xcworkspacedatagsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/contents.xcworks0000644000175000017500000000022513227173555033307 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/xcuserdata/0000755000175000017500000000000013227173555032174 5ustar ellertellert././@LongLink0000644000000000000000000000017300000000000011604 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/xcuserdata/bethanysanders.xcuserdatad/gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/xcuserdata/betha0000755000175000017500000000000013227173555033200 5ustar ellertellert././@LongLink0000644000000000000000000000023100000000000011577 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/xcuserdata/bethanysanders.xcuserdatad/UserInterfaceState.xcuserstategsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/project.xcworkspace/xcuserdata/betha0000644000175000017500000014744013227173555033214 0ustar ellertellertbplist00X$versionX$objectsY$archiverT$top*+,-./01237=QRSTUVWXYopqrstuvwx!"'/019:;?EJRST\]ghijz{|}~ !"#$%&'()*+,  !"&'+,0156:;?@DEIJNOSTXY]^bcghlmqrvw#$%&234@ABCDEFGSTUVWXYZfghtuvw !-./;<=IJKLXYZfghiuvw&'(456<@AIJKLSZ[\]dels )*+,-.89:;EFGHRSTU_`ablmnopqr|}~ !"#$./019=>BCQRSTUVZ[\bcdpqrstuy}         ! $ ( , 6 @ A B C G H I N Q U _ ` a b f i j t x y ~             " & , - . 8 9 : ; < = A E J K W X Y Z [ a f n o p q y z               / 3 4 8 9 = > B C G H L M Q R V W _ ` a b c k l t u }       " & ' + , 0 1 5 6 : ; ? @ D E I J \ ] ^ _ ` a b c d h           $ 6 7 8 9 : ; < = C G K Q R Z [ ^ c f i o p t '()*+,-237ABIOPTXY]abcghnt|  $()-./378=BHIMQRSW\`fgmw{  !"#$(,-7;MYZ[\bhlmnrvz{|U$null WNS.keysZNS.objectsV$class 8_$A6F45CC1-51E1-4478-B40B-C3F150F5F66A_IDEWorkspaceDocument_$10CD2DED-2F61-414C-95F4-BC537FDF4FF8 !)  "#$ "(  4_IDEWindowTabBarIsVisible^IDEWindowFrame_!IDEOrderedWorkspaceTabControllers_,IDEWorkspaceWindowControllerUniqueIdentifier_IDEActiveWorkspaceTabController_IDEWindowToolbarIsVisible_>IDEWorkspaceTabController_A7B97E09-4A19-4D28-83E2-5533C554FDA8_{{9, 89}, {800, 788}} 46 89:;Z$classnameX$classesWNSArray:G)?@ABCDEFH"JKL"NO ^e 54]IDEEditorArea_IDEShowNavigator_-IDEWorkspaceTabControllerUtilityAreaSplitView_IDENavigatorArea_,IDEWorkspaceTabControllerDesignAreaSplitView_IDEShowUtilities^IDETabFilePath_AssistantEditorsLayout Zd)[\]^_`abc !"#efgOOjkl"$*955:T] 4ZlayoutTree_IDEEditorMode_Standard]IDEShowEditor_VersionEditorSubmodeZEditorMode_IDEDefaultDebugArea_DebuggerSplitView_ DefaultPersistentRepresentations_ShowDebuggerAreayz{ |}~_rootLayoutTreeNode_geniusEditorContextNode_primaryEditorContextNode&%) }|}XchildrenVparent[contentType_ documentArchivableRepresentation[orientation&( }}'( 6~%89_'IDEWorkspaceTabControllerLayoutTreeNode<_'IDEWorkspaceTabControllerLayoutTreeNode89_#IDEWorkspaceTabControllerLayoutTree<_#IDEWorkspaceTabControllerLayoutTree )+,4_%EditorLayout_PersistentRepresentation )-.4TMain /01O2568_)EditorLayout_StateSavingStateDictionaries_EditorLayout_Selected_EditorLayout_Geometry 63 )489_NSMutableDictionary<\NSDictionary 6ƀ7_{{0, 0}, {800, 766}}89ʢ< )р;<=>ր?EQR4XLeftView_IDESplitViewDebugAreaZLayoutModeYRightView )@ABC"Og 5D94_VariablesViewShowsRawValues_VariablesViewSelectedScope_ VariablesViewViewSortDescriptors_VariablesViewShowsType 6 )FG4_DVTSplitViewItems HMP IJKL8]DVTIdentifier_DVTViewMagnitudeXLeftView#@y  IJ  NO8YRightView#@x89^NSMutableArray:< )SO54_ConsoleFilterMode )UV4_DVTSplitViewItems #$%WZP (+IJ,-XY8YIDEEditor#@i` 25IJ67[\8_IDEDebuggerArea#@\ <=)4 @B)FC_4 FGH`cP KNIJOPab8P#@ UXIJOZad8#@= ^b)_`afghcdeist4_Xcode.IDEKit.Navigator.Logs_SelectedNavigator_ Xcode.IDEKit.Navigator.Structure kr)lmnopqjklmno"t"v"x p q r4_ IDELogNavigatorBotFilterStateKey_collapsedIdentifiers_IDELogNavigatorGroupByKey_expandedIdentifiers_#IDELogNavigatorRecentFilterStateKey_"IDELogNavigatorVisibleRectStateKey P P_{{0, 0}, {259, 753}}_ Xcode.IDEKit.Navigator.Structure )uvwxyz""{~ 4_IDEExpandedItemsTree^IDEVisibleRect_IDESelectedTree_!IDERecentDocumentFilteringEnabled_,IDENavigatorExpandedItemsBeforeFilteringTree_IDESCMStatusFilteringEnabled |}8_IDEValuesAsTree )4_{{0, 0}, {0, 0}} |8 )4 |8 )4 )F€4 ȀP IJЀ8_IDENavigatorArea#@p@ IJڀ8]IDEEditorArea#@` IJЀ8_IDEUtilitiesArea_=/Users/bethanysanders/Documents/work/calc/calc/Calc.xcodeproj )񀏀g9ADRr4_BreakpointsActivated_DefaultEditorStatesForURLs\ActiveScheme_ActiveRunDestination_DefaultEditorFrameSizeForURLs_0LastCompletedPersistentSchemeBasedActivityReport_DocumentWindows_RecentEditorDocumentURLs )     ǁׁOhсہ34_&Xcode.IDEKit.EditorDocument.SourceCode_0Xcode.IDEKit.EditorDocument.ViewDebuggerDocument_6Xcode.IDEKit.EditorDocument.SourceCodeComparisonEditor_1Xcode.IDEKit.EditorDocument.SourceCode-from-Plist_7Xcode.IDEKit.InterfaceBuilder.EditorDocument.Storyboard_9Xcode.IDEKit.EditorDocument.SourceCode-from-Xcode3Project_9Xcode.IDEKit.EditorDocument.SourceCode-from-Asset-Catalog_(Xcode.IDEKit.EditorDocument.AssetCatalog_'Xcode.IDEKit.EditorDocument.PlistEditor_IDEQuickLookEditor.Editor_7Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project_.Xcode.IDEKit.EditorDocument.SourceCode-from-IB -\)../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[€ĀƀȀʀ̀΀ЀҀԀր؀ڀ܀ހ.]^_`abcdefghijklmnopqrstuvwxyz{|}~ !$'*-48;CKNRUX`hknvz}Ā4 }WNS.base[NS.relative_Efile:///Users/bethanysanders/Documents/work/calc/calc/calc/Info.plist89UNSURL< }_Wfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.m }_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb1712c6ea0 }_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=7772002701374407618&stackFrameRef=7fb15543f310 }_:file:///Users/bethanysanders/Documents/work/calc/soapC.cpp }_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=7772002701374407618&stackFrameRef=7fb155c32680 }_Afile:///Users/bethanysanders/Documents/work/calc/calc/calc/main.m }_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb155c63bf0 }_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.m }_Bfile:///Users/bethanysanders/Documents/work/calc/calc/calc/main.mm }ƀ_Hfile:///Users/bethanysanders/Documents/work/calc/calc/calc/calc_Prefix.h }ˀ_;file:///Users/bethanysanders/Documents/work/calc/calc.nsmap }Ѐ_=file:///Users/bethanysanders/Documents/work/calc/calc.nsmap.h }Հ_file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIButton.h }ڀ_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb1559cb3b0 }߀_Pfile:///Users/bethanysanders/Documents/work/calc/calc/calcUITests/calcUITests.mm }_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=7772002701374407618&stackFrameRef=7fb152a54250 }_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calcTests/calcTests.m }_?file:///Users/bethanysanders/Documents/work/calc/soapClient.cpp }_Cfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.cpp }_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=9179579258811452792&stackFrameRef=7fb155845c80 }_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb171271fb0 }_Efile:///Users/bethanysanders/Documents/work/calc/calc/calc_Prefix.pch }_Ifile:///Users/bethanysanders/Documents/work/calc/calc/calc/AppDelegate.mm } _Ofile:///Users/bethanysanders/Documents/work/calc/calc/calcUITests/calcUITests.m }_8file:///Users/bethanysanders/Documents/work/calc/soapH.h }_Cfile:///Users/bethanysanders/Documents/work/calc/calc/calc/Header.h }_file:///Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h } _~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb155923870 }%_Afile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.h }*_Lfile:///Users/bethanysanders/Documents/work/calc/calc/calcTests/calcTests.mm }/_Lfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.mm }4_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb15547e220 }9_Xfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.mm }>_Jfile:///Users/bethanysanders/Documents/work/calc/calc/calc/calc_Prefix.pch }C_Hfile:///Users/bethanysanders/Documents/work/calc/calc/calc/AppDelegate.h }H_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb153d23d00 }M_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb154345e10 }R_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.h }W_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=7772002701374407618&stackFrameRef=7fb15545e840 }\_Hfile:///Users/bethanysanders/Documents/work/calc/calc/calc/AppDelegate.m }a_~x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=14783566117410356837&stackFrameRef=7fb17127e610 }f_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=7772002701374407618&stackFrameRef=7fb15434cd70 }k_Wfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.h }p_}x-xcode-disassembly://stack_frame?launchSessionRef=7fb15493d7a0&stackFrameHash=7772002701374407618&stackFrameRef=7fb155478380 }u_;file:///Users/bethanysanders/Documents/work/calc/soapStub.h x})yz{|~"  4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A7X{0, 997}X{289, 0} )   " 4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A41b]{23123, 1713}Z{24277, 0} )yz{|" 4#A8 G<\{2170, 2396}V{0, 0} )yz{|" 4#A8 ]{10109, 2628} )"ā  4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A>,]{76947, 1854}Z{83297, 1} )yz{|""# 4#A8 Ņ\{3825, 3144} )   "%& 4#A41nhX{0, 439} )yz{|"() 4#A8 ,v\{2170, 2396} )   "+, 4#A41zdX{0, 499}  )  ./01  "23 4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A9_ eX{0, 438} )   "!56 74#A4;xX{0, 312}V{2, 0} ',)  ./01-."9: 4#A9_X{0, 562} 5:)6789<=>?;<">@A B4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A4(>X{0, 562}X{562, 0} HM)IJKLDEFGNO"QHI J4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A60FY{0, 2395}X{786, 0} [`)yz{|ab"LM 4#A8 `!\{2170, 2472} in)  ./01op"rOP Q4#A9R,oY{0, 1202}X{690, 0} x})yz{|~"ST 4#A8 z\{3825, 3181} )  ./01"VW 4#A9RX{0, 895} )YZ[\"]^ _4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#AG:D[{776, 2093}Z{1070, 25} )abcd"ef g4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A=[o]{486518, 812}[{495345, 0} )yz{|"ij 4#A8 $XY{0, 2703} )yz{|"lm 4#A8 m\{2170, 2396} )ځopqr"߁st u4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A5=:$ݔX{0, 313}Y{247, 57} )  ./01"wx y4#A9q%/Y{0, 2133}X{218, 0} )  ./01"{| 4#A9RL Y{0, 1202}  )abcd  "~ 4#A=QOmYY{0, 1058} )   " 4#A4:O<X{0, 192} "')   ()" 4#A4;Z]{20742, 1594} 05)yz{|67" 4#A8 b_\{3634, 2471} >C)abcdDE"G 4#A=\\&^{101856, 1543}[{102593, 0} MR)  ./01ST" 4#A9RX{0, 895} [`)ab"d 4#A>'WY{0, 2133}Y{1152, 0} jo)yz{|pq" 4#A8 J\{4287, 2526} x})abcd~" 4#A=dKv]{32802, 1804}Z{35572, 0} )ځopqr" 4#A5; [X{0, 312}X{0, 312} )  ./01" 4#A9b^;X{0, 438}X{437, 0} )yz{|" 4#A8 $B\{2170, 2396} )yz{|" 4#A8 \{2170, 2396} )abcd"ʁ 4#A=S6*X{0, 323}X{173, 0} )yz{|" 4#A8 *s\{7943, 2828} )   " 4#A41utlY{0, 2036} )yz{|" 4#A8 \{4287, 2526} )yz{|" 4#A8 Ϟ|\{3825, 3144}  )    " 4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A=to5\{4401, 1913}Y{4267, 0}  )yz{|!""À 4#A8 \{7943, 2779} ).)abcd/0"Łƀ 4#A=QKs\{2442, 1233} 79)8ȡ:ʀ4 }?_"x-xcode-debug-views://7faf576f6d10 BE)CDˁ̢FǴ΀4TzoomXrotation#?!d, M6NOPQρӁՁր T6UVVXЁссҀ#?##?<-AŐ ^6VUVbсЁсԀ#?7X[ f6VVUVссЁр m6VVVUсссЀ t)uvYxDzKT}~9؁ڀ܀ҁހꀼ  '.5;?BEHK4 }_?file:///Users/bethanysanders/Documents/work/calc/soapClient.cpp }_Ifile:///Users/bethanysanders/Documents/work/calc/calc/calc/AppDelegate.mm }_:file:///Users/bethanysanders/Documents/work/calc/soapC.cpp }_;file:///Users/bethanysanders/Documents/work/calc/soapStub.h }_8file:///Users/bethanysanders/Documents/work/calc/soapH.h }_Bfile:///Users/bethanysanders/Documents/work/calc/calc/calc/main.mm }_}x-xcode-disassembly://stack_frame?launchSessionRef=7ffede564f40&stackFrameHash=7672746153683991403&stackFrameRef=7ffeddac9180 }À_Xfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.mm }Ȁ_Ufile:///Users/bethanysanders/Documents/work/calc/calc/calc/Base.lproj/Main.storyboard }̀_Hfile:///Users/bethanysanders/Documents/work/calc/calc/calc/AppDelegate.h }Ҁ_}x-xcode-disassembly://stack_frame?launchSessionRef=7ffed6ae02d0&stackFrameHash=6318885899319152757&stackFrameRef=7ffeab7bb1e0 }׀_}x-xcode-disassembly://stack_frame?launchSessionRef=7ffed6ae02d0&stackFrameHash=6223843911395422681&stackFrameRef=7ffee1c4f4a0 }܀_Cfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.cpp }_Lfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.mm )" 4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A[u&(gY{0, 2234}X{471, 0} )4W{23, 0}#A[yHZY{0, 1967} )  4_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange#A[H\{6301, 1761} ) 4X{129, 0}#A[…JY{0, 1801}  $)!"#   &'4_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange#AYX{0, 313} /3)4564X{613, 0}#A[‰Y{0, 2450} <@)ABC4W{15, 0}#A[’ʣY{0, 2621} IM)NOP4W{32, 0}#A[wOX{0, 329} VZ)[\]4V{8, 0}#A[ˆ"Y{0, 2259} cg)def!"#hij$%&4_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRangeW{17, 0}#Ac\X{0, 264} sw)tuv()*xyz+,-4_%PrimaryDocumentSelectedCharacterRange_$PrimaryDocumentVisibleCharacterRange_PrimaryDocumentTimestampX{702, 0}X{0, 702}#A>WpQ )/012344_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRangeZ{42005, 0}#AbP;ڄ\{2420, 1952} )6789:4_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange#AB%X{0, 672} )<=>4W{22, 0}#A[zX{0, 322} )@A4#A[xX{0, 562} )tuv()*CD4Y{0, 1818}#A>" )tuv()*΁FG4[{787, 2427}#A>$k )!ځ7IJ4#A[n,Y{0, 2587} )LMN4W{26, 0}#A[vzlX{0, 733} )^_`abc4_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRangeX{617, 0}#A[Y{0, 1324} %))WXY*+,efg4X{464, 0}#A>X{0, 733} 25)34ik67m4 }<j_]file:///Users/bethanysanders/Documents/work/calc/calc/calc/Base.lproj/LaunchScreen.storyboard }Al_Ufile:///Users/bethanysanders/Documents/work/calc/calc/calc/Base.lproj/Main.storyboard DJ)EFGHInopqrKLINOsurvy4_SelectedMemberIdentifiers_EditedMemberConfiguration_SelectionProvider_#IBStoryboardStructureViewController_IBCanvasViewController W6XtZ01J-lp-oVMWdefault ]_)^w`x4_LastKnownOutlineViewWidth#@p ej)fghiz{|}UlmnЁ~4ZZoomFactor[CenterPoint_EditedTopLevelMemberIDs_$ObjectIDToLastKnownCanvasPositionMapY{84, 416} v6Xt z{)4 ~)4_SelectedMemberIdentifiers_EditedMemberConfiguration_SelectionProvider_#IBStoryboardStructureViewController_IBCanvasViewController 6Z8bC-Xf-vdC_heightClass=regular )4_LastKnownOutlineViewWidth#@i )UЁ4ZZoomFactor[CenterPoint_EditedTopLevelMemberIDs_$ObjectIDToLastKnownCanvasPositionMap\{346, 161.5} 6ZBYZ-38-t0r )4 )4 }À_Tfile:///Users/bethanysanders/Documents/work/calc/calc/calc.xcodeproj/project.pbxproj }Ȁ_Tfile:///Users/bethanysanders/Documents/work/calc/calc/Calc.xcodeproj/project.pbxproj )4 )4 )Ձ؁4 }݀_Pfile:///var/folders/_5/fw_576j11612pt111rjjjq1m0000gn/T/Assets-D5EXjfUK.xcassets }_Pfile:///var/folders/_5/fw_576j11612pt111rjjjq1m0000gn/T/Assets-orWWx0Ob.xcassets )4 )4 )4 }_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calc/Assets.xcassets/ )     4_detailController_selectedItemIdentifiers_source-list-area[sourceItems]sclicing-area]overview-area_IBICCatalogOverviewController  89  \NSMutableSet  4_IDE_PLIST_EDITOR_SELECTION_KEY_ IDE_PLIST_EDITOR_VISIBLERECT_KEY_IDE_PLIST_EDITOR_EXPANSION_KEY D6 E_NSAppTransportSecurity_{{0, 0}, {880, 525}} J  K L OP R EP V Z) W X YāŁƣ \ ]Dǁɀ4_IDE_PLIST_EDITOR_SELECTION_KEY_IDE_PLIST_EDITOR_EXPANSION_KEY_ IDE_PLIST_EDITOR_VISIBLERECT_KEY c  dȁ gP_{{0, 0}, {880, 406}} k o) W X YāŁƣ p q rˁ́Ѐ4 u6 v̀_NSAppTransportSecurity z  { |΁ρ P v̀P_{{0, 0}, {880, 406}} ) ҡ Ԁ4 } _file:///Users/bethanysanders/Library/Developer/Xcode/DerivedData/calc-amettingskenqnhcwujznbnbykbg/Build/Products/Debug-iphonesimulator/calc.app/ ) ա ր4_SelectedDocumentLocations 6 ׀ O _IDEQuickLookPageNumberYtimestamp[documentURL5ف؁_file:///Users/bethanysanders/Library/Developer/Xcode/DerivedData/calc-amettingskenqnhcwujznbnbykbg/Build/Products/Debug-iphonesimulator/calc.app/#A4* h89 _IDEQuickLookDocumentLocation <_IDEQuickLookDocumentLocation_DVTDocumentLocation ) ܁ޢ 4 } _Efile:///Users/bethanysanders/Documents/work/calc/calc/calc.xcodeproj/ } _Efile:///Users/bethanysanders/Documents/work/calc/calc/Calc.xcodeproj/ ) Á Ɂ4_-Xcode3ProjectEditorPreviousProjectEditorClass_(Xcode3ProjectEditor.sourceList.splitview_+Xcode3ProjectEditor_Xcode3BuildPhasesEditor_,Xcode3ProjectEditorSelectedDocumentLocations_,Xcode3ProjectEditorPreviousTargetEditorClass_Xcode3ProjectInfoEditor ) Ӂ Ձ4_DVTSplitViewItems ہP   8]DVTIdentifier_DVTViewMagnitude_!sourceListSplitViewItemIdentifier#@e@   8P#@( )  4_5825C14E1D340CBA0078A3F7_+Xcode3BuildPhasesEditorDisclosedNamesKey2.0_5825C1501D340CBA0078A3F7_5825C1511D340CBA0078A3F7_5825C14F1D340CBA0078A3F7_&kXcode3BuildPhasesEditorScrollPointKey )4     _Compile Sources_Link Binary With Libraries_Copy Bundle Resources  )4  )4  )4 #6 $ ' ( ) * +Yselection _Efile:///Users/bethanysanders/Documents/work/calc/calc/calc.xcodeproj/#A9Y -8 / 3) 0 1 2 4 5 6   4VEditorVTarget_ Xcode3BuildPhasesEditorLocations_Xcode3BuildPhasesEditorTcalc >6 ?  B C)489 F G_Xcode3ProjectDocumentLocation H I<_Xcode3ProjectDocumentLocation_DVTDocumentLocation_Xcode3BuildPhasesEditor L Q) M N O P R S T U)24_(Xcode3ProjectEditor.sourceList.splitview_+Xcode3ProjectEditor_Xcode3BuildPhasesEditor_,Xcode3ProjectEditorSelectedDocumentLocations_,Xcode3ProjectEditorPreviousTargetEditorClass \ ^)F _4 b c dP g j h i k 8]DVTIdentifier_DVTViewMagnitude_!sourceListSplitViewItemIdentifier r u h i w8#@ { ) | } ~   !" #$&'(4_5825C14E1D340CBA0078A3F7_+Xcode3BuildPhasesEditorDisclosedNamesKey2.0_5825C1501D340CBA0078A3F7_5825C1511D340CBA0078A3F7_5825C14F1D340CBA0078A3F7_&kXcode3BuildPhasesEditorScrollPointKey )4  %_Link Binary With Libraries )4 )4 )4 6 * ' +-,+ _Efile:///Users/bethanysanders/Documents/work/calc/calc/Calc.xcodeproj/#Ac_ Ġ ) 0 1 . 5 / 04_ Xcode3BuildPhasesEditorLocations_Xcode3BuildPhasesEditor 6 1 )4_Xcode3BuildPhasesEditor ) ȁ46 ˁ8>4 } Ѐ5_]file:///Users/bethanysanders/Documents/work/calc/calc/calc/Base.lproj/LaunchScreen.storyboard } Հ7_Ufile:///Users/bethanysanders/Documents/work/calc/calc/calc/Base.lproj/Main.storyboard ) ہ9:; ߁<=4_%PrimaryDocumentSelectedCharacterRange_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange#ABO8 X{0, 687} ) ?@4Y{0, 4257}#A[gXB  B C8]IDENameStringTcalc    EFGHIJKL g"  gM9 NOPQ98YtargetSDKZisEligible_targetDeviceIsWireless_targetDeviceLocation_targetArchitecture_targetDeviceFamily_targetDeviceModelCode_targetDeviceIsConcrete_iphonesimulator9.3_>dvtdevice-iphonesimulator:949C3351-857E-4EF6-A71D-9360DB1F9CE8Vx86_64ViPhoneYiPhone8,2  %)    ! " # $SUWY[]_a & ' ( ) * + , -chjlmnpq4 } 2T_Wfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.h } 7V_:file:///Users/bethanysanders/Documents/work/calc/soapC.cpp } <X_Lfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.mm } AZ_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calcTests/calcTests.m } F\_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.h } K^_?file:///Users/bethanysanders/Documents/work/calc/soapClient.cpp } P`_Efile:///Users/bethanysanders/Documents/work/calc/calc/calc/Info.plist } Ub_Xfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.mm X [ Y Zde \ ]fg8UwidthVheight#@#@ d g Y Zde \ ifi8#@ m p Y Zde \ rfk8#@p v y Y Zde \ ]fg8 ~  Y Zde \ ]fg8  Y Zde \ fo8#@X  Y Zde \ ]fg8  Y Zde \ ]fg8 ) stu 5v 4_0IDEActivityReportCompletionSummaryStringSegments_IDEActivityReportOptions_IDEActivityReportTitle w~P ) xyz {|}4_&IDEActivityReportStringSegmentPriority_+IDEActivityReportStringSegmentBackSeparator_)IDEActivityReportStringSegmentStringValue#@c % TCalc ) xyz ˁ4#@Q UBuild ) xyz 5 4#@R: ) xyzU Ё4c % WNS.dataO`bplist00;Troot#-27EKR[boqsu|!*17DKMOT\_dqty?89 ]NSMutableData _;file:///Users/bethanysanders/Documents/work/calc/soapStub.h } C_8file:///Users/bethanysanders/Documents/work/calc/soapH.h } H_:file:///Users/bethanysanders/Documents/work/calc/soapC.cpp K S) L M N O P Q R T U V Ng"9 4^IDEWindowFrame_!IDEOrderedWorkspaceTabControllers_>IDEWorkspaceTabController_2D965AF6-11D1-4E53-A00C-1B71F1372AA8_,IDEWorkspaceWindowControllerUniqueIdentifier_IDEActiveWorkspaceTabController_IDEWindowToolbarIsVisible_IDEWindowTabBarIsVisible_{{44, 0}, {1332, 877}} e6 N i t) j k l m n o p q r sOg w x y z {g } ~59HM9PQ4_AssistantEditorsLayout_IDEShowNavigator[IDETabLabel_-IDEWorkspaceTabControllerUtilityAreaSplitView_IDENavigatorArea_,IDEWorkspaceTabControllerDesignAreaSplitView\ViewDebugger_IDEShowUtilities^IDETabFilePath]IDEEditorArea_project.pbxproj )  4_DVTSplitViewItems P IJO a8#@P IJOZad8 ) ÁāŁƁǁȁɁʩ d ˁہs )4_ Xcode.IDEKit.Navigator.Structure_Xcode.IDEKit.Navigator.Symbol_ Xcode.IDEKit.Navigator.BatchFind_SelectedNavigator_Xcode.IDEKit.Navigator.Issues_"Xcode.IDEKit.Navigator.Breakpoints_Xcode.IDEKit.Navigator.Test_Xcode.IDEKit.Navigator.Logs_Xcode.IDEKit.Navigator.Debug ) ΁́́΁ρЁѦ " "ҁց׀ ـ 4_IDEExpandedItemsTree^IDEVisibleRect_IDESelectedTree_IDESCMStatusFilteringEnabled_,IDENavigatorExpandedItemsBeforeFilteringTree_!IDERecentDocumentFilteringEnabled | Ӏ8 ) ԡ Հ4TCalcP_{{0, 0}, {259, 782}} | ؀8 ) ԡ Հ4 | ڀ8 )4  )      ܁݁ށ߁gg g "999 4_#IDESymbolNavigatorShowWorkspaceOnly_IDESymbolNavigatorShowHierarchy_IDEExpandedItems_!IDESymbolNavigatorShowClassesOnly_IDESymbolNamePatternString_!IDESymbolNavigatorSelectedSymbols_$IDESymbolNavigatorShowContainersOnly  P_c:objc(cs)ViewController !6  % -) & ' ( ) * + , .O 0OOg 455594_)IDEBatchFindNavigatorFindAttributedString_IDEBatchFindMatchStyle_,IDEBatchFindNavigatorReplaceAttributedString_IDEBatchFindFindType_IDEBatchFindNavigatorFindMode_IDEBatchFindIgnoreCase_.IDEBatchFindNavigatorSelectedLocationsStateKey > ? @ A BXNSString\NSAttributes D E FYNS.string_#NSURLRequestReturnCacheDataElseLoad89 H I_NSMutableString H J d A D E hP j l k m8_IDEValuesAsTree q r)4 u ) v x y z { | } ~́" " "    4_IDEErrorFilteringEnabled_IDECollapsedFiles_IDEExpandedIssues^IDEShowsByType_IDESelectedNavigables_IDECollapsedTypes_IDERecentFilteringEnabled_IDECollapsedGroups_{{0, 0}, {259, 753}}   P   )    "  4^IDEVisibleRect_%IDEBreakpointNavigatorFilterOnEnabled_IDESelectedTree_IDECollapsedtemsTree_{{0, 0}, {259, 782}}   8_IDEValuesAsTree )4   8 )4 )   "" ҁ 4_IDEFailedTestsFilteringEnabled_IDESchemeFilteringEnabled_{{0, 0}, {259, 782}}  ف ہ8_IDEValuesAsTree )4 )  !"#" " " $ % (4_ IDELogNavigatorBotFilterStateKey_"IDELogNavigatorVisibleRectStateKey_IDELogNavigatorGroupByKey_expandedIdentifiers_#IDELogNavigatorRecentFilterStateKey_collapsedIdentifiers_{{0, 0}, {259, 753}} &'P_!entity:calc:scheme:calc project:1Wproject P  )  *+,- .  O""/05 G 4_IDEStackCompressionValue_IDEDebugTransientStates_DBGNavigatorContentMode_IDEShowOnlyRunningBlocks_IDEShowOnlyInterestingContent  )12345!"gg%679994_'IDEExecutionEnvironmentAddressStringKey_IDEDebugExpandedItems_%IDEDebugAlreadyShownForNewPausedState_1IDEHaveInitiallyExpandedCPUDebuggingChildrenState_IDEDebugSelectedNavigableItems^0x7f7f9aa2b0e0 . / 58 Ycalc %% 1 45:P89 :;}=>?@_DocumentLocation^IdentifierPath_DomainIdentifier_IndexOfDocumentIdentifier<F;E_1Xcode.IDENavigableItem.ExecutionEnvironmentDomain C6DEFG=@BCJK LONZIdentifierUIndex>5?_0 soap_register_plugin_arg89QR_IDEArchivableStringIndexPairS<_IDEArchivableStringIndexPairJK UONA5?XThread 1JK 5ON 5?JK ^OND5?_89de_(IDENavigableItemArchivableRepresentationf<_(IDENavigableItemArchivableRepresentation_{{0, 0}, {259, 782}} ik) lI4 opqrJKLP uxIJЀ8 }IJڀ8 IJЀ8 )NOgg994_ShowsOnlyInterestingViewObjects_ShowsOnlyVisibleViewObjects_M/Users/bethanysanders/Documents/work/calc/calc/Calc.xcodeproj/project.pbxproj )RSTUVWXYZ[\g  g]^9//94_ DefaultPersistentRepresentations_IDEEditorMode_StandardZlayoutTree]IDEShowEditor_VersionEditorSubmodeZEditorMode_IDEEditorMode_Version_IDEEditorMode_Genius_IDEDefaultDebugArea_DebuggerSplitView_ShowDebuggerArea )4 )_ā`4_%EditorLayout_PersistentRepresentation )-ˁa4 сbcdOՁe58_)EditorLayout_StateSavingStateDictionaries_EditorLayout_Selected_EditorLayout_Geometry 6܁f )ghijklmnosw4\FileDataType[EditorState_ArchivableRepresentation_NavigableItemName_DocumentNavigableItemName_DocumentExtensionIdentifier[DocumentURL_#public.objective-c-plus-plus-source abcd"pq r8#A=ef\{2258, 1895}Y{2318, 0}89 :; > O}uFt5_/Xcode.IDENavigableItemDomain.WorkspaceStructure 6vy|JK Nwx?^soapClient.cpp JK Nz{?WClassesJK 5ON 5? %&}~_?file:///Users/bethanysanders/Documents/work/calc/soapClient.cpp89*+_DVTDocumentLocation,<_DVTDocumentLocation_}soap_call_ns2__add(struct soap *soap, const char *soap_endpoint, const char *soap_action, double a, double b, double &result)_&Xcode.IDEKit.EditorDocument.SourceCode }%~ 465_{{0, 0}, {1140, 710}}yz{ 9};) }9A(89 :;CD>FGF_/Xcode.IDENavigableItemDomain.WorkspaceStructure J6KJK NON5?TCalc &}߁ X}}( ]6; ac)bd4_%EditorLayout_PersistentRepresentation hj)-k4 nr/01sOu58 x6y |)}~ ހ4\FileDataType[EditorState_ArchivableRepresentation_NavigableItemName_DocumentNavigableItemName_DocumentExtensionIdentifier[DocumentURL_com.apple.xcode.project 889 :;>FF 6JK ON5?TCalc &}߁TCalc_9Xcode.IDEKit.EditorDocument.SourceCode-from-Xcode3Project 6_{{0, 0}, {812, 441}} )b4]SplitPosition"? )-āЀ4YAlternate ˁOρ5΀8_)EditorLayout_StateSavingStateDictionaries_EditorLayout_Selected_EditorLayout_Geometry ցP )ʁˁ́̀4\FileDataType[EditorState_ArchivableRepresentation_NavigableItemName_DocumentNavigableItemName_DocumentExtensionIdentifier[DocumentURL_public.c-header yz{|" 8#A8KX{0, 556}X{350, 0}89 :;>}OȁF5 6  ŀ  )áĀ4_navigableItem_name_ViewController.h )ơǀ4Zidentifier_(Xcode.IDEKit.GeniusCategory.Counterparts &}Ɂ_Kfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.h_@interface ViewController_ViewController.h_&Xcode.IDEKit.EditorDocument.SourceCode } )*πP_{{0, 0}, {439, 454}} .2ˁ3O5р58 869Ҁ <D)FGHIKnӁׁځ́4 NSyz{|TU"WԁՀ ր8#A8Z{212, 908}Y{1060, 0}89 :;]^> Oށ؁Ft5 c6defف܁݀JK IjNځہ?_ViewController.mm JK Nz{?JK 5ON 5? w&}߁_Lfile:///Users/bethanysanders/Documents/work/calc/calc/calc/ViewController.mm^-buttonPressed }w 6_{{0, 0}, {880, 454}} )р;>O54_IDESplitViewDebugAreaZLayoutMode )"Og 5D94_VariablesViewShowsRawValues_VariablesViewSelectedScope_ VariablesViewViewSortDescriptors_VariablesViewShowsType ) 4 P IJK8#@u IJ N8#@u )O54_ConsoleFilterMode )Uˁ4 ЁP IJ,؀X8#@}` IJ6[8#@w_NSKeyedArchiverUState"+5:? 7 = J R ] d k m o q x z |         ! # % ' ) + - / J Y } + , D M P R T ] h q y ~ ) < k ~  #1HSi}/8?Knz|~"HMs'?W`cegtuvx  3>HU^`bdfoqsuwy  )279;=JOQSXZ\^l!#&(*>GLNPR_dfhmoqs} !"+8=?AFHJLUbikmovxz|~  7Nj*79;=?ACPRTVXZ\^u!3@ABDWdgilnp}~&+-/468:HQ^ceglnpr 3P]t "$&(*,.02KMPSVY\_behknp9s@\3579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}  "%(+.147:=@CFILORUX[^adgjmpsvy{   k x z | ~ ! !!!!!!!!!!!!!"u"""""""""#`#m#o#q#s#####$$&$($*$,$w$$$$$$$$$%%(%*%,%.%%%%%&y&&&&&&&&&'r'''''''''(((5(7(9(;((((())!)#)%)')))))******b*o*q*s*u*****++"+$+&+(+n+{+}++,B,O,Q,S,U,,,,,---:-<->-@-------........./////S/`/b/d/f/////0E0R0T0V0X000001:1G1I1K1M111112+282:2<2>222223R3_3a3c3e333334R4_4a4c4f4444444444444455,5T5]5f5o5|5555555555555566(666A6N6W6Z6]6`6c6l6o6r6t6w6y66666666666666666666777777777787_7m7777777777777777788888!8$8'808386888;8=8F8O8\8e8h8k8n8q8z8}88888888888888888888889999 9999999:9a9o999999999999999999:::::::%:(:+:-:0:2:;:D:Q:Z:]:`:c:f:o:r:u:w:z:|:::::;;;;%;(;+;.;1;:;=;@;B;E;G;b;;;;;;;;;;;;<< < <<<<<)<6>>>>>>>>>8>_>m>>>>>>>>>>>>>>>>>??????"?%?.?1?4?6?9?;?D?Q?^?g?j?m?p?s?|????????@@ @@@*@3@6@9@<@?@H@K@N@P@S@U@^@h@q@~@@@@@@@@@@@@@@@@@@@@@@@@@@AAAA A#A&A)A2A5A8A:A=A?AHAQA^AgAjAmApAsA|AAAAAAAAAAAAAAAAAAAAAABBB B BBBBB!B$B&B/B>BJBWB`BcBfBiBlBuBxB{B}BBBBBBBBBBBBBBBBBBBBBCCCC CCCCCC!C*C7CDCMCPCSCVCYCbCeChCjCmCoCxCCCCCCCCCCCCCCCCCCCCDDDDDDDDDD%D.D7DDDMDPDSDVDYDbDeDhDjDmDoDxDDDDDDDDDDDDDDDDDDDDDDEEEE E EEE&E3EF@FCFEFNF[FhFqFtFwFzF}FFFFFFFFFG GG!G+G8GAGDGGGJGMGVGYG\G^GaGcGlGyGGGGGGGGGGGGGGGGGGGGGGGGHH(H-H0H3H8H;H>H@HEHNHWH`HiHlHoHrHuHwHHHHHHHHHHHHHHHHHHHHHHHHHII IIIIII(IQITIWIYI\I^IaIcIeIhIkInIqItIwIyI|IIIIIIIIIIIIIIIIIIIIIIIIIIIIJ?JLJNJPJSJJJJJJJJKKKBKOKQKSKVKKKKKKKKKKL~LLLLLLLLMMYMfMhMjMmMMMMMNLNYN[N]N`NNNNNO:OGOIOKONOOOOOOOOOOOOOOPP%PMPVP`PiPvP}PPPPPPPPPPPPPPPPPPPPPQ Q%QLQUQbQoQvQyQ|QQQQQQQQQQQQQQQQQQQRRRFRORXReRlRoRrRuR|RRRRRRRRRRRRRRRRRRRRRSSSS SSSSSS$S-S6SCSJSMSPSSSZS]S`ScSeSlSuSSSSSSSSSSSSSTT T)T2T?TFTITLTOTVTYT\T_TaTTTTTTTTTUUU U UUUU=UXUUUUUUUUUUUUUUUVV9VBVKVXV_VbVeVhVoVrVuVxVzVVVVVVVVVVVVVVVVVVVVVVVWWWWW$W+W.W1W4W;W>WAWDWFWRW[WhWoWrWuWxWWWWWWWWWWWWWWWWWWWWWWWXXX XXXXX#X%X'X*XyXXXXXXXXXY6YCYJYMYPYSYZY]Y`YcYeYYYYYYYYZZZZZZZZZAZ\ZZZZZZZZZZZZZZZZZZZZ[[[ [ [[[[["[[[[[[[\\ \ \\\\ \#\&\)\,\/\1\M\i\}\\\\\\\\\\\\\\]] ]-]6]9]<]?]B]K]N]Q]T]W]Y]d]p]]]]]]]]]]]]]]]]^^^^^^^^^ ^<^X^l^^^^^^^^^^^^^^___*_3_6_9_<_?_H_K_N_Q_T_V_a_m_______________```` ` ````!`x`````````aaaaaaaaa"a%a(a*a7a9a;a>aaaaaabbbb bbbbb'b*b-b0b3b5bBbDbFbIbbbbbbbbbbbbbbbbbbcc$c0c>cLclcucvcycccccccccccccccccccccddddddd d'd*d-d0d7d:d=d@dBdOdVdYd\d_dfdidldodqdddddddeee e%e(e+e.e7e8e:eCeFeIeKeXe_ebeeeheoeqeteweyeeeeeeeeeeff f'f*f-f0f7f:f=f@fBfKfNfQfSflfufzf}ffffffffffffffffffffgzgggggggggggggghhhh h hhhhhhiii i#i&i+i.i1i3i@iBiDiGiiiiiiijjj j jjjj j#j&j)j,j.j^jjjkk/ksEsHsKsNsUsXs[s^s`ssssssssssssssssssst t tttrttttttttttuuuu u u5uPuwuuuuuuuuuuuuuuuuuuuuuuvvvvv v#v&v)v,v/v@vCvEvGvJvMvPvSvUvWvavlvvvvvvw wMwTw[wewrwwwwwwwwwwwwwwwwwwwwwwwx4xAxCxExHxxxxxxxxxxyJyWyYy[y^yyyyyzzzzzz^zkzmzozrzzzzzzzzzzz{{{{#{&{){.{1{4{6{?{L{Q{T{W{\{_{b{d{m{z{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||| ||||"|'|*|-|/|<|C|F|I|L|S|V|Y|\|^|||||||||||||}}}}}}}}}B}p}}}}}}}}}}}}}}}}}}~~~ ~~~~~~ ~)~,~9~@~C~F~I~P~S~V~Y~[~b~k~s׀ڀ "%(+8;=@CEGIn ,.7<>@BK`cfilorux{~\ikmpʃ׃كۃބ"/136|΄ۄ݄߄*,.1n{…х6e׆ "%(=?ADGJMPRUXZs‡Ո$3AS`cfilnÈЈՈ׈وވ 258;=@CFILNqȉ +Ihuʊي 9]jmoruwċNjɋ֋ً܋ߋ +.147:=@OQSVX[^`b"IRUXZu~ƍɍˍ΍Ѝҍԍ׍َMdΎێ 6?QXanqtwz|ҏۏ /DMPS\_`mpsvy{Đǐʐ͐АӐ֐ِ!5IXp̑Ցّ֑ "%(+.7:ADGPSUWZ\}ÓƓɓ˓ݓ '),.1368[ؔ@HQRTanqtwz}ӕ(*7BEHKNQ\_bdfik՗ *9BGJMPZcfikїӗ֗ٗܗߘ%(+.13@KQTVYv˜ϘҘԘט %.7bg™ę͙ԙיڙݙߙ !.357<>@BOTWZ_ace"%(+.147:QTWZ\_behknprǛޛ.BUbcdfsvy|ÜМלڜݜ5MVY\^kz}Ν7Civ֞ٞܞߞ&),/1>ADGVXehknvxǠԠ֠ؠ۠8:=?BWZ]`cfá̡١ܡߡ !$'*-/Wdgiloq~ɢ̢ϢҢբآۢޢ8Lhңգأۣޣ "%(*/ktwz|Ƥˤؤݤ  "%'Sk¥ťԥץڥݥ3Omyæ̦զަ #&),/1FYfilort ) SchemeUserState calc.xcscheme orderHint 0 SuppressBuildableAutocreation 5825C1511D340CBA0078A3F7 primary 5825C16A1D340CBB0078A3F7 primary 5825C1751D340CBB0078A3F7 primary ././@LongLink0000644000000000000000000000017600000000000011607 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcschemes/calc.xcschemegsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/xcuserdata/bethanysanders.xcuserdata0000644000175000017500000001054013227173555033275 0ustar ellertellert ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcdebugger/gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/xcuserdata/bethanysanders.xcuserdata0000755000175000017500000000000013227173555033273 5ustar ellertellert././@LongLink0000644000000000000000000000021300000000000011577 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlistgsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/Calc.xcodeproj/xcuserdata/bethanysanders.xcuserdata0000644000175000017500000000013313227173555033272 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc/calc_Prefix.pch0000644000175000017500000000047113227173555024112 0ustar ellertellert// // Prefix header for all source files of the 'Calc' target in the 'Calc' project // #define DEBUG #ifdef DEBUG #define DLog(...) NSLog(__VA_ARGS__) #else #define DLog(...) /* empty*/ #endif #define ALog(...) NSLog(__VA_ARGS_) #ifdef __OBJC__ #import #import #endif gsoap-2.8.60/gsoap/ios_plugin/examples/calc/calc.h0000644000175000017500000006402613227173555021356 0ustar ellertellert/* calc.h Generated by wsdl2h 2.8.33 from http://www.genivia.com/calc.wsdl and typemap.dat 2016-08-17 14:10:07 GMT DO NOT INCLUDE THIS FILE DIRECTLY INTO YOUR PROJECT BUILDS USE THE soapcpp2-GENERATED SOURCE CODE FILES FOR YOUR PROJECT BUILDS gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc. All Rights Reserved. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia Inc., contact@genivia.com -------------------------------------------------------------------------------- */ /** @page page_notes Notes @note HINTS: - Run soapcpp2 on calc.h to generate the SOAP/XML processing logic. Use soapcpp2 -I to specify paths for #import To build with STL, 'stl.h' is imported from 'import' dir in package. Use soapcpp2 -j to generate improved proxy and server classes. Use soapcpp2 -r to generate a report. - Use wsdl2h -c and -s to generate pure C code or C++ code without STL. - Use 'typemap.dat' to control namespace bindings and type mappings. It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces section below and add the modified lines to 'typemap.dat' to rerun wsdl2h. - Run Doxygen (www.doxygen.org) on this file to generate documentation. - Use wsdl2h -R to generate REST operations. - Use wsdl2h -nname to use name as the base namespace prefix instead of 'ns'. - Use wsdl2h -Nname for service prefix and produce multiple service bindings - Use wsdl2h -d to enable DOM support for xsd:anyType. - Use wsdl2h -g to auto-generate readers and writers for root elements. - Use wsdl2h -b to auto-generate bi-directional operations (duplex ops). - Use wsdl2h -U to map XML names to C++ Unicode identifiers instead of _xNNNN. - Use wsdl2h -u to disable the generation of unions. - Struct/class members serialized as XML attributes are annotated with a '@'. - Struct/class members that have a special role are annotated with a '$'. @warning DO NOT INCLUDE THIS ANNOTATED FILE DIRECTLY IN YOUR PROJECT SOURCE CODE. USE THE FILES GENERATED BY soapcpp2 FOR YOUR PROJECT'S SOURCE CODE: THE soapStub.h FILE CONTAINS THIS CONTENT WITHOUT ANNOTATIONS. @copyright LICENSE: @verbatim -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc. All Rights Reserved. The wsdl2h tool and its generated software are released under the GPL. This software is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial-use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- @endverbatim */ //gsoapopt c++,w /******************************************************************************\ * * * Definitions * * http://websrv.cs.fsu.edu/~engelen/calc.wsdl * * * \******************************************************************************/ /******************************************************************************\ * * * $CONTAINER * * std::vector * * * \******************************************************************************/ template class std::vector; /******************************************************************************\ * * * Import * * * \******************************************************************************/ #import "stl.h" // enable STL containers when used (option -s removes STL dependency) /******************************************************************************\ * * * Schema Namespaces * * * \******************************************************************************/ /* NOTE: It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings below and add the modified lines to typemap.dat to rerun wsdl2h: ns1 = "http://websrv.cs.fsu.edu/~engelen/calc.wsdl" ns2 = "urn:calc" */ #define SOAP_NAMESPACE_OF_ns2 "urn:calc" //gsoap ns2 schema namespace: urn:calc //gsoap ns2 schema form: unqualified /******************************************************************************\ * * * Built-in Schema Types and Top-Level Elements and Attributes * * * \******************************************************************************/ /******************************************************************************\ * * * Forward Declarations * * * \******************************************************************************/ /******************************************************************************\ * * * Schema Types and Top-Level Elements and Attributes * * urn:calc * * * \******************************************************************************/ /******************************************************************************\ * * * Schema Complex Types and Top-Level Elements * * urn:calc * * * \******************************************************************************/ /******************************************************************************\ * * * Additional Top-Level Elements * * urn:calc * * * \******************************************************************************/ /******************************************************************************\ * * * Additional Top-Level Attributes * * urn:calc * * * \******************************************************************************/ /******************************************************************************\ * * * Services * * * \******************************************************************************/ //gsoap ns2 service name: calc //gsoap ns2 service type: calcPortType //gsoap ns2 service port: http://websrv.cs.fsu.edu/~engelen/calcserver.cgi //gsoap ns2 service namespace: urn:calc //gsoap ns2 service transport: http://schemas.xmlsoap.org/soap/http /** @mainpage calc Definitions @section calc_bindings Service Bindings - @ref calc @section calc_more More Information - @ref page_notes "Notes" - @ref page_XMLDataBinding "XML Data Binding" - @ref SOAP_ENV__Header "SOAP Header Content" (when applicable) - @ref SOAP_ENV__Detail "SOAP Fault Detail Content" (when applicable) */ /** @page calc Binding "calc" @section calc_service Service Documentation "calc" gSOAP 2.7.9k generated service definition @section calc_operations Operations of Binding "calc" - @ref ns2__add - @ref ns2__sub - @ref ns2__mul - @ref ns2__div - @ref ns2__pow @section calc_ports Default endpoints of Binding "calc" - http://websrv.cs.fsu.edu/~engelen/calcserver.cgi @note Use wsdl2h option -Nname to change the service binding prefix name */ /******************************************************************************\ * * * Service Binding * * calc * * * \******************************************************************************/ /******************************************************************************\ * * * Service Operation * * ns2__add * * * \******************************************************************************/ /** Operation "ns2__add" of service binding "calc". Service definition of function ns__add - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" - Default endpoints: - http://websrv.cs.fsu.edu/~engelen/calcserver.cgi - Addressing input action: "" - Addressing output action: "Response" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call_ns2__add( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: double a, double b, // output parameters: double &result ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int ns2__add( struct soap *soap, // input parameters: double a, double b, // output parameters: double &result ); @endcode C++ proxy class (defined in soapcalcProxy.h generated with soapcpp2): @code class calcProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapcalcService.h generated with soapcpp2): @code class calcService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns2 service method-protocol: add SOAP //gsoap ns2 service method-style: add rpc //gsoap ns2 service method-encoding: add http://schemas.xmlsoap.org/soap/encoding/ //gsoap ns2 service method-action: add "" //gsoap ns2 service method-output-action: add Response int ns2__add( double :a, ///< Input parameter, : unqualified name as per RPC encoding double :b, ///< Input parameter, : unqualified name as per RPC encoding double &:result ///< Output parameter, : unqualified name as per RPC encoding ); /******************************************************************************\ * * * Service Operation * * ns2__sub * * * \******************************************************************************/ /** Operation "ns2__sub" of service binding "calc". Service definition of function ns__sub - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" - Default endpoints: - http://websrv.cs.fsu.edu/~engelen/calcserver.cgi - Addressing input action: "" - Addressing output action: "Response" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call_ns2__sub( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: double a, double b, // output parameters: double &result ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int ns2__sub( struct soap *soap, // input parameters: double a, double b, // output parameters: double &result ); @endcode C++ proxy class (defined in soapcalcProxy.h generated with soapcpp2): @code class calcProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapcalcService.h generated with soapcpp2): @code class calcService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns2 service method-protocol: sub SOAP //gsoap ns2 service method-style: sub rpc //gsoap ns2 service method-encoding: sub http://schemas.xmlsoap.org/soap/encoding/ //gsoap ns2 service method-action: sub "" //gsoap ns2 service method-output-action: sub Response int ns2__sub( double :a, ///< Input parameter, : unqualified name as per RPC encoding double :b, ///< Input parameter, : unqualified name as per RPC encoding double &:result ///< Output parameter, : unqualified name as per RPC encoding ); /******************************************************************************\ * * * Service Operation * * ns2__mul * * * \******************************************************************************/ /** Operation "ns2__mul" of service binding "calc". Service definition of function ns__mul - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" - Default endpoints: - http://websrv.cs.fsu.edu/~engelen/calcserver.cgi - Addressing input action: "" - Addressing output action: "Response" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call_ns2__mul( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: double a, double b, // output parameters: double &result ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int ns2__mul( struct soap *soap, // input parameters: double a, double b, // output parameters: double &result ); @endcode C++ proxy class (defined in soapcalcProxy.h generated with soapcpp2): @code class calcProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapcalcService.h generated with soapcpp2): @code class calcService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns2 service method-protocol: mul SOAP //gsoap ns2 service method-style: mul rpc //gsoap ns2 service method-encoding: mul http://schemas.xmlsoap.org/soap/encoding/ //gsoap ns2 service method-action: mul "" //gsoap ns2 service method-output-action: mul Response int ns2__mul( double :a, ///< Input parameter, : unqualified name as per RPC encoding double :b, ///< Input parameter, : unqualified name as per RPC encoding double &:result ///< Output parameter, : unqualified name as per RPC encoding ); /******************************************************************************\ * * * Service Operation * * ns2__div * * * \******************************************************************************/ /** Operation "ns2__div" of service binding "calc". Service definition of function ns__div - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" - Default endpoints: - http://websrv.cs.fsu.edu/~engelen/calcserver.cgi - Addressing input action: "" - Addressing output action: "Response" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call_ns2__div( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: double a, double b, // output parameters: double &result ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int ns2__div( struct soap *soap, // input parameters: double a, double b, // output parameters: double &result ); @endcode C++ proxy class (defined in soapcalcProxy.h generated with soapcpp2): @code class calcProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapcalcService.h generated with soapcpp2): @code class calcService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns2 service method-protocol: div SOAP //gsoap ns2 service method-style: div rpc //gsoap ns2 service method-encoding: div http://schemas.xmlsoap.org/soap/encoding/ //gsoap ns2 service method-action: div "" //gsoap ns2 service method-output-action: div Response int ns2__div( double :a, ///< Input parameter, : unqualified name as per RPC encoding double :b, ///< Input parameter, : unqualified name as per RPC encoding double &:result ///< Output parameter, : unqualified name as per RPC encoding ); /******************************************************************************\ * * * Service Operation * * ns2__pow * * * \******************************************************************************/ /** Operation "ns2__pow" of service binding "calc". Service definition of function ns__pow - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" - Default endpoints: - http://websrv.cs.fsu.edu/~engelen/calcserver.cgi - Addressing input action: "" - Addressing output action: "Response" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call_ns2__pow( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: double a, double b, // output parameters: double &result ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int ns2__pow( struct soap *soap, // input parameters: double a, double b, // output parameters: double &result ); @endcode C++ proxy class (defined in soapcalcProxy.h generated with soapcpp2): @code class calcProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapcalcService.h generated with soapcpp2): @code class calcService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns2 service method-protocol: pow SOAP //gsoap ns2 service method-style: pow rpc //gsoap ns2 service method-encoding: pow http://schemas.xmlsoap.org/soap/encoding/ //gsoap ns2 service method-action: pow "" //gsoap ns2 service method-output-action: pow Response int ns2__pow( double :a, ///< Input parameter, : unqualified name as per RPC encoding double :b, ///< Input parameter, : unqualified name as per RPC encoding double &:result ///< Output parameter, : unqualified name as per RPC encoding ); /** @page calc Binding "calc" @section calc_policy_enablers Policy Enablers of Binding "calc" None specified. */ /******************************************************************************\ * * * XML Data Binding * * * \******************************************************************************/ /** @page page_XMLDataBinding XML Data Binding SOAP/XML services use data bindings contractually bound by WSDL and auto- generated by wsdl2h and soapcpp2 (see Service Bindings). Plain data bindings are adopted from XML schemas as part of the WSDL types section or when running wsdl2h on a set of schemas to produce non-SOAP-based XML data bindings. The following readers and writers are C/C++ data type (de)serializers auto- generated by wsdl2h and soapcpp2. Run soapcpp2 on this file to generate the (de)serialization code, which is stored in soapC.c[pp]. Include "soapH.h" in your code to import these data type and function declarations. Only use the soapcpp2-generated files in your project build. Do not include the wsdl2h- generated .h file in your code. Data can be read and deserialized from: - an int file descriptor, using soap->recvfd = fd - a socket, using soap->socket = (int)... - a C++ stream (istream, stringstream), using soap->is = (istream*)... - a C string, using soap->is = (const char*)... - any input, using the soap->frecv() callback Data can be serialized and written to: - an int file descriptor, using soap->sendfd = (int)... - a socket, using soap->socket = (int)... - a C++ stream (ostream, stringstream), using soap->os = (ostream*)... - a C string, using soap->os = (const char**)... - any output, using the soap->fsend() callback The following options are available for (de)serialization control: - soap->encodingStyle = NULL; to remove SOAP 1.1/1.2 encodingStyle - soap_mode(soap, SOAP_XML_TREE); XML without id-ref (no cycles!) - soap_mode(soap, SOAP_XML_GRAPH); XML with id-ref (including cycles) - soap_set_namespaces(soap, struct Namespace *nsmap); to set xmlns bindings @section ns2 Top-level root elements of schema "urn:calc" */ /* End of calc.h */ gsoap-2.8.60/gsoap/ios_plugin/examples/README.txt0000644000175000017500000000135613227173555021074 0ustar ellertellert INSTRUCIONS =========== To compile the examples, first copy the following files to the source code files folders of each example (Air, app2, calc, Weather): - gsoapios.h (located under gsoap/ios_plugin/) - gsoapios.mm (located under gsoap/ios_plugin/) - stdsoap2.h (located under gsoap/) - stdsoap2.cpp (located under gsoap/) - dom.cpp (located under gsoap/) Then generate updated files with soapcpp2 for each example: cd Air soapcpp2 -j -CL -I../../../import airport.h cd app2 soapcpp2 -j -CL -I../../../import GeoIPService.h cd calc soapcpp2 -CL -I../../../import calc.h cd Weather soapcpp2 -j -CL -I../../../import weather.h DOCUMENTATION ============= See http://www.genivia.com/doc/ios/index.html gsoap-2.8.60/gsoap/ios_plugin/examples/app2/0000755000175000017500000000000013227173555020233 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/app2/.DS_Store0000644000175000017500000001400413227173555021715 0ustar ellertellertBud1%app2dsclbooldsclbool  @ @ @ @ E%DSDB` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/app2/GeoIPService.h0000644000175000017500000010574413227173555022703 0ustar ellertellert/* GeoIPService.h Generated by wsdl2h 2.8.33 from http://www.webservicex.net/geoipservice.asmx?WSDL and typemap.dat 2016-08-17 14:09:08 GMT DO NOT INCLUDE THIS FILE DIRECTLY INTO YOUR PROJECT BUILDS USE THE soapcpp2-GENERATED SOURCE CODE FILES FOR YOUR PROJECT BUILDS gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc. All Rights Reserved. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia Inc., contact@genivia.com -------------------------------------------------------------------------------- */ /** @page page_notes Notes @note HINTS: - Run soapcpp2 on GeoIPService.h to generate the SOAP/XML processing logic. Use soapcpp2 -I to specify paths for #import To build with STL, 'stl.h' is imported from 'import' dir in package. Use soapcpp2 -j to generate improved proxy and server classes. Use soapcpp2 -r to generate a report. - Use wsdl2h -c and -s to generate pure C code or C++ code without STL. - Use 'typemap.dat' to control namespace bindings and type mappings. It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces section below and add the modified lines to 'typemap.dat' to rerun wsdl2h. - Run Doxygen (www.doxygen.org) on this file to generate documentation. - Use wsdl2h -R to generate REST operations. - Use wsdl2h -nname to use name as the base namespace prefix instead of 'ns'. - Use wsdl2h -Nname for service prefix and produce multiple service bindings - Use wsdl2h -d to enable DOM support for xsd:anyType. - Use wsdl2h -g to auto-generate readers and writers for root elements. - Use wsdl2h -b to auto-generate bi-directional operations (duplex ops). - Use wsdl2h -U to map XML names to C++ Unicode identifiers instead of _xNNNN. - Use wsdl2h -u to disable the generation of unions. - Struct/class members serialized as XML attributes are annotated with a '@'. - Struct/class members that have a special role are annotated with a '$'. @warning DO NOT INCLUDE THIS ANNOTATED FILE DIRECTLY IN YOUR PROJECT SOURCE CODE. USE THE FILES GENERATED BY soapcpp2 FOR YOUR PROJECT'S SOURCE CODE: THE soapStub.h FILE CONTAINS THIS CONTENT WITHOUT ANNOTATIONS. @copyright LICENSE: @verbatim -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2016, Robert van Engelen, Genivia Inc. All Rights Reserved. The wsdl2h tool and its generated software are released under the GPL. This software is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial-use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- @endverbatim */ //gsoapopt c++,w /******************************************************************************\ * * * Definitions * * http://www.webservicex.net/ * * * \******************************************************************************/ /******************************************************************************\ * * * $CONTAINER * * std::vector * * * \******************************************************************************/ template class std::vector; /******************************************************************************\ * * * Import * * * \******************************************************************************/ #import "stl.h" // enable STL containers when used (option -s removes STL dependency) /******************************************************************************\ * * * Schema Namespaces * * * \******************************************************************************/ /* NOTE: It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings below and add the modified lines to typemap.dat to rerun wsdl2h: ns1 = "http://www.webservicex.net/" */ #define SOAP_NAMESPACE_OF_ns1 "http://www.webservicex.net/" //gsoap ns1 schema namespace: http://www.webservicex.net/ //gsoap ns1 schema elementForm: qualified //gsoap ns1 schema attributeForm: unqualified /******************************************************************************\ * * * Built-in Schema Types and Top-Level Elements and Attributes * * * \******************************************************************************/ /******************************************************************************\ * * * Forward Declarations * * * \******************************************************************************/ // Forward declaration of class ns1__GeoIP. class ns1__GeoIP; // Forward declaration of class _ns1__GetGeoIP. class _ns1__GetGeoIP; // Forward declaration of class _ns1__GetGeoIPResponse. class _ns1__GetGeoIPResponse; // Forward declaration of class _ns1__GetGeoIPContext. class _ns1__GetGeoIPContext; // Forward declaration of class _ns1__GetGeoIPContextResponse. class _ns1__GetGeoIPContextResponse; /******************************************************************************\ * * * Schema Types and Top-Level Elements and Attributes * * http://www.webservicex.net/ * * * \******************************************************************************/ /******************************************************************************\ * * * Schema Complex Types and Top-Level Elements * * http://www.webservicex.net/ * * * \******************************************************************************/ /// @brief "http://www.webservicex.net/":GeoIP is a complexType. /// /// class ns1__GeoIP operations: /// - ns1__GeoIP* soap_new_ns1__GeoIP(soap*) allocate /// - ns1__GeoIP* soap_new_ns1__GeoIP(soap*, int num) allocate array /// - ns1__GeoIP* soap_new_req_ns1__GeoIP(soap*, ...) allocate, set required members /// - ns1__GeoIP* soap_new_set_ns1__GeoIP(soap*, ...) allocate, set all public members /// - ns1__GeoIP::soap_default(soap*) reset members to default /// - int soap_read_ns1__GeoIP(soap*, ns1__GeoIP*) deserialize from a stream /// - int soap_write_ns1__GeoIP(soap*, ns1__GeoIP*) serialize to a stream /// - ns1__GeoIP* ns1__GeoIP::soap_dup(soap*) returns deep copy of ns1__GeoIP, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - ns1__GeoIP::soap_del() deep deletes ns1__GeoIP data members, use only after ns1__GeoIP::soap_dup(NULL) (use soapcpp2 -Ed) class ns1__GeoIP { public: /// Element "ReturnCode" of XSD type xs:int. int ReturnCode 1; ///< Required element. /// Element "IP" of XSD type xs:string. std::string* IP 0; ///< Optional element. /// Element "ReturnCodeDetails" of XSD type xs:string. std::string* ReturnCodeDetails 0; ///< Optional element. /// Element "CountryName" of XSD type xs:string. std::string* CountryName 0; ///< Optional element. /// Element "CountryCode" of XSD type xs:string. std::string* CountryCode 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webservicex.net/":GetGeoIP /// @brief "http://www.webservicex.net/":GetGeoIP is a complexType. /// /// class _ns1__GetGeoIP operations: /// - _ns1__GetGeoIP* soap_new__ns1__GetGeoIP(soap*) allocate /// - _ns1__GetGeoIP* soap_new__ns1__GetGeoIP(soap*, int num) allocate array /// - _ns1__GetGeoIP* soap_new_req__ns1__GetGeoIP(soap*, ...) allocate, set required members /// - _ns1__GetGeoIP* soap_new_set__ns1__GetGeoIP(soap*, ...) allocate, set all public members /// - _ns1__GetGeoIP::soap_default(soap*) reset members to default /// - int soap_read__ns1__GetGeoIP(soap*, _ns1__GetGeoIP*) deserialize from a stream /// - int soap_write__ns1__GetGeoIP(soap*, _ns1__GetGeoIP*) serialize to a stream /// - _ns1__GetGeoIP* _ns1__GetGeoIP::soap_dup(soap*) returns deep copy of _ns1__GetGeoIP, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__GetGeoIP::soap_del() deep deletes _ns1__GetGeoIP data members, use only after _ns1__GetGeoIP::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__GetGeoIP { public: /// Element "IPAddress" of XSD type xs:string. std::string* IPAddress 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webservicex.net/":GetGeoIPResponse /// @brief "http://www.webservicex.net/":GetGeoIPResponse is a complexType. /// /// class _ns1__GetGeoIPResponse operations: /// - _ns1__GetGeoIPResponse* soap_new__ns1__GetGeoIPResponse(soap*) allocate /// - _ns1__GetGeoIPResponse* soap_new__ns1__GetGeoIPResponse(soap*, int num) allocate array /// - _ns1__GetGeoIPResponse* soap_new_req__ns1__GetGeoIPResponse(soap*, ...) allocate, set required members /// - _ns1__GetGeoIPResponse* soap_new_set__ns1__GetGeoIPResponse(soap*, ...) allocate, set all public members /// - _ns1__GetGeoIPResponse::soap_default(soap*) reset members to default /// - int soap_read__ns1__GetGeoIPResponse(soap*, _ns1__GetGeoIPResponse*) deserialize from a stream /// - int soap_write__ns1__GetGeoIPResponse(soap*, _ns1__GetGeoIPResponse*) serialize to a stream /// - _ns1__GetGeoIPResponse* _ns1__GetGeoIPResponse::soap_dup(soap*) returns deep copy of _ns1__GetGeoIPResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__GetGeoIPResponse::soap_del() deep deletes _ns1__GetGeoIPResponse data members, use only after _ns1__GetGeoIPResponse::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__GetGeoIPResponse { public: /// Element "GetGeoIPResult" of XSD type "http://www.webservicex.net/":GeoIP. ns1__GeoIP* GetGeoIPResult 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webservicex.net/":GetGeoIPContext /// @brief "http://www.webservicex.net/":GetGeoIPContext is a complexType. /// /// class _ns1__GetGeoIPContext operations: /// - _ns1__GetGeoIPContext* soap_new__ns1__GetGeoIPContext(soap*) allocate /// - _ns1__GetGeoIPContext* soap_new__ns1__GetGeoIPContext(soap*, int num) allocate array /// - _ns1__GetGeoIPContext* soap_new_req__ns1__GetGeoIPContext(soap*, ...) allocate, set required members /// - _ns1__GetGeoIPContext* soap_new_set__ns1__GetGeoIPContext(soap*, ...) allocate, set all public members /// - _ns1__GetGeoIPContext::soap_default(soap*) reset members to default /// - int soap_read__ns1__GetGeoIPContext(soap*, _ns1__GetGeoIPContext*) deserialize from a stream /// - int soap_write__ns1__GetGeoIPContext(soap*, _ns1__GetGeoIPContext*) serialize to a stream /// - _ns1__GetGeoIPContext* _ns1__GetGeoIPContext::soap_dup(soap*) returns deep copy of _ns1__GetGeoIPContext, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__GetGeoIPContext::soap_del() deep deletes _ns1__GetGeoIPContext data members, use only after _ns1__GetGeoIPContext::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__GetGeoIPContext { public: /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /// @brief Top-level root element "http://www.webservicex.net/":GetGeoIPContextResponse /// @brief "http://www.webservicex.net/":GetGeoIPContextResponse is a complexType. /// /// class _ns1__GetGeoIPContextResponse operations: /// - _ns1__GetGeoIPContextResponse* soap_new__ns1__GetGeoIPContextResponse(soap*) allocate /// - _ns1__GetGeoIPContextResponse* soap_new__ns1__GetGeoIPContextResponse(soap*, int num) allocate array /// - _ns1__GetGeoIPContextResponse* soap_new_req__ns1__GetGeoIPContextResponse(soap*, ...) allocate, set required members /// - _ns1__GetGeoIPContextResponse* soap_new_set__ns1__GetGeoIPContextResponse(soap*, ...) allocate, set all public members /// - _ns1__GetGeoIPContextResponse::soap_default(soap*) reset members to default /// - int soap_read__ns1__GetGeoIPContextResponse(soap*, _ns1__GetGeoIPContextResponse*) deserialize from a stream /// - int soap_write__ns1__GetGeoIPContextResponse(soap*, _ns1__GetGeoIPContextResponse*) serialize to a stream /// - _ns1__GetGeoIPContextResponse* _ns1__GetGeoIPContextResponse::soap_dup(soap*) returns deep copy of _ns1__GetGeoIPContextResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) /// - _ns1__GetGeoIPContextResponse::soap_del() deep deletes _ns1__GetGeoIPContextResponse data members, use only after _ns1__GetGeoIPContextResponse::soap_dup(NULL) (use soapcpp2 -Ed) class _ns1__GetGeoIPContextResponse { public: /// Element "GetGeoIPContextResult" of XSD type "http://www.webservicex.net/":GeoIP. ns1__GeoIP* GetGeoIPContextResult 0; ///< Optional element. /// A handle to the soap struct context that manages this instance when instantiated by a context or NULL otherwise (automatically set). struct soap *soap ; }; /******************************************************************************\ * * * Additional Top-Level Elements * * http://www.webservicex.net/ * * * \******************************************************************************/ /// @brief Top-level root element "http://www.webservicex.net/":GeoIP of XSD type "http://www.webservicex.net/":GeoIP. /// @note Use wsdl2h option -g to auto-generate a top-level root element declaration and processing code. /******************************************************************************\ * * * Additional Top-Level Attributes * * http://www.webservicex.net/ * * * \******************************************************************************/ /******************************************************************************\ * * * Services * * * \******************************************************************************/ // This service supports SOAP 1.2 namespaces: #import "soap12.h" //gsoap ns1 service name: GeoIPServiceSoap //gsoap ns1 service type: GeoIPServiceSoap //gsoap ns1 service port: http://www.webservicex.net/geoipservice.asmx //gsoap ns1 service namespace: http://www.webservicex.net/ //gsoap ns1 service transport: http://schemas.xmlsoap.org/soap/http /** @mainpage Service Definitions @section Service_bindings Service Bindings - @ref GeoIPServiceSoap @section Service_more More Information - @ref page_notes "Notes" - @ref page_XMLDataBinding "XML Data Binding" - @ref SOAP_ENV__Header "SOAP Header Content" (when applicable) - @ref SOAP_ENV__Detail "SOAP Fault Detail Content" (when applicable) */ /** @page GeoIPServiceSoap Binding "GeoIPServiceSoap" @section GeoIPServiceSoap_operations Operations of Binding "GeoIPServiceSoap" - @ref __ns1__GetGeoIP - @ref __ns1__GetGeoIPContext - @ref __ns1__GetGeoIP_ - @ref __ns1__GetGeoIPContext_ @section GeoIPServiceSoap_ports Default endpoints of Binding "GeoIPServiceSoap" - http://www.webservicex.net/geoipservice.asmx @note Multiple service bindings collected as one, use wsdl2h option -Nname to produce a separate service for each binding */ /******************************************************************************\ * * * Service Binding * * GeoIPServiceSoap * * * \******************************************************************************/ /******************************************************************************\ * * * Service Operation * * __ns1__GetGeoIP * * * \******************************************************************************/ /** Operation "__ns1__GetGeoIP" of service binding "GeoIPServiceSoap". GeoIPService - GetGeoIP enables you to easily look up countries by IP addresses - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/geoipservice.asmx - Default SOAP action or REST location path: - "http://www.webservicex.net/GetGeoIP" - Addressing input action: "http://www.webservicex.net/GetGeoIP" - Addressing output action: "http://www.webservicex.net/GetGeoIPResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__GetGeoIP( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__GetGeoIP* ns1__GetGeoIP, // output parameters: _ns1__GetGeoIPResponse &ns1__GetGeoIPResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__GetGeoIP( struct soap *soap, // input parameters: _ns1__GetGeoIP* ns1__GetGeoIP, // output parameters: _ns1__GetGeoIPResponse &ns1__GetGeoIPResponse ); @endcode C++ proxy class (defined in soapGeoIPServiceSoapProxy.h generated with soapcpp2): @code class GeoIPServiceSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapGeoIPServiceSoapService.h generated with soapcpp2): @code class GeoIPServiceSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: GetGeoIP SOAP //gsoap ns1 service method-style: GetGeoIP document //gsoap ns1 service method-encoding: GetGeoIP literal //gsoap ns1 service method-input-action: GetGeoIP http://www.webservicex.net/GetGeoIP //gsoap ns1 service method-output-action: GetGeoIP http://www.webservicex.net/GetGeoIPResponse int __ns1__GetGeoIP( _ns1__GetGeoIP* ns1__GetGeoIP, ///< Input parameter _ns1__GetGeoIPResponse &ns1__GetGeoIPResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__GetGeoIPContext * * * \******************************************************************************/ /** Operation "__ns1__GetGeoIPContext" of service binding "GeoIPServiceSoap". GeoIPService - GetGeoIPContext enables you to easily look up countries by Context - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/geoipservice.asmx - Default SOAP action or REST location path: - "http://www.webservicex.net/GetGeoIPContext" - Addressing input action: "http://www.webservicex.net/GetGeoIPContext" - Addressing output action: "http://www.webservicex.net/GetGeoIPContextResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__GetGeoIPContext( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__GetGeoIPContext* ns1__GetGeoIPContext, // output parameters: _ns1__GetGeoIPContextResponse &ns1__GetGeoIPContextResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__GetGeoIPContext( struct soap *soap, // input parameters: _ns1__GetGeoIPContext* ns1__GetGeoIPContext, // output parameters: _ns1__GetGeoIPContextResponse &ns1__GetGeoIPContextResponse ); @endcode C++ proxy class (defined in soapGeoIPServiceSoapProxy.h generated with soapcpp2): @code class GeoIPServiceSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapGeoIPServiceSoapService.h generated with soapcpp2): @code class GeoIPServiceSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: GetGeoIPContext SOAP //gsoap ns1 service method-style: GetGeoIPContext document //gsoap ns1 service method-encoding: GetGeoIPContext literal //gsoap ns1 service method-input-action: GetGeoIPContext http://www.webservicex.net/GetGeoIPContext //gsoap ns1 service method-output-action: GetGeoIPContext http://www.webservicex.net/GetGeoIPContextResponse int __ns1__GetGeoIPContext( _ns1__GetGeoIPContext* ns1__GetGeoIPContext, ///< Input parameter _ns1__GetGeoIPContextResponse &ns1__GetGeoIPContextResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__GetGeoIP_ * * * \******************************************************************************/ /** Operation "__ns1__GetGeoIP_" of service binding "GeoIPServiceSoap". GeoIPService - GetGeoIP enables you to easily look up countries by IP addresses - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/geoipservice.asmx - Default SOAP action or REST location path: - "http://www.webservicex.net/GetGeoIP" - Addressing input action: "http://www.webservicex.net/GetGeoIP" - Addressing output action: "http://www.webservicex.net/GetGeoIPResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__GetGeoIP_( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__GetGeoIP* ns1__GetGeoIP, // output parameters: _ns1__GetGeoIPResponse &ns1__GetGeoIPResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__GetGeoIP_( struct soap *soap, // input parameters: _ns1__GetGeoIP* ns1__GetGeoIP, // output parameters: _ns1__GetGeoIPResponse &ns1__GetGeoIPResponse ); @endcode C++ proxy class (defined in soapGeoIPServiceSoapProxy.h generated with soapcpp2): @code class GeoIPServiceSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapGeoIPServiceSoapService.h generated with soapcpp2): @code class GeoIPServiceSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: GetGeoIP_ SOAP //gsoap ns1 service method-style: GetGeoIP_ document //gsoap ns1 service method-encoding: GetGeoIP_ literal //gsoap ns1 service method-input-action: GetGeoIP_ http://www.webservicex.net/GetGeoIP //gsoap ns1 service method-output-action: GetGeoIP_ http://www.webservicex.net/GetGeoIPResponse int __ns1__GetGeoIP_( _ns1__GetGeoIP* ns1__GetGeoIP, ///< Input parameter _ns1__GetGeoIPResponse &ns1__GetGeoIPResponse ///< Output parameter ); /******************************************************************************\ * * * Service Operation * * __ns1__GetGeoIPContext_ * * * \******************************************************************************/ /** Operation "__ns1__GetGeoIPContext_" of service binding "GeoIPServiceSoap". GeoIPService - GetGeoIPContext enables you to easily look up countries by Context - SOAP document/literal style messaging - Default endpoints: - http://www.webservicex.net/geoipservice.asmx - Default SOAP action or REST location path: - "http://www.webservicex.net/GetGeoIPContext" - Addressing input action: "http://www.webservicex.net/GetGeoIPContext" - Addressing output action: "http://www.webservicex.net/GetGeoIPContextResponse" C stub function (defined in soapClient.c[pp] generated by soapcpp2): @code int soap_call___ns1__GetGeoIPContext_( struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // input parameters: _ns1__GetGeoIPContext* ns1__GetGeoIPContext, // output parameters: _ns1__GetGeoIPContextResponse &ns1__GetGeoIPContextResponse ); @endcode C server function (called from the service dispatcher defined in soapServer.c[pp]): @code int __ns1__GetGeoIPContext_( struct soap *soap, // input parameters: _ns1__GetGeoIPContext* ns1__GetGeoIPContext, // output parameters: _ns1__GetGeoIPContextResponse &ns1__GetGeoIPContextResponse ); @endcode C++ proxy class (defined in soapGeoIPServiceSoapProxy.h generated with soapcpp2): @code class GeoIPServiceSoapProxy; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; C++ service class (defined in soapGeoIPServiceSoapService.h generated with soapcpp2): @code class GeoIPServiceSoapService; @endcode Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; */ //gsoap ns1 service method-protocol: GetGeoIPContext_ SOAP //gsoap ns1 service method-style: GetGeoIPContext_ document //gsoap ns1 service method-encoding: GetGeoIPContext_ literal //gsoap ns1 service method-input-action: GetGeoIPContext_ http://www.webservicex.net/GetGeoIPContext //gsoap ns1 service method-output-action: GetGeoIPContext_ http://www.webservicex.net/GetGeoIPContextResponse int __ns1__GetGeoIPContext_( _ns1__GetGeoIPContext* ns1__GetGeoIPContext, ///< Input parameter _ns1__GetGeoIPContextResponse &ns1__GetGeoIPContextResponse ///< Output parameter ); /** @page GeoIPServiceSoap Binding "GeoIPServiceSoap" @section GeoIPServiceSoap_policy_enablers Policy Enablers of Binding "GeoIPServiceSoap" None specified. */ /******************************************************************************\ * * * XML Data Binding * * * \******************************************************************************/ /** @page page_XMLDataBinding XML Data Binding SOAP/XML services use data bindings contractually bound by WSDL and auto- generated by wsdl2h and soapcpp2 (see Service Bindings). Plain data bindings are adopted from XML schemas as part of the WSDL types section or when running wsdl2h on a set of schemas to produce non-SOAP-based XML data bindings. The following readers and writers are C/C++ data type (de)serializers auto- generated by wsdl2h and soapcpp2. Run soapcpp2 on this file to generate the (de)serialization code, which is stored in soapC.c[pp]. Include "soapH.h" in your code to import these data type and function declarations. Only use the soapcpp2-generated files in your project build. Do not include the wsdl2h- generated .h file in your code. Data can be read and deserialized from: - an int file descriptor, using soap->recvfd = fd - a socket, using soap->socket = (int)... - a C++ stream (istream, stringstream), using soap->is = (istream*)... - a C string, using soap->is = (const char*)... - any input, using the soap->frecv() callback Data can be serialized and written to: - an int file descriptor, using soap->sendfd = (int)... - a socket, using soap->socket = (int)... - a C++ stream (ostream, stringstream), using soap->os = (ostream*)... - a C string, using soap->os = (const char**)... - any output, using the soap->fsend() callback The following options are available for (de)serialization control: - soap->encodingStyle = NULL; to remove SOAP 1.1/1.2 encodingStyle - soap_mode(soap, SOAP_XML_TREE); XML without id-ref (no cycles!) - soap_mode(soap, SOAP_XML_GRAPH); XML with id-ref (including cycles) - soap_set_namespaces(soap, struct Namespace *nsmap); to set xmlns bindings @section ns1 Top-level root elements of schema "http://www.webservicex.net/" - @ref _ns1__GetGeoIP @code // Reader (returns SOAP_OK on success): soap_read__ns1__GetGeoIP(struct soap*, _ns1__GetGeoIP*); // Writer (returns SOAP_OK on success): soap_write__ns1__GetGeoIP(struct soap*, _ns1__GetGeoIP*); @endcode - @ref _ns1__GetGeoIPResponse @code // Reader (returns SOAP_OK on success): soap_read__ns1__GetGeoIPResponse(struct soap*, _ns1__GetGeoIPResponse*); // Writer (returns SOAP_OK on success): soap_write__ns1__GetGeoIPResponse(struct soap*, _ns1__GetGeoIPResponse*); @endcode - @ref _ns1__GetGeoIPContext @code // Reader (returns SOAP_OK on success): soap_read__ns1__GetGeoIPContext(struct soap*, _ns1__GetGeoIPContext*); // Writer (returns SOAP_OK on success): soap_write__ns1__GetGeoIPContext(struct soap*, _ns1__GetGeoIPContext*); @endcode - @ref _ns1__GetGeoIPContextResponse @code // Reader (returns SOAP_OK on success): soap_read__ns1__GetGeoIPContextResponse(struct soap*, _ns1__GetGeoIPContextResponse*); // Writer (returns SOAP_OK on success): soap_write__ns1__GetGeoIPContextResponse(struct soap*, _ns1__GetGeoIPContextResponse*); @endcode - (use wsdl2h option -g to auto-generate type _ns1__GeoIP) */ /* End of GeoIPService.h */ gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/0000755000175000017500000000000013227173555021075 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/.DS_Store0000644000175000017500000001400413227173555022557 0ustar ellertellertBud1%  @ @ @ @ E%DSDB` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/0000755000175000017500000000000013227173555021737 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/.DS_Store0000644000175000017500000001400413227173555023421 0ustar ellertellertBud1 PServiGeoIPService.xcodeprojlg1ScompGeoIPService.xcodeprojmoDDdutc 6GeoIPService.xcodeprojmodDdutcGeoIPService.xcodeprojph1Scomp  @ @ @ @ E DSDB ` @ @ @gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/main.mm0000644000175000017500000000041313227173555023214 0ustar ellertellert// // main.m // #import #import "AppDelegate.h" #include "../../GeoIPServiceSoap.nsmap" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/ViewController.mm0000644000175000017500000000631713227173555025257 0ustar ellertellert// // ViewController.mm // #import "ViewController.h" #include "soapGeoIPServiceSoapProxy.h" #import "soapStub.h" #import "gsoapios.h" using namespace std; //@interface ViewController () //@end typedef struct _ns1__GetGeoIP RequestStruct; typedef struct _ns1__GetGeoIPResponse ResponseStruct; @implementation ViewController @synthesize IPAddress; - (IBAction)buttonPressed:(id)sender { RequestStruct ip; ResponseStruct response; //creates proxy GeoIPServiceSoapProxy service(SOAP_IO_DEFAULT|SOAP_IO_KEEPALIVE|SOAP_XML_INDENT|SOAP_XML_STRICT); soap_init(service.soap); //sets IPAddress from input std::string ipAdd = std::string((char *)[IPAddress.text UTF8String]); ip.IPAddress = &ipAdd; // ----- register plugin for callbacks ------ soap_register_plugin(service.soap, soap_ios); // Optional: timeout internal, the default is 60.0 seconds soap_ios_settimeoutinterval(service.soap, 30.0); //call web service int status = service.GetGeoIP(&ip, response); string* result; string err_msg = "Invalid IP address"; if ( status == SOAP_OK) { NSString *soapResult; NSString *titleMsg; if(response.GetGeoIPResult && response.GetGeoIPResult->CountryName) { result = response.GetGeoIPResult->CountryName; } else { result = &err_msg; } soapResult = [NSString stringWithUTF8String:result->c_str()]; titleMsg = [NSString stringWithFormat: @"%@", @"Country Found"]; //show result as an alert UIAlertController * alert = [UIAlertController alertControllerWithTitle:titleMsg message:soapResult preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* cancelButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}]; [alert addAction: cancelButton]; [self presentViewController:alert animated:YES completion:nil]; } else { service.soap_stream_fault(std::cerr); } service.destroy(); } // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - (void)viewDidUnload { // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { // [ipAddress release]; // [super dealloc]; } @end gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/AppDelegate.mm0000644000175000017500000000365513227173555024456 0ustar ellertellert// // AppDelegate.mm // #import "AppDelegate.h" #import "ViewController.h" @implementation AppDelegate @synthesize window; @synthesize viewController; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. return YES; } - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } @end gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Assets.xcassets/0000755000175000017500000000000013227173555025035 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Assets.xcassets/AppIcon.appiconset/0000755000175000017500000000000013227173555030532 5ustar ellertellert././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Assets.xcassets/AppIcon.appiconset/Contents.jsongsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Assets.xcassets/AppIcon.appiconset/Contents.js0000644000175000017500000000206513227173555032670 0ustar ellertellert{ "images" : [ { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "3x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "1x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "2x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "1x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "2x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "1x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } }gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/0000755000175000017500000000000013227173555026217 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/0000755000175000017500000000000013227173555032215 5ustar ellertellert././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/contents.xcworkspacedatagsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/con0000644000175000017500000000031413227173555032715 0ustar ellertellert ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/xcuserdata/gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/xcu0000755000175000017500000000000013227173555032735 5ustar ellertellert././@LongLink0000644000000000000000000000021000000000000011574 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/xcuserdata/bethanysanders.xcuserdatad/gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/xcu0000755000175000017500000000000013227173555032735 5ustar ellertellert././@LongLink0000644000000000000000000000024600000000000011605 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/xcuserdata/bethanysanders.xcuserdatad/UserInterfaceState.xcuserstategsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.xcworkspace/xcu0000644000175000017500000006657313227173555032760 0ustar ellertellertbplist00 2 3X$versionX$objectsY$archiverT$top'()*+,-./39QRSTUVWXYZ[\]uvwxyz{|}~      !"#$%&*016>?@HIJK[\]^_`aeimqrvw{   $6789:;<=>JKLMNOPQW\bcdjklpqrstx|} "&*+,059=AGLTU]^lmnopq #&,2:;<DEFNOWXYZnopqrstuv  $)*+34567;GHIJKQV^_`abjk{|}~   !%&*+/0459:>?KLMNOPQR^_`abcdeqrst  !"#/01=>?@LMNO[\]^jkltxy}~ %+/59?CIJPQRfghijklmnopqrsy}~          " # ' ( , - 1U$null WNS.keysZNS.objectsV$class R@_$3B3917D7-FE42-4400-A5CE-8F96E6580EA1_IDEWorkspaceDocument &  ! $% 14^IDEWindowFrame_!IDEOrderedWorkspaceTabControllers_>IDEWorkspaceTabController_89BFACBA-62A5-4D74-85D1-75DCD1C96324_,IDEWorkspaceWindowControllerUniqueIdentifier_IDEActiveWorkspaceTabController_IDEWindowToolbarIsVisible_IDEWindowTabBarIsVisible_{{4, 0}, {1397, 877}} 024567Z$classnameX$classesWNSArray68XNSObject :E&;<=>?@ABCDF$HIJKL$NODNQ24[IDETabLabel_IDEShowNavigator]IDEEditorArea_-IDEWorkspaceTabControllerUtilityAreaSplitView_IDENavigatorArea_,IDEWorkspaceTabControllerDesignAreaSplitView\ViewDebugger_IDEShowUtilities^IDETabFilePath_AssistantEditorsLayout_GeoIPService.xcodeproj ^i&_`abcdefgh !"#$%&jk%$OOpqrs'E1224_IDEDefaultDebugArea_IDEEditorMode_Standard_ShowDebuggerArea]IDEShowEditor_VersionEditorSubmodeZEditorMode_DebuggerSplitView_IDEEditorMode_Genius_ DefaultPersistentRepresentationsZlayoutTree &()*+,5784XLeftViewYRightViewZLayoutMode_IDESplitViewDebugArea &-./0%O$1234_VariablesViewShowsRawValues_VariablesViewSelectedScope_ VariablesViewViewSortDescriptors_VariablesViewShowsType 245_NSMutableDictionary8\NSDictionary &6O24_ConsoleFilterMode &9:4_DVTSplitViewItems ;AD <=€>?@]DVTIdentifier_DVTViewMagnitudeXLeftView#@w45ɢ8 <=ЀBC@YRightView#@~45^NSMutableArray68 &ـFۀG4_%EditorLayout_PersistentRepresentation &HI4TMain JKLOM2@_)EditorLayout_StateSavingStateDictionaries_EditorLayout_Selected_EditorLayout_Geometry 2N &OPQRSTUVW4\FileDataType[EditorState_ArchivableRepresentation_NavigableItemName_DocumentNavigableItemName_DocumentExtensionIdentifier[DocumentURL_com.apple.xcode.project XYZ[\]^_hix@_&Xcode3ProjectEditor_Xcode3TargetEditor_(Xcode3ProjectEditor.sourceList.splitview_,Xcode3ProjectEditorPreviousTargetEditorClass_+Xcode3ProjectEditor_Xcode3BuildPhasesEditor_,Xcode3ProjectEditorSelectedDocumentLocations_-Xcode3ProjectEditor_Xcode3BuildSettingsEditor '(&4 +-&,`.a4_DVTSplitViewItems 234beD 7:<=;?_#IDEWorkspaceTabControllerLayoutTree@8_#IDEWorkspaceTabControllerLayoutTree BD&9E4 HIJD MP<=ERf@#@ VY<=E[f@#@n _e&`abcd    fghij "-454_ Xcode.IDEKit.Navigator.Structure_"Xcode.IDEKit.Navigator.Breakpoints_Xcode.IDEKit.Navigator.Debug_SelectedNavigator_Xcode.IDEKit.Navigator.Issues ry&stuvwxz{%%~11 4_IDEExpandedItemsTree_,IDENavigatorExpandedItemsBeforeFilteringTree_!IDERecentDocumentFilteringEnabled_IDESCMStatusFilteringEnabled^IDEVisibleRect_IDESelectedTree @_IDEValuesAsTree &4\GeoIPService &4PTapp2 &4_Supporting Files @ &4_{{0, 0}, {259, 782}} !@ &4 &ā#$%&%Ɂ'1(+4^IDEVisibleRect_%IDEBreakpointNavigatorFilterOnEnabled_IDESelectedTree_IDECollapsedtemsTree_{{0, 0}, {259, 782}} ҁ)ԁ*@_IDEValuesAsTree &4 ҁ)߁,@ &4 &./01%%11234_IDEShowOnlyInterestingContent_IDEShowOnlyRunningBlocks^IDEVisibleRect_IDEStackCompressionValue_{{0, 0}, {259, 782}}_ Xcode.IDEKit.Navigator.Structure &w6789:;<=%%  % 1>?@1AB1C4_IDEErrorFilteringEnabled_IDECollapsedFiles_IDEExpandedIssues^IDEShowsByType_IDESelectedNavigables_IDECollapsedTypes_IDERecentFilteringEnabled_IDECollapsedGroups_{{0, 0}, {259, 753}} pu pu D !pu $pu ')&9*E4 -./0FILD 36<=78GH@_IDENavigatorArea#@p@ =@<=ABJK@]IDEEditorArea#@h GJ<=K8MH@_IDEUtilitiesArea PS&QROP$$4_ShowsOnlyVisibleViewObjects_ShowsOnlyInterestingViewObjects_J/Users/bethanysanders/Documents/work/app2/app2/app2/GeoIPService.xcodeproj [d&\]^_`abcSTUVWXYZ$fghijkl[sv4_BreakpointsActivated_DefaultEditorStatesForURLs\ActiveScheme_ActiveRunDestination_DefaultEditorFrameSizeForURLs_0LastCompletedPersistentSchemeBasedActivityReport_DocumentWindows_RecentEditorDocumentURLs w}&xy3|\]ƀ^~_i;[4_'Xcode.IDEKit.EditorDocument.PlistEditor_7Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project_'Xcode.IDEKit.EditorDocument.LogDocument &`b4 a_Efile:///Users/bethanysanders/Documents/work/app2/app2/app2/Info.plist &cde3fg4_IDE_PLIST_EDITOR_SELECTION_KEY_ IDE_PLIST_EDITOR_VISIBLERECT_KEY_IDE_PLIST_EDITOR_EXPANSION_KEY_{{0, 0}, {877, 787}} phu D &jkmoy4 z l_Lfile:///Users/bethanysanders/Documents/work/app2/app2/GeoIPService.xcodeproj n_Dfile:///Users/bethanysanders/Documents/work/app2/app2/app2.xcodeproj &ZY[\]Xp_iq^4_Xcode3BuildPhasesEditor 2ҁr tsz#Ac9K &ހ}~uvw4_ Xcode3BuildPhasesEditorLocations_Xcode3BuildPhasesEditor 2x &4 &z{|}~4_(Xcode3ProjectEditor.sourceList.splitview_,Xcode3ProjectEditorPreviousTargetEditorClass_,Xcode3ProjectEditorSelectedDocumentLocations_&Xcode3ProjectEditor_Xcode3TargetEditor &4_DVTSplitViewItems D    <d@]DVTIdentifier_DVTViewMagnitude_!sourceListSplitViewItemIdentifier   @P#@`_Xcode3TargetEditor !2" %&'_Lfile:///Users/bethanysanders/Documents/work/app2/app2/GeoIPService.xcodeproj#AJ ,/&-.014VEditorVTarget_Xcode3TargetEditor\GeoIPService 89&4 <A&=>?@BCDE4_(Xcode3ProjectEditor.sourceList.splitview_+Xcode3ProjectEditor_Xcode3BuildPhasesEditor_,Xcode3ProjectEditorSelectedDocumentLocations_,Xcode3ProjectEditorPreviousTargetEditorClass LN&9O4 RSTD WZXY[\@]DVTIdentifier_DVTViewMagnitude_!sourceListSplitViewItemIdentifier#@e@ cfXYh@#@( ls&mnopqrtuvwXyv4_58BCAD791D4A7B12009ED67E_58BCAD761D4A7B12009ED67E_58BCAD781D4A7B12009ED67E_+Xcode3BuildPhasesEditorDisclosedNamesKey2.0_&kXcode3BuildPhasesEditorScrollPointKey_58BCAD771D4A7B12009ED67E &4 &4 &4 pu_Link Binary With Libraries &4 2 _Efile:///Users/bethanysanders/Documents/work/app2/app2/app2.xcodeproj/#AJ}0 &-.4_ Xcode3BuildPhasesEditorLocations_Xcode3BuildPhasesEditor 2 &4_Xcode3BuildPhasesEditor &ʁÁŁǁɁˁ́ρсӁՁׁفہݯށ߁ %),0484 _Cfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.cpp _:file:///Users/bethanysanders/Documents/work/app2/soapC.cpp _;file:///Users/bethanysanders/Documents/work/app2/soapStub.h _Wfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.h _Kfile:///Users/bethanysanders/Documents/work/app2/app2/app2/ViewController.m _Afile:///Users/bethanysanders/Documents/work/app2/app2/app2/main.m _Afile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.h _Lfile:///Users/bethanysanders/Documents/work/app2/soapGeoIPServiceSoapProxy.h  _Efile:///Users/bethanysanders/Documents/work/app2/app2/app2/Info.plist _Ifile:///Users/bethanysanders/Documents/work/app2/app2/app2/AppDelegate.mm _Lfile:///Users/bethanysanders/Documents/work/app2/app2/app2/ViewController.mm _8file:///Users/bethanysanders/Documents/work/app2/soapH.h _Xfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.mm $_Bfile:///Users/bethanysanders/Documents/work/app2/app2/app2/main.mm )_Hfile:///Users/bethanysanders/Documents/work/app2/app2/app2/AppDelegate.m ._Nfile:///Users/bethanysanders/Documents/work/app2/soapGeoIPServiceSoapProxy.cpp 3_Hfile:///Users/bethanysanders/Documents/work/app2/app2/app2/AppDelegate.h 8_Kfile:///Users/bethanysanders/Documents/work/app2/app2/app2/ViewController.h =_Gfile:///Users/bethanysanders/Documents/work/app2/GeoIPServiceSoap.nsmap @E&ABCDFG%I14_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A[2\{1328, 2032}Y{2583, 2} SX&TUVWYZ%\14_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#A[XZY{0, 1885}W{58, 0} fk&TUVWlm%o14#A[N$̼Y{0, 2766}W{13, 0} uz&vwxy{|%~14_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#AYlY{0, 2513}Y{5955, 0} &@ABC%X1v4#AJ| X{0, 499} &@ABC%X1v4#AJ~X{0, 339} &TUVW%14#A[]zY{0, 2650}Y{2459, 0} &TUVW%14#A[RΞY{0, 3459}W{30, 0} &Ɓ    %ˁ14_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#ARtC&Y{0, 1614}Z{175, 115} &TUVW%ށ14#A[GgY{0, 1965}W{20, 0} &TUVW%14#A[E'Y{0, 1730}W{24, 0} &TUVW%14#A[PReY{0, 2286}W{10, 0} & ! % "#1$4_PrimaryDocumentTimestamp_$PrimaryDocumentVisibleCharacterRange]HideAllIssues_%PrimaryDocumentSelectedCharacterRange#Ac3Y{0, 2646}V{2, 0} &TUVW%&'1(4#A[CaX{0, 267}W{18, 0} $)&@ABC*+%X*+1v4#AJ{MY{0, 2036} 27&TUVW89%;-.1/4#A[T>Y{0, 2048}X{0, 639} AF&TUVWGH%J12134#A[I\X{0, 321}W{22, 0} PU&TUVWVW%Y56174#A[FX{0, 228}W{27, 0} _d&TUVWef%X9:1v4#A[Z9BX{0, 598} mp&no<>qr@H4 w=_]file:///Users/bethanysanders/Documents/work/app2/app2/app2/Base.lproj/LaunchScreen.storyboard |?_Ufile:///Users/bethanysanders/Documents/work/app2/app2/app2/Base.lproj/Main.storyboard &πЀрҀӥ3ցABC4_IBOutlineViewController &ءـ4 &Āۀ܀݀ޤ߁DEG4Y{-3, 400} 2FZ01J-lp-oVM &4 &IJKLMNցMPR4_SelectedMemberIdentifiers_EditedMemberConfiguration_SelectionProvider_#IBStoryboardStructureViewController_IBCanvasViewController 2OZ8bC-Xf-vdC &ÁQـ4_LastKnownOutlineViewWidth &́STUVҀ߁WXZ4ZZoomFactor[CenterPoint_EditedTopLevelMemberIDs_$ObjectIDToLastKnownCanvasPositionMapZ{183, 395} 2ہYZBYZ-38-t0r &4 &\^`bko4 ]_2x-xcode-log://30F0618E-9F03-4310-9671-8C08EE54CA92 __2x-xcode-log://2EF4CF33-5E96-463B-9A5B-EEA196BA0083 a_2x-xcode-log://EAD44649-42B0-4CA6-91D4-1FF027308A40 &cd4_SelectedDocumentLocations 2e   _expandTranscriptYindexPathj]f _NSIndexPathLength_NSIndexPathDatagi WNS.dataCh45]NSMutableData8VNSData45[NSIndexPath8[NSIndexPath45!"_IDELogDocumentLocation#$8_IDELogDocumentLocation_DVTDocumentLocation &(&c)l4 ,2-m  4j_n6 7_NSIndexPathValuei :<&c=p4 @2Aq  G4jrn_2x-xcode-log://EAD44649-42B0-4CA6-91D4-1FF027308A40 KMLtNu@]IDENameStringTapp2 S\TUVWXYZ[wxyz{|}~]$%`abc$1@YtargetSDKZisEligible_targetDeviceIsWireless_targetDeviceLocation_targetArchitecture_targetDeviceFamily_targetDeviceModelCode_targetDeviceIsConcrete_iphonesimulator9.3_>dvtdevice-iphonesimulator:949C3351-857E-4EF6-A71D-9360DB1F9CE8Vx86_64ViPhoneYiPhone8,2 tv&uw4 |_Hfile:///Users/bethanysanders/Documents/work/app2/app2/app2/AppDelegate.m @UwidthVheight#@#@ &4_0IDEActivityReportCompletionSummaryStringSegments_IDEActivityReportOptions_IDEActivityReportTitle D &4_&IDEActivityReportStringSegmentPriority_+IDEActivityReportStringSegmentBackSeparator_)IDEActivityReportStringSegmentStringValue#@c % \GeoIPService &4#@Q UBuild &4#@R: &Ѐ߁4c %  Oabplist00;Troot#-27EKR[boqsu!$-4<ILNPU]`eruz?Áh &݁7774_"IDEActivityReportStringSegmentType_"IDEActivityReportStringSegmentDate_'IDEActivityReportStringSegmentDateStyle_'IDEActivityReportStringSegmentTimeStyle WNS.time#A[^45VNSDate8_8/10/16 at 3:28 PMj\GeoIPService  D    jD  _Xfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/ios_plugin/ios_plugin/gsoapios.mm  _Cfile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.cpp  _Afile:///Users/bethanysanders/Downloads/gsoap-2.8/gsoap/stdsoap2.h  _Gfile:///Users/bethanysanders/Documents/work/app2/GeoIPServiceSoap.nsmap  _:file:///Users/bethanysanders/Documents/work/app2/soapC.cpp  !_Nfile:///Users/bethanysanders/Documents/work/app2/soapGeoIPServiceSoapProxy.cpp  &_Lfile:///Users/bethanysanders/Documents/work/app2/soapGeoIPServiceSoapProxy.h  +_8file:///Users/bethanysanders/Documents/work/app2/soapH.h  0_;file:///Users/bethanysanders/Documents/work/app2/soapStub.h_NSKeyedArchiver 4 5UState"+5:?,CP_acegikm|~/Qm   .0247:=@BEGIUhv   0 I J W l n p r t v x z | ~   1 H k v     , I l     # , 1 3 5 7 D I K M R T V X f y    - : = ? B D F K X _ a c e l n p r t  !#%')6B]q  ;f"/013@CEHJL`inprt!#%')+-:<>@BDFHc~ )*+-:;<>GJLNktDMZacegnprtv}?Ubcdf{%068:<IRqv%*@Ity !&/246MZ]_bdfotvxz  +0249;=?IV]_acjlnpr!#%'4@[o:Hpy #anprt "$-024KX_acelnprt}')+-/13Ok,579;=FHJLNP[g,.02DFSUWY^kmoqz ) 6 8 : < E H J L c p q r t !! !0!!@!B!D!Y![!]!_!a!c!l!o!q!s!!!!!!!!!!!!!!!!!!!!"""B"K"q"v"""""""""""""""""""""## # # #####"#/#:#=#@#C#F#I#T#W#Z#]#`#c#e####$$ $$$ $#$&$)$,$9$<$?$A$C$F$I$K$b$$$$$%%%% %%%"%/%2%5%8%;%=%J%W%\%_%b%g%j%m%o%p%u%%%%%%%%%%%%%%%%%%%%%&&&& & &&&&!&$&&&3&<&?&B&E&H&Q&T&V&Y&\&^&m&&&&&&&&&&'''''' '#'&')','.';'<'='?'L'U'X'['^'a'j'l'n'q't'v''''''(($(7(:(=(@(C(F(I(L(O(R(e(g(j(m(p(r(u(x(z(}((((((()).)E)N)O)Q)Z)[)])f)g)i)r)s)u)~))))))))))))))))))))))))*** * *****&*/*<*A*C*E*J*M*P*R*e*r*w*z*}******++"+3+6+9+<+?+B+E+H+K+\+^+a+d+g+j+m+p+s+u+++++, ,2,M,Z,e,h,k,m,o,r,},,,,,,,,--)-,-/-2-5-7-D-F-H-K------------..&.=.F.I.L.N.W.X.Z.g.n.q.t.w.~............./ ////Z/g/t/v/x/z/|/~/////////////////////0000000000;0U0^0a0d0f0s0t0u0w00000000000001 191b1o1r1u1x1{1}1111111111111111222"2%2(2-202325262?2T2]2`2c2e2v2y2|22222222222233 3!3.3;3<3=3?3L3U3X3[3^3a3j3m3p3s3v3x3344/4<4?4A4D4G4I4R4W4Z4]4_4l4q4t4w4|44444444444444455 555 5#5&5)5,595<5?5B5E5G5J5L5g555566666 6-6.6/616>6?6@6B6K6N6Q6S6p6}6~66666666666667 77777#7&7(7+7-7P7j7s7v7y7{7777777777777777778888 8 8888>8A8D8G8J8M8P8S8V8Y8\8_8b8e8h8k8n8q8t8w8y8888888889$919395989v999999999:F:S:U:W:Z::::::;;;; ;Y;f;h;j;m;;;;;<<"<$<&<)>S>`>b>d>g>>>>>??!?#?%?(?r???????????????@"@+@8@B@O@X@[@^@a@d@m@p@s@u@x@z@@@@@AA AA#A&A)A,A/A8A;A>A@ACAEANAXA`AmAvAyA|AAAAAAAAAAABBB#B-B:BCBEBGBIBKBTBWBZB\B^B`BiBrBBBBBBBBBBBBBBBBBBBBBBBBBBBCC CC"C%C(C+C.C7C:C=C?CBCDCMCWC_ClCuCxC{C~CCCCCCCCCCDDD"D-D:DCDFDIDLDODXD[D^D`DcDeDnDxDDDDDDDDDDDDDDDDDDDDDDDEEEE E EEE&E3EZ@ZCZ~ZZZZZZZZ 6Zgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/project.pbxproj0000644000175000017500000005714113227173555031303 0ustar ellertellert// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ 58BCAD7F1D4A7B12009ED67E /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 58BCAD7E1D4A7B12009ED67E /* main.mm */; }; 58BCAD821D4A7B12009ED67E /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 58BCAD811D4A7B12009ED67E /* AppDelegate.mm */; }; 58BCAD851D4A7B12009ED67E /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 58BCAD841D4A7B12009ED67E /* ViewController.mm */; }; 58BCAD881D4A7B12009ED67E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 58BCAD861D4A7B12009ED67E /* Main.storyboard */; }; 58BCAD8A1D4A7B12009ED67E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 58BCAD891D4A7B12009ED67E /* Assets.xcassets */; }; 58BCAD8D1D4A7B12009ED67E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 58BCAD8B1D4A7B12009ED67E /* LaunchScreen.storyboard */; }; 58BCAD981D4A7B12009ED67E /* app2Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 58BCAD971D4A7B12009ED67E /* app2Tests.m */; }; 58BCADA31D4A7B12009ED67E /* app2UITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 58BCADA21D4A7B12009ED67E /* app2UITests.m */; }; 58BCADB61D4A7B30009ED67E /* GeoIPServiceSoap.nsmap in Resources */ = {isa = PBXBuildFile; fileRef = 58BCADB01D4A7B30009ED67E /* GeoIPServiceSoap.nsmap */; }; 58BCADB71D4A7B30009ED67E /* soapC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58BCADB11D4A7B30009ED67E /* soapC.cpp */; }; 58BCADB81D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58BCADB21D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.cpp */; }; 58D56FDE1D639227000A7EF7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58D56FDD1D639227000A7EF7 /* Foundation.framework */; }; 58D56FE01D63922F000A7EF7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58D56FDF1D63922F000A7EF7 /* CoreGraphics.framework */; }; 58D56FE21D639236000A7EF7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58D56FE11D639236000A7EF7 /* UIKit.framework */; }; 58E1592E1D526F4400744E8F /* ViewController.h in Sources */ = {isa = PBXBuildFile; fileRef = 58BCAD831D4A7B12009ED67E /* ViewController.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 58BCAD941D4A7B12009ED67E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 58BCAD721D4A7B12009ED67E /* Project object */; proxyType = 1; remoteGlobalIDString = 58BCAD791D4A7B12009ED67E; remoteInfo = app2; }; 58BCAD9F1D4A7B12009ED67E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 58BCAD721D4A7B12009ED67E /* Project object */; proxyType = 1; remoteGlobalIDString = 58BCAD791D4A7B12009ED67E; remoteInfo = app2; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 58BCAD7A1D4A7B12009ED67E /* GeoIPService.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GeoIPService.app; sourceTree = BUILT_PRODUCTS_DIR; }; 58BCAD7E1D4A7B12009ED67E /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; 58BCAD801D4A7B12009ED67E /* AppDelegate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = AppDelegate.h; sourceTree = ""; }; 58BCAD811D4A7B12009ED67E /* AppDelegate.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; 58BCAD831D4A7B12009ED67E /* ViewController.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = ViewController.h; sourceTree = ""; }; 58BCAD841D4A7B12009ED67E /* ViewController.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = ""; tabWidth = 5; }; 58BCAD871D4A7B12009ED67E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 58BCAD891D4A7B12009ED67E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 58BCAD8C1D4A7B12009ED67E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 58BCAD8E1D4A7B12009ED67E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58BCAD931D4A7B12009ED67E /* GeoIPService.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GeoIPService.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 58BCAD971D4A7B12009ED67E /* app2Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = app2Tests.m; sourceTree = ""; }; 58BCAD991D4A7B12009ED67E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58BCAD9E1D4A7B12009ED67E /* GeoIPService.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GeoIPService.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 58BCADA21D4A7B12009ED67E /* app2UITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = app2UITests.m; sourceTree = ""; }; 58BCADA41D4A7B12009ED67E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 58BCADB01D4A7B30009ED67E /* GeoIPServiceSoap.nsmap */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = GeoIPServiceSoap.nsmap; path = ../../GeoIPServiceSoap.nsmap; sourceTree = ""; }; 58BCADB11D4A7B30009ED67E /* soapC.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = soapC.cpp; path = ../../soapC.cpp; sourceTree = ""; }; 58BCADB21D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = soapGeoIPServiceSoapProxy.cpp; path = ../../soapGeoIPServiceSoapProxy.cpp; sourceTree = ""; }; 58BCADB31D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = soapGeoIPServiceSoapProxy.h; path = ../../soapGeoIPServiceSoapProxy.h; sourceTree = ""; }; 58BCADB41D4A7B30009ED67E /* soapH.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = soapH.h; path = ../../soapH.h; sourceTree = ""; }; 58BCADB51D4A7B30009ED67E /* soapStub.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = soapStub.h; path = ../../soapStub.h; sourceTree = ""; }; 58D56FDD1D639227000A7EF7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 58D56FDF1D63922F000A7EF7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 58D56FE11D639236000A7EF7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 58BCAD771D4A7B12009ED67E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 58D56FE21D639236000A7EF7 /* UIKit.framework in Frameworks */, 58D56FE01D63922F000A7EF7 /* CoreGraphics.framework in Frameworks */, 58D56FDE1D639227000A7EF7 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 58BCAD901D4A7B12009ED67E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 58BCAD9B1D4A7B12009ED67E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 58BCAD711D4A7B12009ED67E = { isa = PBXGroup; children = ( 58D56FE11D639236000A7EF7 /* UIKit.framework */, 58D56FDF1D63922F000A7EF7 /* CoreGraphics.framework */, 58D56FDD1D639227000A7EF7 /* Foundation.framework */, 58BCAD7C1D4A7B12009ED67E /* app2 */, 58BCAD961D4A7B12009ED67E /* app2Tests */, 58BCADA11D4A7B12009ED67E /* app2UITests */, 58BCAD7B1D4A7B12009ED67E /* Products */, ); sourceTree = ""; }; 58BCAD7B1D4A7B12009ED67E /* Products */ = { isa = PBXGroup; children = ( 58BCAD7A1D4A7B12009ED67E /* GeoIPService.app */, 58BCAD931D4A7B12009ED67E /* GeoIPService.xctest */, 58BCAD9E1D4A7B12009ED67E /* GeoIPService.xctest */, ); name = Products; sourceTree = ""; }; 58BCAD7C1D4A7B12009ED67E /* app2 */ = { isa = PBXGroup; children = ( 58BCADB01D4A7B30009ED67E /* GeoIPServiceSoap.nsmap */, 58BCADB11D4A7B30009ED67E /* soapC.cpp */, 58BCADB21D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.cpp */, 58BCADB31D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.h */, 58BCADB41D4A7B30009ED67E /* soapH.h */, 58BCADB51D4A7B30009ED67E /* soapStub.h */, 58BCAD801D4A7B12009ED67E /* AppDelegate.h */, 58BCAD811D4A7B12009ED67E /* AppDelegate.mm */, 58BCAD831D4A7B12009ED67E /* ViewController.h */, 58BCAD841D4A7B12009ED67E /* ViewController.mm */, 58BCAD861D4A7B12009ED67E /* Main.storyboard */, 58BCAD891D4A7B12009ED67E /* Assets.xcassets */, 58BCAD8B1D4A7B12009ED67E /* LaunchScreen.storyboard */, 58BCAD7D1D4A7B12009ED67E /* Supporting Files */, ); path = app2; sourceTree = ""; }; 58BCAD7D1D4A7B12009ED67E /* Supporting Files */ = { isa = PBXGroup; children = ( 58BCAD8E1D4A7B12009ED67E /* Info.plist */, 58BCAD7E1D4A7B12009ED67E /* main.mm */, ); name = "Supporting Files"; sourceTree = ""; }; 58BCAD961D4A7B12009ED67E /* app2Tests */ = { isa = PBXGroup; children = ( 58BCAD971D4A7B12009ED67E /* app2Tests.m */, 58BCAD991D4A7B12009ED67E /* Info.plist */, ); path = app2Tests; sourceTree = ""; }; 58BCADA11D4A7B12009ED67E /* app2UITests */ = { isa = PBXGroup; children = ( 58BCADA21D4A7B12009ED67E /* app2UITests.m */, 58BCADA41D4A7B12009ED67E /* Info.plist */, ); path = app2UITests; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 58BCAD791D4A7B12009ED67E /* GeoIPService */ = { isa = PBXNativeTarget; buildConfigurationList = 58BCADA71D4A7B12009ED67E /* Build configuration list for PBXNativeTarget "GeoIPService" */; buildPhases = ( 58BCAD761D4A7B12009ED67E /* Sources */, 58BCAD771D4A7B12009ED67E /* Frameworks */, 58BCAD781D4A7B12009ED67E /* Resources */, ); buildRules = ( ); dependencies = ( ); name = GeoIPService; productName = app2; productReference = 58BCAD7A1D4A7B12009ED67E /* GeoIPService.app */; productType = "com.apple.product-type.application"; }; 58BCAD921D4A7B12009ED67E /* GeoIPServiceTests */ = { isa = PBXNativeTarget; buildConfigurationList = 58BCADAA1D4A7B12009ED67E /* Build configuration list for PBXNativeTarget "GeoIPServiceTests" */; buildPhases = ( 58BCAD8F1D4A7B12009ED67E /* Sources */, 58BCAD901D4A7B12009ED67E /* Frameworks */, 58BCAD911D4A7B12009ED67E /* Resources */, ); buildRules = ( ); dependencies = ( 58BCAD951D4A7B12009ED67E /* PBXTargetDependency */, ); name = GeoIPServiceTests; productName = app2Tests; productReference = 58BCAD931D4A7B12009ED67E /* GeoIPService.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 58BCAD9D1D4A7B12009ED67E /* GeoIPServiceUITests */ = { isa = PBXNativeTarget; buildConfigurationList = 58BCADAD1D4A7B12009ED67E /* Build configuration list for PBXNativeTarget "GeoIPServiceUITests" */; buildPhases = ( 58BCAD9A1D4A7B12009ED67E /* Sources */, 58BCAD9B1D4A7B12009ED67E /* Frameworks */, 58BCAD9C1D4A7B12009ED67E /* Resources */, ); buildRules = ( ); dependencies = ( 58BCADA01D4A7B12009ED67E /* PBXTargetDependency */, ); name = GeoIPServiceUITests; productName = app2UITests; productReference = 58BCAD9E1D4A7B12009ED67E /* GeoIPService.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 58BCAD721D4A7B12009ED67E /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0730; ORGANIZATIONNAME = "Bethany Sanders"; TargetAttributes = { 58BCAD791D4A7B12009ED67E = { CreatedOnToolsVersion = 7.3.1; }; 58BCAD921D4A7B12009ED67E = { CreatedOnToolsVersion = 7.3.1; TestTargetID = 58BCAD791D4A7B12009ED67E; }; 58BCAD9D1D4A7B12009ED67E = { CreatedOnToolsVersion = 7.3.1; TestTargetID = 58BCAD791D4A7B12009ED67E; }; }; }; buildConfigurationList = 58BCAD751D4A7B12009ED67E /* Build configuration list for PBXProject "GeoIPService" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 58BCAD711D4A7B12009ED67E; productRefGroup = 58BCAD7B1D4A7B12009ED67E /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 58BCAD791D4A7B12009ED67E /* GeoIPService */, 58BCAD921D4A7B12009ED67E /* GeoIPServiceTests */, 58BCAD9D1D4A7B12009ED67E /* GeoIPServiceUITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 58BCAD781D4A7B12009ED67E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 58BCAD8D1D4A7B12009ED67E /* LaunchScreen.storyboard in Resources */, 58BCAD8A1D4A7B12009ED67E /* Assets.xcassets in Resources */, 58BCAD881D4A7B12009ED67E /* Main.storyboard in Resources */, 58BCADB61D4A7B30009ED67E /* GeoIPServiceSoap.nsmap in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 58BCAD911D4A7B12009ED67E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 58BCAD9C1D4A7B12009ED67E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 58BCAD761D4A7B12009ED67E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 58BCADB71D4A7B30009ED67E /* soapC.cpp in Sources */, 58BCAD851D4A7B12009ED67E /* ViewController.mm in Sources */, 58BCAD821D4A7B12009ED67E /* AppDelegate.mm in Sources */, 58BCAD7F1D4A7B12009ED67E /* main.mm in Sources */, 58BCADB81D4A7B30009ED67E /* soapGeoIPServiceSoapProxy.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 58BCAD8F1D4A7B12009ED67E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 58BCAD981D4A7B12009ED67E /* app2Tests.m in Sources */, 58E1592E1D526F4400744E8F /* ViewController.h in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 58BCAD9A1D4A7B12009ED67E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 58BCADA31D4A7B12009ED67E /* app2UITests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 58BCAD951D4A7B12009ED67E /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 58BCAD791D4A7B12009ED67E /* GeoIPService */; targetProxy = 58BCAD941D4A7B12009ED67E /* PBXContainerItemProxy */; }; 58BCADA01D4A7B12009ED67E /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 58BCAD791D4A7B12009ED67E /* GeoIPService */; targetProxy = 58BCAD9F1D4A7B12009ED67E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 58BCAD861D4A7B12009ED67E /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( 58BCAD871D4A7B12009ED67E /* Base */, ); name = Main.storyboard; sourceTree = ""; }; 58BCAD8B1D4A7B12009ED67E /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( 58BCAD8C1D4A7B12009ED67E /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 58BCADA51D4A7B12009ED67E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 58BCADA61D4A7B12009ED67E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 58BCADA81D4A7B12009ED67E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = app2/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = genivia.app2; PRODUCT_NAME = GeoIPService; }; name = Debug; }; 58BCADA91D4A7B12009ED67E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = app2/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = genivia.app2; PRODUCT_NAME = GeoIPService; }; name = Release; }; 58BCADAB1D4A7B12009ED67E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = app2Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = genivia.app2Tests; PRODUCT_NAME = GeoIPService; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GeoIPService.app/GeoIPService"; }; name = Debug; }; 58BCADAC1D4A7B12009ED67E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = app2Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = genivia.app2Tests; PRODUCT_NAME = GeoIPService; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GeoIPService.app/GeoIPService"; }; name = Release; }; 58BCADAE1D4A7B12009ED67E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { INFOPLIST_FILE = app2UITests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = genivia.app2UITests; PRODUCT_NAME = GeoIPService; TEST_TARGET_NAME = app2; }; name = Debug; }; 58BCADAF1D4A7B12009ED67E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { INFOPLIST_FILE = app2UITests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = genivia.app2UITests; PRODUCT_NAME = GeoIPService; TEST_TARGET_NAME = app2; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 58BCAD751D4A7B12009ED67E /* Build configuration list for PBXProject "GeoIPService" */ = { isa = XCConfigurationList; buildConfigurations = ( 58BCADA51D4A7B12009ED67E /* Debug */, 58BCADA61D4A7B12009ED67E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 58BCADA71D4A7B12009ED67E /* Build configuration list for PBXNativeTarget "GeoIPService" */ = { isa = XCConfigurationList; buildConfigurations = ( 58BCADA81D4A7B12009ED67E /* Debug */, 58BCADA91D4A7B12009ED67E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 58BCADAA1D4A7B12009ED67E /* Build configuration list for PBXNativeTarget "GeoIPServiceTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 58BCADAB1D4A7B12009ED67E /* Debug */, 58BCADAC1D4A7B12009ED67E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 58BCADAD1D4A7B12009ED67E /* Build configuration list for PBXNativeTarget "GeoIPServiceUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( 58BCADAE1D4A7B12009ED67E /* Debug */, 58BCADAF1D4A7B12009ED67E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 58BCAD721D4A7B12009ED67E /* Project object */; } gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/0000755000175000017500000000000013227173555030362 5ustar ellertellert././@LongLink0000644000000000000000000000016400000000000011604 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysande0000755000175000017500000000000013227173555032750 5ustar ellertellert././@LongLink0000644000000000000000000000017600000000000011607 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcschemes/gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysande0000755000175000017500000000000013227173555032750 5ustar ellertellert././@LongLink0000644000000000000000000000022600000000000011603 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcschemes/xcschememanagement.plistgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysande0000644000175000017500000000122013227173555032745 0ustar ellertellert SchemeUserState app2.xcscheme orderHint 0 SuppressBuildableAutocreation 58BCAD791D4A7B12009ED67E primary 58BCAD921D4A7B12009ED67E primary 58BCAD9D1D4A7B12009ED67E primary ././@LongLink0000644000000000000000000000021300000000000011577 Lustar rootrootgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysanders.xcuserdatad/xcschemes/app2.xcschemegsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/GeoIPService.xcodeproj/xcuserdata/bethanysande0000644000175000017500000001022513227173555032752 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/ViewController.h0000644000175000017500000000034413227173555025067 0ustar ellertellert// // ViewController.h // #import @interface ViewController : UIViewController{ UITextField* IPAddress; } @property (strong, nonatomic) IBOutlet UITextField *IPAddress; - (IBAction) buttonPressed; @end gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Base.lproj/0000755000175000017500000000000013227173555023736 5ustar ellertellertgsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Base.lproj/Main.storyboard0000644000175000017500000000767213227173555026750 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Base.lproj/LaunchScreen.storyboard0000644000175000017500000000320113227173555030416 0ustar ellertellert gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/Info.plist0000644000175000017500000000311613227173555023710 0ustar ellertellert NSAppTransportSecurity NSAllowsArbitraryLoads CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight gsoap-2.8.60/gsoap/ios_plugin/examples/app2/app2/app2/AppDelegate.h0000644000175000017500000000050113227173555024257 0ustar ellertellert// //AppDelegate.h // #import @class ViewController; @interface AppDelegate : UIResponder { UIWindow *window; ViewController *viewController; } @property (strong, nonatomic) UIWindow *window; @property (nonatomic, retain) IBOutlet ViewController *viewController; @end gsoap-2.8.60/gsoap/src/0000755000175000017500000000000013227173562014170 5ustar ellertellertgsoap-2.8.60/gsoap/src/lex.yy.c0000644000175000017500000031606513227173557015603 0ustar ellertellert #line 3 "lex.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern yy_size_t yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break * existing scanners that call yyless() from OUTSIDE yylex. * One obvious solution it to make yy_act a global. I tried that, and saw * a 5% performance hit in a non-yylineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ yy_size_t yyl;\ for ( yyl = n; yyl < yyleng; ++yyl )\ if ( yytext[yyl] == '\n' )\ --yylineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; #define YY_FLEX_LEX_COMPAT extern int yylineno; int yylineno = 1; extern char yytext[]; static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (yy_size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ if ( yyleng + (yy_more_offset) >= YYLMAX ) \ YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ yy_flex_strncpy( &yytext[(yy_more_offset)], (yytext_ptr), yyleng + 1 ); \ yyleng += (yy_more_offset); \ (yy_prev_more_offset) = (yy_more_offset); \ (yy_more_offset) = 0; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 45 #define YY_END_OF_BUFFER 46 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_acclist[170] = { 0, 46, 44, 45, 2, 44, 45, 2, 45, 31, 44, 45, 44, 45,16427, 44, 45, 31, 44, 45, 31, 44, 45, 31, 44, 45, 44, 45,16426, 31, 44, 45, 31, 44, 45, 31, 44, 45, 31, 44, 45, 34, 44, 45, 34, 44, 45, 31, 44, 45, 31, 44, 45, 31, 44, 45, 31, 44, 45, 32, 44, 45, 32, 44, 45, 44, 45, 31, 44, 45, 44, 45, 31, 44, 45, 32, 44, 45, 32, 44, 45, 4, 45, 4, 45, 23,16427, 8235, 38,16427, 41, 14, 21, 15,16426, 8234, 37,16426, 12, 28, 10, 29, 11, 30, 3, 13, 34, 36, 34, 32, 32, 26, 24, 22, 25, 27, 32, 32, 16, 17, 20, 32, 32, 32, 5, 8235, 38, 41, 37, 9, 36, 36, 35, 18, 19, 32, 32, 33, 1, 32, 35, 36, 41, 41, 7, 9, 8, 9, 40, 41, 40, 39, 41, 39, 7, 9, 40, 41, 40, 39, 41, 39, 7, 7, 6, 7, 9, 6, 7, 9 } ; static yyconst flex_int16_t yy_accept[197] = { 0, 1, 1, 1, 1, 1, 2, 4, 7, 9, 12, 15, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 67, 70, 72, 75, 78, 81, 83, 85, 86, 87, 88, 89, 90, 90, 90, 91, 91, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 105, 106, 106, 107, 107, 108, 109, 109, 110, 110, 111, 112, 113, 114, 115, 116, 117, 117, 117, 118, 118, 118, 119, 119, 120, 121, 122, 123, 124, 125, 125, 125, 126, 127, 128, 128, 128, 128, 128, 128, 129, 129, 130, 130, 130, 130, 131, 131, 132, 133, 134, 135, 135, 136, 137, 137, 138, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 144, 144, 146, 146, 146, 146, 148, 148, 148, 148, 148, 150, 150, 150, 151, 151, 151, 153, 153, 153, 154, 156, 156, 158, 159, 161, 162, 162, 163, 163, 163, 164, 164, 167, 167, 170, 170 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 11, 8, 8, 12, 13, 8, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 8, 20, 21, 22, 8, 8, 23, 23, 23, 23, 24, 25, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 26, 26, 28, 26, 26, 29, 26, 26, 8, 30, 8, 31, 26, 32, 33, 23, 23, 34, 35, 25, 36, 37, 38, 26, 26, 39, 40, 26, 41, 42, 26, 43, 44, 45, 46, 26, 26, 47, 26, 26, 8, 48, 8, 8, 1, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 49, 49, 49, 49, 49, 49, 49, 51, 49, 51, 49, 49, 51, 49, 51, 49, 49, 51, 49, 49, 51, 49, 51, 51, 51, 51, 52, 51, 51, 51, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 } ; static yyconst flex_int32_t yy_meta[56] = { 0, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 5, 1, 1, 2, 6, 6, 6, 7, 6, 6, 7, 7, 1, 2, 6, 6, 6, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 6, 7, 1, 1, 1, 7, 1, 1, 7, 7 } ; static yyconst flex_int16_t yy_base[215] = { 0, 0, 435, 477, 474, 483, 633, 633, 633, 461, 53, 58, 633, 459, 47, 55, 456, 50, 51, 58, 94, 35, 37, 55, 453, 56, 50, 80, 425, 437, 0, 66, 123, 405, 633, 435, 633, 87, 83, 633, 94, 442, 99, 141, 85, 91, 633, 633, 633, 117, 633, 633, 127, 633, 633, 633, 633, 633, 633, 633, 147, 633, 89, 0, 138, 633, 141, 172, 163, 396, 0, 418, 633, 633, 633, 407, 169, 183, 362, 109, 140, 186, 633, 359, 633, 633, 0, 0, 335, 633, 178, 209, 186, 192, 633, 223, 328, 325, 112, 92, 137, 362, 633, 228, 199, 124, 223, 147, 228, 232, 633, 633, 259, 183, 236, 273, 633, 0, 222, 315, 320, 227, 168, 240, 269, 254, 239, 287, 275, 292, 295, 311, 294, 226, 308, 246, 278, 168, 314, 325, 338, 291, 285, 319, 81, 332, 330, 352, 229, 231, 334, 342, 348, 262, 377, 391, 394, 397, 400, 403, 379, 633, 380, 387, 253, 633, 409, 412, 251, 416, 419, 133, 422, 428, 128, 431, 434, 78, 452, 461, 437, 440, 633, 633, 633, 633, 443, 633, 445, 446, 449, 457, 633, 458, 465, 633, 511, 518, 525, 532, 534, 538, 545, 552, 559, 566, 570, 576, 583, 590, 597, 604, 611, 618, 625 } ; static yyconst flex_int16_t yy_def[215] = { 0, 195, 1, 196, 196, 195, 195, 195, 195, 195, 197, 198, 195, 195, 195, 199, 195, 195, 195, 195, 195, 20, 200, 195, 195, 195, 201, 201, 195, 195, 202, 195, 201, 32, 195, 195, 195, 197, 203, 195, 197, 198, 198, 195, 198, 198, 195, 195, 195, 199, 195, 195, 199, 195, 195, 195, 195, 195, 195, 195, 204, 195, 195, 21, 195, 195, 195, 195, 201, 195, 32, 195, 195, 195, 195, 195, 201, 201, 195, 32, 203, 195, 195, 202, 195, 195, 32, 32, 32, 195, 203, 203, 203, 203, 195, 195, 195, 195, 198, 198, 205, 204, 195, 204, 204, 204, 195, 195, 195, 206, 195, 195, 195, 32, 32, 195, 195, 32, 203, 195, 195, 198, 198, 205, 205, 204, 204, 195, 195, 195, 195, 195, 195, 198, 198, 204, 204, 195, 195, 195, 195, 195, 195, 198, 198, 204, 204, 195, 195, 195, 198, 198, 207, 208, 195, 195, 209, 210, 211, 212, 207, 195, 207, 207, 208, 195, 210, 212, 209, 209, 210, 210, 210, 210, 211, 211, 212, 212, 212, 212, 213, 207, 195, 195, 195, 195, 213, 195, 213, 214, 213, 214, 195, 214, 213, 0, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195 } ; static yyconst flex_int16_t yy_nxt[689] = { 0, 6, 7, 8, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 12, 19, 20, 21, 22, 23, 24, 25, 26, 26, 26, 26, 27, 26, 26, 28, 29, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 31, 6, 7, 26, 6, 6, 32, 32, 38, 47, 50, 39, 42, 43, 42, 54, 195, 56, 51, 69, 48, 77, 59, 55, 57, 58, 60, 71, 72, 74, 75, 61, 78, 185, 195, 40, 94, 52, 80, 84, 94, 39, 38, 70, 70, 39, 94, 94, 44, 92, 45, 77, 93, 42, 43, 42, 79, 79, 106, 106, 42, 62, 78, 63, 63, 91, 85, 94, 151, 40, 64, 65, 50, 66, 66, 67, 40, 98, 122, 102, 51, 64, 50, 184, 99, 66, 79, 79, 183, 44, 100, 45, 66, 67, 77, 95, 95, 95, 39, 52, 51, 42, 102, 107, 107, 78, 121, 108, 108, 52, 113, 113, 114, 113, 113, 103, 108, 108, 126, 124, 66, 66, 91, 94, 86, 86, 87, 86, 86, 79, 79, 96, 66, 97, 77, 104, 39, 138, 138, 66, 77, 109, 109, 95, 39, 78, 105, 109, 109, 109, 39, 78, 195, 195, 102, 115, 115, 109, 109, 109, 91, 115, 115, 115, 118, 78, 134, 93, 91, 79, 79, 115, 115, 115, 91, 79, 79, 95, 95, 95, 39, 94, 94, 102, 113, 113, 114, 113, 113, 79, 79, 91, 106, 106, 102, 125, 103, 108, 108, 127, 65, 102, 65, 51, 91, 65, 182, 65, 165, 102, 127, 128, 128, 96, 65, 97, 104, 165, 155, 65, 133, 143, 124, 128, 136, 95, 154, 105, 129, 129, 128, 145, 100, 102, 129, 129, 129, 113, 113, 114, 113, 113, 130, 130, 129, 129, 129, 135, 130, 130, 130, 124, 137, 137, 128, 128, 138, 138, 130, 130, 130, 139, 139, 94, 140, 140, 128, 139, 139, 139, 140, 140, 140, 128, 94, 146, 149, 139, 139, 139, 140, 140, 140, 138, 138, 102, 148, 102, 156, 157, 156, 65, 142, 65, 147, 147, 158, 159, 158, 144, 147, 147, 147, 161, 141, 65, 132, 68, 68, 131, 147, 147, 147, 68, 68, 68, 150, 102, 120, 153, 119, 76, 76, 68, 68, 68, 152, 76, 76, 76, 162, 166, 166, 166, 161, 180, 156, 76, 76, 76, 117, 163, 161, 116, 158, 167, 167, 167, 169, 170, 169, 172, 173, 172, 175, 176, 175, 178, 179, 178, 112, 162, 162, 172, 173, 172, 178, 179, 178, 162, 169, 170, 169, 172, 173, 172, 172, 173, 172, 166, 111, 181, 172, 173, 172, 175, 176, 175, 178, 179, 178, 110, 187, 167, 81, 161, 169, 94, 187, 172, 190, 192, 175, 89, 187, 178, 178, 179, 178, 88, 82, 172, 192, 194, 178, 178, 179, 178, 169, 188, 187, 172, 162, 81, 172, 188, 73, 188, 193, 53, 172, 188, 46, 175, 36, 195, 178, 189, 35, 193, 193, 35, 33, 195, 195, 195, 195, 188, 195, 195, 195, 195, 195, 195, 178, 195, 195, 195, 195, 195, 195, 195, 195, 178, 34, 34, 34, 34, 34, 34, 34, 37, 37, 37, 37, 37, 37, 37, 41, 41, 41, 41, 41, 41, 41, 49, 49, 49, 49, 49, 49, 49, 68, 68, 76, 76, 76, 76, 83, 195, 195, 83, 83, 83, 83, 90, 90, 90, 90, 90, 90, 90, 101, 101, 101, 101, 101, 101, 101, 123, 123, 195, 123, 123, 123, 123, 109, 195, 109, 160, 160, 160, 160, 160, 160, 160, 164, 164, 164, 164, 164, 164, 164, 168, 168, 168, 168, 168, 168, 168, 171, 171, 171, 171, 171, 171, 171, 174, 174, 174, 174, 174, 174, 174, 177, 177, 177, 177, 177, 177, 177, 186, 186, 186, 186, 186, 186, 186, 191, 191, 191, 191, 191, 191, 191, 5, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195 } ; static yyconst flex_int16_t yy_chk[689] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 14, 15, 10, 11, 11, 11, 17, 21, 18, 15, 22, 14, 26, 19, 17, 18, 18, 19, 23, 23, 25, 25, 19, 26, 177, 21, 10, 144, 15, 27, 31, 44, 38, 37, 22, 22, 37, 45, 99, 11, 40, 11, 27, 40, 42, 42, 42, 26, 26, 62, 62, 11, 20, 27, 20, 20, 38, 31, 98, 144, 37, 20, 20, 49, 20, 20, 20, 40, 44, 99, 105, 49, 20, 52, 174, 45, 20, 27, 27, 171, 42, 52, 42, 20, 20, 32, 43, 43, 43, 80, 49, 100, 42, 60, 64, 64, 32, 98, 64, 64, 52, 79, 79, 79, 79, 79, 60, 107, 107, 105, 100, 66, 66, 80, 122, 32, 32, 32, 32, 32, 32, 32, 43, 66, 43, 68, 60, 90, 137, 137, 66, 76, 67, 67, 43, 92, 68, 60, 67, 67, 67, 93, 76, 77, 77, 104, 81, 81, 67, 67, 67, 90, 81, 81, 81, 91, 77, 122, 91, 92, 68, 68, 81, 81, 81, 93, 76, 76, 95, 95, 95, 118, 133, 121, 103, 113, 113, 113, 113, 113, 77, 77, 91, 106, 106, 126, 104, 103, 108, 108, 106, 106, 135, 106, 123, 118, 108, 168, 108, 164, 125, 106, 109, 109, 95, 106, 95, 103, 153, 149, 108, 121, 133, 123, 109, 126, 95, 148, 103, 112, 112, 109, 135, 124, 136, 112, 112, 112, 114, 114, 114, 114, 114, 115, 115, 112, 112, 112, 125, 115, 115, 115, 124, 127, 127, 128, 128, 127, 127, 115, 115, 115, 129, 129, 134, 130, 130, 128, 129, 129, 129, 130, 130, 130, 128, 143, 136, 142, 129, 129, 129, 130, 130, 130, 138, 138, 146, 141, 145, 150, 150, 150, 138, 132, 138, 139, 139, 151, 151, 151, 134, 139, 139, 139, 152, 131, 138, 120, 140, 140, 119, 139, 139, 139, 140, 140, 140, 143, 101, 97, 146, 96, 147, 147, 140, 140, 140, 145, 147, 147, 147, 152, 154, 154, 154, 160, 162, 150, 147, 147, 147, 88, 152, 163, 83, 151, 155, 155, 155, 156, 156, 156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 78, 160, 162, 166, 166, 166, 167, 167, 167, 163, 169, 169, 169, 170, 170, 170, 172, 172, 172, 154, 75, 163, 173, 173, 173, 175, 175, 175, 176, 176, 176, 71, 180, 155, 69, 181, 156, 41, 186, 157, 188, 189, 158, 35, 190, 159, 178, 178, 178, 33, 29, 166, 191, 193, 167, 179, 179, 179, 169, 180, 194, 170, 181, 28, 172, 186, 24, 188, 189, 16, 173, 190, 13, 175, 9, 5, 176, 181, 4, 191, 193, 3, 2, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 179, 196, 196, 196, 196, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, 199, 199, 200, 200, 201, 201, 201, 201, 202, 0, 0, 202, 202, 202, 202, 203, 203, 203, 203, 203, 203, 203, 204, 204, 204, 204, 204, 204, 204, 205, 205, 0, 205, 205, 205, 205, 206, 0, 206, 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213, 213, 213, 214, 214, 214, 214, 214, 214, 214, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195 } ; /* Table of booleans, true if rule could match eol. */ static yyconst flex_int32_t yy_rule_can_match_eol[46] = { 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, }; extern int yy_flex_debug; int yy_flex_debug = 0; static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; static char *yy_full_match; static int yy_lp; static int yy_looking_for_trail_begin = 0; static int yy_full_lp; static int *yy_full_state; #define YY_TRAILING_MASK 0x2000 #define YY_TRAILING_HEAD_MASK 0x4000 #define REJECT \ { \ *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \ (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \ yy_current_state = *(yy_state_ptr); /* restore curr. state */ \ ++(yy_lp); \ goto find_rule; \ } static int yy_more_offset = 0; static int yy_prev_more_offset = 0; #define yymore() ((yy_more_offset) = yy_flex_strlen( yytext )) #define YY_NEED_STRLEN #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET \ { \ (yy_more_offset) = (yy_prev_more_offset); \ yyleng -= (yy_more_offset); \ } #ifndef YYLMAX #define YYLMAX 8192 #endif char yytext[YYLMAX]; char *yytext_ptr; #line 1 "soapcpp2_lex.l" /* soapcpp2_lex.l Flex/Lex tokenizer for C/C++ -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2015, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under ONE of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #line 38 "soapcpp2_lex.l" #include "soapcpp2.h" #ifndef YY_NO_UNISTD_H #define YY_NO_UNISTD_H #endif #ifdef HAVE_CONFIG_H #include "soapcpp2_yacc.h" #else #include "soapcpp2_yacc.tab.h" #endif #ifdef WITH_BISON YYSTYPE yylval; #undef YY_NEED_STRLEN #define YY_INPUT(buf, result, max_size) \ { \ int c = getc(yyin); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } #endif #ifndef WITH_LEX #define MAX_IMPORT_DEPTH 16 static struct importlist { struct importlist *next; char name[1]; } *importlist = NULL; static const char *fnstk[MAX_IMPORT_DEPTH]; static int lnstk[MAX_IMPORT_DEPTH]; static const char *imstk[MAX_IMPORT_DEPTH]; static YY_BUFFER_STATE instk[MAX_IMPORT_DEPTH]; #endif int imports = 0; const char *imported = NULL; static void check_id(const char*); static Token install_id(void); static Token install_tag(void); static Token install_int(void); static Token install_hex(void); static Token install_num(void); static Token install_chr(void); static Token install_str(void); static Token install_pragma(void); static void directive(void), option(void), xpath(void); static Token error_chr(void); static Token error_str(void); static int convchar(int*); static int hexchar(int*); static int octchar(int*); static void module(const char *name, const char *fullname); static void import(const char *file); static long magic(const char *name); #define YY_NO_INPUT 1 #line 835 "lex.yy.c" #define INITIAL 0 #define MLCOMMENT 1 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); yy_size_t yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ if ( yyleng > 0 ) \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ (yytext[yyleng - 1] == '\n'); \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 108 "soapcpp2_lex.l" #line 1021 "lex.yy.c" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif /* Create the reject buffer large enough to save one state per allowed character. */ if ( ! (yy_state_buf) ) (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); if ( ! (yy_state_buf) ) YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); (yy_state_ptr) = (yy_state_buf); *(yy_state_ptr)++ = yy_current_state; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 196 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; ++yy_cp; } while ( yy_base[yy_current_state] != 633 ); yy_find_action: yy_current_state = *--(yy_state_ptr); (yy_lp) = yy_accept[yy_current_state]; goto find_rule; /* Shut up GCC warning -Wall */ find_rule: /* we branch to this label when backing up */ for ( ; ; ) /* until we find what rule we matched */ { if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) { yy_act = yy_acclist[(yy_lp)]; if ( yy_act & YY_TRAILING_HEAD_MASK || (yy_looking_for_trail_begin) ) { if ( yy_act == (yy_looking_for_trail_begin) ) { (yy_looking_for_trail_begin) = 0; yy_act &= ~YY_TRAILING_HEAD_MASK; break; } } else if ( yy_act & YY_TRAILING_MASK ) { (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK; (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK; (yy_full_match) = yy_cp; (yy_full_state) = (yy_state_ptr); (yy_full_lp) = (yy_lp); } else { (yy_full_match) = yy_cp; (yy_full_state) = (yy_state_ptr); (yy_full_lp) = (yy_lp); break; } ++(yy_lp); goto find_rule; } --yy_cp; yy_current_state = *--(yy_state_ptr); (yy_lp) = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { yy_size_t yyl; for ( yyl = (yy_prev_more_offset); yyl < yyleng; ++yyl ) if ( yytext[yyl] == '\n' ) yylineno++; ; } do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 1: YY_RULE_SETUP #line 109 "soapcpp2_lex.l" { /* skip UTF8 BOM */ } YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP #line 110 "soapcpp2_lex.l" { /* skip white space */ } YY_BREAK case 3: YY_RULE_SETUP #line 111 "soapcpp2_lex.l" { BEGIN(MLCOMMENT); } YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP #line 112 "soapcpp2_lex.l" { } YY_BREAK case 5: YY_RULE_SETUP #line 113 "soapcpp2_lex.l" { BEGIN(INITIAL); } YY_BREAK case YY_STATE_EOF(MLCOMMENT): #line 114 "soapcpp2_lex.l" { execerror("Unclosed multiline comment at end of file"); } YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP #line 115 "soapcpp2_lex.l" { option(); } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 116 "soapcpp2_lex.l" { directive(); } YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP #line 117 "soapcpp2_lex.l" { xpath(); } YY_BREAK case 9: /* rule 9 can match eol */ YY_RULE_SETUP #line 118 "soapcpp2_lex.l" { /* skip single line comment */ } YY_BREAK case 10: YY_RULE_SETUP #line 119 "soapcpp2_lex.l" { return PA; } YY_BREAK case 11: YY_RULE_SETUP #line 120 "soapcpp2_lex.l" { return NA; } YY_BREAK case 12: YY_RULE_SETUP #line 121 "soapcpp2_lex.l" { return TA; } YY_BREAK case 13: YY_RULE_SETUP #line 122 "soapcpp2_lex.l" { return DA; } YY_BREAK case 14: YY_RULE_SETUP #line 123 "soapcpp2_lex.l" { return MA; } YY_BREAK case 15: YY_RULE_SETUP #line 124 "soapcpp2_lex.l" { return AA; } YY_BREAK case 16: YY_RULE_SETUP #line 125 "soapcpp2_lex.l" { return XA; } YY_BREAK case 17: YY_RULE_SETUP #line 126 "soapcpp2_lex.l" { return OA; } YY_BREAK case 18: YY_RULE_SETUP #line 127 "soapcpp2_lex.l" { return LA; } YY_BREAK case 19: YY_RULE_SETUP #line 128 "soapcpp2_lex.l" { return RA; } YY_BREAK case 20: YY_RULE_SETUP #line 129 "soapcpp2_lex.l" { return OR; } YY_BREAK case 21: YY_RULE_SETUP #line 130 "soapcpp2_lex.l" { return AN; } YY_BREAK case 22: YY_RULE_SETUP #line 131 "soapcpp2_lex.l" { return EQ; } YY_BREAK case 23: YY_RULE_SETUP #line 132 "soapcpp2_lex.l" { return NE; } YY_BREAK case 24: YY_RULE_SETUP #line 133 "soapcpp2_lex.l" { return LE; } YY_BREAK case 25: YY_RULE_SETUP #line 134 "soapcpp2_lex.l" { return GE; } YY_BREAK case 26: YY_RULE_SETUP #line 135 "soapcpp2_lex.l" { return LS; } YY_BREAK case 27: YY_RULE_SETUP #line 136 "soapcpp2_lex.l" { return RS; } YY_BREAK case 28: YY_RULE_SETUP #line 137 "soapcpp2_lex.l" { return PP; } YY_BREAK case 29: YY_RULE_SETUP #line 138 "soapcpp2_lex.l" { return NN; } YY_BREAK case 30: YY_RULE_SETUP #line 139 "soapcpp2_lex.l" { return AR; } YY_BREAK case 31: YY_RULE_SETUP #line 140 "soapcpp2_lex.l" { return yytext[0]; } YY_BREAK case 32: YY_RULE_SETUP #line 141 "soapcpp2_lex.l" { return install_id(); } YY_BREAK case 33: YY_RULE_SETUP #line 142 "soapcpp2_lex.l" { return install_tag(); } YY_BREAK case 34: YY_RULE_SETUP #line 143 "soapcpp2_lex.l" { return install_int(); } YY_BREAK case 35: YY_RULE_SETUP #line 144 "soapcpp2_lex.l" { return install_hex(); } YY_BREAK case 36: YY_RULE_SETUP #line 145 "soapcpp2_lex.l" { return install_num(); } YY_BREAK case 37: YY_RULE_SETUP #line 146 "soapcpp2_lex.l" { return install_chr(); } YY_BREAK case 38: /* rule 38 can match eol */ YY_RULE_SETUP #line 147 "soapcpp2_lex.l" { return install_str(); } YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP #line 148 "soapcpp2_lex.l" { char *s, *t, buf[1024]; s = strchr(yytext, '"'); if (!s) t = yytext+7; else { strcpy(buf, s+1); s = strchr(buf, '"'); *s = '\0'; t = strchr(s+1, '"'); if (t) { t++; s = strchr(t+1, '"'); if (s) *s = '\0'; } } module(buf, t); } YY_BREAK case 40: /* rule 40 can match eol */ YY_RULE_SETUP #line 166 "soapcpp2_lex.l" { char *s, buf[1024]; s = strchr(yytext, '"'); if (s) { strncpy(buf, s + 1, sizeof(buf)); buf[sizeof(buf) - 1] = '\0'; s = strchr(buf, '"'); if (!s) lexerror("Invalid import directive: missing ending \" or path too long"); else { *s = '\0'; import(buf); } } else lexerror("Invalid import directive: \" expected"); } YY_BREAK case 41: /* rule 41 can match eol */ YY_RULE_SETUP #line 182 "soapcpp2_lex.l" { return install_pragma(); } YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP #line 183 "soapcpp2_lex.l" { return error_chr(); } YY_BREAK case 43: /* rule 43 can match eol */ YY_RULE_SETUP #line 184 "soapcpp2_lex.l" { return error_str(); } YY_BREAK case 44: YY_RULE_SETUP #line 185 "soapcpp2_lex.l" { lexerror("Skipping unknown symbol"); } YY_BREAK case YY_STATE_EOF(INITIAL): #line 186 "soapcpp2_lex.l" { /* when Lex complains: remove this line and below */ #ifndef WITH_LEX if (--imports < 0) { yyterminate(); } else { if (vflag) fprintf(stderr, "End of %s\n\n", filename); yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(instk[imports]); filename = fnstk[imports]; yylineno = lnstk[imports]; imported = imstk[imports]; } #endif } YY_BREAK case 45: YY_RULE_SETUP #line 203 "soapcpp2_lex.l" ECHO; YY_BREAK #line 1441 "lex.yy.c" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ YY_FATAL_ERROR( "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); (yy_state_ptr) = (yy_state_buf); *(yy_state_ptr)++ = yy_current_state; for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 196 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register YY_CHAR yy_c = 1; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 196 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 195); if ( ! yy_is_jam ) *(yy_state_ptr)++ = yy_current_state; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol ) yylineno++; ; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ yy_size_t yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param line_number * */ void yyset_lineno (int line_number ) { yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) { yyin = in_str ; } void yyset_out (FILE * out_str ) { yyout = out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int bdebug ) { yy_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ /* We do not touch yylineno unless the option is enabled. */ yylineno = 1; (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; (yy_state_buf) = 0; (yy_state_ptr) = 0; (yy_full_match) = 0; (yy_lp) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; yyfree ( (yy_state_buf) ); (yy_state_buf) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 203 "soapcpp2_lex.l" /* install_id - lookup identifier in symbol table. If found, return token and symbol table entry. If not found, create entry in symbol table and return ID token. */ static Token install_id() { Symbol *p = lookup(yytext); if (!p) { int i, flag = 0; p = install(yytext, ID); /* [_](x|X)(m|M)(l|L)__ is OK */ /* [_](x|X)(m|M)(l|L).* is not OK */ /* .*__(x|X)(m|M)(l|L) is not OK */ /* .*::(x|X)(m|M)(l|L) is not OK */ for (i = 0; i < (int)yyleng; i++) { if ((yytext[i] == '_' && yytext[i+1] == '_') || (yytext[i] == ':' && yytext[i+1] == ':')) { flag = 1; check_id(yytext + i + 2); } } if (!flag && strcmp(yytext, "XML")) check_id(yytext); } yylval.sym = p; return p->token; } /* install_tag - return TAG token. */ static Token install_tag() { yylval.s = (char*)emalloc(yyleng); /* yyleng = length(yytext) */ strcpy(yylval.s, yytext+1); yylval.s[yyleng-2] = '\0'; return TAG; } /* check_id - check for (x|X)(m|M)(l|L) */ static void check_id(const char *s) { while (*s == '_') s++; if ((s[0] == 'x' || s[0] == 'X') && (s[1] == 'm' || s[1] == 'M') && (s[2] == 'l' || s[2] == 'L')) { sprintf(errbuf, "identifier '%s' starts with or embeds '%3.3s' character sequence, which is exclusively reserved for and by the W3C XML standards (for enum constants: please ignore this warning)", yytext, s); semwarn(errbuf); } } /* install_int - convert digits to integer and return LNG token. */ static Token install_int(void) { sscanf(yytext, SOAP_ULONG_FORMAT, &yylval.i); return LNG; } /* install_hex - convert hexadecimal digits to integer and return LNG */ static Token install_hex(void) { sscanf(yytext, SOAP_XLONG_FORMAT, &yylval.i); return LNG; } /* install_num - convert digits to floating point number and return DBL */ static Token install_num(void) { sscanf(yytext, "%lf", &yylval.r); return DBL; } /* install_chr - convert character constant and return CHR. */ static Token install_chr(void) { int i = 2; if (yytext[1] == '\\') yylval.c = convchar(&i); else yylval.c = yytext[i-1]; if (yytext[i] != '\'') lexerror("Illegal character constant"); return CHR; } /* install_str - convert and store string in memory. Return STR. */ static Token install_str(void) { int i, j = 0; yylval.s = (char*)emalloc(yyleng - 1); /* yyleng = length(yytext) */ for (i = 1 + (yytext[0] == 'L'); i < (int)yyleng - 1; i++) if (yytext[i] == '\\') { if (yytext[++i] != '\n') { yylval.s[j++] = convchar(&i); i--; } } else yylval.s[j++] = yytext[i]; yylval.s[j] = '\0'; return STR; } /* install_pragma - store pragma in string. Return PRAGMA. */ static Token install_pragma(void) { yylval.s = (char*)emalloc(yyleng); /* yyleng = length(yytext) */ strncpy(yylval.s, yytext, strlen(yytext)-1); yylval.s[strlen(yytext)-1] = '\0'; return PRAGMA; } static void directive(void) { int i, j, k; char *s; Service *sp; Method *m; Data *d; int service; for (i = 0; yytext[i]; i++) if (yytext[i] <= 32) break; for (; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; if (!strncmp(yytext+i, "schema", 6)) { sprintf(errbuf, "gsoap schema directive without namespace: %s", yytext+i); semwarn(errbuf); s = (char*)emalloc(1); *s = '\0'; } else if (!strncmp(yytext+i, "service", 7)) { s = (char*)emalloc(1); *s = '\0'; } else { for (j = i; yytext[j]; j++) if (yytext[j] <= 32) break; if (i == j) return; s = (char*)emalloc(j-i+1); for (k = 0; k < j-i; k++) { s[k] = yytext[k+i]; if (s[k] == '_') s[k] = '-'; } s[k] = '\0'; for (i = j; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; } for (sp = services; sp; sp = sp->next) if (!strcmp(sp->ns, s)) break; if (!sp) { sp = (Service*)emalloc(sizeof(Service)); sp->next = services; sp->ns = s; sp->name = NULL; sp->porttype = NULL; sp->portname = NULL; sp->binding = NULL; sp->definitions = NULL; sp->transport = NULL; sp->URL = NULL; sp->URI = NULL; sp->URI2 = NULL; sp->WSDL = NULL; sp->style = NULL; sp->encoding = NULL; sp->protocol = NULL; sp->xsi_type = 0; sp->elementForm = NULL; sp->attributeForm = NULL; sp->executable = NULL; sp->import = NULL; sp->documentation = NULL; sp->list = NULL; sp->data = NULL; services = sp; } if (!strncmp(yytext+i, "service", 7) || !strncmp(yytext+i, "schema", 6)) { service = strncmp(yytext+i, "schema", 6); for (i += 7; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; for (j = i; yytext[j]; j++) if (yytext[j] <= 32) break; for (; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; /* if (j == k) return; */ s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m = NULL; if (!strncmp(yytext+i, "name:", 5)) { sp->name = s; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; sp->documentation = s; } else if (service && (!strncmp(yytext+i, "type:", 5) || !strncmp(yytext+i, "portType:", 9) || !strncmp(yytext+i, "interface:", 10))) sp->porttype = s; else if (!strncmp(yytext+i, "portName:", 9)) sp->portname = s; else if (!strncmp(yytext+i, "binding:", 8)) sp->binding = s; else if (!strncmp(yytext+i, "definitions:", 12)) sp->definitions = s; else if (!strncmp(yytext+i, "documentation:", 14) || !strncmp(yytext+i, "doc:", 4)) { for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; sp->documentation = s; } else if (!strncmp(yytext+i, "transport:", 10)) sp->transport = s; else if (!strncmp(yytext+i, "location:", 9) || !strncmp(yytext+i, "endpoint:", 9) || !strncmp(yytext+i, "port:", 5)) { if (sp->URL) { char *t = (char*)emalloc(strlen(sp->URL) + strlen(s) + 2); strcpy(t, sp->URL); strcat(t, " "); strcat(t, s); sp->URL = t; } else sp->URL = s; if (!service && !sp->import) sp->import = s; } else if (!strncmp(yytext+i, "executable:", 11)) sp->executable = s; else if (!strncmp(yytext+i, "namespace:", 10)) { if (service) { if (!sp->URI) sp->URI = s; sp->WSDL = s; } else if (!strcmp(sp->ns, "SOAP-ENV")) { if (soap_version > 0) semwarn("option -1 or -2 overrides SOAP-ENV namespace"); else envURI = s; sp->URI = (char*)envURI; } else if (!strcmp(sp->ns, "SOAP-ENC")) { if (soap_version > 0) semwarn("option -1 or -2 overrides SOAP-ENC namespace"); else encURI = s; sp->URI = (char*)encURI; } else sp->URI = s; } else if (!strncmp(yytext+i, "namespace2:", 11)) { sp->URI2 = s; } else if (!strncmp(yytext+i, "typed:", 6)) { sp->xsi_type = (*s == 'y'); } else if (!strncmp(yytext+i, "form:", 5)) { sp->elementForm = s; sp->attributeForm = s; } else if (!strncmp(yytext+i, "elementForm:", 12)) sp->elementForm = s; else if (!strncmp(yytext+i, "attributeForm:", 14)) sp->attributeForm = s; else if (!strncmp(yytext+i, "import:", 7)) { if (!sp->URI) sp->URI = s; sp->import = s; } else if (!strncmp(yytext+i, "encoding:", 9)) { if (!strcmp(s, "encoded")) sp->encoding = ""; else sp->encoding = s; } else if (!strncmp(yytext+i, "style:", 6)) sp->style = s; else if (!strncmp(yytext+i, "protocol:", 9)) sp->protocol = s; else if (!strncmp(yytext+i, "method-protocol:", 16)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = PROTOCOL; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-style:", 13)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = STYLE; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-encoding:", 16)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = ENCODING; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; if (strcmp(s, "encoded")) m->part = s; else m->part = ""; } else if (!strncmp(yytext+i, "method-response-encoding:", 25)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = RESPONSE_ENCODING; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; if (strcmp(s, "encoded")) m->part = s; else m->part = ""; } else if (!strncmp(yytext+i, "method-documentation:", 21) || !strncmp(yytext+i, "method:", 7)) { d = (Data*)emalloc(sizeof(Data)); d->name = s; d->text = NULL; d->next = sp->data; sp->data = d; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; d->text = s; } else if (!strncmp(yytext+i, "method-action:", 14)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-input-action:", 20)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = REQUEST_ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-output-action:", 21)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = RESPONSE_ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-fault-action:", 20)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = FAULT_ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-mime-type:", 17)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = MIMEIN | MIMEOUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-input-mime-type:", 23)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = MIMEIN; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-output-mime-type:", 24)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = MIMEOUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-header-part:", 19)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = HDRIN | HDROUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-input-header-part:", 25)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = HDRIN; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-output-header-part:", 26)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = HDROUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-fault:", 13)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = FAULT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!service && (!strncmp(yytext+i, "type-documentation:", 19) || !strncmp(yytext+i, "type:", 5))) { d = (Data*)emalloc(sizeof(Data)); d->name = s; d->text = NULL; d->next = sp->data; sp->data = d; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; d->text = s; } else { sprintf(errbuf, "unrecognized gsoap directive: %s", yytext+i); semwarn(errbuf); } if (m) { m->next = NULL; if (!sp->list) sp->list = m; else { Method *p; for (p = sp->list; p->next; p = p->next) continue; p->next = m; } } } else { sprintf(errbuf, "unrecognized gsoap directive: %s", yytext); semwarn(errbuf); } } static void option(void) { int i; if (imports) { sprintf(errbuf, "options directive: %s ignored in imported file(s)", yytext); semwarn(errbuf); return; } for (i = 0; yytext[i]; i++) if (yytext[i] <= 32) break; for (; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; for (; yytext[i]; i++) switch (yytext[i]) { case 'a': aflag = 1; break; case 'c': if (yytext[i+1] == '+' && yytext[i+2] == '+') { i += 2; if (yytext[i+1] == '1' && yytext[i+2] == '1') { i += 2; c11flag = 1; } cflag = 0; } else cflag = 1; break; case 'e': eflag = 1; break; case 'n': nflag = 1; break; case 'l': lflag = 1; break; case 't': tflag = 1; break; case 'w': wflag = 1; break; default: if (yytext[i] < 32 || yytext[i] == '/') return; } } static void xpath(void) { int i, j, k; char *s; XPath *xp; for (i = 0; yytext[i]; i++) if (yytext[i] <= 32) break; for (; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; for (j = i; yytext[j]; j++) if (yytext[j] <= 32) break; if (i == j) return; for (k = j; yytext[k]; k++) if (yytext[k] > 32 && yytext[k] != '\\') break; s = (char*)emalloc(yyleng - i); strncpy(s, yytext + i, j - i); s[j - i] = '\0'; for (xp = xpaths; xp; xp = xp->next) if (!strcmp(xp->name, s)) break; if (!xp) { xp = (XPath*)emalloc(sizeof(XPath)); xp->next = xpaths; xp->name = s; } s += j - i + 1; strcpy(s, yytext + k); xp->path = s; while (*s > 32) s++; *s = '\0'; } /* error_chr - lexical error in character constant. Return character 0 to allow parsing to continue */ static Token error_chr(void) { lexerror("Ending-' missing in character constant"); yylval.c = '\0'; return CHR; } /* error_str - lexical error in string. Return empty string to allow parsing to continue */ static Token error_str(void) { lexerror("Ending-\" missing in string"); yylval.s = ""; return STR; } /* Character conversion functions */ static int convchar(int *p) { switch (yytext[(*p)++]) { case 'a': return '\a'; case 'b': return '\b'; case 'f': return '\f'; case 'n': return '\n'; case 'r': return '\r'; case 't': return '\t'; case 'v': return '\v'; case 'x': return hexchar(p); case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': (*p)--; return octchar(p); default: return yytext[*p-1]; } } static int hexchar(int *p) { int i, d, c = 0; for (i = 0; isxdigit(d = yytext[*p]) && i < 2; i++) { c = (c << 4) + (d <= '9' ? d - '0' : toupper(d) - '7'); (*p)++; } return c; } static int octchar(int *p) { int i, d, c = 0; for (i = 0; (d = yytext[*p]) >= '0' && d <= '7' && i < 3; i++) { c = (c << 3) + d - '0'; (*p)++; } return c; } static void module(const char *name, const char *fullname) { char *s; if (!fullname) fullname = name; if (imports) { Pragma **pp; s = (char*)emalloc(strlen(fullname)+15); sprintf(s, "#include \"%sH.h\"", fullname); for (pp = &pragmas; *pp; pp = &(*pp)->next) if (!strcmp((*pp)->pragma, s)) break; if (!*pp) { *pp = (Pragma*)emalloc(sizeof(Pragma)); (*pp)->pragma = s; (*pp)->next = NULL; } s = (char*)emalloc(strlen(fullname)+1); imported = strcpy(s, fullname); fprintf(stderr, "Importing module '%s'\n\n", fullname); } else { lflag = 1; typeNO = magic(name); s = (char*)emalloc(strlen(fullname)+1); prefix = strcpy(s, fullname); fprintf(stderr, "Compiling module '%s' (magic number = %d)\n\n", fullname, typeNO); } } static long magic(const char *name) { size_t i; long n; if (strlen(name) > 4) semerror("#module name length must not exceed four characters"); n = 0; for (i = 0; i < strlen(name); i++) if (name[i] >= 'a' && name[i] <= 'z') n = 26*n + name[i] - 'a'; else if (name[i] >= 'A' && name[i] <= 'Z') n = 26*n + name[i] - 'A'; else semerror("#module name must be alphabetic and the length must not exceed four characters.\nUse '#module name longname' for longer names."); return 4699*n + 153424; } #ifdef WITH_LEX static void import(const char *file) { execerror("Cannot #import: soapcpp2 not compiled with flex (replace lex with flex)"); } #else static void import(const char *file) { char buf[1024]; struct importlist *p; if (vflag) fprintf(stderr, "Importing '%s': ", file); for (p = importlist; p; p = p->next) { if (!strcmp(p->name, file)) { if (vflag) fprintf(stderr, "file already read or currently being read\n\n"); return; } } if (imports >= MAX_IMPORT_DEPTH) execerror("Imports nested too deep"); instk[imports] = YY_CURRENT_BUFFER; fnstk[imports] = filename; lnstk[imports] = yylineno; imstk[imports] = imported; yylineno = 1; /* imported = NULL; this is useful to change the semantics of #import to NOT consider non-module imports to be part of the current module */ imports++; buf[0] = '\0'; if (!(yyin = fopen(file, "r"))) { if (importpath) { const char *s, *t; s = importpath; do { size_t n; t = strstr(s, SOAP_PATHSEP); if (t) { if ((size_t)(t - s) >= sizeof(buf)) t = s + sizeof(buf) - 1; strncpy(buf, s, t - s); buf[t - s] = '\0'; s = t + sizeof(SOAP_PATHSEP) - 1; } else { strcpy(buf, s); s = NULL; } n = strlen(buf) - 1; #ifdef __VMS if (buf[n] != ']' && buf[n] != ':') strcat(buf, ":"); #else if (buf[n] != SOAP_PATHCAT[0]) strcat(buf, SOAP_PATHCAT); #endif strcat(buf, file); yyin = fopen(buf, "r"); } while (s && !yyin); } if (!yyin) { sprintf(errbuf, "#import: Cannot open file \"%s\" for reading.\nHint: use option -I (for example -Igsoap" SOAP_PATHSEP "gsoap/import" SOAP_PATHSEP "gsoap/custom:.)", file); execerror(errbuf); } } if (vflag) { if (buf[0]) fprintf(stderr, "OK, found at %s\n\n", buf); else fprintf(stderr, "OK\n\n"); } p = (struct importlist*)emalloc(sizeof(struct importlist) + strlen(file)); /* has already + 1 byte size */ strcpy(p->name, file); filename = p->name; p->next = importlist; importlist = p; yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); } #endif gsoap-2.8.60/gsoap/src/Make_mvc.mak0000644000175000017500000000157013227173557016413 0ustar ellertellertCC=cl CPP=cl LIBS= COFLAGS=-O2 # COFLAGS=-ZI -DDEBUG CFLAGS= -EHsc -nologo $(COFLAGS) soapcpp2.exe: soapcpp2.h soapcpp2_yacc.obj symbol2.obj error2.obj lex.yy.obj init2.obj soapcpp2.obj $(CC) $(CFLAGS) symbol2.obj error2.obj soapcpp2_yacc.obj lex.yy.obj \ init2.obj soapcpp2.obj $(LIBS) -Fe$@ .c.o: # soapcpp2.h soapcpp2_yacc.h error2.h $(CC) $(CFLAGS) -DWITH_BISON -DWITH_FLEX -c $< clean: del /f *.obj distclean: del /f soapcpp2.exe *.obj *.idb *.pdb *.ilk real-distclean: del /f soapcpp2.exe *.obj *.idb *.pdb *.ilk lex.yy.* soapcpp2_yacc.h \ soapcpp2_yacc.c y.tab.* *.output soapcpp2_yacc.c: soapcpp2_yacc.y soapcpp2.h error2.h bison.exe /d /v soapcpp2_yacc.y ren soapcpp2_yacc.tab.h soapcpp2_yacc.h ren soapcpp2_yacc.tab.c soapcpp2_yacc.c lex.yy.c: soapcpp2_yacc.h soapcpp2_yacc.c soapcpp2_lex.l flex.exe /l soapcpp2_lex.l gsoap-2.8.60/gsoap/src/Makefile.in0000644000175000017500000007573013227173557016255 0ustar ellertellert# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ ####### This is the input file for automake, which will generate Makefile.in ########## VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = soapcpp2$(EXEEXT) subdir = gsoap/src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_soapcpp2_OBJECTS = soapcpp2-soapcpp2_yacc.$(OBJEXT) \ soapcpp2-soapcpp2_lex.$(OBJEXT) soapcpp2-symbol2.$(OBJEXT) \ soapcpp2-error2.$(OBJEXT) soapcpp2-init2.$(OBJEXT) \ soapcpp2-soapcpp2.$(OBJEXT) soapcpp2_OBJECTS = $(am_soapcpp2_OBJECTS) am__DEPENDENCIES_1 = soapcpp2_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) soapcpp2_LINK = $(CCLD) $(soapcpp2_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) AM_V_LEX = $(am__v_LEX_@AM_V@) am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) am__v_LEX_0 = @echo " LEX " $@; am__v_LEX_1 = YLWRAP = $(top_srcdir)/ylwrap am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ -e s/c++$$/h++/ -e s/c$$/h/ YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) AM_V_YACC = $(am__v_YACC_@AM_V@) am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = SOURCES = $(soapcpp2_SOURCES) DIST_SOURCES = $(soapcpp2_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/ylwrap \ soapcpp2_lex.c soapcpp2_yacc.c soapcpp2_yacc.h DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON_DEFINE = @BISON_DEFINE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_SAMPLES = @ENABLE_SAMPLES@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_DEFINE = @LEX_DEFINE@ LEX_FLAGS = @LEX_FLAGS@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SAMPLE_DIRS = @SAMPLE_DIRS@ SAMPLE_EXTRA_LIBS = @SAMPLE_EXTRA_LIBS@ SAMPLE_INCLUDES = @SAMPLE_INCLUDES@ SAMPLE_SSL_LIBS = @SAMPLE_SSL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SOAPCPP2_DEBUG = @SOAPCPP2_DEBUG@ SOAPCPP2_IMPORTPATH = @SOAPCPP2_IMPORTPATH@ SOAPCPP2_IPV6 = @SOAPCPP2_IPV6@ SOAPCPP2_NONAMESPACES = @SOAPCPP2_NONAMESPACES@ SOAPCPP2_NO_C_LOCALE = @SOAPCPP2_NO_C_LOCALE@ STRIP = @STRIP@ VERSION = @VERSION@ WITH_OPENSSL = @WITH_OPENSSL@ WSDL2H_EXTRA_FLAGS = @WSDL2H_EXTRA_FLAGS@ WSDL2H_EXTRA_LIBS = @WSDL2H_EXTRA_LIBS@ WSDL2H_IMPORTPATH = @WSDL2H_IMPORTPATH@ WSDL2H_SOAP_CPP_LIB = @WSDL2H_SOAP_CPP_LIB@ YACC = @YACC@ YACC_LIB = @YACC_LIB@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ platform = @platform@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign 1.4 #LIBS= AM_YFLAGS = -d -v AM_LFLAGS = $(LEX_FLAGS) soapcpp2_CFLAGS = $(BISON_DEFINE) $(LEX_DEFINE) $(C_DEBUG_FLAGS) $(SOAPCPP2_IMPORTPATH) -D$(platform) soapcpp2_LDADD = $(YACC_LIB) $(LEXLIB) soapcpp2_SOURCES = soapcpp2_yacc.y soapcpp2_yacc.h soapcpp2_lex.l symbol2.c error2.c init2.c soapcpp2.c CLEANFILES = *~ soapcpp2_lex.c soapcpp2_yacc.c soapcpp2_yacc.h soapcpp2_yacc.output all: all-am .SUFFIXES: .SUFFIXES: .c .l .o .obj .y $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gsoap/src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign gsoap/src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) soapcpp2_yacc.h: soapcpp2_yacc.c @if test ! -f $@; then rm -f soapcpp2_yacc.c; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) soapcpp2_yacc.c; else :; fi soapcpp2$(EXEEXT): $(soapcpp2_OBJECTS) $(soapcpp2_DEPENDENCIES) $(EXTRA_soapcpp2_DEPENDENCIES) @rm -f soapcpp2$(EXEEXT) $(AM_V_CCLD)$(soapcpp2_LINK) $(soapcpp2_OBJECTS) $(soapcpp2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soapcpp2-error2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soapcpp2-init2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soapcpp2-soapcpp2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soapcpp2-soapcpp2_lex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soapcpp2-soapcpp2_yacc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soapcpp2-symbol2.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` soapcpp2-soapcpp2_yacc.o: soapcpp2_yacc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-soapcpp2_yacc.o -MD -MP -MF $(DEPDIR)/soapcpp2-soapcpp2_yacc.Tpo -c -o soapcpp2-soapcpp2_yacc.o `test -f 'soapcpp2_yacc.c' || echo '$(srcdir)/'`soapcpp2_yacc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-soapcpp2_yacc.Tpo $(DEPDIR)/soapcpp2-soapcpp2_yacc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='soapcpp2_yacc.c' object='soapcpp2-soapcpp2_yacc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-soapcpp2_yacc.o `test -f 'soapcpp2_yacc.c' || echo '$(srcdir)/'`soapcpp2_yacc.c soapcpp2-soapcpp2_yacc.obj: soapcpp2_yacc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-soapcpp2_yacc.obj -MD -MP -MF $(DEPDIR)/soapcpp2-soapcpp2_yacc.Tpo -c -o soapcpp2-soapcpp2_yacc.obj `if test -f 'soapcpp2_yacc.c'; then $(CYGPATH_W) 'soapcpp2_yacc.c'; else $(CYGPATH_W) '$(srcdir)/soapcpp2_yacc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-soapcpp2_yacc.Tpo $(DEPDIR)/soapcpp2-soapcpp2_yacc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='soapcpp2_yacc.c' object='soapcpp2-soapcpp2_yacc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-soapcpp2_yacc.obj `if test -f 'soapcpp2_yacc.c'; then $(CYGPATH_W) 'soapcpp2_yacc.c'; else $(CYGPATH_W) '$(srcdir)/soapcpp2_yacc.c'; fi` soapcpp2-soapcpp2_lex.o: soapcpp2_lex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-soapcpp2_lex.o -MD -MP -MF $(DEPDIR)/soapcpp2-soapcpp2_lex.Tpo -c -o soapcpp2-soapcpp2_lex.o `test -f 'soapcpp2_lex.c' || echo '$(srcdir)/'`soapcpp2_lex.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-soapcpp2_lex.Tpo $(DEPDIR)/soapcpp2-soapcpp2_lex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='soapcpp2_lex.c' object='soapcpp2-soapcpp2_lex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-soapcpp2_lex.o `test -f 'soapcpp2_lex.c' || echo '$(srcdir)/'`soapcpp2_lex.c soapcpp2-soapcpp2_lex.obj: soapcpp2_lex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-soapcpp2_lex.obj -MD -MP -MF $(DEPDIR)/soapcpp2-soapcpp2_lex.Tpo -c -o soapcpp2-soapcpp2_lex.obj `if test -f 'soapcpp2_lex.c'; then $(CYGPATH_W) 'soapcpp2_lex.c'; else $(CYGPATH_W) '$(srcdir)/soapcpp2_lex.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-soapcpp2_lex.Tpo $(DEPDIR)/soapcpp2-soapcpp2_lex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='soapcpp2_lex.c' object='soapcpp2-soapcpp2_lex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-soapcpp2_lex.obj `if test -f 'soapcpp2_lex.c'; then $(CYGPATH_W) 'soapcpp2_lex.c'; else $(CYGPATH_W) '$(srcdir)/soapcpp2_lex.c'; fi` soapcpp2-symbol2.o: symbol2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-symbol2.o -MD -MP -MF $(DEPDIR)/soapcpp2-symbol2.Tpo -c -o soapcpp2-symbol2.o `test -f 'symbol2.c' || echo '$(srcdir)/'`symbol2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-symbol2.Tpo $(DEPDIR)/soapcpp2-symbol2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='symbol2.c' object='soapcpp2-symbol2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-symbol2.o `test -f 'symbol2.c' || echo '$(srcdir)/'`symbol2.c soapcpp2-symbol2.obj: symbol2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-symbol2.obj -MD -MP -MF $(DEPDIR)/soapcpp2-symbol2.Tpo -c -o soapcpp2-symbol2.obj `if test -f 'symbol2.c'; then $(CYGPATH_W) 'symbol2.c'; else $(CYGPATH_W) '$(srcdir)/symbol2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-symbol2.Tpo $(DEPDIR)/soapcpp2-symbol2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='symbol2.c' object='soapcpp2-symbol2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-symbol2.obj `if test -f 'symbol2.c'; then $(CYGPATH_W) 'symbol2.c'; else $(CYGPATH_W) '$(srcdir)/symbol2.c'; fi` soapcpp2-error2.o: error2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-error2.o -MD -MP -MF $(DEPDIR)/soapcpp2-error2.Tpo -c -o soapcpp2-error2.o `test -f 'error2.c' || echo '$(srcdir)/'`error2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-error2.Tpo $(DEPDIR)/soapcpp2-error2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error2.c' object='soapcpp2-error2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-error2.o `test -f 'error2.c' || echo '$(srcdir)/'`error2.c soapcpp2-error2.obj: error2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-error2.obj -MD -MP -MF $(DEPDIR)/soapcpp2-error2.Tpo -c -o soapcpp2-error2.obj `if test -f 'error2.c'; then $(CYGPATH_W) 'error2.c'; else $(CYGPATH_W) '$(srcdir)/error2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-error2.Tpo $(DEPDIR)/soapcpp2-error2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error2.c' object='soapcpp2-error2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-error2.obj `if test -f 'error2.c'; then $(CYGPATH_W) 'error2.c'; else $(CYGPATH_W) '$(srcdir)/error2.c'; fi` soapcpp2-init2.o: init2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-init2.o -MD -MP -MF $(DEPDIR)/soapcpp2-init2.Tpo -c -o soapcpp2-init2.o `test -f 'init2.c' || echo '$(srcdir)/'`init2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-init2.Tpo $(DEPDIR)/soapcpp2-init2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='init2.c' object='soapcpp2-init2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-init2.o `test -f 'init2.c' || echo '$(srcdir)/'`init2.c soapcpp2-init2.obj: init2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-init2.obj -MD -MP -MF $(DEPDIR)/soapcpp2-init2.Tpo -c -o soapcpp2-init2.obj `if test -f 'init2.c'; then $(CYGPATH_W) 'init2.c'; else $(CYGPATH_W) '$(srcdir)/init2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-init2.Tpo $(DEPDIR)/soapcpp2-init2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='init2.c' object='soapcpp2-init2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-init2.obj `if test -f 'init2.c'; then $(CYGPATH_W) 'init2.c'; else $(CYGPATH_W) '$(srcdir)/init2.c'; fi` soapcpp2-soapcpp2.o: soapcpp2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-soapcpp2.o -MD -MP -MF $(DEPDIR)/soapcpp2-soapcpp2.Tpo -c -o soapcpp2-soapcpp2.o `test -f 'soapcpp2.c' || echo '$(srcdir)/'`soapcpp2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-soapcpp2.Tpo $(DEPDIR)/soapcpp2-soapcpp2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='soapcpp2.c' object='soapcpp2-soapcpp2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-soapcpp2.o `test -f 'soapcpp2.c' || echo '$(srcdir)/'`soapcpp2.c soapcpp2-soapcpp2.obj: soapcpp2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -MT soapcpp2-soapcpp2.obj -MD -MP -MF $(DEPDIR)/soapcpp2-soapcpp2.Tpo -c -o soapcpp2-soapcpp2.obj `if test -f 'soapcpp2.c'; then $(CYGPATH_W) 'soapcpp2.c'; else $(CYGPATH_W) '$(srcdir)/soapcpp2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/soapcpp2-soapcpp2.Tpo $(DEPDIR)/soapcpp2-soapcpp2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='soapcpp2.c' object='soapcpp2-soapcpp2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(soapcpp2_CFLAGS) $(CFLAGS) -c -o soapcpp2-soapcpp2.obj `if test -f 'soapcpp2.c'; then $(CYGPATH_W) 'soapcpp2.c'; else $(CYGPATH_W) '$(srcdir)/soapcpp2.c'; fi` .l.c: $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f soapcpp2_lex.c -rm -f soapcpp2_yacc.c -rm -f soapcpp2_yacc.h clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gsoap-2.8.60/gsoap/src/soapcpp2_yacc.tab.h0000644000175000017500000001275713227173557017654 0ustar ellertellert/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { PRAGMA = 258, AUTO = 259, DOUBLE = 260, INT = 261, STRUCT = 262, BREAK = 263, ELSE = 264, LONG = 265, SWITCH = 266, CASE = 267, ENUM = 268, REGISTER = 269, TYPEDEF = 270, CHAR = 271, EXTERN = 272, RETURN = 273, UNION = 274, CONST = 275, FLOAT = 276, SHORT = 277, UNSIGNED = 278, CONTINUE = 279, FOR = 280, SIGNED = 281, VOID = 282, DEFAULT = 283, GOTO = 284, SIZEOF = 285, VOLATILE = 286, DO = 287, IF = 288, STATIC = 289, WHILE = 290, CLASS = 291, PRIVATE = 292, PROTECTED = 293, PUBLIC = 294, VIRTUAL = 295, INLINE = 296, OPERATOR = 297, LLONG = 298, BOOL = 299, CFALSE = 300, CTRUE = 301, WCHAR = 302, TIME = 303, USING = 304, NAMESPACE = 305, ULLONG = 306, MUSTUNDERSTAND = 307, SIZE = 308, FRIEND = 309, TEMPLATE = 310, EXPLICIT = 311, TYPENAME = 312, MUTABLE = 313, FINAL = 314, null = 315, RESTRICT = 316, OVERRIDE = 317, UCHAR = 318, USHORT = 319, UINT = 320, ULONG = 321, NONE = 322, ID = 323, LAB = 324, TYPE = 325, LNG = 326, DBL = 327, CHR = 328, TAG = 329, STR = 330, RA = 331, LA = 332, OA = 333, XA = 334, AA = 335, MA = 336, DA = 337, TA = 338, NA = 339, PA = 340, OR = 341, AN = 342, NE = 343, EQ = 344, GE = 345, LE = 346, RS = 347, LS = 348, AR = 349, PP = 350, NN = 351 }; #endif /* Tokens. */ #define PRAGMA 258 #define AUTO 259 #define DOUBLE 260 #define INT 261 #define STRUCT 262 #define BREAK 263 #define ELSE 264 #define LONG 265 #define SWITCH 266 #define CASE 267 #define ENUM 268 #define REGISTER 269 #define TYPEDEF 270 #define CHAR 271 #define EXTERN 272 #define RETURN 273 #define UNION 274 #define CONST 275 #define FLOAT 276 #define SHORT 277 #define UNSIGNED 278 #define CONTINUE 279 #define FOR 280 #define SIGNED 281 #define VOID 282 #define DEFAULT 283 #define GOTO 284 #define SIZEOF 285 #define VOLATILE 286 #define DO 287 #define IF 288 #define STATIC 289 #define WHILE 290 #define CLASS 291 #define PRIVATE 292 #define PROTECTED 293 #define PUBLIC 294 #define VIRTUAL 295 #define INLINE 296 #define OPERATOR 297 #define LLONG 298 #define BOOL 299 #define CFALSE 300 #define CTRUE 301 #define WCHAR 302 #define TIME 303 #define USING 304 #define NAMESPACE 305 #define ULLONG 306 #define MUSTUNDERSTAND 307 #define SIZE 308 #define FRIEND 309 #define TEMPLATE 310 #define EXPLICIT 311 #define TYPENAME 312 #define MUTABLE 313 #define FINAL 314 #define null 315 #define RESTRICT 316 #define OVERRIDE 317 #define UCHAR 318 #define USHORT 319 #define UINT 320 #define ULONG 321 #define NONE 322 #define ID 323 #define LAB 324 #define TYPE 325 #define LNG 326 #define DBL 327 #define CHR 328 #define TAG 329 #define STR 330 #define RA 331 #define LA 332 #define OA 333 #define XA 334 #define AA 335 #define MA 336 #define DA 337 #define TA 338 #define NA 339 #define PA 340 #define OR 341 #define AN 342 #define NE 343 #define EQ 344 #define GE 345 #define LE 346 #define RS 347 #define LS 348 #define AR 349 #define PP 350 #define NN 351 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 154 "soapcpp2_yacc.y" { Symbol *sym; LONG64 i; double r; char c; char *s; Tnode *typ; Storage sto; Node rec; Entry *e; } /* Line 1529 of yacc.c. */ #line 253 "soapcpp2_yacc.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; gsoap-2.8.60/gsoap/src/soapcpp2.c0000644000175000017500000003552013227173557016074 0ustar ellertellert/* soapcpp2.c Main compiler and code generator batch program. gSOAP XML Web services tools Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "soapcpp2.h" #ifndef SOAPCPP2_IMPORT_PATH # define SOAPCPP2_IMPORT_PATH (NULL) #endif extern void init(void); extern int yyparse(void); extern FILE *yyin; extern const char *ns_cname(const char*, const char*); FILE *fmsg; /* fd to flush compiler messages */ int soap_version = 0; /* SOAP version, -1=no SOAP, 0=not set, 1=1.1, 2=1.2 */ const char *copt = NULL;/* "-c" or "-c++11" or "-c++14" or NULL for default option C++ */ int vflag = 0; /* verbose output */ int wflag = 0; /* when set, don't generate WSDL and schema files */ int cflag = 0; /* when set, generate files with .c extension */ int c11flag = 0; /* when set, generate C++11/C++XX compatible files with .cpp extension */ int Cflag = 0; /* when set, generate only files for clients */ int aflag = 0; /* when set, use value of SOAP Action to dispatch method at server side */ int Aflag = 0; /* when set, require SOAP Action to dispatch method at server side */ int bflag = 0; /* when set, serialize byte arrays char[N] as string */ int eflag = 0; /* when set, use SOAP RPC encoding by default */ int Ecflag = 0; /* when set, generate extra routines for data copying (soap_dup_X) */ int Edflag = 0; /* when set, generate extra routines for data deletion (soap_del_X) */ int Etflag = 0; /* when set, generate data traversal/walker routines */ unsigned long fflag = 0;/* multi-file split for each bundle of -fN defs */ int gflag = 0; /* when set, generate XML sample messages in template format */ int iflag = 0; /* when set, generate new style proxy/object classes inherited from soap struct */ int jflag = 0; /* when set, generate new style proxy/object classes */ int mflag = 0; /* when set, generate code that requires array/binary classes to explicitly remove malloced array */ int nflag = 0; /* when set, names the namespaces global struct '%NAME%_namespaces */ int lflag = 0; /* when set, create library */ int Lflag = 0; /* when set, don't generate soapClientLib/soapServerLib */ int Qflag = 0; /* when set, use C++ namespaces for custom serializers */ int rflag = 0; /* when set, generate report */ int sflag = 0; /* when set, generate strict validation checks */ int Sflag = 0; /* when set, generate only files for servers */ int Tflag = 0; /* when set, generates server auto-test code */ int tflag = 0; /* when set, generates typed messsages (with xsi:type attributes) */ int uflag = 0; /* when set, uncomment WSDL and schema output */ int xflag = 0; /* when set, don't generate sample XML message files */ int yflag = 0; /* when set, add C/C++ info in sample XML messages */ int zflag = 0; /* when set, use backward compatibility option */ char dirpath[1024]; /* directory path for generated source files */ const char *prefix = "soap"; /* file name prefix for generated source files */ const char *fprefix; const char *filename; /* current file name */ const char *importpath = NULL; /* default file import path */ const char *defimportpath = SOAPCPP2_IMPORT_PATH; /* default file import path */ /* IMPORTANT: The terms and conditions of use of this software do not allow for the removal of the copyright notice from the main program for visual display. For integrations with other software, a similar copyright notice must be produced that is visible to users of the software. */ int main(int argc, char **argv) { int i, g; char *a, *s; fmsg = stderr; filename = NULL; for (i = 1; i < argc; i++) { a = argv[i]; if (*a == '-' #ifdef WIN32 || *a == '/' #endif ) { g = 1; while (g && *++a) switch (*a) { case 'C': Cflag = 1; if (Sflag) fprintf(stderr, "soapcpp2: using both options -C and -S omits client/server code\n"); break; case 'c': copt = a - 1; if (a[1] == '+' && a[2] == '+') { a += 2; if (isdigit(a[1]) && isdigit(a[2])) { c11flag = 10*(a[1] - '0') + a[2] - '0'; /* 11 = C++11, 14 = C++14, etc */ a += 2; } cflag = 0; } else { cflag = 1; } break; case 'd': a++; g = 0; if (*a) strcpy(dirpath, a); else if (i < argc && argv[++i]) strcpy(dirpath, argv[i]); else execerror("Option -d requires a directory path"); if (*dirpath && dirpath[strlen(dirpath)-1] != '/' && dirpath[strlen(dirpath)-1] != '\\') strcat(dirpath, SOAP_PATHCAT); break; case 'e': eflag = 1; break; case 'E': a++; g = 0; while (*a) { switch (*a) { case 'c': Ecflag = 1; break; case 'd': Edflag = 1; break; case 't': Etflag = 1; break; default: execerror("Option -E requires 'c' and/or 'd'"); } a++; } break; case 'f': a++; g = 0; if (*a) fflag = strtoul(a, NULL, 10); else if (i < argc && argv[++i]) fflag = strtoul(argv[i], NULL, 10); if (!fflag) execerror("Option -f requires a value"); if (fflag < 10) fflag = 10; break; case 'g': gflag = 1; break; case 'a': aflag = 1; break; case 'A': aflag = 1; Aflag = 1; break; case 'b': bflag = 1; break; case '?': case 'h': fprintf(stderr, "Usage: soapcpp2 [-0|-1|-2] [-C|-S] [-T] [-Ecdt] [-L] [-a] [-A] [-b] [-c|-c++|-c++11] [-d path] [-e] [-f N] [-g] [-h] [-i] [-I path" SOAP_PATHSEP "path" SOAP_PATHSEP "...] [-l] [-m] [-n] [-p name] [-Q name] [-q name] [-r] [-s] [-t] [-u] [-V] [-v] [-w] [-x] [-y] [-z#] [infile]\n\n"); fprintf(stderr, "\ -1 generate SOAP 1.1 bindings\n\ -2 generate SOAP 1.2 bindings\n\ -0 no SOAP bindings, use REST\n\ -C generate client-side code only\n\ -S generate server-side code only\n\ -T generate server auto-test code\n\ -Ec generate extra routines for deep copying\n\ -Ed generate extra routines for deep deletion\n\ -Et generate extra routines for data traversals with walker functions\n\ -L don't generate soapClientLib/soapServerLib\n\ -a use SOAPAction with WS-Addressing to invoke server-side operations\n\ -A require SOAPAction to invoke server-side operations\n\ -b serialize byte arrays char[N] as string\n\ -c generate C source code\n\ -c++ generate C++ source code (default)\n\ -c++11 generate C++ source code optimized for C++11 (compile with -std=c++11)\n\ -dpath use path to save files\n\ -e generate SOAP RPC encoding style bindings (also use -1 or -2)\n\ -fN multiple soapC files, with N serializer definitions per file (N>=10)\n\ -g generate XML sample messages in template format\n\ -h display help info\n\ -Ipath use path(s) for #import (paths separated with '" SOAP_PATHSEP "')\n\ -i generate C++ service proxies and objects inherited from soap struct\n\ -j generate C++ service proxies and objects that share a soap struct\n\ -l generate linkable modules (experimental)\n\ -m generate Matlab(tm) code for MEX compiler (deprecated)\n\ -n use service name to rename service functions and namespace table\n\ -pname save files with new prefix name instead of 'soap'\n\ -Qname use name as the C++ namespace for decls, including custom serializers\n\ -qname use name as the C++ namespace for decls, excluding custom serializers\n\ -r generate soapReadme.md report\n\ -s generate deserialization code with strict XML validation checks\n\ -t generate code for fully xsi:type typed SOAP/XML messaging\n\ -u uncomment comments in WSDL/schema output by suppressing XML comments\n\ -V display the current version and exit\n\ -v verbose output\n\ -w don't generate WSDL and schema files\n\ -x don't generate sample XML message files\n\ -y include C/C++ type access information in sample XML messages\n\ -z1 compatibility: generate old-style C++ service proxies and objects\n\ -z2 compatibility with 2.7.x: omit XML output for NULL pointers\n\ -z3 compatibility with <= 2.8.30: _param_N indexing; nillable pointers\n\ infile header file to parse (if none reads stdin)\n\ \n"); exit(0); case 'I': a++; g = 0; s = NULL; if (*a) s = a; else if (i < argc && argv[++i]) s = argv[i]; else execerror("Option -I requires an import path"); if (importpath && s) { char *t = (char*)emalloc(strlen(importpath) + strlen(s) + 2); strcpy(t, importpath); strcat(t, SOAP_PATHSEP); strcat(t, s); importpath = t; } else importpath = s; break; case 'i': iflag = 1; break; case 'j': jflag = 1; break; case 'm': mflag = 1; break; case 'n': nflag = 1; break; case 'l': lflag = 1; break; case 'L': Lflag = 1; break; case 'r': rflag = 1; break; case 's': sflag = 1; break; case 'S': Sflag = 1; if (Cflag) fprintf(stderr, "soapcpp2: using both options -C and -S omits client/server code\n"); break; case 'T': Tflag = 1; break; case 't': tflag = 1; break; case 'u': uflag = 1; break; case 'w': wflag = 1; break; case 'x': xflag = 1; break; case 'y': yflag = 1; break; case 'p': a++; g = 0; if (*a) prefix = ns_cname(a, NULL); else if (i < argc && argv[++i]) prefix = ns_cname(argv[i], NULL); else execerror("Option -p requires an output file name prefix"); break; case 'Q': Qflag = 1; /* fall through */ case 'q': a++; g = 0; if (*a) set_namespace(ns_cname(a, NULL)); else if (i < argc && argv[++i]) set_namespace(ns_cname(argv[i], NULL)); else execerror("Option -q requires a namespace name"); break; case '0': soap_version = -1; break; case '1': soap_version = 1; envURI = "http://schemas.xmlsoap.org/soap/envelope/"; encURI = "http://schemas.xmlsoap.org/soap/encoding/"; break; case '2': soap_version = 2; envURI = "http://www.w3.org/2003/05/soap-envelope"; encURI = "http://www.w3.org/2003/05/soap-encoding"; rpcURI = "http://www.w3.org/2003/05/soap-rpc"; break; case 'V': printf("%s", VERSION); exit(0); case 'v': vflag = 1; break; case 'z': a++; g = 0; if (*a) zflag = *a - '0'; else if (i < argc && argv[++i]) zflag = *argv[i] - '0'; else execerror("Option -z requires a digit"); break; default: fprintf(stderr, "soapcpp2: Unknown option %s\n", a); exit(1); } } else if (!(yyin = fopen(argv[i], "r"))) { sprintf(errbuf, "Cannot open file \"%s\" for reading", argv[i]); execerror(errbuf); } else filename = argv[i]; } fprintf(fmsg, "\n** The gSOAP code generator for C and C++, soapcpp2 release " VERSION "\n** Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc.\n** All Rights Reserved. This product is provided \"as is\", without any warranty.\n** The soapcpp2 tool and its generated software are released under the GPL.\n** ----------------------------------------------------------------------------\n** A commercial use license is available from Genivia Inc., contact@genivia.com\n** ----------------------------------------------------------------------------\n\n"); if (filename == NULL) { filename = "(stdin)"; fprintf(fmsg, "Reading from stdin...\n"); } if (importpath && defimportpath) { char *t = (char*)emalloc(strlen(importpath) + strlen(defimportpath) + 2); strcpy(t, importpath); strcat(t, SOAP_PATHSEP); strcat(t, defimportpath); importpath = t; } else if (!importpath) importpath = defimportpath; init(); if (yyparse()) synerror("skipping the remaining part of the input"); return errstat(); } gsoap-2.8.60/gsoap/src/MakefileManual0000644000175000017500000000242013227173557016770 0ustar ellertellert# gSOAP soapcpp2 Makefile by Robert van Engelen, Genivia Inc. # Use this to build the soapcpp2 tool when autoconf/automake are not # available. # # Dependences: # Flex (or Lex) # Bison # # Mac OS X universal binary: # CC=gcc -arch i386 -arch ppc CC=gcc # use LEX=flex -l or LEX=lex LEX=flex -l # use YACC=bison or YACC=yacc -d -v -s soapcpp2_yacc YACC=bison # For static linkage with Flex use: # LIBS=/usr/lib/libfl.a # For static linkage with Lex use: # LIBS=/usr/lib/libl.a COFLAGS=-O1 # For static linking use: # COFLAGS=-O1 -static # For debugging use: # COFLAGS=-g CWFLAGS=-Wall # CIFLAGS= # use -DWITH_BISON or -DWITH_YACC # use -DWITH_FLEX or -DWITH_LEX CMFLAGS=-DWITH_BISON -DWITH_FLEX # CFLAGS= $(CWFLAGS) $(COFLAGS) $(CIFLAGS) $(CMFLAGS) # release: $(MAKE) -f MakefileManual distclean $(YACC) -d -v soapcpp2_yacc.y $(LEX) soapcpp2_lex.l $(MAKE) -f MakefileManual soapcpp2 soapcpp2: soapcpp2.h soapcpp2_yacc.tab.o symbol2.o error2.o lex.yy.o init2.o soapcpp2.o $(CC) symbol2.o error2.o soapcpp2_yacc.tab.o lex.yy.o init2.o soapcpp2.o $(LIBS) -o $@ -cp -f soapcpp2 ../bin .c.o: soapcpp2_yacc.tab.h soapcpp2.h error2.h $(CC) $(CFLAGS) -c $< .PHONY: clean distclean clean: -rm -f *.o distclean: -rm -f soapcpp2 *.o *.output gsoap-2.8.60/gsoap/src/soapcpp2_lex.l0000644000175000017500000012660613227173557016763 0ustar ellertellert/* soapcpp2_lex.l Flex/Lex tokenizer for C/C++ -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2015, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under ONE of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ %{ #include "soapcpp2.h" #ifndef YY_NO_UNISTD_H #define YY_NO_UNISTD_H #endif #ifdef HAVE_CONFIG_H #include "soapcpp2_yacc.h" #else #include "soapcpp2_yacc.tab.h" #endif #ifdef WITH_BISON YYSTYPE yylval; #undef YY_NEED_STRLEN #define YY_INPUT(buf, result, max_size) \ { \ int c = getc(yyin); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } #endif #ifndef WITH_LEX #define MAX_IMPORT_DEPTH 16 static struct importlist { struct importlist *next; char name[1]; } *importlist = NULL; static const char *fnstk[MAX_IMPORT_DEPTH]; static int lnstk[MAX_IMPORT_DEPTH]; static const char *imstk[MAX_IMPORT_DEPTH]; static YY_BUFFER_STATE instk[MAX_IMPORT_DEPTH]; #endif int imports = 0; const char *imported = NULL; static void check_id(const char*); static Token install_id(void); static Token install_tag(void); static Token install_int(void); static Token install_hex(void); static Token install_num(void); static Token install_chr(void); static Token install_str(void); static Token install_pragma(void); static void directive(void), option(void), xpath(void); static Token error_chr(void); static Token error_str(void); static int convchar(int*); static int hexchar(int*); static int octchar(int*); static void module(const char *name, const char *fullname); static void import(const char *file); static long magic(const char *name); %} BOM \xEF\xBB\xBF ws [ \t\v\r\f\n\x1A\xA0] digit [0-9] alpha ([a-zA-Z_\xA8\xAA\xAD\xAF\xB2\xB5\xB7\xB8\xB9\xBA\xBC\xBD\xBE]|[\xC0-\xFF][\x80-\xBF]*|\\u([0-9a-fA-F]{4})) id (:?{alpha})(:?{alpha}|{digit}|::)* tag `[^`\t\v\r\f\n>]+` int {digit}+[lLuU]* hex 0[xX][0-9a-fA-F]+[lLuU]* num {digit}+(\.{digit}+([Ee][+-]?{digit}+)?|(\.{digit}+)?[Ee][+-]?{digit}+)[fFlL]?|{digit}+[fF] chr '(\\'|[^'\n])*' str L?\"(\\\"|\\\n|[^"])*\" module #{ws}*module{ws}+.*\n import #{ws}*import{ws}+.*\n %option noyywrap %option noinput %option nounput %x MLCOMMENT %% ^{BOM} { /* skip UTF8 BOM */ } {ws} { /* skip white space */ } "/*" { BEGIN(MLCOMMENT); } .|\n { } "*/" { BEGIN(INITIAL); } <> { execerror("Unclosed multiline comment at end of file"); } "//"\/*"gsoapopt".*\n { option(); } "//"\/*"gsoap"(.|\\\n)*\n { directive(); } "//"\/*"xpath".*\n { xpath(); } "//".*\n { /* skip single line comment */ } "+=" { return PA; } "-=" { return NA; } "*=" { return TA; } "/=" { return DA; } "%=" { return MA; } "&=" { return AA; } "^=" { return XA; } "|=" { return OA; } "<<=" { return LA; } ">>=" { return RA; } "||" { return OR; } "&&" { return AN; } "==" { return EQ; } "!=" { return NE; } "<=" { return LE; } ">=" { return GE; } "<<" { return LS; } ">>" { return RS; } "++" { return PP; } "--" { return NN; } "->" { return AR; } [;,:=|^&<>+\-*/%!?~(){}\[\].@$] { return yytext[0]; } {id} { return install_id(); } {tag} { return install_tag(); } {int} { return install_int(); } {hex} { return install_hex(); } {num} { return install_num(); } {chr} { return install_chr(); } {str} { return install_str(); } {module} { char *s, *t, buf[1024]; s = strchr(yytext, '"'); if (!s) t = yytext+7; else { strcpy(buf, s+1); s = strchr(buf, '"'); *s = '\0'; t = strchr(s+1, '"'); if (t) { t++; s = strchr(t+1, '"'); if (s) *s = '\0'; } } module(buf, t); } {import} { char *s, buf[1024]; s = strchr(yytext, '"'); if (s) { strncpy(buf, s + 1, sizeof(buf)); buf[sizeof(buf) - 1] = '\0'; s = strchr(buf, '"'); if (!s) lexerror("Invalid import directive: missing ending \" or path too long"); else { *s = '\0'; import(buf); } } else lexerror("Invalid import directive: \" expected"); } #.*\n { return install_pragma(); } '[^'\n]*/\n { return error_chr(); } \"[^"\n]*/\n { return error_str(); } . { lexerror("Skipping unknown symbol"); } <> { /* when Lex complains: remove this line and below */ #ifndef WITH_LEX if (--imports < 0) { yyterminate(); } else { if (vflag) fprintf(stderr, "End of %s\n\n", filename); yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(instk[imports]); filename = fnstk[imports]; yylineno = lnstk[imports]; imported = imstk[imports]; } #endif } %% /* install_id - lookup identifier in symbol table. If found, return token and symbol table entry. If not found, create entry in symbol table and return ID token. */ static Token install_id() { Symbol *p = lookup(yytext); if (!p) { int i, flag = 0; p = install(yytext, ID); /* [_](x|X)(m|M)(l|L)__ is OK */ /* [_](x|X)(m|M)(l|L).* is not OK */ /* .*__(x|X)(m|M)(l|L) is not OK */ /* .*::(x|X)(m|M)(l|L) is not OK */ for (i = 0; i < (int)yyleng; i++) { if ((yytext[i] == '_' && yytext[i+1] == '_') || (yytext[i] == ':' && yytext[i+1] == ':')) { flag = 1; check_id(yytext + i + 2); } } if (!flag && strcmp(yytext, "XML")) check_id(yytext); } yylval.sym = p; return p->token; } /* install_tag - return TAG token. */ static Token install_tag() { yylval.s = (char*)emalloc(yyleng); /* yyleng = length(yytext) */ strcpy(yylval.s, yytext+1); yylval.s[yyleng-2] = '\0'; return TAG; } /* check_id - check for (x|X)(m|M)(l|L) */ static void check_id(const char *s) { while (*s == '_') s++; if ((s[0] == 'x' || s[0] == 'X') && (s[1] == 'm' || s[1] == 'M') && (s[2] == 'l' || s[2] == 'L')) { sprintf(errbuf, "identifier '%s' starts with or embeds '%3.3s' character sequence, which is exclusively reserved for and by the W3C XML standards (for enum constants: please ignore this warning)", yytext, s); semwarn(errbuf); } } /* install_int - convert digits to integer and return LNG token. */ static Token install_int(void) { sscanf(yytext, SOAP_ULONG_FORMAT, &yylval.i); return LNG; } /* install_hex - convert hexadecimal digits to integer and return LNG */ static Token install_hex(void) { sscanf(yytext, SOAP_XLONG_FORMAT, &yylval.i); return LNG; } /* install_num - convert digits to floating point number and return DBL */ static Token install_num(void) { sscanf(yytext, "%lf", &yylval.r); return DBL; } /* install_chr - convert character constant and return CHR. */ static Token install_chr(void) { int i = 2; if (yytext[1] == '\\') yylval.c = convchar(&i); else yylval.c = yytext[i-1]; if (yytext[i] != '\'') lexerror("Illegal character constant"); return CHR; } /* install_str - convert and store string in memory. Return STR. */ static Token install_str(void) { int i, j = 0; yylval.s = (char*)emalloc(yyleng - 1); /* yyleng = length(yytext) */ for (i = 1 + (yytext[0] == 'L'); i < (int)yyleng - 1; i++) if (yytext[i] == '\\') { if (yytext[++i] != '\n') { yylval.s[j++] = convchar(&i); i--; } } else yylval.s[j++] = yytext[i]; yylval.s[j] = '\0'; return STR; } /* install_pragma - store pragma in string. Return PRAGMA. */ static Token install_pragma(void) { yylval.s = (char*)emalloc(yyleng); /* yyleng = length(yytext) */ strncpy(yylval.s, yytext, strlen(yytext)-1); yylval.s[strlen(yytext)-1] = '\0'; return PRAGMA; } static void directive(void) { int i, j, k; char *s; Service *sp; Method *m; Data *d; int service; for (i = 0; yytext[i]; i++) if (yytext[i] <= 32) break; for (; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; if (!strncmp(yytext+i, "schema", 6)) { sprintf(errbuf, "gsoap schema directive without namespace: %s", yytext+i); semwarn(errbuf); s = (char*)emalloc(1); *s = '\0'; } else if (!strncmp(yytext+i, "service", 7)) { s = (char*)emalloc(1); *s = '\0'; } else { for (j = i; yytext[j]; j++) if (yytext[j] <= 32) break; if (i == j) return; s = (char*)emalloc(j-i+1); for (k = 0; k < j-i; k++) { s[k] = yytext[k+i]; if (s[k] == '_') s[k] = '-'; } s[k] = '\0'; for (i = j; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; } for (sp = services; sp; sp = sp->next) if (!strcmp(sp->ns, s)) break; if (!sp) { sp = (Service*)emalloc(sizeof(Service)); sp->next = services; sp->ns = s; sp->name = NULL; sp->porttype = NULL; sp->portname = NULL; sp->binding = NULL; sp->definitions = NULL; sp->transport = NULL; sp->URL = NULL; sp->URI = NULL; sp->URI2 = NULL; sp->WSDL = NULL; sp->style = NULL; sp->encoding = NULL; sp->protocol = NULL; sp->xsi_type = 0; sp->elementForm = NULL; sp->attributeForm = NULL; sp->executable = NULL; sp->import = NULL; sp->documentation = NULL; sp->list = NULL; sp->data = NULL; services = sp; } if (!strncmp(yytext+i, "service", 7) || !strncmp(yytext+i, "schema", 6)) { service = strncmp(yytext+i, "schema", 6); for (i += 7; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; for (j = i; yytext[j]; j++) if (yytext[j] <= 32) break; for (; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; /* if (j == k) return; */ s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m = NULL; if (!strncmp(yytext+i, "name:", 5)) { sp->name = s; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; sp->documentation = s; } else if (service && (!strncmp(yytext+i, "type:", 5) || !strncmp(yytext+i, "portType:", 9) || !strncmp(yytext+i, "interface:", 10))) sp->porttype = s; else if (!strncmp(yytext+i, "portName:", 9)) sp->portname = s; else if (!strncmp(yytext+i, "binding:", 8)) sp->binding = s; else if (!strncmp(yytext+i, "definitions:", 12)) sp->definitions = s; else if (!strncmp(yytext+i, "documentation:", 14) || !strncmp(yytext+i, "doc:", 4)) { for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; sp->documentation = s; } else if (!strncmp(yytext+i, "transport:", 10)) sp->transport = s; else if (!strncmp(yytext+i, "location:", 9) || !strncmp(yytext+i, "endpoint:", 9) || !strncmp(yytext+i, "port:", 5)) { if (sp->URL) { char *t = (char*)emalloc(strlen(sp->URL) + strlen(s) + 2); strcpy(t, sp->URL); strcat(t, " "); strcat(t, s); sp->URL = t; } else sp->URL = s; if (!service && !sp->import) sp->import = s; } else if (!strncmp(yytext+i, "executable:", 11)) sp->executable = s; else if (!strncmp(yytext+i, "namespace:", 10)) { if (service) { if (!sp->URI) sp->URI = s; sp->WSDL = s; } else if (!strcmp(sp->ns, "SOAP-ENV")) { if (soap_version > 0) semwarn("option -1 or -2 overrides SOAP-ENV namespace"); else envURI = s; sp->URI = (char*)envURI; } else if (!strcmp(sp->ns, "SOAP-ENC")) { if (soap_version > 0) semwarn("option -1 or -2 overrides SOAP-ENC namespace"); else encURI = s; sp->URI = (char*)encURI; } else sp->URI = s; } else if (!strncmp(yytext+i, "namespace2:", 11)) { sp->URI2 = s; } else if (!strncmp(yytext+i, "typed:", 6)) { sp->xsi_type = (*s == 'y'); } else if (!strncmp(yytext+i, "form:", 5)) { sp->elementForm = s; sp->attributeForm = s; } else if (!strncmp(yytext+i, "elementForm:", 12)) sp->elementForm = s; else if (!strncmp(yytext+i, "attributeForm:", 14)) sp->attributeForm = s; else if (!strncmp(yytext+i, "import:", 7)) { if (!sp->URI) sp->URI = s; sp->import = s; } else if (!strncmp(yytext+i, "encoding:", 9)) { if (!strcmp(s, "encoded")) sp->encoding = ""; else sp->encoding = s; } else if (!strncmp(yytext+i, "style:", 6)) sp->style = s; else if (!strncmp(yytext+i, "protocol:", 9)) sp->protocol = s; else if (!strncmp(yytext+i, "method-protocol:", 16)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = PROTOCOL; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-style:", 13)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = STYLE; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-encoding:", 16)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = ENCODING; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; if (strcmp(s, "encoded")) m->part = s; else m->part = ""; } else if (!strncmp(yytext+i, "method-response-encoding:", 25)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = RESPONSE_ENCODING; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; if (strcmp(s, "encoded")) m->part = s; else m->part = ""; } else if (!strncmp(yytext+i, "method-documentation:", 21) || !strncmp(yytext+i, "method:", 7)) { d = (Data*)emalloc(sizeof(Data)); d->name = s; d->text = NULL; d->next = sp->data; sp->data = d; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; d->text = s; } else if (!strncmp(yytext+i, "method-action:", 14)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-input-action:", 20)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = REQUEST_ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-output-action:", 21)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = RESPONSE_ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-fault-action:", 20)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = FAULT_ACTION; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-mime-type:", 17)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = MIMEIN | MIMEOUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-input-mime-type:", 23)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = MIMEIN; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-output-mime-type:", 24)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = MIMEOUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-header-part:", 19)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = HDRIN | HDROUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-input-header-part:", 25)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = HDRIN; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-output-header-part:", 26)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = HDROUT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!strncmp(yytext+i, "method-fault:", 13)) { m = (Method*)emalloc(sizeof(Method)); m->name = s; m->mess = FAULT; m->part = NULL; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] <= 32) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; m->part = s; } else if (!service && (!strncmp(yytext+i, "type-documentation:", 19) || !strncmp(yytext+i, "type:", 5))) { d = (Data*)emalloc(sizeof(Data)); d->name = s; d->text = NULL; d->next = sp->data; sp->data = d; for (j = k; yytext[j]; j++) if (yytext[j] > 32 && yytext[j] != '\\') break; for (k = j; yytext[k]; k++) if (yytext[k] == '\\') k++; else if (yytext[k] == 10 || yytext[k] == 13) break; if (j == k) return; s = (char*)emalloc(k-j+1); strncpy(s, yytext+j, k-j); s[k-j] = '\0'; d->text = s; } else { sprintf(errbuf, "unrecognized gsoap directive: %s", yytext+i); semwarn(errbuf); } if (m) { m->next = NULL; if (!sp->list) sp->list = m; else { Method *p; for (p = sp->list; p->next; p = p->next) continue; p->next = m; } } } else { sprintf(errbuf, "unrecognized gsoap directive: %s", yytext); semwarn(errbuf); } } static void option(void) { int i; if (imports) { sprintf(errbuf, "options directive: %s ignored in imported file(s)", yytext); semwarn(errbuf); return; } for (i = 0; yytext[i]; i++) if (yytext[i] <= 32) break; for (; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; for (; yytext[i]; i++) switch (yytext[i]) { case 'a': aflag = 1; break; case 'c': if (yytext[i+1] == '+' && yytext[i+2] == '+') { i += 2; if (yytext[i+1] == '1' && yytext[i+2] == '1') { i += 2; c11flag = 1; } cflag = 0; } else cflag = 1; break; case 'e': eflag = 1; break; case 'n': nflag = 1; break; case 'l': lflag = 1; break; case 't': tflag = 1; break; case 'w': wflag = 1; break; default: if (yytext[i] < 32 || yytext[i] == '/') return; } } static void xpath(void) { int i, j, k; char *s; XPath *xp; for (i = 0; yytext[i]; i++) if (yytext[i] <= 32) break; for (; yytext[i]; i++) if (yytext[i] > 32 && yytext[i] != '\\') break; for (j = i; yytext[j]; j++) if (yytext[j] <= 32) break; if (i == j) return; for (k = j; yytext[k]; k++) if (yytext[k] > 32 && yytext[k] != '\\') break; s = (char*)emalloc(yyleng - i); strncpy(s, yytext + i, j - i); s[j - i] = '\0'; for (xp = xpaths; xp; xp = xp->next) if (!strcmp(xp->name, s)) break; if (!xp) { xp = (XPath*)emalloc(sizeof(XPath)); xp->next = xpaths; xp->name = s; } s += j - i + 1; strcpy(s, yytext + k); xp->path = s; while (*s > 32) s++; *s = '\0'; } /* error_chr - lexical error in character constant. Return character 0 to allow parsing to continue */ static Token error_chr(void) { lexerror("Ending-' missing in character constant"); yylval.c = '\0'; return CHR; } /* error_str - lexical error in string. Return empty string to allow parsing to continue */ static Token error_str(void) { lexerror("Ending-\" missing in string"); yylval.s = ""; return STR; } /* Character conversion functions */ static int convchar(int *p) { switch (yytext[(*p)++]) { case 'a': return '\a'; case 'b': return '\b'; case 'f': return '\f'; case 'n': return '\n'; case 'r': return '\r'; case 't': return '\t'; case 'v': return '\v'; case 'x': return hexchar(p); case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': (*p)--; return octchar(p); default: return yytext[*p-1]; } } static int hexchar(int *p) { int i, d, c = 0; for (i = 0; isxdigit(d = yytext[*p]) && i < 2; i++) { c = (c << 4) + (d <= '9' ? d - '0' : toupper(d) - '7'); (*p)++; } return c; } static int octchar(int *p) { int i, d, c = 0; for (i = 0; (d = yytext[*p]) >= '0' && d <= '7' && i < 3; i++) { c = (c << 3) + d - '0'; (*p)++; } return c; } static void module(const char *name, const char *fullname) { char *s; if (!fullname) fullname = name; if (imports) { Pragma **pp; s = (char*)emalloc(strlen(fullname)+15); sprintf(s, "#include \"%sH.h\"", fullname); for (pp = &pragmas; *pp; pp = &(*pp)->next) if (!strcmp((*pp)->pragma, s)) break; if (!*pp) { *pp = (Pragma*)emalloc(sizeof(Pragma)); (*pp)->pragma = s; (*pp)->next = NULL; } s = (char*)emalloc(strlen(fullname)+1); imported = strcpy(s, fullname); fprintf(stderr, "Importing module '%s'\n\n", fullname); } else { lflag = 1; typeNO = magic(name); s = (char*)emalloc(strlen(fullname)+1); prefix = strcpy(s, fullname); fprintf(stderr, "Compiling module '%s' (magic number = %d)\n\n", fullname, typeNO); } } static long magic(const char *name) { size_t i; long n; if (strlen(name) > 4) semerror("#module name length must not exceed four characters"); n = 0; for (i = 0; i < strlen(name); i++) if (name[i] >= 'a' && name[i] <= 'z') n = 26*n + name[i] - 'a'; else if (name[i] >= 'A' && name[i] <= 'Z') n = 26*n + name[i] - 'A'; else semerror("#module name must be alphabetic and the length must not exceed four characters.\nUse '#module name longname' for longer names."); return 4699*n + 153424; } #ifdef WITH_LEX static void import(const char *file) { execerror("Cannot #import: soapcpp2 not compiled with flex (replace lex with flex)"); } #else static void import(const char *file) { char buf[1024]; struct importlist *p; if (vflag) fprintf(stderr, "Importing '%s': ", file); for (p = importlist; p; p = p->next) { if (!strcmp(p->name, file)) { if (vflag) fprintf(stderr, "file already read or currently being read\n\n"); return; } } if (imports >= MAX_IMPORT_DEPTH) execerror("Imports nested too deep"); instk[imports] = YY_CURRENT_BUFFER; fnstk[imports] = filename; lnstk[imports] = yylineno; imstk[imports] = imported; yylineno = 1; /* imported = NULL; this is useful to change the semantics of #import to NOT consider non-module imports to be part of the current module */ imports++; buf[0] = '\0'; if (!(yyin = fopen(file, "r"))) { if (importpath) { const char *s, *t; s = importpath; do { size_t n; t = strstr(s, SOAP_PATHSEP); if (t) { if ((size_t)(t - s) >= sizeof(buf)) t = s + sizeof(buf) - 1; strncpy(buf, s, t - s); buf[t - s] = '\0'; s = t + sizeof(SOAP_PATHSEP) - 1; } else { strcpy(buf, s); s = NULL; } n = strlen(buf) - 1; #ifdef __VMS if (buf[n] != ']' && buf[n] != ':') strcat(buf, ":"); #else if (buf[n] != SOAP_PATHCAT[0]) strcat(buf, SOAP_PATHCAT); #endif strcat(buf, file); yyin = fopen(buf, "r"); } while (s && !yyin); } if (!yyin) { sprintf(errbuf, "#import: Cannot open file \"%s\" for reading.\nHint: use option -I (for example -Igsoap" SOAP_PATHSEP "gsoap/import" SOAP_PATHSEP "gsoap/custom:.)", file); execerror(errbuf); } } if (vflag) { if (buf[0]) fprintf(stderr, "OK, found at %s\n\n", buf); else fprintf(stderr, "OK\n\n"); } p = (struct importlist*)emalloc(sizeof(struct importlist) + strlen(file)); /* has already + 1 byte size */ strcpy(p->name, file); filename = p->name; p->next = importlist; importlist = p; yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); } #endif gsoap-2.8.60/gsoap/src/soapcpp2_yacc.y0000644000175000017500000034374713227173557017136 0ustar ellertellert/* soapcpp2_yacc.y Yacc/Bison grammar. Build notes: 1. Bison 1.6 is known to crash on Win32 systems if YYINITDEPTH is too small Compile with -DYYINITDEPTH=5000 2. This grammar has shift/reduce conflicts related to the use of a class declaration with a base class (e.g. class Y : public X) and the use of a maxOccurs (class Y :10). Internally the conflict is resolved in favor of a shift by Bison/Yacc, which leads to the correct parsing behavior. Therefore, the warning can be ignored. If this leads to an error, then please enable the following directive (around line 121): %expect 3 // Bison: ignore one shift/reduce conflict -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2015, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under ONE of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ %{ #include "soapcpp2.h" #ifdef WIN32 #ifndef __STDC__ #define __STDC__ #endif #define YYINCLUDED_STDLIB_H #ifdef WIN32_WITHOUT_SOLARIS_FLEX extern int soapcpp2lex(void); #else extern int yylex(void); #endif #else extern int yylex(void); #endif #define MAXNEST 16 /* max. nesting depth of scopes */ typedef struct Scope { Table *table; Entry *entry; Node node; LONG64 val; int offset; Bool grow; /* true if offset grows with declarations */ Bool mask; /* true if enum is mask */ } Scope; Scope stack[MAXNEST], /* stack of tables and offsets */ *sp; /* current scope stack pointer */ Table *classtable = NULL, *enumtable = NULL, *typetable = NULL, *booltable = NULL, *templatetable = NULL; int transient = 0; int permission = 0; int custom_header = 1; int custom_fault = 1; Pragma *pragmas = NULL; Tnode *qname = NULL; Tnode *xml = NULL; /* function prototypes for support routine section */ static Entry *undefined(Symbol*); static Tnode *mgtype(Tnode*, Tnode*); static Node op(const char*, Node, Node), iop(const char*, Node, Node), relop(const char*, Node, Node); static void mkscope(Table*, int), enterscope(Table*, int), exitscope(void); static int integer(Tnode*), real(Tnode*), numeric(Tnode*); static void add_soap(void), add_XML(void), add_qname(void), add_header(void), add_fault(void), add_response(Entry*, Entry*), add_result(Tnode*), add_request(Symbol*, Scope*), add_pragma(const char*); /* imported from symbol2.c */ extern int is_string(Tnode*), is_wstring(Tnode*), is_smart(Tnode*), is_XML(Tnode*), is_stdXML(Tnode*), is_anyType(Tnode*), is_anyAttribute(Tnode*); extern char *c_storage(Storage); extern const char *c_type(Tnode*); extern int is_primitive_or_string(Tnode*), is_stdstr(Tnode*), is_binary(Tnode*), is_external(Tnode*), is_mutable(Entry*); extern Entry *unlinklast(Table*); /* Temporaries used in semantic rules */ int i; char *s, *s1; const char *s2; Symbol *sym; Entry *p, *q; Tnode *t; Node tmp, c; %} /* We expect one shift-reduce conflict, see build notes in the header above */ /* %expect 1 */ /* directive is not compatible with Yacc */ /* If Yacc complains then remove the line above to allow Yacc to proceed */ %union { Symbol *sym; LONG64 i; double r; char c; char *s; Tnode *typ; Storage sto; Node rec; Entry *e; } /* pragmas */ %token PRAGMA /* keywords */ %token AUTO DOUBLE INT STRUCT %token BREAK ELSE LONG SWITCH %token CASE ENUM REGISTER TYPEDEF %token CHAR EXTERN RETURN UNION %token CONST FLOAT SHORT UNSIGNED %token CONTINUE FOR SIGNED VOID %token DEFAULT GOTO SIZEOF VOLATILE %token DO IF STATIC WHILE %token CLASS PRIVATE PROTECTED PUBLIC %token VIRTUAL INLINE OPERATOR LLONG %token BOOL CFALSE CTRUE WCHAR %token TIME USING NAMESPACE ULLONG %token MUSTUNDERSTAND SIZE FRIEND %token TEMPLATE EXPLICIT TYPENAME MUTABLE %token FINAL null RESTRICT OVERRIDE %token UCHAR USHORT UINT ULONG /* */ %token NONE /* identifiers (TYPE = typedef identifier) */ %token ID LAB TYPE /* constants */ %token LNG %token DBL %token CHR %token TAG STR /* types and related */ %type type %type store virtual const abstract %type fname struct class base enum enumsc mask masksc %type id sc arg name %type tag patt %type nullptr utype %type cdbl /* expressions and statements */ %type expr cexp oexp obex aexp abex rexp lexp pexp brinit init spec tspec ptrs array arrayck texpf texp qexp occurs bounds min minmax max /* terminals */ %left ',' %right '=' PA NA TA DA MA AA XA OA LA RA /* += -= *= /= %= &= ^= |= <<= >>= */ %right '?' %right ':' %left OR /* || */ %left AN /* && */ %left '|' %left '^' %left '&' %left EQ NE /* == != */ %left '<' LE '>' GE /* <= >= */ %left LS RS /* << >> */ %left '+' '-' %left '*' '/' '%' %left AR /* -> */ %token PP NN /* ++ -- */ %% /**************************************\ Program syntax \**************************************/ prog : s1 exts { if (lflag) { custom_header = 0; custom_fault = 0; } else { add_header(); add_fault(); } compile(sp->table); freetable(classtable); freetable(enumtable); freetable(typetable); freetable(booltable); freetable(templatetable); yylineno = 0; } ; s1 : /* empty */ { classtable = mktable(NULL); enumtable = mktable(NULL); typetable = mktable(NULL); booltable = mktable(NULL); templatetable = mktable(NULL); p = enter(booltable, lookup("false")); p->info.typ = mkint(); p->info.val.i = 0; p = enter(booltable, lookup("true")); p->info.typ = mkint(); p->info.val.i = 1; mkscope(mktable(mktable(NULL)), 0); } ; exts : NAMESPACE ID '{' exts1 '}' { set_namespace($2->name); } | exts1 { } ; exts1 : /* empty */ { add_soap(); add_XML(); add_qname(); } | exts1 ext { } ; ext : dclrs ';' { } | pragma { } | t1 { } | t2 { } | error ';' { synerror("input before ; skipped"); while (sp > stack) { freetable(sp->table); exitscope(); } yyerrok; } ; pragma : PRAGMA { add_pragma($1); } ; /**************************************\ Declarations \**************************************/ decls : /* empty */ { transient &= ~6; permission = 0; } | dclrs ';' decls { } | PRIVATE ':' t3 decls { } | PROTECTED ':' t4 decls { } | PUBLIC ':' t5 decls { } | t1 decls t2 decls { } | error ';' { synerror("declaration expected"); yyerrok; } ; t1 : '[' { transient |= 1; } ; t2 : ']' { transient &= ~1; } ; t3 : { permission = (int)Sprivate; } ; t4 : { permission = (int)Sprotected; } ; t5 : { permission = 0; } ; dclrs : spec { } | spec dclr { } | spec fdclr func { } | ctor func { } | dtor func { } | dclrs ',' dclr{ } | dclrs ',' fdclr func { } | error ID { sprintf(errbuf, "undefined type in declaration of '%s'", $2->name); synerror(errbuf); yyerrok; } | error ')' { synerror("function declaration?"); yyerrok; } ; dclr : ptrs ID arrayck tag bounds brinit { if (((int)$3.sto & (int)Stypedef) && sp->table->level == GLOBAL) { if (($3.typ->type != Tstruct && $3.typ->type != Tclass && $3.typ->type != Tunion && $3.typ->type != Tenum && $3.typ->type != Tenumsc) || ((is_binary($3.typ) || is_stdstr($3.typ)) && strcmp($2->name, $3.typ->id->name)) || strcmp($2->name, $3.typ->id->name)) { p = enter(typetable, $2); p->info.typ = mksymtype($3.typ, $2); if (((int)$3.sto & (int)Sextern)) { p->info.typ->transient = -1; p->info.typ->extsym = $2; } else if (is_external($3.typ)) p->info.typ->transient = -3; /* extern and volatile */ else p->info.typ->transient = $3.typ->transient; if (p->info.typ->width == 0) p->info.typ->width = 8; p->info.sto = $3.sto; p->info.typ->restriction = $3.typ->sym; p->info.typ->synonym = $3.typ->sym; if ($5.hasmin) { p->info.typ->hasmin = $5.hasmin; p->info.typ->incmin = $5.incmin; p->info.typ->min = $5.min; p->info.typ->synonym = NULL; } else { p->info.typ->hasmin = $3.typ->hasmin; p->info.typ->incmin = $3.typ->incmin; p->info.typ->min = $3.typ->min; } if ($5.hasmax) { p->info.typ->hasmax = $5.hasmax; p->info.typ->incmax = $5.incmax; p->info.typ->max = $5.max; p->info.typ->synonym = NULL; } else { p->info.typ->hasmax = $3.typ->hasmax; p->info.typ->incmax = $3.typ->incmax; p->info.typ->max = $3.typ->max; } if (p->info.typ->property == 1) p->info.typ->property = $3.typ->property; if ($5.pattern) { p->info.typ->pattern = $5.pattern; p->info.typ->synonym = NULL; } else if (!p->info.typ->pattern) { p->info.typ->pattern = $3.typ->pattern; } } $2->token = TYPE; } else { p = enter(sp->table, $2); p->tag = $4; p->info.typ = $3.typ; p->info.sto = (Storage)((int)$3.sto | permission); if ($6.hasval) { Tnode *t = $3.typ; p->info.hasval = True; p->info.ptrval = False; p->info.fixed = $6.fixed; if (is_smart(t) || (t->type == Tpointer && !is_string(t) && !is_wstring(t))) { p->info.hasval = False; p->info.ptrval = True; t = t->ref; } switch (t->type) { case Tchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tulong: case Tllong: case Tullong: case Tenum: case Tenumsc: case Ttime: if ($6.typ->type == Tint || $6.typ->type == Tchar || $6.typ->type == Tenum || $6.typ->type == Tenumsc) { sp->val = p->info.val.i = $6.val.i; if ((t->hasmin && t->min > (double)$6.val.i) || (t->hasmin && !t->incmin && t->min == (double)$6.val.i) || (t->hasmax && t->max < (double)$6.val.i) || (t->hasmax && !t->incmax && t->max == (double)$6.val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; case Tfloat: case Tdouble: case Tldouble: if ($6.typ->type == Tfloat || $6.typ->type == Tdouble || $6.typ->type == Tldouble) { p->info.val.r = $6.val.r; if ((t->hasmin && t->min > $6.val.r) || (t->hasmin && !t->incmin && t->min == $6.val.r) || (t->hasmax && t->max < $6.val.r) || (t->hasmax && !t->incmax && t->max == $6.val.r)) semerror("initialization constant outside value range"); } else if ($6.typ->type == Tint) { p->info.val.r = (double)$6.val.i; if ((t->hasmin && t->min > (double)$6.val.i) || (t->hasmin && !t->incmin && t->min == (double)$6.val.i) || (t->hasmax && t->max < (double)$6.val.i) || (t->hasmax && !t->incmax && t->max == (double)$6.val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; default: if (t->type == Tpointer && (((Tnode*)t->ref)->type == Tchar || ((Tnode*)t->ref)->type == Twchar) && $6.typ->type == Tpointer && ((Tnode*)$6.typ->ref)->type == Tchar) p->info.val.s = $6.val.s; else if (bflag && t->type == Tarray && ((Tnode*)t->ref)->type == Tchar && $6.typ->type == Tpointer && ((Tnode*)$6.typ->ref)->type == Tchar) { if (t->width / ((Tnode*)t->ref)->width - 1 < (int)strlen($6.val.s)) { semerror("char[] initialization constant too long"); p->info.val.s = ""; } else { p->info.val.s = $6.val.s; } } else if (t->id == lookup("std::string") || t->id == lookup("std::wstring")) { p->info.val.s = $6.val.s; } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; } } else { p->info.val.i = sp->val; } if ($5.minOccurs < 0) { if ($6.hasval || ((int)$3.sto & (int)Sattribute) || ((int)$3.sto & (int)Sspecial) || $3.typ->type == Tpointer || $3.typ->type == Ttemplate || is_anyAttribute($3.typ) || !strncmp($2->name, "__size", 6)) p->info.minOccurs = 0; else p->info.minOccurs = 1; } else { p->info.minOccurs = $5.minOccurs; } p->info.maxOccurs = $5.maxOccurs; p->info.nillable = $5.nillable; if (sp->mask) sp->val <<= 1; else sp->val++; p->info.offset = sp->offset; if (((int)$3.sto & (int)Sextern)) p->level = GLOBAL; else if (((int)$3.sto & (int)Stypedef)) ; else if (sp->grow) sp->offset += p->info.typ->width; else if (p->info.typ->width > sp->offset) sp->offset = p->info.typ->width; } sp->entry = p; } ; fdclr : ptrs name { if (((int)$1.sto & (int)Stypedef)) { sprintf(errbuf, "invalid typedef qualifier for '%s'", $2->name); semwarn(errbuf); } p = enter(sp->table, $2); p->info.typ = $1.typ; p->info.sto = $1.sto; p->info.hasval = False; p->info.offset = sp->offset; if (sp->grow) sp->offset += p->info.typ->width; else if (p->info.typ->width > sp->offset) sp->offset = p->info.typ->width; sp->entry = p; } ; id : ID { $$ = $1; } | TYPE { $$ = $1; } ; name : ID { $$ = $1; } | OPERATOR '!' { $$ = lookup("operator!"); } | OPERATOR '~' { $$ = lookup("operator~"); } | OPERATOR '=' { $$ = lookup("operator="); } | OPERATOR PA { $$ = lookup("operator+="); } | OPERATOR NA { $$ = lookup("operator-="); } | OPERATOR TA { $$ = lookup("operator*="); } | OPERATOR DA { $$ = lookup("operator/="); } | OPERATOR MA { $$ = lookup("operator%="); } | OPERATOR AA { $$ = lookup("operator&="); } | OPERATOR XA { $$ = lookup("operator^="); } | OPERATOR OA { $$ = lookup("operator|="); } | OPERATOR LA { $$ = lookup("operator<<="); } | OPERATOR RA { $$ = lookup("operator>>="); } | OPERATOR OR { $$ = lookup("operator||"); } | OPERATOR AN { $$ = lookup("operator&&"); } | OPERATOR '|' { $$ = lookup("operator|"); } | OPERATOR '^' { $$ = lookup("operator^"); } | OPERATOR '&' { $$ = lookup("operator&"); } | OPERATOR EQ { $$ = lookup("operator=="); } | OPERATOR NE { $$ = lookup("operator!="); } | OPERATOR '<' { $$ = lookup("operator<"); } | OPERATOR LE { $$ = lookup("operator<="); } | OPERATOR '>' { $$ = lookup("operator>"); } | OPERATOR GE { $$ = lookup("operator>="); } | OPERATOR LS { $$ = lookup("operator<<"); } | OPERATOR RS { $$ = lookup("operator>>"); } | OPERATOR '+' { $$ = lookup("operator+"); } | OPERATOR '-' { $$ = lookup("operator-"); } | OPERATOR '*' { $$ = lookup("operator*"); } | OPERATOR '/' { $$ = lookup("operator/"); } | OPERATOR '%' { $$ = lookup("operator%"); } | OPERATOR PP { $$ = lookup("operator++"); } | OPERATOR NN { $$ = lookup("operator--"); } | OPERATOR AR { $$ = lookup("operator->"); } | OPERATOR'['']'{ $$ = lookup("operator[]"); } | OPERATOR'('')'{ $$ = lookup("operator()"); } | OPERATOR texp { s1 = c_storage($2.sto); s2 = c_type($2.typ); s = (char*)emalloc(strlen(s1) + strlen(s2) + 10); strcpy(s, "operator "); strcat(s, s1); strcat(s, s2); $$ = lookup(s); if (!$$) $$ = install(s, ID); } ; ctor : TYPE { if (!(p = entry(classtable, $1))) semerror("invalid constructor"); sp->entry = enter(sp->table, $1); sp->entry->info.typ = mknone(); sp->entry->info.sto = Snone; sp->entry->info.offset = sp->offset; sp->node.typ = mkvoid(); sp->node.sto = Snone; } ; dtor : virtual '~' TYPE { if (!(p = entry(classtable, $3))) semerror("invalid destructor"); s = (char*)emalloc(strlen($3->name) + 2); s2 = strrchr($3->name, ':'); if (s2 && *(s2+1) && (s2 == $3->name || *(s2-1) != ':')) { strncpy(s, $3->name, s2 - $3->name + 1); strcat(s, "~"); strcat(s, s2 + 1); } else { strcpy(s, "~"); strcat(s, $3->name); } sym = lookup(s); if (!sym) sym = install(s, ID); sp->entry = enter(sp->table, sym); sp->entry->info.typ = mknone(); sp->entry->info.sto = $1; sp->entry->info.offset = sp->offset; sp->node.typ = mkvoid(); sp->node.sto = Snone; } ; func : fname '(' s6 fargso ')' const abstract { if ($1->level == GLOBAL) { if (!((int)$1->info.sto & (int)Sextern) && sp->entry && sp->entry->info.typ->type == Tpointer && ((Tnode*)sp->entry->info.typ->ref)->type == Tchar) { sprintf(errbuf, "last output parameter of service operation function prototype '%s' is a pointer to a char which will only return one byte: use char** instead to return a string", $1->sym->name); semwarn(errbuf); } if (((int)$1->info.sto & (int)Sextern)) { $1->info.typ = mkmethod($1->info.typ, sp->table); } else if (sp->entry && (sp->entry->info.typ->type == Tpointer || sp->entry->info.typ->type == Treference || sp->entry->info.typ->type == Tarray || is_transient(sp->entry->info.typ))) { if ($1->info.typ->type == Tint) { sp->entry->info.sto = (Storage)((int)sp->entry->info.sto | (int)Sreturn); $1->info.typ = mkfun(sp->entry); $1->info.typ->id = $1->sym; if (!is_transient(sp->entry->info.typ)) { if (!is_response(sp->entry->info.typ)) { if (!is_XML(sp->entry->info.typ) && !is_stdXML(sp->entry->info.typ)) add_response($1, sp->entry); } else { add_result(sp->entry->info.typ); } } add_request($1->sym, sp); } else { sprintf(errbuf, "return type of service operation function prototype '%s' must be integer", $1->sym->name); semerror(errbuf); } } else { sprintf(errbuf, "last output parameter of service operation function prototype '%s' is a return parameter and must be a pointer or reference, or use %s(..., void) for one-way sends", $1->sym->name, $1->sym->name); semerror(errbuf); } } else if ($1->level == INTERNAL) { $1->info.typ = mkmethod($1->info.typ, sp->table); $1->info.sto = (Storage)((int)$1->info.sto | (int)$6 | (int)$7); transient &= ~1; } exitscope(); } ; fname : { $$ = sp->entry; } ; fargso : /* empty */ { } | fargs { } ; fargs : farg { } | farg ',' fargs{ } | error ID { sprintf(errbuf, "undefined '%s'", $2->name); synerror(errbuf); } | error ',' { synerror("formal argument expected"); yyerrok; } ; farg : tspec ptrs arg arrayck tag occurs init { if (((int)$4.sto & (int)Stypedef)) semwarn("typedef in function argument"); p = enter(sp->table, $3); p->info.typ = $4.typ; p->info.sto = $4.sto; p->tag = $5; if ($6.minOccurs < 0) { if ($6.hasval || ((int)$4.sto & (int)Sattribute) || ((int)$4.sto & (int)Sspecial) || $4.typ->type == Tpointer || $4.typ->type == Ttemplate || is_anyAttribute($4.typ) || !strncmp($3->name, "__size", 6)) p->info.minOccurs = 0; else p->info.minOccurs = 1; } else { p->info.minOccurs = $6.minOccurs; } p->info.maxOccurs = $6.maxOccurs; if ($7.hasval) { Tnode *t = $4.typ; p->info.hasval = True; p->info.ptrval = False; p->info.fixed = $7.fixed; if (is_smart(t) || (t->type == Tpointer && !is_string(t) && !is_wstring(t))) { p->info.hasval = False; p->info.ptrval = True; t = t->ref; } switch (t->type) { case Tchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tulong: case Tenum: case Tenumsc: case Ttime: if ($7.typ->type == Tint || $7.typ->type == Tchar || $7.typ->type == Tenum || $7.typ->type == Tenumsc) { sp->val = p->info.val.i = $7.val.i; if ((t->hasmin && t->min > (double)$7.val.i) || (t->hasmin && !t->incmin && t->min == (double)$7.val.i) || (t->hasmax && t->max < (double)$7.val.i) || (t->hasmax && !t->incmax && t->max == (double)$7.val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; case Tfloat: case Tdouble: case Tldouble: if ($7.typ->type == Tfloat || $7.typ->type == Tdouble || $7.typ->type == Tldouble) { p->info.val.r = $7.val.r; if ((t->hasmin && t->min > $7.val.r) || (t->hasmin && !t->incmin && t->min == $7.val.r) || (t->hasmax && t->max < $7.val.r) || (t->hasmax && !t->incmax && t->max == $7.val.r)) semerror("initialization constant outside value range"); } else if ($7.typ->type == Tint) { p->info.val.r = (double)$7.val.i; if ((t->hasmin && t->min > (double)$7.val.i) || (t->hasmin && !t->incmin && t->min == (double)$7.val.i) || (t->hasmax && t->max < (double)$7.val.i) || (t->hasmax && !t->incmax && t->max == (double)$7.val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; default: if (t->type == Tpointer && (((Tnode*)t->ref)->type == Tchar || ((Tnode*)t->ref)->type == Twchar) && $7.typ->type == Tpointer && ((Tnode*)$7.typ->ref)->type == Tchar) { p->info.val.s = $7.val.s; } else if (t->id == lookup("std::string") || t->id == lookup("std::wstring")) { p->info.val.s = $7.val.s; } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; } } p->info.offset = sp->offset; if (((int)$4.sto & (int)Sextern)) p->level = GLOBAL; else if (sp->grow) sp->offset += p->info.typ->width; else if (p->info.typ->width > sp->offset) sp->offset = p->info.typ->width; sp->entry = p; } ; arg : /* empty */ { if (sp->table->level != PARAM) $$ = gensymidx("param", (int)++sp->val); else if (eflag || zflag == 0 || zflag > 3) $$ = gensymidx("_param", (int)++sp->val); else $$ = gensym("_param"); } | ID { if (soap_version == 2 && *$1->name == '_' && sp->table->level == GLOBAL) { sprintf(errbuf, "SOAP 1.2 does not support anonymous parameters '%s'", $1->name); semwarn(errbuf); } $$ = $1; } ; /**************************************\ Type specification \**************************************/ /* texpf : type expression (subset of C/C++) */ texpf : texp { $$ = $1; } | tspec ptrs '(' s6 fargso ')' { $$.typ = mkmethod(tmp.typ, sp->table); transient &= ~1; exitscope(); } ; texp : tspec ptrs array { $$ = $3; } | tspec ptrs ID array { $$ = $4; } ; spec : /*empty */ { $$.typ = mkint(); $$.sto = Snone; sp->node = $$; } | store spec { $$.typ = $2.typ; $$.sto = (Storage)((int)$1 | (int)$2.sto); if (((int)$$.sto & (int)Sattribute)) { if (is_smart($2.typ)) { if (!is_primitive_or_string($2.typ->ref) && !is_stdstr((Tnode*)$2.typ->ref) && !is_binary((Tnode*)$2.typ->ref) && !is_external((Tnode*)$2.typ->ref)) { semwarn("invalid attribute smart pointer @type"); $$.sto = (Storage)((int)$$.sto & ~(int)Sattribute); } } else if ($2.typ->type == Tpointer) { if (!is_primitive_or_string($2.typ->ref) && !is_stdstr((Tnode*)$2.typ->ref) && !is_binary((Tnode*)$2.typ->ref) && !is_external((Tnode*)$2.typ->ref)) { semwarn("invalid attribute pointer @type"); $$.sto = (Storage)((int)$$.sto & ~(int)Sattribute); } } else if ( !is_primitive_or_string($2.typ) && !is_stdstr($2.typ) && !is_binary($2.typ) && !is_external($2.typ)) { semwarn("invalid attribute @type"); $$.sto = (Storage)((int)$$.sto & ~(int)Sattribute); } } sp->node = $$; if (((int)$1 & (int)Sextern)) transient = 0; } | type spec { if ($1->type == Tint) switch ($2.typ->type) { case Tchar: $$.typ = $2.typ; break; case Tshort: $$.typ = $2.typ; break; case Tint: $$.typ = $1; break; case Tlong: $$.typ = $2.typ; break; case Tllong: $$.typ = $2.typ; break; default: semwarn("invalid int type specified"); $$.typ = $2.typ; } else if ($1->type == Tuint) switch ($2.typ->type) { case Tchar: $$.typ = mkuchar(); break; case Tshort: $$.typ = mkushort(); break; case Tint: $$.typ = $1; break; case Tlong: $$.typ = mkulong(); break; case Tllong: $$.typ = mkullong(); break; default: semwarn("invalid unsigned type specified"); $$.typ = $2.typ; } else if ($1->type == Tlong) switch ($2.typ->type) { case Tint: $$.typ = $1; break; case Tlong: $$.typ = mkllong(); break; case Tuint: $$.typ = mkulong(); break; case Tulong: $$.typ = mkullong(); break; case Tdouble: $$.typ = mkldouble(); break; default: semwarn("invalid use of 'long'"); $$.typ = $2.typ; } else if ($1->type == Tulong) switch ($2.typ->type) { case Tint: $$.typ = $1; break; case Tlong: $$.typ = mkullong(); break; case Tuint: $$.typ = $1; break; case Tulong: $$.typ = mkullong(); break; default: semwarn("invalid use of 'long'"); $$.typ = $2.typ; } else if ($2.typ->type == Tint) $$.typ = $1; else semwarn("invalid type specified (missing ';' or type name used as non-type identifier?)"); $$.sto = $2.sto; sp->node = $$; } ; tspec : store { $$.typ = mkint(); $$.sto = $1; sp->node = $$; if (((int)$1 & (int)Sextern)) transient = 0; } | type { $$.typ = $1; $$.sto = Snone; sp->node = $$; } | store tspec { $$.typ = $2.typ; $$.sto = (Storage)((int)$1 | (int)$2.sto); if (((int)$$.sto & (int)Sattribute)) { if (is_smart($2.typ)) { if (!is_primitive_or_string((Tnode*)$2.typ->ref) && !is_stdstr((Tnode*)$2.typ->ref) && !is_binary((Tnode*)$2.typ->ref) && !is_external((Tnode*)$2.typ->ref)) { semwarn("invalid attribute smart pointer @type"); $$.sto = (Storage)((int)$$.sto & ~(int)Sattribute); } } else if ($2.typ->type == Tpointer) { if (!is_primitive_or_string((Tnode*)$2.typ->ref) && !is_stdstr((Tnode*)$2.typ->ref) && !is_binary((Tnode*)$2.typ->ref) && !is_external((Tnode*)$2.typ->ref)) { semwarn("invalid attribute pointer @type"); $$.sto = (Storage)((int)$$.sto & ~(int)Sattribute); } } else if ( !is_primitive_or_string($2.typ) && !is_stdstr($2.typ) && !is_binary($2.typ) && !is_external($2.typ)) { semwarn("invalid attribute @type"); $$.sto = (Storage)((int)$$.sto & ~(int)Sattribute); } } sp->node = $$; if (((int)$1 & (int)Sextern)) transient = 0; } | type tspec { if ($1->type == Tint) switch ($2.typ->type) { case Tchar: $$.typ = $2.typ; break; case Tshort: $$.typ = $2.typ; break; case Tint: $$.typ = $1; break; case Tlong: $$.typ = $2.typ; break; case Tllong: $$.typ = $2.typ; break; default: semwarn("invalid int type specified"); $$.typ = $2.typ; } else if ($1->type == Tuint) switch ($2.typ->type) { case Tchar: $$.typ = mkuchar(); break; case Tshort: $$.typ = mkushort(); break; case Tint: $$.typ = $1; break; case Tlong: $$.typ = mkulong(); break; case Tllong: $$.typ = mkullong(); break; default: semwarn("invalid unsigned type specified"); $$.typ = $2.typ; } else if ($1->type == Tlong) switch ($2.typ->type) { case Tint: $$.typ = $1; break; case Tlong: $$.typ = mkllong(); break; case Tuint: $$.typ = mkulong(); break; case Tulong: $$.typ = mkullong(); break; case Tdouble: $$.typ = mkldouble(); break; default: semwarn("invalid use of 'long'"); $$.typ = $2.typ; } else if ($1->type == Tulong) switch ($2.typ->type) { case Tint: $$.typ = $1; break; case Tlong: $$.typ = mkullong(); break; case Tuint: $$.typ = $1; break; case Tulong: $$.typ = mkullong(); break; default: semwarn("invalid use of 'long'"); $$.typ = $2.typ; } else if ($2.typ->type == Tint) $$.typ = $1; else semwarn("invalid type specified (missing ';' or type name used as non-type identifier?)"); $$.sto = $2.sto; sp->node = $$; } ; type : VOID { $$ = mkvoid(); } | BOOL { $$ = mkbool(); } | CHAR { $$ = mkchar(); } | WCHAR { $$ = mkwchart(); } | SHORT { $$ = mkshort(); } | INT { $$ = mkint(); } | LONG { $$ = mklong(); } | LLONG { $$ = mkllong(); } | ULLONG { $$ = mkullong(); } | SIZE { $$ = mksize(); } | FLOAT { $$ = mkfloat(); } | DOUBLE { $$ = mkdouble(); } | SIGNED { $$ = mkint(); } | UNSIGNED { $$ = mkuint(); } | UCHAR { $$ = mkuchar(); } | USHORT { $$ = mkushort(); } | UINT { $$ = mkuint(); } | ULONG { $$ = mkulong(); } | TIME { $$ = mktimet(); } | TEMPLATE '<' tname id '>' CLASS id { if (!(p = entry(templatetable, $7))) { p = enter(templatetable, $7); p->info.typ = mktemplate(NULL, $7); $7->token = TYPE; } $$ = p->info.typ; } | CLASS '{' s2 decls '}' { sym = gensym("_Struct"); sprintf(errbuf, "anonymous class will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(classtable, sym))) { if (p->info.typ->ref || p->info.typ->type != Tclass) { sprintf(errbuf, "class '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } } else { p = enter(classtable, sym); p->info.typ = mkclass(NULL, 0); } sym->token = TYPE; sp->table->sym = sym; p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = sym; $$ = p->info.typ; exitscope(); } | class '{' s2 decls '}' { if ((p = entry(classtable, $1->sym)) && p->info.typ->ref) { if (is_mutable(p)) { if (merge((Table*)p->info.typ->ref, sp->table)) { sprintf(errbuf, "member name clash in class '%s' declared at line %d", $1->sym->name, p->lineno); semerror(errbuf); } p->info.typ->width += sp->offset; } } else { p = reenter(classtable, $1->sym); sp->table->sym = p->sym; p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = p->sym; if (p->info.typ->base) sp->table->prev = (Table*)entry(classtable, p->info.typ->base)->info.typ->ref; } $$ = p->info.typ; exitscope(); } | class ':' base '{' s2 decls '}' { p = reenter(classtable, $1->sym); sp->table->sym = p->sym; if (!$3) { semerror("invalid base class"); } else { sp->table->prev = (Table*)$3->info.typ->ref; if (!sp->table->prev && !$3->info.typ->transient) { sprintf(errbuf, "class '%s' has incomplete type (if this class is not serializable then declare 'extern class %s')'", $3->sym->name, $3->sym->name); semerror(errbuf); } p->info.typ->base = $3->info.typ->id; } p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = p->sym; $$ = p->info.typ; exitscope(); } | class { $1->info.typ->id = $1->sym; $$ = $1->info.typ; } | class ':' base { if (!$3) { semerror("invalid base class"); } else { if (!$3->info.typ->ref && !$3->info.typ->transient) { sprintf(errbuf, "class '%s' has incomplete type (if this class is not serializable then declare 'extern class %s')'", $3->sym->name, $3->sym->name); semerror(errbuf); } $1->info.typ->base = $3->info.typ->id; } $1->info.typ->id = $1->sym; $$ = $1->info.typ; } | STRUCT '{' s2 decls '}' { sym = gensym("_Struct"); sprintf(errbuf, "anonymous struct will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(classtable, sym))) { if (p->info.typ->ref || p->info.typ->type != Tstruct) { sprintf(errbuf, "struct '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, sym); p->info.typ = mkstruct(sp->table, sp->offset); } p->info.typ->id = sym; $$ = p->info.typ; exitscope(); } | struct '{' s2 decls '}' { if ((p = entry(classtable, $1->sym)) && p->info.typ->ref) { if (is_mutable(p)) { if (merge((Table*)p->info.typ->ref, sp->table)) { sprintf(errbuf, "member name clash in struct '%s' declared at line %d", $1->sym->name, p->lineno); semerror(errbuf); } p->info.typ->width += sp->offset; } } else { p = reenter(classtable, $1->sym); p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = p->sym; } $$ = p->info.typ; exitscope(); } | STRUCT id { if ((p = entry(classtable, $2))) { if (p->info.typ->type == Tstruct) { $$ = p->info.typ; } else { sprintf(errbuf, "'struct %s' redeclaration (line %d)", $2->name, p->lineno); semerror(errbuf); $$ = mkint(); } } else { p = enter(classtable, $2); $$ = p->info.typ = mkstruct(NULL, 0); p->info.typ->id = $2; } } | UNION '{' s3 decls '}' { sym = gensym("_Union"); sprintf(errbuf, "anonymous union will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(classtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "union or struct '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, sym); p->info.typ = mkunion(sp->table, sp->offset); } p->info.typ->id = sym; $$ = p->info.typ; exitscope(); } | UNION id '{' s3 decls '}' { if ((p = entry(classtable, $2))) { if (p->info.typ->ref || p->info.typ->type != Tunion) { sprintf(errbuf, "union '%s' already declared at %s:%d", $2->name, p->filename, p->lineno); semerror(errbuf); } else { p = reenter(classtable, $2); p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, $2); p->info.typ = mkunion(sp->table, sp->offset); } p->info.typ->id = $2; $$ = p->info.typ; exitscope(); } | UNION id { if ((p = entry(classtable, $2))) { if (p->info.typ->type == Tunion) { $$ = p->info.typ; } else { sprintf(errbuf, "'union %s' redeclaration (line %d)", $2->name, p->lineno); semerror(errbuf); $$ = mkint(); } } else { p = enter(classtable, $2); $$ = p->info.typ = mkunion(NULL, 0); p->info.typ->id = $2; } } | ENUM '{' s2 dclrs s5 '}' { sym = gensym("_Enum"); sprintf(errbuf, "anonymous enum will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(enumtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = 4; /* 4 = enum */ } } else { p = enter(enumtable, sym); p->info.typ = mkenum(sp->table); } p->info.typ->id = sym; $$ = p->info.typ; exitscope(); } | ENUM '*' '{' s2 dclrs s5 '}' { sym = gensym("_Enum"); sprintf(errbuf, "anonymous enum will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(enumtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = 9; /* 9 = mask */ } } else { p = enter(enumtable, sym); p->info.typ = mkmask(sp->table); } p->info.typ->id = sym; $$ = p->info.typ; exitscope(); } | enum '{' s2 dclrs s5 '}' { if ((p = entry(enumtable, $1->sym))) if (!p->info.typ->ref) p->info.typ->ref = sp->table; p->info.typ->id = $1->sym; $$ = p->info.typ; exitscope(); } | enumsc '{' s2 dclrs s5 '}' { if ((p = entry(enumtable, $1->sym))) if (!p->info.typ->ref) p->info.typ->ref = sp->table; p->info.typ->id = $1->sym; $$ = p->info.typ; exitscope(); } | mask '{' s4 dclrs s5 '}' { if ((p = entry(enumtable, $1->sym))) { if (!p->info.typ->ref) { p->info.typ->ref = sp->table; p->info.typ->width = 9; /* 9 = mask */ } } p->info.typ->id = $1->sym; $$ = p->info.typ; exitscope(); } | masksc '{' s4 dclrs s5 '}' { if ((p = entry(enumtable, $1->sym))) { if (!p->info.typ->ref) { p->info.typ->ref = sp->table; p->info.typ->width = 9; /* 9 = mask */ } } p->info.typ->id = $1->sym; $$ = p->info.typ; exitscope(); } | ENUM id { if ((p = entry(enumtable, $2))) { if (p->info.typ->type != Tenum) { sprintf(errbuf, "'enum %s' used where enum class is expected", $2->name); semwarn(errbuf); } $$ = p->info.typ; } else { p = enter(enumtable, $2); $$ = p->info.typ = mkenum(NULL); p->info.typ->id = $2; } } | ENUM sc { if ((p = entry(enumtable, $2))) { if (p->info.typ->type != Tenumsc) { sprintf(errbuf, "'enum class %s' used where enum is expected", $2->name); semwarn(errbuf); } $$ = p->info.typ; } else { p = enter(enumtable, $2); $$ = p->info.typ = mkenumsc(NULL); p->info.typ->id = $2; $2->token = TYPE; } } | TYPE { if ((p = entry(typetable, $1))) { $$ = p->info.typ; } else if ((p = entry(classtable, $1))) { $$ = p->info.typ; } else if ((p = entry(enumtable, $1))) { $$ = p->info.typ; } else if ($1 == lookup("std::string") || $1 == lookup("std::wstring")) { p = enter(classtable, $1); $$ = p->info.typ = mkclass(NULL, 8); p->info.typ->id = $1; if (cflag) p->info.typ->transient = 1; /* make std::string transient in C */ else p->info.typ->transient = -2; /* otherwise volatile in C++ */ } else { sprintf(errbuf, "unknown type '%s'", $1->name); semerror(errbuf); $$ = mkint(); } } | TYPE '<' texpf '>' { if ((p = entry(templatetable, $1))) { $$ = mktemplate($3.typ, $1); if (p->info.typ->transient) $$->transient = p->info.typ->transient; } else if ($1 == lookup("std::deque")) { add_pragma("#include "); p = enter(templatetable, $1); $$ = p->info.typ = mktemplate($3.typ, $1); } else if ($1 == lookup("std::list")) { add_pragma("#include "); p = enter(templatetable, $1); $$ = p->info.typ = mktemplate($3.typ, $1); } else if ($1 == lookup("std::vector")) { add_pragma("#include "); p = enter(templatetable, $1); $$ = p->info.typ = mktemplate($3.typ, $1); } else if ($1 == lookup("std::set")) { add_pragma("#include "); p = enter(templatetable, $1); $$ = p->info.typ = mktemplate($3.typ, $1); } else if ($1 == lookup("std::queue")) { add_pragma("#include "); p = enter(templatetable, $1); $$ = p->info.typ = mktemplate($3.typ, $1); $$->transient = 1; /* not serializable */ } else if ($1 == lookup("std::stack")) { add_pragma("#include "); p = enter(templatetable, $1); $$ = p->info.typ = mktemplate($3.typ, $1); $$->transient = 1; /* not serializable */ } else if ($1 == lookup("std::shared_ptr") || $1 == lookup("std::unique_ptr") || $1 == lookup("std::auto_ptr")) { $$ = mktemplate($3.typ, $1); $$->transient = -2; /* volatile indicates smart pointer template */ if (!c11flag) semwarn("To use smart pointers you should also use wsdl2h and soapcpp2 with option -c++11 or -c++14"); } else if ($1 == lookup("std::weak_ptr") || $1 == lookup("std::function")) { $$ = mktemplate($3.typ, $1); $$->transient = 1; /* not serializable */ } else { semerror("undefined template"); $$ = mkint(); } } | error ID error { sprintf(errbuf, "undeclared '%s'", $2->name); synerror(errbuf); $$ = mkint(); } | error ID '>' { sprintf(errbuf, "perhaps trying to use a template with an undefined type parameter '%s'?", $2->name); synerror(errbuf); $$ = mkint(); } | error '>' { synerror("perhaps trying to use an undefined template or template with a non-type template parameter? Declare 'template class name'"); $$ = mkint(); } | CLASS error '}' { synerror("malformed class definition (use spacing around ':' to separate derived : base)"); yyerrok; $$ = mkint(); } | STRUCT error '}' { synerror("malformed struct definition"); yyerrok; $$ = mkint(); } | UNION error '}' { synerror("malformed union definition"); yyerrok; $$ = mkint(); } | ENUM error '}' { synerror("malformed enum definition"); yyerrok; $$ = mkint(); } ; struct : STRUCT id { if ((p = entry(classtable, $2))) { if (p->info.typ->ref) { if (!is_mutable(p)) { sprintf(errbuf, "struct '%s' already declared at %s:%d", $2->name, p->filename, p->lineno); semerror(errbuf); } } else { p = reenter(classtable, $2); } p->info.typ->transient = transient; } else { p = enter(classtable, $2); p->info.typ = mkstruct(NULL, 0); } $$ = p; } ; class : CLASS id { if ((p = entry(classtable, $2))) { if (p->info.typ->ref) { if (!is_mutable(p)) { sprintf(errbuf, "class '%s' already declared at %s:%d (redundant 'class' specifier here?)", $2->name, p->filename, p->lineno); semerror(errbuf); } } else { p = reenter(classtable, $2); } p->info.typ->transient = transient; } else { p = enter(classtable, $2); p->info.typ = mkclass(NULL, 0); p->info.typ->id = p->sym; } $2->token = TYPE; $$ = p; } ; enum : ENUM id utype { if ((p = entry(enumtable, $2))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", $2->name, p->filename, p->lineno); semerror(errbuf); } } else { p = enter(enumtable, $2); p->info.typ = mkenum(0); } p->info.typ->width = (int)$3; $$ = p; } ; enumsc : ENUM sc utype { if ((p = entry(enumtable, $2))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", $2->name, p->filename, p->lineno); semerror(errbuf); } } else { p = enter(enumtable, $2); p->info.typ = mkenumsc(0); } p->info.typ->width = (int)$3; $2->token = TYPE; $$ = p; } ; mask : ENUM '*' id utype { if ((p = entry(enumtable, $3))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", $3->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ = mkmask(0); } } else { p = enter(enumtable, $3); p->info.typ = mkmask(0); } $$ = p; } ; masksc : ENUM '*' sc utype { if ((p = entry(enumtable, $3))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", $3->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ = mkmasksc(0); } } else { p = enter(enumtable, $3); p->info.typ = mkmasksc(0); } $3->token = TYPE; $$ = p; } ; sc : STRUCT id { $$ = $2; if (!c11flag) semwarn("To use scoped enumerations (enum class) you should also use wsdl2h and soapcpp2 with option -c++11 or -c++14"); } | CLASS id { $$ = $2; if (!c11flag) semwarn("To use scoped enumerations (enum class) you must also use wsdl2h and soapcpp2 with option -c++11 or -c++14"); } ; utype : ':' CHAR { $$ = 1; } | ':' WCHAR { $$ = 4; } | ':' SHORT { $$ = 2; } | ':' INT { $$ = 4; } | ':' LONG { $$ = 4; } | ':' LLONG { $$ = 8; } | ':' TYPE { $$ = 4; p = entry(typetable, $2); if (!p) p = entry(enumtable, $2); if (!p) semerror("enum underlying type must be one of int8_t, int16_t, int32_t, int64_t"); else $$ = p->info.typ->width; } | ':' { semerror("enum underlying type must be one of int8_t, int16_t, int32_t, int64_t"); $$ = 4; } | /* empty */ { $$ = 4; /* 4 = enum */ } ; tname : CLASS { } | TYPENAME { } ; base : PROTECTED base{ $$ = $2; } | PRIVATE base { $$ = $2; } | PUBLIC base { $$ = $2; } | TYPE { $$ = entry(classtable, $1); if (!$$) { p = entry(typetable, $1); if (p && (p->info.typ->type == Tclass || p->info.typ->type == Tstruct)) $$ = p; } } | STRUCT ID { $$ = entry(classtable, $2); } ; s2 : /* empty */ { if (transient <= -2) transient = 0; permission = 0; enterscope(mktable(NULL), 0); sp->entry = NULL; } ; s3 : /* empty */ { if (transient <= -2) transient = 0; permission = 0; enterscope(mktable(NULL), 0); sp->entry = NULL; sp->grow = False; } ; s4 : /* empty */ { enterscope(mktable(NULL), 0); sp->entry = NULL; sp->mask = True; sp->val = 1; } ; s5 : /* empty */ { } | ',' { } ; s6 : /* empty */ { if (sp->table->level == INTERNAL) transient |= 1; permission = 0; enterscope(mktable(NULL), 0); sp->entry = NULL; sp->table->level = PARAM; } ; store : AUTO { $$ = Sauto; } | REGISTER { $$ = Sregister; } | STATIC { $$ = Sstatic; } | EXPLICIT { $$ = Sexplicit; } | EXTERN { $$ = Sextern; transient = 1; } | TYPEDEF { $$ = Stypedef; } | VIRTUAL { $$ = Svirtual; } | CONST { $$ = Sconst; } | FINAL { $$ = Sfinal; } | OVERRIDE { $$ = Soverride; } | FRIEND { $$ = Sfriend; } | INLINE { $$ = Sinline; } | MUSTUNDERSTAND{ $$ = SmustUnderstand; } | RETURN { $$ = Sreturn; } | '@' { $$ = Sattribute; if (eflag) semwarn("SOAP RPC encoding does not support XML attributes"); } | '$' { $$ = Sspecial; } | VOLATILE { $$ = Sextern; transient = -2; } | MUTABLE { $$ = Smutable; transient = -4; } ; const : /* empty */ { $$ = Snone; } | const CONST { $$ = (Storage)((int)$1 | (int)Sconstobj); } | const FINAL { $$ = (Storage)((int)$1 | (int)Sfinal); } | const OVERRIDE{ $$ = (Storage)((int)$1 | (int)Soverride); } ; abstract: /* empty */ { $$ = Snone; } | '=' LNG { $$ = Sabstract; } ; virtual : /* empty */ { $$ = Snone; } | VIRTUAL { $$ = Svirtual; } ; ptrs : /* empty */ { $$ = tmp = sp->node; } | ptrs '*' { /* handle const pointers, such as const char* */ if (((int)tmp.sto & (int)Sconst)) tmp.sto = (Storage)(((int)tmp.sto & ~(int)Sconst) | (int)Sconstptr); tmp.typ = mkpointer(tmp.typ); tmp.typ->transient = transient; $$ = tmp; } | ptrs '&' { tmp.typ = mkreference(tmp.typ); tmp.typ->transient = transient; $$ = tmp; } | ptrs AN { tmp.typ = mkrvalueref(tmp.typ); tmp.typ->transient = transient; $$ = tmp; } ; array : /* empty */ { $$ = tmp; } /* tmp is inherited */ | '[' cexp ']' array { if (!bflag && $4.typ->type == Tchar) { sprintf(errbuf, "char[" SOAP_LONG_FORMAT "] will be serialized as an array of " SOAP_LONG_FORMAT " bytes: use soapcpp2 option -b to enable char[] string serialization or use char* for strings", $2.val.i, $2.val.i); semwarn(errbuf); } if ($2.hasval && $2.typ->type == Tint && $2.val.i > 0 && $4.typ->width > 0) { $$.typ = mkarray($4.typ, (int) $2.val.i * $4.typ->width); } else { $$.typ = mkarray($4.typ, 0); semerror("undetermined array size"); } $$.sto = $4.sto; } | '[' ']' array { $$.typ = mkpointer($3.typ); /* zero size array = pointer */ $$.sto = $3.sto; } ; arrayck : array { if ($1.typ->type == Tstruct || $1.typ->type == Tclass) { if (!$1.typ->ref && !$1.typ->transient && !((int)$1.sto & (int)Stypedef)) { if ($1.typ->type == Tstruct) sprintf(errbuf, "struct '%s' has incomplete type (if this struct is not serializable then declare 'extern struct %s')", $1.typ->id->name, $1.typ->id->name); else sprintf(errbuf, "class '%s' has incomplete type (if this class is not serializable then declare 'extern class %s')", $1.typ->id->name, $1.typ->id->name); semerror(errbuf); } } $$ = $1; } ; brinit : init { $$ = $1; } | '{' cexp '}' { if ($2.hasval) { $$.typ = $2.typ; $$.hasval = True; $$.fixed = False; $$.val = $2.val; } else { $$.hasval = False; semerror("initialization expression not constant"); } } ; init : /* empty */ { $$.hasval = False; $$.fixed = False; } | '=' cexp { if ($2.hasval) { $$.typ = $2.typ; $$.hasval = True; $$.fixed = False; $$.val = $2.val; } else { $$.hasval = False; semerror("initialization expression not constant"); } } | EQ cexp { if ($2.hasval) { $$.typ = $2.typ; $$.hasval = True; $$.fixed = True; $$.val = $2.val; } else { $$.hasval = False; semerror("initialization expression not constant"); } } ; tag : /* empty */ { $$ = NULL; } | TAG { $$ = $1; } ; occurs : /* empty */ { $$.minOccurs = -1; $$.maxOccurs = 1; $$.hasmin = False; $$.hasmax = False; $$.min = 0.0; $$.max = 0.0; $$.incmin = True; $$.incmax = True; $$.pattern = NULL; } | LNG { $$.minOccurs = $1; $$.maxOccurs = 1; if ($$.minOccurs < 0) $$.minOccurs = -1; $$.hasmin = False; $$.hasmax = False; $$.min = 0.0; $$.max = 0.0; $$.incmin = True; $$.incmax = True; $$.pattern = NULL; } | LNG ':' { $$.minOccurs = $1; $$.maxOccurs = 1; if ($$.minOccurs < 0) $$.minOccurs = -1; $$.hasmin = False; $$.hasmax = False; $$.min = 0.0; $$.max = 0.0; $$.incmin = True; $$.incmax = True; $$.pattern = NULL; } | LNG ':' LNG { $$.minOccurs = $1; $$.maxOccurs = $3; if ($$.minOccurs < 0 || $$.maxOccurs < 0) { $$.minOccurs = -1; $$.maxOccurs = 1; } else if ($$.minOccurs > $$.maxOccurs) { $$.minOccurs = -1; $$.maxOccurs = 1; } $$.hasmin = False; $$.hasmax = False; $$.min = 0.0; $$.max = 0.0; $$.incmin = True; $$.incmax = True; $$.pattern = NULL; } | ':' LNG { $$.minOccurs = -1; $$.maxOccurs = $2; if ($$.maxOccurs < 0) { $$.minOccurs = -1; $$.maxOccurs = 1; } $$.hasmin = False; $$.hasmax = False; $$.min = 0.0; $$.max = 0.0; $$.incmin = True; $$.incmax = True; $$.pattern = NULL; } ; bounds : nullptr patt { $$.hasmin = False; $$.hasmax = False; $$.minOccurs = -1; $$.maxOccurs = 1; $$.min = 0.0; $$.max = 0.0; $$.incmin = True; $$.incmax = True; $$.nillable = $1; $$.pattern = $2; } | nullptr patt cdbl min { $$.hasmin = True; $$.hasmax = False; $$.incmin = $4.incmin; $$.incmax = $4.incmax; $$.minOccurs = (LONG64)$3; $$.maxOccurs = 1; if ($$.minOccurs < 0) $$.minOccurs = -1; $$.min = $3; $$.max = 0.0; $$.nillable = $1; $$.pattern = $2; } | nullptr patt cdbl minmax cdbl { $$.hasmin = True; $$.hasmax = True; $$.incmin = $4.incmin; $$.incmax = $4.incmax; $$.minOccurs = (LONG64)$3; $$.maxOccurs = (LONG64)$5; if ($$.minOccurs < 0 || $$.maxOccurs < 0) { $$.minOccurs = -1; $$.maxOccurs = 1; } else if ($$.minOccurs > $$.maxOccurs) { $$.minOccurs = -1; $$.maxOccurs = 1; } $$.min = $3; $$.max = $5; $$.nillable = $1; $$.pattern = $2; } | nullptr patt max cdbl { $$.hasmin = False; $$.hasmax = True; $$.incmin = $3.incmin; $$.incmax = $3.incmax; $$.minOccurs = -1; $$.maxOccurs = (LONG64)$4; if ($$.maxOccurs < 0) { $$.minOccurs = -1; $$.maxOccurs = 1; } $$.min = 0.0; $$.max = $4; $$.nillable = $1; $$.pattern = $2; } ; nullptr : /* empty */ { $$ = zflag >= 1 && zflag <= 3; /* False, unless version 2.8.30 or earlier */ } | null { $$ = True; } ; patt : /* empty */ { $$ = NULL; } | STR { $$ = $1; } ; cdbl : DBL { $$ = $1; } | LNG { $$ = (double)$1; } | CHR { $$ = (double)$1; } | '+' cdbl { $$ = +$2; } | '-' cdbl { $$ = -$2; } ; min : /* empty */ { $$.incmin = $$.incmax = True; } | ':' { $$.incmin = $$.incmax = True; } | '<' ':' { $$.incmin = False; $$.incmax = True; } | '<' { $$.incmin = False; $$.incmax = True; } ; minmax : ':' { $$.incmin = $$.incmax = True; } | '<' ':' { $$.incmin = False; $$.incmax = True; } | ':' '<' { $$.incmin = True; $$.incmax = False; } | '<' ':' '<' { $$.incmin = False; $$.incmax = False; } | '<' { $$.incmin = False; $$.incmax = False; } ; max : ':' { $$.incmin = $$.incmax = True; } | ':' '<' { $$.incmin = True; $$.incmax = False; } | '<' { $$.incmin = True; $$.incmax = False; } ; /**************************************\ Expressions \**************************************/ expr : expr ',' expr { $$ = $3; } | cexp { $$ = $1; } ; /* cexp : conditional expression */ cexp : obex '?' qexp ':' cexp { $$.typ = $3.typ; $$.sto = Snone; $$.hasval = False; } | oexp ; /* qexp : true-branch of ? : conditional expression */ qexp : expr { $$ = $1; } ; /* oexp : or-expression */ oexp : obex OR aexp { $$.hasval = False; $$.typ = mkint(); } | aexp { $$ = $1; } ; obex : oexp { $$ = $1; } ; /* aexp : and-expression */ aexp : abex AN rexp { $$.hasval = False; $$.typ = mkint(); } | rexp { $$ = $1; } ; abex : aexp { $$ = $1; } ; /* rexp : relational expression */ rexp : rexp '|' rexp { $$ = iop("|", $1, $3); } | rexp '^' rexp { $$ = iop("^", $1, $3); } | rexp '&' rexp { $$ = iop("&", $1, $3); } | rexp EQ rexp { $$ = relop("==", $1, $3); } | rexp NE rexp { $$ = relop("!=", $1, $3); } | rexp '<' rexp { $$ = relop("<", $1, $3); } | rexp LE rexp { $$ = relop("<=", $1, $3); } | rexp '>' rexp { $$ = relop(">", $1, $3); } | rexp GE rexp { $$ = relop(">=", $1, $3); } | rexp LS rexp { $$ = iop("<<", $1, $3); } | rexp RS rexp { $$ = iop(">>", $1, $3); } | rexp '+' rexp { $$ = op("+", $1, $3); } | rexp '-' rexp { $$ = op("-", $1, $3); } | rexp '*' rexp { $$ = op("*", $1, $3); } | rexp '/' rexp { $$ = op("/", $1, $3); } | rexp '%' rexp { $$ = iop("%", $1, $3); } | lexp { $$ = $1; } ; /* lexp : lvalue kind of expression with optional prefix contructs */ lexp : '!' lexp { if ($2.hasval) $$.val.i = !$2.val.i; $$.typ = $2.typ; $$.hasval = $2.hasval; } | '~' lexp { if ($2.hasval) $$.val.i = ~$2.val.i; $$.typ = $2.typ; $$.hasval = $2.hasval; } | '-' lexp { if ($2.hasval) { if (integer($2.typ)) $$.val.i = -$2.val.i; else if (real($2.typ)) $$.val.r = -$2.val.r; else typerror("string?"); } $$.typ = $2.typ; $$.hasval = $2.hasval; } | '+' lexp { $$ = $2; } | '*' lexp { if ($2.typ->type == Tpointer) $$.typ = (Tnode*)$2.typ->ref; else { typerror("dereference of non-pointer type"); $$.typ = $2.typ; } $$.sto = Snone; $$.hasval = False; } | '&' lexp { $$.typ = mkpointer($2.typ); $$.sto = Snone; $$.hasval = False; } | SIZEOF '(' texp ')' { $$.hasval = True; $$.fixed = False; $$.typ = mkint(); $$.val.i = $3.typ->width; } | pexp { $$ = $1; } ; /* pexp : primitive expression with optional postfix constructs */ pexp : '(' expr ')' { $$ = $2; } | ID { if (!(p = enumentry($1))) p = undefined($1); else $$.hasval = True; $$.fixed = False; $$.typ = p->info.typ; $$.val = p->info.val; } | LNG { $$.typ = mkint(); $$.hasval = True; $$.fixed = False; $$.val.i = $1; } | DBL { $$.typ = mkfloat(); $$.hasval = True; $$.fixed = False; $$.val.r = $1; } | CHR { $$.typ = mkchar(); $$.hasval = True; $$.fixed = False; $$.val.i = $1; } | STR { $$.typ = mkstring(); $$.hasval = True; $$.fixed = False; $$.val.s = $1; } | CFALSE { $$.typ = mkbool(); $$.hasval = True; $$.fixed = False; $$.val.i = 0; } | CTRUE { $$.typ = mkbool(); $$.hasval = True; $$.fixed = False; $$.val.i = 1; } ; %% int yywrap(void) { return 1; } /**************************************\ Support routines \**************************************/ static Node op(const char *op, Node p, Node q) { Node r; r.typ = p.typ; r.sto = Snone; if (p.hasval && q.hasval) { if (integer(p.typ) && integer(q.typ)) switch (op[0]) { case '|': r.val.i = p.val.i | q.val.i; break; case '^': r.val.i = p.val.i ^ q.val.i; break; case '&': r.val.i = p.val.i & q.val.i; break; case '<': r.val.i = p.val.i << q.val.i; break; case '>': r.val.i = p.val.i >> q.val.i; break; case '+': r.val.i = p.val.i + q.val.i; break; case '-': r.val.i = p.val.i - q.val.i; break; case '*': r.val.i = p.val.i * q.val.i; break; case '/': r.val.i = q.val.i != 0 ? p.val.i / q.val.i : 0; break; case '%': r.val.i = q.val.i != 0 ? p.val.i % q.val.i : 0; break; default: typerror(op); } else if (real(p.typ) && real(q.typ)) switch (op[0]) { case '+': r.val.r = p.val.r + q.val.r; break; case '-': r.val.r = p.val.r - q.val.r; break; case '*': r.val.r = p.val.r * q.val.r; break; case '/': r.val.r = q.val.r != 0 ? p.val.r / q.val.r : 0.0; break; default: typerror(op); } else semerror("invalid constant operation"); r.hasval = True; r.fixed = False; } else { r.typ = mgtype(p.typ, q.typ); r.hasval = False; } return r; } static Node iop(const char *iop, Node p, Node q) { if (integer(p.typ) && integer(q.typ)) return op(iop, p, q); typerror("integer operands only"); return p; } static Node relop(const char *op, Node p, Node q) { Node r; r.typ = mkint(); r.sto = Snone; r.hasval = True; r.fixed = False; r.val.i = 1; sprintf(errbuf, "comparison '%s' not evaluated and considered true", op); semwarn(errbuf); if (p.typ->type != Tpointer || p.typ != q.typ) r.typ = mgtype(p.typ, q.typ); return r; } /**************************************\ Scope management \**************************************/ /* mkscope - initialize scope stack with a new table and offset */ static void mkscope(Table *table, int offset) { sp = stack-1; enterscope(table, offset); } /* enterscope - enter a new scope by pushing a new table and offset on the stack */ static void enterscope(Table *table, int offset) { if (++sp == stack + MAXNEST) execerror("maximum scope nesting depth exceeded"); sp->table = table; sp->entry = NULL; sp->node.typ = mkint(); sp->node.sto = Snone; sp->val = 0; sp->offset = offset; sp->grow = True; /* by default, offset grows */ sp->mask = False; } /* exitscope - exit a scope by popping the table and offset from the stack */ static void exitscope(void) { check(sp-- != stack, "exitscope() has no matching enterscope()"); } /**************************************\ Undefined symbol \**************************************/ static Entry* undefined(Symbol *sym) { Entry *p; sprintf(errbuf, "undefined identifier '%s'", sym->name); semwarn(errbuf); p = enter(sp->table, sym); p->level = GLOBAL; p->info.typ = mkint(); p->info.sto = Sextern; p->info.hasval = False; return p; } /* mgtype - return most general type among two numerical types */ Tnode* mgtype(Tnode *typ1, Tnode *typ2) { if (numeric(typ1) && numeric(typ2)) { if (typ1->type < typ2->type) return typ2; } else { typerror("non-numeric type"); } return typ1; } /**************************************\ Type checks \**************************************/ static int integer(Tnode *typ) { switch (typ->type) { case Tchar: case Tshort: case Tint: case Tlong: return True; default: break; } return False; } static int real(Tnode *typ) { switch (typ->type) { case Tfloat: case Tdouble: case Tldouble: return True; default: break; } return False; } static int numeric(Tnode *typ) { return integer(typ) || real(typ); } /**************************************\ Type additions \**************************************/ static void add_fault(void) { Table *t; Entry *p1, *p2, *p3, *p4; Symbol *s1, *s2, *s3, *s4; imported = NULL; s1 = lookup("SOAP_ENV__Code"); p1 = entry(classtable, s1); if (!p1 || !p1->info.typ->ref) { t = mktable(NULL); if (!p1) { p1 = enter(classtable, s1); p1->info.typ = mkstruct(t, 3*4); p1->info.typ->id = s1; } else { p1->info.typ->ref = t; } p2 = enter(t, lookup("SOAP_ENV__Value")); p2->info.typ = qname; p2->info.minOccurs = 0; p2 = enter(t, lookup("SOAP_ENV__Subcode")); p2->info.typ = mkpointer(p1->info.typ); p2->info.minOccurs = 0; } s2 = lookup("SOAP_ENV__Detail"); p2 = entry(classtable, s2); if (!p2 || !p2->info.typ->ref) { t = mktable(NULL); if (!p2) { p2 = enter(classtable, s2); p2->info.typ = mkstruct(t, 3*4); p2->info.typ->id = s2; } else { p2->info.typ->ref = t; } p3 = enter(t, lookup("__any")); p3->info.typ = xml; p3->info.minOccurs = 0; p3 = enter(t, lookup("__type")); p3->info.typ = mkint(); p3->info.minOccurs = 0; p3 = enter(t, lookup("fault")); p3->info.typ = mkpointer(mkvoid()); p3->info.minOccurs = 0; custom_fault = 0; } s4 = lookup("SOAP_ENV__Reason"); p4 = entry(classtable, s4); if (!p4 || !p4->info.typ->ref) { t = mktable(NULL); if (!p4) { p4 = enter(classtable, s4); p4->info.typ = mkstruct(t, 4); p4->info.typ->id = s4; } else { p4->info.typ->ref = t; } p3 = enter(t, lookup("SOAP_ENV__Text")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; } s3 = lookup("SOAP_ENV__Fault"); p3 = entry(classtable, s3); if (!p3 || !p3->info.typ->ref) { t = mktable(NULL); if (!p3) { p3 = enter(classtable, s3); p3->info.typ = mkstruct(t, 9*4); p3->info.typ->id = s3; } else { p3->info.typ->ref = t; } p3 = enter(t, lookup("faultcode")); p3->info.typ = qname; p3->info.minOccurs = 0; p3 = enter(t, lookup("faultstring")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("faultactor")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("detail")); p3->info.typ = mkpointer(p2->info.typ); p3->info.minOccurs = 0; p3 = enter(t, s1); p3->info.typ = mkpointer(p1->info.typ); p3->info.minOccurs = 0; p3 = enter(t, s4); p3->info.typ = mkpointer(p4->info.typ); p3->info.minOccurs = 0; p3 = enter(t, lookup("SOAP_ENV__Node")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("SOAP_ENV__Role")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("SOAP_ENV__Detail")); p3->info.typ = mkpointer(p2->info.typ); p3->info.minOccurs = 0; } } static void add_soap(void) { Symbol *s = lookup("soap"); p = enter(classtable, s); p->info.typ = mkstruct(NULL, 0); p->info.typ->transient = -2; p->info.typ->id = s; p->filename = "(built-in)"; p->lineno = 0; } static void add_XML(void) { Symbol *s = lookup("_XML"); s->token = TYPE; p = enter(typetable, s); xml = p->info.typ = mksymtype(mkstring(), s); p->info.sto = Stypedef; p->filename = "(built-in)"; p->lineno = 0; } static void add_qname(void) { Symbol *s = lookup("_QName"); s->token = TYPE; p = enter(typetable, s); qname = p->info.typ = mksymtype(mkstring(), s); p->info.sto = Stypedef; p->filename = "(built-in)"; p->lineno = 0; } static void add_header(void) { Table *t; Entry *p; Symbol *s = lookup("SOAP_ENV__Header"); imported = NULL; p = entry(classtable, s); if (!p || !p->info.typ->ref) { t = mktable(NULL); if (!p) p = enter(classtable, s); p->info.typ = mkstruct(t, 0); p->info.typ->id = s; custom_header = 0; } } static void add_response(Entry *fun, Entry *ret) { Table *t; Entry *p, *q; Symbol *s; size_t i = 0, j, n = strlen(fun->sym->name); char *r = (char*)emalloc(n+100); strcpy(r, fun->sym->name); strcat(r, "Response"); do { for (j = 0; j < i; j++) r[n+j+8] = '_'; r[n+i+8] = '\0'; if (!(s = lookup(r))) s = install(r, ID); i++; } while (entry(classtable, s)); free(r); t = mktable(NULL); q = enter(t, ret->sym); q->info = ret->info; if (q->info.typ->type == Treference) q->info.typ = (Tnode*)q->info.typ->ref; p = enter(classtable, s); p->info.typ = mkstruct(t, 4); p->info.typ->id = s; fun->info.typ->response = p; } static void add_result(Tnode *typ) { Entry *p; if (!typ->ref || !((Tnode*)typ->ref)->ref) { semwarn("response struct/class must be declared before used in function prototype"); return; } for (p = ((Table*)((Tnode*)typ->ref)->ref)->list; p; p = p->next) if (((int)p->info.sto & (int)Sreturn)) return; for (p = ((Table*)((Tnode*)typ->ref)->ref)->list; p; p = p->next) { if (p->info.typ->type != Tfun && !((int)p->info.sto & (int)Sattribute) && !is_transient(p->info.typ) && !((int)p->info.sto & ((int)Sprivate | (int)Sprotected))) p->info.sto = (Storage)((int)p->info.sto | (int)Sreturn); return; } } static void add_request(Symbol *sym, Scope *sp) { Entry *p; unlinklast(sp->table); if ((p = entry(classtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "service operation name clash: struct/class '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, sym); p->info.typ = mkstruct(sp->table, sp->offset); p->info.typ->id = sym; } if (p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (q->info.typ->type == Treference || q->info.typ->type == Trvalueref) { sprintf(errbuf, "parameter '%s' of service operation function '%s()' in %s:%d cannot be passed by reference: use a pointer instead", q->sym->name, sym->name, q->filename, q->lineno); semwarn(errbuf); } else if (((int)q->info.sto & ((int)Sconst | (int)Sconstptr))) { if (!is_string(q->info.typ) && !is_wstring(q->info.typ)) { sprintf(errbuf, "parameter '%s' of service operation function '%s()' in %s:%d cannot be declared const", q->sym->name, sym->name, q->filename, q->lineno); semwarn(errbuf); } } else if (((int)q->info.sto & ~((int)Sattribute | (int)Sextern | (int)Sspecial))) { sprintf(errbuf, "invalid parameter '%s' of service operation function '%s()' in %s:%d", q->sym->name, sym->name, q->filename, q->lineno); semwarn(errbuf); } } } } /**************************************\ Add pragma \**************************************/ static void add_pragma(const char *s) { Pragma **pp; for (pp = &pragmas; *pp; pp = &(*pp)->next) ; *pp = (Pragma*)emalloc(sizeof(Pragma)); (*pp)->pragma = s; (*pp)->next = NULL; } gsoap-2.8.60/gsoap/src/README.txt0000644000175000017500000001445113227173557015677 0ustar ellertellertThe gSOAP 'soapcpp2' source-to-source compiler INSTRUCTIONS The gSOAP soapcpp2 tool translates annotated C/C++ header files with interface defitions for services and clients to service and client implementation code. It also maps the C/C++ types to XML types, with the ability to generate XML schema and WSDL documents. When starting from WSDL and/or XML schemas, first use the gSOAP 'wsdl2h' tool to translate these into C/C++ header file with interface definitions. Then use 'soapcpp2' to translate these into implementation code. See also the README.txt in the 'wsdl' directory and documentation on the use of 'wsdl2h' with 'soapcpp2'. CONTENTS This part of the distribution contains the following files: README.txt This file MakefileManual Extra makefile when autoconf/automake fail to produce one soapcpp2.h Main header file soapcpp2.c Main application symbol2.c Symbol table handling and code generation module error2.h Header file for error2.c error2.c Error handling routines init2.c Compiler symbol table initialization soapcpp2_lex.l Flex/Lex tokens soapcpp2_yacc.y Yacc/Bison grammar INSTALLATION Use './configure' and 'make' in the root directory, as explained in the installation instructions. To build 'soapcpp2' when autoconf/automake fail, use: make -f MakefileManual The above commands to build 'soapcpp2' assume you have Bison and Flex installed. To use Yacc instead, please use: $ cd gsoap/src $ make YACC='yacc -d -v -s soapcpp2_yacc' CMFLAGS='-DWITH_YACC -DWITH_FLEX' -f MakefileManual If you do not have the Bison tool, please download and install it from here: http://www.gnu.org/software/bison/ If you do not have the Flex tool, please download and install it from here: http://flex.sourceforge.net What if you do not have Bison and Flex? Included in gsoap/src are the flex-generated file 'lex.yy.c' and bison-generated files 'soapcpp2_yacc.tab.h' and 'soapcpp2_yacc.tab.c'. These files may suffice (no guarantee however) to build 'soapcpp2' as follows: $ cd gsoap/src $ make -f MakefileManual soapcpp2 In case the files 'lex.yy.c', 'soapcpp2_yacc.tab.h', and 'soapcpp2_yacc.tab.c' were deleted in a prior build run, please unarchive the gSOAP package again to retrieve these original files. For your project builds, use the stdsoap2.c and stdsoap2.cpp sources rather than the libgsoap libs, as the libs are not built. To enable SSL, GZIP, HTTP cookies, IPv6 support, and/or force C locale usage, use the compiler flags: -DWITH_OPENSSL to enable SSL, link with OpenSSL -DWITH_GNUTLS to enable SSL, link with GNUTLS -DWITH_GZIP to enable compression, link with Zlib -DWITH_COOKIES to enable HTTP cookies -DWITH_IPV6 to enable IPv6 -DWITH_C_LOCALE to force C locale Note: these flags when set must be used to compile ALL your sources to ensure consistency. QNX INSTALLATION On QNX the bison.simple file is located in $QNX_HOST/usr/share/bison.simple Update your .profile to include: export BISON_SIMPLE=$QNX_HOST/usr/share/bison/bison.simple export BISON_HAIRY=$QNX_HOST/usr/share/bison/bison.hairy WIN32 INSTALLATION You need to install Flex and Bison to build soapcpp2. An MSN article explains how to do this with MS VS2005: http://msdn.microsoft.com/en-us/library/aa730877(VS.80).aspx#vccustombr_topic3 The older Bison v1.6 can crash on Win32 systems if YYINITDEPTH is too small: Compile with /DYYINITDEPTH=5000 COMMAND LINE OPTIONS -1 generate SOAP 1.1 bindings -2 generate SOAP 1.2 bindings -0 no SOAP bindings, use REST -C generate client-side code only -S generate server-side code only -T generate server auto-test code -Ec generate extra routines for deep copying -Ed generate extra routines for deep deletion -Et generate extra routines for data traversals with walker functions -L don't generate soapClientLib/soapServerLib -a use SOAPAction with WS-Addressing to invoke server-side operations -A require SOAPAction to invoke server-side operations -b serialize byte arrays char[N] as string -c generate C source code -c++ generate C++ source code (default) -c++11 generate C++ source code optimized for C++11 (compile with -std=c++11) -dpath use path to save files -e generate SOAP RPC encoding style bindings (also use -1 or -2) -fN multiple soapC files, with N serializer definitions per file (N>=10) -h display help info -Ipath use path(s) for #import (paths separated with ':', or ';' for windows) -i generate C++ service proxies and objects inherited from soap struct -j generate C++ service proxies and objects that share a soap struct -l generate linkable modules (experimental) -m generate Matlab(tm) code for MEX compiler -n use service name to rename service functions and namespace table -pname save files with new prefix name instead of 'soap' -Qname use name as the C++ namespace for decls, including custom serializers -qname use name as the C++ namespace of all declarations -r generate soapReadme.md report -s generate deserialization code with strict XML validation checks -t generate code for fully xsi:type typed SOAP/XML messaging -u uncomment comments in WSDL/schema output by suppressing XML comments -V display the current version and exit -v verbose output -w don't generate WSDL and schema files -x don't generate sample XML message files -y include C/C++ type access information in sample XML messages -z1 generate deprecated old-style C++ service proxies and objects -z2 compatibility with 2.7.x: omit XML output for NULL pointers -z3 compatibility with <= 2.8.30: _param_N indexing; nillable pointers infile header file to parse (or stdin) DOCUMENTATION See soapdoc2.pdf for documentation. A NOTE ON HEAP MEMORY USAGE Parts of the soapcpp2 tool allocate heap memory during its execution to maintain critical state information during its execution. No attempt is made to release this memory before the program terminates. LICENSE The gSOAP 'soapcpp2' tool and (generated) source code are released under GPL or a commercial license. The commercial license is available from Genivia. Please visit http://genivia.com/Products/gsoap/contract.html COPYRIGHT NOTICE gSOAP XML Web services tools Copyright (C) 2000-2011, Robert van Engelen, Genivia, Inc. All Rights Reserved. gsoap-2.8.60/gsoap/src/init2.c0000644000175000017500000001543413227173557015374 0ustar ellertellert/* init2.c Symbol table initialization. gSOAP XML Web services tools Copyright (C) 2000-2015, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "soapcpp2.h" #ifdef HAVE_CONFIG_H #include "soapcpp2_yacc.h" #else #include "soapcpp2_yacc.tab.h" #endif typedef struct Keyword { const char *s; /* name */ Token t; /* token */ } Keyword; static Keyword keywords[] = { { "asm", NONE }, { "auto", AUTO }, { "bool", BOOL }, { "break", BREAK }, { "case", CASE }, { "catch", NONE }, { "char", CHAR }, { "class", CLASS }, { "const", CONST }, { "const_cast", NONE }, { "continue", CONTINUE }, { "default", DEFAULT }, { "delete", NONE }, { "do", DO }, { "double", DOUBLE }, { "dynamic_cast", NONE }, { "else", ELSE }, { "enum", ENUM }, { "errno", NONE }, { "explicit", EXPLICIT }, { "export", NONE }, { "extern", EXTERN }, { "false", CFALSE }, { "final", FINAL }, { "float", FLOAT }, { "for", FOR }, { "friend", FRIEND }, { "goto", GOTO }, { "if", IF }, { "inline", INLINE }, { "int", INT }, { "int8_t", CHAR }, { "int16_t", SHORT }, { "int32_t", INT }, { "int64_t", LLONG }, { "long", LONG }, { "LONG64", LLONG }, { "mutable", MUTABLE }, { "namespace", NAMESPACE }, { "new", NONE }, { "nullptr", null }, { "NULL", null }, { "operator", OPERATOR }, { "override", OVERRIDE }, { "private", PRIVATE }, { "protected", PROTECTED }, { "public", PUBLIC }, { "register", REGISTER }, { "reinterpret_cast", NONE }, { "restrict", NONE }, { "return", RETURN }, { "short", SHORT }, { "signed", SIGNED }, { "size_t", SIZE }, { "sizeof", SIZEOF }, { "static", STATIC }, { "static_cast", NONE }, { "struct", STRUCT }, { "switch", SWITCH }, { "template", TEMPLATE }, { "this", NONE }, { "throw", NONE }, { "time_t", TIME }, { "true", CTRUE }, { "typedef", TYPEDEF }, { "typeid", NONE }, { "typename", TYPENAME }, { "uint8_t", UCHAR }, { "uint16_t", USHORT }, { "uint32_t", UINT }, { "uint64_t", ULLONG }, { "ULONG64", ULLONG }, { "union", UNION }, { "unsigned", UNSIGNED }, { "using", USING }, { "virtual", VIRTUAL }, { "void", VOID }, { "volatile", VOLATILE }, { "wchar_t", WCHAR }, { "while", WHILE }, { "operator!", NONE }, { "operator~", NONE }, { "operator=", NONE }, { "operator+=", NONE }, { "operator-=", NONE }, { "operator*=", NONE }, { "operator/=", NONE }, { "operator%=", NONE }, { "operator&=", NONE }, { "operator^=", NONE }, { "operator|=", NONE }, { "operator<<=", NONE }, { "operator>>=", NONE }, { "operator||", NONE }, { "operator&&", NONE }, { "operator|", NONE }, { "operator^", NONE }, { "operator&", NONE }, { "operator==", NONE }, { "operator!=", NONE }, { "operator<", NONE }, { "operator<=", NONE }, { "operator>", NONE }, { "operator>=", NONE }, { "operator<<", NONE }, { "operator>>", NONE }, { "operator+", NONE }, { "operator-", NONE }, { "operator*", NONE }, { "operator/", NONE }, { "operator%", NONE }, { "operator++", NONE }, { "operator--", NONE }, { "operator->", NONE }, { "operator[]", NONE }, { "operator()", NONE }, { "mustUnderstand", MUSTUNDERSTAND }, { "soap", ID }, { "SOAP_ENV__Header", ID }, { "dummy", ID }, { "soap_header", ID }, { "SOAP_ENV__Fault", ID }, { "SOAP_ENV__Code", ID }, { "SOAP_ENV__Subcode",ID }, { "SOAP_ENV__Reason", ID }, { "SOAP_ENV__Text", ID }, { "SOAP_ENV__Detail", ID }, { "SOAP_ENV__Value", ID }, { "SOAP_ENV__Node", ID }, { "SOAP_ENV__Role", ID }, { "faultcode", ID }, { "faultstring", ID }, { "faultactor", ID }, { "detail", ID }, { "__type", ID }, { "fault", ID }, { "__any", ID }, { "_QName", ID }, { "_XML", ID }, { "std::string", TYPE }, { "std::wstring", TYPE }, { "std::u16string", TYPE }, { "std::u32string", TYPE }, { "std::deque", TYPE }, { "std::queue", TYPE }, { "std::list", TYPE }, { "std::vector", TYPE }, { "std::set", TYPE }, { "std::shared_ptr", TYPE }, { "std::unique_ptr", TYPE }, { "std::auto_ptr", TYPE }, { "std::weak_ptr", TYPE }, { "std::function", TYPE }, { "/*?*/", NONE }, { 0, 0 } }; /* init - initialize symbol table with predefined keywords */ void init(void) { struct Keyword *k; for (k = keywords; k->s; k++) install(k->s, k->t); } gsoap-2.8.60/gsoap/src/error2.c0000644000175000017500000001063613227173557015561 0ustar ellertellert/* error2.c Error handling. gSOAP XML Web services tools Copyright (C) 2000-2015, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "soapcpp2.h" #ifdef HAVE_CONFIG_H #include "soapcpp2_yacc.h" #else #include "soapcpp2_yacc.tab.h" #endif #define MAXERR 10 extern char yytext[]; /* lexeme found by the lexical analyzer */ static int lexerrno = 0; static int synerrno = 0; static int semerrno = 0; static int semwarno = 0; char errbuf[1024]; /* to hold error messages */ /* yyerror - auto-called by parser from an error production with nonterminal `error' */ void yyerror(const char *s) { (void)s; } /* lexerror - called by lexical analyzer upon failure to recognize a token */ void lexerror(const char *s) { fprintf(stderr, "%s(%d): %s: %s\n", filename, yylineno, s, yytext); if (lexerrno++ >= MAXERR) execerror("too many syntactic errors, bailing out"); } /* synerror - called by a semantic action for an error production in the yacc grammar */ void synerror(const char *s) { fprintf(stderr, "%s(%d): Syntax error: %s\n", filename, yylineno, s); if (synerrno++ >= MAXERR) execerror("too many syntactic errors, bailing out"); } /* semerror - report semantic error from static checking */ void semerror(const char *s) { fprintf(stderr, "\n%s(%d): **ERROR**: %s\n\n", filename, yylineno, s); if (semerrno++ >= MAXERR) execerror("too many semantic errors, bailing out"); } /* semwarn - report semantic warning from static checking */ void semwarn(const char *s) { if (yylineno) fprintf(stderr, "\n%s(%d): *WARNING*: %s\n\n", filename, yylineno, s); else fprintf(stderr, "\n%s: *WARNING*: %s\n\n", filename, s); semwarno++; } /* compliancewarn - report compliance warning */ void compliancewarn(const char *s) { fprintf(stderr, "Compliance warning: %s\n", s); } /* typerror - report type error (a semantic error) */ void typerror(const char *s) { fprintf(stderr, "%s(%d): Type error: %s\n", filename, yylineno, s); if (semerrno++ >= MAXERR) execerror("too many semantic errors, bailing out"); } /* execerror - print error message and terminate execution */ void execerror(const char *s) { fprintf(stderr, "Critical error: %s\n", s); exit(1); } /* progerror - called when check(expr) failed, i.e. upon programming error */ void progerror(const char *s, const char *f, int l) { fprintf(stderr, "Program failure: %s in file %s line %d\n", s, f, l); exit(1); } /* errstat - show error statistics */ int errstat(void) { if (!lexerrno && !synerrno && !semerrno) { fprintf(stderr, "\nCompilation successful "); if (semwarno) fprintf(stderr, "(%d warning%s)\n\n", semwarno, semwarno>1?"s":""); else fprintf(stderr, "\n\n"); return 0; } fprintf(stderr, "\nThere were errors:\n"); if (lexerrno) fprintf(stderr, "%d lexical error%s\n", lexerrno, lexerrno>1?"s":""); if (synerrno) fprintf(stderr, "%d syntax error%s\n", synerrno, synerrno>1?"s":""); if (semerrno) fprintf(stderr, "%d semantic error%s\n", semerrno, semerrno>1?"s":""); if (semwarno) fprintf(stderr, "%d warning%s\n", semwarno, semwarno>1?"s":""); fprintf(stderr, "\n"); return -1; } gsoap-2.8.60/gsoap/src/soapcpp2_yacc.tab.c0000644000175000017500000070532413227173557017646 0ustar ellertellert/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { PRAGMA = 258, AUTO = 259, DOUBLE = 260, INT = 261, STRUCT = 262, BREAK = 263, ELSE = 264, LONG = 265, SWITCH = 266, CASE = 267, ENUM = 268, REGISTER = 269, TYPEDEF = 270, CHAR = 271, EXTERN = 272, RETURN = 273, UNION = 274, CONST = 275, FLOAT = 276, SHORT = 277, UNSIGNED = 278, CONTINUE = 279, FOR = 280, SIGNED = 281, VOID = 282, DEFAULT = 283, GOTO = 284, SIZEOF = 285, VOLATILE = 286, DO = 287, IF = 288, STATIC = 289, WHILE = 290, CLASS = 291, PRIVATE = 292, PROTECTED = 293, PUBLIC = 294, VIRTUAL = 295, INLINE = 296, OPERATOR = 297, LLONG = 298, BOOL = 299, CFALSE = 300, CTRUE = 301, WCHAR = 302, TIME = 303, USING = 304, NAMESPACE = 305, ULLONG = 306, MUSTUNDERSTAND = 307, SIZE = 308, FRIEND = 309, TEMPLATE = 310, EXPLICIT = 311, TYPENAME = 312, MUTABLE = 313, FINAL = 314, null = 315, RESTRICT = 316, OVERRIDE = 317, UCHAR = 318, USHORT = 319, UINT = 320, ULONG = 321, NONE = 322, ID = 323, LAB = 324, TYPE = 325, LNG = 326, DBL = 327, CHR = 328, TAG = 329, STR = 330, RA = 331, LA = 332, OA = 333, XA = 334, AA = 335, MA = 336, DA = 337, TA = 338, NA = 339, PA = 340, OR = 341, AN = 342, NE = 343, EQ = 344, GE = 345, LE = 346, RS = 347, LS = 348, AR = 349, PP = 350, NN = 351 }; #endif /* Tokens. */ #define PRAGMA 258 #define AUTO 259 #define DOUBLE 260 #define INT 261 #define STRUCT 262 #define BREAK 263 #define ELSE 264 #define LONG 265 #define SWITCH 266 #define CASE 267 #define ENUM 268 #define REGISTER 269 #define TYPEDEF 270 #define CHAR 271 #define EXTERN 272 #define RETURN 273 #define UNION 274 #define CONST 275 #define FLOAT 276 #define SHORT 277 #define UNSIGNED 278 #define CONTINUE 279 #define FOR 280 #define SIGNED 281 #define VOID 282 #define DEFAULT 283 #define GOTO 284 #define SIZEOF 285 #define VOLATILE 286 #define DO 287 #define IF 288 #define STATIC 289 #define WHILE 290 #define CLASS 291 #define PRIVATE 292 #define PROTECTED 293 #define PUBLIC 294 #define VIRTUAL 295 #define INLINE 296 #define OPERATOR 297 #define LLONG 298 #define BOOL 299 #define CFALSE 300 #define CTRUE 301 #define WCHAR 302 #define TIME 303 #define USING 304 #define NAMESPACE 305 #define ULLONG 306 #define MUSTUNDERSTAND 307 #define SIZE 308 #define FRIEND 309 #define TEMPLATE 310 #define EXPLICIT 311 #define TYPENAME 312 #define MUTABLE 313 #define FINAL 314 #define null 315 #define RESTRICT 316 #define OVERRIDE 317 #define UCHAR 318 #define USHORT 319 #define UINT 320 #define ULONG 321 #define NONE 322 #define ID 323 #define LAB 324 #define TYPE 325 #define LNG 326 #define DBL 327 #define CHR 328 #define TAG 329 #define STR 330 #define RA 331 #define LA 332 #define OA 333 #define XA 334 #define AA 335 #define MA 336 #define DA 337 #define TA 338 #define NA 339 #define PA 340 #define OR 341 #define AN 342 #define NE 343 #define EQ 344 #define GE 345 #define LE 346 #define RS 347 #define LS 348 #define AR 349 #define PP 350 #define NN 351 /* Copy the first part of user declarations. */ #line 51 "soapcpp2_yacc.y" #include "soapcpp2.h" #ifdef WIN32 #ifndef __STDC__ #define __STDC__ #endif #define YYINCLUDED_STDLIB_H #ifdef WIN32_WITHOUT_SOLARIS_FLEX extern int soapcpp2lex(void); #else extern int yylex(void); #endif #else extern int yylex(void); #endif #define MAXNEST 16 /* max. nesting depth of scopes */ typedef struct Scope { Table *table; Entry *entry; Node node; LONG64 val; int offset; Bool grow; /* true if offset grows with declarations */ Bool mask; /* true if enum is mask */ } Scope; Scope stack[MAXNEST], /* stack of tables and offsets */ *sp; /* current scope stack pointer */ Table *classtable = NULL, *enumtable = NULL, *typetable = NULL, *booltable = NULL, *templatetable = NULL; int transient = 0; int permission = 0; int custom_header = 1; int custom_fault = 1; Pragma *pragmas = NULL; Tnode *qname = NULL; Tnode *xml = NULL; /* function prototypes for support routine section */ static Entry *undefined(Symbol*); static Tnode *mgtype(Tnode*, Tnode*); static Node op(const char*, Node, Node), iop(const char*, Node, Node), relop(const char*, Node, Node); static void mkscope(Table*, int), enterscope(Table*, int), exitscope(void); static int integer(Tnode*), real(Tnode*), numeric(Tnode*); static void add_soap(void), add_XML(void), add_qname(void), add_header(void), add_fault(void), add_response(Entry*, Entry*), add_result(Tnode*), add_request(Symbol*, Scope*), add_pragma(const char*); /* imported from symbol2.c */ extern int is_string(Tnode*), is_wstring(Tnode*), is_smart(Tnode*), is_XML(Tnode*), is_stdXML(Tnode*), is_anyType(Tnode*), is_anyAttribute(Tnode*); extern char *c_storage(Storage); extern const char *c_type(Tnode*); extern int is_primitive_or_string(Tnode*), is_stdstr(Tnode*), is_binary(Tnode*), is_external(Tnode*), is_mutable(Entry*); extern Entry *unlinklast(Table*); /* Temporaries used in semantic rules */ int i; char *s, *s1; const char *s2; Symbol *sym; Entry *p, *q; Tnode *t; Node tmp, c; /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 154 "soapcpp2_yacc.y" { Symbol *sym; LONG64 i; double r; char c; char *s; Tnode *typ; Storage sto; Node rec; Entry *e; } /* Line 193 of yacc.c. */ #line 398 "soapcpp2_yacc.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 411 "soapcpp2_yacc.tab.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 1766 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 122 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 74 /* YYNRULES -- Number of rules. */ #define YYNRULES 293 /* YYNRULES -- Number of states. */ #define YYNSTATES 452 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 351 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 117, 2, 2, 121, 107, 94, 2, 119, 116, 105, 103, 76, 104, 2, 106, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 89, 113, 97, 77, 98, 88, 120, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 114, 2, 115, 93, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 111, 92, 112, 118, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 91, 95, 96, 99, 100, 101, 102, 108, 109, 110 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 6, 7, 13, 15, 16, 19, 22, 24, 26, 28, 31, 33, 34, 38, 43, 48, 53, 58, 61, 63, 65, 66, 67, 68, 70, 73, 77, 80, 83, 87, 92, 95, 98, 105, 108, 110, 112, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 220, 224, 227, 229, 233, 241, 242, 243, 245, 247, 251, 254, 257, 265, 266, 268, 270, 277, 281, 286, 287, 290, 293, 295, 297, 300, 303, 305, 307, 309, 311, 313, 315, 317, 319, 321, 323, 325, 327, 329, 331, 333, 335, 337, 339, 341, 349, 355, 361, 369, 371, 375, 381, 387, 390, 396, 403, 406, 413, 421, 428, 435, 442, 449, 452, 455, 457, 462, 466, 470, 473, 477, 481, 485, 489, 492, 495, 499, 503, 508, 513, 516, 519, 522, 525, 528, 531, 534, 537, 540, 542, 543, 545, 547, 550, 553, 556, 558, 561, 562, 563, 564, 565, 567, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 605, 608, 611, 614, 615, 618, 619, 621, 622, 625, 628, 631, 632, 637, 641, 643, 645, 649, 650, 653, 656, 657, 659, 660, 662, 665, 669, 672, 675, 680, 686, 691, 692, 694, 695, 697, 699, 701, 703, 706, 709, 710, 712, 715, 717, 719, 722, 725, 729, 731, 733, 736, 738, 742, 744, 750, 752, 754, 758, 760, 762, 766, 768, 770, 774, 778, 782, 786, 790, 794, 798, 802, 806, 810, 814, 818, 822, 826, 830, 834, 836, 839, 842, 845, 848, 851, 854, 859, 861, 865, 867, 869, 871, 873, 875, 877 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 123, 0, -1, 124, 125, -1, -1, 50, 68, 111, 126, 112, -1, 126, -1, -1, 126, 127, -1, 135, 113, -1, 128, -1, 130, -1, 131, -1, 1, 113, -1, 3, -1, -1, 135, 113, 129, -1, 37, 89, 132, 129, -1, 38, 89, 133, 129, -1, 39, 89, 134, 129, -1, 130, 129, 131, 129, -1, 1, 113, -1, 114, -1, 115, -1, -1, -1, -1, 150, -1, 150, 136, -1, 150, 137, 142, -1, 140, 142, -1, 141, 142, -1, 135, 76, 136, -1, 135, 76, 137, 142, -1, 1, 68, -1, 1, 116, -1, 172, 68, 174, 177, 179, 175, -1, 172, 139, -1, 68, -1, 70, -1, 68, -1, 42, 117, -1, 42, 118, -1, 42, 77, -1, 42, 87, -1, 42, 86, -1, 42, 85, -1, 42, 84, -1, 42, 83, -1, 42, 82, -1, 42, 81, -1, 42, 80, -1, 42, 79, -1, 42, 78, -1, 42, 90, -1, 42, 91, -1, 42, 92, -1, 42, 93, -1, 42, 94, -1, 42, 96, -1, 42, 95, -1, 42, 97, -1, 42, 100, -1, 42, 98, -1, 42, 99, -1, 42, 102, -1, 42, 101, -1, 42, 103, -1, 42, 104, -1, 42, 105, -1, 42, 106, -1, 42, 107, -1, 42, 109, -1, 42, 110, -1, 42, 108, -1, 42, 114, 115, -1, 42, 119, 116, -1, 42, 149, -1, 70, -1, 171, 118, 70, -1, 143, 119, 167, 144, 116, 169, 170, -1, -1, -1, 145, -1, 146, -1, 146, 76, 145, -1, 1, 68, -1, 1, 76, -1, 151, 172, 147, 174, 177, 178, 176, -1, -1, 68, -1, 149, -1, 151, 172, 119, 167, 144, 116, -1, 151, 172, 173, -1, 151, 172, 68, 173, -1, -1, 168, 150, -1, 152, 150, -1, 168, -1, 152, -1, 168, 151, -1, 152, 151, -1, 27, -1, 44, -1, 16, -1, 47, -1, 22, -1, 6, -1, 10, -1, 43, -1, 51, -1, 53, -1, 21, -1, 5, -1, 26, -1, 23, -1, 63, -1, 64, -1, 65, -1, 66, -1, 48, -1, 55, 97, 161, 138, 98, 36, 138, -1, 36, 111, 163, 129, 112, -1, 154, 111, 163, 129, 112, -1, 154, 89, 162, 111, 163, 129, 112, -1, 154, -1, 154, 89, 162, -1, 7, 111, 163, 129, 112, -1, 153, 111, 163, 129, 112, -1, 7, 138, -1, 19, 111, 164, 129, 112, -1, 19, 138, 111, 164, 129, 112, -1, 19, 138, -1, 13, 111, 163, 135, 166, 112, -1, 13, 105, 111, 163, 135, 166, 112, -1, 155, 111, 163, 135, 166, 112, -1, 156, 111, 163, 135, 166, 112, -1, 157, 111, 165, 135, 166, 112, -1, 158, 111, 165, 135, 166, 112, -1, 13, 138, -1, 13, 159, -1, 70, -1, 70, 97, 148, 98, -1, 1, 68, 1, -1, 1, 68, 98, -1, 1, 98, -1, 36, 1, 112, -1, 7, 1, 112, -1, 19, 1, 112, -1, 13, 1, 112, -1, 7, 138, -1, 36, 138, -1, 13, 138, 160, -1, 13, 159, 160, -1, 13, 105, 138, 160, -1, 13, 105, 159, 160, -1, 7, 138, -1, 36, 138, -1, 89, 16, -1, 89, 47, -1, 89, 22, -1, 89, 6, -1, 89, 10, -1, 89, 43, -1, 89, 70, -1, 89, -1, -1, 36, -1, 57, -1, 38, 162, -1, 37, 162, -1, 39, 162, -1, 70, -1, 7, 68, -1, -1, -1, -1, -1, 76, -1, -1, 4, -1, 14, -1, 34, -1, 56, -1, 17, -1, 15, -1, 40, -1, 20, -1, 59, -1, 62, -1, 54, -1, 41, -1, 52, -1, 18, -1, 120, -1, 121, -1, 31, -1, 58, -1, -1, 169, 20, -1, 169, 59, -1, 169, 62, -1, -1, 77, 71, -1, -1, 40, -1, -1, 172, 105, -1, 172, 94, -1, 172, 91, -1, -1, 114, 187, 115, 173, -1, 114, 115, 173, -1, 173, -1, 176, -1, 111, 187, 112, -1, -1, 77, 187, -1, 96, 187, -1, -1, 74, -1, -1, 71, -1, 71, 89, -1, 71, 89, 71, -1, 89, 71, -1, 180, 181, -1, 180, 181, 182, 183, -1, 180, 181, 182, 184, 182, -1, 180, 181, 185, 182, -1, -1, 60, -1, -1, 75, -1, 72, -1, 71, -1, 73, -1, 103, 182, -1, 104, 182, -1, -1, 89, -1, 97, 89, -1, 97, -1, 89, -1, 97, 89, -1, 89, 97, -1, 97, 89, 97, -1, 97, -1, 89, -1, 89, 97, -1, 97, -1, 186, 76, 186, -1, 187, -1, 190, 88, 188, 89, 187, -1, 189, -1, 186, -1, 190, 90, 191, -1, 191, -1, 189, -1, 192, 91, 193, -1, 193, -1, 191, -1, 193, 92, 193, -1, 193, 93, 193, -1, 193, 94, 193, -1, 193, 96, 193, -1, 193, 95, 193, -1, 193, 97, 193, -1, 193, 100, 193, -1, 193, 98, 193, -1, 193, 99, 193, -1, 193, 102, 193, -1, 193, 101, 193, -1, 193, 103, 193, -1, 193, 104, 193, -1, 193, 105, 193, -1, 193, 106, 193, -1, 193, 107, 193, -1, 194, -1, 117, 194, -1, 118, 194, -1, 104, 194, -1, 103, 194, -1, 105, 194, -1, 94, 194, -1, 30, 119, 149, 116, -1, 195, -1, 119, 186, 116, -1, 68, -1, 71, -1, 72, -1, 73, -1, 75, -1, 45, -1, 46, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 230, 230, 250, 265, 267, 269, 274, 276, 277, 278, 279, 280, 290, 299, 303, 305, 307, 309, 311, 313, 318, 320, 322, 324, 326, 328, 329, 330, 332, 333, 334, 335, 337, 342, 347, 575, 593, 594, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 645, 656, 684, 745, 747, 748, 750, 751, 752, 756, 761, 894, 902, 919, 920, 927, 929, 932, 937, 978, 1030, 1037, 1042, 1083, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1164, 1190, 1217, 1241, 1245, 1263, 1290, 1314, 1335, 1362, 1387, 1408, 1435, 1462, 1471, 1480, 1494, 1508, 1525, 1543, 1573, 1640, 1646, 1651, 1655, 1661, 1667, 1673, 1680, 1705, 1732, 1750, 1769, 1791, 1814, 1819, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1841, 1845, 1847, 1848, 1850, 1851, 1852, 1853, 1862, 1864, 1872, 1881, 1888, 1889, 1891, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1919, 1920, 1921, 1923, 1924, 1925, 1926, 1928, 1929, 1931, 1932, 1934, 1935, 1943, 1948, 1954, 1955, 1973, 1978, 1993, 1994, 2009, 2013, 2027, 2042, 2043, 2045, 2056, 2069, 2082, 2103, 2120, 2133, 2148, 2171, 2189, 2190, 2192, 2193, 2195, 2196, 2197, 2198, 2199, 2201, 2202, 2203, 2204, 2206, 2207, 2208, 2209, 2210, 2212, 2213, 2214, 2223, 2224, 2227, 2233, 2236, 2239, 2243, 2245, 2248, 2251, 2253, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2275, 2281, 2287, 2300, 2301, 2312, 2317, 2324, 2327, 2328, 2337, 2343, 2349, 2355, 2361, 2367 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "PRAGMA", "AUTO", "DOUBLE", "INT", "STRUCT", "BREAK", "ELSE", "LONG", "SWITCH", "CASE", "ENUM", "REGISTER", "TYPEDEF", "CHAR", "EXTERN", "RETURN", "UNION", "CONST", "FLOAT", "SHORT", "UNSIGNED", "CONTINUE", "FOR", "SIGNED", "VOID", "DEFAULT", "GOTO", "SIZEOF", "VOLATILE", "DO", "IF", "STATIC", "WHILE", "CLASS", "PRIVATE", "PROTECTED", "PUBLIC", "VIRTUAL", "INLINE", "OPERATOR", "LLONG", "BOOL", "CFALSE", "CTRUE", "WCHAR", "TIME", "USING", "NAMESPACE", "ULLONG", "MUSTUNDERSTAND", "SIZE", "FRIEND", "TEMPLATE", "EXPLICIT", "TYPENAME", "MUTABLE", "FINAL", "null", "RESTRICT", "OVERRIDE", "UCHAR", "USHORT", "UINT", "ULONG", "NONE", "ID", "LAB", "TYPE", "LNG", "DBL", "CHR", "TAG", "STR", "','", "'='", "RA", "LA", "OA", "XA", "AA", "MA", "DA", "TA", "NA", "PA", "'?'", "':'", "OR", "AN", "'|'", "'^'", "'&'", "NE", "EQ", "'<'", "'>'", "GE", "LE", "RS", "LS", "'+'", "'-'", "'*'", "'/'", "'%'", "AR", "PP", "NN", "'{'", "'}'", "';'", "'['", "']'", "')'", "'!'", "'~'", "'('", "'@'", "'$'", "$accept", "prog", "s1", "exts", "exts1", "ext", "pragma", "decls", "t1", "t2", "t3", "t4", "t5", "dclrs", "dclr", "fdclr", "id", "name", "ctor", "dtor", "func", "fname", "fargso", "fargs", "farg", "arg", "texpf", "texp", "spec", "tspec", "type", "struct", "class", "enum", "enumsc", "mask", "masksc", "sc", "utype", "tname", "base", "s2", "s3", "s4", "s5", "s6", "store", "const", "abstract", "virtual", "ptrs", "array", "arrayck", "brinit", "init", "tag", "occurs", "bounds", "nullptr", "patt", "cdbl", "min", "minmax", "max", "expr", "cexp", "qexp", "oexp", "obex", "aexp", "abex", "rexp", "lexp", "pexp", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 44, 61, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 63, 58, 341, 342, 124, 94, 38, 343, 344, 60, 62, 345, 346, 347, 348, 43, 45, 42, 47, 37, 349, 350, 351, 123, 125, 59, 91, 93, 41, 33, 126, 40, 64, 36 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 122, 123, 124, 125, 125, 126, 126, 127, 127, 127, 127, 127, 128, 129, 129, 129, 129, 129, 129, 129, 130, 131, 132, 133, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 136, 137, 138, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 141, 142, 143, 144, 144, 145, 145, 145, 145, 146, 147, 147, 148, 148, 149, 149, 150, 150, 150, 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 153, 154, 155, 156, 157, 158, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 161, 162, 162, 162, 162, 162, 163, 164, 165, 166, 166, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 169, 170, 170, 171, 171, 172, 172, 172, 172, 173, 173, 173, 174, 175, 175, 176, 176, 176, 177, 177, 178, 178, 178, 178, 178, 179, 179, 179, 179, 180, 180, 181, 181, 182, 182, 182, 182, 182, 183, 183, 183, 183, 184, 184, 184, 184, 184, 185, 185, 185, 186, 186, 187, 187, 188, 189, 189, 190, 191, 191, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 2, 0, 5, 1, 0, 2, 2, 1, 1, 1, 2, 1, 0, 3, 4, 4, 4, 4, 2, 1, 1, 0, 0, 0, 1, 2, 3, 2, 2, 3, 4, 2, 2, 6, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 1, 3, 7, 0, 0, 1, 1, 3, 2, 2, 7, 0, 1, 1, 6, 3, 4, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 5, 5, 7, 1, 3, 5, 5, 2, 5, 6, 2, 6, 7, 6, 6, 6, 6, 2, 2, 1, 4, 3, 3, 2, 3, 3, 3, 3, 2, 2, 3, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 1, 1, 2, 2, 2, 1, 2, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 2, 0, 1, 0, 2, 2, 2, 0, 4, 3, 1, 1, 3, 0, 2, 2, 0, 1, 0, 1, 2, 3, 2, 2, 4, 5, 4, 0, 1, 0, 1, 1, 1, 1, 2, 2, 0, 1, 2, 1, 1, 2, 2, 3, 1, 1, 2, 1, 3, 1, 5, 1, 1, 3, 1, 1, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 3, 0, 6, 1, 0, 2, 0, 0, 0, 13, 179, 112, 106, 0, 107, 0, 180, 184, 103, 183, 192, 0, 186, 111, 105, 114, 113, 101, 195, 181, 0, 185, 190, 108, 102, 104, 119, 109, 191, 110, 189, 0, 182, 196, 187, 188, 115, 116, 117, 118, 140, 21, 22, 193, 194, 7, 9, 10, 11, 0, 80, 80, 205, 0, 0, 124, 0, 0, 0, 0, 0, 0, 6, 0, 144, 12, 34, 0, 37, 38, 173, 128, 0, 0, 0, 0, 173, 138, 139, 0, 174, 131, 0, 173, 150, 0, 0, 205, 8, 29, 0, 30, 27, 80, 0, 0, 185, 140, 96, 173, 0, 173, 173, 173, 175, 175, 95, 0, 0, 142, 143, 146, 0, 148, 155, 156, 173, 165, 165, 0, 164, 151, 152, 147, 0, 174, 145, 0, 166, 167, 0, 0, 90, 205, 0, 0, 31, 80, 178, 28, 0, 209, 208, 207, 206, 36, 0, 0, 0, 0, 0, 0, 171, 125, 0, 0, 0, 0, 0, 78, 4, 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, 0, 176, 160, 161, 157, 159, 162, 158, 163, 0, 0, 0, 0, 141, 209, 100, 99, 32, 0, 42, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 53, 54, 55, 56, 57, 59, 58, 60, 62, 63, 61, 65, 64, 66, 67, 68, 69, 70, 73, 71, 72, 0, 40, 41, 0, 76, 205, 0, 212, 218, 0, 172, 169, 168, 170, 173, 0, 176, 176, 176, 176, 20, 23, 24, 25, 126, 0, 0, 176, 205, 0, 129, 0, 121, 0, 209, 178, 92, 0, 0, 82, 83, 205, 74, 75, 209, 0, 292, 293, 287, 288, 289, 290, 291, 0, 0, 0, 0, 209, 0, 0, 0, 0, 253, 0, 256, 0, 259, 277, 285, 219, 229, 127, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 132, 130, 0, 93, 0, 0, 86, 197, 0, 88, 0, 283, 281, 280, 282, 211, 278, 279, 0, 251, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 215, 231, 0, 134, 135, 136, 137, 16, 17, 18, 19, 133, 120, 0, 201, 84, 89, 209, 0, 0, 286, 210, 254, 0, 255, 258, 261, 262, 263, 265, 264, 266, 268, 269, 267, 271, 270, 272, 273, 274, 275, 276, 0, 0, 0, 35, 213, 232, 225, 123, 91, 198, 199, 200, 0, 79, 218, 284, 250, 0, 216, 217, 0, 234, 233, 235, 247, 249, 0, 0, 238, 0, 202, 220, 252, 214, 248, 236, 237, 239, 241, 226, 0, 228, 221, 0, 215, 244, 240, 227, 222, 224, 87, 245, 223 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 2, 5, 6, 55, 56, 175, 176, 58, 310, 311, 312, 177, 146, 147, 81, 155, 60, 61, 99, 100, 270, 271, 272, 374, 141, 142, 62, 273, 63, 64, 65, 66, 67, 68, 69, 88, 131, 140, 163, 122, 134, 167, 261, 199, 70, 371, 412, 71, 104, 239, 240, 402, 403, 302, 443, 357, 358, 405, 427, 438, 439, 428, 334, 335, 380, 294, 295, 296, 297, 298, 299, 300 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -296 static const yytype_int16 yypact[] = { -296, 40, 50, -296, 34, -296, 236, -21, -37, -296, -296, -296, -296, 12, -296, 47, -296, -296, -296, -296, -296, 19, -296, -296, -296, -296, -296, -296, -296, -296, 23, -12, -296, -296, -296, -296, -296, -296, -296, -296, -296, 41, -296, -296, -296, -296, -296, -296, -296, -296, -74, -296, -296, -296, -296, -296, -296, -296, -296, -3, -296, -296, 61, 1192, 39, 73, 92, 93, 96, 99, 1192, 27, -296, 16, -296, -296, -296, 29, -296, -296, -296, 100, 37, 18, 18, 7, -296, 105, 105, 49, -296, 104, 110, -296, -296, 161, 1490, -296, -296, -296, 101, -296, -296, -296, 30, 85, -296, 130, -296, -296, 126, -296, -296, -296, -296, -296, -296, 160, 1074, -296, -296, -296, 835, -296, -296, -296, -296, 144, 144, 1310, 89, -296, -296, -296, 835, -296, -296, 835, -296, -296, 18, 137, -296, -296, 475, 596, -296, -296, -296, -296, 354, -84, -296, -296, -296, -296, 15, 835, 176, 126, 126, 126, -296, 134, 835, 1310, 1310, 1310, 1310, -296, -296, 3, 158, 159, 171, 149, 953, 9, 1310, -296, -296, 44, 192, -296, -296, -296, -296, -296, -296, -296, 157, 835, 169, 173, -296, 107, -296, -296, -296, 1419, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, 170, -296, -296, 177, -296, -296, 1591, -296, 212, 199, -296, -296, -296, -296, -296, 204, 192, 192, 192, 192, -296, -296, -296, -296, -296, 190, 717, 192, 205, 207, -296, 226, -296, 304, 233, -296, -296, 79, 232, -296, 286, -296, -296, -296, 52, 244, -296, -296, -296, -296, -296, -296, -296, 1599, 1599, 1599, 1599, 233, 1599, 1599, 1599, 250, 6, 66, 275, 287, 1644, -296, -296, -296, 319, -296, 835, -296, 270, 271, 272, 274, 717, 717, 717, 717, -296, 277, -296, -296, 18, -296, 1419, 11, -296, -296, 1561, 108, 1490, -296, -296, -296, -296, -296, -296, -296, -49, -296, 233, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, -296, 71, 312, 279, -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, 276, 1, -296, -296, 233, 280, 1599, -296, -296, 317, 310, 275, 1644, 1659, 700, 817, 577, 577, 230, 230, 230, 230, 322, 322, 168, 168, -296, -296, -296, 1599, 1599, 1599, -296, -296, -296, 120, -296, -296, -296, -296, -296, 329, -296, 212, -296, -296, 1599, -296, -296, 291, -296, -296, -296, 307, -296, 249, 249, -56, 249, -296, -42, -296, -296, -296, -296, -296, 242, 193, -296, 249, -296, 325, 340, 118, -296, 482, -296, 344, -296, -296, -296, -296 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -296, -296, -296, -296, 349, -296, -296, -132, 13, 165, -296, -296, -296, 22, 361, 368, -15, -296, -296, -296, -39, -296, 122, 119, -296, -296, -296, -140, -24, -88, -95, -296, -296, -296, -296, -296, -296, 380, -62, -296, 183, -75, 331, 352, 59, 202, -92, -296, -296, -296, -134, -192, 103, -296, 35, 57, -296, -296, -296, -296, -220, -296, -296, -296, -295, -231, -296, -296, -296, 145, -296, 1380, 38, -296 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -261 static const yytype_int16 yytable[] = { 87, 144, 190, 268, 145, 192, 91, 293, 143, 195, 236, 129, 119, 77, 83, 94, 119, 119, 137, 57, 89, 408, 101, 96, 92, 241, 132, 376, 59, 441, 238, 73, 247, 436, 157, -39, 164, 165, 166, 108, 3, 437, 379, 84, 257, -77, 116, 442, 82, 144, 144, 178, 145, 145, 83, 144, 196, 197, 145, 263, 409, 74, 237, 410, 149, 179, 180, 377, 124, 125, 127, 73, 150, 97, 319, 78, 75, 79, 411, 76, 78, 415, 79, 84, 268, 97, 78, 78, 79, 79, 72, 78, -33, 79, -257, 183, -257, 331, 151, 184, 4, 74, 7, 276, 144, 185, -204, 145, 198, 120, 98, 186, 73, 120, 120, 78, 252, 79, 126, 76, 266, 152, 258, 80, 153, 193, 314, -85, -33, -33, 90, 57, 187, 158, 93, 154, 188, -26, 95, 325, 59, 121, 74, 152, 378, 117, 153, 321, 399, 123, 109, 182, 85, 156, 337, 322, 338, 154, 86, 189, 76, 133, 110, 159, 160, 161, 238, 400, 417, 418, 419, 304, 359, -26, -26, 266, 373, 74, 364, 365, 366, 367, 401, 74, 111, 431, 375, 248, 249, 250, 251, 420, 421, 422, 130, 399, 162, 138, 152, 152, 259, 153, 153, 112, 113, 434, 435, 114, 440, 423, 115, -149, 154, 154, 400, 135, -165, 424, 139, 446, 148, 238, 136, 425, 426, 144, 267, 96, 145, 144, 169, 144, 145, 130, 145, 194, -5, 8, 237, 9, 10, 11, 12, 13, 242, 246, 14, 253, 254, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 256, 26, 27, -246, -246, -246, 28, 260, 262, 29, 265, 30, 353, 354, 355, 31, 32, -94, 33, 34, 264, 445, 35, 36, 274, 301, 37, 38, 39, 40, 41, 42, 275, 43, 44, -246, -246, 45, 46, 47, 48, 49, 369, -94, 52, 50, 306, 307, 308, 309, 303, -94, -242, -242, -242, 305, -177, 315, 316, 420, 421, 422, 327, 328, 329, 330, -94, 332, 333, -94, 349, 350, 351, 352, 353, 354, 355, 317, 444, 318, -94, 243, 244, 245, -242, -242, 238, 323, -94, 51, 52, 425, 426, -203, 105, 53, 54, 10, 11, 12, 13, 324, 326, 14, 336, -260, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 339, 356, 26, 27, 360, 361, 362, 28, 363, 404, 29, 368, 30, 406, 407, 376, 106, 32, 414, 33, 34, 416, 429, 35, 36, 432, 433, 37, 38, 39, 40, 41, 42, 448, 43, 44, 447, 451, 45, 46, 47, 48, 49, 118, 313, 102, 107, 351, 352, 353, 354, 355, 103, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 370, 372, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 128, 191, 168, 232, 320, 430, 233, 234, 235, 53, 54, 105, 413, 449, 10, 11, 12, 13, 381, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 106, 32, 0, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -98, 0, 107, -98, 0, 0, -98, 0, -98, -98, -243, -243, -243, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0, -98, 0, 0, -98, 0, -98, 0, -98, 0, 0, 0, 0, 0, 450, -98, 0, 0, 0, 0, -243, -243, 0, 0, -98, 0, -98, 0, 0, -98, 53, 54, 105, 0, 0, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 106, 32, 0, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -97, 0, 107, -97, 0, 0, -97, 0, -97, -97, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, -97, 0, -97, 0, 0, -97, 0, -97, 0, -97, 0, 0, 0, 0, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0, -97, 0, 0, -97, 53, 54, 171, 0, 0, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 172, 173, 174, 31, 32, -94, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -94, 0, 50, 0, 0, 0, 0, 0, -94, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, -94, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, -14, -94, 51, -14, 0, 0, -203, 171, 53, 54, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 172, 173, 174, 31, 32, -94, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -94, 0, 50, 0, 0, 0, 0, 0, -94, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 0, -94, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, -14, -94, 51, 0, 0, 0, -203, 171, 53, 54, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 172, 173, 174, 31, 32, -94, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -94, 0, 50, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, 51, -14, 0, 0, -203, 0, 53, 54, 8, 0, 9, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 31, 32, -94, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -94, 0, 50, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 170, -94, 51, 52, 0, 0, -203, 105, 53, 54, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 106, 32, -94, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -94, 0, 107, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, -94, -94, 0, 0, 0, 0, 0, 181, 53, 54, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 31, 32, -94, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, -94, 0, 50, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 269, 0, -94, 10, 11, 12, 13, 0, -203, 14, 53, 54, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 106, 32, 0, 33, 34, 0, 0, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 107, 0, 105, 0, 0, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 106, 32, 0, 33, 34, -81, 0, 35, 36, 53, 54, 37, 38, 39, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 107, 0, 269, 0, 0, 10, 11, 12, 13, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 0, 0, 0, 28, 0, 0, 29, 0, 30, 0, 0, 0, 106, 32, 0, 33, 34, 0, 0, 35, 36, 53, 54, 37, 38, 39, 40, 41, 42, 0, 43, 44, 277, 0, 45, 46, 47, 48, 49, 0, 277, 0, 107, 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, 278, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 281, 282, 283, 0, 284, 280, 0, 0, 281, 282, 283, 0, 284, 0, 0, 0, 0, 0, 0, 53, 54, 0, 0, 285, 0, 0, 0, 0, 0, 0, 0, 285, 286, 287, 288, 0, 0, 0, 0, 0, 286, 287, 288, 0, 289, 0, 290, 291, 292, 0, 0, 0, 0, 0, 290, 291, 292, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355 }; static const yytype_int16 yycheck[] = { 15, 96, 134, 195, 96, 137, 21, 238, 96, 143, 150, 86, 1, 1, 7, 30, 1, 1, 93, 6, 1, 20, 61, 97, 1, 157, 88, 76, 6, 71, 114, 68, 164, 89, 109, 119, 111, 112, 113, 63, 0, 97, 337, 36, 176, 119, 70, 89, 1, 144, 145, 126, 144, 145, 7, 150, 144, 145, 150, 191, 59, 98, 150, 62, 103, 127, 128, 116, 83, 84, 85, 68, 42, 76, 266, 68, 113, 70, 77, 116, 68, 376, 70, 36, 276, 76, 68, 68, 70, 70, 111, 68, 76, 70, 88, 6, 90, 289, 68, 10, 50, 98, 68, 237, 199, 16, 118, 199, 147, 98, 113, 22, 68, 98, 98, 68, 113, 70, 111, 116, 68, 91, 113, 111, 94, 140, 258, 116, 112, 113, 111, 118, 43, 7, 111, 105, 47, 76, 97, 273, 118, 112, 98, 91, 336, 118, 94, 68, 77, 112, 111, 129, 105, 68, 88, 76, 90, 105, 111, 70, 116, 112, 89, 37, 38, 39, 114, 96, 399, 400, 401, 246, 304, 112, 113, 68, 68, 98, 310, 311, 312, 313, 111, 98, 111, 416, 326, 165, 166, 167, 168, 71, 72, 73, 89, 77, 70, 36, 91, 91, 178, 94, 94, 111, 111, 425, 426, 111, 428, 89, 111, 111, 105, 105, 96, 111, 111, 97, 57, 439, 119, 114, 112, 103, 104, 320, 119, 97, 320, 324, 70, 326, 324, 89, 326, 98, 0, 1, 326, 3, 4, 5, 6, 7, 68, 111, 10, 89, 89, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 89, 112, 26, 27, 71, 72, 73, 31, 76, 112, 34, 98, 36, 105, 106, 107, 40, 41, 42, 43, 44, 112, 89, 47, 48, 115, 74, 51, 52, 53, 54, 55, 56, 116, 58, 59, 103, 104, 62, 63, 64, 65, 66, 318, 68, 115, 70, 248, 249, 250, 251, 112, 76, 71, 72, 73, 112, 112, 259, 112, 71, 72, 73, 285, 286, 287, 288, 91, 290, 291, 94, 101, 102, 103, 104, 105, 106, 107, 112, 97, 36, 105, 159, 160, 161, 103, 104, 114, 116, 113, 114, 115, 103, 104, 118, 1, 120, 121, 4, 5, 6, 7, 76, 119, 10, 115, 91, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 91, 60, 26, 27, 112, 112, 112, 31, 112, 75, 34, 112, 36, 112, 116, 76, 40, 41, 116, 43, 44, 89, 71, 47, 48, 112, 97, 51, 52, 53, 54, 55, 56, 71, 58, 59, 89, 71, 62, 63, 64, 65, 66, 72, 257, 62, 70, 103, 104, 105, 106, 107, 62, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 320, 324, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 85, 135, 115, 114, 267, 413, 117, 118, 119, 120, 121, 1, 374, 443, 4, 5, 6, 7, 338, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, -1, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, 71, -1, -1, 74, -1, 76, 77, 71, 72, 73, -1, -1, -1, -1, -1, -1, -1, -1, 89, -1, 91, -1, -1, 94, -1, 96, -1, 98, -1, -1, -1, -1, -1, 97, 105, -1, -1, -1, -1, 103, 104, -1, -1, 114, -1, 116, -1, -1, 119, 120, 121, 1, -1, -1, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, -1, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, 71, -1, -1, 74, -1, 76, 77, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 89, -1, 91, -1, -1, 94, -1, 96, -1, 98, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, -1, -1, 119, 120, 121, 1, -1, -1, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, 112, 113, 114, 115, -1, -1, 118, 1, 120, 121, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, -1, 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, 112, 113, 114, -1, -1, -1, 118, 1, 120, 121, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, -1, -1, 118, -1, 120, 121, 1, -1, 3, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, 112, 113, 114, 115, -1, -1, 118, 1, 120, 121, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, 112, 113, -1, -1, -1, -1, -1, 1, 120, 121, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, 1, -1, 112, 4, 5, 6, 7, -1, 118, 10, 120, 121, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, -1, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, -1, -1, 70, -1, 1, -1, -1, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, -1, 43, 44, 116, -1, 47, 48, 120, 121, 51, 52, 53, 54, 55, 56, -1, 58, 59, -1, -1, 62, 63, 64, 65, 66, -1, -1, -1, 70, -1, 1, -1, -1, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 26, 27, -1, -1, -1, 31, -1, -1, 34, -1, 36, -1, -1, -1, 40, 41, -1, 43, 44, -1, -1, 47, 48, 120, 121, 51, 52, 53, 54, 55, 56, -1, 58, 59, 30, -1, 62, 63, 64, 65, 66, -1, 30, -1, 70, -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, -1, 75, 68, -1, -1, 71, 72, 73, -1, 75, -1, -1, -1, -1, -1, -1, 120, 121, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, 94, 103, 104, 105, -1, -1, -1, -1, -1, 103, 104, 105, -1, 115, -1, 117, 118, 119, -1, -1, -1, -1, -1, 117, 118, 119, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 123, 124, 0, 50, 125, 126, 68, 1, 3, 4, 5, 6, 7, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 31, 34, 36, 40, 41, 43, 44, 47, 48, 51, 52, 53, 54, 55, 56, 58, 59, 62, 63, 64, 65, 66, 70, 114, 115, 120, 121, 127, 128, 130, 131, 135, 140, 141, 150, 152, 153, 154, 155, 156, 157, 158, 168, 171, 111, 68, 98, 113, 116, 1, 68, 70, 111, 138, 1, 7, 36, 105, 111, 138, 159, 1, 111, 138, 1, 111, 138, 97, 97, 76, 113, 142, 143, 142, 136, 137, 172, 1, 40, 70, 150, 111, 89, 111, 111, 111, 111, 111, 150, 118, 126, 1, 98, 112, 163, 112, 138, 138, 111, 138, 159, 163, 89, 160, 160, 112, 164, 111, 112, 163, 36, 57, 161, 148, 149, 151, 152, 168, 136, 137, 119, 142, 42, 68, 91, 94, 105, 139, 68, 163, 7, 37, 38, 39, 70, 162, 163, 163, 163, 165, 165, 70, 112, 1, 37, 38, 39, 129, 130, 135, 163, 160, 160, 1, 135, 6, 10, 16, 22, 43, 47, 70, 129, 164, 129, 138, 98, 172, 151, 151, 142, 167, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 114, 117, 118, 119, 149, 151, 114, 173, 174, 129, 68, 162, 162, 162, 111, 129, 135, 135, 135, 135, 113, 89, 89, 89, 112, 129, 113, 135, 76, 166, 112, 129, 112, 98, 68, 119, 173, 1, 144, 145, 146, 151, 115, 116, 172, 30, 45, 46, 68, 71, 72, 73, 75, 94, 103, 104, 105, 115, 117, 118, 119, 187, 189, 190, 191, 192, 193, 194, 195, 74, 177, 112, 163, 112, 166, 166, 166, 166, 132, 133, 134, 131, 129, 166, 112, 112, 36, 173, 167, 68, 76, 116, 76, 172, 119, 194, 194, 194, 194, 173, 194, 194, 186, 187, 115, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 60, 179, 180, 129, 112, 112, 112, 112, 129, 129, 129, 129, 112, 138, 144, 169, 145, 68, 147, 149, 76, 116, 173, 186, 188, 191, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 77, 96, 111, 175, 176, 75, 181, 112, 116, 20, 59, 62, 77, 170, 174, 116, 186, 89, 187, 187, 187, 71, 72, 73, 89, 97, 103, 104, 182, 185, 71, 177, 187, 112, 97, 182, 182, 89, 97, 183, 184, 182, 71, 89, 178, 97, 89, 182, 89, 71, 176, 97, 71 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 230 "soapcpp2_yacc.y" { if (lflag) { custom_header = 0; custom_fault = 0; } else { add_header(); add_fault(); } compile(sp->table); freetable(classtable); freetable(enumtable); freetable(typetable); freetable(booltable); freetable(templatetable); yylineno = 0; ;} break; case 3: #line 250 "soapcpp2_yacc.y" { classtable = mktable(NULL); enumtable = mktable(NULL); typetable = mktable(NULL); booltable = mktable(NULL); templatetable = mktable(NULL); p = enter(booltable, lookup("false")); p->info.typ = mkint(); p->info.val.i = 0; p = enter(booltable, lookup("true")); p->info.typ = mkint(); p->info.val.i = 1; mkscope(mktable(mktable(NULL)), 0); ;} break; case 4: #line 266 "soapcpp2_yacc.y" { set_namespace((yyvsp[(2) - (5)].sym)->name); ;} break; case 5: #line 267 "soapcpp2_yacc.y" { ;} break; case 6: #line 269 "soapcpp2_yacc.y" { add_soap(); add_XML(); add_qname(); ;} break; case 7: #line 274 "soapcpp2_yacc.y" { ;} break; case 8: #line 276 "soapcpp2_yacc.y" { ;} break; case 9: #line 277 "soapcpp2_yacc.y" { ;} break; case 10: #line 278 "soapcpp2_yacc.y" { ;} break; case 11: #line 279 "soapcpp2_yacc.y" { ;} break; case 12: #line 280 "soapcpp2_yacc.y" { synerror("input before ; skipped"); while (sp > stack) { freetable(sp->table); exitscope(); } yyerrok; ;} break; case 13: #line 290 "soapcpp2_yacc.y" { add_pragma((yyvsp[(1) - (1)].s)); ;} break; case 14: #line 299 "soapcpp2_yacc.y" { transient &= ~6; permission = 0; ;} break; case 15: #line 304 "soapcpp2_yacc.y" { ;} break; case 16: #line 306 "soapcpp2_yacc.y" { ;} break; case 17: #line 308 "soapcpp2_yacc.y" { ;} break; case 18: #line 310 "soapcpp2_yacc.y" { ;} break; case 19: #line 312 "soapcpp2_yacc.y" { ;} break; case 20: #line 313 "soapcpp2_yacc.y" { synerror("declaration expected"); yyerrok; ;} break; case 21: #line 318 "soapcpp2_yacc.y" { transient |= 1; ;} break; case 22: #line 320 "soapcpp2_yacc.y" { transient &= ~1; ;} break; case 23: #line 322 "soapcpp2_yacc.y" { permission = (int)Sprivate; ;} break; case 24: #line 324 "soapcpp2_yacc.y" { permission = (int)Sprotected; ;} break; case 25: #line 326 "soapcpp2_yacc.y" { permission = 0; ;} break; case 26: #line 328 "soapcpp2_yacc.y" { ;} break; case 27: #line 329 "soapcpp2_yacc.y" { ;} break; case 28: #line 331 "soapcpp2_yacc.y" { ;} break; case 29: #line 332 "soapcpp2_yacc.y" { ;} break; case 30: #line 333 "soapcpp2_yacc.y" { ;} break; case 31: #line 334 "soapcpp2_yacc.y" { ;} break; case 32: #line 336 "soapcpp2_yacc.y" { ;} break; case 33: #line 337 "soapcpp2_yacc.y" { sprintf(errbuf, "undefined type in declaration of '%s'", (yyvsp[(2) - (2)].sym)->name); synerror(errbuf); yyerrok; ;} break; case 34: #line 342 "soapcpp2_yacc.y" { synerror("function declaration?"); yyerrok; ;} break; case 35: #line 348 "soapcpp2_yacc.y" { if (((int)(yyvsp[(3) - (6)].rec).sto & (int)Stypedef) && sp->table->level == GLOBAL) { if (((yyvsp[(3) - (6)].rec).typ->type != Tstruct && (yyvsp[(3) - (6)].rec).typ->type != Tclass && (yyvsp[(3) - (6)].rec).typ->type != Tunion && (yyvsp[(3) - (6)].rec).typ->type != Tenum && (yyvsp[(3) - (6)].rec).typ->type != Tenumsc) || ((is_binary((yyvsp[(3) - (6)].rec).typ) || is_stdstr((yyvsp[(3) - (6)].rec).typ)) && strcmp((yyvsp[(2) - (6)].sym)->name, (yyvsp[(3) - (6)].rec).typ->id->name)) || strcmp((yyvsp[(2) - (6)].sym)->name, (yyvsp[(3) - (6)].rec).typ->id->name)) { p = enter(typetable, (yyvsp[(2) - (6)].sym)); p->info.typ = mksymtype((yyvsp[(3) - (6)].rec).typ, (yyvsp[(2) - (6)].sym)); if (((int)(yyvsp[(3) - (6)].rec).sto & (int)Sextern)) { p->info.typ->transient = -1; p->info.typ->extsym = (yyvsp[(2) - (6)].sym); } else if (is_external((yyvsp[(3) - (6)].rec).typ)) p->info.typ->transient = -3; /* extern and volatile */ else p->info.typ->transient = (yyvsp[(3) - (6)].rec).typ->transient; if (p->info.typ->width == 0) p->info.typ->width = 8; p->info.sto = (yyvsp[(3) - (6)].rec).sto; p->info.typ->restriction = (yyvsp[(3) - (6)].rec).typ->sym; p->info.typ->synonym = (yyvsp[(3) - (6)].rec).typ->sym; if ((yyvsp[(5) - (6)].rec).hasmin) { p->info.typ->hasmin = (yyvsp[(5) - (6)].rec).hasmin; p->info.typ->incmin = (yyvsp[(5) - (6)].rec).incmin; p->info.typ->min = (yyvsp[(5) - (6)].rec).min; p->info.typ->synonym = NULL; } else { p->info.typ->hasmin = (yyvsp[(3) - (6)].rec).typ->hasmin; p->info.typ->incmin = (yyvsp[(3) - (6)].rec).typ->incmin; p->info.typ->min = (yyvsp[(3) - (6)].rec).typ->min; } if ((yyvsp[(5) - (6)].rec).hasmax) { p->info.typ->hasmax = (yyvsp[(5) - (6)].rec).hasmax; p->info.typ->incmax = (yyvsp[(5) - (6)].rec).incmax; p->info.typ->max = (yyvsp[(5) - (6)].rec).max; p->info.typ->synonym = NULL; } else { p->info.typ->hasmax = (yyvsp[(3) - (6)].rec).typ->hasmax; p->info.typ->incmax = (yyvsp[(3) - (6)].rec).typ->incmax; p->info.typ->max = (yyvsp[(3) - (6)].rec).typ->max; } if (p->info.typ->property == 1) p->info.typ->property = (yyvsp[(3) - (6)].rec).typ->property; if ((yyvsp[(5) - (6)].rec).pattern) { p->info.typ->pattern = (yyvsp[(5) - (6)].rec).pattern; p->info.typ->synonym = NULL; } else if (!p->info.typ->pattern) { p->info.typ->pattern = (yyvsp[(3) - (6)].rec).typ->pattern; } } (yyvsp[(2) - (6)].sym)->token = TYPE; } else { p = enter(sp->table, (yyvsp[(2) - (6)].sym)); p->tag = (yyvsp[(4) - (6)].s); p->info.typ = (yyvsp[(3) - (6)].rec).typ; p->info.sto = (Storage)((int)(yyvsp[(3) - (6)].rec).sto | permission); if ((yyvsp[(6) - (6)].rec).hasval) { Tnode *t = (yyvsp[(3) - (6)].rec).typ; p->info.hasval = True; p->info.ptrval = False; p->info.fixed = (yyvsp[(6) - (6)].rec).fixed; if (is_smart(t) || (t->type == Tpointer && !is_string(t) && !is_wstring(t))) { p->info.hasval = False; p->info.ptrval = True; t = t->ref; } switch (t->type) { case Tchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tulong: case Tllong: case Tullong: case Tenum: case Tenumsc: case Ttime: if ((yyvsp[(6) - (6)].rec).typ->type == Tint || (yyvsp[(6) - (6)].rec).typ->type == Tchar || (yyvsp[(6) - (6)].rec).typ->type == Tenum || (yyvsp[(6) - (6)].rec).typ->type == Tenumsc) { sp->val = p->info.val.i = (yyvsp[(6) - (6)].rec).val.i; if ((t->hasmin && t->min > (double)(yyvsp[(6) - (6)].rec).val.i) || (t->hasmin && !t->incmin && t->min == (double)(yyvsp[(6) - (6)].rec).val.i) || (t->hasmax && t->max < (double)(yyvsp[(6) - (6)].rec).val.i) || (t->hasmax && !t->incmax && t->max == (double)(yyvsp[(6) - (6)].rec).val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; case Tfloat: case Tdouble: case Tldouble: if ((yyvsp[(6) - (6)].rec).typ->type == Tfloat || (yyvsp[(6) - (6)].rec).typ->type == Tdouble || (yyvsp[(6) - (6)].rec).typ->type == Tldouble) { p->info.val.r = (yyvsp[(6) - (6)].rec).val.r; if ((t->hasmin && t->min > (yyvsp[(6) - (6)].rec).val.r) || (t->hasmin && !t->incmin && t->min == (yyvsp[(6) - (6)].rec).val.r) || (t->hasmax && t->max < (yyvsp[(6) - (6)].rec).val.r) || (t->hasmax && !t->incmax && t->max == (yyvsp[(6) - (6)].rec).val.r)) semerror("initialization constant outside value range"); } else if ((yyvsp[(6) - (6)].rec).typ->type == Tint) { p->info.val.r = (double)(yyvsp[(6) - (6)].rec).val.i; if ((t->hasmin && t->min > (double)(yyvsp[(6) - (6)].rec).val.i) || (t->hasmin && !t->incmin && t->min == (double)(yyvsp[(6) - (6)].rec).val.i) || (t->hasmax && t->max < (double)(yyvsp[(6) - (6)].rec).val.i) || (t->hasmax && !t->incmax && t->max == (double)(yyvsp[(6) - (6)].rec).val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; default: if (t->type == Tpointer && (((Tnode*)t->ref)->type == Tchar || ((Tnode*)t->ref)->type == Twchar) && (yyvsp[(6) - (6)].rec).typ->type == Tpointer && ((Tnode*)(yyvsp[(6) - (6)].rec).typ->ref)->type == Tchar) p->info.val.s = (yyvsp[(6) - (6)].rec).val.s; else if (bflag && t->type == Tarray && ((Tnode*)t->ref)->type == Tchar && (yyvsp[(6) - (6)].rec).typ->type == Tpointer && ((Tnode*)(yyvsp[(6) - (6)].rec).typ->ref)->type == Tchar) { if (t->width / ((Tnode*)t->ref)->width - 1 < (int)strlen((yyvsp[(6) - (6)].rec).val.s)) { semerror("char[] initialization constant too long"); p->info.val.s = ""; } else { p->info.val.s = (yyvsp[(6) - (6)].rec).val.s; } } else if (t->id == lookup("std::string") || t->id == lookup("std::wstring")) { p->info.val.s = (yyvsp[(6) - (6)].rec).val.s; } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; } } else { p->info.val.i = sp->val; } if ((yyvsp[(5) - (6)].rec).minOccurs < 0) { if ((yyvsp[(6) - (6)].rec).hasval || ((int)(yyvsp[(3) - (6)].rec).sto & (int)Sattribute) || ((int)(yyvsp[(3) - (6)].rec).sto & (int)Sspecial) || (yyvsp[(3) - (6)].rec).typ->type == Tpointer || (yyvsp[(3) - (6)].rec).typ->type == Ttemplate || is_anyAttribute((yyvsp[(3) - (6)].rec).typ) || !strncmp((yyvsp[(2) - (6)].sym)->name, "__size", 6)) p->info.minOccurs = 0; else p->info.minOccurs = 1; } else { p->info.minOccurs = (yyvsp[(5) - (6)].rec).minOccurs; } p->info.maxOccurs = (yyvsp[(5) - (6)].rec).maxOccurs; p->info.nillable = (yyvsp[(5) - (6)].rec).nillable; if (sp->mask) sp->val <<= 1; else sp->val++; p->info.offset = sp->offset; if (((int)(yyvsp[(3) - (6)].rec).sto & (int)Sextern)) p->level = GLOBAL; else if (((int)(yyvsp[(3) - (6)].rec).sto & (int)Stypedef)) ; else if (sp->grow) sp->offset += p->info.typ->width; else if (p->info.typ->width > sp->offset) sp->offset = p->info.typ->width; } sp->entry = p; ;} break; case 36: #line 575 "soapcpp2_yacc.y" { if (((int)(yyvsp[(1) - (2)].rec).sto & (int)Stypedef)) { sprintf(errbuf, "invalid typedef qualifier for '%s'", (yyvsp[(2) - (2)].sym)->name); semwarn(errbuf); } p = enter(sp->table, (yyvsp[(2) - (2)].sym)); p->info.typ = (yyvsp[(1) - (2)].rec).typ; p->info.sto = (yyvsp[(1) - (2)].rec).sto; p->info.hasval = False; p->info.offset = sp->offset; if (sp->grow) sp->offset += p->info.typ->width; else if (p->info.typ->width > sp->offset) sp->offset = p->info.typ->width; sp->entry = p; ;} break; case 37: #line 593 "soapcpp2_yacc.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); ;} break; case 38: #line 594 "soapcpp2_yacc.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); ;} break; case 39: #line 596 "soapcpp2_yacc.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); ;} break; case 40: #line 597 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator!"); ;} break; case 41: #line 598 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator~"); ;} break; case 42: #line 599 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator="); ;} break; case 43: #line 600 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator+="); ;} break; case 44: #line 601 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator-="); ;} break; case 45: #line 602 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator*="); ;} break; case 46: #line 603 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator/="); ;} break; case 47: #line 604 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator%="); ;} break; case 48: #line 605 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator&="); ;} break; case 49: #line 606 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator^="); ;} break; case 50: #line 607 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator|="); ;} break; case 51: #line 608 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator<<="); ;} break; case 52: #line 609 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator>>="); ;} break; case 53: #line 610 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator||"); ;} break; case 54: #line 611 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator&&"); ;} break; case 55: #line 612 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator|"); ;} break; case 56: #line 613 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator^"); ;} break; case 57: #line 614 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator&"); ;} break; case 58: #line 615 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator=="); ;} break; case 59: #line 616 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator!="); ;} break; case 60: #line 617 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator<"); ;} break; case 61: #line 618 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator<="); ;} break; case 62: #line 619 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator>"); ;} break; case 63: #line 620 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator>="); ;} break; case 64: #line 621 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator<<"); ;} break; case 65: #line 622 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator>>"); ;} break; case 66: #line 623 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator+"); ;} break; case 67: #line 624 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator-"); ;} break; case 68: #line 625 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator*"); ;} break; case 69: #line 626 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator/"); ;} break; case 70: #line 627 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator%"); ;} break; case 71: #line 628 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator++"); ;} break; case 72: #line 629 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator--"); ;} break; case 73: #line 630 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator->"); ;} break; case 74: #line 631 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator[]"); ;} break; case 75: #line 632 "soapcpp2_yacc.y" { (yyval.sym) = lookup("operator()"); ;} break; case 76: #line 633 "soapcpp2_yacc.y" { s1 = c_storage((yyvsp[(2) - (2)].rec).sto); s2 = c_type((yyvsp[(2) - (2)].rec).typ); s = (char*)emalloc(strlen(s1) + strlen(s2) + 10); strcpy(s, "operator "); strcat(s, s1); strcat(s, s2); (yyval.sym) = lookup(s); if (!(yyval.sym)) (yyval.sym) = install(s, ID); ;} break; case 77: #line 645 "soapcpp2_yacc.y" { if (!(p = entry(classtable, (yyvsp[(1) - (1)].sym)))) semerror("invalid constructor"); sp->entry = enter(sp->table, (yyvsp[(1) - (1)].sym)); sp->entry->info.typ = mknone(); sp->entry->info.sto = Snone; sp->entry->info.offset = sp->offset; sp->node.typ = mkvoid(); sp->node.sto = Snone; ;} break; case 78: #line 657 "soapcpp2_yacc.y" { if (!(p = entry(classtable, (yyvsp[(3) - (3)].sym)))) semerror("invalid destructor"); s = (char*)emalloc(strlen((yyvsp[(3) - (3)].sym)->name) + 2); s2 = strrchr((yyvsp[(3) - (3)].sym)->name, ':'); if (s2 && *(s2+1) && (s2 == (yyvsp[(3) - (3)].sym)->name || *(s2-1) != ':')) { strncpy(s, (yyvsp[(3) - (3)].sym)->name, s2 - (yyvsp[(3) - (3)].sym)->name + 1); strcat(s, "~"); strcat(s, s2 + 1); } else { strcpy(s, "~"); strcat(s, (yyvsp[(3) - (3)].sym)->name); } sym = lookup(s); if (!sym) sym = install(s, ID); sp->entry = enter(sp->table, sym); sp->entry->info.typ = mknone(); sp->entry->info.sto = (yyvsp[(1) - (3)].sto); sp->entry->info.offset = sp->offset; sp->node.typ = mkvoid(); sp->node.sto = Snone; ;} break; case 79: #line 685 "soapcpp2_yacc.y" { if ((yyvsp[(1) - (7)].e)->level == GLOBAL) { if (!((int)(yyvsp[(1) - (7)].e)->info.sto & (int)Sextern) && sp->entry && sp->entry->info.typ->type == Tpointer && ((Tnode*)sp->entry->info.typ->ref)->type == Tchar) { sprintf(errbuf, "last output parameter of service operation function prototype '%s' is a pointer to a char which will only return one byte: use char** instead to return a string", (yyvsp[(1) - (7)].e)->sym->name); semwarn(errbuf); } if (((int)(yyvsp[(1) - (7)].e)->info.sto & (int)Sextern)) { (yyvsp[(1) - (7)].e)->info.typ = mkmethod((yyvsp[(1) - (7)].e)->info.typ, sp->table); } else if (sp->entry && (sp->entry->info.typ->type == Tpointer || sp->entry->info.typ->type == Treference || sp->entry->info.typ->type == Tarray || is_transient(sp->entry->info.typ))) { if ((yyvsp[(1) - (7)].e)->info.typ->type == Tint) { sp->entry->info.sto = (Storage)((int)sp->entry->info.sto | (int)Sreturn); (yyvsp[(1) - (7)].e)->info.typ = mkfun(sp->entry); (yyvsp[(1) - (7)].e)->info.typ->id = (yyvsp[(1) - (7)].e)->sym; if (!is_transient(sp->entry->info.typ)) { if (!is_response(sp->entry->info.typ)) { if (!is_XML(sp->entry->info.typ) && !is_stdXML(sp->entry->info.typ)) add_response((yyvsp[(1) - (7)].e), sp->entry); } else { add_result(sp->entry->info.typ); } } add_request((yyvsp[(1) - (7)].e)->sym, sp); } else { sprintf(errbuf, "return type of service operation function prototype '%s' must be integer", (yyvsp[(1) - (7)].e)->sym->name); semerror(errbuf); } } else { sprintf(errbuf, "last output parameter of service operation function prototype '%s' is a return parameter and must be a pointer or reference, or use %s(..., void) for one-way sends", (yyvsp[(1) - (7)].e)->sym->name, (yyvsp[(1) - (7)].e)->sym->name); semerror(errbuf); } } else if ((yyvsp[(1) - (7)].e)->level == INTERNAL) { (yyvsp[(1) - (7)].e)->info.typ = mkmethod((yyvsp[(1) - (7)].e)->info.typ, sp->table); (yyvsp[(1) - (7)].e)->info.sto = (Storage)((int)(yyvsp[(1) - (7)].e)->info.sto | (int)(yyvsp[(6) - (7)].sto) | (int)(yyvsp[(7) - (7)].sto)); transient &= ~1; } exitscope(); ;} break; case 80: #line 745 "soapcpp2_yacc.y" { (yyval.e) = sp->entry; ;} break; case 81: #line 747 "soapcpp2_yacc.y" { ;} break; case 82: #line 748 "soapcpp2_yacc.y" { ;} break; case 83: #line 750 "soapcpp2_yacc.y" { ;} break; case 84: #line 751 "soapcpp2_yacc.y" { ;} break; case 85: #line 752 "soapcpp2_yacc.y" { sprintf(errbuf, "undefined '%s'", (yyvsp[(2) - (2)].sym)->name); synerror(errbuf); ;} break; case 86: #line 756 "soapcpp2_yacc.y" { synerror("formal argument expected"); yyerrok; ;} break; case 87: #line 762 "soapcpp2_yacc.y" { if (((int)(yyvsp[(4) - (7)].rec).sto & (int)Stypedef)) semwarn("typedef in function argument"); p = enter(sp->table, (yyvsp[(3) - (7)].sym)); p->info.typ = (yyvsp[(4) - (7)].rec).typ; p->info.sto = (yyvsp[(4) - (7)].rec).sto; p->tag = (yyvsp[(5) - (7)].s); if ((yyvsp[(6) - (7)].rec).minOccurs < 0) { if ((yyvsp[(6) - (7)].rec).hasval || ((int)(yyvsp[(4) - (7)].rec).sto & (int)Sattribute) || ((int)(yyvsp[(4) - (7)].rec).sto & (int)Sspecial) || (yyvsp[(4) - (7)].rec).typ->type == Tpointer || (yyvsp[(4) - (7)].rec).typ->type == Ttemplate || is_anyAttribute((yyvsp[(4) - (7)].rec).typ) || !strncmp((yyvsp[(3) - (7)].sym)->name, "__size", 6)) p->info.minOccurs = 0; else p->info.minOccurs = 1; } else { p->info.minOccurs = (yyvsp[(6) - (7)].rec).minOccurs; } p->info.maxOccurs = (yyvsp[(6) - (7)].rec).maxOccurs; if ((yyvsp[(7) - (7)].rec).hasval) { Tnode *t = (yyvsp[(4) - (7)].rec).typ; p->info.hasval = True; p->info.ptrval = False; p->info.fixed = (yyvsp[(7) - (7)].rec).fixed; if (is_smart(t) || (t->type == Tpointer && !is_string(t) && !is_wstring(t))) { p->info.hasval = False; p->info.ptrval = True; t = t->ref; } switch (t->type) { case Tchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tulong: case Tenum: case Tenumsc: case Ttime: if ((yyvsp[(7) - (7)].rec).typ->type == Tint || (yyvsp[(7) - (7)].rec).typ->type == Tchar || (yyvsp[(7) - (7)].rec).typ->type == Tenum || (yyvsp[(7) - (7)].rec).typ->type == Tenumsc) { sp->val = p->info.val.i = (yyvsp[(7) - (7)].rec).val.i; if ((t->hasmin && t->min > (double)(yyvsp[(7) - (7)].rec).val.i) || (t->hasmin && !t->incmin && t->min == (double)(yyvsp[(7) - (7)].rec).val.i) || (t->hasmax && t->max < (double)(yyvsp[(7) - (7)].rec).val.i) || (t->hasmax && !t->incmax && t->max == (double)(yyvsp[(7) - (7)].rec).val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; case Tfloat: case Tdouble: case Tldouble: if ((yyvsp[(7) - (7)].rec).typ->type == Tfloat || (yyvsp[(7) - (7)].rec).typ->type == Tdouble || (yyvsp[(7) - (7)].rec).typ->type == Tldouble) { p->info.val.r = (yyvsp[(7) - (7)].rec).val.r; if ((t->hasmin && t->min > (yyvsp[(7) - (7)].rec).val.r) || (t->hasmin && !t->incmin && t->min == (yyvsp[(7) - (7)].rec).val.r) || (t->hasmax && t->max < (yyvsp[(7) - (7)].rec).val.r) || (t->hasmax && !t->incmax && t->max == (yyvsp[(7) - (7)].rec).val.r)) semerror("initialization constant outside value range"); } else if ((yyvsp[(7) - (7)].rec).typ->type == Tint) { p->info.val.r = (double)(yyvsp[(7) - (7)].rec).val.i; if ((t->hasmin && t->min > (double)(yyvsp[(7) - (7)].rec).val.i) || (t->hasmin && !t->incmin && t->min == (double)(yyvsp[(7) - (7)].rec).val.i) || (t->hasmax && t->max < (double)(yyvsp[(7) - (7)].rec).val.i) || (t->hasmax && !t->incmax && t->max == (double)(yyvsp[(7) - (7)].rec).val.i)) semerror("initialization constant outside value range"); } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; default: if (t->type == Tpointer && (((Tnode*)t->ref)->type == Tchar || ((Tnode*)t->ref)->type == Twchar) && (yyvsp[(7) - (7)].rec).typ->type == Tpointer && ((Tnode*)(yyvsp[(7) - (7)].rec).typ->ref)->type == Tchar) { p->info.val.s = (yyvsp[(7) - (7)].rec).val.s; } else if (t->id == lookup("std::string") || t->id == lookup("std::wstring")) { p->info.val.s = (yyvsp[(7) - (7)].rec).val.s; } else { semerror("type error in initialization constant"); p->info.hasval = False; p->info.ptrval = False; } break; } } p->info.offset = sp->offset; if (((int)(yyvsp[(4) - (7)].rec).sto & (int)Sextern)) p->level = GLOBAL; else if (sp->grow) sp->offset += p->info.typ->width; else if (p->info.typ->width > sp->offset) sp->offset = p->info.typ->width; sp->entry = p; ;} break; case 88: #line 894 "soapcpp2_yacc.y" { if (sp->table->level != PARAM) (yyval.sym) = gensymidx("param", (int)++sp->val); else if (eflag || zflag == 0 || zflag > 3) (yyval.sym) = gensymidx("_param", (int)++sp->val); else (yyval.sym) = gensym("_param"); ;} break; case 89: #line 902 "soapcpp2_yacc.y" { if (soap_version == 2 && *(yyvsp[(1) - (1)].sym)->name == '_' && sp->table->level == GLOBAL) { sprintf(errbuf, "SOAP 1.2 does not support anonymous parameters '%s'", (yyvsp[(1) - (1)].sym)->name); semwarn(errbuf); } (yyval.sym) = (yyvsp[(1) - (1)].sym); ;} break; case 90: #line 919 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 91: #line 921 "soapcpp2_yacc.y" { (yyval.rec).typ = mkmethod(tmp.typ, sp->table); transient &= ~1; exitscope(); ;} break; case 92: #line 928 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(3) - (3)].rec); ;} break; case 93: #line 930 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(4) - (4)].rec); ;} break; case 94: #line 932 "soapcpp2_yacc.y" { (yyval.rec).typ = mkint(); (yyval.rec).sto = Snone; sp->node = (yyval.rec); ;} break; case 95: #line 937 "soapcpp2_yacc.y" { (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).sto = (Storage)((int)(yyvsp[(1) - (2)].sto) | (int)(yyvsp[(2) - (2)].rec).sto); if (((int)(yyval.rec).sto & (int)Sattribute)) { if (is_smart((yyvsp[(2) - (2)].rec).typ)) { if (!is_primitive_or_string((yyvsp[(2) - (2)].rec).typ->ref) && !is_stdstr((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_binary((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_external((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref)) { semwarn("invalid attribute smart pointer @type"); (yyval.rec).sto = (Storage)((int)(yyval.rec).sto & ~(int)Sattribute); } } else if ((yyvsp[(2) - (2)].rec).typ->type == Tpointer) { if (!is_primitive_or_string((yyvsp[(2) - (2)].rec).typ->ref) && !is_stdstr((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_binary((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_external((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref)) { semwarn("invalid attribute pointer @type"); (yyval.rec).sto = (Storage)((int)(yyval.rec).sto & ~(int)Sattribute); } } else if ( !is_primitive_or_string((yyvsp[(2) - (2)].rec).typ) && !is_stdstr((yyvsp[(2) - (2)].rec).typ) && !is_binary((yyvsp[(2) - (2)].rec).typ) && !is_external((yyvsp[(2) - (2)].rec).typ)) { semwarn("invalid attribute @type"); (yyval.rec).sto = (Storage)((int)(yyval.rec).sto & ~(int)Sattribute); } } sp->node = (yyval.rec); if (((int)(yyvsp[(1) - (2)].sto) & (int)Sextern)) transient = 0; ;} break; case 96: #line 978 "soapcpp2_yacc.y" { if ((yyvsp[(1) - (2)].typ)->type == Tint) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tchar: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; case Tshort: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; case Tllong: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; default: semwarn("invalid int type specified"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(1) - (2)].typ)->type == Tuint) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tchar: (yyval.rec).typ = mkuchar(); break; case Tshort: (yyval.rec).typ = mkushort(); break; case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = mkulong(); break; case Tllong: (yyval.rec).typ = mkullong(); break; default: semwarn("invalid unsigned type specified"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(1) - (2)].typ)->type == Tlong) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = mkllong(); break; case Tuint: (yyval.rec).typ = mkulong(); break; case Tulong: (yyval.rec).typ = mkullong(); break; case Tdouble: (yyval.rec).typ = mkldouble(); break; default: semwarn("invalid use of 'long'"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(1) - (2)].typ)->type == Tulong) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = mkullong(); break; case Tuint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tulong: (yyval.rec).typ = mkullong(); break; default: semwarn("invalid use of 'long'"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(2) - (2)].rec).typ->type == Tint) (yyval.rec).typ = (yyvsp[(1) - (2)].typ); else semwarn("invalid type specified (missing ';' or type name used as non-type identifier?)"); (yyval.rec).sto = (yyvsp[(2) - (2)].rec).sto; sp->node = (yyval.rec); ;} break; case 97: #line 1030 "soapcpp2_yacc.y" { (yyval.rec).typ = mkint(); (yyval.rec).sto = (yyvsp[(1) - (1)].sto); sp->node = (yyval.rec); if (((int)(yyvsp[(1) - (1)].sto) & (int)Sextern)) transient = 0; ;} break; case 98: #line 1037 "soapcpp2_yacc.y" { (yyval.rec).typ = (yyvsp[(1) - (1)].typ); (yyval.rec).sto = Snone; sp->node = (yyval.rec); ;} break; case 99: #line 1042 "soapcpp2_yacc.y" { (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).sto = (Storage)((int)(yyvsp[(1) - (2)].sto) | (int)(yyvsp[(2) - (2)].rec).sto); if (((int)(yyval.rec).sto & (int)Sattribute)) { if (is_smart((yyvsp[(2) - (2)].rec).typ)) { if (!is_primitive_or_string((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_stdstr((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_binary((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_external((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref)) { semwarn("invalid attribute smart pointer @type"); (yyval.rec).sto = (Storage)((int)(yyval.rec).sto & ~(int)Sattribute); } } else if ((yyvsp[(2) - (2)].rec).typ->type == Tpointer) { if (!is_primitive_or_string((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_stdstr((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_binary((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref) && !is_external((Tnode*)(yyvsp[(2) - (2)].rec).typ->ref)) { semwarn("invalid attribute pointer @type"); (yyval.rec).sto = (Storage)((int)(yyval.rec).sto & ~(int)Sattribute); } } else if ( !is_primitive_or_string((yyvsp[(2) - (2)].rec).typ) && !is_stdstr((yyvsp[(2) - (2)].rec).typ) && !is_binary((yyvsp[(2) - (2)].rec).typ) && !is_external((yyvsp[(2) - (2)].rec).typ)) { semwarn("invalid attribute @type"); (yyval.rec).sto = (Storage)((int)(yyval.rec).sto & ~(int)Sattribute); } } sp->node = (yyval.rec); if (((int)(yyvsp[(1) - (2)].sto) & (int)Sextern)) transient = 0; ;} break; case 100: #line 1083 "soapcpp2_yacc.y" { if ((yyvsp[(1) - (2)].typ)->type == Tint) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tchar: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; case Tshort: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; case Tllong: (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; break; default: semwarn("invalid int type specified"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(1) - (2)].typ)->type == Tuint) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tchar: (yyval.rec).typ = mkuchar(); break; case Tshort: (yyval.rec).typ = mkushort(); break; case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = mkulong(); break; case Tllong: (yyval.rec).typ = mkullong(); break; default: semwarn("invalid unsigned type specified"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(1) - (2)].typ)->type == Tlong) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = mkllong(); break; case Tuint: (yyval.rec).typ = mkulong(); break; case Tulong: (yyval.rec).typ = mkullong(); break; case Tdouble: (yyval.rec).typ = mkldouble(); break; default: semwarn("invalid use of 'long'"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(1) - (2)].typ)->type == Tulong) switch ((yyvsp[(2) - (2)].rec).typ->type) { case Tint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tlong: (yyval.rec).typ = mkullong(); break; case Tuint: (yyval.rec).typ = (yyvsp[(1) - (2)].typ); break; case Tulong: (yyval.rec).typ = mkullong(); break; default: semwarn("invalid use of 'long'"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } else if ((yyvsp[(2) - (2)].rec).typ->type == Tint) (yyval.rec).typ = (yyvsp[(1) - (2)].typ); else semwarn("invalid type specified (missing ';' or type name used as non-type identifier?)"); (yyval.rec).sto = (yyvsp[(2) - (2)].rec).sto; sp->node = (yyval.rec); ;} break; case 101: #line 1135 "soapcpp2_yacc.y" { (yyval.typ) = mkvoid(); ;} break; case 102: #line 1136 "soapcpp2_yacc.y" { (yyval.typ) = mkbool(); ;} break; case 103: #line 1137 "soapcpp2_yacc.y" { (yyval.typ) = mkchar(); ;} break; case 104: #line 1138 "soapcpp2_yacc.y" { (yyval.typ) = mkwchart(); ;} break; case 105: #line 1139 "soapcpp2_yacc.y" { (yyval.typ) = mkshort(); ;} break; case 106: #line 1140 "soapcpp2_yacc.y" { (yyval.typ) = mkint(); ;} break; case 107: #line 1141 "soapcpp2_yacc.y" { (yyval.typ) = mklong(); ;} break; case 108: #line 1142 "soapcpp2_yacc.y" { (yyval.typ) = mkllong(); ;} break; case 109: #line 1143 "soapcpp2_yacc.y" { (yyval.typ) = mkullong(); ;} break; case 110: #line 1144 "soapcpp2_yacc.y" { (yyval.typ) = mksize(); ;} break; case 111: #line 1145 "soapcpp2_yacc.y" { (yyval.typ) = mkfloat(); ;} break; case 112: #line 1146 "soapcpp2_yacc.y" { (yyval.typ) = mkdouble(); ;} break; case 113: #line 1147 "soapcpp2_yacc.y" { (yyval.typ) = mkint(); ;} break; case 114: #line 1148 "soapcpp2_yacc.y" { (yyval.typ) = mkuint(); ;} break; case 115: #line 1149 "soapcpp2_yacc.y" { (yyval.typ) = mkuchar(); ;} break; case 116: #line 1150 "soapcpp2_yacc.y" { (yyval.typ) = mkushort(); ;} break; case 117: #line 1151 "soapcpp2_yacc.y" { (yyval.typ) = mkuint(); ;} break; case 118: #line 1152 "soapcpp2_yacc.y" { (yyval.typ) = mkulong(); ;} break; case 119: #line 1153 "soapcpp2_yacc.y" { (yyval.typ) = mktimet(); ;} break; case 120: #line 1155 "soapcpp2_yacc.y" { if (!(p = entry(templatetable, (yyvsp[(7) - (7)].sym)))) { p = enter(templatetable, (yyvsp[(7) - (7)].sym)); p->info.typ = mktemplate(NULL, (yyvsp[(7) - (7)].sym)); (yyvsp[(7) - (7)].sym)->token = TYPE; } (yyval.typ) = p->info.typ; ;} break; case 121: #line 1165 "soapcpp2_yacc.y" { sym = gensym("_Struct"); sprintf(errbuf, "anonymous class will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(classtable, sym))) { if (p->info.typ->ref || p->info.typ->type != Tclass) { sprintf(errbuf, "class '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } } else { p = enter(classtable, sym); p->info.typ = mkclass(NULL, 0); } sym->token = TYPE; sp->table->sym = sym; p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 122: #line 1191 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(1) - (5)].e)->sym)) && p->info.typ->ref) { if (is_mutable(p)) { if (merge((Table*)p->info.typ->ref, sp->table)) { sprintf(errbuf, "member name clash in class '%s' declared at line %d", (yyvsp[(1) - (5)].e)->sym->name, p->lineno); semerror(errbuf); } p->info.typ->width += sp->offset; } } else { p = reenter(classtable, (yyvsp[(1) - (5)].e)->sym); sp->table->sym = p->sym; p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = p->sym; if (p->info.typ->base) sp->table->prev = (Table*)entry(classtable, p->info.typ->base)->info.typ->ref; } (yyval.typ) = p->info.typ; exitscope(); ;} break; case 123: #line 1218 "soapcpp2_yacc.y" { p = reenter(classtable, (yyvsp[(1) - (7)].e)->sym); sp->table->sym = p->sym; if (!(yyvsp[(3) - (7)].e)) { semerror("invalid base class"); } else { sp->table->prev = (Table*)(yyvsp[(3) - (7)].e)->info.typ->ref; if (!sp->table->prev && !(yyvsp[(3) - (7)].e)->info.typ->transient) { sprintf(errbuf, "class '%s' has incomplete type (if this class is not serializable then declare 'extern class %s')'", (yyvsp[(3) - (7)].e)->sym->name, (yyvsp[(3) - (7)].e)->sym->name); semerror(errbuf); } p->info.typ->base = (yyvsp[(3) - (7)].e)->info.typ->id; } p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = p->sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 124: #line 1241 "soapcpp2_yacc.y" { (yyvsp[(1) - (1)].e)->info.typ->id = (yyvsp[(1) - (1)].e)->sym; (yyval.typ) = (yyvsp[(1) - (1)].e)->info.typ; ;} break; case 125: #line 1246 "soapcpp2_yacc.y" { if (!(yyvsp[(3) - (3)].e)) { semerror("invalid base class"); } else { if (!(yyvsp[(3) - (3)].e)->info.typ->ref && !(yyvsp[(3) - (3)].e)->info.typ->transient) { sprintf(errbuf, "class '%s' has incomplete type (if this class is not serializable then declare 'extern class %s')'", (yyvsp[(3) - (3)].e)->sym->name, (yyvsp[(3) - (3)].e)->sym->name); semerror(errbuf); } (yyvsp[(1) - (3)].e)->info.typ->base = (yyvsp[(3) - (3)].e)->info.typ->id; } (yyvsp[(1) - (3)].e)->info.typ->id = (yyvsp[(1) - (3)].e)->sym; (yyval.typ) = (yyvsp[(1) - (3)].e)->info.typ; ;} break; case 126: #line 1264 "soapcpp2_yacc.y" { sym = gensym("_Struct"); sprintf(errbuf, "anonymous struct will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(classtable, sym))) { if (p->info.typ->ref || p->info.typ->type != Tstruct) { sprintf(errbuf, "struct '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, sym); p->info.typ = mkstruct(sp->table, sp->offset); } p->info.typ->id = sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 127: #line 1291 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(1) - (5)].e)->sym)) && p->info.typ->ref) { if (is_mutable(p)) { if (merge((Table*)p->info.typ->ref, sp->table)) { sprintf(errbuf, "member name clash in struct '%s' declared at line %d", (yyvsp[(1) - (5)].e)->sym->name, p->lineno); semerror(errbuf); } p->info.typ->width += sp->offset; } } else { p = reenter(classtable, (yyvsp[(1) - (5)].e)->sym); p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; p->info.typ->id = p->sym; } (yyval.typ) = p->info.typ; exitscope(); ;} break; case 128: #line 1314 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(2) - (2)].sym)))) { if (p->info.typ->type == Tstruct) { (yyval.typ) = p->info.typ; } else { sprintf(errbuf, "'struct %s' redeclaration (line %d)", (yyvsp[(2) - (2)].sym)->name, p->lineno); semerror(errbuf); (yyval.typ) = mkint(); } } else { p = enter(classtable, (yyvsp[(2) - (2)].sym)); (yyval.typ) = p->info.typ = mkstruct(NULL, 0); p->info.typ->id = (yyvsp[(2) - (2)].sym); } ;} break; case 129: #line 1336 "soapcpp2_yacc.y" { sym = gensym("_Union"); sprintf(errbuf, "anonymous union will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(classtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "union or struct '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, sym); p->info.typ = mkunion(sp->table, sp->offset); } p->info.typ->id = sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 130: #line 1363 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(2) - (6)].sym)))) { if (p->info.typ->ref || p->info.typ->type != Tunion) { sprintf(errbuf, "union '%s' already declared at %s:%d", (yyvsp[(2) - (6)].sym)->name, p->filename, p->lineno); semerror(errbuf); } else { p = reenter(classtable, (yyvsp[(2) - (6)].sym)); p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, (yyvsp[(2) - (6)].sym)); p->info.typ = mkunion(sp->table, sp->offset); } p->info.typ->id = (yyvsp[(2) - (6)].sym); (yyval.typ) = p->info.typ; exitscope(); ;} break; case 131: #line 1387 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(2) - (2)].sym)))) { if (p->info.typ->type == Tunion) { (yyval.typ) = p->info.typ; } else { sprintf(errbuf, "'union %s' redeclaration (line %d)", (yyvsp[(2) - (2)].sym)->name, p->lineno); semerror(errbuf); (yyval.typ) = mkint(); } } else { p = enter(classtable, (yyvsp[(2) - (2)].sym)); (yyval.typ) = p->info.typ = mkunion(NULL, 0); p->info.typ->id = (yyvsp[(2) - (2)].sym); } ;} break; case 132: #line 1409 "soapcpp2_yacc.y" { sym = gensym("_Enum"); sprintf(errbuf, "anonymous enum will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(enumtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = 4; /* 4 = enum */ } } else { p = enter(enumtable, sym); p->info.typ = mkenum(sp->table); } p->info.typ->id = sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 133: #line 1436 "soapcpp2_yacc.y" { sym = gensym("_Enum"); sprintf(errbuf, "anonymous enum will be named '%s'", sym->name); semwarn(errbuf); if ((p = entry(enumtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = 9; /* 9 = mask */ } } else { p = enter(enumtable, sym); p->info.typ = mkmask(sp->table); } p->info.typ->id = sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 134: #line 1463 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(1) - (6)].e)->sym))) if (!p->info.typ->ref) p->info.typ->ref = sp->table; p->info.typ->id = (yyvsp[(1) - (6)].e)->sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 135: #line 1472 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(1) - (6)].e)->sym))) if (!p->info.typ->ref) p->info.typ->ref = sp->table; p->info.typ->id = (yyvsp[(1) - (6)].e)->sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 136: #line 1481 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(1) - (6)].e)->sym))) { if (!p->info.typ->ref) { p->info.typ->ref = sp->table; p->info.typ->width = 9; /* 9 = mask */ } } p->info.typ->id = (yyvsp[(1) - (6)].e)->sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 137: #line 1495 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(1) - (6)].e)->sym))) { if (!p->info.typ->ref) { p->info.typ->ref = sp->table; p->info.typ->width = 9; /* 9 = mask */ } } p->info.typ->id = (yyvsp[(1) - (6)].e)->sym; (yyval.typ) = p->info.typ; exitscope(); ;} break; case 138: #line 1508 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(2) - (2)].sym)))) { if (p->info.typ->type != Tenum) { sprintf(errbuf, "'enum %s' used where enum class is expected", (yyvsp[(2) - (2)].sym)->name); semwarn(errbuf); } (yyval.typ) = p->info.typ; } else { p = enter(enumtable, (yyvsp[(2) - (2)].sym)); (yyval.typ) = p->info.typ = mkenum(NULL); p->info.typ->id = (yyvsp[(2) - (2)].sym); } ;} break; case 139: #line 1525 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(2) - (2)].sym)))) { if (p->info.typ->type != Tenumsc) { sprintf(errbuf, "'enum class %s' used where enum is expected", (yyvsp[(2) - (2)].sym)->name); semwarn(errbuf); } (yyval.typ) = p->info.typ; } else { p = enter(enumtable, (yyvsp[(2) - (2)].sym)); (yyval.typ) = p->info.typ = mkenumsc(NULL); p->info.typ->id = (yyvsp[(2) - (2)].sym); (yyvsp[(2) - (2)].sym)->token = TYPE; } ;} break; case 140: #line 1543 "soapcpp2_yacc.y" { if ((p = entry(typetable, (yyvsp[(1) - (1)].sym)))) { (yyval.typ) = p->info.typ; } else if ((p = entry(classtable, (yyvsp[(1) - (1)].sym)))) { (yyval.typ) = p->info.typ; } else if ((p = entry(enumtable, (yyvsp[(1) - (1)].sym)))) { (yyval.typ) = p->info.typ; } else if ((yyvsp[(1) - (1)].sym) == lookup("std::string") || (yyvsp[(1) - (1)].sym) == lookup("std::wstring")) { p = enter(classtable, (yyvsp[(1) - (1)].sym)); (yyval.typ) = p->info.typ = mkclass(NULL, 8); p->info.typ->id = (yyvsp[(1) - (1)].sym); if (cflag) p->info.typ->transient = 1; /* make std::string transient in C */ else p->info.typ->transient = -2; /* otherwise volatile in C++ */ } else { sprintf(errbuf, "unknown type '%s'", (yyvsp[(1) - (1)].sym)->name); semerror(errbuf); (yyval.typ) = mkint(); } ;} break; case 141: #line 1574 "soapcpp2_yacc.y" { if ((p = entry(templatetable, (yyvsp[(1) - (4)].sym)))) { (yyval.typ) = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); if (p->info.typ->transient) (yyval.typ)->transient = p->info.typ->transient; } else if ((yyvsp[(1) - (4)].sym) == lookup("std::deque")) { add_pragma("#include "); p = enter(templatetable, (yyvsp[(1) - (4)].sym)); (yyval.typ) = p->info.typ = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); } else if ((yyvsp[(1) - (4)].sym) == lookup("std::list")) { add_pragma("#include "); p = enter(templatetable, (yyvsp[(1) - (4)].sym)); (yyval.typ) = p->info.typ = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); } else if ((yyvsp[(1) - (4)].sym) == lookup("std::vector")) { add_pragma("#include "); p = enter(templatetable, (yyvsp[(1) - (4)].sym)); (yyval.typ) = p->info.typ = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); } else if ((yyvsp[(1) - (4)].sym) == lookup("std::set")) { add_pragma("#include "); p = enter(templatetable, (yyvsp[(1) - (4)].sym)); (yyval.typ) = p->info.typ = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); } else if ((yyvsp[(1) - (4)].sym) == lookup("std::queue")) { add_pragma("#include "); p = enter(templatetable, (yyvsp[(1) - (4)].sym)); (yyval.typ) = p->info.typ = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); (yyval.typ)->transient = 1; /* not serializable */ } else if ((yyvsp[(1) - (4)].sym) == lookup("std::stack")) { add_pragma("#include "); p = enter(templatetable, (yyvsp[(1) - (4)].sym)); (yyval.typ) = p->info.typ = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); (yyval.typ)->transient = 1; /* not serializable */ } else if ((yyvsp[(1) - (4)].sym) == lookup("std::shared_ptr") || (yyvsp[(1) - (4)].sym) == lookup("std::unique_ptr") || (yyvsp[(1) - (4)].sym) == lookup("std::auto_ptr")) { (yyval.typ) = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); (yyval.typ)->transient = -2; /* volatile indicates smart pointer template */ if (!c11flag) semwarn("To use smart pointers you should also use wsdl2h and soapcpp2 with option -c++11 or -c++14"); } else if ((yyvsp[(1) - (4)].sym) == lookup("std::weak_ptr") || (yyvsp[(1) - (4)].sym) == lookup("std::function")) { (yyval.typ) = mktemplate((yyvsp[(3) - (4)].rec).typ, (yyvsp[(1) - (4)].sym)); (yyval.typ)->transient = 1; /* not serializable */ } else { semerror("undefined template"); (yyval.typ) = mkint(); } ;} break; case 142: #line 1641 "soapcpp2_yacc.y" { sprintf(errbuf, "undeclared '%s'", (yyvsp[(2) - (3)].sym)->name); synerror(errbuf); (yyval.typ) = mkint(); ;} break; case 143: #line 1646 "soapcpp2_yacc.y" { sprintf(errbuf, "perhaps trying to use a template with an undefined type parameter '%s'?", (yyvsp[(2) - (3)].sym)->name); synerror(errbuf); (yyval.typ) = mkint(); ;} break; case 144: #line 1651 "soapcpp2_yacc.y" { synerror("perhaps trying to use an undefined template or template with a non-type template parameter? Declare 'template class name'"); (yyval.typ) = mkint(); ;} break; case 145: #line 1656 "soapcpp2_yacc.y" { synerror("malformed class definition (use spacing around ':' to separate derived : base)"); yyerrok; (yyval.typ) = mkint(); ;} break; case 146: #line 1662 "soapcpp2_yacc.y" { synerror("malformed struct definition"); yyerrok; (yyval.typ) = mkint(); ;} break; case 147: #line 1668 "soapcpp2_yacc.y" { synerror("malformed union definition"); yyerrok; (yyval.typ) = mkint(); ;} break; case 148: #line 1674 "soapcpp2_yacc.y" { synerror("malformed enum definition"); yyerrok; (yyval.typ) = mkint(); ;} break; case 149: #line 1680 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(2) - (2)].sym)))) { if (p->info.typ->ref) { if (!is_mutable(p)) { sprintf(errbuf, "struct '%s' already declared at %s:%d", (yyvsp[(2) - (2)].sym)->name, p->filename, p->lineno); semerror(errbuf); } } else { p = reenter(classtable, (yyvsp[(2) - (2)].sym)); } p->info.typ->transient = transient; } else { p = enter(classtable, (yyvsp[(2) - (2)].sym)); p->info.typ = mkstruct(NULL, 0); } (yyval.e) = p; ;} break; case 150: #line 1705 "soapcpp2_yacc.y" { if ((p = entry(classtable, (yyvsp[(2) - (2)].sym)))) { if (p->info.typ->ref) { if (!is_mutable(p)) { sprintf(errbuf, "class '%s' already declared at %s:%d (redundant 'class' specifier here?)", (yyvsp[(2) - (2)].sym)->name, p->filename, p->lineno); semerror(errbuf); } } else { p = reenter(classtable, (yyvsp[(2) - (2)].sym)); } p->info.typ->transient = transient; } else { p = enter(classtable, (yyvsp[(2) - (2)].sym)); p->info.typ = mkclass(NULL, 0); p->info.typ->id = p->sym; } (yyvsp[(2) - (2)].sym)->token = TYPE; (yyval.e) = p; ;} break; case 151: #line 1732 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(2) - (3)].sym)))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", (yyvsp[(2) - (3)].sym)->name, p->filename, p->lineno); semerror(errbuf); } } else { p = enter(enumtable, (yyvsp[(2) - (3)].sym)); p->info.typ = mkenum(0); } p->info.typ->width = (int)(yyvsp[(3) - (3)].i); (yyval.e) = p; ;} break; case 152: #line 1750 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(2) - (3)].sym)))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", (yyvsp[(2) - (3)].sym)->name, p->filename, p->lineno); semerror(errbuf); } } else { p = enter(enumtable, (yyvsp[(2) - (3)].sym)); p->info.typ = mkenumsc(0); } p->info.typ->width = (int)(yyvsp[(3) - (3)].i); (yyvsp[(2) - (3)].sym)->token = TYPE; (yyval.e) = p; ;} break; case 153: #line 1770 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(3) - (4)].sym)))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", (yyvsp[(3) - (4)].sym)->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ = mkmask(0); } } else { p = enter(enumtable, (yyvsp[(3) - (4)].sym)); p->info.typ = mkmask(0); } (yyval.e) = p; ;} break; case 154: #line 1792 "soapcpp2_yacc.y" { if ((p = entry(enumtable, (yyvsp[(3) - (4)].sym)))) { if (p->info.typ->ref) { sprintf(errbuf, "enum '%s' already declared at %s:%d", (yyvsp[(3) - (4)].sym)->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ = mkmasksc(0); } } else { p = enter(enumtable, (yyvsp[(3) - (4)].sym)); p->info.typ = mkmasksc(0); } (yyvsp[(3) - (4)].sym)->token = TYPE; (yyval.e) = p; ;} break; case 155: #line 1814 "soapcpp2_yacc.y" { (yyval.sym) = (yyvsp[(2) - (2)].sym); if (!c11flag) semwarn("To use scoped enumerations (enum class) you should also use wsdl2h and soapcpp2 with option -c++11 or -c++14"); ;} break; case 156: #line 1819 "soapcpp2_yacc.y" { (yyval.sym) = (yyvsp[(2) - (2)].sym); if (!c11flag) semwarn("To use scoped enumerations (enum class) you must also use wsdl2h and soapcpp2 with option -c++11 or -c++14"); ;} break; case 157: #line 1825 "soapcpp2_yacc.y" { (yyval.i) = 1; ;} break; case 158: #line 1826 "soapcpp2_yacc.y" { (yyval.i) = 4; ;} break; case 159: #line 1827 "soapcpp2_yacc.y" { (yyval.i) = 2; ;} break; case 160: #line 1828 "soapcpp2_yacc.y" { (yyval.i) = 4; ;} break; case 161: #line 1829 "soapcpp2_yacc.y" { (yyval.i) = 4; ;} break; case 162: #line 1830 "soapcpp2_yacc.y" { (yyval.i) = 8; ;} break; case 163: #line 1831 "soapcpp2_yacc.y" { (yyval.i) = 4; p = entry(typetable, (yyvsp[(2) - (2)].sym)); if (!p) p = entry(enumtable, (yyvsp[(2) - (2)].sym)); if (!p) semerror("enum underlying type must be one of int8_t, int16_t, int32_t, int64_t"); else (yyval.i) = p->info.typ->width; ;} break; case 164: #line 1841 "soapcpp2_yacc.y" { semerror("enum underlying type must be one of int8_t, int16_t, int32_t, int64_t"); (yyval.i) = 4; ;} break; case 165: #line 1845 "soapcpp2_yacc.y" { (yyval.i) = 4; /* 4 = enum */ ;} break; case 166: #line 1847 "soapcpp2_yacc.y" { ;} break; case 167: #line 1848 "soapcpp2_yacc.y" { ;} break; case 168: #line 1850 "soapcpp2_yacc.y" { (yyval.e) = (yyvsp[(2) - (2)].e); ;} break; case 169: #line 1851 "soapcpp2_yacc.y" { (yyval.e) = (yyvsp[(2) - (2)].e); ;} break; case 170: #line 1852 "soapcpp2_yacc.y" { (yyval.e) = (yyvsp[(2) - (2)].e); ;} break; case 171: #line 1853 "soapcpp2_yacc.y" { (yyval.e) = entry(classtable, (yyvsp[(1) - (1)].sym)); if (!(yyval.e)) { p = entry(typetable, (yyvsp[(1) - (1)].sym)); if (p && (p->info.typ->type == Tclass || p->info.typ->type == Tstruct)) (yyval.e) = p; } ;} break; case 172: #line 1862 "soapcpp2_yacc.y" { (yyval.e) = entry(classtable, (yyvsp[(2) - (2)].sym)); ;} break; case 173: #line 1864 "soapcpp2_yacc.y" { if (transient <= -2) transient = 0; permission = 0; enterscope(mktable(NULL), 0); sp->entry = NULL; ;} break; case 174: #line 1872 "soapcpp2_yacc.y" { if (transient <= -2) transient = 0; permission = 0; enterscope(mktable(NULL), 0); sp->entry = NULL; sp->grow = False; ;} break; case 175: #line 1881 "soapcpp2_yacc.y" { enterscope(mktable(NULL), 0); sp->entry = NULL; sp->mask = True; sp->val = 1; ;} break; case 176: #line 1888 "soapcpp2_yacc.y" { ;} break; case 177: #line 1889 "soapcpp2_yacc.y" { ;} break; case 178: #line 1891 "soapcpp2_yacc.y" { if (sp->table->level == INTERNAL) transient |= 1; permission = 0; enterscope(mktable(NULL), 0); sp->entry = NULL; sp->table->level = PARAM; ;} break; case 179: #line 1900 "soapcpp2_yacc.y" { (yyval.sto) = Sauto; ;} break; case 180: #line 1901 "soapcpp2_yacc.y" { (yyval.sto) = Sregister; ;} break; case 181: #line 1902 "soapcpp2_yacc.y" { (yyval.sto) = Sstatic; ;} break; case 182: #line 1903 "soapcpp2_yacc.y" { (yyval.sto) = Sexplicit; ;} break; case 183: #line 1904 "soapcpp2_yacc.y" { (yyval.sto) = Sextern; transient = 1; ;} break; case 184: #line 1905 "soapcpp2_yacc.y" { (yyval.sto) = Stypedef; ;} break; case 185: #line 1906 "soapcpp2_yacc.y" { (yyval.sto) = Svirtual; ;} break; case 186: #line 1907 "soapcpp2_yacc.y" { (yyval.sto) = Sconst; ;} break; case 187: #line 1908 "soapcpp2_yacc.y" { (yyval.sto) = Sfinal; ;} break; case 188: #line 1909 "soapcpp2_yacc.y" { (yyval.sto) = Soverride; ;} break; case 189: #line 1910 "soapcpp2_yacc.y" { (yyval.sto) = Sfriend; ;} break; case 190: #line 1911 "soapcpp2_yacc.y" { (yyval.sto) = Sinline; ;} break; case 191: #line 1912 "soapcpp2_yacc.y" { (yyval.sto) = SmustUnderstand; ;} break; case 192: #line 1913 "soapcpp2_yacc.y" { (yyval.sto) = Sreturn; ;} break; case 193: #line 1914 "soapcpp2_yacc.y" { (yyval.sto) = Sattribute; if (eflag) semwarn("SOAP RPC encoding does not support XML attributes"); ;} break; case 194: #line 1919 "soapcpp2_yacc.y" { (yyval.sto) = Sspecial; ;} break; case 195: #line 1920 "soapcpp2_yacc.y" { (yyval.sto) = Sextern; transient = -2; ;} break; case 196: #line 1921 "soapcpp2_yacc.y" { (yyval.sto) = Smutable; transient = -4; ;} break; case 197: #line 1923 "soapcpp2_yacc.y" { (yyval.sto) = Snone; ;} break; case 198: #line 1924 "soapcpp2_yacc.y" { (yyval.sto) = (Storage)((int)(yyvsp[(1) - (2)].sto) | (int)Sconstobj); ;} break; case 199: #line 1925 "soapcpp2_yacc.y" { (yyval.sto) = (Storage)((int)(yyvsp[(1) - (2)].sto) | (int)Sfinal); ;} break; case 200: #line 1926 "soapcpp2_yacc.y" { (yyval.sto) = (Storage)((int)(yyvsp[(1) - (2)].sto) | (int)Soverride); ;} break; case 201: #line 1928 "soapcpp2_yacc.y" { (yyval.sto) = Snone; ;} break; case 202: #line 1929 "soapcpp2_yacc.y" { (yyval.sto) = Sabstract; ;} break; case 203: #line 1931 "soapcpp2_yacc.y" { (yyval.sto) = Snone; ;} break; case 204: #line 1932 "soapcpp2_yacc.y" { (yyval.sto) = Svirtual; ;} break; case 205: #line 1934 "soapcpp2_yacc.y" { (yyval.rec) = tmp = sp->node; ;} break; case 206: #line 1935 "soapcpp2_yacc.y" { /* handle const pointers, such as const char* */ if (((int)tmp.sto & (int)Sconst)) tmp.sto = (Storage)(((int)tmp.sto & ~(int)Sconst) | (int)Sconstptr); tmp.typ = mkpointer(tmp.typ); tmp.typ->transient = transient; (yyval.rec) = tmp; ;} break; case 207: #line 1943 "soapcpp2_yacc.y" { tmp.typ = mkreference(tmp.typ); tmp.typ->transient = transient; (yyval.rec) = tmp; ;} break; case 208: #line 1948 "soapcpp2_yacc.y" { tmp.typ = mkrvalueref(tmp.typ); tmp.typ->transient = transient; (yyval.rec) = tmp; ;} break; case 209: #line 1954 "soapcpp2_yacc.y" { (yyval.rec) = tmp; ;} break; case 210: #line 1956 "soapcpp2_yacc.y" { if (!bflag && (yyvsp[(4) - (4)].rec).typ->type == Tchar) { sprintf(errbuf, "char[" SOAP_LONG_FORMAT "] will be serialized as an array of " SOAP_LONG_FORMAT " bytes: use soapcpp2 option -b to enable char[] string serialization or use char* for strings", (yyvsp[(2) - (4)].rec).val.i, (yyvsp[(2) - (4)].rec).val.i); semwarn(errbuf); } if ((yyvsp[(2) - (4)].rec).hasval && (yyvsp[(2) - (4)].rec).typ->type == Tint && (yyvsp[(2) - (4)].rec).val.i > 0 && (yyvsp[(4) - (4)].rec).typ->width > 0) { (yyval.rec).typ = mkarray((yyvsp[(4) - (4)].rec).typ, (int) (yyvsp[(2) - (4)].rec).val.i * (yyvsp[(4) - (4)].rec).typ->width); } else { (yyval.rec).typ = mkarray((yyvsp[(4) - (4)].rec).typ, 0); semerror("undetermined array size"); } (yyval.rec).sto = (yyvsp[(4) - (4)].rec).sto; ;} break; case 211: #line 1973 "soapcpp2_yacc.y" { (yyval.rec).typ = mkpointer((yyvsp[(3) - (3)].rec).typ); /* zero size array = pointer */ (yyval.rec).sto = (yyvsp[(3) - (3)].rec).sto; ;} break; case 212: #line 1978 "soapcpp2_yacc.y" { if ((yyvsp[(1) - (1)].rec).typ->type == Tstruct || (yyvsp[(1) - (1)].rec).typ->type == Tclass) { if (!(yyvsp[(1) - (1)].rec).typ->ref && !(yyvsp[(1) - (1)].rec).typ->transient && !((int)(yyvsp[(1) - (1)].rec).sto & (int)Stypedef)) { if ((yyvsp[(1) - (1)].rec).typ->type == Tstruct) sprintf(errbuf, "struct '%s' has incomplete type (if this struct is not serializable then declare 'extern struct %s')", (yyvsp[(1) - (1)].rec).typ->id->name, (yyvsp[(1) - (1)].rec).typ->id->name); else sprintf(errbuf, "class '%s' has incomplete type (if this class is not serializable then declare 'extern class %s')", (yyvsp[(1) - (1)].rec).typ->id->name, (yyvsp[(1) - (1)].rec).typ->id->name); semerror(errbuf); } } (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 213: #line 1993 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 214: #line 1994 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (3)].rec).hasval) { (yyval.rec).typ = (yyvsp[(2) - (3)].rec).typ; (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val = (yyvsp[(2) - (3)].rec).val; } else { (yyval.rec).hasval = False; semerror("initialization expression not constant"); } ;} break; case 215: #line 2009 "soapcpp2_yacc.y" { (yyval.rec).hasval = False; (yyval.rec).fixed = False; ;} break; case 216: #line 2013 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (2)].rec).hasval) { (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val = (yyvsp[(2) - (2)].rec).val; } else { (yyval.rec).hasval = False; semerror("initialization expression not constant"); } ;} break; case 217: #line 2027 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (2)].rec).hasval) { (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).hasval = True; (yyval.rec).fixed = True; (yyval.rec).val = (yyvsp[(2) - (2)].rec).val; } else { (yyval.rec).hasval = False; semerror("initialization expression not constant"); } ;} break; case 218: #line 2042 "soapcpp2_yacc.y" { (yyval.s) = NULL; ;} break; case 219: #line 2043 "soapcpp2_yacc.y" { (yyval.s) = (yyvsp[(1) - (1)].s); ;} break; case 220: #line 2045 "soapcpp2_yacc.y" { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; (yyval.rec).hasmin = False; (yyval.rec).hasmax = False; (yyval.rec).min = 0.0; (yyval.rec).max = 0.0; (yyval.rec).incmin = True; (yyval.rec).incmax = True; (yyval.rec).pattern = NULL; ;} break; case 221: #line 2056 "soapcpp2_yacc.y" { (yyval.rec).minOccurs = (yyvsp[(1) - (1)].i); (yyval.rec).maxOccurs = 1; if ((yyval.rec).minOccurs < 0) (yyval.rec).minOccurs = -1; (yyval.rec).hasmin = False; (yyval.rec).hasmax = False; (yyval.rec).min = 0.0; (yyval.rec).max = 0.0; (yyval.rec).incmin = True; (yyval.rec).incmax = True; (yyval.rec).pattern = NULL; ;} break; case 222: #line 2069 "soapcpp2_yacc.y" { (yyval.rec).minOccurs = (yyvsp[(1) - (2)].i); (yyval.rec).maxOccurs = 1; if ((yyval.rec).minOccurs < 0) (yyval.rec).minOccurs = -1; (yyval.rec).hasmin = False; (yyval.rec).hasmax = False; (yyval.rec).min = 0.0; (yyval.rec).max = 0.0; (yyval.rec).incmin = True; (yyval.rec).incmax = True; (yyval.rec).pattern = NULL; ;} break; case 223: #line 2082 "soapcpp2_yacc.y" { (yyval.rec).minOccurs = (yyvsp[(1) - (3)].i); (yyval.rec).maxOccurs = (yyvsp[(3) - (3)].i); if ((yyval.rec).minOccurs < 0 || (yyval.rec).maxOccurs < 0) { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; } else if ((yyval.rec).minOccurs > (yyval.rec).maxOccurs) { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; } (yyval.rec).hasmin = False; (yyval.rec).hasmax = False; (yyval.rec).min = 0.0; (yyval.rec).max = 0.0; (yyval.rec).incmin = True; (yyval.rec).incmax = True; (yyval.rec).pattern = NULL; ;} break; case 224: #line 2103 "soapcpp2_yacc.y" { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = (yyvsp[(2) - (2)].i); if ((yyval.rec).maxOccurs < 0) { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; } (yyval.rec).hasmin = False; (yyval.rec).hasmax = False; (yyval.rec).min = 0.0; (yyval.rec).max = 0.0; (yyval.rec).incmin = True; (yyval.rec).incmax = True; (yyval.rec).pattern = NULL; ;} break; case 225: #line 2121 "soapcpp2_yacc.y" { (yyval.rec).hasmin = False; (yyval.rec).hasmax = False; (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; (yyval.rec).min = 0.0; (yyval.rec).max = 0.0; (yyval.rec).incmin = True; (yyval.rec).incmax = True; (yyval.rec).nillable = (yyvsp[(1) - (2)].i); (yyval.rec).pattern = (yyvsp[(2) - (2)].s); ;} break; case 226: #line 2134 "soapcpp2_yacc.y" { (yyval.rec).hasmin = True; (yyval.rec).hasmax = False; (yyval.rec).incmin = (yyvsp[(4) - (4)].rec).incmin; (yyval.rec).incmax = (yyvsp[(4) - (4)].rec).incmax; (yyval.rec).minOccurs = (LONG64)(yyvsp[(3) - (4)].r); (yyval.rec).maxOccurs = 1; if ((yyval.rec).minOccurs < 0) (yyval.rec).minOccurs = -1; (yyval.rec).min = (yyvsp[(3) - (4)].r); (yyval.rec).max = 0.0; (yyval.rec).nillable = (yyvsp[(1) - (4)].i); (yyval.rec).pattern = (yyvsp[(2) - (4)].s); ;} break; case 227: #line 2149 "soapcpp2_yacc.y" { (yyval.rec).hasmin = True; (yyval.rec).hasmax = True; (yyval.rec).incmin = (yyvsp[(4) - (5)].rec).incmin; (yyval.rec).incmax = (yyvsp[(4) - (5)].rec).incmax; (yyval.rec).minOccurs = (LONG64)(yyvsp[(3) - (5)].r); (yyval.rec).maxOccurs = (LONG64)(yyvsp[(5) - (5)].r); if ((yyval.rec).minOccurs < 0 || (yyval.rec).maxOccurs < 0) { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; } else if ((yyval.rec).minOccurs > (yyval.rec).maxOccurs) { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; } (yyval.rec).min = (yyvsp[(3) - (5)].r); (yyval.rec).max = (yyvsp[(5) - (5)].r); (yyval.rec).nillable = (yyvsp[(1) - (5)].i); (yyval.rec).pattern = (yyvsp[(2) - (5)].s); ;} break; case 228: #line 2171 "soapcpp2_yacc.y" { (yyval.rec).hasmin = False; (yyval.rec).hasmax = True; (yyval.rec).incmin = (yyvsp[(3) - (4)].rec).incmin; (yyval.rec).incmax = (yyvsp[(3) - (4)].rec).incmax; (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = (LONG64)(yyvsp[(4) - (4)].r); if ((yyval.rec).maxOccurs < 0) { (yyval.rec).minOccurs = -1; (yyval.rec).maxOccurs = 1; } (yyval.rec).min = 0.0; (yyval.rec).max = (yyvsp[(4) - (4)].r); (yyval.rec).nillable = (yyvsp[(1) - (4)].i); (yyval.rec).pattern = (yyvsp[(2) - (4)].s); ;} break; case 229: #line 2189 "soapcpp2_yacc.y" { (yyval.i) = zflag >= 1 && zflag <= 3; /* False, unless version 2.8.30 or earlier */ ;} break; case 230: #line 2190 "soapcpp2_yacc.y" { (yyval.i) = True; ;} break; case 231: #line 2192 "soapcpp2_yacc.y" { (yyval.s) = NULL; ;} break; case 232: #line 2193 "soapcpp2_yacc.y" { (yyval.s) = (yyvsp[(1) - (1)].s); ;} break; case 233: #line 2195 "soapcpp2_yacc.y" { (yyval.r) = (yyvsp[(1) - (1)].r); ;} break; case 234: #line 2196 "soapcpp2_yacc.y" { (yyval.r) = (double)(yyvsp[(1) - (1)].i); ;} break; case 235: #line 2197 "soapcpp2_yacc.y" { (yyval.r) = (double)(yyvsp[(1) - (1)].c); ;} break; case 236: #line 2198 "soapcpp2_yacc.y" { (yyval.r) = +(yyvsp[(2) - (2)].r); ;} break; case 237: #line 2199 "soapcpp2_yacc.y" { (yyval.r) = -(yyvsp[(2) - (2)].r); ;} break; case 238: #line 2201 "soapcpp2_yacc.y" { (yyval.rec).incmin = (yyval.rec).incmax = True; ;} break; case 239: #line 2202 "soapcpp2_yacc.y" { (yyval.rec).incmin = (yyval.rec).incmax = True; ;} break; case 240: #line 2203 "soapcpp2_yacc.y" { (yyval.rec).incmin = False; (yyval.rec).incmax = True; ;} break; case 241: #line 2204 "soapcpp2_yacc.y" { (yyval.rec).incmin = False; (yyval.rec).incmax = True; ;} break; case 242: #line 2206 "soapcpp2_yacc.y" { (yyval.rec).incmin = (yyval.rec).incmax = True; ;} break; case 243: #line 2207 "soapcpp2_yacc.y" { (yyval.rec).incmin = False; (yyval.rec).incmax = True; ;} break; case 244: #line 2208 "soapcpp2_yacc.y" { (yyval.rec).incmin = True; (yyval.rec).incmax = False; ;} break; case 245: #line 2209 "soapcpp2_yacc.y" { (yyval.rec).incmin = False; (yyval.rec).incmax = False; ;} break; case 246: #line 2210 "soapcpp2_yacc.y" { (yyval.rec).incmin = False; (yyval.rec).incmax = False; ;} break; case 247: #line 2212 "soapcpp2_yacc.y" { (yyval.rec).incmin = (yyval.rec).incmax = True; ;} break; case 248: #line 2213 "soapcpp2_yacc.y" { (yyval.rec).incmin = True; (yyval.rec).incmax = False; ;} break; case 249: #line 2214 "soapcpp2_yacc.y" { (yyval.rec).incmin = True; (yyval.rec).incmax = False; ;} break; case 250: #line 2223 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(3) - (3)].rec); ;} break; case 251: #line 2224 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 252: #line 2228 "soapcpp2_yacc.y" { (yyval.rec).typ = (yyvsp[(3) - (5)].rec).typ; (yyval.rec).sto = Snone; (yyval.rec).hasval = False; ;} break; case 254: #line 2236 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 255: #line 2239 "soapcpp2_yacc.y" { (yyval.rec).hasval = False; (yyval.rec).typ = mkint(); ;} break; case 256: #line 2243 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 257: #line 2245 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 258: #line 2248 "soapcpp2_yacc.y" { (yyval.rec).hasval = False; (yyval.rec).typ = mkint(); ;} break; case 259: #line 2251 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 260: #line 2253 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 261: #line 2256 "soapcpp2_yacc.y" { (yyval.rec) = iop("|", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 262: #line 2257 "soapcpp2_yacc.y" { (yyval.rec) = iop("^", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 263: #line 2258 "soapcpp2_yacc.y" { (yyval.rec) = iop("&", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 264: #line 2259 "soapcpp2_yacc.y" { (yyval.rec) = relop("==", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 265: #line 2260 "soapcpp2_yacc.y" { (yyval.rec) = relop("!=", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 266: #line 2261 "soapcpp2_yacc.y" { (yyval.rec) = relop("<", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 267: #line 2262 "soapcpp2_yacc.y" { (yyval.rec) = relop("<=", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 268: #line 2263 "soapcpp2_yacc.y" { (yyval.rec) = relop(">", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 269: #line 2264 "soapcpp2_yacc.y" { (yyval.rec) = relop(">=", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 270: #line 2265 "soapcpp2_yacc.y" { (yyval.rec) = iop("<<", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 271: #line 2266 "soapcpp2_yacc.y" { (yyval.rec) = iop(">>", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 272: #line 2267 "soapcpp2_yacc.y" { (yyval.rec) = op("+", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 273: #line 2268 "soapcpp2_yacc.y" { (yyval.rec) = op("-", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 274: #line 2269 "soapcpp2_yacc.y" { (yyval.rec) = op("*", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 275: #line 2270 "soapcpp2_yacc.y" { (yyval.rec) = op("/", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 276: #line 2271 "soapcpp2_yacc.y" { (yyval.rec) = iop("%", (yyvsp[(1) - (3)].rec), (yyvsp[(3) - (3)].rec)); ;} break; case 277: #line 2272 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 278: #line 2275 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (2)].rec).hasval) (yyval.rec).val.i = !(yyvsp[(2) - (2)].rec).val.i; (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).hasval = (yyvsp[(2) - (2)].rec).hasval; ;} break; case 279: #line 2281 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (2)].rec).hasval) (yyval.rec).val.i = ~(yyvsp[(2) - (2)].rec).val.i; (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).hasval = (yyvsp[(2) - (2)].rec).hasval; ;} break; case 280: #line 2287 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (2)].rec).hasval) { if (integer((yyvsp[(2) - (2)].rec).typ)) (yyval.rec).val.i = -(yyvsp[(2) - (2)].rec).val.i; else if (real((yyvsp[(2) - (2)].rec).typ)) (yyval.rec).val.r = -(yyvsp[(2) - (2)].rec).val.r; else typerror("string?"); } (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; (yyval.rec).hasval = (yyvsp[(2) - (2)].rec).hasval; ;} break; case 281: #line 2300 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(2) - (2)].rec); ;} break; case 282: #line 2301 "soapcpp2_yacc.y" { if ((yyvsp[(2) - (2)].rec).typ->type == Tpointer) (yyval.rec).typ = (Tnode*)(yyvsp[(2) - (2)].rec).typ->ref; else { typerror("dereference of non-pointer type"); (yyval.rec).typ = (yyvsp[(2) - (2)].rec).typ; } (yyval.rec).sto = Snone; (yyval.rec).hasval = False; ;} break; case 283: #line 2312 "soapcpp2_yacc.y" { (yyval.rec).typ = mkpointer((yyvsp[(2) - (2)].rec).typ); (yyval.rec).sto = Snone; (yyval.rec).hasval = False; ;} break; case 284: #line 2318 "soapcpp2_yacc.y" { (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).typ = mkint(); (yyval.rec).val.i = (yyvsp[(3) - (4)].rec).typ->width; ;} break; case 285: #line 2324 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(1) - (1)].rec); ;} break; case 286: #line 2327 "soapcpp2_yacc.y" { (yyval.rec) = (yyvsp[(2) - (3)].rec); ;} break; case 287: #line 2328 "soapcpp2_yacc.y" { if (!(p = enumentry((yyvsp[(1) - (1)].sym)))) p = undefined((yyvsp[(1) - (1)].sym)); else (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).typ = p->info.typ; (yyval.rec).val = p->info.val; ;} break; case 288: #line 2337 "soapcpp2_yacc.y" { (yyval.rec).typ = mkint(); (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val.i = (yyvsp[(1) - (1)].i); ;} break; case 289: #line 2343 "soapcpp2_yacc.y" { (yyval.rec).typ = mkfloat(); (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val.r = (yyvsp[(1) - (1)].r); ;} break; case 290: #line 2349 "soapcpp2_yacc.y" { (yyval.rec).typ = mkchar(); (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val.i = (yyvsp[(1) - (1)].c); ;} break; case 291: #line 2355 "soapcpp2_yacc.y" { (yyval.rec).typ = mkstring(); (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val.s = (yyvsp[(1) - (1)].s); ;} break; case 292: #line 2361 "soapcpp2_yacc.y" { (yyval.rec).typ = mkbool(); (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val.i = 0; ;} break; case 293: #line 2367 "soapcpp2_yacc.y" { (yyval.rec).typ = mkbool(); (yyval.rec).hasval = True; (yyval.rec).fixed = False; (yyval.rec).val.i = 1; ;} break; /* Line 1267 of yacc.c. */ #line 5499 "soapcpp2_yacc.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 2375 "soapcpp2_yacc.y" int yywrap(void) { return 1; } /**************************************\ Support routines \**************************************/ static Node op(const char *op, Node p, Node q) { Node r; r.typ = p.typ; r.sto = Snone; if (p.hasval && q.hasval) { if (integer(p.typ) && integer(q.typ)) switch (op[0]) { case '|': r.val.i = p.val.i | q.val.i; break; case '^': r.val.i = p.val.i ^ q.val.i; break; case '&': r.val.i = p.val.i & q.val.i; break; case '<': r.val.i = p.val.i << q.val.i; break; case '>': r.val.i = p.val.i >> q.val.i; break; case '+': r.val.i = p.val.i + q.val.i; break; case '-': r.val.i = p.val.i - q.val.i; break; case '*': r.val.i = p.val.i * q.val.i; break; case '/': r.val.i = q.val.i != 0 ? p.val.i / q.val.i : 0; break; case '%': r.val.i = q.val.i != 0 ? p.val.i % q.val.i : 0; break; default: typerror(op); } else if (real(p.typ) && real(q.typ)) switch (op[0]) { case '+': r.val.r = p.val.r + q.val.r; break; case '-': r.val.r = p.val.r - q.val.r; break; case '*': r.val.r = p.val.r * q.val.r; break; case '/': r.val.r = q.val.r != 0 ? p.val.r / q.val.r : 0.0; break; default: typerror(op); } else semerror("invalid constant operation"); r.hasval = True; r.fixed = False; } else { r.typ = mgtype(p.typ, q.typ); r.hasval = False; } return r; } static Node iop(const char *iop, Node p, Node q) { if (integer(p.typ) && integer(q.typ)) return op(iop, p, q); typerror("integer operands only"); return p; } static Node relop(const char *op, Node p, Node q) { Node r; r.typ = mkint(); r.sto = Snone; r.hasval = True; r.fixed = False; r.val.i = 1; sprintf(errbuf, "comparison '%s' not evaluated and considered true", op); semwarn(errbuf); if (p.typ->type != Tpointer || p.typ != q.typ) r.typ = mgtype(p.typ, q.typ); return r; } /**************************************\ Scope management \**************************************/ /* mkscope - initialize scope stack with a new table and offset */ static void mkscope(Table *table, int offset) { sp = stack-1; enterscope(table, offset); } /* enterscope - enter a new scope by pushing a new table and offset on the stack */ static void enterscope(Table *table, int offset) { if (++sp == stack + MAXNEST) execerror("maximum scope nesting depth exceeded"); sp->table = table; sp->entry = NULL; sp->node.typ = mkint(); sp->node.sto = Snone; sp->val = 0; sp->offset = offset; sp->grow = True; /* by default, offset grows */ sp->mask = False; } /* exitscope - exit a scope by popping the table and offset from the stack */ static void exitscope(void) { check(sp-- != stack, "exitscope() has no matching enterscope()"); } /**************************************\ Undefined symbol \**************************************/ static Entry* undefined(Symbol *sym) { Entry *p; sprintf(errbuf, "undefined identifier '%s'", sym->name); semwarn(errbuf); p = enter(sp->table, sym); p->level = GLOBAL; p->info.typ = mkint(); p->info.sto = Sextern; p->info.hasval = False; return p; } /* mgtype - return most general type among two numerical types */ Tnode* mgtype(Tnode *typ1, Tnode *typ2) { if (numeric(typ1) && numeric(typ2)) { if (typ1->type < typ2->type) return typ2; } else { typerror("non-numeric type"); } return typ1; } /**************************************\ Type checks \**************************************/ static int integer(Tnode *typ) { switch (typ->type) { case Tchar: case Tshort: case Tint: case Tlong: return True; default: break; } return False; } static int real(Tnode *typ) { switch (typ->type) { case Tfloat: case Tdouble: case Tldouble: return True; default: break; } return False; } static int numeric(Tnode *typ) { return integer(typ) || real(typ); } /**************************************\ Type additions \**************************************/ static void add_fault(void) { Table *t; Entry *p1, *p2, *p3, *p4; Symbol *s1, *s2, *s3, *s4; imported = NULL; s1 = lookup("SOAP_ENV__Code"); p1 = entry(classtable, s1); if (!p1 || !p1->info.typ->ref) { t = mktable(NULL); if (!p1) { p1 = enter(classtable, s1); p1->info.typ = mkstruct(t, 3*4); p1->info.typ->id = s1; } else { p1->info.typ->ref = t; } p2 = enter(t, lookup("SOAP_ENV__Value")); p2->info.typ = qname; p2->info.minOccurs = 0; p2 = enter(t, lookup("SOAP_ENV__Subcode")); p2->info.typ = mkpointer(p1->info.typ); p2->info.minOccurs = 0; } s2 = lookup("SOAP_ENV__Detail"); p2 = entry(classtable, s2); if (!p2 || !p2->info.typ->ref) { t = mktable(NULL); if (!p2) { p2 = enter(classtable, s2); p2->info.typ = mkstruct(t, 3*4); p2->info.typ->id = s2; } else { p2->info.typ->ref = t; } p3 = enter(t, lookup("__any")); p3->info.typ = xml; p3->info.minOccurs = 0; p3 = enter(t, lookup("__type")); p3->info.typ = mkint(); p3->info.minOccurs = 0; p3 = enter(t, lookup("fault")); p3->info.typ = mkpointer(mkvoid()); p3->info.minOccurs = 0; custom_fault = 0; } s4 = lookup("SOAP_ENV__Reason"); p4 = entry(classtable, s4); if (!p4 || !p4->info.typ->ref) { t = mktable(NULL); if (!p4) { p4 = enter(classtable, s4); p4->info.typ = mkstruct(t, 4); p4->info.typ->id = s4; } else { p4->info.typ->ref = t; } p3 = enter(t, lookup("SOAP_ENV__Text")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; } s3 = lookup("SOAP_ENV__Fault"); p3 = entry(classtable, s3); if (!p3 || !p3->info.typ->ref) { t = mktable(NULL); if (!p3) { p3 = enter(classtable, s3); p3->info.typ = mkstruct(t, 9*4); p3->info.typ->id = s3; } else { p3->info.typ->ref = t; } p3 = enter(t, lookup("faultcode")); p3->info.typ = qname; p3->info.minOccurs = 0; p3 = enter(t, lookup("faultstring")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("faultactor")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("detail")); p3->info.typ = mkpointer(p2->info.typ); p3->info.minOccurs = 0; p3 = enter(t, s1); p3->info.typ = mkpointer(p1->info.typ); p3->info.minOccurs = 0; p3 = enter(t, s4); p3->info.typ = mkpointer(p4->info.typ); p3->info.minOccurs = 0; p3 = enter(t, lookup("SOAP_ENV__Node")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("SOAP_ENV__Role")); p3->info.typ = mkstring(); p3->info.minOccurs = 0; p3 = enter(t, lookup("SOAP_ENV__Detail")); p3->info.typ = mkpointer(p2->info.typ); p3->info.minOccurs = 0; } } static void add_soap(void) { Symbol *s = lookup("soap"); p = enter(classtable, s); p->info.typ = mkstruct(NULL, 0); p->info.typ->transient = -2; p->info.typ->id = s; p->filename = "(built-in)"; p->lineno = 0; } static void add_XML(void) { Symbol *s = lookup("_XML"); s->token = TYPE; p = enter(typetable, s); xml = p->info.typ = mksymtype(mkstring(), s); p->info.sto = Stypedef; p->filename = "(built-in)"; p->lineno = 0; } static void add_qname(void) { Symbol *s = lookup("_QName"); s->token = TYPE; p = enter(typetable, s); qname = p->info.typ = mksymtype(mkstring(), s); p->info.sto = Stypedef; p->filename = "(built-in)"; p->lineno = 0; } static void add_header(void) { Table *t; Entry *p; Symbol *s = lookup("SOAP_ENV__Header"); imported = NULL; p = entry(classtable, s); if (!p || !p->info.typ->ref) { t = mktable(NULL); if (!p) p = enter(classtable, s); p->info.typ = mkstruct(t, 0); p->info.typ->id = s; custom_header = 0; } } static void add_response(Entry *fun, Entry *ret) { Table *t; Entry *p, *q; Symbol *s; size_t i = 0, j, n = strlen(fun->sym->name); char *r = (char*)emalloc(n+100); strcpy(r, fun->sym->name); strcat(r, "Response"); do { for (j = 0; j < i; j++) r[n+j+8] = '_'; r[n+i+8] = '\0'; if (!(s = lookup(r))) s = install(r, ID); i++; } while (entry(classtable, s)); free(r); t = mktable(NULL); q = enter(t, ret->sym); q->info = ret->info; if (q->info.typ->type == Treference) q->info.typ = (Tnode*)q->info.typ->ref; p = enter(classtable, s); p->info.typ = mkstruct(t, 4); p->info.typ->id = s; fun->info.typ->response = p; } static void add_result(Tnode *typ) { Entry *p; if (!typ->ref || !((Tnode*)typ->ref)->ref) { semwarn("response struct/class must be declared before used in function prototype"); return; } for (p = ((Table*)((Tnode*)typ->ref)->ref)->list; p; p = p->next) if (((int)p->info.sto & (int)Sreturn)) return; for (p = ((Table*)((Tnode*)typ->ref)->ref)->list; p; p = p->next) { if (p->info.typ->type != Tfun && !((int)p->info.sto & (int)Sattribute) && !is_transient(p->info.typ) && !((int)p->info.sto & ((int)Sprivate | (int)Sprotected))) p->info.sto = (Storage)((int)p->info.sto | (int)Sreturn); return; } } static void add_request(Symbol *sym, Scope *sp) { Entry *p; unlinklast(sp->table); if ((p = entry(classtable, sym))) { if (p->info.typ->ref) { sprintf(errbuf, "service operation name clash: struct/class '%s' already declared at %s:%d", sym->name, p->filename, p->lineno); semerror(errbuf); } else { p->info.typ->ref = sp->table; p->info.typ->width = sp->offset; } } else { p = enter(classtable, sym); p->info.typ = mkstruct(sp->table, sp->offset); p->info.typ->id = sym; } if (p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (q->info.typ->type == Treference || q->info.typ->type == Trvalueref) { sprintf(errbuf, "parameter '%s' of service operation function '%s()' in %s:%d cannot be passed by reference: use a pointer instead", q->sym->name, sym->name, q->filename, q->lineno); semwarn(errbuf); } else if (((int)q->info.sto & ((int)Sconst | (int)Sconstptr))) { if (!is_string(q->info.typ) && !is_wstring(q->info.typ)) { sprintf(errbuf, "parameter '%s' of service operation function '%s()' in %s:%d cannot be declared const", q->sym->name, sym->name, q->filename, q->lineno); semwarn(errbuf); } } else if (((int)q->info.sto & ~((int)Sattribute | (int)Sextern | (int)Sspecial))) { sprintf(errbuf, "invalid parameter '%s' of service operation function '%s()' in %s:%d", q->sym->name, sym->name, q->filename, q->lineno); semwarn(errbuf); } } } } /**************************************\ Add pragma \**************************************/ static void add_pragma(const char *s) { Pragma **pp; for (pp = &pragmas; *pp; pp = &(*pp)->next) ; *pp = (Pragma*)emalloc(sizeof(Pragma)); (*pp)->pragma = s; (*pp)->next = NULL; } gsoap-2.8.60/gsoap/src/error2.h0000644000175000017500000000363313227173557015565 0ustar ellertellert/* error2.h Error handling. gSOAP XML Web services tools Copyright (C) 2000-2008, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ extern char errbuf[]; #ifdef WIN32_WITHOUT_SOLARIS_FLEX extern void soapcpp2error(const char*); #else extern void yyerror(const char*); #endif extern void lexerror(const char*); extern void synerror(const char *); extern void semerror(const char *); extern void semwarn(const char *); extern void compliancewarn(const char *); extern void typerror(const char*); extern void execerror(const char*); extern void progerror(const char*, const char*, int); extern int errstat(void); gsoap-2.8.60/gsoap/src/Makefile.am0000644000175000017500000000116213227173557016230 0ustar ellertellert####### This is the input file for automake, which will generate Makefile.in ########## ## not a GNU package. You can remove this line, if ## you have all needed files, that a GNU package needs AUTOMAKE_OPTIONS = foreign 1.4 #LIBS= AM_YFLAGS=-d -v AM_LFLAGS=$(LEX_FLAGS) bin_PROGRAMS=soapcpp2 soapcpp2_CFLAGS=$(BISON_DEFINE) $(LEX_DEFINE) $(C_DEBUG_FLAGS) $(SOAPCPP2_IMPORTPATH) -D$(platform) soapcpp2_LDADD=$(YACC_LIB) $(LEXLIB) soapcpp2_SOURCES= soapcpp2_yacc.y soapcpp2_yacc.h soapcpp2_lex.l symbol2.c error2.c init2.c soapcpp2.c CLEANFILES= *~ soapcpp2_lex.c soapcpp2_yacc.c soapcpp2_yacc.h soapcpp2_yacc.output gsoap-2.8.60/gsoap/src/soapcpp2.h0000644000175000017500000003365113227173557016104 0ustar ellertellert/* soapcpp2.h Common declarations. -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2017, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include #include #include #include #include #include #include #include "error2.h" #ifndef VERSION # define VERSION "2.8.60" /* Current version */ # define GSOAP_VERSION 20860 #endif #ifdef WIN32 # pragma warning(disable : 4996) # ifndef WITH_BISON # define WITH_BISON # endif #endif /* #define DEBUG */ /* uncomment to debug */ #ifdef DEBUG # define check(expr, msg) (void)((expr) ? 0 : (progerror(msg, __FILE__, __LINE__), 0)) # define DBGLOG(DBGCMD) { DBGCMD; } #else # define check(expr, msg) (void)(expr) # define DBGLOG(DBGCMD) #endif #ifdef WIN32 # ifdef WITH_BISON # ifdef WIN32_WITHOUT_SOLARIS_FLEX # define yyparse soapcpp2parse # define yylex soapcpp2lex # define yyerror soapcpp2error # define yylval soapcpp2lval # define yychar soapcpp2char # define yydebug soapcpp2debug # define yynerrs soapcpp2nerrs # define yylineno soapcpp2lineno # define yytext soapcpp2text # define yyin soapcpp2in # define yywrap soapcpp2wrap # endif # endif #endif #ifdef WIN32 # define SOAP_PATHCAT "\\" # define SOAP_PATHSEP ";" # define LONG64 __int64 #else # define SOAP_PATHCAT "/" # define SOAP_PATHSEP ":" # define LONG64 long long #endif #ifndef ULONG64 # define ULONG64 unsigned LONG64 #endif #if defined(WIN32) # define SOAP_LONG_FORMAT "%I64d" # define SOAP_ULONG_FORMAT "%I64u" # define SOAP_XLONG_FORMAT "%I64x" #elif defined(TRU64) # define SOAP_LONG_FORMAT "%ld" # define SOAP_ULONG_FORMAT "%lu" # define SOAP_XLONG_FORMAT "%lx" #endif #ifndef SOAP_LONG_FORMAT # define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */ #endif #ifndef SOAP_ULONG_FORMAT # define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */ #endif #ifndef SOAP_XLONG_FORMAT # define SOAP_XLONG_FORMAT "%llx" /* printf format for unsigned 64 bit hex ints */ #endif extern int yylineno; typedef enum Bool {False, True} Bool; typedef int Token; typedef enum Type { Tnone, Tvoid, Tchar, /* primitive types from here*/ Twchar, Tshort, Tint, Tlong, Tllong, Tfloat, Tdouble, Tldouble, Tuchar, Tushort, Tuint, Tulong, Tullong, Tsize, Ttime, Tenum, Tenumsc, Tclass, /* compound types from here */ Tstruct, Tunion, Tpointer, /* pointer T* */ Treference, /* reference T& */ Trvalueref, /* C+11 rvalue reference T&& */ Tarray, /* fixed size array T[N] */ Ttemplate, /* template class */ Tfun } Type; #define TYPES (Tfun+1) /* number of type (operators) enumerated above */ typedef enum Storage { Snone = 0, Sauto = 0x000001, Sregister = 0x000002, Sstatic = 0x000004, Sextern = 0x000008, Stypedef = 0x000010, Svirtual = 0x000020, Sconst = 0x000040, Sconstobj = 0x000080, Sfinal = 0x000100, Soverride = 0x000200, Sconstptr = 0x000400, Sfriend = 0x000800, Sinline = 0x001000, Sabstract = 0x002000, SmustUnderstand = 0x004000, Sreturn = 0x008000, Sattribute = 0x010000, Sspecial = 0x020000, Sexplicit = 0x040000, Sprivate = 0x080000, Sprotected = 0x100000, Smutable = 0x200000 } Storage; typedef enum Level { INTERNAL, GLOBAL, PARAM, LOCAL } Level; #define mknone() mktype(Tnone, NULL, 0) #define mkvoid() mktype(Tvoid, NULL, 0) #define mkbool() mktype(Tenum, booltable, 4) #define mkchar() mktype(Tchar, NULL, 1) /* int8_t */ #define mkwchart() mktype(Twchar, NULL, 4) /* wchar_t */ #define mkshort() mktype(Tshort, NULL, 2) /* int32_t */ #define mkint() mktype(Tint, NULL, 4) /* int32_t */ #define mklong() mktype(Tlong, NULL, 8) /* int32_t */ #define mkllong() mktype(Tllong, NULL, 8) /* int64_t */ #define mkfloat() mktype(Tfloat, NULL, 4) #define mkdouble() mktype(Tdouble, NULL, 8) #define mkldouble() mktype(Tldouble, NULL, 16) /* long double */ #define mkuchar() mktype(Tuchar, NULL, 1) /* uint8_t unsigned char */ #define mkushort() mktype(Tushort, NULL, 2) /* utin16_t unsigned short */ #define mkuint() mktype(Tuint, NULL, 4) /* uint32_t unsigned int */ #define mkulong() mktype(Tulong, NULL, 8) /* uint64_t unsigned long */ #define mkullong() mktype(Tullong, NULL, 8) /* uint64_t unsigned long long */ #define mksize() mktype(Tsize, NULL, 8) /* transient size_t */ #define mktimet() mktype(Ttime, NULL, 4) #define mkenum(t) mktype(Tenum, t, 4) #define mkenumsc(t) mktype(Tenumsc, t, 4) #define mkmask(t) mktype(Tenum, t, 9) #define mkmasksc(t) mktype(Tenumsc, t, 9) #define mkpointer(t) mktype(Tpointer, t, 4) #define mkreference(t) mktype(Treference,t, 4) #define mkrvalueref(t) mktype(Trvalueref,t, 4) #define mkclass(t, w) mktype(Tclass, t, w) #define mkstruct(t, w) mktype(Tstruct, t, w) #define mkunion(t, w) mktype(Tunion, t, w) #define mkarray(t, w) mktype(Tarray, t, w) #define mkfun(t) mktype(Tfun, t, 0) #define mkstring() mkpointer(mkchar()) typedef struct Symbol { char *name; Token token; struct Symbol *next; } Symbol; Symbol *install(const char*, Token), *lookup(const char*), *gensym(const char*), *gensymidx(const char*, int); typedef struct Tnode { Type type; void *ref; Symbol *id; /* struct/class/union/enum name */ Symbol *base; /* base class name */ Symbol *sym; /* typedef name */ Symbol *restriction; /* restriction via typedef base id */ Symbol *synonym; /* synonymous typedef base name for typedef base id */ Symbol *extsym; /* typedef sym of external type w/ custom serializer */ struct Entry *response; /* funcs only: points to response struct */ int width; int transient; const char *imported; struct Tnode *next; Bool visited; Bool recursive; /* recursive data type */ Bool generated; Bool wsdl; int num; Bool hasmin; Bool hasmax; Bool incmin; Bool incmax; double min; double max; int property; const char *pattern; } Tnode; typedef union Value { LONG64 i; double r; const char *s; } Value; typedef struct IDinfo { Tnode *typ; Storage sto; Bool hasval; /* if true, identifier has a default value */ Bool ptrval; /* if true, identifier is a pointer to a default value */ Bool fixed; /* if true and hasval, identifier has a fixed value */ Value val; /* ... with this value */ int offset; LONG64 minOccurs; LONG64 maxOccurs; Bool nillable; } IDinfo; typedef struct Entry { Symbol *sym; const char *tag; IDinfo info; Level level; const char *filename; int lineno; struct Entry *next; } Entry; typedef struct Table { Symbol *sym; Level level; Entry *list; struct Table *prev; } Table; typedef struct FNinfo { Tnode *ret; Table *args; } FNinfo; typedef struct Node { Tnode *typ; Storage sto; Bool hasval; /* if true, this node has a default value */ Bool fixed; /* if true and hasval, this node has a fixed value */ Value val; /* ... this is the value */ Bool hasmin; Bool hasmax; Bool incmin; Bool incmax; LONG64 minOccurs; LONG64 maxOccurs; double min; double max; Bool nillable; int property; const char *pattern; } Node; #define ACTION 0x0000 #define REQUEST_ACTION 0x0001 #define RESPONSE_ACTION 0x0002 #define FAULT_ACTION 0x0004 #define HDRIN 0x0010 #define HDROUT 0x0020 #define MIMEIN 0x0040 #define MIMEOUT 0x0080 #define COMMENT 0x0100 #define ENCODING 0x0200 #define RESPONSE_ENCODING 0x0400 #define STYLE 0x0800 #define FAULT 0x1000 #define PROTOCOL 0x2000 typedef struct Data { struct Data *next; const char *name; const char *text; } Data; typedef struct Method { struct Method *next; const char *name; short mess; /* see #defines above */ const char *part; } Method; typedef struct Service { struct Service *next; const char *ns; const char *name; const char *porttype; const char *portname; const char *binding; const char *definitions; const char *transport; const char *URL; const char *executable; const char *import; const char *URI; const char *URI2; const char *WSDL; const char *style; const char *encoding; const char *protocol; int xsi_type; const char *elementForm; const char *attributeForm; const char *documentation; struct Method *list; struct Data *data; } Service; typedef struct XPath { struct XPath *next; const char *name; const char *path; } XPath; typedef struct Pragma { struct Pragma *next; const char *pragma; } Pragma; extern Entry *enter(Table*, Symbol*), *entry(Table*, Symbol*), *reenter(Table*, Symbol*), *enumentry(Symbol*); extern int merge(Table*, Table*); extern Table *mktable(Table*); extern Tnode *mkmethod(Tnode*, Table*); extern char *emalloc(size_t); extern Tnode *mktype(Type, void*, int); extern Tnode *mksymtype(Tnode*, Symbol*); extern Tnode *mktemplate(Tnode*, Symbol*); extern int is_transient(Tnode*); extern int is_response(Tnode*); extern void set_namespace(const char*); extern Table *typetable, *enumtable, *classtable, *booltable, *templatetable; extern void compile(Table*); extern void freetable(Table*); extern Entry *unlinklast(Table*); extern FILE *fmsg; extern int soap_version; extern const char *copt; extern int aflag; extern int Aflag; extern int bflag; extern int cflag; extern int c11flag; extern int Cflag; extern int eflag; extern int Ecflag; extern int Edflag; extern int Etflag; extern unsigned long fflag; extern int gflag; extern int iflag; extern int jflag; extern int mflag; extern int nflag; extern int nflag; extern int lflag; extern int Lflag; extern int Qflag; extern int sflag; extern int rflag; extern int Sflag; extern int Tflag; extern int tflag; extern int uflag; extern int vflag; extern int wflag; extern int xflag; extern int yflag; extern int zflag; extern char dirpath[1024]; extern const char *filename; extern const char *prefix; extern const char *fprefix; extern const char *importpath; extern int custom_header; extern int custom_fault; extern Pragma *pragmas; extern Service *services; extern XPath *xpaths; extern const char *namespaceid; extern int transient; extern int imports; extern const char *imported; extern int typeNO; extern const char *envURI; extern const char *encURI; extern const char *rpcURI; extern const char *xsiURI; extern const char *xsdURI; gsoap-2.8.60/gsoap/src/symbol2.c0000644000175000017500000344241113227173557015740 0ustar ellertellert/* symbol2.c Symbolic processing: type analysis and code generation. -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "soapcpp2.h" #ifdef HAVE_CONFIG_H #include "soapcpp2_yacc.h" #else #include "soapcpp2_yacc.tab.h" #endif const char *envURI = "http://schemas.xmlsoap.org/soap/envelope/"; const char *encURI = "http://schemas.xmlsoap.org/soap/encoding/"; const char *rpcURI = "http://www.w3.org/2003/05/soap-rpc"; const char *xsiURI = "http://www.w3.org/2001/XMLSchema-instance"; const char *xsdURI = "http://www.w3.org/2001/XMLSchema"; const char *tmpURI = "http://tempuri.org"; static Symbol *symlist = (Symbol*) 0; /* pointer to linked list of symbols */ static Symbol *nslist = (Symbol*) 0; /* pointer to linked list of namespace prefix symbols */ static Tnode *Tptr[TYPES]; const char *namespaceid = NULL; static unsigned long idnum = 0; Service *services = NULL; XPath *xpaths = NULL; /* TODO? */ FILE *fout = NULL, *fhead = NULL, *fclient = NULL, *fserver = NULL, *fheader = NULL, *freport = NULL, *flib = NULL, *fmatlab = NULL, *fmheader = NULL; int partnum = 0; int typeNO = 1; /* unique nonzero type no. assigned to all types */ static int is_anytype_flag = 0; /* anytype is used */ static int is_anyType_flag = 0; /* anyType XML DOM is used */ static int has_nsmap = 0; static char soapStub[1024]; static char soapH[1024]; static char soapC[1024]; static char soapClient[1024]; static char soapServer[1024]; static char soapClientLib[1024]; static char soapServerLib[1024]; static char soapReadme[1024]; static char soapProxyH[1024]; static char soapProxyC[1024]; static char soapServiceH[1024]; static char soapServiceC[1024]; static char soapTester[1024]; static char pathsoapTester[1024]; static char pathsoapStub[1024]; static char pathsoapH[1024]; static char pathsoapC[1024]; static char pathsoapClient[1024]; static char pathsoapServer[1024]; static char pathsoapClientLib[1024]; static char pathsoapServerLib[1024]; static char pathsoapReadme[1024]; static char pathsoapProxyH[1024]; static char pathsoapProxyC[1024]; static char pathsoapServiceH[1024]; static char pathsoapServiceC[1024]; static char soapMatlab[1024]; static char pathsoapMatlab[1024]; static char soapMatlabHdr[1024]; static char pathsoapMatlabHdr[1024]; int tagcmp(const char *s, const char *t); int tagncmp(const char *s, const char *t, size_t n); int property(Tnode*); void property_pattern(Tnode*, const char*); int is_qname(Tnode*); int is_stdqname(Tnode*); long minlen(Tnode *typ); long maxlen(Tnode *typ); int is_soap12(const char*); int has_detail_string(void); int has_Detail_string(void); void needs_lang(Entry *e); int is_mutable(Entry *e); int is_header_or_fault(Tnode *typ); int is_body(Tnode *typ); int is_volatile(Tnode* typ); int is_untyped(Tnode* typ); int is_primclass(Tnode* typ); int is_imported(Tnode* typ); int is_smart(Tnode*); int is_smart_shared(Tnode*); const char * make_shared(Tnode*); int is_container(Tnode* typ); int is_template(Tnode* typ); int is_mask(Tnode* typ); int is_attachment(Tnode* typ); int is_void(Tnode* typ); int has_external(Tnode *typ); int has_volatile(Tnode *typ); int is_unmatched(Symbol *sym); int is_invisible(const char *name); int is_invisible_empty(Tnode *p); int is_element(Tnode *typ); int is_eq_nons(const char *s, const char *t); int is_eq(const char *s, const char *t); int is_item(Entry *p); int is_self(Entry *p); const char *cstring(const char*, int); const char *xstring(const char*); const char *get_mxClassID(Tnode*); const char *t_ident(Tnode*); const char *c_ident(Tnode*); const char *ident(const char*); const char *soap_type(Tnode*); const char *soap_union_member(Tnode*, Entry*); const char *c_storage(Storage); const char *c_const(Storage); const char *c_init(Entry*); const char *c_init_a(Entry*, const char*); const char *c_type(Tnode*); const char *c_type_constptr_id(Tnode*, const char*); const char *c_type_id(Tnode*, const char*); const char *c_type_sym(Tnode*); const char *c_type_synonym_id(Tnode*, const char*); const char *xsi_type(Tnode*); const char *xsi_type_u(Tnode*); const char *the_type(Tnode*); const char *wsdl_type(Tnode*, const char*); const char *base_type(Tnode*, const char*); const char *xml_tag(Tnode*); const char *ns_qualifiedElement(Tnode*); const char *ns_qualifiedElementName(const char*); const char *ns_qualifiedAttribute(Tnode*); const char *ns_qualifiedAttributeName(const char*); const char *ns_tag_convert(Entry*); const char *ns_convert(const char*); const char *field(Entry *p, const char *ns); const char *field_overridden(Table *t, Entry *p, const char *ns); const char *ns_add(Entry *p, const char *ns); const char *ns_addx(const char *tag, const char *ns); const char *ns_add_overridden(Table *t, Entry *p, const char *ns); const char *ns_tag_remove(Entry*); const char *ns_remove(const char*); const char *ns_remove1(const char*); const char *ns_remove2(const char*, const char*); const char *ns_remove3(const char*, const char*); const char *res_remove(const char*); const char *ns_name(const char*); const char *ns_cname(const char*, const char*); const char *ns_fname(const char*); int has_class(Tnode*); const char *union_member(Tnode*); int has_union(Tnode*); void gen_constructor(FILE *fd, Tnode*); int has_constructor(Tnode*); int has_destructor(Tnode*); int has_getter(Tnode*); int has_setter(Tnode*); int has_ns(Tnode*); int has_ns_t(Tnode*); int has_ns_eq(const char*, const char*); const char *strict_check(void); void fixed_check(FILE*, Entry*, Table*, const char*); const char *ns_of(const char*); int eq_ns(const char*, const char*); const char *prefix_of(const char*); int has_offset(Tnode*); int is_bool(Tnode*); int is_boolean(Tnode*); int reflevel(Tnode *typ); Tnode* reftype(Tnode *typ); int is_response(Tnode*); int is_XML(Tnode*); int is_stdXML(Tnode *p); Entry *get_response(Tnode*); const char *kind_of(Tnode*); int is_primitive_or_string(Tnode*); int is_primitive(Tnode*); Entry *is_discriminant(Tnode*); Entry *is_dynamic_array(Tnode*); int is_transient(Tnode*); int is_external(Tnode*); int is_anyType(Tnode*); int is_anyAttribute(Tnode*); int is_binary(Tnode*); int is_hexBinary(Tnode*); int is_fixedstring(Tnode*); int is_string(Tnode*); int is_wstring(Tnode*); int is_stdstring(Tnode*); int is_stdwstring(Tnode*); int is_stdstr(Tnode*); int is_typedef(Tnode*); int is_restriction(Tnode*); int has_restriction_base(Tnode *typ, const char *base); int is_synonym(Tnode*); int get_dimension(Tnode*); const char *has_soapref(Tnode*); int is_soapref(Tnode*); int is_document(const char*); int is_literal(const char*); int is_keyword(const char *); int is_repetition(Entry*); int is_choice(Entry*); int required_choice(Tnode*); int is_sequence(Entry*); int is_anytype(Entry*); const char *xsi_type_Tarray(Tnode*); const char *xsi_type_Darray(Tnode*); void matlab_def_table(Table*); void generate_defs(void); void generate_type(Tnode *); int no_of_var(Tnode*); const char *pointer_stuff(Tnode*); void in_defs(void); void in_defs2(void); void in_defs3(void); void out_defs(void); void mark_defs(void); void dup_defs(void); void del_defs(void); void in_attach(void); void soap_serialize(Tnode*); void soap_traverse(Tnode*); void soap_default(Tnode*); void soap_put(Tnode*); void soap_out(Tnode*); void soap_out_Darray(Tnode *); void soap_get(Tnode*); void soap_in(Tnode*); void soap_in_Darray(Tnode *); void soap_instantiate(Tnode *); void soap_dup(Tnode *); void soap_del(Tnode *); int get_Darraydims(Tnode *typ); const char* get_Darraysize(const char *a, int d); const char *nillable(Entry*); const char *nillable_ref(Entry*); void soap_serve(Table*); void generate_proto(FILE*, Table*, Entry*); /* void generate_call(Table*, Entry*); void generate_server(Table*, Entry*); */ void detect_cycles(void); void detect_recursive_type(Tnode*); void generate_header(Table*); void get_namespace_prefixes(void); void generate_schema(Table*); void gen_schema(FILE*, Table*, const char*, const char*, int, const char*, const char*); void gen_schema_type(FILE *, Table*, Entry *, const char*, const char*, int, const char*, const char*); void gen_report_hr(); void gen_report_operation(const char *name, Entry *method, int service); void gen_report_type(Tnode*, const char*); void gen_report_type_doc(Entry *); void gen_report_members(Entry *type, const char*, const char*); void gen_report_member(Entry*, Entry*); void gen_method_documentation(FILE *fd, Entry *p, const char *ns); void gen_type_documentation(FILE *fd, Entry *type, const char *ns); int gen_member_documentation(FILE *fd, Symbol *type, Entry *member, const char *ns, int scope); void gen_text(FILE *fd, const char *s); void gen_schema_elements_attributes(FILE *fd, Table *t, const char *ns, const char *ns1, const char *encoding, const char *style); void gen_schema_elements(FILE *fd, Tnode *p, const char *ns, const char *ns1); int gen_schema_element(FILE *fd, Tnode *p, Entry *q, const char *ns, const char *ns1); void gen_schema_attributes(FILE *fd, Tnode *p, const char *ns, const char *ns1); void gen_wsdl(FILE*, Table*, const char*, const char*, const char*, const char*, const char*, const char*, const char*, const char*); const char *default_value(Entry*); const char *set_default_value(Entry*); void gen_nsmap(FILE*); void gen_proxy(FILE*, Table*, Symbol*, const char*, const char*); void gen_object(FILE*, Table*, const char*); void gen_proxy_header(FILE*, Table*, Symbol*, const char*); void gen_proxy_code(FILE*, Table*, Symbol*, const char*); void gen_object_header(FILE*, Table*, Symbol*, const char*); void gen_object_code(FILE*, Table*, Symbol*, const char*); void gen_method(FILE *fd, Entry *method, int server); void gen_report_params(Entry *p, Entry *result, int server); void gen_report_req_params(Tnode *typ); void gen_report_set_params(Tnode *typ); void gen_params_ref(FILE *fd, Table *params, Entry *result, int flag); void gen_params(FILE *fd, Table *params, Entry *result, int flag); void gen_args(FILE *fd, Table *params, Entry *result, int flag); void gen_query_url(FILE *fd, Table *params, int soap); void gen_query_url_type(FILE *fd, Tnode *typ, const char *name, const char *ptr, const char *idx); void gen_query_form(FILE *fd, Table *params); void gen_query_form_type(FILE *fd, Tnode *typ, const char *name, const char *ptr, const char *idx); void gen_call_proto(FILE *fd, Entry *method); void gen_call_method(FILE *fd, Entry *method, const char *name); void gen_serve_method(FILE *fd, Table *table, Entry *param, const char *name); void gen_data(const char*, Table*, const char*, const char*); FILE *gen_env(const char*, const char*, int, const char*, int); void gen_xmlns(FILE*, int soap); void gen_field(FILE*, int, Entry*, const char*, const char*, const char*, int, int); void gen_val(FILE*, int, Tnode*, const char*, const char*, const char*, int); void gen_atts(FILE*, Table*, const char*, const char*, const char*); /* install - add new symbol */ Symbol * install(const char *name, Token token) { Symbol *p; p = (Symbol*)emalloc(sizeof(Symbol)); p->name = (char*)emalloc(strlen(name)+1); strcpy(p->name, name); p->token = token; p->next = symlist; symlist = p; return p; } /* lookup - search for an identifier's name. If found, return pointer to symbol table entry. Return pointer 0 if not found. */ Symbol * lookup(const char *name) { Symbol *p; for (p = symlist; p; p = p->next) if (!strcmp(p->name, name)) return p; return NULL; } /* gensymidx - generate new symbol from base name and index */ Symbol * gensymidx(const char *base, int idx) { char buf[1024]; Symbol *s; sprintf(buf, "%s_%d", base, idx); s = lookup(buf); if (s) return s; return install(buf, ID); } /* gensym - generate new symbol from base name */ Symbol * gensym(const char *base) { static int num = 1; return gensymidx(base, num++); } /* mktable - make a new symbol table with a pointer to a previous table */ Table * mktable(Table *table) { Table *p; p = (Table*)emalloc(sizeof(Table)); p->sym = lookup("/*?*/"); p->list = (Entry*) 0; if (table == (Table*) 0) p->level = INTERNAL; else p->level = (enum Level)(((int)table->level) + 1); p->prev = table; return p; } /* mkmethod - make a new method by calling mktype */ Tnode * mkmethod(Tnode *ret, Table *args) { FNinfo *fn = (FNinfo*)emalloc(sizeof(FNinfo)); fn->ret = ret; fn->args = args; return mktype(Tfun, fn, 0); } /* freetable - free space by removing a table */ void freetable(Table *table) { Entry *p, *q; if (table == (Table*) 0) return; for (p = table->list; p != (Entry*) 0; p = q) { q = p->next; free(p); } free(table); } /* unlinklast - unlink last entry added to table */ Entry * unlinklast(Table *table) { Entry **p, *q; if (table == (Table*)0) return (Entry*)0; for (p = &table->list; *p != (Entry*)0 && (*p)->next != (Entry*)0; p = &(*p)->next) ; q = *p; *p = (Entry*)0; return q; } /* enter - enter a symbol in a table. Error if already in the table */ Entry * enter(Table *table, Symbol *sym) { Entry *p, *q = NULL; Storage sto = Snone; again: for (p = table->list; p; q = p, p = p->next) { if (p->sym == sym) { if (p->info.typ->type != Tfun) { char *s; sprintf(errbuf, "Duplicate declaration of '%s' (already declared at line %d), changing conflicting identifier name to '%s_'", sym->name, p->lineno, sym->name); semwarn(errbuf); s = (char*)emalloc(strlen(sym->name) + 2); strcpy(s, sym->name); strcat(s, "_"); sym = lookup(s); if (!sym) sym = install(s, ID); free(s); goto again; } if (p->level == GLOBAL) { if (((int)p->info.sto & (int)Sextern)) { sto = p->info.sto; break; } else { sprintf(errbuf, "Duplicate declaration of '%s' (already declared at line %d)", sym->name, p->lineno); semwarn(errbuf); return p; } } } } p = (Entry*)emalloc(sizeof(Entry)); p->sym = sym; p->tag = NULL; p->info.typ = NULL; p->info.sto = sto; p->info.hasval = False; p->info.ptrval = False; p->info.fixed = False; p->info.minOccurs = 1; p->info.maxOccurs = 1; p->info.nillable = zflag >= 1 && zflag <= 3; /* False, unless version 2.8.30 or earlier */ p->info.offset = 0; p->level = table->level; p->filename = filename; p->lineno = yylineno; p->next = NULL; if (!q) table->list = p; else q->next = p; return p; } /* entry - return pointer to table entry of a symbol */ Entry * entry(Table *table, Symbol *sym) { Table *t; Entry *p; for (t = table; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->sym == sym) return p; return (Entry*)0; } /* reenter - re-enter a symbol in a table. */ Entry * reenter(Table *table, Symbol *sym) { Entry *p, *q = NULL; for (p = table->list; p; q = p, p = p->next) if (p->sym == sym) break; if (p && p->next) { if (q) q->next = p->next; else table->list = p->next; for (q = p->next; q->next; q = q->next) ; q->next = p; p->next = NULL; } return p; } /* merge - append two tables if members are not duplicated */ int merge(Table *dest, Table *src) { Entry *p, *q; for (p = src->list; p; p = p->next) { q = entry(dest, p->sym); if (!q) { q = enter(dest, p->sym); q->info = p->info; } else if (q->info.typ != p->info.typ) return 1; } return 0; } Entry * enumentry(Symbol *sym) { const char *s = strstr(sym->name, "::"); if (s && s[2]) { Entry *e; char *t = (char*)emalloc(s - sym->name + 1); strncpy(t, sym->name, s - sym->name); t[s - sym->name] = '\0'; e = entry(enumtable, lookup(t)); free(t); if (!e) return NULL; return entry((Table*)e->info.typ->ref, lookup(s + 2)); } else { Table *t; for (t = enumtable; t; t = t->prev) { Entry *p; for (p = t->list; p; p = p->next) { Entry *e = entry((Table*)p->info.typ->ref, sym); if (e) return e; } } } return NULL; } /* mktype - make a (new) type with a reference to additional information and the width in bytes required to store objects of that type. A pointer to the type is returned which can be compared to check if types are identical. */ Tnode * mktype(Type type, void *ref, int width) { Tnode *p; if (type != Tstruct && type != Tclass && type != Tunion && ((type != Tenum && type != Tenumsc) || ref)) { for (p = Tptr[type]; p; p = p->next) { if (p->ref == ref && p->sym == (Symbol*)0 && p->width == width && ((p->transient == 1 && transient == 1) || (p->transient != 1 && transient != 1))) { if (imported && !p->imported) p->imported = imported; return p; /* type already exists in table */ } } } p = (Tnode*)emalloc(sizeof(Tnode)); /* install new type */ p->type = type; p->ref = ref; p->id = lookup("/*?*/"); p->base = NULL; p->sym = NULL; p->restriction = NULL; p->synonym = NULL; p->extsym = NULL; p->response = NULL; p->width = width; p->visited = False; p->recursive = False; p->generated = False; p->wsdl = False; p->next = Tptr[type]; p->transient = transient; p->imported = imported; p->hasmin = False; p->hasmax = False; p->incmin = True; p->incmax = True; p->min = 0.0; p->max = 0.0; p->property = 1; p->pattern = NULL; p->num = typeNO++; Tptr[type] = p; DBGLOG(fprintf(stderr, "New type %s %s\n", c_type(p), p->imported)); if (type == Tpointer && ((Tnode*)ref)->imported && (((Tnode*)ref)->type == Tenum || ((Tnode*)ref)->type == Tenumsc || ((Tnode*)ref)->type == Tstruct || ((Tnode*)ref)->type == Tclass)) p->imported = ((Tnode*)ref)->imported; else if (lflag && !is_transient(p) && (type == Tenum || type == Tenumsc || type == Tstruct || type == Tclass)) mkpointer(p); return p; } Tnode * mksymtype(Tnode *typ, Symbol *sym) { Tnode *p; p = (Tnode*)emalloc(sizeof(Tnode)); /* install new type */ p->type = typ->type; p->ref = typ->ref; if (typ->id == lookup("/*?*/")) p->id = sym; else p->id = typ->id; p->sym = sym; p->restriction = NULL; p->synonym = NULL; p->extsym = typ->extsym; p->response = (Entry*)0; p->width = typ->width; p->visited = False; p->recursive = False; p->generated = False; p->wsdl = False; p->next = Tptr[typ->type]; p->transient = transient; p->imported = imported; p->hasmin = False; p->hasmax = False; p->incmin = True; p->incmax = True; p->min = 0.0; p->max = 0.0; property_pattern(p, sym->name); p->num = typeNO++; Tptr[typ->type] = p; DBGLOG(fprintf(stderr, "New typedef %s %s\n", c_type(p), p->imported)); return p; } Tnode * mktemplate(Tnode *typ, Symbol *id) { Tnode *p; for (p = Tptr[Ttemplate]; p; p = p->next) { if (p->ref == typ && p->id == id && ((p->transient == 1 && transient == 1) || (p->transient != 1 && transient != 1))) { if (imported && !p->imported) p->imported = imported; return p; /* type alrady exists in table */ } } p = (Tnode*)emalloc(sizeof(Tnode)); /* install new type */ p->type = Ttemplate; p->ref = typ; p->id = id; p->sym = NULL; p->restriction = NULL; p->synonym = NULL; p->extsym = NULL; p->response = (Entry*)0; p->width = 0; p->generated = False; p->wsdl = False; p->next = Tptr[Ttemplate]; p->transient = transient; p->imported = imported; p->hasmin = False; p->hasmax = False; p->incmin = True; p->incmax = True; p->min = 0.0; p->max = 0.0; p->property = 1; p->pattern = NULL; p->num = typeNO++; Tptr[Ttemplate] = p; return p; } /* DO NOT REMOVE OR ALTER (SEE LICENCE AGREEMENT AND COPYING.txt) */ void copyrightnote(FILE *fd, const char *fn) { fprintf(fd, "/* %s\n Generated by gSOAP " VERSION " for %s\n\ \n\ gSOAP XML Web services tools\n\ Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved.\n\ The soapcpp2 tool and its generated software are released under the GPL.\n\ This program is released under the GPL with the additional exemption that\n\ compiling, linking, and/or using OpenSSL is allowed.\n\ --------------------------------------------------------------------------------\n\ A commercial use license is available from Genivia Inc., contact@genivia.com\n\ --------------------------------------------------------------------------------\n\ */", fn, filename); } void banner(FILE *fd, const char *text) { int i; fprintf(fd, "\n\n/"); for (i = 0; i < 78; i++) fputc('*', fd); fprintf(fd, "\\\n *%76s*\n * %-75s*\n *%76s*\n\\", "", text, ""); for (i = 0; i < 78; i++) fputc('*', fd); fprintf(fd, "/\n"); } void identify(FILE *fd, const char *fn) { time_t t = time(NULL), *p = &t; char tmp[256]; char *source_date_epoch; source_date_epoch = getenv("SOURCE_DATE_EPOCH"); if (source_date_epoch) { ULONG64 epoch; if (sscanf(source_date_epoch, SOAP_ULONG_FORMAT, &epoch) == 1 && epoch != 0) t = epoch; } strftime(tmp, 256, "%Y-%m-%d %H:%M:%S GMT", gmtime(p)); fprintf(fd, "\n\nSOAP_SOURCE_STAMP(\"@(#) %s ver " VERSION " %s\")\n", fn, tmp); } void compile(Table *table) { Entry *p; Tnode *typ; Pragma *pragma; int classflag = 0; int found; int filenum; const char *s; char base[1024]; found = 0; for (p = table->list; p; p = p->next) if (p->info.typ->type == Tfun && !(p->info.sto & Sextern)) found = 1; if (!found) Sflag = Cflag = Lflag = 1; /* no service operations were found */ if (*dirpath) fprintf(fmsg, "Using project directory path: %s\n", dirpath); fprefix = "soap"; if (namespaceid) { prefix = namespaceid; fprintf(fmsg, "Using C++ namespace: %s\n", namespaceid); } else if (!lflag) { fprefix = prefix; } strcpy(base, prefix); if (cflag) s = ".c"; else s = ".cpp"; strcpy(soapMatlab, base); strcat(soapMatlab, "Matlab.c"); strcpy(pathsoapMatlab, dirpath); strcat(pathsoapMatlab, soapMatlab ); strcpy(soapMatlabHdr, base); strcat(soapMatlabHdr, "Matlab.h"); strcpy(pathsoapMatlabHdr, dirpath); strcat(pathsoapMatlabHdr, soapMatlabHdr); strcpy(soapStub, base); strcat(soapStub, "Stub.h"); strcpy(pathsoapStub, dirpath); strcat(pathsoapStub, soapStub); strcpy(soapH, base); strcat(soapH, "H.h"); strcpy(pathsoapH, dirpath); strcat(pathsoapH, soapH); strcpy(soapC, base); if (fflag) strcat(soapC, "C_nnn"); else strcat(soapC, "C"); strcat(soapC, s); strcpy(pathsoapC, dirpath); strcat(pathsoapC, soapC); strcpy(soapClient, base); strcat(soapClient, "Client"); strcat(soapClient, s); strcpy(pathsoapClient, dirpath); strcat(pathsoapClient, soapClient); strcpy(soapServer, base); strcat(soapServer, "Server"); strcat(soapServer, s); strcpy(pathsoapServer, dirpath); strcat(pathsoapServer, soapServer); strcpy(soapClientLib, base); strcat(soapClientLib, "ClientLib"); strcat(soapClientLib, s); strcpy(pathsoapClientLib, dirpath); strcat(pathsoapClientLib, soapClientLib); strcpy(soapServerLib, base); strcat(soapServerLib, "ServerLib"); strcat(soapServerLib, s); strcpy(pathsoapServerLib, dirpath); strcat(pathsoapServerLib, soapServerLib); strcpy(soapReadme, base); strcat(soapReadme, "Readme.md"); strcpy(pathsoapReadme, dirpath); strcat(pathsoapReadme, soapReadme); if (mflag) { fprintf(fmsg, "Saving %s Matlab definitions\n", pathsoapMatlab); fmatlab = fopen(pathsoapMatlab, "w"); if (!fmatlab) execerror("Cannot write to file"); copyrightnote(fmatlab, soapMatlab); fprintf(fmatlab, "\n#include \"%s\"\n", soapMatlabHdr); fprintf(fmsg, "Saving %s Matlab definitions\n", pathsoapMatlabHdr); fmheader = fopen(pathsoapMatlabHdr, "w"); if (!fmheader) execerror("Cannot write to file"); copyrightnote(fmheader, soapMatlabHdr); fprintf(fmheader, "\n#include \"mex.h\"\n#include \"%s\"\n", soapStub); } if (rflag) { fprintf(fmsg, "Saving %s report\n", pathsoapReadme); freport = fopen(pathsoapReadme, "w"); if (!freport) execerror("Cannot write to file"); } fprintf(fmsg, "Saving %s annotated copy of the source interface file\n", pathsoapStub); fheader = fopen(pathsoapStub, "w"); if (!fheader) execerror("Cannot write to file"); copyrightnote(fheader, soapStub); fprintf(fheader, "\n"); for (pragma = pragmas; pragma; pragma = pragma->next) fprintf(fheader, "\n%s", pragma->pragma); fprintf(fheader, "\n\n#ifndef %sStub_H\n#define %sStub_H", prefix, prefix); if (nflag) fprintf(fheader, "\n#ifndef WITH_NONAMESPACES\n#define WITH_NONAMESPACES\n#endif"); if (namespaceid) fprintf(fheader, "\n#ifndef WITH_NOGLOBAL\n#define WITH_NOGLOBAL\n#endif"); fprintf(fheader, "\n#include \"stdsoap2.h\""); fprintf(fheader, "\n#if GSOAP_VERSION != %d\n# error \"GSOAP VERSION %d MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE\"\n#endif\n", GSOAP_VERSION, GSOAP_VERSION); if (cflag) fprintf(fheader, "\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); if (namespaceid) fprintf(fheader, "\n\nnamespace %s {", namespaceid); fprintf(fmsg, "Saving %s serialization functions to #include in projects\n", pathsoapH); fhead = fopen(pathsoapH, "w"); if (!fhead) execerror("Cannot write to file"); copyrightnote(fhead, soapH); fprintf(fhead, "\n\n#ifndef %sH_H\n#define %sH_H", prefix, prefix); fprintf(fhead, "\n#include \"%s\"", soapStub); if (cflag) fprintf(fhead, "\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); if (namespaceid) fprintf(fhead, "\n\nnamespace %s {", namespaceid); fprintf(fhead, "\n#ifndef WITH_NOIDREF"); if (!cflag && !namespaceid) fprintf(fhead, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int);"); if (!cflag && !namespaceid) fprintf(fhead, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*);"); fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*);"); fprintf(fhead, "\n#endif"); if (!cflag && !namespaceid) fprintf(fhead, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); fprintf(fhead, "\nSOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap*, int*);"); fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int);"); fprintf(fhead, "\nSOAP_FMAC3 void * SOAP_FMAC4 soap_dupelement(struct soap*, const void*, int);"); fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_delelement(const void*, int);"); if (!cflag && !namespaceid) fprintf(fhead, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*);"); detect_cycles(); generate_header(table); generate_schema(table); if (!Sflag && !iflag && !jflag) { fprintf(fmsg, "Saving %s client call stub functions\n", pathsoapClient); fclient = fopen(pathsoapClient, "w"); if (!fclient) execerror("Cannot write to file"); copyrightnote(fclient, soapClient); fprintf(fclient, "\n\n#if defined(__BORLANDC__)"); fprintf(fclient, "\n#pragma option push -w-8060"); fprintf(fclient, "\n#pragma option push -w-8004"); fprintf(fclient, "\n#endif"); fprintf(fclient, "\n#include \"%sH.h\"", prefix); if (cflag) fprintf(fclient, "\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); if (namespaceid) fprintf(fclient, "\n\nnamespace %s {", namespaceid); identify(fclient, soapClient); if (!Lflag) { flib = fopen(pathsoapClientLib, "w"); if (!flib) execerror("Cannot write to file"); copyrightnote(flib, soapClientLib); fprintf(fmsg, "Saving %s client stubs with serializers (use only for libs)\n", pathsoapClientLib); fprintf(flib, "\n\n/** Use this file in your project build instead of the two files %s and %s. This hides the serializer functions and avoids linking problems when linking multiple clients and servers. */\n", soapC, soapClient); /* fprintf(flib, "\n#ifndef WITH_NOGLOBAL\n#define WITH_NOGLOBAL\n#endif"); deprecated behavior */ fprintf(flib, "\n#define SOAP_FMAC3 static"); fprintf(flib, "\n#include \"%s\"", soapC); fprintf(flib, "\n#include \"%s\"", soapClient); fprintf(flib, "\n\n/* End of %s */\n", soapClientLib); fclose(flib); } } if (!Cflag && !iflag && !jflag) { fprintf(fmsg, "Saving %s server request dispatcher\n", pathsoapServer); fserver = fopen(pathsoapServer, "w"); if (!fserver) execerror("Cannot write to file"); copyrightnote(fserver, soapServer); fprintf(fserver, "\n\n#if defined(__BORLANDC__)"); fprintf(fserver, "\n#pragma option push -w-8060"); fprintf(fserver, "\n#pragma option push -w-8004"); fprintf(fserver, "\n#endif"); fprintf(fserver, "\n#include \"%sH.h\"", prefix); if (cflag) fprintf(fserver, "\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); if (namespaceid) fprintf(fserver, "\n\nnamespace %s {", namespaceid); identify(fserver, soapServer); if (!Lflag) { flib = fopen(pathsoapServerLib, "w"); if (!flib) execerror("Cannot write to file"); copyrightnote(flib, soapServerLib); fprintf(fmsg, "Saving %s server request dispatcher with serializers (use only for libs)\n", pathsoapServerLib); fprintf(flib, "\n\n/** Use this file in your project build instead of the two files %s and %s. This hides the serializer functions and avoids linking problems when linking multiple clients and servers. */\n", soapC, soapServer); /* fprintf(flib, "\n#ifndef WITH_NOGLOBAL\n#define WITH_NOGLOBAL\n#endif"); deprecated behavior */ fprintf(flib, "\n#define SOAP_FMAC3 static"); fprintf(flib, "\n#include \"%s\"", soapC); fprintf(flib, "\n#include \"%s\"", soapServer); fprintf(flib, "\n\n/* End of %s */\n", soapServerLib); fclose(flib); } } if (!iflag && !jflag) soap_serve(table); classflag = 0; for (p = classtable->list; p; p = p->next) { if (p->info.typ->type == Tclass && p->info.typ->transient <= 0) { classflag = 1; break; } } for (p = enumtable->list; p; p = p->next) { if (p->info.typ->type == Tenumsc && p->info.typ->transient <= 0) { classflag = 1; break; } } if (classflag || Tptr[Ttemplate]) { if (cflag) semwarn("Option -c conflicts with the use of class definitions in the specified input"); } for (filenum = 1; partnum == 0; filenum++) { if (fflag) { char *t = strrchr(pathsoapC, '.'); sprintf(t-3, "%03d", filenum); *t = '.'; fprintf(fmsg, "Saving %s serialization functions (part %d)\n", pathsoapC, filenum); partnum = fflag; /* number of defs per file */ } else { fprintf(fmsg, "Saving %s serialization functions\n", pathsoapC); partnum = 1; } fout = fopen(pathsoapC, "w"); if (!fout) execerror("Cannot write to file"); copyrightnote(fout, soapC); fprintf(fout, "\n\n#if defined(__BORLANDC__)"); fprintf(fout, "\n#pragma option push -w-8060"); fprintf(fout, "\n#pragma option push -w-8004"); fprintf(fout, "\n#endif"); fprintf(fout, "\n\n#include \"%sH.h\"", prefix); if (cflag) fprintf(fout, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); if (namespaceid) fprintf(fout, "\n\nnamespace %s {", namespaceid); identify(fout, soapC); fflush(fout); if (filenum == 1) { if (!lflag) { fprintf(fout, "\n\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap)\n{\n\tsoap->part = SOAP_IN_HEADER;\n\tsoap->header = soap_in_SOAP_ENV__Header(soap, \"SOAP-ENV:Header\", soap->header, NULL);\n\tsoap->part = SOAP_END_HEADER;\n\treturn soap->header == NULL;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap)\n{\n\tif (soap->version && soap->header)\n\t{\tsoap->part = SOAP_IN_HEADER;\n\t\tif (soap_out_SOAP_ENV__Header(soap, \"SOAP-ENV:Header\", 0, soap->header, \"\"))\n\t\t\treturn soap->error;\n\t\tsoap->part = SOAP_END_HEADER;\n\t}\n\treturn SOAP_OK;\n}"); if (cflag) { fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap)\n{\n\tif (soap->version && soap->header)\n\t\tsoap_serialize_SOAP_ENV__Header(soap, soap->header);\n}"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap)\n{\n\tif (soap->header == NULL)\n\t{\tif ((soap->header = (struct SOAP_ENV__Header*)soap_malloc(soap, sizeof(struct SOAP_ENV__Header))))\n\t\t\tsoap_default_SOAP_ENV__Header(soap, soap->header);\n\t}\n}"); } else if ((p = entry(classtable, lookup("SOAP_ENV__Header"))) && p->info.typ->type == Tstruct) { fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap)\n{\n\tif (soap->version && soap->header)\n\t\tsoap_serialize_SOAP_ENV__Header(soap, soap->header);\n}"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap)\n{\n\tif (soap->header == NULL)\n\t{\tif ((soap->header = soap_new_SOAP_ENV__Header(soap)))\n\t\t\tsoap_default_SOAP_ENV__Header(soap, soap->header);\n\t}\n}"); } else { fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap)\n{\n\tif (soap->version && soap->header)\n\t\tsoap->header->soap_serialize(soap);\n}"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap)\n{\n\tif (soap->header == NULL)\n\t{\tif ((soap->header = soap_new_SOAP_ENV__Header(soap)))\n\t\t\tsoap->header->soap_default(soap);\n\t}\n}"); } if (cflag) { fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap)\n{\n\tif (soap->fault == NULL)\n\t{\tsoap->fault = (struct SOAP_ENV__Fault*)soap_malloc(soap, sizeof(struct SOAP_ENV__Fault));\n\t\tif (soap->fault == NULL)\n\t\t\treturn;\n\t\tsoap_default_SOAP_ENV__Fault(soap, soap->fault);\n\t}\n\tif (soap->version == 2 && !soap->fault->SOAP_ENV__Code)\n\t{\tsoap->fault->SOAP_ENV__Code = (struct SOAP_ENV__Code*)soap_malloc(soap, sizeof(struct SOAP_ENV__Code));\n\t\tsoap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code);\n\t}\n\tif (soap->version == 2 && !soap->fault->SOAP_ENV__Reason)\n\t{\tsoap->fault->SOAP_ENV__Reason = (struct SOAP_ENV__Reason*)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason));\n\t\tsoap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason);\n\t}\n}"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap)\n{\n\tif (soap->fault)\n\t\tsoap_serialize_SOAP_ENV__Fault(soap, soap->fault);\n}"); } else if ((p = entry(classtable, lookup("SOAP_ENV__Fault"))) && p->info.typ->type == Tstruct) { fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap)\n{\n\tif (soap->fault == NULL)\n\t{\tsoap->fault = soap_new_SOAP_ENV__Fault(soap);\n\t\tif (soap->fault == NULL)\n\t\t\treturn;\n\t\tsoap_default_SOAP_ENV__Fault(soap, soap->fault);\n\t}\n\tif (soap->version == 2 && !soap->fault->SOAP_ENV__Code)\n\t{\tsoap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap);\n\t\tsoap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code);\n\t}\n\tif (soap->version == 2 && !soap->fault->SOAP_ENV__Reason)\n\t{\tsoap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap);\n\t\tsoap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason);\n\t}\n}"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->fault)\n\t\tsoap_serialize_SOAP_ENV__Fault(soap, soap->fault);\n}"); } else { fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap)\n{\n\tif (soap->fault == NULL)\n\t{\tsoap->fault = soap_new_SOAP_ENV__Fault(soap);\n\t\tsoap->fault->soap_default(soap);\n\t}\n\tif (soap->version == 2 && !soap->fault->SOAP_ENV__Code)\n\t{\tsoap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap);\n\t\tsoap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code);\n\t}\n\tif (soap->version == 2 && !soap->fault->SOAP_ENV__Reason)\n\t{\tsoap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap);\n\t\tsoap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason);\n\t}\n}"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->fault)\n\t\tsoap->fault->soap_serialize(soap);\n}"); } if ((p = entry(classtable, lookup("SOAP_ENV__Fault"))) && p->info.typ->type == Tstruct) { fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap)\n{\n\tif (soap->fault)\n\t\treturn soap_put_SOAP_ENV__Fault(soap, soap->fault, \"SOAP-ENV:Fault\", \"\");\n\treturn SOAP_OK;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap)\n{\n\treturn (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, \"SOAP-ENV:Fault\", NULL)) == NULL;\n}"); } else { fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->fault)\n\t\treturn soap->fault->soap_put(soap, \"SOAP-ENV:Fault\", \"\");\n\treturn SOAP_EOM;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->fault)\n\t\treturn soap->fault->soap_get(soap, \"SOAP-ENV:Fault\", NULL) == NULL;\n\treturn SOAP_EOM;\n}"); } fprintf(fhead, "\n\nSOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap);"); fprintf(fout, "\n\nSOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->version == 2 && soap->fault->SOAP_ENV__Code)\n\t\treturn (const char**)(void*)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value;\n\treturn (const char**)(void*)&soap->fault->faultcode;\n}"); if (cflag) fprintf(fout, "\n\nSOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->version == 2)\n\t{\tif (soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode == NULL)\n\t\t{\tsoap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = (struct SOAP_ENV__Code*)soap_malloc(soap, sizeof(struct SOAP_ENV__Code));\n\t\t\tsoap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode);\n\t\t}\n\t\treturn (const char**)(void*)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value;\n\t}\n\treturn (const char**)(void*)&soap->fault->faultcode;\n}"); else fprintf(fout, "\n\nSOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->version == 2)\n\t{\tif (soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode == NULL)\n\t\t{\tsoap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap);\n\t\t\tsoap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode);\n\t\t}\n\t\treturn (const char**)(void*)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value;\n\t}\n\treturn (const char**)(void*)&soap->fault->faultcode;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 const char * SOAP_FMAC4 soap_check_faultsubcode(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->version == 2)\n\t{\tif (soap->fault->SOAP_ENV__Code && soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode)\n\t\t\treturn soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value;\n\t\treturn NULL;\n\t}\n\treturn soap->fault->faultcode;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap)\n{\n\tsoap_fault(soap);\n\tif (soap->version == 2)\n\t\treturn (const char**)(void*)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text;\n\treturn (const char**)(void*)&soap->fault->faultstring;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap)\n{\n\tsoap_fault(soap);"); if (has_Detail_string()) { if (cflag) fprintf(fout, "\n\tif (soap->version == 2)\n\t{\tif (soap->fault->SOAP_ENV__Detail == NULL)\n\t\t{\tsoap->fault->SOAP_ENV__Detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail));\n\t\t\tsoap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail);\n\t\t}\n\t\treturn (const char**)(void*)&soap->fault->SOAP_ENV__Detail->__any;\n\t}"); else fprintf(fout, "\n\tif (soap->version == 2)\n\t{\tif (soap->fault->SOAP_ENV__Detail == NULL)\n\t\t{\tsoap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap);\n\t\t\tsoap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail);\n\t\t}\n\t\treturn (const char**)(void*)&soap->fault->SOAP_ENV__Detail->__any;\n\t}"); } if (has_detail_string()) { if (cflag) fprintf(fout, "\n\tif (soap->fault->detail == NULL)\n\t{\tsoap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail));\n\t\tsoap_default_SOAP_ENV__Detail(soap, soap->fault->detail);\n\t}\n\treturn (const char**)(void*)&soap->fault->detail->__any;\n}"); else fprintf(fout, "\n\tif (soap->fault->detail == NULL)\n\t{\tsoap->fault->detail = soap_new_SOAP_ENV__Detail(soap);\n\t\tsoap_default_SOAP_ENV__Detail(soap, soap->fault->detail);\n\t}\n\treturn (const char**)(void*)&soap->fault->detail->__any;\n}"); } if (!has_detail_string() && !has_Detail_string()) fprintf(fout, "\n\treturn NULL;\n}"); fprintf(fout, "\n\nSOAP_FMAC3 const char * SOAP_FMAC4 soap_check_faultdetail(struct soap *soap)\n{\n\tsoap_fault(soap);"); if (has_Detail_string()) fprintf(fout, "\n\tif (soap->version == 2 && soap->fault->SOAP_ENV__Detail)\n\t\treturn soap->fault->SOAP_ENV__Detail->__any;"); if (has_detail_string()) fprintf(fout, "\n\tif (soap->fault->detail)\n\t\treturn soap->fault->detail->__any;"); fprintf(fout, "\n\treturn NULL;\n}"); fprintf(fout, "\n\n#endif"); fprintf(fout, "\n\n#ifndef WITH_NOIDREF"); fprintf(fout, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap)\n{"); fprintf(fout, "\n\tint t;\n\tif (soap->version == 1)\n\t{\tfor (;;)\n\t\t{\tif (!soap_getelement(soap, &t))\n\t\t\t\tif ((soap->error && soap->error != SOAP_TAG_MISMATCH) || soap_ignore_element(soap))\n\t\t\t\t\tbreak;\n\t\t}\n\t}"); fprintf(fout, "\n\tif (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF)"); fprintf(fout, "\n\t\tsoap->error = SOAP_OK;"); fprintf(fout, "\n\treturn soap->error;"); fprintf(fout, "\n}\n#endif"); if (!cflag && !namespaceid) fprintf(fout, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); fprintf(fout, "\nSOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type)\n{\t(void)type;"); fprintf(fout, "\n\tif (soap_peek_element(soap))\n\t\treturn NULL;"); fprintf(fout, "\n#ifndef WITH_NOIDREF\n\tif (!*soap->id || !(*type = soap_lookup_type(soap, soap->id)))\n\t\t*type = soap_lookup_type(soap, soap->href);"); fprintf(fout, "\n\tswitch (*type)\n\t{"); DBGLOG(fprintf(stderr, "\n Calling in_defs( ).")); fflush(fout); in_defs(); DBGLOG(fprintf(stderr, "\n Completed in_defs( ).")); fprintf(fout, "\n\tdefault:\n#else\n\t*type = 0;\n#endif"); fprintf(fout, "\n\t{\tconst char *t = soap->type;\n\t\tif (!*t)\n\t\t\tt = soap->tag;"); fflush(fout); in_defs2(); fprintf(fout, "\n\t\tt = soap->tag;"); in_defs3(); fprintf(fout, "\n#ifndef WITH_NOIDREF\n\t}\n#endif\n\t}\n\tsoap->error = SOAP_TAG_MISMATCH;\n\treturn NULL;\n}"); if (!cflag && !namespaceid) fprintf(fout, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap)\n{"); fprintf(fout, "\n\tif (!soap_peek_element(soap))"); fprintf(fout, "\n\t{\tint t;"); fprintf(fout, "\n\t\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Unexpected element '%%s' in input (level = %%u, %%d)\\n\", soap->tag, soap->level, soap->body));"); fprintf(fout, "\n\t\tif (soap->mustUnderstand && !soap->other && !soap->fignore)"); fprintf(fout, "\n\t\t\treturn soap->error = SOAP_MUSTUNDERSTAND;"); /* old code: without option -s required SOAP_XML_STRICT to detect and flag extra elements; fprintf(fout, "\n\t\tif (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, \"SOAP-ENV:\"))\n\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"REJECTING element '%%s'\\n\", soap->tag));\n\t\t\treturn soap->error = SOAP_TAG_MISMATCH;\n\t\t}"); */ fprintf(fout, "\n\t\tif ((%s!soap->fignore && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, \"SOAP-ENV:\"))\n\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"REJECTING element '%%s'\\n\", soap->tag));\n\t\t\treturn soap->error = SOAP_TAG_MISMATCH;\n\t\t}", strict_check()); fprintf(fout, "\n\t\tif (!*soap->id || !soap_getelement(soap, &t))"); fprintf(fout, "\n\t\t{\tsoap->peeked = 0;"); fprintf(fout, "\n\t\t\tif (soap->fignore)\n\t\t\t\tsoap->error = soap->fignore(soap, soap->tag);\n\t\t\telse\n\t\t\t\tsoap->error = SOAP_OK;"); fprintf(fout, "\n\t\t\tDBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, \"IGNORING element '%%s'\\n\", soap->tag));"); fprintf(fout, "\n\t\t\tif (!soap->error && soap->body && soap_ignore(soap))"); fprintf(fout, "\n\t\t\t\treturn soap->error;"); fprintf(fout, "\n\t\t}"); fprintf(fout, "\n\t}"); fprintf(fout, "\n\treturn soap->error;"); fprintf(fout, "\n}"); fprintf(fout, "\n\n#ifndef WITH_NOIDREF"); fprintf(fout, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap)\n{\n\tint i;\n\tstruct soap_plist *pp;"); fprintf(fout, "\n\tif (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH)))"); fprintf(fout, "\n\t\tfor (i = 0; i < SOAP_PTRHASH; i++)"); fprintf(fout, "\n\t\t\tfor (pp = soap->pht[i]; pp; pp = pp->next)"); fprintf(fout, "\n\t\t\t\tif (pp->mark1 == 2 || pp->mark2 == 2)"); fprintf(fout, "\n\t\t\t\t\tif (soap_putelement(soap, pp->ptr, SOAP_MULTIREFTAG, pp->id, pp->type))\n\t\t\t\t\t\treturn soap->error;"); fprintf(fout, "\n\treturn SOAP_OK;\n}\n#endif"); if (!cflag && !namespaceid) fprintf(fout, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); fprintf(fout, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type)\n{\t(void)tag;"); fprintf(fout, "\n\tswitch (type)\n\t{"); fflush(fout); out_defs(); fprintf(fout, "\n\tcase 0:\n\t\treturn SOAP_OK;\n\t}\n\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"soap_putelement '%%s' failed for type %%d in %s\\n\", tag ? tag : \"\", type));", pathsoapC); fprintf(fout, "\n\treturn soap_element_empty(soap, tag); /* unknown type to serialize */\n}"); if (!cflag && !namespaceid) fprintf(fout, "\n#ifdef __cplusplus\n}\n#endif"); fprintf(fout, "\n\n#ifndef WITH_NOIDREF"); if (!cflag && !namespaceid) fprintf(fout, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); if (is_anytype_flag) { fprintf(fout, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type)\n{"); fprintf(fout, "\n\t(void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */"); fprintf(fout, "\n\tswitch (type)\n\t{"); fflush(fout); mark_defs(); fprintf(fout, "\n\t}\n}"); } else { fprintf(fout, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type)\n{"); fprintf(fout, "\n\t(void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */"); fprintf(fout, "\n}"); } if (!cflag && !namespaceid) fprintf(fout, "\n#ifdef __cplusplus\n}\n#endif"); fprintf(fout, "\n#endif"); if (!cflag && !namespaceid) fprintf(fout, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); fprintf(fout, "\n\nSOAP_FMAC3 void * SOAP_FMAC4 soap_dupelement(struct soap *soap, const void *ptr, int type)\n{"); if (Ecflag) { fprintf(fout, "\n\tswitch (type)\n\t{"); fflush(fout); dup_defs(); fprintf(fout, "\n\t}"); } else { fprintf(fout, "(void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */"); } fprintf(fout, "\n\treturn NULL;\n}"); if (!cflag && !namespaceid) fprintf(fout, "\n#ifdef __cplusplus\n}\n#endif"); if (!cflag && !namespaceid) fprintf(fout, "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif"); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_delelement(const void *ptr, int type)\n{"); if (Edflag) { fprintf(fout, "\n\tswitch (type)\n\t{"); fflush(fout); del_defs(); fprintf(fout, "\n\t}"); } else { fprintf(fout, "(void)ptr; (void)type; /* appease -Wall -Werror */"); } fprintf(fout, "\n}"); if (!cflag && !namespaceid) fprintf(fout, "\n#ifdef __cplusplus\n}\n#endif"); } if (!cflag) { fprintf(fhead, "\nSOAP_FMAC3 void * SOAP_FMAC4 %s_instantiate(struct soap*, int, const char*, const char*, size_t*);", prefix); fprintf(fout, "\n\nSOAP_FMAC3 void * SOAP_FMAC4 %s_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n)\n{\t(void)type;\n\tswitch (t)\n\t{", prefix); if (classtable) { for (p = classtable->list; p; p = p->next) { if ((p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && !is_transient(p->info.typ)) { if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)%s_instantiate_%s(soap, -1, type, arrayType, n);", soap_type(p->info.typ), fprefix, c_ident(p->info.typ)); if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#endif"); } } } if (typetable) { for (p = typetable->list; p; p = p->next) { if ((p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && !is_transient(p->info.typ)) { if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)%s_instantiate_%s(soap, -1, type, arrayType, n);", soap_type(p->info.typ), fprefix, c_ident(p->info.typ)); if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#endif"); } } } for (typ = Tptr[Ttemplate]; typ; typ = typ->next) if (typ->ref && !is_transient(typ)) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)%s_instantiate_%s(soap, -1, type, arrayType, n);", soap_type(typ), fprefix, c_ident(typ)); fprintf(fout, "\n\t}\n\treturn NULL;\n}"); fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 %s_fdelete(struct soap *soap, struct soap_clist*);", prefix); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 %s_fdelete(struct soap *soap, struct soap_clist *p)", prefix); fprintf(fout, "\n{\t(void)soap; /* appease -Wall -Werror */\n\tif (!p->ptr)\n\t\treturn SOAP_OK;\n\tswitch (p->type)\n\t{"); if (classtable) { for (p = classtable->list; p; p = p->next) { if ((p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && !is_transient(p->info.typ)) { if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\tcase %s:", soap_type(p->info.typ)); fprintf(fout, "\n\t\tif (p->size < 0)\n\t\t\tSOAP_DELETE(soap, static_cast<%s*>(p->ptr), %s);\n\t\telse\n\t\t\tSOAP_DELETE_ARRAY(soap, static_cast<%s*>(p->ptr), %s);\n\t\tbreak;", c_type(p->info.typ), c_type(p->info.typ), c_type(p->info.typ), c_type(p->info.typ)); if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#endif"); } } } if (typetable) { for (p = typetable->list; p; p = p->next) if (p->info.typ->type == Tclass || p->info.typ->type == Tstruct) /* && is_external(p->info.typ)) */ { if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\tcase %s:", soap_type(p->info.typ)); fprintf(fout, "\n\t\tif (p->size < 0)\n\t\t\tSOAP_DELETE(soap, static_cast<%s*>(p->ptr), %s);\n\t\telse\n\t\t\tSOAP_DELETE_ARRAY(soap, static_cast<%s*>(p->ptr), %s);\n\t\tbreak;", c_type(p->info.typ), c_type(p->info.typ), c_type(p->info.typ), c_type(p->info.typ)); if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#endif"); } } for (typ = Tptr[Ttemplate]; typ; typ = typ->next) { if (typ->ref && !is_transient(typ)) { fprintf(fout, "\n\tcase %s:", soap_type(typ)); fprintf(fout, "\n\t\tif (p->size < 0)\n\t\t\tSOAP_DELETE(soap, static_cast<%s*>(p->ptr), %s);\n\t\telse\n\t\t\tSOAP_DELETE_ARRAY(soap, static_cast<%s*>(p->ptr), %s);\n\t\tbreak;", c_type(typ), c_type(typ), c_type(typ), c_type(typ)); } } fprintf(fout, "\n\tdefault:\n\t\treturn SOAP_ERR;"); fprintf(fout, "\n\t}\n\treturn SOAP_OK;"); fprintf(fout, "\n}"); fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 %s_fbase(int, int);", prefix); fprintf(fout, "\n\n#ifdef WIN32\n#pragma warning(push)\n// do not warn on switch w/o cases\n#pragma warning(disable:4065)\n#endif"); fprintf(fout, "\nSOAP_FMAC3 int SOAP_FMAC4 %s_fbase(int t, int b)", prefix); found = 0; if (classtable) { for (p = classtable->list; p; p = p->next) { if ((p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && p->info.typ->base && !is_transient(p->info.typ)) { Entry *e = entry(classtable, p->info.typ->base); if (e && !is_transient(e->info.typ)) { found = 1; break; } } } } if (found) { fprintf(fout, "\n{\n\tdo\n\t{\tswitch (t)\n\t\t{\n"); for (p = classtable->list; p; p = p->next) { if ((p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && p->info.typ->base && !is_transient(p->info.typ)) { Entry *e = entry(classtable, p->info.typ->base); if (e && !is_transient(e->info.typ)) fprintf(fout, "\n\t\tcase %s: t = %s; break;", soap_type(p->info.typ), soap_type(e->info.typ)); } } fprintf(fout, "\n\t\tdefault: return 0;\n\t\t}\n\t}\n\twhile (t != b);\n\treturn 1;\n}"); } else fprintf(fout, "\n{\t(void)t; (void)b; /* appease -Wall -Werror */\n\treturn 0;\n}"); fprintf(fout, "\n#ifdef WIN32\n#pragma warning(pop)\n#endif"); if (Tptr[Ttemplate] || classtable) { fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 %s_finsert(struct soap*, int, int, void*, size_t, const void*, void**);", prefix); fprintf(fout, "\n\n#ifndef WITH_NOIDREF"); fprintf(fout, "\n#ifdef WIN32\n#pragma warning(push)\n// do not warn on switch w/o cases\n#pragma warning(disable:4065)\n#endif"); fprintf(fout, "\nSOAP_FMAC3 void SOAP_FMAC4 %s_finsert(struct soap *soap, int t, int tt, void *p, size_t index, const void *q, void **x)", prefix); fprintf(fout, "\n{\n\t(void)soap; (void)t; (void)p; (void)index; (void)q; (void)x; /* appease -Wall -Werror */"); fprintf(fout, "\n\tswitch (tt)\n\t{"); for (typ = Tptr[Ttemplate]; typ; typ = typ->next) { if (typ->ref && !is_transient(typ)) { fprintf(fout, "\n\tcase %s:", soap_type(typ)); if (is_smart(typ)) { Tnode *ref = (Tnode*)typ->ref; if (ref->type == Tclass) fprintf(fout, "\n\t\tif (t == %s || %s_fbase(t, %s))\n\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Smart pointer %s type=%%d location=%%p object=%%p\\n\", t, p, q));", soap_type(reftype(typ->ref)), prefix, soap_type(reftype(typ->ref)), c_type(typ)); else fprintf(fout, "\n\t\tif (t == %s)\n\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Smart pointer %s type=%%d location=%%p object=%%p\\n\", t, p, q));", soap_type(reftype(typ->ref)), c_type(typ)); if (is_smart_shared(typ)) { fprintf(fout, "\n\t\t\tif (!*x)\n\t\t\t\t*(%s)(*x = (void*)p) = %s<%s>(**(%s)q);", c_type_id(typ, "*"), make_shared(typ), c_type(typ->ref), c_type_id(typ->ref, "**")); fprintf(fout, "\n\t\t\telse\n\t\t\t\t*(%s)p = *(%s)(*x);", c_type_id(typ, "*"), c_type_id(typ, "*")); } else { fprintf(fout, "\n\t\t\t*(*(%s)p = %s(SOAP_NEW(soap, %s))) = **(%s)q;", c_type_id(typ, "*"), c_type(typ), c_type(typ->ref), c_type_id(typ->ref, "**")); } } else { Tnode *ref = (Tnode*)typ->ref; if (ref->type == Tpointer && ((Tnode*)ref->ref)->type == Tclass) fprintf(fout, "\n\t\tif (t == %s || %s_fbase(t, %s))\n\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Container %s insert type=%%d in %%d location=%%p object=%%p at index=%%lu\\n\", t, tt, p, q, (unsigned long)index));", soap_type(reftype(ref)), prefix, soap_type(reftype(ref)), c_type(typ)); else fprintf(fout, "\n\t\tif (t == %s)\n\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Container %s insert type=%%d in %%d location=%%p object=%%p at index=%%lu\\n\", t, tt, p, q, (unsigned long)index));", soap_type(reftype(ref)), c_type(typ)); if (is_smart(ref) && strcmp(typ->id->name, "std::set")) { if (!strcmp(ref->id->name, "std::vector") || !strcmp(ref->id->name, "std::deque")) fprintf(fout, "\n\t\t\t%s::iterator i = ((%s)p)->begin() + index;", c_type(typ), c_type_id(typ, "*")); else fprintf(fout, "\n\t\t\t%s::iterator i = ((%s)p)->begin();\n\t\t\twhile (index--)\n\t\t\t\t++i;", c_type(typ), c_type_id(typ, "*")); if (is_smart_shared(ref)) fprintf(fout, "\n\t\t\tif (!*x)\n\t\t\t\t*(%s)(*x = &*i) = %s<%s>(**(%s)q);\n\t\t\telse\n\t\t\t\t*i = *(%s)*x;", c_type_id(ref, "*"), make_shared(ref), c_type(ref->ref), c_type_id(ref->ref, "**"), c_type_id(ref, "*")); else fprintf(fout, "\n\t\t\t*(*i = %s(SOAP_NEW(soap, %s))) = **(%s)q;", c_type(ref), c_type(ref->ref), c_type_id(ref->ref, "**")); } else { if (!strcmp(typ->id->name, "std::vector") || !strcmp(typ->id->name, "std::deque")) fprintf(fout, "\n\t\t\t(*(%s)p)[index] = *(%s)q;", c_type_id(typ, "*"), c_type_id(ref, "*")); else if (!strcmp(typ->id->name, "std::set")) fprintf(fout, "\n\t\t\t((%s)p)->insert(*(%s)q);", c_type_id(typ, "*"), c_type_id(ref, "*")); else fprintf(fout, "\n\t\t\t%s::iterator i = ((%s)p)->begin();\n\t\t\twhile (index--)\n\t\t\t\t++i;\n\t\t\t*i = *(%s)q;", c_type(typ), c_type_id(typ, "*"), c_type_id(ref, "*")); } } fprintf(fout, "\n\t\t}\n\t\tbreak;"); } } if (classtable) { for (p = classtable->list; p; p = p->next) { if (!is_transient(p->info.typ)) { if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\tcase %s:", soap_type(p->info.typ)); fprintf(fout, "\n\t\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Copy %s type=%%d location=%%p object=%%p\\n\", t, p, q));", c_type(p->info.typ)); fprintf(fout, "\n\t\t*(%s*)p = *(%s*)q;\n\t\tbreak;", c_type(p->info.typ), c_type(p->info.typ)); if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#endif"); } } } if (typetable) { for (p = typetable->list; p; p = p->next) { if ((p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && !is_transient(p->info.typ)) { if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\tcase %s:", soap_type(p->info.typ)); fprintf(fout, "\n\t\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Copy %s type=%%d location=%%p object=%%p\\n\", t, p, q));", c_type(p->info.typ)); fprintf(fout, "\n\t\t*(%s*)p = *(%s*)q;\n\t\tbreak;", c_type(p->info.typ), c_type(p->info.typ)); if (is_header_or_fault(p->info.typ) || is_body(p->info.typ)) fprintf(fout, "\n#endif"); } } } fprintf(fout, "\n\tdefault:\n\t\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Could not insert type=%%d in %%d\\n\", t, tt));"); fprintf(fout, "\n\t}"); fprintf(fout, "\n}"); fprintf(fout, "\n#ifdef WIN32\n#pragma warning(pop)\n#endif"); fprintf(fout, "\n#endif"); } } } generate_defs(); if (namespaceid) fprintf(fout, "\n\n} // namespace %s\n", namespaceid); if (cflag) fprintf(fout, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fout, "\n\n#if defined(__BORLANDC__)"); fprintf(fout, "\n#pragma option pop"); fprintf(fout, "\n#pragma option pop"); fprintf(fout, "\n#endif"); fprintf(fout, "\n\n/* End of %s */\n", soapC); fclose(fout); } if (namespaceid) fprintf(fhead, "\n\n} // namespace %s\n", namespaceid); if (cflag) fprintf(fhead, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fhead, "\n\n#endif"); fprintf(fhead, "\n\n/* End of %s */\n", soapH); fclose(fhead); if (namespaceid) fprintf(fheader, "\n\n} // namespace %s\n", namespaceid); if (cflag) fprintf(fheader, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fheader, "\n\n#endif"); fprintf(fheader, "\n\n/* End of %s */\n", soapStub); fclose(fheader); if (mflag) { DBGLOG(fprintf(stderr, "\n Calling matlab_def_table( ).")); matlab_def_table(table); DBGLOG(fprintf(stderr, "\n Completed matlab_def_table( ).")); fclose(fmatlab); fclose(fmheader); } if (!Sflag && !iflag && !jflag) { if (namespaceid) fprintf(fclient, "\n\n} // namespace %s\n", namespaceid); if (cflag) fprintf(fclient, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fclient, "\n\n#if defined(__BORLANDC__)"); fprintf(fclient, "\n#pragma option pop"); fprintf(fclient, "\n#pragma option pop"); fprintf(fclient, "\n#endif"); fprintf(fclient, "\n\n/* End of %s */\n", soapClient); fclose(fclient); } if (!Cflag && !iflag && !jflag) { if (namespaceid) fprintf(fserver, "\n\n} // namespace %s\n", namespaceid); if (cflag) fprintf(fserver, "\n\n#ifdef __cplusplus\n}\n#endif"); fprintf(fserver, "\n\n#if defined(__BORLANDC__)"); fprintf(fserver, "\n#pragma option pop"); fprintf(fserver, "\n#pragma option pop"); fprintf(fserver, "\n#endif"); fprintf(fserver, "\n\n/* End of %s */\n", soapServer); fclose(fserver); } if (rflag) { char tmp[256]; time_t T = time(NULL); strftime(tmp, 256, "%a %b %d %Y %H:%M:%S UTC", gmtime(&T)); fprintf(freport, "\n [1]: https://www.genivia.com/images/go-up.png\n\n"); fprintf(freport, "--------------------------------------------------------------------------------\n\n_Generated on %s by soapcpp2 v" VERSION " for %s._\n_The gSOAP XML Web services tools are Copyright (C) Robert van Engelen, Genivia Inc. All Rights Reserved._\n", tmp, filename); fclose(freport); } } void gen_class(FILE *fd, Entry *p) { Entry *q; Tnode *typ = p->info.typ; const char *x, *s; const char *nse = ns_qualifiedElement(typ); const char *nsa = ns_qualifiedAttribute(typ); if (!typ->ref) { if (!is_transient(typ) && !is_external(typ) && !is_volatile(typ) && !is_imported(typ)) { sprintf(errbuf, "%s declared in %s:%d has no content, requires members", c_type(typ), p->filename, p->lineno); semwarn(errbuf); } return; } if (fd == freport) { fprintf(freport, "\n\n", c_ident(typ)); fprintf(freport, "### `%s`\n\n", c_type(typ)); if (soap_version < 0 && (is_header_or_fault(typ) || is_body(typ))) { fprintf(freport, "This %s is for internal use only\n\n", typ->type == Tstruct ? "struct" : typ->type == Tclass ? "class" : "union"); return; } else { fprintf(freport, "This %s is declared in [%s](%s) at line %d, ", typ->type == Tstruct ? "struct" : typ->type == Tclass ? "class" : "union", p->filename, p->filename, p->lineno); } } if (is_imported(typ)) return; x = xsi_type(typ); if (!x || !*x) x = wsdl_type(typ, ""); if (fd != freport) { fprintf(fd, "\n\n/* %s:%d */", p->filename, p->lineno); if (is_header_or_fault(typ) || is_body(typ)) fprintf(fd, "\n#ifndef WITH_NOGLOBAL"); fprintf(fd, "\n#ifndef %s\n", soap_type(typ)); if (namespaceid) fprintf(fd, "#define %s (-%d)\n", soap_type(typ), typ->num); /* namespaced SOAP_TYPE is negative to avoid clashes */ else fprintf(fd, "#define %s (%d)\n", soap_type(typ), typ->num); } if (typ->recursive) { if (fd == freport) fprintf(freport, "is recursive, meaning it may (in)directly reference itself through its (base or derived class) members, and "); else fprintf(fd, "/* Type %s is a recursive data type, (in)directly referencing itself through its (base or derived class) members */\n", typ->id->name); } if (is_volatile(typ)) { if (fd == freport) fprintf(freport, "is volatile, meaning it is declared external of the data binding interface and not redeclared here"); else fprintf(fd, "#if 0 /* Volatile: declared external of the data binding interface and not redeclared here */\n"); } else if (is_transient(typ)) { if (fd == freport) fprintf(freport, "is transient, meaning not serializable"); else fprintf(fd, "/* Transient type: */\n"); } else if (is_invisible(typ->id->name)) { if (fd == freport) fprintf(freport, "is a wrapper, meaning that it wraps data and is not visible in XML"); else fprintf(fd, "/* Wrapper: */\n"); x = ""; } else if (is_attachment(typ)) { if (fd == freport) fprintf(freport, "is an attachment, meaning binary data attached as a MTOM/MIME/DIME attachment or included as *`xsd:base64Binary`* base64 with `__ptr` pointing to the data of length `__size` and `id`, `type`, and `options` identifying and describing the attachment data (use the `SOAP_ENC_MTOM` or the `SOAP_ENC_MIME` flag and set at least `type` to create an attachment )"); else fprintf(fd, "/* binary data attached as MTOM/MIME/DIME attachment or included as *`xsd:base64Binary`* base64: */\n"); } else if (is_hexBinary(typ)) { if (fd == freport) fprintf(freport, "is binary, meaning serialized as *`xsd:hexBinary`* hex binary data with `__ptr` pointing to the data of length `__size`"); else fprintf(fd, "/* hexBinary XSD type: */\n"); } else if (is_binary(typ)) { if (fd == freport) fprintf(freport, "is binary, meaning serialized as *`xsd:base64Binary`* base64 binary data with `__ptr` pointing to the data of length `__size`"); else fprintf(fd, "/* base64Binary XSD type: */\n"); } else if (is_discriminant(typ)) { if (fd == freport) fprintf(freport, "is a choice, meaning a union with a union variant selector"); else fprintf(fd, "/* Choice: */\n"); } else if ((q = is_dynamic_array(typ))) { if (has_ns(typ) || is_untyped(typ)) { if (fd == freport) fprintf(freport, "is a sequence of elements, meaning that it has a pointer member `%s` pointing to an array of `%s` values and has an array size `%s`", ident(q->sym->name), c_type(q->info.typ->ref), ident(q->next->sym->name)); else fprintf(fd, "/* Sequence of %s schema type: */\n", x); } else { if (fd == freport) { int d = get_Darraydims(typ); if (!d) fprintf(freport, "is a SOAP-encoded array, meaning that the type name lacks a prefix and it has a member `%s` pointing to an array of `%s` values and has an array size member `%s`", ident(q->sym->name), c_type(q->info.typ->ref), ident(q->next->sym->name)); else fprintf(freport, "is a %dD SOAP-encoded array, meaning that the type name lacks a prefix and it has a member `%s` pointing to an array of `%s` values and has an array `%s[%d]` of sizes for each dimension", d, ident(q->sym->name), c_type(q->info.typ->ref), ident(q->next->sym->name), d); } else { if (!eflag && soap_version >= 0) { sprintf(errbuf, "SOAP-encoded array '%s' is specific to SOAP encoding only and not compliant with WS-I Basic Profile 1.0a", c_type(typ)); compliancewarn(errbuf); } fprintf(fd, "/* SOAP encoded array of %s schema type: */\n", x); } } } else if (is_primclass(typ)) { if (fd == freport) fprintf(freport, "is a simple content wrapper *`%s`*, meaning it wraps a primitive type", x); else fprintf(fd, "/* simple XSD type '%s': */\n", x); } else if (is_header_or_fault(typ)) { if (fd == freport) { s = ident(typ->id->name); fprintf(freport, "is the SOAP protocol *`<%s>`* element", ns_convert(p->sym->name)); if (!strcmp(s, "SOAP_ENV__Header")) { int flag = 0; fprintf(freport, " with message-specific child elements that are mandatory to process when attributed with *`mustUnderstand=\"true\"`*. Headers are usually added and processed by plugins. To remove the SOAP Header when sending or returning a message, set `soap->header = NULL`. Use `soap_header(struct soap *soap)` to allocate a `%s` which will be pointed to by `soap->header`, then initialize it with `soap_default_SOAP_ENV__Header(soap, soap->header)` and set one or more of its data members (if any):\n\n", c_type(typ)); if (typ->ref && ((Table*)typ->ref)->list) { for (q = ((Table*)typ->ref)->list; q; q = q->next) { if (q->info.typ->type != Tfun && !is_transient(q->info.typ)) { fprintf(fd, "- `%s%s` ", c_storage(q->info.sto), c_type_id(q->info.typ, q->sym->name)); if (q->info.sto & SmustUnderstand) fprintf(fd, "element %s with mustUnderstand=\"true\">", ns_add(q, nse)); else fprintf(fd, "element %s", ns_add(q, nse)); if ((q->info.typ->type == Tclass || q->info.typ->type == Tstruct || q->info.typ->type == Tenum || q->info.typ->type == Tenumsc || is_typedef(q->info.typ)) && !is_stdstr(q->info.typ)) fprintf(freport, ", see also %s ", ident(q->info.typ->id->name), ident(q->info.typ->id->name)); fprintf(freport, "\n"); } } flag = 1; } if (!flag) fprintf(freport, "*No SOAP headers are applicable*"); fprintf(freport, "\n\nThis struct will be auto-generated when it is not explicitly declared in an interface file,"); } else if (!strcmp(s, "SOAP_ENV__Fault")) { fprintf(freport, " with fault information and details returned by a service that triggered the error. At the server side, a fault can be explicitly set within a service operation by calling and returning:\n\n- `int soap_sender_fault(struct soap *soap, const char *faultstring, const char *XML)` return this error code when the sender is at fault (irrecoverable)\n- `int soap_receiver_fault(struct soap *soap, const char *faultstring, const char *XML)` return this error code when the receiver is at fault (recoverable, sender may retry)\n\nA service operation may also return an HTTP status/error code (201 to 999).\n\nAt the client side the (proxy) call returns the error code which is also stored in `soap->error`. The fault structure is pointed to by `soap->fault`. The fault can be displayed with:\n\n- `void soap_print_fault(struct soap *soap, FILE *fd)` display fault\n- `void soap_print_fault_location(struct soap *soap, FILE *fd)` display the location of the fault in the XML message that caused it\n- `void soap_sprint_fault(struct soap *soap, char *buf, size_t len)` write fault to buffer\n- `void soap_stream_fault(struct soap *soap, std::ostream&)` write fault to stream\n- `const char **soap_faultstring(struct soap *soap)` returns a pointer to the SOAP Fault string/reason to get or set this string\n- `const char **soap_faultdetail(struct soap *soap)` returns a pointer to the SOAP Fault detail XML to get or set this string"); fprintf(freport, "\n\nThis struct will be auto-generated when it is not explicitly declared in an interface file"); } else if (!strcmp(s, "SOAP_ENV__Detail")) { int flag = 0; fprintf(freport, " with details returned by a service that triggered the error. Fault details are added and processed by plugins by setting the `detail` (for SOAP 1.1) or `SOAP_ENV__Detail` (for SOAP 1.2) member of `struct SOAP_ENV__Fault` and then setting one ore more of the detail members:\n\n"); if (typ->ref && ((Table*)typ->ref)->list) { for (q = ((Table*)typ->ref)->list; q; q = q->next) { if (q->info.typ->type != Tfun && !is_transient(q->info.typ)) { fprintf(fd, "- `%s%s` ", c_storage(q->info.sto), c_type_id(q->info.typ, q->sym->name)); if (is_XML(q->info.typ) && is_invisible(q->sym->name)) fprintf(fd, "catch-all XML in literal XML string"); else if (is_XML(q->info.typ)) fprintf(fd, "element *`<%s>`* with XML in literal XML string", ns_add(q, nse)); else if (is_anyType(q->info.typ)) fprintf(fd, "catch-all XML in DOM"); else if (is_anytype(q)) { fprintf(fd, "element *`<%s>`* serialized with C/C++ type `%s` = `SOAP_TYPE_Name`", ns_add(q->next, nse), ident(q->sym->name)); q = q->next; } else fprintf(fd, "element *`<%s>`*", ns_add(q, nse)); if ((q->info.typ->type == Tclass || q->info.typ->type == Tstruct || q->info.typ->type == Tenum || q->info.typ->type == Tenumsc || is_typedef(q->info.typ)) && !is_stdstr(q->info.typ)) fprintf(freport, ", see also %s ", ident(q->info.typ->id->name), ident(q->info.typ->id->name)); fprintf(fd, "\n"); } } flag = 1; } if (!flag) fprintf(freport, "No SOAP Fault details are applicable"); fprintf(freport, "\n\nThis struct will be auto-generated when it is not explicitly declared in an interface file,"); } else { fprintf(freport, ". This struct is for internal use and will be auto-generated when not explicitly declared.\n\n"); gen_report_hr(); return; } } else fprintf(fd, "/* %s: */\n", ident(typ->id->name)); } else if (typ->type == Tunion) { if (fd == freport) fprintf(freport, "is serializable, but only when used as a member of a struct or class with a union variant selector"); else fprintf(fd, "/* union serializable only when used as a member of a struct or class with a union variant selector */\n"); } else if (x && *x) { if (fd == freport) fprintf(freport, "is serialized as XSD type *`%s`*", x); else fprintf(fd, "/* complex XSD type '%s': */\n", x); } else if (fd == freport) fprintf(freport, "is serializable"); if (fd == freport && is_mutable(p)) fprintf(freport, " and is declared mutable, meaning that multiple declarations in interface files are collected into one structure"); if (fd == freport && typ->type == Tstruct) { int flag = 0; Tnode *r; for (r = Tptr[Tfun]; r; r = r->next) { if (!strcmp(r->id->name, p->sym->name)) { if (*x) fprintf(freport, " and is internally used as the operation request element *`<%s>`* with the request parameters of service operation `%s()`", x, ident(r->id->name)); else fprintf(freport, " and is internally used to wrap the request element(s) of the service operation `%s()`", ident(r->id->name)); flag = 1; } else if (r->response == p) { fprintf(freport, " and is internally used as the operation response element *`<%s>`* with the response parameters of service operation `%s()`", x, ident(r->id->name)); flag = 1; } } if (flag) { fprintf(freport, ".\n\n"); gen_report_hr(); return; } } fflush(fd); if (fd == freport) fprintf(freport, ", and has the following auto-completed declaration in %s:\n", soapStub); if (typ->type == Tstruct) { int permission = -1; int flag = 0; DBGLOG(fprintf(stderr, "\nstruct %s\n", typ->id->name)); if (cflag) { if (fd == freport) fprintf(freport, "\n struct %s {", ident(typ->id->name)); else fprintf(fd, "struct %s {", ident(typ->id->name)); } else { if (fd == freport) fprintf(freport, "\n struct SOAP_CMAC %s {", ident(typ->id->name)); else fprintf(fd, "struct SOAP_CMAC %s {", ident(typ->id->name)); } for (q = ((Table*)typ->ref)->list; q; q = q->next) { if (!cflag && permission != (q->info.sto & (Sprivate | Sprotected))) { if (q->info.sto & Sprivate) fprintf(fd, "\n private:"); else if (q->info.sto & Sprotected) fprintf(fd, "\n protected:"); else fprintf(fd, "\n public:"); permission = (q->info.sto & (Sprivate | Sprotected)); } if (cflag && q->info.typ->type == Tfun) continue; if (cflag && (q->info.sto & Stypedef)) continue; if (flag) flag = 0; else if (q->info.typ->type == Tfun || (q->info.sto & Stypedef)) ; else if (is_anyAttribute(q->info.typ)) fprintf(fd, "\n /** XML DOM attribute list */"); else if (q->info.sto & Sattribute) { if (q->info.minOccurs >= 1) fprintf(fd, "\n /** Required attribute '%s' of XSD type '%s' */", ns_add(q, nsa), wsdl_type(q->info.typ, "")); else fprintf(fd, "\n /** Optional attribute '%s' of XSD type '%s' */", ns_add(q, nsa), wsdl_type(q->info.typ, "")); } else if (is_soapref(q->info.typ)) fprintf(fd, "\n /** Context that manages this object */"); else if (q->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fd, "\n /** Not serialized */"); else if (q->info.sto & SmustUnderstand) fprintf(fd, "\n /** MustUnderstand */"); else if (!is_dynamic_array(typ) && is_repetition(q)) { if (q->info.maxOccurs > 1) fprintf(fd, "\n /** Sequence of " SOAP_LONG_FORMAT " to " SOAP_LONG_FORMAT " elements '%s' of XSD type '%s'", q->info.minOccurs, q->info.maxOccurs, ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); else if (q->info.minOccurs >= 1) fprintf(fd, "\n /** Sequence of at least " SOAP_LONG_FORMAT " elements '%s' of XSD type '%s'", q->info.minOccurs, ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); else fprintf(fd, "\n /** Sequence of elements '%s' of XSD type '%s'", ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); fprintf(fd, " stored in dynamic array %s of length %s */", ident(q->next->sym->name), ident(q->sym->name)); flag = 1; } else if (is_anytype(q)) { fprintf(fd, "\n /** Any type of element '%s' assigned to %s with its SOAP_TYPE_T assigned to %s */\n /** Do not create a cyclic data structure throught this member unless SOAP encoding or SOAP_XML_GRAPH are used for id-ref serialization */", ns_add(q->next, nse), ident(q->next->sym->name), ident(q->sym->name)); flag = 1; } else if (is_choice(q)) { Entry *r; fprintf(fd, "\n /** Union with %s variant selector %s set to one of:", c_type(q->next->info.typ), ident(q->sym->name)); if ((Table*)q->next->info.typ->ref) for (r = ((Table*)q->next->info.typ->ref)->list; r; r = r->next) fprintf(fd, " %s", soap_union_member(q->next->info.typ, r)); fprintf(fd, " */"); flag = 1; } else if (is_anyType(q->info.typ)) fprintf(fd, "\n /** XML DOM element node graph */"); else if (is_item(q)) fprintf(fd, "\n /** Simple content of XSD type '%s' wrapped by this struct */", wsdl_type(q->info.typ, "")); else if (q->info.typ->type != Tfun && q->info.typ->type != Tunion && !(q->info.sto & (Sconst | Sprivate | Sprotected)) && !(q->info.sto & Sattribute) && !is_transient(q->info.typ) && !is_external(q->info.typ) && strncmp(q->sym->name, "__", 2)) { if (q->info.maxOccurs > 1) fprintf(fd, "\n /** Sequence of " SOAP_LONG_FORMAT " to " SOAP_LONG_FORMAT " elements '%s' of XSD type '%s' */", q->info.minOccurs, q->info.maxOccurs, ns_add(q, nse), wsdl_type(q->info.typ, "")); else if (q->info.minOccurs >= 1) { if (q->info.nillable) fprintf(fd, "\n /** Required nillable (xsi:nil when NULL) element '%s' of XSD type '%s' */", ns_add(q, nse), wsdl_type(q->info.typ, "")); else fprintf(fd, "\n /** Required element '%s' of XSD type '%s' */", ns_add(q, nse), wsdl_type(q->info.typ, "")); } else fprintf(fd, "\n /** Optional element '%s' of XSD type '%s' */", ns_add(q, nse), wsdl_type(q->info.typ, "")); } else if (is_external(q->info.typ)) fprintf(fd, "\n /** Typedef %s with custom serializer for %s */", c_type_sym(q->info.typ), c_type(q->info.typ)); else if (is_transient(q->info.typ)) fprintf(fd, "\n /** Transient (not serialized) */"); else if (is_imported(q->info.typ)) fprintf(fd, "\n /** Type imported from %s */", q->info.typ->imported); if (fd != freport) { if (!is_dynamic_array(typ) && !is_primclass(typ)) { if (!strncmp(q->sym->name, "__size", 6)) { if (q->info.typ->type != Tint && q->info.typ->type != Tsize) { sprintf(errbuf, "Member field '%s' is not an int or size_t type in struct '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } else if (!q->next || (q->next->info.typ->type != Tpointer && !is_smart(q->next->info.typ))) { sprintf(errbuf, "Member field '%s' is not followed by a pointer member field in struct '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } else if (q->info.typ->type == Tint && !strncmp(q->sym->name, "__type", 6)) { if (!q->next || ((q->next->info.typ->type != Tpointer || ((Tnode*)q->next->info.typ->ref)->type != Tvoid))) { sprintf(errbuf, "Member field '%s' is not followed by a void pointer member field in struct '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } else if (q->info.typ->type == Tint && !strncmp(q->sym->name, "__union", 7)) { if (!q->next || ((q->next->info.typ->type != Tunion))) { sprintf(errbuf, "Member field '%s' is not followed by a union member field in struct '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } else if ((q->info.typ->type == Tint || q->info.typ->type == Tsize) && (q->info.sto & Sspecial)) { if (!q->next || (q->next->info.typ->type != Tpointer && !is_smart(q->next->info.typ) && (q->next->info.typ->type != Tunion))) { sprintf(errbuf, "Member field '%s' is not followed by a pointer or union member field in struct '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } } } fprintf(fd, "\n %s", c_storage(q->info.sto)); if (q->sym == typ->id && q->info.typ->type == Tfun) /* to emit constructor in a struct: constructor has no return value */ ((FNinfo*)q->info.typ->ref)->ret = mknone(); fprintf(fd, "%s", c_type_id(q->info.typ, q->sym->name)); if (q->info.sto & Sconstobj) fprintf(fd, " const"); if (q->info.sto & Sfinal) fprintf(fd, " final"); if (q->info.sto & Soverride) fprintf(fd, " override"); if (q->info.sto & Sconst) fprintf(fd, "%s;", c_init(q)); else { fprintf(fd, ";"); if (q->info.hasval) { if (q->info.fixed) fprintf(fd, "\t /**< initialized with fixed value%s */", c_init(q)); else fprintf(fd, "\t /**< initialized with default value%s */", c_init(q)); } else if (q->info.ptrval) { if (q->info.fixed) fprintf(fd, "\t///< optional with fixed value%s", c_init(q)); else fprintf(fd, "\t///< optional with default value%s", c_init(q)); } } } if (!cflag && !is_transient(typ) && !is_volatile(typ)) { fprintf(fd, "\n public:\n /** Return unique type id %s */\n long soap_type() const { return %s; }", soap_type(typ), soap_type(typ)); if ((s = union_member(typ))) { if (fd != freport) { sprintf(errbuf, "struct '%s' cannot be assigned a default constructor because it is directly or indirectly used as a member of union '%s'", typ->id->name, ident(s)); semwarn(errbuf); } } else { if (!has_constructor(typ)) { Table *t; Entry *p; fprintf(fd, "\n /** Constructor with member initializations */"); gen_constructor(fd, typ); for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Treference || p->info.typ->type == Trvalueref) { sprintf(errbuf, "no constructor for '%s' to explicitly initialize the reference member '%s'", typ->id->name, p->sym->name); semwarn(errbuf); } } } } /* not necessary to add a default destructor, keep the C -> C++ transparency of structs if (!has_destructor(typ)) fprintf(fd, "\n\t ~%s() { }", ident(typ->id->name)); */ } if (Ecflag) fprintf(fd, "\n /** Friend duplicator */\n friend SOAP_FMAC1 %s * SOAP_FMAC2 %s_dup_%s(struct soap*, %s*, %s);", c_type(typ), fprefix, c_ident(typ), c_type(typ), c_type_constptr_id(typ, "const*")); if (Edflag) fprintf(fd, "\n /** Friend deleter */\n friend SOAP_FMAC1 void SOAP_FMAC2 %s_del_%s(%s);", fprefix, c_ident(typ), c_type_constptr_id(typ, "const*")); fprintf(fd, "\n /** Friend allocator */\n friend SOAP_FMAC1 %s * SOAP_FMAC2 %s_instantiate_%s(struct soap*, int, const char*, const char*, size_t*);", c_ident(typ), fprefix, c_ident(typ)); } if (!((Table*)typ->ref)->list) { if (cflag && fd != freport) fprintf(fd, "\n#ifdef WITH_NOEMPTYSTRUCT\n\tchar dummy;\t/* empty struct is a GNU extension */\n#endif"); } if (fd == freport) { fprintf(freport, "\n };\n\n"); if (!is_transient(p->info.typ) && !is_header_or_fault(p->info.typ)) { const char *ns = prefix_of(p->sym->name); int uf = uflag; uflag = 1; gen_report_members(p, nsa, nse); fprintf(freport, "The following operations on `%s` are available:\n\n", c_type(p->info.typ)); if (cflag) { fprintf(freport, "- `(%s *)soap_malloc(struct soap*, sizeof(%s))` raw managed allocation\n", c_type(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `%s *soap_new_%s(struct soap*, int n)` managed allocation with default initialization of one `%s` when `n` = 1 or array `%s[n]` when `n` > 1\n", c_type(p->info.typ), c_ident(p->info.typ), c_type(p->info.typ), c_type(p->info.typ)); } else { fprintf(freport, "- `%s *soap_new_%s(struct soap*)` managed allocation with default initialization\n", c_type(p->info.typ), c_ident(p->info.typ)); fprintf(freport, "- `%s *soap_new_%s(struct soap*, int n)` managed allocation with default initialization of array `%s[n]`\n", c_type(p->info.typ), c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `%s *soap_new_req_%s(struct soap*", c_type(p->info.typ), c_ident(p->info.typ)); gen_report_req_params(p->info.typ); fprintf(freport, ")` managed allocation with required members assigned the values of these parameters, with all other members default initialized\n"); fprintf(freport, "- `%s *soap_new_set_%s(struct soap*", c_type(p->info.typ), c_ident(p->info.typ)); gen_report_set_params(p->info.typ); fprintf(freport, ")` managed allocation with the public members assigned the values of these parameters\n"); } fprintf(freport, "- `void soap_default_%s(struct soap*, %s*)` (re)set to default initialization values\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_write_%s(struct soap*, const %s*)` serialize to XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_PUT_%s(struct soap*, const char *URL, const %s*)` REST PUT XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_POST_send_%s(struct soap*, const char *URL, const %s*)` REST POST send XML (MUST be followed by a `soap_POST_recv_Type`), returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_read_%s(struct soap*, %s*)` deserialize from XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_GET_%s(struct soap*, const char *URL, %s*)` REST GET XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_POST_recv_%s(struct soap*, %s*)` REST POST receive XML (after a `soap_POST_send_Type`), returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); if (!wflag) { if (!is_invisible(p->sym->name) && !has_ns_eq("xsd", p->sym->name) && !is_header_or_fault(typ)) { s = ns_of(p->sym->name); if (s && *s && has_ns_eq(NULL, p->sym->name)) fprintf(freport, "\nThe XSD component of XSD type *`%s`* in schema \"[%s](#doc-namespaces)\" is:\n\n", x, s); else fprintf(freport, "\nThe XSD component of XSD type *`%s`* is:\n\n", x); gen_schema_type(freport, NULL, p, ns, ns, 1, NULL, NULL); } } fprintf(freport, "\n"); uflag = uf; } } else fprintf(fd, "\n};"); } else if (typ->type == Tclass) { int permission = -1; int flag = 0; DBGLOG(fprintf(stderr, "\nclass %s\n", typ->id->name)); if (fd == freport) fprintf(fd, "\n class SOAP_CMAC %s", ident(typ->id->name)); else fprintf(fd, "class SOAP_CMAC %s", ident(typ->id->name)); if (typ->base) fprintf(fd, " : public %s", ident(typ->base->name)); fprintf(fd, " {"); for (q = ((Table*)typ->ref)->list; q; q = q->next) { if (permission != (q->info.sto & (Sprivate | Sprotected))) { if (q->info.sto & Sprivate) fprintf(fd, "\n private:"); else if (q->info.sto & Sprotected) fprintf(fd, "\n protected:"); else fprintf(fd, "\n public:"); permission = (q->info.sto & (Sprivate | Sprotected)); } if (is_anyAttribute(q->info.typ)) fprintf(fd, "\n /// XML DOM attribute list"); else if (q->info.sto & Sattribute) { if (q->info.minOccurs >= 1) fprintf(fd, "\n /// required attribute '%s' of XSD type '%s'", ns_add(q, nsa), wsdl_type(q->info.typ, "")); else fprintf(fd, "\n /// optional attribute '%s' of XSD type '%s'", ns_add(q, nsa), wsdl_type(q->info.typ, "")); } if (flag) flag = 0; else if (q->info.typ->type == Tfun || (q->info.sto & Stypedef)) ; else if (is_soapref(q->info.typ)) fprintf(fd, "\n /// Context that manages this object"); else if (q->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fd, "\n /// Not serialized"); else if (q->info.sto & SmustUnderstand) fprintf(fd, "\n /// MustUnderstand"); else if (!is_dynamic_array(typ) && is_repetition(q)) { if (q->info.maxOccurs > 1) fprintf(fd, "\n /// Sequence of " SOAP_LONG_FORMAT " to " SOAP_LONG_FORMAT " elements '%s' of XSD type '%s'", q->info.minOccurs, q->info.maxOccurs, ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); else if (q->info.minOccurs >= 1) fprintf(fd, "\n /// Sequence of at least " SOAP_LONG_FORMAT " elements '%s' of XSD type '%s'", q->info.minOccurs, ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); else fprintf(fd, "\n /// Sequence of elements '%s' of XSD type '%s'", ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); fprintf(fd, " stored in dynamic array %s of length %s", ident(q->next->sym->name), ident(q->sym->name)); flag = 1; } else if (is_anytype(q)) { fprintf(fd, "\n /// Any type of element '%s' assigned to %s with its SOAP_TYPE_T assigned to %s\n /// Do not create a cyclic data structure throught this member unless SOAP encoding or SOAP_XML_GRAPH are used for id-ref serialization", ns_add(q->next, nse), ident(q->next->sym->name), ident(q->sym->name)); flag = 1; } else if (is_choice(q)) { Entry *r; fprintf(fd, "\n /// Union with %s variant selector %s set to one of:", c_type(q->next->info.typ), ident(q->sym->name)); for (r = ((Table*)q->next->info.typ->ref)->list; r; r = r->next) fprintf(fd, " %s", soap_union_member(q->next->info.typ, r)); flag = 1; } else if (is_anyType(q->info.typ)) fprintf(fd, "\n /// XML DOM element node graph"); else if (is_item(q)) fprintf(fd, "\n /// Simple content of XSD type '%s' wrapped by this struct", wsdl_type(q->info.typ, "")); else if (q->info.typ->type != Tfun && q->info.typ->type != Tunion && !(q->info.sto & (Sconst | Sprivate | Sprotected)) && !(q->info.sto & Sattribute) && !is_transient(q->info.typ) && !is_external(q->info.typ) && strncmp(q->sym->name, "__", 2)) { if (q->info.maxOccurs > 1) fprintf(fd, "\n /// Sequence of " SOAP_LONG_FORMAT " to " SOAP_LONG_FORMAT " elements '%s' of XSD type '%s'", q->info.minOccurs, q->info.maxOccurs, ns_add(q, nse), wsdl_type(q->info.typ, "")); else if (q->info.minOccurs >= 1) { if (q->info.nillable) fprintf(fd, "\n /// Required nillable (xsi:nil when NULL) element '%s' of XSD type '%s'", ns_add(q, nse), wsdl_type(q->info.typ, "")); else fprintf(fd, "\n /// Required element '%s' of XSD type '%s'", ns_add(q, nse), wsdl_type(q->info.typ, "")); } else fprintf(fd, "\n /// Optional element '%s' of XSD type '%s'", ns_add(q, nse), wsdl_type(q->info.typ, "")); } else if (is_external(q->info.typ)) fprintf(fd, "\n /// Typedef %s with custom serializer for %s", c_type_sym(q->info.typ), c_type(q->info.typ)); else if (is_transient(q->info.typ)) fprintf(fd, "\n /// Transient (not serialized)"); else if (is_imported(q->info.typ)) fprintf(fd, "\n /// Type imported from %s", q->info.typ->imported); if (fd != freport) { if (!is_dynamic_array(typ) && !is_primclass(typ)) { if (!strncmp(q->sym->name, "__size", 6)) { if (q->info.typ->type != Tint && q->info.typ->type != Tsize) { sprintf(errbuf, "Member field '%s' is not an int or size_t type in class '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } else if (!q->next || (q->next->info.typ->type != Tpointer && !is_smart(q->next->info.typ))) { sprintf(errbuf, "Member field '%s' is not followed by a pointer member field in class '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } else if (q->info.typ->type == Tint && !strncmp(q->sym->name, "__type", 6)) { if (!q->next || ((q->next->info.typ->type != Tpointer || ((Tnode*)q->next->info.typ->ref)->type != Tvoid))) { sprintf(errbuf, "Member field '%s' is not followed by a void pointer member field in class '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } else if (q->info.typ->type == Tint && !strncmp(q->sym->name, "__union", 7)) { if (!q->next || ((q->next->info.typ->type != Tunion))) { sprintf(errbuf, "Member field '%s' is not followed by a union member field in class '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } else if ((q->info.typ->type == Tint || q->info.typ->type == Tsize) && (q->info.sto & Sspecial)) { if (!q->next || (q->next->info.typ->type != Tpointer && !is_smart(q->next->info.typ) && (q->next->info.typ->type != Tunion))) { sprintf(errbuf, "Member field '%s' is not followed by a pointer or union member field in class '%s'", q->sym->name, typ->id->name); semwarn(errbuf); } } } } fprintf(fd, "\n %s", c_storage(q->info.sto)); fprintf(fd, "%s", c_type_id(q->info.typ, q->sym->name)); if (q->info.sto & Sconstobj) fprintf(fd, " const"); if (q->info.sto & Sfinal) fprintf(fd, " final"); if (q->info.sto & Soverride) fprintf(fd, " override"); if (q->info.sto & Sabstract) fprintf(fd, " = 0;"); else if (q->info.sto & Sconst) fprintf(fd, "%s;", c_init(q)); else { fprintf(fd, ";"); if (q->info.hasval) { if (q->info.fixed) fprintf(fd, "\t///< initialized with fixed value%s", c_init(q)); else fprintf(fd, "\t///< initialized with default value%s", c_init(q)); } else if (q->info.ptrval) { if (q->info.fixed) fprintf(fd, "\t///< optional with fixed value%s", c_init(q)); else fprintf(fd, "\t///< optional with default value%s", c_init(q)); } } } if (!is_transient(typ) && !is_volatile(typ)) { fprintf(fd, "\n public:"); fprintf(fd, "\n /// Return unique type id %s", soap_type(typ)); fprintf(fd, "\n virtual long soap_type(void) const { return %s; }", soap_type(typ)); fprintf(fd, "\n /// (Re)set members to default values"); fprintf(fd, "\n virtual void soap_default(struct soap*);"); fprintf(fd, "\n /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures"); fprintf(fd, "\n virtual void soap_serialize(struct soap*) const;"); if (Etflag) fprintf(fd, "\n virtual void soap_traverse(struct soap*, const char *s, soap_walker, soap_walker);"); fprintf(fd, "\n /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK"); fprintf(fd, "\n virtual int soap_put(struct soap*, const char *tag, const char *type) const;"); fprintf(fd, "\n /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK"); fprintf(fd, "\n virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const;"); fprintf(fd, "\n /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error"); fprintf(fd, "\n virtual void *soap_get(struct soap*, const char *tag, const char *type);"); fprintf(fd, "\n /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error"); fprintf(fd, "\n virtual void *soap_in(struct soap*, const char *tag, const char *type);"); fprintf(fd, "\n /// Return a new object of type %s, default initialized and not managed by a soap context", c_type(typ)); fprintf(fd, "\n virtual %s *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(%s); }", c_type(typ), c_type(typ)); if (Ecflag) { fprintf(fd, "\n /// Return a duplicate of this object by deep copying, replicating all deep cycles and shared pointers when a managing soap context is provided as argument.\n /// Deep copy is a tree when argument is NULL, but the presence of deep cycles will lead to non-termination.\n /// Use flag SOAP_XML_TREE with a managing context to copy into a tree without cycles and pointers to shared objects"); fprintf(fd, "\n virtual %s *soap_dup(struct soap *soap = NULL, void *dest = NULL) const { return %s_dup_%s(soap, (%s*)dest, this); }", c_type(typ), fprefix, c_ident(typ), c_type(typ)); } if (Edflag) { fprintf(fd, "\n /// Delete heap-allocated members of this object by deep deletion ONLY IF this object and all of its (deep) members are not managed by a soap context AND the deep structure is a tree (no cycles and co-referenced objects by way of multiple (non-smart) pointers pointing to the same data)\n /// Can be safely used after soap_dup(NULL) to delete the deep copy"); fprintf(fd, "\n virtual void soap_del(void) const { %s_del_%s(this); }", fprefix, c_ident(typ)); } if ((s = union_member(typ))) { if (fd != freport) { sprintf(errbuf, "class '%s' cannot be assigned a default constructor because it is directly or indirectly used as a member of union '%s'", typ->id->name, ident(s)); semwarn(errbuf); } } else { if (!has_constructor(typ)) { Table *t; Entry *p; fprintf(fd, "\n public:\n /// Constructor with initializations"); gen_constructor(fd, typ); for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Treference || p->info.typ->type == Trvalueref) { sprintf(errbuf, "no constructor for '%s' to explicitly initialize the reference member '%s'", typ->id->name, p->sym->name); semwarn(errbuf); } } } } if (!has_destructor(typ)) fprintf(fd, "\n virtual ~%s() { }", c_ident(typ)); } if (Ecflag) fprintf(fd, "\n /// Friend duplicator\n friend SOAP_FMAC1 %s * SOAP_FMAC2 %s_dup_%s(struct soap*, %s*, %s);", c_type(typ), fprefix, c_ident(typ), c_type(typ), c_type_constptr_id(typ, "const*")); if (Edflag) fprintf(fd, "\n /// Friend deleter\n friend SOAP_FMAC1 void SOAP_FMAC2 %s_del_%s(%s);", fprefix, c_ident(typ), c_type_constptr_id(typ, "const*")); fprintf(fd, "\n /// Friend allocator used by soap_new_%s(struct soap*, int)\n friend SOAP_FMAC1 %s * SOAP_FMAC2 %s_instantiate_%s(struct soap*, int, const char*, const char*, size_t*);", c_ident(typ), c_ident(typ), fprefix, c_ident(typ)); /* the use of 'friend' causes problems linking static functions. Adding these friends could enable serializing protected/private members (which is not implemented) fprintf(fd, "\n friend %s *soap_in_%s(struct soap*, const char*, %s*, const char*);", typ->id->name, typ->id->name, typ->id->name); fprintf(fd, "\n friend int soap_out_%s(struct soap*, const char*, int, const %s*, const char*);", typ->id->name, typ->id->name); */ } if (fd == freport) { fprintf(freport, "\n };\n\n"); if (!is_transient(p->info.typ) && !is_header_or_fault(p->info.typ)) { const char *ns = prefix_of(p->sym->name); int uf = uflag; uflag = 1; gen_report_members(p, nsa, nse); fprintf(freport, "The following operations on `%s` are available:\n\n", c_type(p->info.typ)); fprintf(freport, "- `%s *soap_new_%s(struct soap*)` managed allocation with default initialization\n", c_type(p->info.typ), c_ident(p->info.typ)); fprintf(freport, "- `%s *soap_new_%s(struct soap*, int n)` managed allocation of array `%s[n]`\n", c_type(p->info.typ), c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `%s *soap_new_req_%s(struct soap*", c_type(p->info.typ), c_ident(p->info.typ)); gen_report_req_params(p->info.typ); fprintf(freport, ")` managed allocation with required members assigned the values of these parameters, with all other members default initialized\n"); fprintf(freport, "- `%s *soap_new_set_%s(struct soap*", c_type(p->info.typ), c_ident(p->info.typ)); gen_report_set_params(p->info.typ); fprintf(freport, ")` managed allocation with public members assigned the values of these parameters\n"); if (is_external(p->info.typ) || is_volatile(p->info.typ)) fprintf(freport, "- `void soap_default_%s(struct soap*, %s*)` (re)set members to default initialization values\n", c_ident(p->info.typ), c_type(p->info.typ)); else fprintf(freport, "- `void %s::soap_default(struct soap*)` (re)set members to default values\n", c_type(p->info.typ)); fprintf(freport, "- `int soap_write_%s(struct soap*, const %s*)` serialize to XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_PUT_%s(struct soap*, const char *URL, const %s*)` REST PUT XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_POST_send_%s(struct soap*, const char *URL, const %s*)` REST POST send XML (MUST be followed by a `soap_POST_recv_Type`), returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_read_%s(struct soap*, %s*)` deserialize from XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_GET_%s(struct soap*, const char *URL, %s*)` REST GET XML, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `int soap_POST_recv_%s(struct soap*, %s*)` REST POST receive XML (after a `soap_POST_send_Type`), returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type(p->info.typ)); if (!wflag) { if (!is_invisible(p->sym->name) && !has_ns_eq("xsd", p->sym->name) && !is_header_or_fault(typ)) { s = ns_of(p->sym->name); if (s && *s && has_ns_eq(NULL, p->sym->name)) fprintf(freport, "\nThe XSD component of XSD type *`%s`* in schema \"[%s](#doc-namespaces)\" is:\n\n", x, s); else fprintf(freport, "\nThe XSD component of XSD type *`%s`* is:\n\n", x); gen_schema_type(freport, NULL, p, ns, ns, 1, NULL, NULL); } } fprintf(freport, "\n"); uflag = uf; } } else fprintf(fd, "\n};"); } else if (typ->type == Tunion) { int i = 1; if (fd == freport) fprintf(fd, "\n union %s\n {", ident(typ->id->name)); else fprintf(fd, "union %s\n{", ident(typ->id->name)); for (q = ((Table*)typ->ref)->list; q; q = q->next) { if (q->info.typ->type == Tfun) { if (q->sym == typ->id) /* to emit constructor in a union: constructor has no return value */ ((FNinfo*)q->info.typ->ref)->ret = mknone(); } else { fprintf(fd, "\n #define %s\t(%d)\t/**< union variant selector value for member %s */", soap_union_member(typ, q), i, ident(q->sym->name)); i++; if (q->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fd, "\n /** Not serialized */"); else if (is_transient(q->info.typ)) fprintf(fd, "\n /** Transient (not serialized) */"); else if (is_external(q->info.typ)) fprintf(fd, "\n /** Typedef %s with custom serializer for %s */", c_type_sym(q->info.typ), c_type(q->info.typ)); if (q->info.sto & Sattribute) { sprintf(errbuf, "union '%s' contains attribute declarations", typ->id->name); semwarn(errbuf); } } fprintf(fd, "\n %s", c_storage(q->info.sto)); fprintf(fd, "%s;", c_type_id(q->info.typ, q->sym->name)); } if (!((Table*)typ->ref)->list) { if (cflag && fd != freport) fprintf(fd, "\n#ifdef WITH_NOEMPTYSTRUCT\n\tchar dummy;\t/* empty union is a GNU extension */\n#endif"); } if (fd == freport) fprintf(fd, "\n };\n\n"); else fprintf(fd, "\n};"); } if (fd == freport) { gen_report_hr(); } else { if (is_volatile(typ)) fprintf(fd, "\n#endif"); fprintf(fd, "\n#endif"); if (is_header_or_fault(typ) || is_body(typ)) fprintf(fd, "\n#endif"); } fflush(fd); } void gen_constructor(FILE *fd, Tnode *typ) { Table *t = typ->ref; Entry *p; const char *sep = " :"; if (!t) return; fprintf(fd, "\n %s()", c_ident(typ)); for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) continue; if ((p->info.sto & Sstatic)) continue; if (p->info.hasval) fprintf(fd, "%s %s(%s)", sep, ident(p->sym->name), c_init_a(p, "")); else fprintf(fd, "%s %s()", sep, ident(p->sym->name)); sep = ","; } fprintf(fd, " { }"); fflush(fd); } void generate_header(Table *t) { Service *sp; Entry *p, *q; int i; if (rflag) { fprintf(freport, "
\n@tableofcontents @section README\n\nTo view this file in the Firefox web browser, download readmeviewer.html from https://www.genivia.com/files/readmeviewer.html.zip, unzip and copy it to the same directory where this soapReadme.md file is located, then open it in Firefox to view the contents of soapReadme.md.\n\nThis markdown file is compatible with Doxygen.\n
\n\n"); fprintf(freport, "## Overview {#doc-overview}\n\nThis report was generated by soapcpp2 v" VERSION " for interface file [%s](%s) with options -r %s%s%s%s%s%s%s%s%s\n\n", filename, filename, copt ? copt : "", soap_version < 0 ? " -0 " : " ", Cflag ? "-C " : "", Sflag ? "-S " : "", Lflag ? "-L " : "", iflag ? "-i " : jflag ? "-j " : "", wflag ? "-w " : "", namespaceid ? "-q" : strcmp(prefix, "soap") ? "-p" : "", strcmp(prefix, "soap") ? prefix : ""); for (sp = services; sp; sp = sp->next) { if (sp->documentation) { gen_text(freport, sp->documentation); fprintf(freport, "\n\n"); } } fprintf(freport, "### Tools\n\nThe **wsdl2h** command line tool takes a set of WSDL and XSD files to generate a data binding interface file. This interface file is similar to a C/C++ header file and contains declarations of C/C++ types and functions with explanatory comments, directives, and annotations. Types are declared in this interface file as serializable. Functions are declared as Web service operations for the client and server sides.\n\nThe **soapcpp2** command line tool takes an interface file (i.e. a header file) such as [%s](%s) to generate the data binding implementation. This implementation includes XML serializers and source code for the client and server side. An interface file for soapcpp2 can be a regular C/C++ header file with type and function declarations (without code), and include annotations to declare XML schema-related properties.\n\n", filename, filename); fprintf(freport, "### Files\n\nThe following %s source code files were generated by soapcpp2 for interface file [%s](%s):\n\n", cflag ? "C" : copt ? copt + 1 : "c++", filename, filename); fprintf(freport, "- [%s](%s) contains an annotated copy of [%s](%s) and of the imported files (if any), where most of the information in this report [%s](%s) is sourced from (this header file also #includes \"stdsoap2.h\")\n", soapStub, pathsoapStub, filename, filename, soapReadme, pathsoapReadme); fprintf(freport, "- [%s](%s) declares allocation and (de)serialization functions for each C/C++ type, to #include in projects (this header file also #includes \"%s\")\n", soapH, pathsoapH, soapStub); fprintf(freport, "- [%s](%s) defines allocation and (de)serialization functions for each C/C++ type, to compile with a project\n", soapC, pathsoapC); if (!Sflag) { if (!iflag && !jflag) { fprintf(freport, "- [%s](%s) defines client call stub functions for service invocation, to compile with a project\n", soapClient, pathsoapClient); if (!Lflag) fprintf(freport, "- [%s](%s) combines %s with %s into one \"library\" file, intended for combining multiple clients and servers that are separately generated with soapcpp2 option -p, thereby preventing serializer naming conflicts (this makes serialization functions locally visible to the client/server as static functions)\n", soapClientLib, pathsoapClientLib, soapC, soapClient); } else { fprintf(freport, "- See [Web client proxy class](#doc-client) for the client-side source code files to use\n"); } } if (!Cflag) { if (!iflag && !jflag) { fprintf(freport, "- [%s](%s) defines server functions, including the service dispatcher that calls back-end service operations, to compile with a project\n", soapServer, pathsoapServer); if (!Lflag) fprintf(freport, "- [%s](%s) combines %s with %s into one \"library\" file, intended for combining multiple clients and servers that are separately generated with soapcpp2 option -p, thereby preventing serializer function naming conflicts (this makes serialization functions locally visible to the client/server as static functions)\n", soapServerLib, pathsoapServerLib, soapC, soapServer); } else { fprintf(freport, "- See [Web service class](#doc-server) for the server-side source code files to use\n"); } } fprintf(freport, "\nAlso compile stdsoap2.%s (and dom.%s %s XML DOM is used) with a project (or link libgsoapssl%s.a) and use the following compile-time options:\n\n- `-DWITH_OPENSSL` to enable HTTPS with OpenSSL\n- `-DWITH_GNUTLS` to enable HTTPS with GNUTLS\n- `-DWITH_DOM` is required when using the WS-Security plugin\n- `-DWITH_GZIP` to enable message compression\n\nSee the gSOAP documentation for additional options.\n\n### Contents\n\nThis report has the following contents describing the data binding interface types, and the client- and the server-side operations (if any):\n\n", cflag ? "c" : "cpp", cflag ? "c" : "cpp", is_anyType_flag ? "because" : "if", cflag ? "" : "++"); if (enumtable && enumtable->list) fprintf(freport, "- [enumeration types](#doc-enums)\n"); if (classtable && classtable->list) fprintf(freport, "- [%sstruct and union types](#doc-classes)\n", cflag ? "" : "class, "); if (typetable && typetable->list) fprintf(freport, "- [typedefs](#doc-typedefs)\n"); fprintf(freport, "- [summary of serializable types](#doc-types)\n"); fprintf(freport, "- [schemas and namespaces](#doc-namespaces)\n"); if (!Sflag) { if (!iflag && !jflag) fprintf(freport, "- [Web client operations](#doc-client) lists the service operations to call\n"); else fprintf(freport, "- [Web client proxy class](#doc-client) lists the methods to invoke\n"); } if (!Cflag) { if (!iflag && !jflag) fprintf(freport, "- [Web server operations](#doc-server) lists the service operations to implement when developing a service\n"); else fprintf(freport, "- [Web service class](#doc-server) lists the methods to implement when developing a service\n"); } fprintf(freport, "\n"); gen_report_hr(); } if (enumtable && enumtable->list) { Table *r = mktable(NULL); banner(fheader, "Enumeration Types"); fflush(fheader); if (rflag) fprintf(freport, "## Enumeration Types {#doc-enums}\n\n\n\n"); for (p = enumtable->list; p; p = p->next) { if (rflag && p->info.typ->ref) fprintf(freport, "\n"); } freetable(r); if (rflag) { int uf = uflag; uflag = 1; fprintf(freport, "
Type Declared Serializable Bitmask Values
%s %s:%d %s %s ", c_ident(p->info.typ), c_type(p->info.typ), p->filename, p->lineno, !is_transient(p->info.typ) ? "yes" : "", is_mask(p->info.typ) ? "yes" : ""); if (!is_imported(p->info.typ) && (!is_transient(p->info.typ) || p->info.typ->ref)) { int enum64 = False; const char *x; x = xsi_type(p->info.typ); if (!x || !*x) x = wsdl_type(p->info.typ, ""); fprintf(fheader, "\n\n/* %s:%d */", p->filename, p->lineno); fprintf(fheader, "\n#ifndef %s", soap_type(p->info.typ)); if (namespaceid) fprintf(fheader, "\n#define %s (-%d)\n", soap_type(p->info.typ), p->info.typ->num); /* namespaced SOAP_TYPE is negative to avoid clashes */ else fprintf(fheader, "\n#define %s (%d)", soap_type(p->info.typ), p->info.typ->num); if (is_volatile(p->info.typ)) fprintf(fheader, "\n#if 0 /* Volatile: not declared here */"); if (is_mask(p->info.typ)) fprintf(fheader, "\n/* Bitmask %s */", x); else fprintf(fheader, "\n/* %s */", x); if ((Table*)p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (q->info.val.i > 0x7FFFLL || q->info.val.i < -0x8000LL) { enum64 = True; break; } } } if (cflag && p->info.typ->type == Tenum && p->sym->token == TYPE) fprintf(fheader, "\ntypedef "); else fprintf(fheader, "\n"); if (p->info.typ->width == 4 || is_mask(p->info.typ)) { if (p->info.typ->type == Tenumsc) { if (enum64) fprintf(fheader, "enum class %s : int64_t {", ident(p->info.typ->id->name)); else fprintf(fheader, "enum class %s {", ident(p->info.typ->id->name)); } else fprintf(fheader, "enum %s {", ident(p->info.typ->id->name)); } else { const char *t; switch (p->info.typ->width) { case 1: t = "int8_t"; break; case 2: t = "int16_t"; break; case 4: t = "int32_t"; break; default: t = "int64_t"; break; } if (p->info.typ->type == Tenumsc) fprintf(fheader, "enum class %s : %s {", ident(p->info.typ->id->name), t); else fprintf(fheader, "enum %s : %s {", ident(p->info.typ->id->name), t); } if ((Table*)p->info.typ->ref) { const char *c = ""; for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { Entry *e = NULL; if (rflag) fprintf(freport, "%s %s ", c, ident(q->sym->name)); if (p->info.typ->type == Tenum && (e = entry(r, q->sym)) && e->info.val.i == q->info.val.i) fprintf(fheader, " /* %s\n\t%s = " SOAP_LONG_FORMAT " */", c, ident(q->sym->name), q->info.val.i); else { if (q->info.val.i > 0 && q->info.val.i < 128 && isalpha((int)q->info.val.i)) fprintf(fheader, "%s\n\t%s = '%c'", c, ident(q->sym->name), (int)q->info.val.i); else if (q->info.val.i <= 0x7FFFLL && q->info.val.i >= -0x8000LL) fprintf(fheader, "%s\n\t%s = " SOAP_LONG_FORMAT, c, ident(q->sym->name), q->info.val.i); else fprintf(fheader, "%s\n\t%s = " SOAP_LONG_FORMAT "LL", c, ident(q->sym->name), q->info.val.i); if (p->info.typ->type == Tenum && !e) { e = enter(r, q->sym); e->info.val.i = q->info.val.i; } c = ","; } } } else { if (!is_transient(p->info.typ) && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_imported(p->info.typ)) { sprintf(errbuf, "%s declared in %s:%d has no content, requires enum constants", c_type(p->info.typ), p->filename, p->lineno); semwarn(errbuf); } } if (cflag && p->info.typ->type == Tenum && p->sym->token == TYPE) fprintf(fheader, "\n} %s;", ident(p->sym->name)); else fprintf(fheader, "\n};"); if (is_volatile(p->info.typ)) fprintf(fheader, "\n#endif"); fprintf(fheader, "\n#endif"); } if (rflag && p->info.typ->ref) fprintf(freport, "
\n\n"); for (p = enumtable->list; p; p = p->next) { const char *ns = prefix_of(p->sym->name); const char *x; x = xsi_type(p->info.typ); if (!x || !*x) x = wsdl_type(p->info.typ, ""); fprintf(freport, "\n\n", c_ident(p->info.typ)); fprintf(freport, "### `%s`\n\n", c_type(p->info.typ)); gen_report_type_doc(p); fprintf(freport, "This enum%s type is declared in [%s](%s) at line %d ", p->info.typ->type == Tenumsc ? " class" : "", p->filename, p->filename, p->lineno); if (is_mask(p->info.typ)) fprintf(freport, "and is a bitmask type, meaning that it represents a set of values created with bit-wise `|` (bitor) operations, "); if ((Table*)p->info.typ->ref) { const char *c = ""; fprintf(freport, "and has values "); for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (!is_mask(p->info.typ) && q->info.val.i > 0 && q->info.val.i < 128 && isalpha((int)q->info.val.i)) fprintf(freport, "%s `%s` (= " SOAP_LONG_FORMAT " = ASCII '%c')", c, ident(q->sym->name), q->info.val.i, (int)q->info.val.i); else fprintf(freport, "%s `%s` (= " SOAP_LONG_FORMAT ")", c, ident(q->sym->name), q->info.val.i); gen_report_member(p, q); c = ","; } } fprintf(freport, ".\n\n"); if (!is_transient(p->info.typ)) { if (cflag) { fprintf(freport, "- `(%s *)soap_malloc(struct soap*, sizeof(%s))` raw managed allocation\n", c_type(p->info.typ), c_type(p->info.typ)); fprintf(freport, "- `%s *soap_new_%s(struct soap*, int n)` managed allocation with default initialization of one `%s` when `n` = 1 or array `%s[n]` when `n` > 1\n", c_type(p->info.typ), c_ident(p->info.typ), c_type(p->info.typ), c_type(p->info.typ)); } else { fprintf(freport, "- `%s *soap_new_%s(struct soap*)` managed allocation with default initialization\n", c_type(p->info.typ), c_ident(p->info.typ)); fprintf(freport, "- `%s *soap_new_%s(struct soap*, int n)` managed allocation with default initialization of array `%s[n]`\n", c_type(p->info.typ), c_ident(p->info.typ), c_type(p->info.typ)); } fprintf(freport, "- `void soap_default_%s(struct soap*, %s)` set to default value\n", c_ident(p->info.typ), c_type_id(p->info.typ, "*value")); fprintf(freport, "- `const char *soap_%s2s(struct soap*, %s)` returns string-converted value in temporary string buffer\n", c_ident(p->info.typ), c_type_id(p->info.typ, "value")); fprintf(freport, "- `int soap_s2%s(struct soap*, const char*, %s)` convert string to value, returns `SOAP_OK` or error code\n", c_ident(p->info.typ), c_type_id(p->info.typ, "*value")); if (!wflag) { if (!is_invisible(p->sym->name) && !has_ns_eq("xsd", p->sym->name)) { const char *s = ns_of(p->sym->name); if (s && *s && has_ns_eq(NULL, p->sym->name)) fprintf(freport, "\nThe XSD component of XSD type *`%s`* in schema \"[%s](#doc-namespaces)\" is:\n\n", x, s); else fprintf(freport, "\nThe XSD component of XSD type *`%s`* is:\n\n", x); gen_schema_type(freport, NULL, p, ns, ns, 1, NULL, NULL); } } fprintf(freport, "\n"); } gen_report_hr(); } uflag = uf; } } banner(fheader, "Types with Custom Serializers"); fflush(fheader); if (typetable) { for (p = typetable->list; p; p = p->next) { if (is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_imported(p->info.typ)) { fprintf(fheader, "\n\n/* %s:%d */", p->filename, p->lineno); fprintf(fheader, "\n#ifndef %s", soap_type(p->info.typ)); if (namespaceid) fprintf(fheader, "\n#define %s (-%d)\n", soap_type(p->info.typ), p->info.typ->num); /* namespaced SOAP_TYPE is negative to avoid clashes */ else fprintf(fheader, "\n#define %s (%d)", soap_type(p->info.typ), p->info.typ->num); fprintf(fheader, "\n%s%s;", c_storage(p->info.sto), c_type_synonym_id(p->info.typ, p->sym->name)); fprintf(fheader, "\n#endif"); } } } if (typetable) { for (p = typetable->list; p; p = p->next) { if (p->info.typ->type == Tclass && is_eq(p->info.typ->sym->name, "xsd__QName") && !is_external(p->info.typ) && !is_imported(p->info.typ)) { fprintf(fheader, "\n\n/* %s:%d */", p->filename, p->lineno); fprintf(fheader, "\n#ifndef %s", soap_type(p->info.typ)); if (namespaceid) fprintf(fheader, "\n#define %s (-%d)\n", soap_type(p->info.typ), p->info.typ->num); /* namespaced SOAP_TYPE is negative to avoid clashes */ else fprintf(fheader, "\n#define %s (%d)", soap_type(p->info.typ), p->info.typ->num); fprintf(fheader, "\n%sstd::string %s;", c_storage(p->info.sto), ident(p->sym->name)); fprintf(fheader, "\n#endif\n"); } } } if (classtable && classtable->list) { if (cflag) banner(fheader, "Structs and Unions"); else banner(fheader, "Classes, Structs and Unions"); fflush(fheader); if (rflag) fprintf(freport, "## %sStruct and Union Types {#doc-classes}\n\nThe table below lists the %sstructs and unions declared in [%s](%s) or that are imported:\n\n\n\n", cflag ? "" : "Class, ", cflag ? "" : "classes, ", filename, filename); for (p = classtable->list; p; p = p->next) { if (rflag && p->info.typ->ref && (soap_version >= 0 || (!is_header_or_fault(p->info.typ) && !is_body(p->info.typ)))) fprintf(freport, "\n", c_ident(p->info.typ), c_type(p->info.typ), p->filename, p->lineno, !is_transient(p->info.typ) ? "yes" : ""); if (!is_imported(p->info.typ) && !is_volatile(p->info.typ) && p->info.typ->ref) { if (!is_header_or_fault(p->info.typ) && !is_body(p->info.typ)) { if (cflag && (p->info.typ->type == Tstruct || p->info.typ->type == Tunion) && p->sym->token == TYPE) fprintf(fheader, "\ntypedef "); else fprintf(fheader, "\n"); if (p->info.typ->type == Tstruct) fprintf(fheader, "struct %s", ident(p->sym->name)); else if (!cflag && p->info.typ->type == Tclass) fprintf(fheader, "class %s", ident(p->sym->name)); else if (p->info.typ->type == Tunion) fprintf(fheader, "union %s", ident(p->sym->name)); if (cflag && (p->info.typ->type == Tstruct || p->info.typ->type == Tunion) && p->sym->token == TYPE) fprintf(fheader, " %s;", ident(p->sym->name)); else fprintf(fheader, ";"); fprintf(fheader, "\t/* %s:%d */", p->filename, p->lineno); } } } if (rflag) fprintf(freport, "
Type Declared Serializable
%s %s:%d %s
\n\n"); for (p = classtable->list; p; p = p->next) { if (rflag) gen_class(freport, p); gen_class(fheader, p); } } if (typetable) { banner(fheader, "Typedefs"); fflush(fheader); if (rflag) { fprintf(freport, "## Typedefs {#doc-typedefs}\n\n"); fprintf(freport, "A typedef type is serializable if its underlying base type is serializable. Typedefs may declare custom serializers, meaning their underlying types are custom-serialized in XML using serialization rules that differ from the serialization rules of the underlying base type:"); fprintf(freport, "\n\n\n"); } for (p = typetable->list; p; p = p->next) { if (rflag) { if (!is_transient(p->info.typ)) fprintf(freport, "\n", c_ident(p->info.typ), c_ident(p->info.typ), c_type(p->info.typ), p->filename, p->lineno, is_external(p->info.typ) || is_qname(p->info.typ) || is_stdqname(p->info.typ) || is_XML(p->info.typ) || is_stdXML(p->info.typ) ? "yes" : ""); else fprintf(freport, "\n", c_ident(p->info.typ), c_type(p->info.typ), p->filename, p->lineno); } if (!wflag && !is_primitive_or_string(p->info.typ) && !is_external(p->info.typ) && !is_XML(p->info.typ) && !is_transient(p->info.typ) && !has_ns_t(p->info.typ) && !is_imported(p->info.typ) && !is_template(p->info.typ)) { sprintf(errbuf, "serializable typedef '%s' is not namespace qualified: schema definition for '%s' in WSDL file output may be invalid", p->sym->name, p->sym->name); semwarn(errbuf); } if (p->info.typ->type == Tclass && is_eq(p->info.typ->sym->name, "xsd__QName") && !is_external(p->info.typ) && !is_imported(p->info.typ)) continue; if (!(is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_imported(p->info.typ)) || is_synonym(p->info.typ)) { fprintf(fheader, "\n\n/* %s:%d */", p->filename, p->lineno); fprintf(fheader, "\n#ifndef %s", soap_type(p->info.typ)); if (namespaceid) fprintf(fheader, "\n#define %s (-%d)\n", soap_type(p->info.typ), p->info.typ->num); /* namespaced SOAP_TYPE is negative to avoid clashes */ else fprintf(fheader, "\n#define %s (%d)", soap_type(p->info.typ), p->info.typ->num); fprintf(fheader, "\n%s%s;", c_storage(p->info.sto), c_type_synonym_id(p->info.typ, p->sym->name)); fprintf(fheader, "\n#endif"); } } if (rflag) { fprintf(freport, "
Typedef Type Declared Serializable Custom
%s %s %s:%d yes %s
%s %s %s:%d
\n\n"); for (p = typetable->list; p; p = p->next) { if (!is_transient(p->info.typ)) { fprintf(freport, "\n\n### `%s`\n\n", c_ident(p->info.typ), c_ident(p->info.typ)); gen_report_type_doc(p); if (p->lineno) fprintf(freport, "This typedef is declared in [%s](%s) at line %d", p->filename, p->filename, p->lineno); else fprintf(freport, "This typedef is internally generated"); if (has_ns_t(p->info.typ)) fprintf(freport, ", is serialized as XSD type *`%s`*", xsi_type(p->info.typ)); if (is_XML(p->info.typ) || is_stdXML(p->info.typ)) fprintf(freport, " and is a built-in string type to hold XML that is literally serialized to and from XML"); else if (is_qname(p->info.typ) || is_stdqname(p->info.typ)) fprintf(freport, " and is a built-in string type to serialize a list of space-separated qualified names (*`xsd:QName`*), such that XML namespace prefixes are normalized to the XML prefixes defined in the [namespace table](#doc-namespaces) or replaced with \"URI\": when the namespace table has no prefix entry for the URI"); else if (is_anyType(p->info.typ)) fprintf(freport, " and is a built-in XML DOM element node graph"); else if (is_anyAttribute(p->info.typ)) fprintf(freport, " and is a built-in XML DOM attribute list"); else fprintf(freport, " and has underlying base type `%s`", c_type(p->info.typ)); if (is_primitive_or_string(p->info.typ) && (p->info.typ->pattern || p->info.typ->hasmin || p->info.typ->hasmax)) { fprintf(freport, ", which should be\n"); if (p->info.typ->pattern) { if (p->info.typ->pattern[0] == '%' && p->info.typ->pattern[1]) { unsigned int n = (unsigned int)strtoul(p->info.typ->pattern + 1, NULL, 10); unsigned int f = 0; const char *s = strchr(p->info.typ->pattern, '.'); if (s) f = (unsigned int)strtoul(s + 1, NULL, 10); if (n) fprintf(freport, "\n- number of total digits: %u", n); if (f) fprintf(freport, "\n- number of fraction digits: %u", f); } else fprintf(freport, "\n- matching regex pattern \"%s\"", p->info.typ->pattern); } if (p->info.typ->hasmin) { if (p->info.typ->type >= Tfloat && p->info.typ->type <= Tldouble) { if (p->info.typ->incmin) fprintf(freport, "\n- greater than or equal to %lG\n", p->info.typ->min); else fprintf(freport, "\n- greater than %lG\n", p->info.typ->min); } else if (p->info.typ->type >= Tchar && p->info.typ->type <= Tullong) { if (p->info.typ->incmin) fprintf(freport, "\n- greater than or equal to " SOAP_LONG_FORMAT "\n", (LONG64)p->info.typ->min); else fprintf(freport, "\n- greater than " SOAP_LONG_FORMAT "\n", (LONG64)p->info.typ->min); } else if (p->info.typ->hasmax && p->info.typ->max >= 0 && p->info.typ->incmin && p->info.typ->incmax && p->info.typ->min == p->info.typ->max) fprintf(freport, "\n- equal to " SOAP_LONG_FORMAT " characters in length\n", (LONG64)p->info.typ->min); else fprintf(freport, "\n- longer than or equal to " SOAP_LONG_FORMAT " characters in length\n", (LONG64)p->info.typ->min); } if (p->info.typ->hasmax) { if (p->info.typ->type >= Tfloat && p->info.typ->type <= Tldouble) { if (p->info.typ->incmax) fprintf(freport, "\n- less than or equal to %lG\n", p->info.typ->max); else fprintf(freport, "\n- less than %lG\n", p->info.typ->max); } else if (p->info.typ->type >= Tchar && p->info.typ->type <= Tullong) { if (p->info.typ->incmax) fprintf(freport, "\n- less than or equal to " SOAP_LONG_FORMAT "\n", (LONG64)p->info.typ->max); else fprintf(freport, "\n- less than " SOAP_LONG_FORMAT "\n", (LONG64)p->info.typ->max); } else if (p->info.typ->hasmax && p->info.typ->max >= 0 && p->info.typ->incmin && p->info.typ->incmax && p->info.typ->min == p->info.typ->max) ; else fprintf(freport, "\n- shorter than or equal to " SOAP_LONG_FORMAT " characters in length\n", (LONG64)p->info.typ->min); } } fprintf(freport, "\n\n"); gen_report_hr(); } } } } banner(fheader, "Serializable Types"); fflush(fheader); if (rflag) { fprintf(freport, "## Summary of Serializable Types {#doc-types}\n\n"); fprintf(freport, "Each serializable %s *Type* with binding name *Name* has a set of auto-generated functions:\n\n", cflag ? "C" : "C/C++"); if (cflag) { fprintf(freport, "- `Type *soap_new_Name(struct soap*, int n)` managed allocation with default initialization of one *Type* when `n` = 1 or array *Type*`[n]` when `n` > 1\n"); fprintf(freport, "- `void soap_default_Name(struct soap*, Type*)` initialize or reset *Type* to default\n"); } else { fprintf(freport, "- `Type *soap_new_Name(struct soap*)` managed allocation and default initialization\n"); fprintf(freport, "- `Type *soap_new_Name(struct soap*, int n)` managed allocation and default initialization of an array `Type[n]`\n"); fprintf(freport, "- `void soap_default_Name(struct soap*, Type*)` initialize or reset non-class *Type* to default)\n"); fprintf(freport, "- `void Type::soap_default(struct soap*)` non-volatile class *Type* reset to default\n"); } fprintf(freport, "- `Type *soap_dup_Name(struct soap*, Type *dst, const Type *src)` requires soapcpp2 option -Ec, deep copy `src` to `dst` managed by context or unmanaged when context is NULL, returning `dst` (if `dst` is NULL then allocates `dst` copy)\n"); fprintf(freport, "- `void soap_del_Name(struct soap*, Type*)` requires soapcpp2 option -Ec, deep delete *Type* which must be unmanaged\n"); fprintf(freport, "- `const char *soap_Name2s(struct soap*, Type)` primitive *Type* only, returns string-converted *Type* in temporary string buffer\n"); fprintf(freport, "- `int soap_s2Name(struct soap*, const char*, Type*)` primitive *Type* only, convert string to value, returns `SOAP_OK` or error code\n"); fprintf(freport, "- `int soap_write_Name(struct soap*, const Type*)` serialize *Type* to XML, returns `SOAP_OK` or error code\n"); fprintf(freport, "- `int soap_PUT_Name(struct soap*, const char *URL, const Type*)` REST PUT *Type* in XML, returns `SOAP_OK` or error code\n"); fprintf(freport, "- `int soap_POST_send_Name(struct soap*, const char *URL, const Type*)` REST POST send *Type* in XML (MUST be followed by a `soap_POST_recv_OtherName`), returns `SOAP_OK` or error code\n"); fprintf(freport, "- `int soap_read_Name(struct soap*, Type*)` deserialize *Type* from XML, returns `SOAP_OK` or error code\n"); fprintf(freport, "- `int soap_GET_Name(struct soap*, const char *URL, Type*)` REST GET *Type* from XML, returns `SOAP_OK` or error code\n"); fprintf(freport, "- `int soap_POST_recv_Name(struct soap*, Type*)` REST GET *Type* from XML (after a `soap_POST_send_OtherName`), returns `SOAP_OK` or error code\n"); if (cflag) fprintf(freport, "- `(Type *)soap_malloc(struct soap*, sizeof(Type))` raw managed allocation of *Type* without initialization\n"); else fprintf(freport, "- `(Type *)soap_malloc(struct soap*, sizeof(Type))` raw managed allocation of primitive *Type* (types that are not structs or classes) without initialization\n"); fprintf(freport, "- `const char *soap_strdup(struct soap*, const char*)` managed allocation and duplication of string\n"); fprintf(freport, "- `const wchar_t *soap_wstrdup(struct soap*, const wchar_t*)` managed allocation and duplication of wide string\n"); fprintf(freport, "\nEach *Type* also has a unique type id `SOAP_TYPE_Name` that you can use to serialize `void*` in a struct/class by setting the `int __type` member to this type id."); if (!cflag) fprintf(freport, " The unique type id is also used to distinguish derived class instances from base class instances by calling their `virtual soap_type()` methods that return this type id."); fprintf(freport, "\n\nFrom the toolkit documentation:\n\n"); if (cflag) fprintf(freport, "- Set `soap->sendfd = fd` to serialize to an `int fd` file descriptor\n- Set `soap->os = &cs` to serialize to a string `const char *cs`, which will be assigned by the engine and set to point to a managed string that is automatically deleted\n- Set `soap->recvfd = fd` to deserialize from an `int fd` file descriptor\n- Set `soap->is = cs` to deserialize from a `const char *cs` string\n- All managed allocated data is freed by `soap_end(soap)` with context `soap`\n"); else fprintf(freport, "- Set `soap->sendfd = fd` to serialize to an `int fd` file descriptor\n- Set `soap->os = &os` to serialize to a `std::ostream os`\n- Set `soap->recvfd = fd` to deserialize from an `int fd` file descriptor\n- Set `soap->is = &is` to deserialize from a `std::istream`\n- All managed allocated data is deleted by `soap_destroy(soap)` followed by `soap_end(soap)` with context `soap`\n"); fprintf(freport, "\nThe table below lists the serializable types by *Type*, binding *Name*, *Kind*, and the XSD data binding type and/or element. Pointers, arrays, and containers of these types are also serializable:\n\n\n\n", cflag ? "C" : "C/C++"); } for (i = 0; i < TYPES; i++) { if (i != Tnone && i != Tvoid && i != Tsize && i != Tunion && i != Treference && i != Trvalueref && i != Tfun) { Tnode *p; for (p = Tptr[i]; p; p = p->next) { if (!is_transient(p) && !is_invisible(p->id->name)) { fprintf(fheader, "\n\n/* %s has binding name '%s' for type '%s' */", c_type_sym(p), c_ident(p), xsi_type(p)); fprintf(fheader, "\n#ifndef %s", soap_type(p)); if (namespaceid) fprintf(fheader, "\n#define %s (-%d)\n", soap_type(p), p->num); /* namespaced SOAP_TYPE is negative to avoid clashes */ else fprintf(fheader, "\n#define %s (%d)", soap_type(p), p->num); fprintf(fheader, "\n#endif"); if (rflag && (p->type != Tpointer || is_string(p) || is_wstring(p))) { if ((p->type == Tstruct || p->type == Tclass || p->type == Tenum || p->type == Tenumsc || is_typedef(p)) && !is_stdstr(p)) fprintf(freport, "\n", c_ident(p), c_type_sym(p), c_ident(p), kind_of(p), is_XML(p) ? "(literal XML string)" : is_anyType(p) ? "(XML DOM element)" : is_anyAttribute(p) ? "(XML DOM attribute list)" : xsi_type(p)); else fprintf(freport, "\n", c_type_sym(p), c_ident(p), kind_of(p), is_XML(p) ? "(literal XML string)" : is_anyType(p) ? "(XML DOM element node)" : is_anyAttribute(p) ? "(XML DOM attribute list)" : xsi_type(p)); } } } } } if (rflag) { fprintf(freport, "
%s Type Name Kind XSD
%s %s %s %s
%s %s %s %s
\n\n"); gen_report_hr(); } banner(fheader, "Externals"); fflush(fheader); if (t) { for (p = t->list; p; p = p->next) { if (p->info.typ->type != Tfun || (p->info.sto & Sextern)) { fprintf(fheader, "\n\n/* %s:%d */\n", p->filename, p->lineno); if (!(p->info.sto & Sstatic)) fprintf(fheader, "extern "); fprintf(fheader, "%s", c_storage(p->info.sto)); fprintf(fheader, "%s;", c_type_id(p->info.typ, p->sym->name)); } } } fflush(fheader); } void get_namespace_prefixes(void) { Symbol *p, *q; Entry *e, *v; int i, n; const char *s; char buf[256]; if (nslist) return; for (p = symlist; p; p = p->next) { s = p->name; if (!strncmp(s, "__size", 6) || !strncmp(s, "__type", 6) || !strncmp(s, "__union", 7)) continue; while (*s == '_' || *s == '~') s++; n = (int)(strlen(s) - 2); for (i = 1; i < n; i++) { if (s[i] == ':' || (s[i-1] != '_' && s[i] == '_' && s[i+1] == '_' && s[i+2] && s[i+2] != '_') || (s[i-1] != '_' && (!strncmp(s+i, "___DOT", 6) || !strncmp(s+i, "___USCORE", 9) || (!strncmp(s+i, "___x", 4) && isxdigit(s[i+4]) && isxdigit(s[i+5]) && isxdigit(s[i+6]) && isxdigit(s[i+7]))))) { if (s[i+1] == ':') { i++; continue; } strncpy(buf, s, i); buf[i] = '\0'; if (!strcmp(buf, "SOAP_ENV") || !strcmp(buf, "SOAP_ENC") || !strcmp(buf, "xsd") || !strcmp(buf, "xsi") || !strcmp(buf, "xml") || !strcmp(buf, "std") || !strncmp(buf, "soap_", 5)) goto nsnext; for (q = nslist; q; q = q->next) if (!strcmp(q->name, buf)) goto nsnext; if (enumtable) for (e = enumtable->list; e; e = e->next) if (!strcmp(buf, e->sym->name)) if (e->info.typ->ref) for (v = ((Table*)e->info.typ->ref)->list; v; v = v->next) if (p == v->sym) goto nsnext; q = (Symbol*)emalloc(sizeof(Symbol)); q->name = (char*)emalloc(i+1); strcpy(q->name, buf); q->name[i] = '\0'; q->next = nslist; nslist = q; break; } } nsnext: ; } q = (Symbol*)emalloc(sizeof(Symbol)); q->name = (char*)emalloc(4); strcpy(q->name, "xsd"); q->next = nslist; nslist = q; q = (Symbol*)emalloc(sizeof(Symbol)); q->name = (char*)emalloc(4); strcpy(q->name, "xsi"); q->next = nslist; nslist = q; q = (Symbol*)emalloc(sizeof(Symbol)); q->name = (char*)emalloc(9); strcpy(q->name, "SOAP-ENC"); q->next = nslist; nslist = q; q = (Symbol*)emalloc(sizeof(Symbol)); q->name = (char*)emalloc(9); strcpy(q->name, "SOAP-ENV"); q->next = nslist; nslist = q; } void generate_schema(Table *t) { Entry *p = NULL; Symbol *ns; const char *name = NULL; const char *URL = NULL; const char *executable = NULL; const char *URI = NULL; const char *style = NULL; const char *encoding = NULL; const char *protocol = NULL; const char *import = NULL; Service *sp = NULL; char buf[1024]; FILE *fd; get_namespace_prefixes(); for (ns = nslist; ns; ns = ns->next) { if (!strcmp(ns->name, "SOAP-ENV") || !strcmp(ns->name, "SOAP-ENC") || !strcmp(ns->name, "xsi") || !strcmp(ns->name, "xsd")) continue; name = NULL; URL = NULL; executable = NULL; URI = NULL; style = NULL; encoding = NULL; import = NULL; for (sp = services; sp; sp = sp->next) { if (!tagcmp(sp->ns, ns->name)) { name = ns_cname(sp->name, NULL); URL = sp->URL; executable = sp->executable; URI = sp->URI; style = sp->style; encoding = sp->encoding; protocol = sp->protocol; import = sp->import; break; } } if (!URI) { char *s = (char*)emalloc(strlen(tmpURI) + strlen(ns->name) + 6); sprintf(s, "%s/%s.xsd", tmpURI, ns_convert(ns->name)); URI = s; } if (soap_version >= 0 && is_document(style) && encoding && !*encoding) { semwarn("Cannot use document style with SOAP encoding"); encoding = NULL; } if (!name) name = "Service"; if (t) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !(p->info.sto & Sextern) && has_ns_eq(ns->name, p->sym->name)) { if (name) fprintf(fmsg, "Using %s service name: %s\n", ns->name, name); if (protocol) fprintf(fmsg, "Using %s service protocol: %s\n", ns->name, protocol); if (style && soap_version >= 0) fprintf(fmsg, "Using %s service style: %s\n", ns->name, style); else if (!eflag && soap_version >= 0) fprintf(fmsg, "Using %s service style: document\n", ns->name); else if (eflag) fprintf(fmsg, "Using %s service style: rpc\n", ns->name); if (encoding && *encoding) fprintf(fmsg, "Using %s service encoding: %s\n", ns->name, encoding); else if (encoding && !*encoding && soap_version >= 0) fprintf(fmsg, "Using %s service encoding: encoded\n", ns->name); else if (!eflag && soap_version >= 0) fprintf(fmsg, "Using %s service encoding: literal\n", ns->name); else if (eflag) fprintf(fmsg, "Using %s service encoding: encoded\n", ns->name); if (URL) fprintf(fmsg, "Using %s service location: %s\n", ns->name, URL); if (executable) fprintf(fmsg, "Using %s service executable: %s\n", ns->name, executable); if (import) fprintf(fmsg, "Using %s schema import namespace: %s\n", ns->name, import); else if (URI) fprintf(fmsg, "Using %s schema namespace: %s\n", ns->name, URI); if (sp && sp->name) sprintf(buf, "%s%s.wsdl", dirpath, ns_cname(name, NULL)); else sprintf(buf, "%s%s.wsdl", dirpath, ns_cname(ns->name, NULL)); if (!wflag && !import) { fprintf(fmsg, "Saving %s Web Service description\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write WSDL file"); gen_wsdl(fd, t, ns->name, name, URL ? URL : "http://localhost:80", executable, URI, style, encoding, protocol); fclose(fd); } if (!cflag) { if (iflag || jflag) { const char *sname; if (sp && sp->name) sname = sp->name; else sname = ""; if (!Sflag) { const char *name1 = ns_cname(sname, "Proxy"); sprintf(soapProxyH, "%s%s.h", prefix, name1); sprintf(pathsoapProxyH, "%s%s", dirpath, soapProxyH); sprintf(soapProxyC, "%s%s.cpp", prefix, name1); sprintf(pathsoapProxyC, "%s%s", dirpath, soapProxyC); fprintf(fmsg, "Saving %s client proxy class\n", pathsoapProxyH); fd = fopen(pathsoapProxyH, "w"); if (!fd) execerror("Cannot write proxy class file"); copyrightnote(fd, soapProxyH); if (rflag) gen_proxy_header(freport, t, ns, name1); gen_proxy_header(fd, t, ns, name1); fclose(fd); fprintf(fmsg, "Saving %s client proxy class\n", pathsoapProxyC); fd = fopen(pathsoapProxyC, "w"); if (!fd) execerror("Cannot write proxy class file"); copyrightnote(fd, soapProxyC); gen_proxy_code(fd, t, ns, name1); fclose(fd); } if (!Cflag) { const char *name1 = ns_cname(sname, "Service"); sprintf(soapServiceH, "%s%s.h", prefix, name1); sprintf(pathsoapServiceH, "%s%s", dirpath, soapServiceH); sprintf(soapServiceC, "%s%s.cpp", prefix, name1); sprintf(pathsoapServiceC, "%s%s", dirpath, soapServiceC); fprintf(fmsg, "Saving %s service class\n", pathsoapServiceH); fd = fopen(pathsoapServiceH, "w"); if (!fd) execerror("Cannot write service class file"); copyrightnote(fd, soapServiceH); if (rflag) gen_object_header(freport, t, ns, name1); gen_object_header(fd, t, ns, name1); fclose(fd); fprintf(fmsg, "Saving %s service class\n", pathsoapServiceC); fd = fopen(pathsoapServiceC, "w"); if (!fd) execerror("Cannot write service class file"); copyrightnote(fd, soapServiceC); gen_object_code(fd, t, ns, name1); fclose(fd); } } else if (zflag == 1) { if (!Sflag && sp && sp->name) { sprintf(buf, "%s%s%s.h", dirpath, prefix, ns_cname(name, "Proxy")); fprintf(fmsg, "Saving %s simple client proxy (deprecated)\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write proxy file"); sprintf(buf, "%s%s.h", prefix, ns_cname(name, "Proxy")); copyrightnote(fd, buf); gen_proxy(fd, t, ns, name, URL ? URL : "http://localhost:80"); fclose(fd); } else if (!Sflag) { sprintf(buf, "%s%s.h", dirpath, ns_cname(prefix, "Proxy")); fprintf(fmsg, "Saving %s simple client proxy (deprecated)\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write proxy file"); sprintf(buf, "%s.h", ns_cname(prefix, "Proxy")); copyrightnote(fd, buf); gen_proxy(fd, t, ns, "Service", URL ? URL : "http://localhost:80"); fclose(fd); } if (!Cflag && sp && sp->name) { sprintf(buf, "%s%s%s.h", dirpath, prefix, ns_cname(name, "Object")); fprintf(fmsg, "Saving %s simple server object (deprecated)\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write server object file"); sprintf(buf, "%s%s.h", prefix, ns_cname(name, "Object")); copyrightnote(fd, buf); gen_object(fd, t, name); fclose(fd); } else if (!Cflag) { sprintf(buf, "%s%s.h", dirpath, ns_cname(prefix, "Object")); fprintf(fmsg, "Saving %s simple server object (deprecated)\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write server object file"); sprintf(buf, "%s.h", ns_cname(prefix, "Object")); copyrightnote(fd, buf); gen_object(fd, t, "Service"); fclose(fd); } } } if (!xflag) { strcpy(buf, dirpath); if (sp && sp->name) strcat(buf, ns_fname(name)); else strcat(buf, ns_fname(ns->name)); strcat(buf, "."); gen_data(buf, t, ns->name, encoding); } break; } } if (sp && sp->name) { has_nsmap = 1; if (nflag) sprintf(buf, "%s%s.nsmap", dirpath, prefix); else sprintf(buf, "%s%s.nsmap", dirpath, ns_cname(name, NULL)); fprintf(fmsg, "Saving %s namespace mapping table\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write nsmap file"); /* fprintf(fd, "\n#include \"%sH.h\"", prefix); better to leave to users to include this */ fprintf(fd, "\n#include \"stdsoap2.h\"\n/* This defines the global XML namespaces[] table to #include and compile */"); if (nflag) fprintf(fd, "\nSOAP_NMAC struct Namespace %s_namespaces[] = ", prefix); else fprintf(fd, "\nSOAP_NMAC struct Namespace namespaces[] = "); gen_nsmap(fd); fclose(fd); if (rflag) { Symbol *ns1; fprintf(freport, "## Schemas and Namespaces {#doc-namespaces}\n\nThe following schemas and namespaces are used in addition to the predefined SOAP and built-in XSD namespaces:\n\n"); for (ns1 = nslist; ns1; ns1 = ns1->next) { if (strcmp(ns1->name, "SOAP-ENV") && strcmp(ns1->name, "SOAP-ENC") && strcmp(ns1->name, "xsi") && strcmp(ns1->name, "xsd")) { Service *sp1; for (sp1 = services; sp1; sp1 = sp1->next) if (!tagcmp(sp1->ns, ns1->name) && sp1->URI) break; if (sp1) fprintf(freport, "- Prefix `%s` is bound to namespace URI *`%s`*", ns_convert(ns1->name), sp1->URI); else fprintf(freport, "- Prefix `%s` is bound to namespace URI *`%s/%s.xsd`*", ns_convert(ns1->name), tmpURI, ns_convert(ns1->name)); if (!wflag) { if (sp1 && sp1->name) fprintf(freport, " of service WSDL [%s.wsdl](%s%s.wsdl) and schema [%s.xsd](%s%s.xsd)", ns_cname(sp1->name, NULL), dirpath, ns_cname(sp1->name, NULL), ns_cname(ns1->name, NULL), dirpath, ns_cname(ns1->name, NULL)); else fprintf(freport, " of schema [%s.xsd](%s%s.xsd)", ns_cname(ns1->name, NULL), dirpath, ns_cname(ns1->name, NULL)); } if (sp1 && (sp1->elementForm || sp1->attributeForm)) fprintf(freport, " with local element form default *`%s`* and attribute form default *`%s`*\n", sp->elementForm?sp->elementForm:"unqualified", sp->attributeForm?sp->attributeForm:"unqualified"); else fprintf(freport, " with local element and attribute form default *`unqualified`*\n"); } } fprintf(freport, "\nThe following namespace table is saved to %s%s.nsmap:\n\n", dirpath, nflag ? prefix : ns_cname(name, NULL)); if (nflag) fprintf(freport, " struct Namespace %s_namespaces[] = ", prefix); else fprintf(freport, " struct Namespace namespaces[] = "); gen_nsmap(freport); fprintf(freport, "\nThe table binds XML namespace prefixes (first column) to namespace URIs (second column), similar to xmlns:prefix=\"URI\" in XML. The third column is a URI pattern with `*` wildcards that is also accepted as a valid namespace URI for inbound XML messages. The fourth column is NULL. This table is globally defined for the gSOAP engine. The engine context will look for it unless you compiled the gSOAP source codes with `-DWITH_NONAMESPACES`. You must assign this or another namespace table with `soap_set_namespaces(struct soap *soap, struct Namespace *namespaces)` after initializing the context and before processing XML.\n\n"); gen_report_hr(); } if (Cflag) Tflag = 0; if (Tflag) { Entry *method; const char *name1 = NULL; Tflag = 0; strcpy(soapTester, prefix); strcat(soapTester, "Tester"); if (cflag) strcat(soapTester, ".c"); else strcat(soapTester, ".cpp"); strcpy(pathsoapTester, dirpath); strcat(pathsoapTester, soapTester); fprintf(fmsg, "Saving %s auto-test echo server\n", pathsoapTester); fd = fopen(pathsoapTester, "w"); if (!fd) execerror("Cannot write to file"); copyrightnote(fd, soapTester); fprintf(fd, "\n/*\n Stand-alone server auto-test code:\n Takes request from standard input or over TCP/IP socket and returns\nresponse to standard output or socket\n\n Compile:\n cc soapTester.c soapServer.c soapC.c stdsoap2.c\n\n Command line usage with redirect over stdin/out:\n > ./a.out < SomeTest.req.xml\n > ./a.out 12288 < SomeTest.req.xml\n Note: 12288 = SOAP_XML_INDENT | SOAP_XML_STRICT (see codes in stdsoap2.h)\n Command line usage to start server at port 8080:\n > a.out 12288 8080\n*/"); if (iflag || jflag) { const char *sname; if (sp && sp->name) sname = sp->name; else sname = ""; name1 = ns_cname(sname, "Service"); fprintf(fd, "\n\n#include \"%s%s%s.h\"\n#include \"%s%s.nsmap\"\n\n\n\n#ifndef SOAP_DEFMAIN\n# define SOAP_DEFMAIN main\t/* redefine to use your own main() */\n#endif\n\nint SOAP_DEFMAIN(int argc, char **argv)\n{\n\t%s service(argc > 1 ? atoi(argv[1]) : 0);\n\tif (argc <= 2)\n\t\treturn service.serve();\n\twhile (service.run(atoi(argv[2])) != SOAP_OK && service.%serror != SOAP_TCP_ERROR)\n\t\tservice.soap_print_fault(stderr);\n\treturn 0;\n}\n", dirpath, prefix, name1, dirpath, nflag?prefix:ns_cname(name, NULL), name1, iflag ? "" : "soap->"); } else fprintf(fd, "\n\n#include \"%s%sH.h\"\n#include \"%s%s.nsmap\"\n\n#ifndef SOAP_DEFMAIN\n# define SOAP_DEFMAIN main\t/* redefine to use your own main() */\n#endif\n\nint SOAP_DEFMAIN(int argc, char **argv)\n{\n\tstruct soap *soap = soap_new1(argc > 1 ? atoi(argv[1]) : 0);\n\tif (argc <= 2)\n\t\treturn %s_serve(soap);\n\tif (soap_valid_socket(soap_bind(soap, NULL, atoi(argv[2]), 100)))\n\t{\twhile (soap_valid_socket(soap_accept(soap)))\n\t\t{\tif (%s_serve(soap))\n\t\t\t\tsoap_print_fault(soap, stderr);\n\t\t\tsoap_destroy(soap);\n\t\t\tsoap_end(soap);\n\t\t}\n\t}\n\tsoap_destroy(soap);\n\tsoap_end(soap);\n\tsoap_free(soap);\n\treturn 0;\n}\n", dirpath, prefix, dirpath, nflag?prefix:ns_cname(name, NULL), nflag?prefix:"soap", nflag?prefix:"soap"); for (method = t->list; method; method = method->next) { if (method->info.typ->type == Tfun && !(method->info.sto & Sextern)) { Entry *p = NULL, *q = entry(t, method->sym); Table *r; if (q) p = (Entry*)q->info.typ->ref; else { fprintf(stderr, "Internal error: no table entry\n"); return; } q = entry(classtable, method->sym); r = (Table*)q->info.typ->ref; if (iflag || jflag) fprintf(fd, "\n\n/** Auto-test server operation %s */\nint %s::%s(", method->sym->name, name1, ns_cname(method->sym->name, NULL)); else fprintf(fd, "\n\n/** Auto-test server operation %s */\nint %s(struct soap *soap", method->sym->name, ident(method->sym->name)); gen_params(fd, r, p, !iflag && !jflag); /* single param to single param echo */ if (p && r && r->list && r->list->info.typ == p->info.typ) fprintf(fd, "\n{\t/* Echo request-response parameter */\n\t*%s = *%s;\n\treturn SOAP_OK;\n}\n", ident(p->sym->name), ident(r->list->sym->name)); else if (p && r && r->list && p->info.typ->type == Tpointer && r->list->info.typ == (Tnode*)p->info.typ->ref) fprintf(fd, "\n{\t/* Echo request-response parameter */\n\t*%s = %s;\n\treturn SOAP_OK;\n}\n", ident(p->sym->name), ident(r->list->sym->name)); else if (p && r && r->list && p->info.typ->type == Treference && r->list->info.typ == (Tnode*)p->info.typ->ref) fprintf(fd, "\n{\t/* Echo request-response parameter */\n\t%s = %s;\n\treturn SOAP_OK;\n}\n", ident(p->sym->name), ident(r->list->sym->name)); else if (p && r && r->list && p->info.typ->type == Treference && r->list->info.typ->type == Tpointer && r->list->info.typ->ref == (Tnode*)p->info.typ->ref) fprintf(fd, "\n{\t/* Echo request-response parameter */\n\t%s = *%s;\n\treturn SOAP_OK;\n}\n", ident(p->sym->name), ident(r->list->sym->name)); /* params to wrapped params echo */ else { fprintf(fd, "\n{\t(void)soap; /* appease -Wall -Werror */"); if (r && p && p->info.typ->ref && ((Tnode*)p->info.typ->ref)->ref && (((Tnode*)p->info.typ->ref)->type == Tstruct || ((Tnode*)p->info.typ->ref)->type == Tclass)) { const char *s, *a; int d = 1; s = ident(p->sym->name); if (p->info.typ->type == Treference || p->info.typ->type == Trvalueref) a = "."; else a = "->"; for (p = ((Table*)((Tnode*)p->info.typ->ref)->ref)->list, q = r->list; p && q; p = p->next, q = q->next) { if (p->info.typ == q->info.typ) fprintf(fd, "\n\t%s%s%s = %s;", s, a, ident(p->sym->name), ident(q->sym->name)); else if (q->info.typ->type == Tpointer && p->info.typ == (Tnode*)q->info.typ->ref) fprintf(fd, "\n\t%s%s%s = *%s;", s, a, ident(p->sym->name), ident(q->sym->name)); else d = 0; } if (!d) fprintf(fd, "\n\t/* Returns incomplete response containing some default data values */"); } fprintf(fd, "\n\treturn SOAP_OK;\n}\n"); } fflush(fd); } } fclose(fd); } } } if (!wflag && !import) { sprintf(buf, "%s%s.xsd", dirpath, ns_cname(ns->name, NULL)); fprintf(fmsg, "Saving %s XML schema\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write schema file"); fprintf(fd, "\n"); gen_schema(fd, t, ns->name, ns->name, 1, style, encoding); fclose(fd); } } if (Tflag) fprintf(fmsg, "Warning: cannot save soapTester, need directive //gsoap ns service name:\n"); if (!has_nsmap) { for (ns = nslist; ns; ns = ns->next) if (strcmp(ns->name, "SOAP-ENV") && strcmp(ns->name, "SOAP-ENC") && strcmp(ns->name, "xsi") && strcmp(ns->name, "xsd")) break; if (nflag) sprintf(buf, "%s%s.nsmap", dirpath, prefix); else if (ns && ns->name) sprintf(buf, "%s%s.nsmap", dirpath, ns_cname(ns->name, NULL)); else sprintf(buf, "%ssoap.nsmap", dirpath); fprintf(fmsg, "Saving %s namespace mapping table\n", buf); fd = fopen(buf, "w"); if (!fd) execerror("Cannot write nsmap file"); fprintf(fd, "\n#include \"%sH.h\"", prefix); if (nflag) fprintf(fd, "\nSOAP_NMAC struct Namespace %s_namespaces[] = ", prefix); else fprintf(fd, "\nSOAP_NMAC struct Namespace namespaces[] = "); gen_nsmap(fd); fclose(fd); if (rflag) { Symbol *ns1; fprintf(freport, "## Schemas and Namespaces {#doc-namespaces}\n\nThe following schemas and namespaces are used in addition to the predefined SOAP and built-in XSD namespaces:\n\n"); for (ns1 = nslist; ns1; ns1 = ns1->next) { if (strcmp(ns1->name, "SOAP-ENV") && strcmp(ns1->name, "SOAP-ENC") && strcmp(ns1->name, "xsi") && strcmp(ns1->name, "xsd")) { fprintf(freport, "- Prefix `%s` is bound to namespace URI *`%s/%s.xsd`*", ns_convert(ns1->name), tmpURI, ns_convert(ns1->name)); if (!wflag) fprintf(freport, " of schema [%s.xsd](%s%s.xsd)", ns_cname(ns1->name, NULL), dirpath, ns_cname(ns1->name, NULL)); else fprintf(freport, " with local element and attribute form default *`unqualified`*\n"); } } fprintf(freport, "\nThe following namespace table is saved to %s:\n\n", buf); if (nflag) fprintf(freport, " struct Namespace %s_namespaces[] = ", prefix); else fprintf(freport, " struct Namespace namespaces[] = "); gen_nsmap(freport); fprintf(freport, "\nThe table binds XML namespace prefixes (first column) to namespace URIs (second column), similar to xmlns:prefix=\"URI\" in XML. The third column is a URI pattern with `*` wildcards that is also accepted as a valid namespace URI for inbound XML messages. The fourth column is NULL (and can be omitted). This table is globally defined for the gSOAP engine and the engine context will look for it unless you compiled the gSOAP source codes with `-DWITH_NONAMESPACES`. Then assign this or another namespace table with `soap_set_namespaces(struct soap *soap, struct Namespace *namespaces)` after initializing the context and before processing XML.\n\n"); gen_report_hr(); } } } int chkhdr(const char *part) { Entry *p; p = entry(classtable, lookup("SOAP_ENV__Header")); if (p) for (p = ((Table*)p->info.typ->ref)->list; p; p = p->next) if (has_ns_eq(NULL, p->sym->name) && (!strcmp(part, p->sym->name) || is_eq_nons(part, p->sym->name))) return 1; sprintf(errbuf, "Cannot define method-header-part in WSDL: SOAP_ENV__Header \"%s\" member is not qualified", part); semwarn(errbuf); return 0; } void gen_wsdl(FILE *fd, Table *t, const char *ns, const char *name, const char *URL, const char *executable, const char *URI, const char *style, const char *encoding, const char *protocol) { Entry *p, *q, *r; Symbol *s; Service *sp, *sp2; Method *m; const char *mimein = NULL, *mimeout = NULL; int prot, mask = 0x00; /* 0x01 = SOAP, 0x02 = GET, 0x04 = PUT, 0x08 = DELETE, 0x10 = POST */ int hasport = 0; const char *action, *method_style = NULL, *method_encoding = NULL, *method_response_encoding = NULL; const char *portname; const char *binding; fprintf(fd, "\n"); for (sp = services; sp; sp = sp->next) if (!tagcmp(sp->ns, ns)) break; if (sp && sp->definitions) fprintf(fd, "definitions); else fprintf(fd, "WSDL) fprintf(fd, " targetNamespace=\"%s\"\n xmlns:tns=\"%s\"", sp->WSDL, sp->WSDL); else fprintf(fd, " targetNamespace=\"%s/%s.wsdl\"\n xmlns:tns=\"%s/%s.wsdl\"", URI, name, URI, name); if (sp && sp->binding) binding = ns_cname(sp->binding, NULL); else binding = name; if (sp && sp->portname) portname = ns_cname(sp->portname, NULL); else portname = name; for (s = nslist; s; s = s->next) { for (sp2 = services; sp2; sp2 = sp2->next) if (!tagcmp(sp2->ns, s->name) && sp2->URI) break; if (sp2) fprintf(fd, "\n xmlns:%s=\"%s\"", ns_convert(s->name), sp2->URI); else if (!strcmp(s->name, "SOAP-ENV")) fprintf(fd, "\n xmlns:SOAP-ENV=\"%s\"", envURI); else if (!strcmp(s->name, "SOAP-ENC")) fprintf(fd, "\n xmlns:SOAP-ENC=\"%s\"", encURI); else if (!strcmp(s->name, "xsi")) fprintf(fd, "\n xmlns:xsi=\"%s\"", xsiURI); else if (!strcmp(s->name, "xsd")) fprintf(fd, "\n xmlns:xsd=\"%s\"", xsdURI); else fprintf(fd, "\n xmlns:%s=\"%s/%s.xsd\"", ns_convert(s->name), tmpURI, ns_convert(s->name)); } if (is_soap12(encoding)) fprintf(fd, "\n xmlns:SOAP=\"http://schemas.xmlsoap.org/wsdl/soap12/\""); else fprintf(fd, "\n xmlns:SOAP=\"http://schemas.xmlsoap.org/wsdl/soap/\""); fprintf(fd, "\n xmlns:HTTP=\"http://schemas.xmlsoap.org/wsdl/http/\""); fprintf(fd, "\n xmlns:MIME=\"http://schemas.xmlsoap.org/wsdl/mime/\""); fprintf(fd, "\n xmlns:DIME=\"http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/\""); fprintf(fd, "\n xmlns:WSDL=\"http://schemas.xmlsoap.org/wsdl/\""); fprintf(fd, "\n xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n"); fprintf(fd, "\n\n"); for (s = nslist; s; s = s->next) gen_schema(fd, t, ns, s->name, !strcmp(s->name, ns), style, encoding); fprintf(fd, "\n\n"); fflush(fd); if (t) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !(p->info.sto & Sextern) && has_ns_eq(ns, p->sym->name)) { mimein = NULL; mimeout = NULL; method_style = style; method_encoding = encoding; method_response_encoding = NULL; if (sp) { for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, p->sym->name)) { if (m->mess&MIMEIN) mimein = m->part; if (m->mess&MIMEOUT) mimeout = m->part; if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; else if (m->mess == STYLE) method_style = m->part; } } } if (!method_response_encoding) method_response_encoding = method_encoding; if (get_response(p->info.typ)) fprintf(fd, "\n", ns_remove(p->sym->name)); else fprintf(fd, "\n", ns_remove(p->sym->name)); fflush(fd); if (is_document(method_style)) { if (is_invisible(p->sym->name)) { q = entry(classtable, p->sym); if (q) { q = ((Table*)q->info.typ->ref)->list; if (q) { if (is_invisible(q->sym->name)) { r = entry(classtable, q->sym); if (r) { r = ((Table*)r->info.typ->ref)->list; if (r) { fprintf(fd, " sym, r, ns, 1)) fprintf(fd, " \n"); } } } else { fprintf(fd, " sym, q, ns, 1)) fprintf(fd, " \n"); } } } } else { fprintf(fd, " sym, p, ns, 1)) fprintf(fd, " \n"); } } else { q = entry(classtable, p->sym); if (q) { for (q = ((Table*)q->info.typ->ref)->list; q; q = q->next) { if (!is_transient(q->info.typ) && !(q->info.sto & Sattribute) && q->info.typ->type != Tfun && !is_repetition(q) && !is_anytype(q)) { if (is_XML(q->info.typ) || is_stdXML(q->info.typ)) fprintf(fd, " \n"); else { fprintf(fd, " sym->name), wsdl_type(q->info.typ, ns)); if (gen_member_documentation(fd, p->sym, q, ns, 1)) fprintf(fd, " \n"); } } } } } if (mimein) fprintf(fd, " \n"); fprintf(fd, "\n\n"); fflush(fd); q = (Entry*)p->info.typ->ref; for (r = t->list; r; r = r->next) if (r != p && r->info.typ->type == Tfun && !(r->info.sto & Sextern) && q == (Entry*)r->info.typ->ref) q = NULL; if (q && is_transient(q->info.typ)) ; else if (q && !is_response(q->info.typ)) { fprintf(fd, "\n", ns_remove(p->sym->name)); if (is_document(method_style)) fprintf(fd, " \n", ns_add(p, ns)); else if (is_literal(method_response_encoding)) { fprintf(fd, " sym->name), ns_add(q, ns)); if (gen_member_documentation(fd, p->sym, q, ns, 1)) fprintf(fd, " \n"); } else if (is_XML((Tnode*)q->info.typ->ref) || is_stdXML((Tnode*)q->info.typ->ref)) fprintf(fd, " \n"); else { fprintf(fd, " sym->name), wsdl_type(q->info.typ, ns)); if (gen_member_documentation(fd, p->sym, q, ns, 1)) fprintf(fd, " \n"); } if (mimeout) fprintf(fd, " \n"); fprintf(fd, "\n\n"); } else if (q && q->info.typ->wsdl == False) { q->info.typ->wsdl = True; fprintf(fd, "\n", ns_remove(((Tnode*)q->info.typ->ref)->id->name)); if (is_document(method_style)) { if (has_ns_eq(NULL, ((Entry*)p->info.typ->ref)->sym->name)) fprintf(fd, " \n", ns_convert(((Entry*)p->info.typ->ref)->sym->name)); else if (is_invisible(((Tnode*)q->info.typ->ref)->id->name)) { r = ((Table*)((Tnode*)q->info.typ->ref)->ref)->list; if (r) { fprintf(fd, " sym, r, ns, 1)) fprintf(fd, " \n"); } } else { fprintf(fd, " info.typ->ref)->id->name)); if (gen_member_documentation(fd, p->sym, q, ns, 1)) fprintf(fd, " \n"); } } else { if (((Tnode*)q->info.typ->ref)->ref) { for (q = ((Table*)((Tnode*)q->info.typ->ref)->ref)->list; q; q = q->next) { if (!is_transient(q->info.typ) && !(q->info.sto & Sattribute) && q->info.typ->type != Tfun && !is_repetition(q) && !is_anytype(q)) { if (is_XML(q->info.typ) || is_stdXML(q->info.typ)) fprintf(fd, " \n"); else { fprintf(fd, " sym->name), wsdl_type(q->info.typ, ns)); if (gen_member_documentation(fd, p->sym, q, ns, 1)) fprintf(fd, " \n"); } } } } } if (mimeout) fprintf(fd, " \n"); fprintf(fd, "\n\n"); } fflush(fd); } } if (custom_header) { Table *r; fprintf(fd, "\n", name); r = (Table*)entry(classtable, lookup("SOAP_ENV__Header"))->info.typ->ref; if (r) { for (q = r->list; q; q = q->next) { if (!is_transient(q->info.typ) && !(q->info.sto & Sattribute) && q->info.typ->type != Tfun && !is_repetition(q) && !is_anytype(q)) fprintf(fd, " \n", ns_remove(q->sym->name), ns_add(q, ns)); } } fprintf(fd, "\n\n"); } if (custom_fault) { Table *r; fprintf(fd, "\n", name); r = (Table*)entry(classtable, lookup("SOAP_ENV__Detail"))->info.typ->ref; if (r) for (q = r->list; q; q = q->next) if (!is_transient(q->info.typ) && !is_repetition(q) && !is_anytype(q) && !(q->info.sto & Sattribute) && q->info.typ->type != Tfun && has_ns_eq(NULL, q->sym->name)) { fprintf(fd, " sym->name), ns_add(q, ns)); if (gen_member_documentation(fd, q->sym, q, ns, 1)) fprintf(fd, " \n"); } fprintf(fd, "\n\n"); } if (sp) { for (m = sp->list; m; m = m->next) { if (m->mess&FAULT && m->part) { Method *m2; int flag = 0; for (m2 = sp->list; m2 && m2 != m; m2 = m2->next) if (m2->mess&FAULT && !strcmp(m2->part, m->part)) flag = 1; if (!flag) { if (typetable) for (p = typetable->list; p; p = p->next) if ((m->mess&FAULT) && is_eq(m->part, p->info.typ->sym->name)) break; if (!p && classtable) for (p = classtable->list; p; p = p->next) if ((m->mess&FAULT) && is_eq(m->part, p->info.typ->id->name)) break; if (p) { fprintf(fd, "\n", ns_remove(m->part)); fprintf(fd, " \n", ns_convert(m->part)); fprintf(fd, "\n\n"); flag = 0; if (custom_fault) { Table *r; r = (Table*)entry(classtable, lookup("SOAP_ENV__Detail"))->info.typ->ref; if (r) for (q = r->list; q; q = q->next) if (!is_transient(q->info.typ) && !is_repetition(q) && !is_anytype(q) && !(q->info.sto & Sattribute) && q->info.typ->type != Tfun && (!strcmp(q->sym->name, m->part) || !strcmp(q->sym->name + 1, m->part) || ((q->info.typ->type == Tpointer || is_smart(q->info.typ)) && ((((Tnode*)q->info.typ->ref)->id && !strcmp(((Tnode*)q->info.typ->ref)->id->name, m->part)) || (((Tnode*)q->info.typ->ref)->sym && !strcmp(((Tnode*)q->info.typ->ref)->sym->name, m->part)))))) { flag = 1; break; } } if (!flag) { sprintf(errbuf, "//gsoap %s method-fault %s %s directive does not refer to a member of struct SOAP_ENV__Detail: suggest to define struct SOAP_ENV__Detail with member %s", sp->ns, m->name, m->part, m->part); semwarn(errbuf); } } else { sprintf(errbuf, "//gsoap %s method-fault %s %s directive does not refer to struct/class or typedef: should globablly define fault %s as type (typedef or struct/class)", sp->ns, m->name, m->part, m->part); semwarn(errbuf); } } } } } fflush(fd); if (sp && sp->porttype) fprintf(fd, "\n", sp->porttype); else fprintf(fd, "\n", ns_cname(name, "PortType")); if (protocol) { if (strncmp(protocol, "SOAP", 4)) { if (strstr(protocol, "GET")) mask = 0x02; else if (strstr(protocol, "PUT")) mask = 0x04; else if (strstr(protocol, "DELETE")) mask = 0x08; else /* POST */ mask = 0x10; } else mask = 0x01; } for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !(p->info.sto & Sextern) && has_ns_eq(ns, p->sym->name)) { if (sp) { for (m = sp->list; m; m = m->next) { if (m->mess == PROTOCOL) { if (strncmp(m->part, "SOAP", 4)) { if (strstr(m->part, "GET")) mask |= 0x02; else if (strstr(m->part, "PUT")) mask |= 0x04; else if (strstr(m->part, "DELETE")) mask |= 0x08; else /* POST */ mask |= 0x10; } else mask |= 0x01; } } } if (!mask) { if (soap_version < 0) mask = 0x10; /* -0 option: use POST */ else mask = 0x01; } fprintf(fd, " \n", ns_remove(p->sym->name)); gen_method_documentation(fd, p, ns); if (get_response(p->info.typ)) fprintf(fd, " \n", ns_remove(p->sym->name)); else fprintf(fd, " \n", ns_remove(p->sym->name)); q = (Entry*)p->info.typ->ref; if (q && is_transient(q->info.typ)) ; else if (q && !is_response(q->info.typ)) fprintf(fd, " \n", ns_remove(p->sym->name)); else if (q) fprintf(fd, " \n", ns_remove(((Tnode*)q->info.typ->ref)->id->name)); if (sp) for (m = sp->list; m; m = m->next) if ((m->mess&FAULT) && is_eq_nons(m->name, p->sym->name)) fprintf(fd, " \n", ns_remove(m->part), ns_remove(m->part)); fprintf(fd, " \n"); } } fprintf(fd, "\n\n"); for (prot = 0x01; prot <= 0x10; prot <<= 1) { if ((prot & mask)) { const char *v = ""; switch (prot) { case 0x01: v = ""; break; case 0x02: v = "GET"; break; case 0x04: v = "PUT"; break; case 0x08: v = "DELETE"; break; case 0x10: v = "POST"; break; } fprintf(fd, "porttype) fprintf(fd, "type=\"tns:%s\">\n porttype); else fprintf(fd, "type=\"tns:%s\">\n porttype) fprintf(fd, "type=\"tns:%s\">\n porttype); else fprintf(fd, "type=\"tns:%s\">\n transport) fprintf(fd, " transport=\"%s\"/>\n", sp->transport); else fprintf(fd, " transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n"); } else { if (sp && sp->porttype) fprintf(fd, "type=\"tns:%s\">\n \n", sp->porttype, v); else fprintf(fd, "type=\"tns:%s\">\n \n", ns_cname(name, "PortType"), v); } fflush(fd); for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !(p->info.sto & Sextern) && has_ns_eq(ns, p->sym->name)) { action = ""; mimein = NULL; mimeout = NULL; method_style = style; method_encoding = encoding; method_response_encoding = NULL; if (sp) { int v = 0x01; if (sp->protocol) { if (strncmp(sp->protocol, "SOAP", 4)) { if (strstr(sp->protocol, "GET")) v = 0x02; else if (strstr(sp->protocol, "PUT")) v = 0x04; else if (strstr(sp->protocol, "DELETE")) v = 0x08; else /* POST */ v = 0x10; } } for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, p->sym->name)) { if (m->mess&MIMEIN) mimein = m->part; if (m->mess&MIMEOUT) mimeout = m->part; if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; else if (m->mess == STYLE) method_style = m->part; else if (m->mess == ACTION || m->mess == REQUEST_ACTION) action = m->part; else if (m->mess == RESPONSE_ACTION) action = m->part; else if (m->mess == PROTOCOL) { if (strncmp(m->part, "SOAP", 4)) { if (strstr(m->part, "GET")) v = 0x02; else if (strstr(m->part, "PUT")) v = 0x04; else if (strstr(m->part, "DELETE")) v = 0x08; else /* POST */ v = 0x10; } else v = 0x1; } } } if (soap_version < 0) v = 0x10; /* -0 option: POST */ if (prot != v) continue; } if (!method_response_encoding) method_response_encoding = method_encoding; fprintf(fd, " \n", ns_remove(p->sym->name)); if (prot == 0x01) { if (is_document(style)) { if (is_document(method_style)) { if (is_soap12(encoding) && !*action) fprintf(fd, " \n"); else if (*action == '"') fprintf(fd, " \n", action); else fprintf(fd, " \n", action); } else if (is_soap12(encoding) && !*action) fprintf(fd, " \n"); else if (*action == '"') fprintf(fd, " \n", action); else fprintf(fd, " \n", action); } else { if (is_document(method_style)) { if (is_soap12(encoding) && !*action) fprintf(fd, " \n"); else if (*action == '"') fprintf(fd, " \n", action); else fprintf(fd, " \n", action); } else if (is_soap12(encoding) && !*action) fprintf(fd, " \n"); else if (*action == '"') fprintf(fd, " \n", action); else fprintf(fd, " \n", action); } } else { if (!*action) fprintf(fd, " \n"); else if (*action == '"') fprintf(fd, " \n", action); else fprintf(fd, " \n", action); } fprintf(fd, " \n"); q = entry(classtable, p->sym); if (prot == 0x01) { if (mimein) fprintf(fd, " \n \n"); if (is_literal(method_encoding) || (q && (q = (((Table*)q->info.typ->ref)->list)) && q && is_XML(q->info.typ))) { if (is_document(method_style)) fprintf(fd, " \n"); else fprintf(fd, " \n", URI); } else { if (encoding && *encoding) fprintf(fd, " \n", encoding, URI); else if (method_encoding && *method_encoding) fprintf(fd, " \n", method_encoding, URI); else fprintf(fd, " \n", encURI, URI); if (!eflag) { sprintf(errbuf, "operation '%s' is specific to SOAP encoding only and not compliant with WS-I Basic Profile 1.0a", p->sym->name); compliancewarn(errbuf); } } if (custom_header) { m = NULL; if (sp) { for (m = sp->list; m; m = m->next) if (is_eq_nons(m->name, p->sym->name) && (m->mess&HDRIN)) { if (chkhdr(m->part)) fprintf(fd, " \n", name, ns_remove(m->part)); } } } if (mimein) { if (sp) { for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, p->sym->name) && (m->mess&MIMEIN)) fprintf(fd, " \n \n \n", m->part); } } fprintf(fd, " \n \n"); } } else if (prot == 0x02) fprintf(fd, " \n"); else { if (mimein) fprintf(fd, " \n", mimein); else if (!q || is_document(method_style)) fprintf(fd, " \n"); else fprintf(fd, " \n", ns_remove(q->sym->name)); } fprintf(fd, " \n"); q = (Entry*)p->info.typ->ref; if (!q || !q->info.typ->ref) { fprintf(fd, " \n"); continue; } if (prot != 0x04) { fprintf(fd, " \n"); if (prot == 0x01) { if (mimeout) fprintf(fd, " \n \n"); if (is_literal(method_response_encoding) || is_XML((Tnode*)q->info.typ->ref)) { if (is_document(method_style)) fprintf(fd, " \n"); else fprintf(fd, " \n", URI); } else if (encoding && *encoding) fprintf(fd, " \n", encoding, URI); else if (method_response_encoding && *method_response_encoding) fprintf(fd, " \n", method_response_encoding, URI); else fprintf(fd, " \n", encURI, URI); if (custom_header) { if (sp) for (m = sp->list; m; m = m->next) if (is_eq_nons(m->name, p->sym->name) && (m->mess&HDROUT)) { if (chkhdr(m->part)) fprintf(fd, " \n", name, ns_remove(m->part)); } } if (mimeout) { if (sp) { for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, p->sym->name) && (m->mess&MIMEOUT)) fprintf(fd, " \n \n \n", m->part); } } fprintf(fd, " \n \n"); } } else { q = (Entry*)p->info.typ->ref; if (is_document(method_style)) fprintf(fd, " \n"); else if (q && !is_transient(q->info.typ) && !is_response(q->info.typ) && is_literal(method_response_encoding)) fprintf(fd, " \n", ns_remove(q->sym->name)); else fprintf(fd, " \n"); } fprintf(fd, " \n"); } if (sp) for (m = sp->list; m; m = m->next) if ((m->mess&FAULT) && is_eq_nons(m->name, p->sym->name)) fprintf(fd, " \n \n \n", ns_remove(m->part), ns_remove(m->part)); fprintf(fd, " \n"); fflush(fd); } } fprintf(fd, "\n\n"); } } } fprintf(fd, "\n", name); if (sp && sp->documentation) { fprintf(fd, " \n "); gen_text(fd, sp->documentation); fprintf(fd, "\n \n"); } else { fprintf(fd, " gSOAP " VERSION " generated service definition\n"); } for (prot = 0x01; prot <= 0x10; prot <<= 1) { if ((prot & mask)) { const char *s, *t, *v = "", *b = "", *e = NULL; switch (prot) { case 0x01: v = ""; b = "SOAP"; break; case 0x02: v = "GET"; b = "HTTP"; break; case 0x04: v = "PUT"; b = "HTTP"; break; case 0x08: v = "DELETE"; b = "HTTP"; break; case 0x10: v = "POST"; b = "HTTP"; break; } fprintf(fd, " \n", portname, v, binding, v); if (executable) e = executable; for (s = URL; s; s = t) { int n; t = strchr(s, ' '); if (t) { n = (int)(t - s); t++; } else n = (int)strlen(s); if (e) fprintf(fd, " <%s:address location=\"%.*s/%s\"/>\n", b, n, s, e); else fprintf(fd, " <%s:address location=\"%.*s\"/>\n", b, n, s); } fprintf(fd, " \n"); hasport = 1; } } if (!hasport && executable) { const char *s, *t; fprintf(fd, " \n", portname, binding); for (s = URL; s; s = t) { int n; t = strchr(s, ' '); if (t) { n = (int)(t - s); t++; } else n = (int)strlen(s); fprintf(fd, " \n", n, s, executable); } fprintf(fd, " \n"); } fprintf(fd, "\n\n\n"); } const char * default_value(Entry *e) { Tnode *p = e->info.typ; Entry *q; static char buf[4096]; buf[0] = '\0'; if (e->info.ptrval) p = p->ref; if (e->info.hasval || e->info.ptrval) { switch (p->type) { case Tchar: case Twchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tllong: case Tulong: case Tullong: case Tsize: sprintf(buf, SOAP_LONG_FORMAT, e->info.val.i); break; case Tfloat: case Tdouble: case Tldouble: sprintf(buf, "%g", e->info.val.r); break; case Ttime: break; /* should get value? */ case Tenum: case Tenumsc: if (p->ref) { for (q = ((Table*)p->ref)->list; q; q = q->next) { if (q->info.val.i == e->info.val.i) { sprintf(buf, "%s", ns_remove2(q->sym->name, c_ident(p))); break; } } } break; default: if (e->info.val.s && strlen(e->info.val.s) < sizeof(buf)-12) sprintf(buf, "%s", xstring(e->info.val.s)); break; } } else { switch (p->type) { case Tchar: case Twchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tllong: case Tulong: case Tullong: case Tsize: if (p->hasmin && p->min > 0) sprintf(buf, "%d", (int)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) sprintf(buf, "%d", (int)p->max - (p->incmax == False)); else strcpy(buf, "0"); break; case Tfloat: case Tdouble: case Tldouble: if (p->hasmin && p->min > 0) sprintf(buf, "%g", p->min * (1 + (p->incmin == False)/1000)); else if (p->hasmax && p->max > 0) sprintf(buf, "%g", p->max * (1 - (p->incmax == False)/1000)); else if (p->hasmin && p->min < 0) sprintf(buf, "%g", p->min * (1 - (p->incmin == False)/1000)); else if (p->hasmax && p->max < 0) sprintf(buf, "%g", p->max * (1 + (p->incmax == False)/1000)); else strcpy(buf, "0"); break; case Ttime: break; /* should get value? */ case Tenum: case Tenumsc: if (p->ref) if ((q = ((Table*)p->ref)->list)) sprintf(buf, "%s", ns_remove2(q->sym->name, c_ident(p))); break; default: break; } } return buf; } const char * set_default_value(Entry *e) { const char *a; Entry *q; static char buf[4096]; buf[0] = '\0'; if (e->info.fixed) a = "fixed"; else a = "default"; if (e->info.hasval || e->info.ptrval) { Tnode *p = e->info.typ; if (e->info.ptrval) p = p->ref; switch (p->type) { case Tchar: case Twchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Tlong: case Tllong: case Tulong: case Tullong: case Tsize: sprintf(buf, " %s=\"" SOAP_LONG_FORMAT "\"", a, e->info.val.i); break; case Tfloat: case Tdouble: case Tldouble: sprintf(buf, " %s=\"%g\"", a, e->info.val.r); break; case Ttime: break; /* should get value? */ case Tenum: case Tenumsc: if (p->ref) { for (q = ((Table*)p->ref)->list; q; q = q->next) { if (q->info.val.i == e->info.val.i) { sprintf(buf, " %s=\"%s\"", a, ns_remove2(q->sym->name, c_ident(p))); break; } } } break; default: if (e->info.val.s && strlen(e->info.val.s) < sizeof(buf)-12) sprintf(buf, " %s=\"%s\"", a, xstring(e->info.val.s)); break; } } return buf; } const char * nillable(Entry *e) { if (e->info.nillable && (e->info.typ->type == Tpointer || is_smart(e->info.typ))) return " nillable=\"true\""; return ""; } const char * nillable_ref(Entry *e) { if (e->info.nillable && (((Tnode*)e->info.typ->ref)->type == Tpointer || is_smart(e->info.typ->ref))) return " nillable=\"true\""; return ""; } void gen_schema(FILE *fd, Table *t, const char *ns1, const char *ns, int all, const char *style, const char *encoding) { Entry *p, *q, *r; Tnode *n; Symbol *s; Service *sp, *sp2; Method *m; int flag; if (!strcmp(ns, "SOAP-ENV") || !strcmp(ns, "SOAP-ENC") || !strcmp(ns, "xsi") || !strcmp(ns, "xsd")) return; for (sp = services; sp; sp = sp->next) if (!tagcmp(sp->ns, ns) && sp->URI) break; if (sp && sp->import) return; fprintf(fd, " URI); else fprintf(fd, "targetNamespace=\"%s/%s.xsd\"", tmpURI, ns_convert(ns)); for (s = nslist; s; s = s->next) { for (sp2 = services; sp2; sp2 = sp2->next) if (!tagcmp(sp2->ns, s->name) && sp2->URI) break; if (sp2) fprintf(fd, "\n xmlns:%s=\"%s\"", ns_convert(s->name), sp2->URI); else if (!strcmp(s->name, "SOAP-ENV")) { if (soap_version >= 0) fprintf(fd, "\n xmlns:SOAP-ENV=\"%s\"", envURI); } else if (!strcmp(s->name, "SOAP-ENC")) { if (soap_version >= 0) fprintf(fd, "\n xmlns:SOAP-ENC=\"%s\"", encURI); } else if (!strcmp(s->name, "xsi")) fprintf(fd, "\n xmlns:xsi=\"%s\"", xsiURI); else if (!strcmp(s->name, "xsd")) fprintf(fd, "\n xmlns:xsd=\"%s\"", xsdURI); else fprintf(fd, "\n xmlns:%s=\"%s/%s.xsd\"", ns_convert(s->name), tmpURI, ns_convert(s->name)); } fprintf(fd, "\n xmlns=\"%s\"\n", xsdURI); if (sp && (sp->elementForm || sp->attributeForm)) fprintf(fd, " elementFormDefault=\"%s\"\n attributeFormDefault=\"%s\">\n", sp->elementForm?sp->elementForm:"unqualified", sp->attributeForm?sp->attributeForm:"unqualified"); else fprintf(fd, " elementFormDefault=\"unqualified\"\n attributeFormDefault=\"unqualified\">\n"); fflush(fd); flag = 0; for (s = nslist; s; s = s->next) { for (sp2 = services; sp2; sp2 = sp2->next) if (sp2 != sp && !tagcmp(sp2->ns, s->name) && sp2->URI) break; if (sp2) { fprintf(fd, " URI); if (sp2->import) fprintf(fd, " schemaLocation=\"%s\"", sp2->import); fprintf(fd, "/>\n"); if (!strcmp(sp2->URI, encURI)) flag = 1; } } if (!flag) fprintf(fd, " ", encURI); fprintf(fd, "\n"); fflush(fd); if (typetable) { for (p = typetable->list; p; p = p->next) { if (is_transient(p->info.typ) || is_invisible(p->sym->name) || p->info.typ->type == Ttemplate) continue; if (is_element(p->info.typ) && (p->info.typ->type == Tclass || p->info.typ->type == Tstruct) && !is_stdstr(p->info.typ)) continue; if ((!is_external(p->info.typ) || is_volatile(p->info.typ)) && ((has_ns_eq(ns, p->sym->name)))) { /* typedefs that are used for SOAP Fault details */ m = NULL; if (p->info.typ->type != Tstruct && p->info.typ->type != Tclass) { for (sp2 = services; sp2 && !m; sp2 = sp2->next) { for (m = sp2->list; m; m = m->next) { if ((m->mess&FAULT) && m->part && is_eq(m->part, p->sym->name)) break; } } } if (m) { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n", ns_tag_remove(p), base_type(p->info.typ, ns1)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n"); continue; } if (is_primitive_or_string(p->info.typ) || is_binary(p->info.typ) || (p->info.typ->type == Tpointer && is_primitive_or_string((Tnode*)p->info.typ->ref))) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); if (!is_synonym(p->info.typ) && p->info.typ->pattern && p->info.typ->pattern[0] == '%' && p->info.typ->pattern[1]) { unsigned int n = (unsigned int)strtoul(p->info.typ->pattern + 1, NULL, 10); unsigned int f = 0; const char *s = strchr(p->info.typ->pattern, '.'); if (s) f = (unsigned int)strtoul(s + 1, NULL, 10); if (s && f && (p->info.typ->type == Tfloat || p->info.typ->type == Tdouble || p->info.typ->type == Tldouble)) { fprintf(fd, " \n", base_type(p->info.typ, ns1)); if (n) fprintf(fd, " \n", n); fprintf(fd, " \n", f); } else if (n && (p->info.typ->type == Tfloat || p->info.typ->type == Tdouble || p->info.typ->type == Tldouble)) { fprintf(fd, " \n", base_type(p->info.typ, ns1)); fprintf(fd, " \n", n); } else if (n && p->info.typ->type >= Tchar && p->info.typ->type <= Tullong) { fprintf(fd, " \n", base_type(p->info.typ, ns1)); fprintf(fd, " \n", n); } else { fprintf(fd, " \n", base_type(p->info.typ, ns1)); } } else { fprintf(fd, " \n", base_type(p->info.typ, ns1)); if (!is_synonym(p->info.typ) && p->info.typ->pattern) fprintf(fd, " \n", p->info.typ->pattern); } if (is_primitive(p->info.typ) || (p->info.typ->type == Tpointer && is_primitive((Tnode*)p->info.typ->ref) && !is_string(p->info.typ) && !is_wstring(p->info.typ))) { if (!is_synonym(p->info.typ) && p->info.typ->hasmin) { if (p->info.typ->type >= Tfloat && p->info.typ->type <= Tldouble) { if (p->info.typ->incmin) fprintf(fd, " \n", p->info.typ->min); else fprintf(fd, " \n", p->info.typ->min); } else { if (p->info.typ->incmin) fprintf(fd, " \n", (LONG64)p->info.typ->min); else fprintf(fd, " \n", (LONG64)p->info.typ->min); } } if (!is_synonym(p->info.typ) && p->info.typ->hasmax) { if (p->info.typ->type >= Tfloat && p->info.typ->type <= Tldouble) { if (p->info.typ->incmax) fprintf(fd, " \n", p->info.typ->max); else fprintf(fd, " \n", p->info.typ->max); } else { if (p->info.typ->incmax) fprintf(fd, " \n", (LONG64)p->info.typ->max); else fprintf(fd, " \n", (LONG64)p->info.typ->max); } } } else { if (!is_synonym(p->info.typ) && p->info.typ->hasmax && p->info.typ->max >= 0 && p->info.typ->incmin && p->info.typ->incmax && p->info.typ->min == p->info.typ->max) fprintf(fd, " \n", (ULONG64)p->info.typ->max); else { if (!is_synonym(p->info.typ) && p->info.typ->hasmin && p->info.typ->min >= 0) { if (p->info.typ->incmin) fprintf(fd, " \n", (ULONG64)p->info.typ->min); else fprintf(fd, " \n", (ULONG64)p->info.typ->min + 1); } if (!is_synonym(p->info.typ) && p->info.typ->hasmax && p->info.typ->max >= 0) { if (p->info.typ->incmax) fprintf(fd, " \n", (ULONG64)p->info.typ->max); else fprintf(fd, " \n", (ULONG64)p->info.typ->max - 1); } } } fprintf(fd, " \n \n"); } else if (is_fixedstring(p->info.typ)) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n", base_type(p->info.typ, ns1)); if (!is_synonym(p->info.typ) && p->info.typ->hasmin && p->info.typ->min >= 0) { if (p->info.typ->incmin) fprintf(fd, " \n", (ULONG64)p->info.typ->min); else fprintf(fd, " \n", (ULONG64)p->info.typ->min + 1); } if (!is_synonym(p->info.typ) && p->info.typ->hasmax && p->info.typ->max >= 0) { if (p->info.typ->incmax) fprintf(fd, " \n", (ULONG64)p->info.typ->max); else fprintf(fd, " \n", (ULONG64)p->info.typ->max - 1); } else fprintf(fd, " \n", get_dimension(p->info.typ) - 1); fprintf(fd, " \n \n"); } else if (is_restriction(p->info.typ) && !has_ns_eq("xsd", p->info.typ->restriction->name)) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n", base_type(p->info.typ, ns1)); fprintf(fd, " \n \n \n"); } else { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n", base_type(p->info.typ, ns1)); fprintf(fd, " \n \n"); } } } } fflush(fd); if (enumtable) for (p = enumtable->list; p; p = p->next) gen_schema_type(fd, t, p, ns1, ns, all, style, encoding); fflush(fd); if (classtable) { for (p = classtable->list; p; p = p->next) { if (is_transient(p->info.typ) || is_invisible(p->sym->name)) continue; for (q = t->list; q; q = q->next) if (q->info.typ->type == Tfun && !(q->info.sto & Sextern) && p == get_response(q->info.typ)) break; /* omit the auto-generated and user-defined response struct/class (when necessary) */ if (!q) for (q = t->list; q; q = q->next) if (q->info.typ->type == Tfun && !(q->info.sto & Sextern) && !has_ns_eq(NULL, ((Entry*)q->info.typ->ref)->sym->name)) { r = entry(t, q->sym); if (r && r->info.typ->ref && is_response(((Entry*)r->info.typ->ref)->info.typ) && p->info.typ == (Tnode*)((Entry*)r->info.typ->ref)->info.typ->ref) break; } if (q) continue; /* classes that are used for SOAP Fault details */ m = NULL; for (sp2 = services; sp2 && !m; sp2 = sp2->next) for (m = sp2->list; m; m = m->next) if ((m->mess&FAULT) && m->part && is_eq(m->part, p->sym->name)) break; if (m) { if ((!has_ns(p->info.typ) && all) || has_ns_eq(ns, p->sym->name)) { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n", ns_tag_remove(p), base_type(p->info.typ, ns1)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n"); } } gen_schema_type(fd, t, p, ns1, ns, all, style, encoding); } } fflush(fd); for (n = Tptr[Tarray]; n; n = n->next) { if (is_transient(n) || is_fixedstring(n)) continue; if (is_literal(encoding)) fprintf(fd, " \n \n \n \n \n", c_ident(n), wsdl_type((Tnode*)n->ref, ns1), get_dimension(n)); else fprintf(fd, " \n \n \n \n \n \n \n", c_ident(n), xsi_type((Tnode*)n->ref), get_dimension(n)); fflush(fd); } gen_schema_elements_attributes(fd, t, ns, ns1, style, encoding); fprintf(fd, " \n\n"); } void gen_schema_type(FILE *fd, Table *t, Entry *p, const char *ns1, const char *ns, int all, const char *style, const char *encoding) { int i, d; char cbuf[4]; Entry *q; Tnode *typ = p->info.typ; if (!typ->ref) return; if (typ->type == Tenum || typ->type == Tenumsc) { int flag; if (!is_transient(p->info.typ) && !is_invisible(p->sym->name) && ((!has_ns(p->info.typ) && all) || has_ns_eq(ns, p->sym->name))) { flag = 0; if ((Table*)p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (!has_ns_eq(NULL, ns_remove2(q->sym->name, c_ident(p->info.typ)))) { flag = 1; break; } } if (flag == 1) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { const char *s = ns_remove2(q->sym->name, c_ident(p->info.typ)); while (*s && isdigit(*s)) s++; if (*s) { flag = 2; break; } } } } fprintf(fd, " ", wsdl_type(p->info.typ, NULL)); gen_type_documentation(fd, p, ns); if (is_mask(p->info.typ)) { fprintf(fd, " \n"); if (flag == 0) fprintf(fd, " \n"); else if (flag == 1) fprintf(fd, " \n"); else fprintf(fd, " \n"); if ((Table*)p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (!uflag) fprintf(fd, " \n", q->info.val.i); fprintf(fd, " sym->name, c_ident(p->info.typ))); if (gen_member_documentation(fd, p->sym, q, ns, q->info.typ->type == Tenumsc)) fprintf(fd, " \n"); } } fprintf(fd, " \n \n \n"); } else { if (flag == 0) fprintf(fd, " \n"); else if (flag == 1) fprintf(fd, " \n"); else fprintf(fd, " \n"); if ((Table*)p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (!uflag) fprintf(fd, " \n", q->info.val.i); fprintf(fd, " sym->name, c_ident(p->info.typ))); if (gen_member_documentation(fd, p->sym, q, ns, q->info.typ->type == Tenumsc)) fprintf(fd, " \n"); } } fprintf(fd, " \n \n"); } } } else if (is_binary(typ)) { if ((!has_ns(typ) && all) || has_ns_eq(ns, p->sym->name)) { if (is_attachment(typ)) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n"); fprintf(fd, " "); if (!uflag) fprintf(fd, ""); fprintf(fd, "\n"); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n \n \n"); } else { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); if (is_hexBinary(typ)) fprintf(fd, " \n"); else fprintf(fd, " \n"); if (typ->hasmax && typ->max >= 0 && typ->incmin && typ->incmax && typ->min == typ->max) fprintf(fd, " \n", (ULONG64)typ->min); else { if (typ->hasmin && typ->min >= 0) { if (typ->incmin) fprintf(fd, " \n", (ULONG64)typ->min); else fprintf(fd, " \n", (ULONG64)typ->min + 1); } if (typ->hasmax && typ->max >= 0) { if (typ->incmax) fprintf(fd, " \n", (ULONG64)typ->max); else fprintf(fd, " \n", (ULONG64)typ->max - 1); } } fprintf(fd, " \n \n"); } } } else if (!is_transient(typ) && is_primclass(typ)) { if ((!has_ns(typ) && all) || has_ns_eq(ns, p->sym->name)) { q = ((Table*)typ->ref)->list; if (q && strncmp(q->sym->name, "xsd__anyType", 12)) { if (is_string(q->info.typ) || is_wstring(q->info.typ) || is_stdstring(q->info.typ) || is_stdwstring(q->info.typ)) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n", wsdl_type(q->info.typ, ns1)); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n \n \n"); } else { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n", wsdl_type(q->info.typ, ns1)); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n \n \n"); } } } } else if (!is_transient(typ)) { q = ((Table*)typ->ref)->list; if (t && entry(t, p->sym) && (!q || !is_XML(q->info.typ))) ; else if (is_dynamic_array(typ)) { if (eflag || (!has_ns(typ) && !is_untyped(typ))) { if (all) { d = get_Darraydims(typ)-1; for (i = 0; i < d; i++) cbuf[i] = ','; cbuf[i] = '\0'; if (q->info.maxOccurs == 1) { fprintf(fd, " \n \n", wsdl_type(typ, NULL)); if (!is_literal(encoding)) fprintf(fd, " \n"); fprintf(fd, " \n \n \n", q->tag?ns_tag_remove(q):q->sym->name[5]?ns_remove(q->sym->name+5):"item", wsdl_type(q->info.typ, ns1), nillable_ref(q)); if (!is_literal(encoding)) fprintf(fd, " \n \n", wsdl_type(q->info.typ, ns1), cbuf); fprintf(fd, " \n \n"); } else { fprintf(fd, " \n \n", wsdl_type(typ, NULL)); if (!is_literal(encoding)) fprintf(fd, " \n"); fprintf(fd, " \n \n \n", q->tag?ns_tag_remove(q):q->sym->name[5]?ns_remove(q->sym->name+5):"item", wsdl_type(q->info.typ, ns1), q->info.minOccurs, q->info.maxOccurs, nillable_ref(q)); if (!is_literal(encoding)) fprintf(fd, " \n \n", wsdl_type(q->info.typ, ns1), cbuf); fprintf(fd, " \n \n"); } } } else if (typ->ref && ((Table*)typ->ref)->prev && !is_transient(entry(classtable, ((Table*)typ->ref)->prev->sym)->info.typ) && strncmp(((Table*)typ->ref)->prev->sym->name, "xsd__anyType", 12)) { if (q->info.maxOccurs == 1) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n \n", ns_convert(((Table*)typ->ref)->prev->sym->name)); fprintf(fd, " \n", q->tag?ns_tag_remove(q):q->sym->name[5]?ns_remove(q->sym->name+5):"item", wsdl_type(q->info.typ, ns1)); fprintf(fd, " \n \n \n"); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n"); } else { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n \n", ns_convert(((Table*)typ->ref)->prev->sym->name)); fprintf(fd, " \n", q->tag?ns_tag_remove(q):q->sym->name[5]?ns_remove(q->sym->name+5):"item", wsdl_type(q->info.typ, ns1), q->info.minOccurs, q->info.maxOccurs, nillable_ref(q)); fprintf(fd, " \n \n \n"); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n"); } } else { if (q->info.maxOccurs == 1) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n \n \n", q->tag?ns_tag_remove(q):q->sym->name[5]?ns_remove(q->sym->name+5):"item", wsdl_type(q->info.typ, ns1), nillable_ref(q)); } else { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n \n \n", q->tag?ns_tag_remove(q):q->sym->name[5]?ns_remove(q->sym->name+5):"item", wsdl_type(q->info.typ, ns1), q->info.minOccurs, q->info.maxOccurs, nillable_ref(q)); } } } else if (is_discriminant(typ) && ((!has_ns(typ) && all) || has_ns_eq(ns, p->sym->name))) { if (typ->ref) { fprintf(fd, " \n", ns_remove(p->sym->name)); gen_schema_elements(fd, typ, ns, ns1); fprintf(fd, " \n"); } } else if (typ->type == Tstruct && ((!has_ns(typ) && all) || has_ns_eq(ns, p->sym->name))) { if (typ->ref) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n"); gen_schema_elements(fd, typ, ns, ns1); fprintf(fd, " \n"); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n"); } } else if (typ->type == Tclass && ((!has_ns(typ) && all) || has_ns_eq(ns, p->sym->name))) { if (typ->ref) { if (((Table*)typ->ref)->prev && !is_transient(entry(classtable, ((Table*)typ->ref)->prev->sym)->info.typ) && strncmp(((Table*)typ->ref)->prev->sym->name, "xsd__anyType", 12)) { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n \n \n", ns_convert(((Table*)typ->ref)->prev->sym->name)); gen_schema_elements(fd, typ, ns, ns1); fprintf(fd, " \n \n \n"); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n"); } else { fprintf(fd, " ", ns_remove(p->sym->name)); gen_type_documentation(fd, p, ns); fprintf(fd, " \n"); gen_schema_elements(fd, typ, ns, ns1); fprintf(fd, " \n"); gen_schema_attributes(fd, typ, ns, ns1); fprintf(fd, " \n"); } } } } fflush(fd); } void gen_schema_elements(FILE *fd, Tnode *p, const char *ns, const char *ns1) { Entry *q; for (q = ((Table*)p->ref)->list; q; q = q->next) if (gen_schema_element(fd, p, q, ns, ns1)) q = q->next; } int gen_schema_element(FILE *fd, Tnode *p, Entry *q, const char *ns, const char *ns1) { const char *s, *t; if (is_transient(q->info.typ) || (q->info.sto & Sattribute) || q->info.typ->type == Tfun || q->info.typ->type == Tunion) return 0; if (is_repetition(q)) { if (is_sequence(q->next)) { if (q->info.maxOccurs == 1) fprintf(fd, " \n", q->info.minOccurs); else fprintf(fd, " \n", q->info.minOccurs, q->info.maxOccurs); if (q->next->info.typ->ref) gen_schema_elements(fd, (Tnode*)q->next->info.typ->ref, ns, ns1); fprintf(fd, " \n"); return 1; } t = ns_tag_convert(q->next); if (*t == '-') { fprintf(fd, " "); if (!uflag) fprintf(fd, "", q->next->sym->name); fprintf(fd, "\n"); } else if ((s = strchr(t+1, ':')) && (!strchr(q->next->sym->name+1, ':') || !has_ns_eq(ns, q->next->sym->name))) { if (((Tnode*)q->next->info.typ->ref)->type == Tpointer) { if (q->info.maxOccurs == 1) fprintf(fd, " info.minOccurs); else fprintf(fd, " info.minOccurs, q->info.maxOccurs); } else if (q->info.maxOccurs == 1) fprintf(fd, " info.minOccurs); else fprintf(fd, " info.minOccurs, q->info.maxOccurs); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } else { const char *form = ""; if (!s) { s = t; if (*s == ':') { s++; form = " form=\"unqualified\""; } } else { s++; form = " form=\"qualified\""; } if (((Tnode*)q->next->info.typ->ref)->type == Tpointer) { if (q->info.maxOccurs == 1) fprintf(fd, " next->info.typ->ref, ns1), q->info.minOccurs, nillable(q), form); else fprintf(fd, " next->info.typ->ref, ns1), q->info.minOccurs, q->info.maxOccurs, nillable(q), form); } else if (q->info.maxOccurs == 1) fprintf(fd, " next->info.typ->ref, ns1), q->info.minOccurs, form); else fprintf(fd, " next->info.typ->ref, ns1), q->info.minOccurs, q->info.maxOccurs, form); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } return 1; } else if ((q->info.typ->type == Ttemplate && !is_smart(q->info.typ)) || (q->info.typ->type == Tpointer && ((Tnode*)q->info.typ->ref)->type == Ttemplate) || (q->info.typ->type == Treference && ((Tnode*)q->info.typ->ref)->type == Ttemplate) || (q->info.typ->type == Trvalueref && ((Tnode*)q->info.typ->ref)->type == Ttemplate)) { t = ns_tag_convert(q); if (*t == '-') { fprintf(fd, " "); if (!uflag) fprintf(fd, "", q->sym->name); fprintf(fd, "\n"); } else if ((s = strchr(t+1, ':')) && (!strchr(q->sym->name+1, ':') || !has_ns_eq(ns, q->sym->name))) { if (((Tnode*)q->info.typ->ref)->type == Tpointer) { if (q->info.maxOccurs == 1) fprintf(fd, " info.minOccurs); else fprintf(fd, " info.minOccurs, q->info.maxOccurs); } else if (q->info.maxOccurs == 1) fprintf(fd, " info.minOccurs); else fprintf(fd, " info.minOccurs, q->info.maxOccurs); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } else { const char *form = ""; if (!s) { s = t; if (*s == ':') { s++; form = " form=\"unqualified\""; } } else { s++; form = " form=\"qualified\""; } if (((Tnode*)q->info.typ->ref)->type == Tpointer) { if (q->info.maxOccurs == 1) fprintf(fd, " info.typ->ref, ns1), q->info.minOccurs, nillable(q), form); else fprintf(fd, " info.typ->ref, ns1), q->info.minOccurs, q->info.maxOccurs, nillable(q), form); } else if (q->info.maxOccurs == 1) fprintf(fd, " info.typ->ref, ns1), q->info.minOccurs, form); else fprintf(fd, " info.typ->ref, ns1), q->info.minOccurs, q->info.maxOccurs, form); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } } else if (is_anytype(q)) /* ... maybe need to show all possible types rather than xsd:anyType */ { fprintf(fd, " \n", ns_tag_convert(q->next), q->info.minOccurs, q->info.maxOccurs); return 1; } else if (is_choice(q)) { if (q->info.minOccurs == 0) fprintf(fd, " \n"); else fprintf(fd, " \n"); if (q->next->info.typ->ref) gen_schema_elements(fd, q->next->info.typ, ns, ns1); fprintf(fd, " \n"); return 1; } else if (is_sequence(q)) { if (q->info.minOccurs == 0) fprintf(fd, " \n"); else fprintf(fd, " \n"); if (q->info.typ->type == Tpointer) gen_schema_elements(fd, (Tnode*)q->info.typ->ref, ns, ns1); else if (q->info.typ->ref) gen_schema_elements(fd, q->info.typ, ns, ns1); fprintf(fd, " \n"); return 0; } else { t = ns_tag_convert(q); if (*t == '-' || !*t) { fprintf(fd, " "); if (!uflag) fprintf(fd, "", q->sym->name); fprintf(fd, "\n"); } else if ((s = strchr(t+1, ':')) && (!strchr(q->sym->name+1, ':') || !has_ns_eq(ns, q->sym->name))) { fprintf(fd, " info.minOccurs, q->info.maxOccurs, nillable(q), set_default_value(q)); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } else { const char *form = ""; if (!s) { s = t; if (*s == ':') { s++; form = " form=\"unqualified\""; } } else { s++; form = " form=\"qualified\""; } fprintf(fd, " info.typ, ns1), q->info.minOccurs, q->info.maxOccurs, nillable(q), set_default_value(q), form); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } } fflush(fd); return 0; } void gen_schema_elements_attributes(FILE *fd, Table *t, const char *ns, const char *ns1, const char *style, const char *encoding) { Entry *p, *q, *e; Table *elt, *att; Service *sp; Method *m; Symbol *sym; const char *s, *method_style, *method_encoding, *method_response_encoding; int all = !strcmp(ns, ns1); elt = mktable(NULL); att = mktable(NULL); if (t && all) { for (p = t->list; p; p = p->next) { if (!eflag && p->info.typ->type == Tfun && !(p->info.sto & Sextern) && has_ns_eq(ns, p->sym->name)) { method_encoding = encoding; method_response_encoding = NULL; method_style = style; for (sp = services; sp; sp = sp->next) { if (!tagcmp(sp->ns, ns)) { for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, p->sym->name)) { if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; else if (m->mess == STYLE) method_style = m->part; } } } } if (!method_response_encoding) method_response_encoding = method_encoding; q = entry(classtable, p->sym); if (q) { if (is_document(method_style)) { if (!is_invisible(p->sym->name)) { sym = p->sym; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (!entry(elt, sym)) { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n \n \n", ns_tag_remove(p)); gen_schema_elements(fd, q->info.typ, ns, ns1); fprintf(fd, " \n"); gen_schema_attributes(fd, q->info.typ, ns, ns1); fprintf(fd, " \n \n"); e = enter(elt, sym); e->info = p->info; } } else { for (q = ((Table*)q->info.typ->ref)->list; q; q = q->next) { if (!(q->info.sto & Sextern) && !has_ns_eq(NULL, q->sym->name)) { sym = q->sym; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (!entry(elt, sym)) /* enter/entry w/o prefix is not useful to avoid clashes */ { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n", ns_tag_remove(q), wsdl_type(q->info.typ, ns1)); e = enter(elt, sym); e->info = q->info; } } } } } q = (Entry*)p->info.typ->ref; for (e = t->list; e; e = e->next) if (e != p && e->info.typ->type == Tfun && !(e->info.sto & Sextern) && q == (Entry*)e->info.typ->ref) q = NULL; if (q && !is_transient(q->info.typ)) { if (!is_response(q->info.typ)) { if (is_document(method_style)) { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n \n", ns_tag_remove(p)); fprintf(fd, " \n"); gen_schema_element(fd, p->info.typ, q, ns, ns1); fprintf(fd, " \n"); fprintf(fd, " \n \n"); } } else if (((Tnode*)q->info.typ->ref)->ref) { if (is_document(method_style)) { if (!has_ns_eq(NULL, q->sym->name)) { sym = ((Tnode*)q->info.typ->ref)->id; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (!entry(elt, sym)) { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n \n", ns_remove(((Tnode*)q->info.typ->ref)->id->name), ns_convert(((Tnode*)q->info.typ->ref)->id->name), ns_remove(((Tnode*)q->info.typ->ref)->id->name)); fprintf(fd, " \n"); gen_schema_elements(fd, (Tnode*)q->info.typ->ref, ns, ns1); fprintf(fd, " \n"); gen_schema_attributes(fd, (Tnode*)q->info.typ->ref, ns, ns1); fprintf(fd, " \n"); e = enter(elt, sym); e->info = q->info; } } } } } } } } } if (t && !eflag) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !(p->info.sto & Sextern)) { q = (Entry*)p->info.typ->ref; if (q && !is_transient(q->info.typ)) { if (is_response(q->info.typ)) { if (has_ns_eq(ns, q->sym->name)) { sym = q->sym; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (!entry(elt, sym)) { if (!uflag) fprintf(fd, " \n"); fprintf(fd, " \n", ns_tag_remove(q), wsdl_type(q->info.typ, ns1)); e = enter(elt, sym); e->info = q->info; } } } } } } } for (p = typetable->list; p; p = p->next) { if (is_transient(p->info.typ) || is_primclass(p->info.typ) || is_dynamic_array(p->info.typ)) continue; if (is_element(p->info.typ) && has_ns_eq(ns, p->sym->name)) { m = NULL; for (sp = services; sp && !m; sp = sp->next) for (m = sp->list; m; m = m->next) if ((m->mess&FAULT) && m->part && is_eq(m->part, p->sym->name)) break; if (!m) { sym = p->sym; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (!entry(elt, sym)) { fprintf(fd, " \n", ns_tag_remove(p), base_type(p->info.typ, ns1)); e = enter(elt, sym); e->info = p->info; } } } } for (p = classtable->list; p; p = p->next) { if (!p->info.typ->ref || /* is_invisible(p->info.typ->id->name) || */ is_transient(p->info.typ) || is_primclass(p->info.typ) || is_dynamic_array(p->info.typ)) continue; for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (!is_repetition(q) && !is_anytype(q) && (!strchr(q->sym->name+1, ':') || !eq_ns(p->sym->name, q->sym->name)) && has_ns_eq(ns, q->sym->name) && !is_transient(q->info.typ) && q->info.typ->type != Tfun) { m = NULL; for (sp = services; sp && !m; sp = sp->next) for (m = sp->list; m; m = m->next) if ((m->mess&FAULT) && m->part && is_eq(m->part, q->sym->name)) break; if (m) continue; /* already generated element for fault */ if (!(q->info.sto & Sattribute) && (q->info.typ->type == Tclass || q->info.typ->type == Tstruct || is_typedef(q->info.typ))) if (is_element(q->info.typ) || is_eq(q->info.typ->id->name, q->sym->name)) continue; /* type is already an element or type name matches member name */ sym = q->sym; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (q->info.sto & Sattribute) { e = entry(att, sym); if (e) { if ((!is_primitive(q->info.typ) || e->info.typ->type != q->info.typ->type) && reftype(e->info.typ) != reftype(q->info.typ)) { sprintf(errbuf, "Member '%s::%s' of type '%s' at line %d has a type that does not correspond to the required unique type '%s' defined for root-level attribute '%s'", p->sym->name, q->sym->name, c_type(q->info.typ), q->lineno, c_type(e->info.typ), ns_convert(q->sym->name)); semwarn(errbuf); } } else { fprintf(fd, " \n", ns_tag_remove(q), wsdl_type(q->info.typ, ns1)); e = enter(att, sym); e->info = q->info; } } else { e = entry(elt, sym); if (e) { if ((!is_primitive(q->info.typ) || e->info.typ->type != q->info.typ->type) && reftype(e->info.typ) != reftype(q->info.typ)) { sprintf(errbuf, "Member '%s::%s' of type '%s' at line %d has a type that does not correspond to the required unique type '%s' defined for root-level element '%s'", p->sym->name, q->sym->name, c_type(q->info.typ), q->lineno, c_type(e->info.typ), ns_convert(q->sym->name)); semwarn(errbuf); } } else { fprintf(fd, " \n", ns_tag_remove(q), wsdl_type(q->info.typ, ns1)); e = enter(elt, sym); e->info = q->info; } } } } if (is_element(p->info.typ) && has_ns_eq(ns, p->sym->name)) { m = NULL; for (sp = services; sp && !m; sp = sp->next) for (m = sp->list; m; m = m->next) if ((m->mess&FAULT) && m->part && is_eq(m->part, p->sym->name)) break; if (!m) { sym = p->sym; s = sym->name; if (*s == '_' && !(sym = lookup(s + 1))) sym = install(s + 1, ID); if (!entry(elt, sym)) { fprintf(fd, " \n", ns_tag_remove(p), wsdl_type(p->info.typ, ns1)); e = enter(elt, sym); e->info = p->info; } } } } freetable(elt); freetable(att); } void gen_schema_attributes(FILE *fd, Tnode *p, const char *ns, const char *ns1) { Entry *q; const char *t = NULL, *s = NULL, *r = NULL; for (q = ((Table*)p->ref)->list; q; q = q->next) { if (q->info.sto & Sattribute && !(q->info.sto & (Sprivate | Sprotected))) { r = set_default_value(q); t = ns_tag_convert(q); if (*t == '-' || is_anyAttribute(q->info.typ)) { fprintf(fd, " "); if (!uflag) fprintf(fd, "", q->sym->name); fprintf(fd, "\n"); } else if (*t && (s = strchr(t+1, ':')) && (!strchr(q->sym->name+1, ':') || !has_ns_eq(ns, q->sym->name))) { if (q->info.minOccurs) fprintf(fd, " \n", t, r); else if (q->info.maxOccurs == 0) fprintf(fd, " \n", t, r); else fprintf(fd, " \n", t, r); } else { const char *form = ""; if (!s) { s = t; if (*s == ':') { s++; form = " form=\"unqualified\""; } } else { s++; form = " form=\"qualified\""; } if (q->info.minOccurs) fprintf(fd, " info.typ, ns1), form, r); else if (q->info.maxOccurs == 0) fprintf(fd, " info.typ, ns1)); else fprintf(fd, " info.typ, ns1), form, r); if (gen_member_documentation(fd, p->id, q, ns, 1)) fprintf(fd, " \n"); } fflush(fd); } } } void gen_report_hr() { fprintf(freport, "[![][1] To top](#)\n\n\n"); } void gen_report_operation(const char *name, Entry *method, int service) { Service *sp; Method *m; int soap = (soap_version >= 0); int version = soap_version; int get = 0; int put = 0; int del = 0; int post = 0; int mime = 0; const char *style = NULL, *encoding = NULL; const char *action = NULL, *response_action = NULL, *method_encoding = NULL, *method_response_encoding = NULL; Entry *result, *p; result = (Entry*)method->info.typ->ref; (void)post; (void)method_response_encoding; p = entry(classtable, method->sym); if (!p) execerror("no table entry"); if (name) { if (service) fprintf(freport, "### Service Operation `%s::%s()`\n\n", name, ns_remove(method->sym->name)); else fprintf(freport, "### Proxy Operation `%s::%s()`\n\n", name, ns_remove(method->sym->name)); } else { if (service) fprintf(freport, "### Service Operation `%s()`\n\n", ident(method->sym->name)); else fprintf(freport, "### Operation `%s()`\n\n", ident(method->sym->name)); } for (sp = services; sp; sp = sp->next) { if (has_ns_eq(sp->ns, method->sym->name)) { style = sp->style; encoding = sp->encoding; method_encoding = encoding; method_response_encoding = NULL; if (sp->protocol) { if (strstr(sp->protocol, "GET")) get = 1; else if (strstr(sp->protocol, "PUT")) put = 1; else if (strstr(sp->protocol, "DELETE")) del = 1; else if (strstr(sp->protocol, "POST")) post = 1; if (strncmp(sp->protocol, "SOAP", 4)) soap = 0; else if (strlen(sp->protocol) > 6) version = sp->protocol[6] - '0'; } for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, method->sym->name)) { if (m->mess == ACTION || m->mess == REQUEST_ACTION) action = m->part; else if (m->mess == RESPONSE_ACTION) response_action = m->part; else if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; else if (m->mess == PROTOCOL) { if (strstr(m->part, "GET")) get = 1; else if (strstr(m->part, "PUT")) put = 1; else if (strstr(m->part, "DELETE")) del = 1; else if (strstr(m->part, "POST")) post = 1; if (strncmp(m->part, "SOAP", 4)) soap = 0; else if (strlen(m->part) > 6) version = m->part[6] - '0'; } else if ((m->mess&MIMEIN) && !strcmp(m->part, "application/x-www-form-urlencoded")) mime = 1; } } break; } } gen_report_type_doc(p); fprintf(freport, "This service operation is declared in [%s](%s) at line %d and has the following properties:\n\n", method->filename, method->filename, method->lineno); if (soap) { fprintf(freport, "- SOAP 1.%d protocol\n", version ? version : 1); fprintf(freport, "- SOAP %s style\n", is_document(style) ? "document" : "rpc"); if (sp && sp->URI && method_encoding) { if (is_literal(method_encoding)) fprintf(freport, "- SOAP literal\n"); else if (method_encoding && *method_encoding) fprintf(freport, "- SOAP %s\n", method_encoding); else if (method_encoding) fprintf(freport, "- SOAP encoded\n"); } else if (eflag) fprintf(freport, "- SOAP encoded\n"); else fprintf(freport, "- SOAP literal\n"); if (action && *action == '"') fprintf(freport, "- SOAP action %s\n", action); else if (action) fprintf(freport, "- SOAP action \"%s\"\n", action); else fprintf(freport, "- SOAP action \"\"\n"); if (response_action && *response_action == '"') fprintf(freport, "- SOAP response action %s\n", response_action); else if (response_action) fprintf(freport, "- SOAP response action \"%s\"\n", response_action); } else fprintf(freport, "- REST operation\n"); if (mime) fprintf(freport, "- HTTP application/x-www-form-urlencoded\n"); if (post) fprintf(freport, "- POST method\n"); else if (get) fprintf(freport, "- GET method\n"); else if (put) fprintf(freport, "- PUT method\n"); else if (del) fprintf(freport, "- DELETE method\n"); if (sp && sp->URL) fprintf(freport, "- Default service endpoint URL \"%s\"\n", sp->URL); if (!soap && action) fprintf(freport, "- Operation endpoint location path \"%s\"\n", action); if (sp && sp->URI) fprintf(freport, "- Operation namespace prefix `%s` and URI \"[%s](#doc-namespaces)\"\n", sp->ns, sp->URI); if (name) { if (service) { if (!is_transient(result->info.typ)) fprintf(freport, "\nThe following service class method must be defined in the service back-end code and will be called by the service dispatcher `%s::serve(soap)`, and should return `SOAP_OK` with the result value `%s` set or return an error code:\n", name, ident(result->sym->name)); else fprintf(freport, "\nThe following service class method must be defined in the service back-end code and will be called by the service dispatcher `%s::serve(soap)`, and should return `SOAP_OK` by returning `int %s::send_empty_%s_response(struct soap *soap, int httpcode)` when using HTTP:\n", name, name, ns_remove(method->sym->name)); } else { if (!is_transient(result->info.typ)) fprintf(freport, "\nTo invoke this service operation, use one of the following methods:\n"); else fprintf(freport, "\nTo invoke this service operation, use one of the following methods, where the recv method can be used by an asynchronous receiver:\n"); } } else { if (service) { if (!is_transient(result->info.typ)) fprintf(freport, "\nThe following service operation function declared in [%s](%s) must be defined in the service back-end code and will be called by the service dispatcher `%s_serve(soap)` defined in [%s](%s), and should return `SOAP_OK` with the result value `%s` set or return an error code:\n", soapStub, pathsoapStub, nflag?prefix:"soap", soapServer, pathsoapServer, ident(result->sym->name)); else fprintf(freport, "\nThe following service operation function declared in [%s](%s) must be defined in the service back-end code and will be called by the service dispatcher `%s_serve(soap)` defined in [%s](%s), and should return `SOAP_OK` by returning `int soap_send_empty_response(struct soap *soap, int httpcode)` when using HTTP:\n", soapStub, pathsoapStub, nflag?prefix:"soap", soapServer, pathsoapServer); } else { if (!is_transient(result->info.typ)) fprintf(freport, "\nTo invoke this service operation, use the following auto-generated function declared in [%s](%s) and defined in [%s](%s):\n", soapStub, pathsoapStub, soapClient, pathsoapClient); else fprintf(freport, "\nTo invoke this service operation, use the following auto-generated send function declared in [%s](%s) and defined in [%s](%s), where the recv function can be used by an asynchronous receiver:\n", soapStub, pathsoapStub, soapClient, pathsoapClient); } } } void gen_report_type(Tnode *typ, const char *what) { if (!is_transient(typ) && ((typ->type == Tstruct || typ->type == Tclass || typ->type == Tenum || typ->type == Tenumsc || is_typedef(typ)) && !is_stdstr(typ)) && !is_bool(typ)) fprintf(freport, ", where the type of this %s is %s ", what, ident(typ->id->name), ident(typ->id->name)); else if (typ->type == Tpointer && !is_string(typ) && !is_wstring(typ) && !is_soapref(typ)) { Tnode *ref = typ->ref; if ((ref->type == Tstruct || ref->type == Tclass || ref->type == Tenum || ref->type == Tenumsc || is_typedef(ref)) && !is_stdstr(ref) && !is_bool(ref)) fprintf(freport, ", where the type of this %s is a pointer to %s ", what, ident(ref->id->name), ident(ref->id->name)); } else if (is_smart(typ)) { Tnode *ref = typ->ref; if ((ref->type == Tstruct || ref->type == Tclass || ref->type == Tenum || ref->type == Tenumsc || is_typedef(ref)) && !is_stdstr(ref) && !is_bool(ref)) fprintf(freport, ", where the type of this %s is a smart pointer to %s ", what, ident(ref->id->name), ident(ref->id->name)); } else if (is_template(typ)) { Tnode *ref = typ->ref; if (ref->type == Tpointer || is_smart(ref)) { ref = (Tnode*)ref->ref; if ((ref->type == Tstruct || ref->type == Tclass || ref->type == Tenum || ref->type == Tenumsc || is_typedef(ref)) && !is_stdstr(ref) && !is_bool(ref)) fprintf(freport, ", where the type of this %s is a container of pointers to %s ", what, ident(ref->id->name), ident(ref->id->name)); } else if ((ref->type == Tstruct || ref->type == Tclass || ref->type == Tenum || ref->type == Tenumsc || is_typedef(ref)) && !is_stdstr(ref) && !is_bool(ref)) fprintf(freport, ", where the type of this %s is a container of %s ", what, ident(ref->id->name), ident(ref->id->name)); } } void gen_report_type_doc(Entry *type) { Service *sp; Data *d; if (!type->sym) return; for (sp = services; sp; sp = sp->next) { if (has_ns_eq(sp->ns, type->sym->name)) { for (d = sp->data; d; d = d->next) { if (d->name && d->text && !strstr(d->name, "::") && is_eq_nons(d->name, type->sym->name)) { gen_text(freport, d->text); fprintf(freport, "\n\n"); } } } } } void gen_report_members(Entry *type, const char *nsa, const char *nse) { Entry *q; int flag = 0; if (!(Table*)type->info.typ->ref) return; if (is_dynamic_array(type->info.typ) || is_choice(type)) return; fprintf(freport, "where:\n\n"); if (type->info.typ->base) fprintf(freport, "- %s is the base class\n", ident(type->info.typ->base->name), ident(type->info.typ->base->name)); for (q = classtable->list; q; q = q->next) if (q->info.typ->base == type->sym) fprintf(freport, "- %s is a derived class of this base class\n", c_type(q->info.typ), c_type(q->info.typ)); for (q = ((Table*)type->info.typ->ref)->list; q; q = q->next) { if (q->info.typ->type == Tfun) continue; if ((q->info.sto & Stypedef)) continue; if (flag) { flag = 0; continue; } fprintf(freport, "- `%s`", c_type_id(q->info.typ, q->sym->name)); gen_report_member(type, q); if (is_anyAttribute(q->info.typ)) fprintf(freport, " is an XML DOM attribute list"); else if (q->info.sto & Sattribute) { if (q->info.minOccurs >= 1) fprintf(freport, " is a required attribute *`%s`* of XSD type *`%s`*", ns_add(q, nsa), wsdl_type(q->info.typ, "")); else fprintf(freport, " is an optional attribute *`%s`* of XSD type *`%s`*", ns_add(q, nsa), wsdl_type(q->info.typ, "")); if (is_external(q->info.typ)) fprintf(freport, " with a custom serializer `%s`", c_type_sym(q->info.typ)); if (q->info.hasval) { if (q->info.fixed) fprintf(freport, " that must have the fixed value `%s`", c_init_a(q, "")); else fprintf(freport, " that has a default value `%s`", c_init_a(q, "")); } else if (q->info.ptrval) { if (q->info.fixed) fprintf(freport, " that has the fixed value `%s`", c_init_a(q, "")); else fprintf(freport, " that has a default value `%s`", c_init_a(q, "")); } } else if (is_soapref(q->info.typ)) { fprintf(freport, " the context that manages this object"); } else if (q->info.sto & (Sconst | Sprivate | Sprotected)) { fprintf(freport, " is not serialized\n"); continue; } else if (!is_dynamic_array(type->info.typ) && is_repetition(q)) { if (q->info.maxOccurs > 1) fprintf(freport, " is a sequence of " SOAP_LONG_FORMAT " to " SOAP_LONG_FORMAT " elements *`<%s>`* of XSD type *`%s`*", q->info.minOccurs, q->info.maxOccurs, ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); else if (q->info.minOccurs >= 1) fprintf(freport, " is a sequence of at least " SOAP_LONG_FORMAT " elements *`<%s>`* of XSD type *`%s`*", q->info.minOccurs, ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); else fprintf(freport, " is a sequence of elements *`<%s>`* of XSD type *`%s`*", ns_add(q->next, nse), wsdl_type(q->next->info.typ, "")); fprintf(freport, " stored in dynamic array `%s` of length `%s`", ident(q->next->sym->name), ident(q->sym->name)); flag = 1; } else if (is_anytype(q)) { fprintf(freport, " is any type of element *`<%s>`* assigned to member `%s` as a `void*` pointer cast, with its `SOAP_TYPE_Name` assigned to member `%s`", ns_add(q->next, nse), ident(q->next->sym->name), ident(q->sym->name)); flag = 1; } else if (is_choice(q)) { Entry *r; fprintf(freport, " is a union `%s` with variant selector `%s` set to one of:", c_type(q->next->info.typ), ident(q->sym->name)); for (r = ((Table*)q->next->info.typ->ref)->list; r; r = r->next) fprintf(freport, " `%s`", soap_union_member(q->next->info.typ, r)); flag = 1; } else if (is_anyType(q->info.typ)) fprintf(freport, " is an XML DOM element node graph"); else if (is_item(q)) fprintf(freport, " is simple content of XSD type *`%s`* wrapped in *`%s`*", wsdl_type(q->info.typ, ""), wsdl_type(type->info.typ, "")); else if (is_self(q)) fprintf(freport, " is *`%s`* wrapped in *`%s`*, where `__self` matches the element tag of the struct/class member with the `%s` type", wsdl_type(q->info.typ, ""), wsdl_type(type->info.typ, ""), c_type(type->info.typ)); else if (q->info.typ->type != Tfun && q->info.typ->type != Tunion && !(q->info.sto & (Sconst | Sprivate | Sprotected)) && !(q->info.sto & Sattribute) && !is_transient(q->info.typ) && !is_external(q->info.typ) && strncmp(q->sym->name, "__", 2)) { if (q->info.maxOccurs > 1) fprintf(freport, " is a sequence of " SOAP_LONG_FORMAT " to " SOAP_LONG_FORMAT " elements *`<%s>`* of XSD type *`%s`*", q->info.minOccurs, q->info.maxOccurs, ns_add(q, nse), wsdl_type(q->info.typ, "")); else if (q->info.minOccurs >= 1) { if (q->info.nillable) fprintf(freport, " is a required nillable (xsi:nil when NULL) element *`<%s>`* of XSD type *`%s`*", ns_add(q, nse), wsdl_type(q->info.typ, "")); else fprintf(freport, " is a required element *`<%s>`* of XSD type *`%s`*", ns_add(q, nse), wsdl_type(q->info.typ, "")); } else fprintf(freport, " is an optional element *`<%s>`* of XSD type *`%s`*", ns_add(q, nse), wsdl_type(q->info.typ, "")); } else if (is_external(q->info.typ) && q->info.minOccurs >= 1) { if (q->info.nillable) fprintf(freport, " is a required nillable (xsi:nil when NULL) element *`<%s>`* of XSD type *`%s`* with a custom serializer `%s`", ns_add(q, nse), wsdl_type(q->info.typ, ""), c_type_sym(q->info.typ)); else fprintf(freport, " is a required element *`<%s>`* of XSD type *`%s`* with a custom serializer `%s`", ns_add(q, nse), wsdl_type(q->info.typ, ""), c_type_sym(q->info.typ)); } else if (is_external(q->info.typ)) { fprintf(freport, " is an optional element *`<%s>`* of XSD type *`%s`* with a custom serializer `%s`", ns_add(q, nse), wsdl_type(q->info.typ, ""), c_type_sym(q->info.typ)); } else if (is_transient(q->info.typ)) { fprintf(freport, " is transient and not serialized"); } if (q->info.hasval) { if (q->info.fixed) fprintf(freport, " that must have the fixed value `%s`", c_init_a(q, "")); else fprintf(freport, " that has default value `%s`", c_init_a(q, "")); } else if (q->info.ptrval) { if (q->info.fixed) fprintf(freport, " that has the fixed value `%s`", c_init_a(q, "")); else fprintf(freport, " that has default value `%s`", c_init_a(q, "")); } gen_report_type(q->info.typ, "member"); if (is_invisible(q->sym->name)) fprintf(freport, " (the leading underscores of the member name make this member invisible in XML, meaning it has no element tag)"); else if (is_unmatched(q->sym)) fprintf(freport, " (the leading underscore of the member name makes this member a wildcard that matches any XML element tag)"); fprintf(freport, "\n"); } fprintf(freport, "\n"); } void gen_report_member(Entry *type, Entry *member) { Service *sp; const char *t; if (!type->sym || !member->sym->name) return; t = ns_remove(type->sym->name); for (sp = services; sp; sp = sp->next) { Data *d; if (has_ns_eq(sp->ns, type->sym->name)) { for (d = sp->data; d; d = d->next) { const char *s = strstr(d->name, "::"); if (s && !strncmp(t, d->name, s - d->name) && !t[s - d->name] && !strcmp(s + 2, member->sym->name)) { fprintf(freport, " "); gen_text(freport, d->text); } } } } } void gen_method_documentation(FILE *fd, Entry *p, const char *ns) { Service *sp; Data *d; if (!p->sym) return; for (sp = services; sp; sp = sp->next) { if (!tagcmp(sp->ns, ns)) { for (d = sp->data; d; d = d->next) { if (d->name && d->text && !strstr(d->name, "::") && is_eq_nons(d->name, p->sym->name)) { fprintf(fd, " \n "); gen_text(fd, d->text); fprintf(fd, "\n \n"); return; } } } } if (!uflag) fprintf(fd, " Service definition of function %s\n", p->sym->name); } void gen_type_documentation(FILE *fd, Entry *type, const char *ns) { Service *sp; Data *d; if (!type->sym) { fprintf(fd, "\n"); return; } for (sp = services; sp; sp = sp->next) { if (!tagcmp(sp->ns, ns)) { for (d = sp->data; d; d = d->next) { if (d->name && d->text && !strstr(d->name, "::") && is_eq_nons(d->name, type->sym->name)) { fprintf(fd, "\n \n \n "); gen_text(fd, d->text); fprintf(fd, "\n \n \n"); return; } } } } if (!uflag) fprintf(fd, "", type->sym->name); fprintf(fd, "\n"); } int gen_member_documentation(FILE *fd, Symbol *type, Entry *member, const char *ns, int scope) { Service *sp; Data *d; const char *t; if (!type || !member->sym) { fprintf(fd, "/>\n"); return 0; } t = ns_remove(type->name); for (sp = services; sp; sp = sp->next) { if (!tagcmp(sp->ns, ns)) { for (d = sp->data; d; d = d->next) { if (d->name && d->text) { const char *s = strstr(d->name, "::"); if (s && !strncmp(t, d->name, s - d->name) && !t[s - d->name] && !strcmp(s + 2, member->sym->name)) { fprintf(fd, ">\n \n \n "); gen_text(fd, d->text); fprintf(fd, "\n \n \n"); return 1; } } } } } fprintf(fd, "/>"); if (!uflag) { if (scope) fprintf(fd, "", type->name, member->sym->name); else fprintf(fd, "", member->sym->name); } fprintf(fd, "\n"); return 0; } void gen_text(FILE *fd, const char *s) { for (; *s; s++) { if (*s == 10) fprintf(fd, "\n"); else if (*s < 32 || *s >= 127) fprintf(fd, "&#%.2x;", (unsigned char)*s); else if (*s == '<') fprintf(fd, "<"); else if (*s == '>') fprintf(fd, ">"); else if (*s == '&') fprintf(fd, "&"); else if (*s == '\\' && (s[1] == '\n' || s[1] == '\r')) s += (s[1] == '\r'); else if (*s == '\\') fprintf(fd, "\\\\"); else fprintf(fd, "%c", *s); } } void gen_nsmap(FILE *fd) { Symbol *ns1; Service *sp; fprintf(fd, "{\n"); for (ns1 = nslist; ns1; ns1 = ns1->next) { for (sp = services; sp; sp = sp->next) if (!tagcmp(sp->ns, ns1->name) && sp->URI) break; if (sp) { if (!strcmp(ns1->name, "SOAP-ENV")) { if (soap_version < 0) fprintf(fd, " {\"SOAP-ENV\", NULL, NULL, NULL},\n"); else fprintf(fd, " {\"%s\", \"%s\", \"%s\", NULL},\n", ns_convert(ns1->name), sp->URI, sp->URI2 ? sp->URI2 : envURI); } else if (!strcmp(ns1->name, "SOAP-ENC")) { if (soap_version < 0) fprintf(fd, " {\"SOAP-ENC\", NULL, NULL, NULL},\n"); else fprintf(fd, " {\"%s\", \"%s\", \"%s\", NULL},\n", ns_convert(ns1->name), sp->URI, sp->URI2 ? sp->URI2 : encURI); } else if (sp->URI2) fprintf(fd, " {\"%s\", \"%s\", \"%s\", NULL},\n", ns_convert(ns1->name), sp->URI, sp->URI2); else fprintf(fd, " {\"%s\", \"%s\", NULL, NULL},\n", ns_convert(ns1->name), sp->URI); } else if (!strcmp(ns1->name, "SOAP-ENV")) { if (soap_version < 0) fprintf(fd, " {\"SOAP-ENV\", NULL, NULL, NULL},\n"); else if (is_soap12(NULL)) fprintf(fd, " {\"SOAP-ENV\", \"%s\", \"http://schemas.xmlsoap.org/soap/envelope/\", NULL},\n", envURI); else fprintf(fd, " {\"SOAP-ENV\", \"%s\", \"http://www.w3.org/*/soap-envelope\", NULL},\n", envURI); } else if (!strcmp(ns1->name, "SOAP-ENC")) { if (soap_version < 0) fprintf(fd, " {\"SOAP-ENC\", NULL, NULL, NULL},\n"); else if (is_soap12(NULL)) fprintf(fd, " {\"SOAP-ENC\", \"%s\", \"http://schemas.xmlsoap.org/soap/encoding/\", NULL},\n", encURI); else fprintf(fd, " {\"SOAP-ENC\", \"%s\", \"http://www.w3.org/*/soap-encoding\", NULL},\n", encURI); } else if (!strcmp(ns1->name, "xsi")) fprintf(fd, " {\"xsi\", \"%s\", \"http://www.w3.org/*/XMLSchema-instance\", NULL},\n", xsiURI); else if (!strcmp(ns1->name, "xsd")) fprintf(fd, " {\"xsd\", \"%s\", \"http://www.w3.org/*/XMLSchema\", NULL},\n", xsdURI); else fprintf(fd, " {\"%s\", \"%s/%s.xsd\", NULL, NULL},\n", ns_convert(ns1->name), tmpURI, ns_convert(ns1->name)); } fprintf(fd, " {NULL, NULL, NULL, NULL}\n };\n"); } void gen_proxy(FILE *fd, Table *table, Symbol *ns, const char *name, const char *URL) { Entry *p, *q, *r; Table *t, *output; Service *sp; int flag; const char *name1; name1 = ns_cname(name, NULL); for (sp = services; sp; sp = sp->next) if (!tagcmp(sp->ns, ns->name)) break; fprintf(fd, "\n\n#ifndef %s%sProxy_H\n#define %s%sProxy_H\n#include \"%sH.h\"", prefix, name1, prefix, name1, prefix); if (nflag) fprintf(fd, "\nextern SOAP_NMAC struct Namespace %s_namespaces[];", prefix); if (namespaceid) fprintf(fd, "\n\nnamespace %s {", namespaceid); fprintf(fd, "\nclass %s\n{ public:\n\t/// Runtime engine context allocated in constructor\n\tstruct soap *soap;\n\t/// Endpoint URL of service '%s' (change as needed)\n\tconst char *endpoint;\n\t/// Constructor allocates soap engine context, sets default endpoint URL, and sets namespace mapping table\n", name1, name); if (nflag) fprintf(fd, "\t%s() { soap = soap_new(); if (soap) soap->namespaces = %s_namespaces; endpoint = \"%s\"; }\n", name1, prefix, URL); else { fprintf(fd, "\t%s()\n\t{ soap = soap_new(); endpoint = \"%s\"; if (soap && !soap->namespaces) { static const struct Namespace namespaces[] = ", name1, URL); gen_nsmap(fd); fprintf(fd, "\tsoap->namespaces = namespaces; } }\n"); } fprintf(fd, "\t/// Destructor deletes deserialized data and engine context\n\tvirtual ~%s() { if (soap) { soap_destroy(soap); soap_end(soap); soap_free(soap); } }\n", name1); fflush(fd); for (r = table->list; r; r = r->next) { if (r->info.typ->type == Tfun && !(r->info.sto & Sextern) && has_ns_eq(ns->name, r->sym->name)) { p = entry(table, r->sym); if (p) q = (Entry*)p->info.typ->ref; else { fprintf(stderr, "Internal error: no table entry\n"); return; } p = entry(classtable, r->sym); if (!p) { fprintf(stderr, "Internal error: no parameter table entry\n"); return; } output = (Table*)p->info.typ->ref; fprintf(fd, "\t/// Invoke '%s' of service '%s' and return error code (or SOAP_OK)\n", ns_remove(r->sym->name), name); fprintf(fd, "\tvirtual int %s(", ident(r->sym->name)); flag = 0; for (t = output; t; t = t->prev) { p = t->list; if (p) { fprintf(fd, "%s%s", c_storage(p->info.sto), c_type_id(p->info.typ, p->sym->name)); for (p = p->next; p; p = p->next) fprintf(fd, ", %s%s", c_storage(p->info.sto), c_type_id(p->info.typ, p->sym->name)); flag = 1; } } if (is_transient(q->info.typ)) fprintf(fd, ") { return soap ? soap_send_%s(soap, endpoint, NULL", ident(r->sym->name)); else if (flag) fprintf(fd, ", %s%s) { return soap ? soap_call_%s(soap, endpoint, NULL", c_storage(q->info.sto), c_type_id(q->info.typ, q->sym->name), ident(r->sym->name)); else fprintf(fd, "%s%s) { return soap ? soap_call_%s(soap, endpoint, NULL", c_storage(q->info.sto), c_type_id(q->info.typ, q->sym->name), ident(r->sym->name)); for (t = output; t; t = t->prev) for (p = t->list; p; p = p->next) fprintf(fd, ", %s", ident(p->sym->name)); if (is_transient(q->info.typ)) fprintf(fd, ") : SOAP_EOM; }\n"); else fprintf(fd, ", %s) : SOAP_EOM; }\n", ident(q->sym->name)); fflush(fd); } } fprintf(fd, "};"); if (namespaceid) fprintf(fd, "\n\n} // namespace %s\n", namespaceid); fprintf(fd, "\n#endif\n"); } void gen_object(FILE *fd, Table *table, const char *name) { const char *name1; Entry *method; name1 = ns_cname(name, NULL); fprintf(fd, "\n\n#ifndef %s%sObject_H\n#define %s%sObject_H\n#include \"%sH.h\"", prefix, name1, prefix, name1, prefix); banner(fd, "Service Object"); if (namespaceid) fprintf(fd, "\n\nnamespace %s {", namespaceid); fprintf(fd, "\nclass %sService : public soap\n{ public:", name1); fprintf(fd, "\n\t%sService()\n\t{ static const struct Namespace namespaces[] = ", name1); gen_nsmap(fd); fprintf(fd, "\n\tsoap_init(this); this->namespaces = namespaces; };"); fprintf(fd, "\n\t/// Destructor deletes deserialized data and engine context"); fprintf(fd, "\n\tvirtual ~%sService() { soap_destroy(this); soap_end(this); };", name1); fprintf(fd, "\n#ifndef WITH_NOIO"); fprintf(fd, "\n\t/// Bind service to port (returns master socket or SOAP_INVALID_SOCKET)"); fprintf(fd, "\n\tvirtual\tSOAP_SOCKET bind(const char *host, int port, int backlog) { return soap_bind(this, host, port, backlog); };"); fprintf(fd, "\n\t/// Accept next request (returns socket or SOAP_INVALID_SOCKET)"); fprintf(fd, "\n\tvirtual\tSOAP_SOCKET accept() { return soap_accept(this); };"); fprintf(fd, "\n#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS)"); fprintf(fd, "\n\t/// Then accept SSL handshake, when SSL is used"); fprintf(fd, "\n\tvirtual\tint ssl_accept() { return soap_ssl_accept(this); };"); fprintf(fd, "\n#endif"); fprintf(fd, "\n#endif"); fprintf(fd, "\n\t/// Serve this request (returns SOAP_OK or error code)"); if (nflag) fprintf(fd, "\n\tvirtual\tint serve() { return %s_serve(this); };", prefix); else fprintf(fd, "\n\tvirtual\tint serve() { return soap_serve(this); };"); fprintf(fd, "\n};"); banner(fd, "Service Operations (you should define these globally)"); for (method = table->list; method; method = method->next) { if (method->info.typ->type == Tfun && !(method->info.sto & Sextern)) { Entry *p, *q = entry(table, method->sym); Table *output; if (q) p = (Entry*)q->info.typ->ref; else { fprintf(stderr, "Internal error: no table entry\n"); return; } q = entry(classtable, method->sym); output = (Table*)q->info.typ->ref; fprintf(fd, "\n\nSOAP_FMAC5 int SOAP_FMAC6 %s(struct soap*", ident(method->sym->name)); gen_params(fd, output, p, 1); fprintf(fd, ";"); } } if (namespaceid) fprintf(fd, "\n\n} // namespace %s\n", namespaceid); fprintf(fd, "\n\n#endif\n"); } void gen_proxy_header(FILE *fd, Table *table, Symbol *ns, const char *name) { static int first_class = 1; Entry *p, *method; Table *t; if (fd != freport) fprintf(fd, "\n\n#ifndef %s%s_H\n#define %s%s_H\n#include \"%sH.h\"", prefix, name, prefix, name, prefix); else { Service *sp; if (first_class) fprintf(fd, "## Web Client Proxy Class %s {#doc-client}\n\n", name); else fprintf(fd, "## Web Client Proxy Class %s {#%s}\n\n", name, name); first_class = 0; for (sp = services; sp; sp = sp->next) { if (sp->documentation) { gen_text(freport, sp->documentation); fprintf(freport, "\n\n"); } } fprintf(fd, "This client proxy class is declared in [%s](%s) and defined in [%s](%s):", soapProxyH, pathsoapProxyH, soapProxyC, pathsoapProxyC); } if (namespaceid) fprintf(fd, "\n\n namespace %s {", namespaceid); if (iflag) fprintf(fd, "\n\n class SOAP_CMAC %s : public soap {\n public:", name); else { fprintf(fd, "\n\n class SOAP_CMAC %s {\n public:", name); fprintf(fd, "\n /// Context to manage proxy IO and data\n struct soap *soap;\n bool soap_own; ///< flag indicating that this context is owned by this proxy when context is shared"); } fprintf(fd, "\n /// Endpoint URL of service '%s' (change as needed)", name); fprintf(fd, "\n const char *soap_endpoint;"); fprintf(fd, "\n /// Variables globally declared in %s, if any", filename); for (p = table->list; p; p = p->next) if (p->info.typ->type != Tfun && !(p->info.sto & Sstatic)) fprintf(fd, "\n %s%s;", c_storage(p->info.sto), c_type_id(p->info.typ, p->sym->name)); fprintf(fd, "\n /// Construct a proxy with new managing context"); fprintf(fd, "\n %s();", name); fprintf(fd, "\n /// Copy constructor"); fprintf(fd, "\n %s(const %s& rhs);", name, name); if (iflag) { fprintf(fd, "\n /// Construct proxy given a managing context"); fprintf(fd, "\n %s(const struct soap&);", name); } else { fprintf(fd, "\n /// Construct proxy given a shared managing context"); fprintf(fd, "\n %s(struct soap*);", name); } fprintf(fd, "\n /// Constructor taking an endpoint URL"); fprintf(fd, "\n %s(const char *endpoint);", name); fprintf(fd, "\n /// Constructor taking input and output mode flags for the new managing context"); fprintf(fd, "\n %s(soap_mode iomode);", name); fprintf(fd, "\n /// Constructor taking endpoint URL and input and output mode flags for the new managing context"); fprintf(fd, "\n %s(const char *endpoint, soap_mode iomode);", name); fprintf(fd, "\n /// Constructor taking input and output mode flags for the new managing context"); fprintf(fd, "\n %s(soap_mode imode, soap_mode omode);", name); if (iflag) fprintf(fd, "\n /// Destructor deletes deserialized data and managing context"); else fprintf(fd, "\n /// Destructor deletes non-shared managing context only (use destroy() to delete deserialized data)"); fprintf(fd, "\n virtual ~%s();", name); fprintf(fd, "\n /// Initializer used by constructors"); fprintf(fd, "\n virtual void %s_init(soap_mode imode, soap_mode omode);", name); fprintf(fd, "\n /// Return a copy that has a new managing context with the same engine state"); fprintf(fd, "\n virtual %s *copy();", name); fprintf(fd, "\n /// Copy assignment"); fprintf(fd, "\n %s& operator=(const %s&);", name, name); fprintf(fd, "\n /// Delete all deserialized data (uses soap_destroy() and soap_end())"); fprintf(fd, "\n virtual void destroy();"); fprintf(fd, "\n /// Delete all deserialized data and reset to default"); fprintf(fd, "\n virtual void reset();"); fprintf(fd, "\n /// Disables and removes SOAP Header from message by setting soap->header = NULL"); fprintf(fd, "\n virtual void soap_noheader();"); if (!namespaceid) { p = entry(classtable, lookup("SOAP_ENV__Header")); if (p) { t = (Table*)p->info.typ->ref; if (t && t->list && !is_void(t->list->info.typ)) { fprintf(fd, "\n /// Add SOAP Header to message"); fprintf(fd, "\n virtual void soap_header("); gen_params_ref(fd, t, NULL, 0); fprintf(fd, ";"); } } } else fprintf(fd, "\n // virtual void soap_header(...) method removed due to option -q or -Q"); fprintf(fd, "\n /// Get SOAP Header structure (i.e. soap->header, which is NULL when absent)"); fprintf(fd, "\n virtual ::SOAP_ENV__Header *soap_header();"); fprintf(fd, "\n /// Get SOAP Fault structure (i.e. soap->fault, which is NULL when absent)"); fprintf(fd, "\n virtual ::SOAP_ENV__Fault *soap_fault();"); fprintf(fd, "\n /// Get SOAP Fault string (NULL when absent)"); fprintf(fd, "\n virtual const char *soap_fault_string();"); fprintf(fd, "\n /// Get SOAP Fault detail as string (NULL when absent)"); fprintf(fd, "\n virtual const char *soap_fault_detail();"); fprintf(fd, "\n /// Close connection (normally automatic, except for send_X ops)"); fprintf(fd, "\n virtual int soap_close_socket();"); fprintf(fd, "\n /// Force close connection (can kill a thread blocked on IO)"); fprintf(fd, "\n virtual int soap_force_close_socket();"); fprintf(fd, "\n /// Print fault"); fprintf(fd, "\n virtual void soap_print_fault(FILE*);"); fprintf(fd, "\n #ifndef WITH_LEAN"); fprintf(fd, "\n #ifndef WITH_COMPAT"); fprintf(fd, "\n /// Print fault to stream"); fprintf(fd, "\n virtual void soap_stream_fault(std::ostream&);"); fprintf(fd, "\n #endif"); fprintf(fd, "\n /// Write fault to buffer"); fprintf(fd, "\n virtual char *soap_sprint_fault(char *buf, size_t len);"); fprintf(fd, "\n #endif"); for (method = table->list; method; method = method->next) if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && has_ns_eq(ns->name, method->sym->name)) gen_method(fd, method, 0); fprintf(fd, "\n };"); if (namespaceid) fprintf(fd, "\n\n } // namespace %s\n", namespaceid); if (fd != freport) fprintf(fd, "\n#endif\n"); else { fprintf(freport, "\n\n"); for (method = table->list; method; method = method->next) { Entry *result, *p; result = (Entry*)method->info.typ->ref; p = entry(classtable, method->sym); if (!p) execerror("no table entry"); if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && has_ns_eq(ns->name, method->sym->name)) { gen_report_operation(name, method, 0); gen_method(freport, method, 0); fprintf(freport, "\n\nwhere:\n\n- `const char *soap_endpoint` is the endpoint URL or NULL to use the default\n- `const char *soap_action` is the SOAP action header or NULL to use the default\n"); gen_report_params(p, result, 0); if (!is_transient(result->info.typ)) fprintf(freport, "These methods return `SOAP_OK` and set the last parameter `%s` to the result, or return an error code\n\n", ident(result->sym->name)); else fprintf(freport, "These methods return `SOAP_OK` or return an error code\n\nNote that `int soap_recv_empty_response(struct soap*)` is called in `%s` after the send operation, which is required when communicating over HTTP to receive the HTTP acknowledgment\n\n", ns_remove(method->sym->name)); gen_report_hr(); } } } } void gen_proxy_code(FILE *fd, Table *table, Symbol *ns, const char *name) { Entry *p, *method, *param; Table *t; const char *soap; if (iflag) soap = "this"; else soap = "this->soap"; fprintf(fd, "\n\n#include \"%s%s.h\"", prefix, name); if (namespaceid) fprintf(fd, "\n\nnamespace %s {", namespaceid); if (iflag) { fprintf(fd, "\n\n%s::%s() : soap(SOAP_IO_DEFAULT)\n{\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const %s& rhs)\n{\tsoap_copy_context(this, &rhs);\n\tthis->soap_endpoint = rhs.soap_endpoint;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const struct soap &_soap) : soap(_soap)\n{ }", name, name); fprintf(fd, "\n\n%s::%s(const char *endpoint) : soap(SOAP_IO_DEFAULT)\n{\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n\tsoap_endpoint = endpoint;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode iomode) : soap(iomode)\n{\t%s_init(iomode, iomode);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const char *endpoint, soap_mode iomode) : soap(iomode)\n{\t%s_init(iomode, iomode);\n\tsoap_endpoint = endpoint;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode imode, soap_mode omode) : soap(imode, omode)\n{\t%s_init(imode, omode);\n}", name, name, name); fprintf(fd, "\n\n%s::~%s()\n{\n\tthis->destroy();\n\t}", name, name); } else { fprintf(fd, "\n\n%s::%s()\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const %s& rhs)\n{\tthis->soap = rhs.soap;\n\tthis->soap_own = false;\n\tthis->soap_endpoint = rhs.soap_endpoint;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(struct soap *_soap)\n{\tthis->soap = _soap;\n\tthis->soap_own = false;\n\t%s_init(_soap->imode, _soap->omode);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const char *endpoint)\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n\tsoap_endpoint = endpoint;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode iomode)\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(iomode, iomode);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const char *endpoint, soap_mode iomode)\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(iomode, iomode);\n\tsoap_endpoint = endpoint;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode imode, soap_mode omode)\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(imode, omode);\n}", name, name, name); fprintf(fd, "\n\n%s::~%s()\n{\tif (this->soap_own)\n\t\tsoap_free(this->soap);\n}", name, name); } fprintf(fd, "\n\nvoid %s::%s_init(soap_mode imode, soap_mode omode)\n{\tsoap_imode(%s, imode);\n\tsoap_omode(%s, omode);\n\tsoap_endpoint = NULL;\n\tstatic const struct Namespace namespaces[] = ", name, name, soap, soap); gen_nsmap(fd); fprintf(fd, "\tsoap_set_namespaces(%s, namespaces);\n}", soap); if (iflag) { fprintf(fd, "\n\n%s *%s::copy()\n{\t%s *dup = SOAP_NEW_UNMANAGED(%s(*(struct soap*)%s));\n\treturn dup;\n}", name, name, name, name, soap); fprintf(fd, "\n\n%s& %s::operator=(const %s& rhs)\n{\tsoap_copy_context(this, &rhs);\n\tthis->soap_endpoint = rhs.soap_endpoint;\n\treturn *this;\n}", name, name, name); } else { fprintf(fd, "\n\n%s *%s::copy()\n{\t%s *dup = SOAP_NEW_UNMANAGED(%s);\n\tif (dup)\n\t\tsoap_copy_context(dup->soap, this->soap);\n\treturn dup;\n}", name, name, name, name); fprintf(fd, "\n\n%s& %s::operator=(const %s& rhs)\n{\tif (this->soap != rhs.soap)\n\t{\tif (this->soap_own)\n\t\t\tsoap_free(this->soap);\n\t\tthis->soap = rhs.soap;\n\t\tthis->soap_own = false;\n\t\tthis->soap_endpoint = rhs.soap_endpoint;\n\t}\n\treturn *this;\n}", name, name, name); } fprintf(fd, "\n\nvoid %s::destroy()\n{\tsoap_destroy(%s);\n\tsoap_end(%s);\n}", name, soap, soap); fprintf(fd, "\n\nvoid %s::reset()\n{\tthis->destroy();\n\tsoap_done(%s);\n\tsoap_initialize(%s);\n\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n}", name, soap, soap, name); fprintf(fd, "\n\nvoid %s::soap_noheader()\n{\t%s->header = NULL;\n}", name, soap); if (!namespaceid) { p = entry(classtable, lookup("SOAP_ENV__Header")); if (p) { t = (Table*)p->info.typ->ref; if (t && t->list && !is_void(t->list->info.typ)) { fprintf(fd, "\n\nvoid %s::soap_header(", name); gen_params_ref(fd, t, NULL, 0); fprintf(fd, "\n{\t::soap_header(%s);", soap); for (param = t->list; param; param = param->next) { if (namespaceid) fprintf(fd, "\n\t((%s::SOAP_ENV__Header*)%s->header)->%s = %s;", namespaceid, soap, ident(param->sym->name), ident(param->sym->name)); else fprintf(fd, "\n\t%s->header->%s = %s;", soap, ident(param->sym->name), ident(param->sym->name)); } fprintf(fd, "\n}"); } } } fprintf(fd, "\n\n::SOAP_ENV__Header *%s::soap_header()\n{\treturn %s->header;\n}", name, soap); fprintf(fd, "\n\n::SOAP_ENV__Fault *%s::soap_fault()\n{\treturn %s->fault;\n}", name, soap); fprintf(fd, "\n\nconst char *%s::soap_fault_string()\n{\treturn *soap_faultstring(%s);\n}", name, soap); fprintf(fd, "\n\nconst char *%s::soap_fault_detail()\n{\treturn *soap_faultdetail(%s);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_close_socket()\n{\treturn soap_closesock(%s);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_force_close_socket()\n{\treturn soap_force_closesock(%s);\n}", name, soap); fprintf(fd, "\n\nvoid %s::soap_print_fault(FILE *fd)\n{\t::soap_print_fault(%s, fd);\n}", name, soap); fprintf(fd, "\n\n#ifndef WITH_LEAN\n#ifndef WITH_COMPAT\nvoid %s::soap_stream_fault(std::ostream& os)\n{\t::soap_stream_fault(%s, os);\n}\n#endif", name, soap); fprintf(fd, "\n\nchar *%s::soap_sprint_fault(char *buf, size_t len)\n{\treturn ::soap_sprint_fault(%s, buf, len);\n}\n#endif", name, soap); for (method = table->list; method; method = method->next) if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && !is_imported(method->info.typ) && has_ns_eq(ns->name, method->sym->name)) gen_call_method(fd, method, name); if (namespaceid) fprintf(fd, "\n\n} // namespace %s\n", namespaceid); fprintf(fd, "\n/* End of client proxy code */\n"); } void gen_object_header(FILE *fd, Table *table, Symbol *ns, const char *name) { static int first_class = 1; Entry *p, *method; Table *t; if (fd != freport) fprintf(fd, "\n\n#ifndef %s%s_H\n#define %s%s_H\n#include \"%sH.h\"", prefix, name, prefix, name, prefix); else { Service *sp; if (first_class) fprintf(fd, "## Web Service Class %s {#doc-server}\n\n", name); else fprintf(fd, "## Web Service Class %s {#%s}\n\n", name, name); first_class = 0; for (sp = services; sp; sp = sp->next) { if (sp->documentation) { gen_text(freport, sp->documentation); fprintf(freport, "\n\n"); } } fprintf(fd, "This service class is declared in [%s](%s) and defined in [%s](%s):", soapServiceH, pathsoapServiceH, soapServiceC, pathsoapServiceC); } if (namespaceid) fprintf(fd, "\n\n namespace %s {", namespaceid); if (iflag) fprintf(fd, "\n\n class SOAP_CMAC %s : public soap {\n public:", name); else { fprintf(fd, "\n\n class SOAP_CMAC %s {\n public:", name); fprintf(fd, "\n /// Context to manage service IO and data\n struct soap *soap;\n bool soap_own; ///< flag indicating that this context is owned by this service when context is shared"); } fprintf(fd, "\n /// Variables globally declared in %s, if any", filename); for (p = table->list; p; p = p->next) if (p->info.typ->type != Tfun && !(p->info.sto & Sstatic)) fprintf(fd, "\n %s%s;", c_storage(p->info.sto), c_type_id(p->info.typ, p->sym->name)); fprintf(fd, "\n /// Construct a service with new managing context"); fprintf(fd, "\n %s();", name); fprintf(fd, "\n /// Copy constructor"); fprintf(fd, "\n %s(const %s&);", name, name); if (iflag) { fprintf(fd, "\n /// Construct service given a managing context"); fprintf(fd, "\n %s(const struct soap&);", name); } else { fprintf(fd, "\n /// Construct service given a shared managing context"); fprintf(fd, "\n %s(struct soap*);", name); } fprintf(fd, "\n /// Constructor taking input+output mode flags for the new managing context"); fprintf(fd, "\n %s(soap_mode iomode);", name); fprintf(fd, "\n /// Constructor taking input and output mode flags for the new managing context"); fprintf(fd, "\n %s(soap_mode imode, soap_mode omode);", name); if (iflag) fprintf(fd, "\n /// Destructor deletes deserialized data and managing context"); else fprintf(fd, "\n /// Destructor deletes non-shared managing context only (use destroy() to delete deserialized data)"); fprintf(fd, "\n virtual ~%s();", name); fprintf(fd, "\n /// Delete all deserialized data (with soap_destroy() and soap_end())"); fprintf(fd, "\n virtual void destroy();"); fprintf(fd, "\n /// Delete all deserialized data and reset to defaults"); fprintf(fd, "\n virtual void reset();"); fprintf(fd, "\n /// Initializer used by constructors"); fprintf(fd, "\n virtual void %s_init(soap_mode imode, soap_mode omode);", name); fprintf(fd, "\n /// Return a copy that has a new managing context with the same engine state"); fprintf(fd, "\n virtual %s *copy() SOAP_PURE_VIRTUAL;", name); fprintf(fd, "\n /// Copy assignment"); fprintf(fd, "\n %s& operator=(const %s&);", name, name); fprintf(fd, "\n /// Close connection (normally automatic)"); fprintf(fd, "\n virtual int soap_close_socket();"); fprintf(fd, "\n /// Force close connection (can kill a thread blocked on IO)"); fprintf(fd, "\n virtual int soap_force_close_socket();"); fprintf(fd, "\n /// Return sender-related fault to sender"); fprintf(fd, "\n virtual int soap_senderfault(const char *string, const char *detailXML);"); fprintf(fd, "\n /// Return sender-related fault with SOAP 1.2 subcode to sender"); fprintf(fd, "\n virtual int soap_senderfault(const char *subcodeQName, const char *string, const char *detailXML);"); fprintf(fd, "\n /// Return receiver-related fault to sender"); fprintf(fd, "\n virtual int soap_receiverfault(const char *string, const char *detailXML);"); fprintf(fd, "\n /// Return receiver-related fault with SOAP 1.2 subcode to sender"); fprintf(fd, "\n virtual int soap_receiverfault(const char *subcodeQName, const char *string, const char *detailXML);"); fprintf(fd, "\n /// Print fault"); fprintf(fd, "\n virtual void soap_print_fault(FILE*);"); fprintf(fd, "\n #ifndef WITH_LEAN"); fprintf(fd, "\n #ifndef WITH_COMPAT"); fprintf(fd, "\n /// Print fault to stream"); fprintf(fd, "\n virtual void soap_stream_fault(std::ostream&);"); fprintf(fd, "\n #endif"); fprintf(fd, "\n /// Write fault to buffer"); fprintf(fd, "\n virtual char *soap_sprint_fault(char *buf, size_t len);"); fprintf(fd, "\n #endif"); fprintf(fd, "\n /// Disables and removes SOAP Header from message by setting soap->header = NULL"); fprintf(fd, "\n virtual void soap_noheader();"); if (!namespaceid) { p = entry(classtable, lookup("SOAP_ENV__Header")); if (p) { t = (Table*)p->info.typ->ref; if (t && t->list && !is_void(t->list->info.typ)) { fprintf(fd, "\n /// Add SOAP Header to message"); fprintf(fd, "\n virtual void soap_header("); gen_params_ref(fd, t, NULL, 0); fprintf(fd, ";"); } } } else fprintf(fd, "\n // virtual void soap_header(...) method removed due to option -q or -Q"); fprintf(fd, "\n /// Get SOAP Header structure (i.e. soap->header, which is NULL when absent)"); fprintf(fd, "\n virtual ::SOAP_ENV__Header *soap_header();"); fprintf(fd, "\n #ifndef WITH_NOIO"); fprintf(fd, "\n /// Run simple single-thread (iterative, non-SSL) service on port until a connection error occurs (returns SOAP_OK or error code), use this->bind_flag = SO_REUSEADDR to rebind for immediate rerun"); fprintf(fd, "\n virtual int run(int port);"); fprintf(fd, "\n #if defined(WITH_OPENSSL) || defined(WITH_GNUTLS)"); fprintf(fd, "\n /// Run simple single-thread SSL service on port until a connection error occurs (returns SOAP_OK or error code), use this->bind_flag = SO_REUSEADDR to rebind for immediate rerun"); fprintf(fd, "\n virtual int ssl_run(int port);"); fprintf(fd, "\n #endif"); fprintf(fd, "\n /// Bind service to port (returns master socket or SOAP_INVALID_SOCKET)"); fprintf(fd, "\n virtual SOAP_SOCKET bind(const char *host, int port, int backlog);"); fprintf(fd, "\n /// Accept next request (returns socket or SOAP_INVALID_SOCKET)"); fprintf(fd, "\n virtual SOAP_SOCKET accept();"); fprintf(fd, "\n #if defined(WITH_OPENSSL) || defined(WITH_GNUTLS)"); fprintf(fd, "\n /// When SSL is used, after accept() should perform and accept SSL handshake"); fprintf(fd, "\n virtual int ssl_accept();"); fprintf(fd, "\n #endif"); fprintf(fd, "\n #endif"); fprintf(fd, "\n /// After accept() serve this request (returns SOAP_OK or error code)"); fprintf(fd, "\n virtual int serve();"); fprintf(fd, "\n /// Used by serve() to dispatch a request (returns SOAP_OK or error code)"); fprintf(fd, "\n virtual int dispatch();"); if (jflag) fprintf(fd, "\n virtual int dispatch(struct soap *soap);"); fprintf(fd, "\n ///\n /// Service operations are listed below (you should define these)\n /// Note: compile with -DWITH_PURE_VIRTUAL for pure virtual methods\n ///"); for (method = table->list; method; method = method->next) if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && has_ns_eq(ns->name, method->sym->name)) gen_method(fd, method, 1); fprintf(fd, "\n };"); if (namespaceid) fprintf(fd, "\n\n } // namespace %s\n", namespaceid); if (fd != freport) fprintf(fd, "\n#endif\n"); else { fprintf(freport, "\n\nUse the service request dispatcher to accept and process service requests:\n\n"); fprintf(freport, "- `int serve()` serves requests by calling one of the service methods that matches the request. Returns `SOAP_OK` or an error code. This function supports CGI by accepting a request on stdin and sending the response to stdout, and FastCGI. To serve over HTTP(S), use the following functions to establish a connection:\n\n"); fprintf(freport, "- `SOAP_SOCKET bind(const char *host, int port, int backlog)` returns master socket bound to port (and restricted to host name, if not NULL) or `SOAP_INVALID_SOCKET`\n"); fprintf(freport, "- `SOAP_SOCKET accept()` accepts connection and returns socket when accepted, or `SOAP_INVALID_SOCKET`\n"); fprintf(freport, "- `int soap_ssl_accept()` performs SSL handshake and returns `SOAP_OK` when successful or an error code, invoke this method after `accept()` to accept SSL/TLS connection\n\n"); for (method = table->list; method; method = method->next) { Entry *result, *p; result = (Entry*)method->info.typ->ref; p = entry(classtable, method->sym); if (!p) execerror("no table entry"); if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && has_ns_eq(ns->name, method->sym->name)) { gen_report_operation(name, method, 1); gen_method(freport, method, 1); fprintf(freport, "\n\nwhere:\n\n"); gen_report_params(p, result, 1); if (!is_transient(result->info.typ)) fprintf(freport, "This service method should be implemented as part of the service back-end code and return `SOAP_OK` and set the last parameter `%s` to the result, or return an error code\n\n", ident(result->sym->name)); else fprintf(freport, "This service method should be implemented as part of the service back-end code and call `int %s::send_%s_empty_response(int httpcode)` with a HTTP status/error code (200 to 999) to return, when communicating over HTTP to return a HTTP header\n\n", name, ns_remove(method->sym->name)); gen_report_hr(); } } } } void gen_method(FILE *fd, Entry *method, int server) { Table *params; Entry *result, *p; const char *soap; if (iflag) soap = "this"; else soap = "this->soap"; result = (Entry*)method->info.typ->ref; p = entry(classtable, method->sym); if (!p) execerror("no table entry"); params = (Table*)p->info.typ->ref; if (server || !is_transient(result->info.typ)) { if (is_transient(result->info.typ)) fprintf(fd, "\n /// Web service one-way operation '%s' (return SOAP_OK (no response) or error code, or use send_%s_empty_response())", ns_remove(method->sym->name), ns_remove(method->sym->name)); else fprintf(fd, "\n /// Web service operation '%s' (returns SOAP_OK or error code)", ns_remove(method->sym->name)); fprintf(fd, "\n virtual int %s(", ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 0); if (!server) { fprintf(fd, "\n { return this->%s(NULL, NULL", ns_cname(method->sym->name, NULL)); gen_args(fd, params, result, 1); fprintf(fd, "; }"); fprintf(fd, "\n virtual int %s(const char *soap_endpoint, const char *soap_action", ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 1); } if (server) fprintf(fd, " SOAP_PURE_VIRTUAL;"); else fprintf(fd, ";"); if (is_transient(result->info.typ)) fprintf(fd, "\n virtual int send_%s_empty_response(int httpcode)\n { return soap_send_empty_response(%s, httpcode); }", ns_cname(method->sym->name, NULL), soap); } else { fprintf(fd, "\n /// Web service one-way send operation 'send_%s' (returns SOAP_OK or error code)", ns_remove(method->sym->name)); fprintf(fd, "\n virtual int send_%s(", ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 0); fprintf(fd, "\n { return this->send_%s(NULL, NULL", ns_cname(method->sym->name, NULL)); gen_args(fd, params, result, 1); fprintf(fd, "; }"); fprintf(fd, "\n virtual int send_%s(const char *soap_endpoint, const char *soap_action", ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 1); fprintf(fd, ";\n /// Web service one-way receive operation 'recv_%s' (returns SOAP_OK or error code)", ns_remove(method->sym->name)); fprintf(fd, ";\n virtual int recv_%s(", ns_cname(method->sym->name, NULL)); fprintf(fd, "struct %s&);", ident(method->sym->name)); fprintf(fd, "\n /// Web service receive of HTTP Accept acknowledgment for one-way send operation 'send_%s' (returns SOAP_OK or error code)", ns_remove(method->sym->name)); fprintf(fd, "\n virtual int recv_%s_empty_response()\n { return soap_recv_empty_response(%s); }", ns_cname(method->sym->name, NULL), soap); fprintf(fd, "\n /// Web service one-way synchronous send operation '%s' with HTTP Accept/OK response receive (returns SOAP_OK or error code)", ns_remove(method->sym->name)); fprintf(fd, "\n virtual int %s(", ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 0); fprintf(fd, "\n { return this->%s(NULL, NULL", ns_cname(method->sym->name, NULL)); gen_args(fd, params, result, 1); fprintf(fd, "; }"); fprintf(fd, "\n virtual int %s(const char *soap_endpoint, const char *soap_action", ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 1); fprintf(fd, "\n {\n if (this->send_%s(soap_endpoint, soap_action", ns_cname(method->sym->name, NULL)); gen_args(fd, params, result, 1); fprintf(fd, " || soap_recv_empty_response(%s))\n return %s->error;\n return SOAP_OK;\n }", soap, soap); } } void gen_report_params(Entry *type, Entry *result, int server) { Table *params = (Table*)type->info.typ->ref; Entry *param; for (param = params->list; param; param = param->next) { fprintf(freport, "- `%s` is %s", c_type_id(param->info.typ, param->sym->name), param->info.minOccurs > 0 ? "required" : "optional"); if (param->info.hasval || param->info.ptrval) { if (param->info.fixed) fprintf(freport, " with the fixed value%s", c_init(param)); else fprintf(freport, " with default value%s", c_init(param)); } gen_report_member(type, param); gen_report_type(param->info.typ, "parameter"); if (is_unmatched(param->sym)) fprintf(freport, " (the leading underscore makes this parameter a wildcard that matches any XML element tag)"); fprintf(freport, "\n"); } if (!is_transient(result->info.typ)) { Tnode *ref = (Tnode*)result->info.typ->ref; if (result->info.typ->type == Tpointer) fprintf(freport, "- `%s` is the service operation response, which is a non-NULL pointer to a `%s`%s", c_type_id(result->info.typ, result->sym->name), c_type(result->info.typ->ref), server ? " that the service operation should populate with the response data" : " that the client provides with the call and is populated by the service operation as the result of the call"); else fprintf(freport, "- `%s` is the service operation response data populated by the service operation", c_type_id(result->info.typ, result->sym->name)); gen_report_type(ref, "result parameter"); if (is_unmatched(result->sym)) fprintf(freport, " (the leading underscore makes this result parameter a wildcard that matches any XML element tag)"); fprintf(freport, "\n"); } fprintf(freport, "\n"); } void gen_report_req_params(Tnode *typ) { Table *Tptr; Entry *Eptr; int derclass = 0, flag = 0; if (!is_dynamic_array(typ)) { for (Tptr = (Table*)typ->ref, derclass = 0; Tptr; Tptr = Tptr->prev, derclass++) { for (Eptr = Tptr->list; Eptr; Eptr = Eptr->next) { if (is_repetition(Eptr) || is_anytype(Eptr)) flag = 2; if ((Eptr->info.minOccurs > 0 || flag) && !(Eptr->info.sto & (Sprivate | Sprotected | Sconst | Sstatic | Stypedef)) && Eptr->info.typ->type != Tfun && !is_soapref(Eptr->info.typ)) { if (flag) flag--; if (is_smart(Eptr->info.typ)) { if (is_smart_shared(Eptr->info.typ)) fprintf(freport, ", %s %s", c_type_id(Eptr->info.typ, "&"), ident(Eptr->sym->name)); else fprintf(freport, ", %s %s", c_type_id(Eptr->info.typ->ref, "*"), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Ttemplate && is_smart(Eptr->info.typ->ref) && !is_smart_shared(Eptr->info.typ->ref)) continue; else if (Eptr->info.typ->type == Tclass || Eptr->info.typ->type == Tstruct || Eptr->info.typ->type == Tunion || Eptr->info.typ->type == Ttemplate) fprintf(freport, ", const %s& %s", c_type(Eptr->info.typ), ident(Eptr->sym->name)); else if ((Eptr->info.sto & Sconstptr)) fprintf(freport, ", const %s", c_type_id(Eptr->info.typ, Eptr->sym->name)); else if (Eptr->info.typ->type == Tarray) fprintf(freport, ", %s const*%s", c_type(Eptr->info.typ->ref), ident(Eptr->sym->name)); else fprintf(freport, ", %s", c_type_id(Eptr->info.typ, Eptr->sym->name)); if (derclass) fprintf(freport, "__%d", derclass); } } } } } void gen_report_set_params(Tnode *typ) { Table *Tptr; Entry *Eptr; int derclass = 0; for (Tptr = (Table*)typ->ref, derclass = 0; Tptr; Tptr = Tptr->prev, derclass++) { for (Eptr = Tptr->list; Eptr; Eptr = Eptr->next) { if (!(Eptr->info.sto & (Sprivate | Sprotected | Sconst | Sstatic | Stypedef)) && Eptr->info.typ->type != Tfun && !is_soapref(Eptr->info.typ)) { if (is_smart(Eptr->info.typ)) { if (is_smart_shared(Eptr->info.typ)) fprintf(freport, ", %s %s", c_type_id(Eptr->info.typ, "&"), ident(Eptr->sym->name)); else fprintf(freport, ", %s %s", c_type_id(Eptr->info.typ->ref, "*"), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Ttemplate && is_smart(Eptr->info.typ->ref) && !is_smart_shared(Eptr->info.typ->ref)) continue; else if (Eptr->info.typ->type == Tclass || Eptr->info.typ->type == Tstruct || Eptr->info.typ->type == Tunion || Eptr->info.typ->type == Ttemplate) fprintf(freport, ", const %s& %s", c_type(Eptr->info.typ), ident(Eptr->sym->name)); else if ((Eptr->info.sto & Sconstptr)) fprintf(freport, ", const %s", c_type_id(Eptr->info.typ, Eptr->sym->name)); else if (Eptr->info.typ->type == Tarray) fprintf(freport, ", %s const*%s", c_type(Eptr->info.typ->ref), ident(Eptr->sym->name)); else fprintf(freport, ", %s", c_type_id(Eptr->info.typ, Eptr->sym->name)); if (derclass) fprintf(freport, "__%d", derclass); } } } } void gen_params_ref(FILE *fd, Table *params, Entry *result, int flag) { Entry *param; for (param = params->list; param; param = param->next) { if (!cflag && (param->info.typ->type == Tstruct || param->info.typ->type == Tclass)) fprintf(fd, "%s%s%s& %s", flag || param != params->list ? ", " : "", c_storage(param->info.sto | Sconst), c_type(param->info.typ), ident(param->sym->name)); else fprintf(fd, "%s%s%s", flag || param != params->list ? ", " : "", c_storage(param->info.sto), c_type_id(param->info.typ, param->sym->name)); } if (!result || is_transient(result->info.typ)) fprintf(fd, ")"); else fprintf(fd, "%s%s%s)", flag || params->list ? ", " : "", c_storage(result->info.sto), c_type_id(result->info.typ, result->sym->name)); } void gen_params(FILE *fd, Table *params, Entry *result, int flag) { Entry *param; for (param = params->list; param; param = param->next) fprintf(fd, "%s%s%s", flag || param != params->list ? ", " : "", c_storage(param->info.sto), c_type_id(param->info.typ, param->sym->name)); if (!result || is_transient(result->info.typ)) fprintf(fd, ")"); else fprintf(fd, "%s%s%s)", flag || params->list ? ", " : "", c_storage(result->info.sto), c_type_id(result->info.typ, result->sym->name)); } void gen_args(FILE *fd, Table *params, Entry *result, int flag) { Entry *param; for (param = params->list; param; param = param->next) fprintf(fd, "%s%s", flag || param != params->list ? ", " : "", ident(param->sym->name)); if (!result || is_transient(result->info.typ)) fprintf(fd, ")"); else fprintf(fd, "%s%s)", flag || params->list ? ", " : "", ident(result->sym->name)); } void gen_query_url(FILE *fd, Table *params, int soap) { Entry *param; if (soap) fprintf(fd, "\n\tsoap_extend_url_query(soap, soap_endpoint, NULL);"); else fprintf(fd, "\n\tsoap_extend_url_query(soap, soap_endpoint, soap_action);"); for (param = params->list; param; param = param->next) { if (is_transient(param->info.typ)) continue; if (is_repetition(param) && is_primitive_or_string(param->next->info.typ->ref)) { fprintf(fd, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)%s; i++)\n\t\t\tsoap_url_query(soap, \"%s=\", ", ident(param->sym->name), ns_remove(param->next->sym->name)); gen_query_url_type(fd, param->next->info.typ->ref, ident(param->next->sym->name), "", "[i]"); fprintf(fd, ");\n\t}"); param = param->next; } else if (param->info.typ->type == Tpointer && is_container(param->info.typ->ref) && is_primitive_or_string(((Tnode*)param->info.typ->ref)->ref)) { fprintf(fd, "\n\tif (%s)\n\t\tfor (%s::const_iterator i = %s->begin(); i != %s->end(); ++i)\n\t\t\tsoap_url_query(soap, \"%s=\", ", ident(param->sym->name), c_type(param->info.typ->ref), ident(param->sym->name), ident(param->sym->name), ns_remove(param->sym->name)); gen_query_url_type(fd, ((Tnode*)param->info.typ->ref)->ref, "i", "*", ""); fprintf(fd, ");"); } else if (is_primitive_or_string(param->info.typ)) { fprintf(fd, "\n\tsoap_url_query(soap, \"%s=\", ", ns_remove(param->sym->name)); gen_query_url_type(fd, param->info.typ, ident(param->sym->name), "", ""); fprintf(fd, ");"); } else if (param->info.typ->type == Tpointer && is_primitive_or_string(param->info.typ->ref)) { fprintf(fd, "\n\tif (%s)\n\t\tsoap_url_query(soap, \"%s=\", ", ident(param->sym->name), ns_remove(param->sym->name)); gen_query_url_type(fd, param->info.typ->ref, ident(param->sym->name), "*", ""); fprintf(fd, ");"); } } } void gen_query_url_type(FILE *fd, Tnode *typ, const char *name, const char *ptr, const char *idx) { if (!is_transient(typ)) { if (is_stdstring(typ)) fprintf(fd, "(%s%s%s).c_str()", ptr, name, idx); else if (is_stdwstring(typ)) fprintf(fd, "soap_wchar2s(soap, (%s%s%s).c_str())", ptr, name, idx); else if (is_string(typ)) fprintf(fd, "%s%s%s", ptr, name, idx); else if (is_wstring(typ)) fprintf(fd, "soap_wchar2s(soap, %s%s%s)", ptr, name, idx); else if (is_primitive(typ)) fprintf(fd, "soap_%s2s(soap, %s%s%s)", c_ident(typ), ptr, name, idx); } } void gen_query_form(FILE *fd, Table *params) { Entry *param; int init = 0; for (param = params->list; param; param = param->next) { if (!is_transient(param->info.typ)) { if (is_repetition(param) && is_primitive_or_string(param->next->info.typ->ref)) { if (init) fprintf(fd, ")\n\t\treturn soap_closesock(soap);"); fprintf(fd, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)%s; i++)\n\t\t\tif (soap_send_key(soap, \"%s=\") || ", ident(param->sym->name), ns_remove(param->sym->name)); gen_query_form_type(fd, param->next->info.typ->ref, ident(param->next->sym->name), "", "[i]"); fprintf(fd, ")\n\t\t\treturn soap_closesock(soap);\n\t}"); param = param->next; init = 0; } else if (param->info.typ->type == Tpointer && is_container(param->info.typ->ref) && is_primitive_or_string(((Tnode*)param->info.typ->ref)->ref)) { if (init) fprintf(fd, ")\n\t\treturn soap_closesock(soap);"); fprintf(fd, "\n\tif (%s)\n\t\tfor (%s::const_iterator i = %s->begin(); i != %s->end(); ++i)\n\t\t\tif (soap_send_key(soap, \"%s=\") || ", ident(param->sym->name), c_type(param->info.typ->ref), ident(param->sym->name), ident(param->sym->name), ns_remove(param->sym->name)); gen_query_form_type(fd, ((Tnode*)param->info.typ->ref)->ref, "i", "*", ""); fprintf(fd, ")\n\t\t\t\treturn soap_closesock(soap);"); init = 0; } else if (is_primitive_or_string(param->info.typ)) { if (!init++) fprintf(fd, "\n\tif ("); else fprintf(fd, "\n\t || "); fprintf(fd, "soap_send_key(soap, \"%s=\") || ", ns_remove(param->sym->name)); gen_query_form_type(fd, param->info.typ, ident(param->sym->name), "", ""); } else if (param->info.typ->type == Tpointer && is_primitive_or_string(param->info.typ->ref)) { if (!init++) fprintf(fd, "\n\tif ("); else fprintf(fd, "\n\t || "); fprintf(fd, "(%s && (soap_send_key(soap, \"%s=\") || ", ident(param->sym->name), ns_remove(param->sym->name)); gen_query_form_type(fd, param->info.typ->ref, ident(param->sym->name), "*", ""); fprintf(fd, "))"); } } } if (!init) fprintf(fd, "\n\tif ("); else fprintf(fd, "\n\t || "); fprintf(fd, "soap_end_send(soap))\n\t\treturn soap_closesock(soap);"); } void gen_query_form_type(FILE *fd, Tnode *typ, const char *name, const char *ptr, const char *idx) { if (is_stdstring(typ)) fprintf(fd, "soap_send_val(soap, (%s%s%s).c_str())", ptr, name, idx); else if (is_stdwstring(typ)) fprintf(fd, "soap_send_val(soap, soap_wchar2s(soap, (%s%s%s)->c_str()))", ptr, name, idx); else if (is_string(typ)) fprintf(fd, "soap_send_val(soap, %s%s%s)", ptr, name, idx); else if (is_wstring(typ)) fprintf(fd, "soap_send_val(soap, soap_wchar2s(soap, %s%s%s))", ptr, name, idx); else if (typ->type == Tenum || typ->type == Tenumsc) fprintf(fd, "soap_send_val(soap, soap_%s2s(soap, %s%s%s))", c_ident(typ), ptr, name, idx); else if (is_primitive(typ)) fprintf(fd, "soap_send(soap, soap_%s2s(soap, %s%s%s))", c_ident(typ), ptr, name, idx); } void gen_call_proto(FILE *fd, Entry *method) { Table *params; Entry *result, *p; result = (Entry*)method->info.typ->ref; p = entry(classtable, method->sym); if (!p) execerror("no table entry"); params = (Table*)p->info.typ->ref; if (fd == freport) gen_report_operation(NULL, method, 0); if (!is_transient(result->info.typ)) { fprintf(fd, "\n SOAP_FMAC5 int SOAP_FMAC6 soap_call_%s(struct soap *soap, const char *soap_endpoint, const char *soap_action", ident(method->sym->name)); gen_params_ref(fd, params, result, 1); } else { fprintf(fd, "\n SOAP_FMAC5 int SOAP_FMAC6 soap_send_%s(struct soap *soap, const char *soap_endpoint, const char *soap_action", ident(method->sym->name)); gen_params_ref(fd, params, result, 1); } fprintf(fd, ";"); if (is_transient(result->info.typ)) fprintf(fd, "\n SOAP_FMAC5 int SOAP_FMAC6 soap_recv_%s(struct soap *soap, struct %s *%s);", ident(method->sym->name), ident(method->sym->name), ident(result->sym->name)); if (fd == freport) { fprintf(freport, "\n\nwhere:\n\n- `struct soap *soap` is the context\n- `const char *soap_endpoint` is the endpoint URL (or list of space-separated URLs) or pass NULL to use the default endpoint(s)\n- `const char *soap_action` is the SOAP action header or pass NULL to use the default action (recommended)\n"); gen_report_params(p, result, 0); if (!is_transient(result->info.typ)) fprintf(freport, "This function returns `SOAP_OK` and sets the last parameter `%s` to the result, or returns an error code\n\n", ident(result->sym->name)); else fprintf(freport, "These functions return `SOAP_OK` or return an error code\n\nNote that `int soap_recv_empty_response(struct soap *soap)` should be called after the send function, which is required when communicating over HTTP to receive the HTTP acknowledgement\n\n"); gen_report_hr(); } } void gen_call_method(FILE *fd, Entry *method, const char *name) { Service *sp; Method *m; int soap = (soap_version >= 0); int version = soap_version; int get = 0; int put = 0; int del = 0; int post = 0; int mime = 0; const char *encoding = NULL; const char *xtag; const char *action = NULL, *method_encoding = NULL, *method_response_encoding = NULL; Table *params; Entry *param, *result, *p, *response = NULL; result = (Entry*)method->info.typ->ref; (void)post; p = entry(classtable, method->sym); if (!p) execerror("no table entry"); params = (Table*)p->info.typ->ref; if (!is_response(result->info.typ) && !is_XML(result->info.typ)) response = get_response(method->info.typ); if (name) { if (!is_transient(result->info.typ)) fprintf(fd, "\n\nint %s::%s(const char *endpoint, const char *soap_action", name, ns_cname(method->sym->name, NULL)); else fprintf(fd, "\n\nint %s::send_%s(const char *endpoint, const char *soap_action", name, ns_cname(method->sym->name, NULL)); gen_params_ref(fd, params, result, 1); } else if (!is_transient(result->info.typ)) { fprintf(fd, "\n\nSOAP_FMAC5 int SOAP_FMAC6 soap_call_%s(struct soap *soap, const char *soap_endpoint, const char *soap_action", ident(method->sym->name)); gen_params_ref(fd, params, result, 1); } else { fprintf(fd, "\n\nSOAP_FMAC5 int SOAP_FMAC6 soap_send_%s(struct soap *soap, const char *soap_endpoint, const char *soap_action", ident(method->sym->name)); gen_params_ref(fd, params, result, 1); } if (name) { if (iflag) fprintf(fd, "\n{\tstruct soap *soap = this;\n"); else fprintf(fd, "\n{\tstruct soap *soap = this->soap;\n"); } else { fprintf(fd, "\n{"); } for (sp = services; sp; sp = sp->next) { if (has_ns_eq(sp->ns, method->sym->name)) { encoding = sp->encoding; method_encoding = encoding; method_response_encoding = NULL; if (sp->protocol) { if (strstr(sp->protocol, "GET")) get = 1; else if (strstr(sp->protocol, "PUT")) put = 1; else if (strstr(sp->protocol, "DELETE")) del = 1; else if (strstr(sp->protocol, "POST")) post = 1; if (strncmp(sp->protocol, "SOAP", 4)) soap = 0; else if (strlen(sp->protocol) > 6) version = sp->protocol[6] - '0'; } for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, method->sym->name)) { if (m->mess == ACTION || m->mess == REQUEST_ACTION) action = m->part; else if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; else if (m->mess == PROTOCOL) { if (strstr(m->part, "GET")) get = 1; else if (strstr(m->part, "PUT")) put = 1; else if (strstr(m->part, "DELETE")) del = 1; else if (strstr(m->part, "POST")) post = 1; if (strncmp(m->part, "SOAP", 4)) soap = 0; else if (strlen(m->part) > 6) version = m->part[6] - '0'; } else if ((m->mess&MIMEIN) && !strcmp(m->part, "application/x-www-form-urlencoded")) mime = 1; } } break; } } if (!get && !mime) fprintf(fd, "\tstruct %s soap_tmp_%s;", ident(method->sym->name), ident(method->sym->name)); if (response) fprintf(fd, "\n\tstruct %s *soap_tmp_%s;", c_ident(response->info.typ), c_ident(response->info.typ)); if (name) fprintf(fd, "\n\tif (endpoint)\n\t\tsoap_endpoint = endpoint;"); if (sp && sp->URL) fprintf(fd, "\n\tif (soap_endpoint == NULL)\n\t\tsoap_endpoint = \"%s\";", sp->URL); if (action) { fprintf(fd, "\n\tif (soap_action == NULL)\n\t\tsoap_action = "); if (*action == '"') fprintf(fd, "%s;", action); else fprintf(fd, "\"%s\";", action); } if (!method_response_encoding) method_response_encoding = method_encoding; if (!get && !del && !mime) { for (param = params->list; param; param = param->next) { if (param->info.typ->type == Tarray) fprintf(fd, "\n\tsoap_memcpy(soap_tmp_%s.%s, sizeof(%s), %s, sizeof(%s));", ident(method->sym->name), ident(param->sym->name), c_type(param->info.typ), ident(param->sym->name), c_type(param->info.typ)); else fprintf(fd, "\n\tsoap_tmp_%s.%s = %s;", ident(method->sym->name), ident(param->sym->name), ident(param->sym->name)); } fprintf(fd, "\n\tsoap_begin(soap);"); if (!soap) fprintf(fd, "\n\tsoap_set_version(soap, 0); /* no SOAP */"); else if (version > 0) fprintf(fd, "\n\tsoap_set_version(soap, %d); /* SOAP1.%d */", version, version); if (soap && sp && method_encoding) { if (is_literal(method_encoding)) fprintf(fd, "\n\tsoap->encodingStyle = NULL;"); else if (method_encoding) fprintf(fd, "\n\tsoap->encodingStyle = \"%s\";", method_encoding); } else if (!eflag) fprintf(fd, "\n\tsoap->encodingStyle = NULL;"); if (soap) fprintf(fd, "\n\tsoap_serializeheader(soap);"); fprintf(fd, "\n\tsoap_serialize_%s(soap, &soap_tmp_%s);", ident(method->sym->name), ident(method->sym->name)); fprintf(fd, "\n\tif (soap_begin_count(soap))\n\t\treturn soap->error;"); fprintf(fd, "\n\tif (soap->mode & SOAP_IO_LENGTH)"); fprintf(fd, "\n\t{\tif (soap_envelope_begin_out(soap)"); if (soap) { fprintf(fd, "\n\t\t || soap_putheader(soap)"); fprintf(fd, "\n\t\t || soap_body_begin_out(soap)"); } fprintf(fd, "\n\t\t || soap_put_%s(soap, &soap_tmp_%s, \"%s\", \"\")", ident(method->sym->name), ident(method->sym->name), ns_convert(method->sym->name)); if (soap) fprintf(fd, "\n\t\t || soap_body_end_out(soap)"); fprintf(fd, "\n\t\t || soap_envelope_end_out(soap))"); fprintf(fd, "\n\t\t\t return soap->error;"); fprintf(fd, "\n\t}"); fprintf(fd, "\n\tif (soap_end_count(soap))\n\t\treturn soap->error;"); if (soap) { fprintf(fd, "\n\tif (soap_connect(soap, soap_endpoint, soap_action)"); } else { fprintf(fd, "\n\tsoap->http_content = \"text/xml\";"); if (put) fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_PUT, soap_extend_url(soap, soap_endpoint, soap_action), soap_action)"); else fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_POST_FILE, soap_extend_url(soap, soap_endpoint, soap_action), soap_action)"); } fprintf(fd, "\n\t || soap_envelope_begin_out(soap)"); if (soap) { fprintf(fd, "\n\t || soap_putheader(soap)"); fprintf(fd, "\n\t || soap_body_begin_out(soap)"); } fprintf(fd, "\n\t || soap_put_%s(soap, &soap_tmp_%s, \"%s\", \"\")", ident(method->sym->name), ident(method->sym->name), ns_convert(method->sym->name)); if (soap) fprintf(fd, "\n\t || soap_body_end_out(soap)"); fprintf(fd, "\n\t || soap_envelope_end_out(soap)"); fprintf(fd, "\n\t || soap_end_send(soap))"); fprintf(fd, "\n\t\treturn soap_closesock(soap);"); } else if (get) { if (params->list) { gen_query_url(fd, params, soap); fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_GET, soap->msgbuf, soap_action))"); } else if (soap) { fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_GET, soap_endpoint, soap_action))"); } else { fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_GET, soap_extend_url(soap, soap_endpoint, soap_action), soap_action))"); } fprintf(fd, "\n\t\treturn soap_closesock(soap);"); } else if (del) { if (params->list) { gen_query_url(fd, params, soap); fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_DEL, soap->msgbuf, soap_action))"); } else if (soap) { fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_DEL, soap_endpoint, soap_action))"); } else { fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_DEL, soap_extend_url(soap, soap_endpoint, soap_action), soap_action))"); } fprintf(fd, "\n\t\treturn soap_closesock(soap);"); } else if (mime) { fprintf(fd, "\n\tsoap->http_content = \"application/x-www-form-urlencoded\";"); if (put) fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_PUT, soap_extend_url(soap, soap_endpoint, soap_action), soap_action))"); else fprintf(fd, "\n\tif (soap_connect_command(soap, SOAP_POST_FILE, soap_extend_url(soap, soap_endpoint, soap_action), soap_action))"); fprintf(fd, "\n\t\treturn soap_closesock(soap);"); gen_query_form(fd, params); } if (is_transient(result->info.typ)) { fprintf(fd, "\n\treturn SOAP_OK;\n}"); if (name) { fprintf(fd, "\n\nint %s::recv_%s(", name, ns_cname(method->sym->name, NULL)); fprintf(fd, "struct %s& tmp)", ident(method->sym->name)); if (iflag) fprintf(fd, "\n{\tstruct soap *soap = this;\n"); else fprintf(fd, "\n{\tstruct soap *soap = this->soap;\n"); fprintf(fd, "\n\tstruct %s *%s = &tmp;", ident(method->sym->name), ident(result->sym->name)); } else { fprintf(fd, "\n\nSOAP_FMAC5 int SOAP_FMAC6 soap_recv_%s(struct soap *soap, ", ident(method->sym->name)); fprintf(fd, "struct %s *%s)\n{", ident(method->sym->name), ident(result->sym->name)); } fprintf(fd, "\n\tsoap_default_%s(soap, %s);", ident(method->sym->name), ident(result->sym->name)); fprintf(fd, "\n\tsoap_begin(soap);"); } else if (result->info.typ->type == Tarray) fprintf(fd, "\n\tsoap_default_%s(soap, %s);", c_ident(result->info.typ), ident(result->sym->name)); else if (result->info.typ->type == Treference && ((Tnode*)result->info.typ->ref)->type == Tclass && !is_external((Tnode*)result->info.typ->ref) && !is_volatile((Tnode*)result->info.typ->ref)) fprintf(fd, "\n\tif (!static_cast<%s*>(&%s)) // NULL ref?\n\t\treturn soap_closesock(soap);\n\t%s.soap_default(soap);", c_type(result->info.typ->ref), ident(result->sym->name), ident(result->sym->name)); else if (((Tnode*)result->info.typ->ref)->type == Tclass && !is_external((Tnode*)result->info.typ->ref) && !is_volatile((Tnode*)result->info.typ->ref)) fprintf(fd, "\n\tif (!%s)\n\t\treturn soap_closesock(soap);\n\t%s->soap_default(soap);", ident(result->sym->name), ident(result->sym->name)); else if (result->info.typ->type == Treference && ((Tnode*)result->info.typ->ref)->type == Tpointer) fprintf(fd, "\n\t%s = NULL;", ident(result->sym->name)); else if (((Tnode*)result->info.typ->ref)->type == Tpointer) fprintf(fd, "\n\tif (!%s)\n\t\treturn soap_closesock(soap);\n\t*%s = NULL;", ident(result->sym->name), ident(result->sym->name)); else if (result->info.typ->type == Treference) fprintf(fd, "\n\tif (!static_cast<%s*>(&%s)) // NULL ref?\n\t\treturn soap_closesock(soap);\n\tsoap_default_%s(soap, &%s);", c_type(result->info.typ->ref), ident(result->sym->name), c_ident((Tnode*)result->info.typ->ref), ident(result->sym->name)); else if (!is_void(result->info.typ)) fprintf(fd, "\n\tif (!%s)\n\t\treturn soap_closesock(soap);\n\tsoap_default_%s(soap, %s);", ident(result->sym->name), c_ident((Tnode*)result->info.typ->ref), ident(result->sym->name)); fprintf(fd, "\n\tif (soap_begin_recv(soap)"); fprintf(fd, "\n\t || soap_envelope_begin_in(soap)"); fprintf(fd, "\n\t || soap_recv_header(soap)"); fprintf(fd, "\n\t || soap_body_begin_in(soap))"); fprintf(fd, "\n\t\treturn soap_closesock(soap);"); if (is_transient(result->info.typ)) { if (sflag) fprintf(fd, "\n\tsoap->mode |= SOAP_XML_STRICT;"); fprintf(fd, "\n\tsoap_get_%s(soap, %s, \"%s\", NULL);", ident(method->sym->name), ident(result->sym->name), ns_convert(method->sym->name)); fprintf(fd, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap->level == 2)\n\t\tsoap->error = SOAP_OK;"); fprintf(fd, "\n\tif (soap->error"); fprintf(fd, "\n\t || soap_body_end_in(soap)"); fprintf(fd, "\n\t || soap_envelope_end_in(soap)"); fprintf(fd, "\n\t || soap_end_recv(soap))"); fprintf(fd, "\n\t\treturn soap_closesock(soap);"); fprintf(fd, "\n\treturn soap_closesock(soap);\n}"); fflush(fd); return; } /* With RPC encoded responses, try to parse the fault first */ if (!is_literal(method_response_encoding)) { fprintf(fd, "\n\tif (soap_recv_fault(soap, 1))\n\t\treturn soap->error;"); xtag = ""; } else if (has_ns_eq(NULL, result->sym->name)) { if (response) xtag = xml_tag(response->info.typ); else xtag = ns_convert(result->sym->name); } else { if (response) xtag = xml_tag(response->info.typ); else xtag = xml_tag(result->info.typ); } if (sflag) fprintf(fd, "\n\tsoap->mode |= SOAP_XML_STRICT;"); if (response) { fprintf(fd, "\n\tsoap_tmp_%s = soap_get_%s(soap, NULL, \"%s\", NULL);", c_ident(response->info.typ), c_ident(response->info.typ), xtag); fprintf(fd, "\n\tif (!soap_tmp_%s || soap->error)\n\t\treturn soap_recv_fault(soap, 0);", c_ident(response->info.typ)); } else if ((result->info.typ->type == Treference || result->info.typ->type == Tpointer) && !is_invisible_empty((Tnode*)result->info.typ->ref)) { if (result->info.typ->type == Treference && ((Tnode *) result->info.typ->ref)->type == Tclass && !is_external((Tnode*)result->info.typ->ref) && !is_volatile((Tnode*)result->info.typ->ref) && !is_dynamic_array((Tnode*)result->info.typ->ref)) fprintf(fd, "\n\t%s.soap_get(soap, \"%s\", NULL);", ident(result->sym->name), xtag); else if (result->info.typ->type == Tpointer && ((Tnode *) result->info.typ->ref)->type == Tclass && !is_external((Tnode*)result->info.typ->ref) && !is_volatile((Tnode*)result->info.typ->ref) && !is_dynamic_array((Tnode*)result->info.typ->ref)) fprintf(fd, "\n\t%s->soap_get(soap, \"%s\", NULL);", ident(result->sym->name), xtag); else if (result->info.typ->type == Treference && ((Tnode *) result->info.typ->ref)->type == Tstruct && !is_external((Tnode*)result->info.typ->ref) && !is_volatile((Tnode*)result->info.typ->ref) && !is_dynamic_array((Tnode*)result->info.typ->ref)) { fprintf(fd, "\n\tsoap_get_%s(soap, &%s, \"%s\", NULL);", c_ident((Tnode*)result->info.typ->ref), ident(result->sym->name), xtag); } else if (result->info.typ->type == Tpointer && ((Tnode *) result->info.typ->ref)->type == Tstruct && !is_dynamic_array((Tnode*)result->info.typ->ref)) { fprintf(fd, "\n\tsoap_get_%s(soap, %s, \"%s\", NULL);", c_ident((Tnode*)result->info.typ->ref), ident(result->sym->name), xtag); } else if (result->info.typ->type == Tpointer && is_XML((Tnode*)result->info.typ->ref) && is_string((Tnode*)result->info.typ->ref)) { fprintf(fd, "\n\tsoap_inliteral(soap, NULL, (char**)%s);", ident(result->sym->name)); } else if (result->info.typ->type == Treference && is_XML((Tnode*)result->info.typ->ref) && is_string((Tnode*)result->info.typ->ref)) { fprintf(fd, "\n\tsoap_inliteral(soap, NULL, (char**)&%s);", ident(result->sym->name)); } else if (result->info.typ->type == Tpointer && is_XML((Tnode*)result->info.typ->ref) && is_wstring((Tnode*)result->info.typ->ref)) { fprintf(fd, "\n\tsoap_inwliteral(soap, NULL, (wchar_t**)%s);", ident(result->sym->name)); } else if (result->info.typ->type == Treference && is_XML((Tnode*)result->info.typ->ref) && is_wstring((Tnode*)result->info.typ->ref)) { fprintf(fd, "\n\tsoap_inwliteral(soap, NULL, (wchar_t**)&%s);", ident(result->sym->name)); } else if (result->info.typ->type == Treference) { fprintf(fd, "\n\tsoap_get_%s(soap, &%s, \"%s\", NULL);", c_ident(result->info.typ), ident(result->sym->name), xtag); } else { fprintf(fd, "\n\tsoap_get_%s(soap, %s, \"%s\", NULL);", c_ident(result->info.typ), ident(result->sym->name), xtag); } fprintf(fd, "\n\tif (soap->error)\n\t\treturn soap_recv_fault(soap, 0);"); } else if (is_literal(method_response_encoding)) { fprintf(fd, "\n\tif (soap_recv_fault(soap, 1))\n\t\treturn soap->error;"); } fflush(fd); fprintf(fd, "\n\tif (soap_body_end_in(soap)"); fprintf(fd, "\n\t || soap_envelope_end_in(soap)"); fprintf(fd, "\n\t || soap_end_recv(soap))"); fprintf(fd, "\n\t\treturn soap_closesock(soap);"); if (response) { if (result->info.typ->type == Tarray) fprintf(fd, "\n\tsoap_memcpy(%s, sizeof(%s), soap_tmp_%s->%s, sizeof(%s));", ident(result->sym->name), c_ident(response->info.typ), c_type(result->info.typ), ident(result->sym->name), c_type(result->info.typ)); else if (result->info.typ->type == Treference) fprintf(fd, "\n\t%s = soap_tmp_%s->%s;", ident(result->sym->name), c_ident(response->info.typ), ident(result->sym->name)); else { fprintf(fd, "\n\tif (%s && soap_tmp_%s->%s)", ident(result->sym->name), c_ident(response->info.typ), ident(result->sym->name)); fprintf(fd, "\n\t\t*%s = *soap_tmp_%s->%s;", ident(result->sym->name), c_ident(response->info.typ), ident(result->sym->name)); } } fprintf(fd, "\n\treturn soap_closesock(soap);"); fprintf(fd , "\n}"); fflush(fd); } void gen_serve_method(FILE *fd, Table *table, Entry *param, const char *name) { Service *sp = NULL; const char *encoding; Entry *result, *p, *q, *pin, *pout, *response = NULL; Table *input; const char *xtag; Method *m; const char *method_encoding = NULL, *method_response_encoding = NULL; result = (Entry*)param->info.typ->ref; p = entry(classtable, param->sym); if (!p) execerror("no table entry"); if (!is_response(result->info.typ) && !is_XML(result->info.typ)) response = get_response(param->info.typ); q = entry(table, param->sym); if (!q) execerror("no table entry"); pout = (Entry*)q->info.typ->ref; if (!pout) execerror("no table entry"); if (name) { if (iflag) fprintf(fd, "\n\nstatic int serve_%s(%s *soap)\n{", ident(param->sym->name), name); else fprintf(fd, "\n\nstatic int serve_%s(struct soap *soap, %s *service)\n{", ident(param->sym->name), name); } else { fprintf(fheader, "\n\nSOAP_FMAC5 int SOAP_FMAC6 soap_serve_%s(struct soap*);", ident(param->sym->name)); fprintf(fd, "\n\nSOAP_FMAC5 int SOAP_FMAC6 soap_serve_%s(struct soap *soap)\n{", ident(param->sym->name)); } fprintf(fd, "\tstruct %s soap_tmp_%s;", ident(param->sym->name), ident(param->sym->name)); for (sp = services; sp; sp = sp->next) { if (has_ns_eq(sp->ns, param->sym->name)) { encoding = sp->encoding; method_encoding = encoding; method_response_encoding = NULL; for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, param->sym->name)) { if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; } } break; } } if (!method_response_encoding) method_response_encoding = method_encoding; fflush(fd); if (!is_transient(pout->info.typ)) { if (pout->info.typ->type == Tarray && response) { fprintf(fd, "\n\tstruct %s soap_tmp_%s;", c_ident(response->info.typ), c_ident(response->info.typ)); fprintf(fd, "\n\tsoap_default_%s(soap, &soap_tmp_%s);", c_ident(response->info.typ), c_ident(response->info.typ)); } else if (pout->info.typ->type == Tpointer && !is_stdstring(pout->info.typ) && !is_stdwstring(pout->info.typ) && response) { fprintf(fd, "\n\tstruct %s soap_tmp_%s;", c_ident(response->info.typ), c_ident(response->info.typ)); fprintf(fd, "\n\t%s soap_tmp_%s;", c_type((Tnode*)pout->info.typ->ref), c_ident((Tnode*)pout->info.typ->ref)); fprintf(fd, "\n\tsoap_default_%s(soap, &soap_tmp_%s);", c_ident(response->info.typ), c_ident(response->info.typ)); if (((Tnode*)pout->info.typ->ref)->type == Tclass && !is_external((Tnode*)pout->info.typ->ref) && !is_volatile((Tnode*)pout->info.typ->ref) && !is_typedef((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\tsoap_tmp_%s.soap_default(soap);", c_ident((Tnode*)pout->info.typ->ref)); else if (((Tnode*)pout->info.typ->ref)->type == Tpointer) fprintf(fd, "\n\tsoap_tmp_%s = NULL;", c_ident((Tnode*)pout->info.typ->ref)); else fprintf(fd, "\n\tsoap_default_%s(soap, &soap_tmp_%s);", c_ident((Tnode*)pout->info.typ->ref), c_ident((Tnode*)pout->info.typ->ref)); fprintf(fd, "\n\tsoap_tmp_%s.%s = &soap_tmp_%s;", c_ident(response->info.typ), ident(pout->sym->name), c_ident((Tnode*)pout->info.typ->ref)); } else if (response) { fprintf(fd, "\n\tstruct %s soap_tmp_%s;", c_ident(response->info.typ), c_ident(response->info.typ)); fprintf(fd, "\n\tsoap_default_%s(soap, &soap_tmp_%s);", c_ident(response->info.typ), c_ident(response->info.typ)); } else if (((Tnode *)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && (is_external((Tnode*)pout->info.typ->ref) || is_volatile((Tnode*)pout->info.typ->ref) || is_typedef((Tnode*)pout->info.typ->ref)) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) { fprintf(fd, "\n\t%s %s;", c_type((Tnode*)pout->info.typ->ref), ident(pout->sym->name)); fprintf(fd, "\n\tsoap_default_%s(soap, &%s);", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name)); } else if (((Tnode *)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) { fprintf(fd, "\n\t%s %s;", c_type((Tnode*)pout->info.typ->ref), ident(pout->sym->name)); fprintf(fd, "\n\t%s.soap_default(soap);", ident(pout->sym->name)); } else if (((Tnode *)pout->info.typ->ref)->type == Tstruct && !is_dynamic_array((Tnode*)pout->info.typ->ref)) { fprintf(fd, "\n\t%s %s;", c_type((Tnode*)pout->info.typ->ref), ident(pout->sym->name)); fprintf(fd, "\n\tsoap_default_%s(soap, &%s);", c_ident((Tnode *)pout->info.typ->ref), ident(pout->sym->name)); } else { fprintf(fd, "\n\t%s soap_tmp_%s;", c_type((Tnode*)pout->info.typ->ref), c_ident((Tnode*)pout->info.typ->ref)); if (is_string((Tnode*)pout->info.typ->ref) || is_wstring((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\tsoap_tmp_%s = NULL;", c_ident((Tnode*)pout->info.typ->ref)); else fprintf(fd, "\n\tsoap_default_%s(soap, &soap_tmp_%s);", c_ident((Tnode*)pout->info.typ->ref), c_ident((Tnode*)pout->info.typ->ref)); } } fprintf(fd, "\n\tsoap_default_%s(soap, &soap_tmp_%s);", ident(param->sym->name), ident(param->sym->name)); fflush(fd); q = entry(classtable, param->sym); if (!is_invisible_empty(q->info.typ)) { fprintf(fd, "\n\tif (!soap_get_%s(soap, &soap_tmp_%s, \"%s\", NULL))", ident(param->sym->name), ident(param->sym->name), ns_convert(param->sym->name)); fprintf(fd, "\n\t\treturn soap->error;"); } fprintf(fd, "\n\tif (soap_body_end_in(soap)"); fprintf(fd, "\n\t || soap_envelope_end_in(soap)"); fprintf(fd, "\n\t || soap_end_recv(soap))\n\t\treturn soap->error;"); if (name) { if (iflag) fprintf(fd, "\n\tsoap->error = soap->%s(", ns_cname(param->sym->name, NULL)); else fprintf(fd, "\n\tsoap->error = service->%s(", ns_cname(param->sym->name, NULL)); } else fprintf(fd, "\n\tsoap->error = %s(soap", ident(param->sym->name)); fflush(fd); input = (Table*) q->info.typ->ref; if (!input) execerror("no table entry"); for (pin = input->list; pin; pin = pin->next) { if (pin->info.typ->type == Trvalueref) fprintf(fd, "%sstd::move(soap_tmp_%s.%s)", !name || pin != input->list ? ", " : "", ident(param->sym->name), ident(pin->sym->name)); else fprintf(fd, "%ssoap_tmp_%s.%s", !name || pin != input->list ? ", " : "", ident(param->sym->name), ident(pin->sym->name)); } if (is_transient(pout->info.typ)) fprintf(fd, ");"); else { if (!name || input->list) fprintf(fd, ", "); if (response) fprintf(fd, "soap_tmp_%s.%s);", c_ident(response->info.typ), ident(pout->sym->name)); else if (pout->info.typ->type == Treference && (((Tnode*)pout->info.typ->ref)->type == Tstruct || ((Tnode*)pout->info.typ->ref)->type == Tclass) && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "%s);", ident(pout->sym->name)); else if ((((Tnode*)pout->info.typ->ref)->type == Tstruct || ((Tnode*)pout->info.typ->ref)->type == Tclass) && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "&%s);", ident(pout->sym->name)); else if (pout->info.typ->type == Treference) fprintf(fd, "soap_tmp_%s);", c_ident((Tnode*)pout->info.typ->ref)); else fprintf(fd, "&soap_tmp_%s);", c_ident((Tnode*)pout->info.typ->ref)); } fprintf(fd, "\n\tif (soap->error)\n\t\treturn soap->error;"); if (!is_transient(pout->info.typ)) { if (sp && method_response_encoding) { if (is_literal(method_response_encoding)) fprintf(fd, "\n\tsoap->encodingStyle = NULL;"); else if (sp->encoding) fprintf(fd, "\n\tsoap->encodingStyle = \"%s\";", sp->encoding); else if (method_response_encoding) fprintf(fd, "\n\tsoap->encodingStyle = \"%s\";", method_response_encoding); else if (!eflag) fprintf(fd, "\n\tsoap->encodingStyle = NULL;"); } else if (!eflag) fprintf(fd, "\n\tsoap->encodingStyle = NULL;"); fprintf(fd, "\n\tsoap_serializeheader(soap);"); if (pout->info.typ->type == Tarray && response) fprintf(fd, "\n\tsoap_serialize_%s(soap, &soap_tmp_%s);", c_ident(response->info.typ), c_ident(response->info.typ)); else if (response) fprintf(fd, "\n\tsoap_serialize_%s(soap, &soap_tmp_%s);", c_ident(response->info.typ), c_ident(response->info.typ)); else if (((Tnode *)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && (is_external((Tnode*)pout->info.typ->ref) || is_volatile((Tnode*)pout->info.typ->ref) || is_typedef((Tnode*)pout->info.typ->ref)) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\tsoap_serialize_%s(soap, &%s);", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name)); else if (((Tnode *)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t%s.soap_serialize(soap);", ident(pout->sym->name)); else if (((Tnode *)pout->info.typ->ref)->type == Tstruct && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\tsoap_serialize_%s(soap, &%s);", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name)); else if (!is_XML((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\tsoap_serialize_%s(soap, &soap_tmp_%s);", c_ident((Tnode*)pout->info.typ->ref), c_ident((Tnode*)pout->info.typ->ref)); if (is_literal(method_response_encoding) && has_ns_eq(NULL, pout->sym->name)) xtag = ns_convert(pout->sym->name); else xtag = xml_tag(pout->info.typ); fprintf(fd, "\n\tif (soap_begin_count(soap))\n\t\treturn soap->error;"); fprintf(fd, "\n\tif (soap->mode & SOAP_IO_LENGTH)"); fprintf(fd, "\n\t{\tif (soap_envelope_begin_out(soap)"); fprintf(fd, "\n\t\t || soap_putheader(soap)"); fprintf(fd, "\n\t\t || soap_body_begin_out(soap)"); if (response) fprintf(fd, "\n\t\t || soap_put_%s(soap, &soap_tmp_%s, \"%s\", \"\")", c_ident(response->info.typ), c_ident(response->info.typ), xml_tag(response->info.typ)); else if (((Tnode*)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && (is_external((Tnode*)pout->info.typ->ref) || is_volatile((Tnode*)pout->info.typ->ref) || is_typedef((Tnode*)pout->info.typ->ref)) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t\t || soap_put_%s(soap, &%s, \"%s\", \"\")", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name), ns_convert(pout->sym->name)); else if (((Tnode*)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t\t || %s.soap_put(soap, \"%s\", \"\")", ident(pout->sym->name), xtag); else if (((Tnode*)pout->info.typ->ref)->type == Tstruct && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t\t || soap_put_%s(soap, &%s, \"%s\", \"\")", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name), xtag); else if (is_XML((Tnode*)pout->info.typ->ref) && is_string((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t\t || soap_outliteral(soap, \"%s\", &soap_tmp_%s, NULL)", ns_convert(pout->sym->name), c_ident((Tnode*)pout->info.typ->ref)); else if (is_XML((Tnode*)pout->info.typ->ref) && is_wstring((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t\t || soap_outwliteral(soap, \"%s\", &soap_tmp_%s, NULL)", ns_convert(pout->sym->name), c_ident((Tnode*)pout->info.typ->ref)); else fprintf(fd, "\n\t\t || soap_put_%s(soap, &soap_tmp_%s, \"%s\", \"\")", c_ident(pout->info.typ), c_ident((Tnode*)pout->info.typ->ref), ns_convert(pout->sym->name)); fprintf(fd, "\n\t\t || soap_body_end_out(soap)"); fprintf(fd, "\n\t\t || soap_envelope_end_out(soap))"); fprintf(fd, "\n\t\t\t return soap->error;"); fprintf(fd, "\n\t};"); fprintf(fd, "\n\tif (soap_end_count(soap)"); fprintf(fd, "\n\t || soap_response(soap, SOAP_OK)"); fprintf(fd, "\n\t || soap_envelope_begin_out(soap)"); fprintf(fd, "\n\t || soap_putheader(soap)"); fprintf(fd, "\n\t || soap_body_begin_out(soap)"); if (response) fprintf(fd, "\n\t || soap_put_%s(soap, &soap_tmp_%s, \"%s\", \"\")", c_ident(response->info.typ), c_ident(response->info.typ), xml_tag(response->info.typ)); else if (((Tnode *)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && (is_external((Tnode*)pout->info.typ->ref) || is_volatile((Tnode*)pout->info.typ->ref) || is_typedef((Tnode*)pout->info.typ->ref)) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t || soap_put_%s(soap, &%s, \"%s\", \"\")", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name), ns_convert(pout->sym->name)); else if (((Tnode *)pout->info.typ->ref)->type == Tclass && !is_stdstring((Tnode*)pout->info.typ->ref) && !is_stdwstring((Tnode*)pout->info.typ->ref) && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t || %s.soap_put(soap, \"%s\", \"\")", ident(pout->sym->name), xtag); else if (((Tnode *)pout->info.typ->ref)->type == Tstruct && !is_dynamic_array((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t || soap_put_%s(soap, &%s, \"%s\", \"\")", c_ident((Tnode*)pout->info.typ->ref), ident(pout->sym->name), xtag); else if (is_XML((Tnode*)pout->info.typ->ref) && is_string((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t || soap_outliteral(soap, \"%s\", &soap_tmp_%s, NULL)", ns_convert(pout->sym->name), c_ident((Tnode*)pout->info.typ->ref)); else if (is_XML((Tnode*)pout->info.typ->ref) && is_wstring((Tnode*)pout->info.typ->ref)) fprintf(fd, "\n\t || soap_outwliteral(soap, \"%s\", &soap_tmp_%s, NULL)", ns_convert(pout->sym->name), c_ident((Tnode*)pout->info.typ->ref)); else fprintf(fd, "\n\t || soap_put_%s(soap, &soap_tmp_%s, \"%s\", \"\")", c_ident(pout->info.typ), c_ident((Tnode*)pout->info.typ->ref), ns_convert(pout->sym->name)); fprintf(fd, "\n\t || soap_body_end_out(soap)"); fprintf(fd, "\n\t || soap_envelope_end_out(soap)"); fprintf(fd, "\n\t || soap_end_send(soap))"); fprintf(fd, "\n\t\treturn soap->error;"); } fprintf(fd, "\n\treturn soap_closesock(soap);"); fprintf(fd, "\n}"); fflush(fd); } void gen_object_code(FILE *fd, Table *table, Symbol *ns, const char *name) { Entry *p, *method, *catch_method, *param; Table *t; const char *soap, *catch_action; if (iflag) soap = "this"; else soap = "this->soap"; fprintf(fd, "\n\n#include \"%s%s.h\"", prefix, name); if (namespaceid) fprintf(fd, "\n\nnamespace %s {", namespaceid); if (iflag) { fprintf(fd, "\n\n%s::%s() : soap(SOAP_IO_DEFAULT)\n{\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const %s& rhs)\n{\tsoap_copy_context(this, &rhs);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const struct soap &_soap) : soap(_soap)\n{ }", name, name); fprintf(fd, "\n\n%s::%s(soap_mode iomode) : soap(iomode)\n{\t%s_init(iomode, iomode);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode imode, soap_mode omode) : soap(imode, omode)\n{\t%s_init(imode, omode);\n}", name, name, name); fprintf(fd, "\n\n%s::~%s()\n{\n\tthis->destroy();\n}", name, name); } else { fprintf(fd, "\n\n%s::%s()\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(const %s& rhs)\n{\tthis->soap = rhs.soap;\n\tthis->soap_own = false;\n}", name, name, name); fprintf(fd, "\n\n%s::%s(struct soap *_soap)\n{\tthis->soap = _soap;\n\tthis->soap_own = false;\n\t%s_init(_soap->imode, _soap->omode);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode iomode)\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(iomode, iomode);\n}", name, name, name); fprintf(fd, "\n\n%s::%s(soap_mode imode, soap_mode omode)\n{\tthis->soap = soap_new();\n\tthis->soap_own = true;\n\t%s_init(imode, omode);\n}", name, name, name); fprintf(fd, "\n\n%s::~%s()\n{\tif (this->soap_own)\n\t\tsoap_free(this->soap);\n}", name, name); } fprintf(fd, "\n\nvoid %s::%s_init(soap_mode imode, soap_mode omode)\n{\tsoap_imode(%s, imode);\n\tsoap_omode(%s, omode);\n\tstatic const struct Namespace namespaces[] = ", name, name, soap, soap); gen_nsmap(fd); fprintf(fd, "\tsoap_set_namespaces(%s, namespaces);\n}", soap); fprintf(fd, "\n\nvoid %s::destroy()\n{\tsoap_destroy(%s);\n\tsoap_end(%s);\n}", name, soap, soap); fprintf(fd, "\n\nvoid %s::reset()\n{\tthis->destroy();\n\tsoap_done(%s);\n\tsoap_initialize(%s);\n\t%s_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT);\n}", name, soap, soap, name); if (iflag) { fprintf(fd, "\n\n#ifndef WITH_PURE_VIRTUAL\n%s *%s::copy()\n{\t%s *dup = SOAP_NEW_UNMANAGED(%s(*(struct soap*)%s));\n\treturn dup;\n}\n#endif", name, name, name, name, soap); fprintf(fd, "\n\n%s& %s::operator=(const %s& rhs)\n{\tsoap_copy_context(this, &rhs);\n\treturn *this;\n}", name, name, name); } else { fprintf(fd, "\n\n#ifndef WITH_PURE_VIRTUAL\n%s *%s::copy()\n{\t%s *dup = SOAP_NEW_UNMANAGED(%s);\n\tif (dup)\n\t\tsoap_copy_context(dup->soap, this->soap);\n\treturn dup;\n}\n#endif", name, name, name, name); fprintf(fd, "\n\n%s& %s::operator=(const %s& rhs)\n{\tif (this->soap != rhs.soap)\n\t{\tif (this->soap_own)\n\t\t\tsoap_free(this->soap);\n\t\tthis->soap = rhs.soap;\n\t\tthis->soap_own = false;\n\t}\n\treturn *this;\n}", name, name, name); } fprintf(fd, "\n\nint %s::soap_close_socket()\n{\treturn soap_closesock(%s);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_force_close_socket()\n{\treturn soap_force_closesock(%s);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_senderfault(const char *string, const char *detailXML)\n{\treturn ::soap_sender_fault(%s, string, detailXML);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_senderfault(const char *subcodeQName, const char *string, const char *detailXML)\n{\treturn ::soap_sender_fault_subcode(%s, subcodeQName, string, detailXML);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_receiverfault(const char *string, const char *detailXML)\n{\treturn ::soap_receiver_fault(%s, string, detailXML);\n}", name, soap); fprintf(fd, "\n\nint %s::soap_receiverfault(const char *subcodeQName, const char *string, const char *detailXML)\n{\treturn ::soap_receiver_fault_subcode(%s, subcodeQName, string, detailXML);\n}", name, soap); fprintf(fd, "\n\nvoid %s::soap_print_fault(FILE *fd)\n{\t::soap_print_fault(%s, fd);\n}", name, soap); fprintf(fd, "\n\n#ifndef WITH_LEAN\n#ifndef WITH_COMPAT\nvoid %s::soap_stream_fault(std::ostream& os)\n{\t::soap_stream_fault(%s, os);\n}\n#endif", name, soap); fprintf(fd, "\n\nchar *%s::soap_sprint_fault(char *buf, size_t len)\n{\treturn ::soap_sprint_fault(%s, buf, len);\n}\n#endif", name, soap); fprintf(fd, "\n\nvoid %s::soap_noheader()\n{\t%s->header = NULL;\n}", name, soap); if (!namespaceid) { p = entry(classtable, lookup("SOAP_ENV__Header")); if (p) { t = (Table*)p->info.typ->ref; if (t && t->list && !is_void(t->list->info.typ)) { fprintf(fd, "\n\nvoid %s::soap_header(", name); gen_params_ref(fd, t, NULL, 0); fprintf(fd, "\n{\t::soap_header(%s);", soap); for (param = t->list; param; param = param->next) { if (namespaceid) fprintf(fd, "\n\t((%s::SOAP_ENV__Header*)%s->header)->%s = %s;", namespaceid, soap, ident(param->sym->name), ident(param->sym->name)); else fprintf(fd, "\n\t%s->header->%s = %s;", soap, ident(param->sym->name), ident(param->sym->name)); } fprintf(fd, "\n}"); } } } fprintf(fd, "\n\n::SOAP_ENV__Header *%s::soap_header()\n{\treturn %s->header;\n}", name, soap); fprintf(fd, "\n\n#ifndef WITH_NOIO"); fprintf(fd, "\nint %s::run(int port)\n{\tif (!soap_valid_socket(%s->master) && !soap_valid_socket(this->bind(NULL, port, 100)))\n\t\treturn %s->error;\n\tfor (;;)\n\t{\tif (!soap_valid_socket(this->accept()))\n\t\t{\tif (%s->errnum == 0) // timeout?\n\t\t\t\t%s->error = SOAP_OK;\n\t\t\tbreak;\n\t\t}\n\t\tif (this->serve())\n\t\t\tbreak;\n\t\tthis->destroy();\n\t}\n\treturn %s->error;\n}", name, soap, soap, soap, soap, soap); fprintf(fd, "\n\n#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS)"); fprintf(fd, "\nint %s::ssl_run(int port)\n{\tif (!soap_valid_socket(%s->master) && !soap_valid_socket(this->bind(NULL, port, 100)))\n\t\treturn %s->error;\n\tfor (;;)\n\t{\tif (!soap_valid_socket(this->accept()))\n\t\t{\tif (%s->errnum == 0) // timeout?\n\t\t\t\t%s->error = SOAP_OK;\n\t\t\tbreak;\n\t\t}\n\t\tif (this->ssl_accept() || this->serve())\n\t\t\tbreak;\n\t\tthis->destroy();\n\t}\n\treturn %s->error;\n}", name, soap, soap, soap, soap, soap); fprintf(fd, "\n#endif"); fprintf(fd, "\n\nSOAP_SOCKET %s::bind(const char *host, int port, int backlog)\n{\treturn soap_bind(%s, host, port, backlog);\n}", name, soap); fprintf(fd, "\n\nSOAP_SOCKET %s::accept()\n{\treturn soap_accept(%s);\n}", name, soap); fprintf(fd, "\n\n#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS)"); fprintf(fd, "\nint %s::ssl_accept()\n{\treturn soap_ssl_accept(%s);\n}", name, soap); fprintf(fd, "\n#endif"); fprintf(fd, "\n#endif"); fprintf(fd, "\n\nint %s::serve()", name); fprintf(fd, "\n{\n#ifndef WITH_FASTCGI\n\t%s->keep_alive = %s->max_keep_alive + 1;\n#endif\n\tdo\n\t{", soap, soap); fprintf(fd, "\n#ifndef WITH_FASTCGI\n\t\tif (%s->keep_alive > 0 && %s->max_keep_alive > 0)\n\t\t\t%s->keep_alive--;\n#endif", soap, soap, soap); fprintf(fd, "\n\t\tif (soap_begin_serve(%s))\n\t\t{\tif (%s->error >= SOAP_STOP)\n\t\t\t\tcontinue;\n\t\t\treturn %s->error;\n\t\t}", soap, soap, soap); fprintf(fd, "\n\t\tif ((dispatch() || (%s->fserveloop && %s->fserveloop(%s))) && %s->error && %s->error < SOAP_STOP)\n\t\t{\n#ifdef WITH_FASTCGI\n\t\t\tsoap_send_fault(%s);\n#else\n\t\t\treturn soap_send_fault(%s);\n#endif\n\t\t}", soap, soap, soap, soap, soap, soap, soap); fprintf(fd, "\n#ifdef WITH_FASTCGI\n\t\tsoap_destroy(%s);\n\t\tsoap_end(%s);\n\t} while (1);\n#else\n\t} while (%s->keep_alive);\n#endif", soap, soap, soap); fprintf(fd, "\n\treturn SOAP_OK;"); fprintf(fd, "\n}\n"); for (method = table->list; method; method = method->next) { if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && has_ns_eq(ns->name, method->sym->name)) { if (jflag) fprintf(fd, "\nstatic int serve_%s(struct soap*, %s*);", ident(method->sym->name), name); else fprintf(fd, "\nstatic int serve_%s(%s*);", ident(method->sym->name), name); } } fprintf(fd, "\n\nint %s::dispatch()\n{", name); if (!iflag) { fprintf(fd, "\treturn dispatch(this->soap);\n}"); fprintf(fd, "\n\nint %s::dispatch(struct soap* soap)\n{", name); fprintf(fd, "\n\t%s_init(soap->imode, soap->omode);\n", name); soap = "soap"; } if (sflag) fprintf(fd, "\n\t%s->mode |= SOAP_XML_STRICT;", soap); fprintf(fd, "\n\tsoap_peek_element(%s);", soap); catch_method = NULL; catch_action = NULL; for (method = table->list; method; method = method->next) { const char *action = NULL; if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && has_ns_eq(ns->name, method->sym->name)) { if (aflag) { Service *sp; for (sp = services; sp; sp = sp->next) { if (has_ns_eq(sp->ns, method->sym->name)) { Method *m; for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, method->sym->name)) { if (m->mess == ACTION || m->mess == REQUEST_ACTION) action = m->part; } } } } } if (is_invisible(method->sym->name)) { Entry *param = entry(classtable, method->sym); if (param) param = ((Table*)param->info.typ->ref)->list; if (action) { if (*action == '"') { fprintf(fd, "\n\tif ("); if (param && !Aflag) fprintf(fd, "(!%s->action && !soap_match_tag(%s, %s->tag, \"%s\")) || ", soap, soap, soap, ns_convert(param->sym->name)); else { catch_method = method; catch_action = action; } fprintf(fd, "(%s->action && !strcmp(%s->action, %s))", soap, soap, action); } else { fprintf(fd, "\n\tif ("); if (param && !Aflag) fprintf(fd, "(!%s->action && !soap_match_tag(%s, %s->tag, \"%s\")) || ", soap, soap, soap, ns_convert(param->sym->name)); else { catch_method = method; catch_action = action; } fprintf(fd, "(%s->action && !strcmp(%s->action, \"%s\"))", soap, soap, action); } if (iflag) fprintf(fd, ")\n\t\treturn serve_%s(this);", ident(method->sym->name)); else fprintf(fd, ")\n\t\treturn serve_%s(%s, this);", ident(method->sym->name), soap); } else { if (Aflag) compliancewarn("Option -A requires a SOAPAction where none is defined"); if (param) { fprintf(fd, "\n\tif (!soap_match_tag(%s, %s->tag, \"%s\")", soap, soap, ns_convert(param->sym->name)); if (iflag) fprintf(fd, ")\n\t\treturn serve_%s(this);", ident(method->sym->name)); else fprintf(fd, ")\n\t\treturn serve_%s(%s, this);", ident(method->sym->name), soap); } else { catch_method = method; catch_action = action; } } } else { if (action) { if (*action == '"') { fprintf(fd, "\n\tif ("); if (!Aflag) fprintf(fd, "(!%s->action && !soap_match_tag(%s, %s->tag, \"%s\")) || ", soap, soap, soap, ns_convert(method->sym->name)); fprintf(fd, "(%s->action && !strcmp(%s->action, %s))", soap, soap, action); } else { fprintf(fd, "\n\tif ("); if (!Aflag) fprintf(fd, "(!%s->action && !soap_match_tag(%s, %s->tag, \"%s\")) || ", soap, soap, soap, ns_convert(method->sym->name)); fprintf(fd, "(%s->action && !strcmp(%s->action, \"%s\"))", soap, soap, action); } } else { if (Aflag) compliancewarn("Option -A requires a SOAPAction where none is defined"); fprintf(fd, "\n\tif (!soap_match_tag(%s, %s->tag, \"%s\")", soap, soap, ns_convert(method->sym->name)); } if (iflag) fprintf(fd, ")\n\t\treturn serve_%s(this);", ident(method->sym->name)); else fprintf(fd, ")\n\t\treturn serve_%s(%s, this);", ident(method->sym->name), soap); } } } if (catch_method) { if (Aflag && catch_action) { if (*catch_action == '"') { fprintf(fd, "\n\tif ("); fprintf(fd, "(%s->action && !strcmp(%s->action, %s))", soap, soap, catch_action); if (iflag) fprintf(fd, ")\n\t\treturn serve_%s(this);", ident(catch_method->sym->name)); else fprintf(fd, ")\n\t\treturn serve_%s(%s, this);", ident(catch_method->sym->name), soap); } else { fprintf(fd, "\n\tif ("); fprintf(fd, "(%s->action && !strcmp(%s->action, \"%s\"))", soap, soap, catch_action); if (iflag) fprintf(fd, ")\n\t\treturn serve_%s(this);", ident(catch_method->sym->name)); else fprintf(fd, ")\n\t\treturn serve_%s(%s, this);", ident(catch_method->sym->name), soap); } fprintf(fd, "\n\treturn %s->error = SOAP_NO_METHOD;\n}", soap); } else if (iflag) fprintf(fd, "\n\treturn serve_%s(this);\n}", ident(catch_method->sym->name)); else fprintf(fd, "\n\treturn serve_%s(soap, this);\n}", ident(catch_method->sym->name)); } else fprintf(fd, "\n\treturn %s->error = SOAP_NO_METHOD;\n}", soap); for (method = table->list; method; method = method->next) if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && !is_imported(method->info.typ) && has_ns_eq(ns->name, method->sym->name)) gen_serve_method(fd, table, method, name); if (namespaceid) fprintf(fd, "\n\n} // namespace %s\n", namespaceid); fprintf(fd, "\n/* End of server object code */\n"); } void gen_response_begin(FILE *fd, int n, const char *s, int soap) { if (!is_invisible(s)) { fprintf(fd, "%*s<%sResponse", n, "", s); if (!soap || soap_version < 0) gen_xmlns(fd, 0); fprintf(fd, ">\n"); } } void gen_response_end(FILE *fd, int n, const char *s) { if (!is_invisible(s)) fprintf(fd, "%*s\n", n, "", s); } void gen_element_begin(FILE *fd, int n, const char *s, Entry *p) { if (!is_invisible(s)) { fprintf(fd, "%*s<%s", n, "", s); if (p) { const char *x = xsi_type_u(p->info.typ); if (x && *x) fprintf(fd, " xsi:type=\"%s\"", x); } if (soap_version >= 0 && p && (p->info.sto & SmustUnderstand)) fprintf(fd, " SOAP-ENV:mustUnderstand=\"%s\"", soap_version == 2 ? "true" : "1"); } } void gen_element_array(FILE *fd, int n, const char *s) { if (!is_invisible(s)) fprintf(fd, "%*s<%s xsi:type=\"SOAP-ENC:Array\"", n, "", s); } void gen_element_end(FILE *fd, int n, const char *s) { if (!is_invisible(s)) fprintf(fd, "%*s\n", n, "", s); } void gen_data(const char *buf, Table *t, const char *ns, const char *encoding) { Entry *p, *q, *r; FILE *fd; const char *method_encoding = NULL; const char *method_response_encoding = NULL; if (t) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !(p->info.sto & Sextern) && has_ns_eq(ns, p->sym->name)) { int get = 0, soap = 1, mime = 0; Service *sp; Method *m; const char *nse = ns_qualifiedElement(p->info.typ); const char *nsa = ns_qualifiedAttribute(p->info.typ); method_encoding = encoding; method_response_encoding = NULL; for (sp = services; sp; sp = sp->next) { if (!tagcmp(sp->ns, ns)) { for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, p->sym->name)) { if (m->mess == ENCODING) method_encoding = m->part; else if (m->mess == RESPONSE_ENCODING) method_response_encoding = m->part; else if ((m->mess&MIMEIN) && !strcmp(m->part, "application/x-www-form-urlencoded")) mime = 1; else if (m->mess == PROTOCOL) { if (strncmp(m->part, "SOAP", 4)) soap = 0; if (strstr(m->part, "GET")) get = 1; } } } } } if (!method_response_encoding) method_response_encoding = method_encoding; /* request */ if (!get && !mime) { fd = gen_env(buf, ns_remove(p->sym->name), 0, method_encoding, soap); if (!fd) return; q = entry(classtable, p->sym); if (yflag) { fprintf(fd, "%*s\n"); } if (!is_invisible(p->sym->name)) { gen_element_begin(fd, 2, ns_convert(p->sym->name), NULL); if (!soap || soap_version < 0) gen_xmlns(fd, 0); } if (q) { int xmlns = 0; if (!is_invisible(p->sym->name)) { gen_atts(fd, (Table*)q->info.typ->ref, nse, nsa, encoding); fprintf(fd, "\n"); } else if (!soap || soap_version < 0) xmlns = 1; for (q = ((Table*)q->info.typ->ref)->list; q; q = q->next) gen_field(fd, 3, q, nse, nsa, method_encoding, q->info.minOccurs == 0, xmlns); } if (!is_invisible(p->sym->name)) gen_element_end(fd, 2, ns_convert(p->sym->name)); if (soap && soap_version >= 0) fprintf(fd, " \n\n"); fclose(fd); } /* response */ q = (Entry*)p->info.typ->ref; if (q && !is_transient(q->info.typ)) { fd = gen_env(buf, ns_remove(p->sym->name), 1, method_response_encoding, soap); if (!fd) return; if (!is_response(q->info.typ)) { if (is_XML((Tnode*)q->info.typ->ref)) { gen_response_begin(fd, 2, ns_convert(p->sym->name), soap); gen_response_end(fd, 2, ns_convert(p->sym->name)); } else { gen_response_begin(fd, 2, ns_convert(p->sym->name), soap); gen_field(fd, 3, q, nse, nsa, method_response_encoding, q->info.minOccurs == 0, 0); gen_response_end(fd, 2, ns_convert(p->sym->name)); } } else if (q->info.typ->ref && ((Tnode*)q->info.typ->ref)->ref) { const char *xtag; nse = ns_qualifiedElement((Tnode*)q->info.typ->ref); nsa = ns_qualifiedAttribute((Tnode*)q->info.typ->ref); if (is_literal(method_response_encoding) && has_ns_eq(NULL, q->sym->name)) xtag = ns_convert(q->sym->name); else xtag = xml_tag(q->info.typ); if (yflag) fprintf(fd, "%*s\n", 2, "", ident(p->sym->name), c_type_id(q->info.typ, q->sym->name)); if (!is_invisible(xtag)) { gen_element_begin(fd, 2, xtag, NULL); if (!soap || soap_version < 0) gen_xmlns(fd, 0); gen_atts(fd, (Table*)((Tnode*)q->info.typ->ref)->ref, nse, nsa, encoding); fprintf(fd, "\n"); } for (r = ((Table*)((Tnode*)q->info.typ->ref)->ref)->list; r; r = r->next) gen_field(fd, 3, r, nse, nsa, method_response_encoding, q->info.minOccurs == 0, 0); if (!is_invisible(xtag)) gen_element_end(fd, 2, ns_addx(xtag, nse)); } fflush(fd); if (soap && soap_version >= 0) fprintf(fd, " \n\n"); fclose(fd); } } } } } void gen_field(FILE *fd, int n, Entry *p, const char *nse, const char *nsa, const char *encoding, int opt, int xmlns) { Entry *q; char tmp[32]; LONG64 i; int d; if (!(p->info.sto & (Sattribute | Sconst | Sprivate | Sprotected)) && !is_transient(p->info.typ) && p->info.typ->type != Tfun && strncmp(p->sym->name, "__size", 6) && strncmp(p->sym->name, "__type", 6) && !is_choice(p)) { if (n >= 8 && !is_string(p->info.typ) && p->info.minOccurs <= 0) { return; } if (n >= 8 && p->info.typ->type == Tpointer && p->info.nillable && !is_string(p->info.typ) && !is_wstring(p->info.typ)) { gen_element_begin(fd, n, ns_add(p, nse), NULL); if (xmlns) gen_xmlns(fd, 0); fprintf(fd, " xsi:nil=\"true\"/>\n"); return; } if (n >= 16) { fprintf(fd, "%*s\n", n, ""); return; } if (yflag) fprintf(fd, "%*s\n", n, "", c_type_id(p->info.typ, p->sym->name)); if (gflag && is_container(p->info.typ)) { fprintf(fd, "%*s<__REPEAT min=\"" SOAP_LONG_FORMAT "\"", n, "", p->info.minOccurs); if (p->info.maxOccurs > 1) fprintf(fd, " max=\"" SOAP_LONG_FORMAT "\"", p->info.maxOccurs); else fprintf(fd, " max=\"unbounded\""); fprintf(fd, ">\n"); opt = 0; } if (is_soap12(encoding) && (p->info.sto & Sreturn) && (nse || has_ns_eq(NULL, p->sym->name)) && !is_literal(encoding)) fprintf(fd, "%*s%s\n", n, "", rpcURI, ns_add(p, nse)); if (is_XML(p->info.typ)) { if (!is_invisible(p->sym->name)) { gen_element_begin(fd, n, ns_add(p, nse), NULL); if (xmlns) gen_xmlns(fd, 0); fprintf(fd, ">"); gen_element_end(fd, n, ns_add(p, nse)); } else { fprintf(fd, "%*s\n", n, ""); } } else { if (is_fixedstring(p->info.typ)) { gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); fprintf(fd, ">"); fflush(fd); if ((p->info.hasval || p->info.ptrval) && p->info.val.s) fprintf(fd, "%s", xstring(p->info.val.s)); else gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); } else if (p->info.typ->type == Tarray) { i = ((Tnode*) p->info.typ->ref)->width; if (i) { i = p->info.typ->width / i; if (i > 100000) /* SOAP_MAXOCCURS */ i = 100000; } gen_element_array(fd, n, ns_add(p, nse)); if (is_soap12(encoding)) fprintf(fd, " SOAP-ENC:itemType=\"%s\" SOAP-ENC:arraySize=\"" SOAP_LONG_FORMAT "\"", xsi_type_Tarray(p->info.typ), i); else if (!is_literal(encoding)) fprintf(fd, " SOAP-ENC:arrayType=\"%s[" SOAP_LONG_FORMAT "]\"", xsi_type_Tarray(p->info.typ), i); fprintf(fd, ">"); fflush(fd); gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); } else if (is_binary(p->info.typ)) { gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); fprintf(fd, ">"); fflush(fd); if ((p->info.hasval || p->info.ptrval) && p->info.val.s) fprintf(fd, "%s", xstring(p->info.val.s)); else gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); } else if ((q = is_dynamic_array(p->info.typ))) { if (!eflag && (has_ns(p->info.typ) || is_untyped(p->info.typ))) { gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); gen_atts(fd, (Table*)p->info.typ->ref, nse, nsa, encoding); gen_val(fd, n, p->info.typ, nse, nsa, encoding, 0); } else { d = get_Darraydims(p->info.typ); if (d) { for (i = 0; i < d-1; i++) { if (is_soap12(encoding)) tmp[2*i] = ' '; else tmp[2*i] = ','; tmp[2*i+1] = '1'; } tmp[2*d-2] = '\0'; } else *tmp = '\0'; gen_element_array(fd, n, ns_add(p, nse)); i = q->info.minOccurs; if (i < 2) i = 2; if (q->info.maxOccurs > 1 && i > q->info.maxOccurs) i = q->info.maxOccurs; if (is_soap12(encoding)) fprintf(fd, " SOAP-ENC:itemType=\"%s\" SOAP-ENC:arraySize=\"" SOAP_LONG_FORMAT "%s\"", wsdl_type(q->info.typ, ""), i, tmp); else if (!is_literal(encoding)) fprintf(fd, " SOAP-ENC:arrayType=\"%s[" SOAP_LONG_FORMAT "%s]\"", wsdl_type(q->info.typ, ""), i, tmp); fprintf(fd, ">"); while (i--) gen_val(fd, n, p->info.typ, nse, nsa, encoding, 0); fprintf(fd, "\n%*s", n, ""); } fflush(fd); } else if ((p->info.typ->type == Tpointer || p->info.typ->type == Treference || p->info.typ->type == Trvalueref) && (q = is_dynamic_array((Tnode*)p->info.typ->ref)) && !is_binary((Tnode*)p->info.typ->ref)) { if (!eflag && (has_ns((Tnode*)p->info.typ->ref) || is_untyped((Tnode*)p->info.typ->ref))) { gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); gen_atts(fd, (Table*)((Tnode*)p->info.typ->ref)->ref, nse, nsa, encoding); gen_val(fd, n, (Tnode*)p->info.typ->ref, nse, nsa, encoding, 0); } else { d = get_Darraydims((Tnode*)p->info.typ->ref); if (d) { for (i = 0; i < d-1; i++) { tmp[2*i] = ','; tmp[2*i+1] = '1'; } tmp[2*d-2] = '\0'; } else *tmp = '\0'; gen_element_array(fd, n, ns_add(p, nse)); i = q->info.minOccurs; if (i < 2) i = 2; if (q->info.maxOccurs > 1 && i > q->info.maxOccurs) i = q->info.maxOccurs; if (is_soap12(encoding)) fprintf(fd, " SOAP-ENC:itemType=\"%s\" SOAP-ENC:arraySize=\"" SOAP_LONG_FORMAT "%s\"", wsdl_type(((Table*)((Tnode*)p->info.typ->ref)->ref)->list->info.typ, ""), i, tmp); else if (!is_literal(encoding)) fprintf(fd, " SOAP-ENC:arrayType=\"%s[" SOAP_LONG_FORMAT "%s]\"", wsdl_type(((Table*)((Tnode*)p->info.typ->ref)->ref)->list->info.typ, ""), i, tmp); fprintf(fd, ">"); while (i--) gen_val(fd, n, (Tnode*)p->info.typ->ref, nse, nsa, encoding, 0); fprintf(fd, "\n%*s", n, ""); } } else if (p->info.typ->type == Tstruct || p->info.typ->type == Tclass) { if (!is_invisible(p->sym->name)) { gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); gen_atts(fd, (Table*)p->info.typ->ref, nse, nsa, encoding); } else if (is_anyType(p->info.typ)) fprintf(fd, "%*s\n", n, ""); } else if ((p->info.typ->type == Tpointer || p->info.typ->type == Treference || p->info.typ->type == Trvalueref) && (((Tnode*)p->info.typ->ref)->type == Tstruct || ((Tnode*)p->info.typ->ref)->type == Tclass)) { if (!is_invisible(p->sym->name)) { gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); gen_atts(fd, (Table*)((Tnode*)p->info.typ->ref)->ref, nse, nsa, encoding); } else if (is_anyType(p->info.typ)) fprintf(fd, "%*s\n", n, ""); } else if (p->info.typ->type != Tunion) { if (!is_invisible(p->sym->name)) { Tnode *ref = p->info.typ; gen_element_begin(fd, n, ns_add(p, nse), p); if (xmlns) gen_xmlns(fd, 0); if (p->info.typ->type == Tpointer || p->info.typ->type == Treference || is_smart(p->info.typ)) ref = p->info.typ->ref; if (ref->type == Ttemplate) { if (((Tnode*)ref->ref)->type == Tpointer && (((Tnode*)((Tnode*)ref->ref)->ref)->type == Tclass || ((Tnode*)((Tnode*)ref->ref)->ref)->type == Tstruct)) gen_atts(fd, (Table*)((Tnode*)((Tnode*)ref->ref)->ref)->ref, nse, nsa, encoding); else if (((Tnode*)ref->ref)->type == Tclass || ((Tnode*)ref->ref)->type == Tstruct) gen_atts(fd, (Table*)((Tnode*)ref->ref)->ref, nse, nsa, encoding); else fprintf(fd, ">"); } else fprintf(fd, ">"); } } if (p->info.typ->sym && has_ns_eq("xsd", p->info.typ->sym->name)) { gen_val(fd, n+1, p->info.typ, nse, nsa, encoding, opt); } else { switch (p->info.typ->type) { case Tchar: case Tshort: case Tint: case Tlong: case Tllong: case Tuchar: case Tushort: case Tuint: case Tulong: case Tullong: if (p->info.hasval || p->info.ptrval) fprintf(fd, SOAP_LONG_FORMAT, p->info.val.i); else gen_val(fd, n+1, p->info.typ, nse, nsa, encoding, opt); break; case Tfloat: case Tdouble: case Tldouble: if (p->info.hasval || p->info.ptrval) fprintf(fd, "%g", p->info.val.r); else gen_val(fd, n+1, p->info.typ, nse, nsa, encoding, opt); break; case Ttime: gen_val(fd, n+1, p->info.typ, nse, nsa, encoding, opt); break; case Tenum: case Tenumsc: if ((p->info.hasval || p->info.ptrval) && p->info.typ->ref) { for (q = ((Table*)p->info.typ->ref)->list; q; q = q->next) { if (p->info.val.i == q->info.val.i) { fprintf(fd, "%s", ns_remove2(q->sym->name, c_ident(p->info.typ))); break; } } } else { gen_val(fd, n+1, p->info.typ, nse, nsa, encoding, opt); } break; case Tpointer: case Treference: case Trvalueref: if (is_string(p->info.typ) || is_wstring(p->info.typ)) { if ((p->info.hasval || p->info.ptrval) && p->info.val.s) fprintf(fd, "%s", xstring(p->info.val.s)); else gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); } else if (!is_dynamic_array(p->info.typ->ref)) { Tnode *ref= p->info.typ->ref; if (p->info.hasval || p->info.ptrval) { switch (ref->type) { case Tchar: case Tshort: case Tint: case Tlong: case Tllong: case Tuchar: case Tushort: case Tuint: case Tulong: case Tullong: fprintf(fd, SOAP_LONG_FORMAT, p->info.val.i); break; case Tfloat: case Tdouble: case Tldouble: fprintf(fd, "%g", p->info.val.r); break; case Tenum: case Tenumsc: if (ref->ref) { for (q = ((Table*)ref->ref)->list; q; q = q->next) { if (p->info.val.i == q->info.val.i) { fprintf(fd, "%s", ns_remove2(q->sym->name, c_ident(ref))); break; } } } else { gen_val(fd, n, ref, nse, nsa, encoding, opt); } break; default: gen_val(fd, n, ref, nse, nsa, encoding, opt); break; } } else { gen_val(fd, n, ref, nse, nsa, encoding, opt); } } break; case Tclass: if (is_stdstr(p->info.typ)) { if ((p->info.hasval || p->info.ptrval) && p->info.val.s) fprintf(fd, "%s", xstring(p->info.val.s)); else gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); } else if (!is_dynamic_array(p->info.typ)) gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); break; case Tstruct: if (!is_dynamic_array(p->info.typ)) gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); break; case Tunion: gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); break; case Ttemplate: if (gflag) { gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); } else { if (is_smart(p->info.typ)) { i = 1; } else { i = p->info.minOccurs; if (i < 2) i = 2; if (p->info.maxOccurs > 1 && i > p->info.maxOccurs) i = p->info.maxOccurs; } do { /* a bit of a hack, with a copy of the code above */ { gen_val(fd, n, p->info.typ, nse, nsa, encoding, opt); if (i > 1) { gen_element_end(fd, 0, ns_add(p, nse)); if (!is_invisible(p->sym->name)) { gen_element_begin(fd, n, ns_add(p, nse), p); if (p->info.typ->type == Ttemplate) { if (((Tnode*)p->info.typ->ref)->type == Tpointer && (((Tnode*)((Tnode*)p->info.typ->ref)->ref)->type == Tclass || ((Tnode*)((Tnode*)p->info.typ->ref)->ref)->type == Tstruct)) gen_atts(fd, (Table*)((Tnode*)((Tnode*)p->info.typ->ref)->ref)->ref, nse, nsa, encoding); else if (((Tnode*)p->info.typ->ref)->type == Tclass || ((Tnode*)p->info.typ->ref)->type == Tstruct) gen_atts(fd, (Table*)((Tnode*)p->info.typ->ref)->ref, nse, nsa, encoding); else fprintf(fd, ">"); } else fprintf(fd, ">"); } } fflush(fd); } } while (--i); } break; default: break; } } if (p->info.typ->type != Tunion) { if (!is_invisible(p->sym->name)) gen_element_end(fd, 0, ns_add(p, nse)); else fprintf(fd, "\n"); } if (gflag && is_container(p->info.typ)) fprintf(fd, "%*s\n", n, ""); fflush(fd); } } } void gen_atts(FILE *fd, Table *t, const char *nse, const char *nsa, const char *encoding) { Entry *q, *r; Tnode *p; while (t) { for (q = t->list; q; q = q->next) { if (q->info.sto & Sattribute && !is_invisible(q->sym->name) && q->info.maxOccurs != 0) { fprintf(fd, " %s=\"", ns_add(q, nsa)); if ((q->info.typ->type == Tpointer || q->info.typ->type == Treference || q->info.typ->type == Trvalueref || q->info.typ->type == Ttemplate) && !is_string(q->info.typ) && !is_wstring(q->info.typ)) p = (Tnode*)q->info.typ->ref; else p = q->info.typ; if (!gflag && is_eq(q->sym->name, "id")) fprintf(fd, "_%lu", ++idnum); /* id="#" should be unique */ else if (!q->info.hasval && !q->info.ptrval && p->sym && has_ns_eq("xsd", p->sym->name)) { gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); } else { switch (p->type) { case Tchar: case Tshort: case Tint: case Tuchar: case Tushort: case Tuint: case Tlong: case Tulong: case Tllong: case Tullong: if (q->info.hasval || q->info.ptrval) fprintf(fd, SOAP_LONG_FORMAT, q->info.val.i); else gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); break; case Tfloat: case Tdouble: case Tldouble: if (q->info.hasval || q->info.ptrval) fprintf(fd, "%g", q->info.val.r); else gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); break; case Ttime: gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); break; case Tenum: case Tenumsc: if ((q->info.hasval || q->info.ptrval) && p->ref) { for (r = ((Table*)p->ref)->list; r; r = r->next) { if (r->info.val.i == q->info.val.i) { fprintf(fd, "%s", ns_remove2(r->sym->name, c_ident(p))); break; } } } else gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); break; case Tpointer: case Treference: case Trvalueref: case Ttemplate: if (is_string(p) || is_wstring(p)) { if ((q->info.hasval || q->info.ptrval) && q->info.val.s) fprintf(fd, "%s", xstring(q->info.val.s)); else gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); } else if (is_stdstr(p->ref)) { if ((q->info.hasval || q->info.ptrval) && q->info.val.s) fprintf(fd, "%s", xstring(q->info.val.s)); else gen_val(fd, 0, p->ref, nse, nsa, encoding, q->info.minOccurs == 0); } break; case Tstruct: case Tclass: if (is_stdstr(p)) { if ((q->info.hasval || q->info.ptrval) && q->info.val.s) fprintf(fd, "%s", xstring(q->info.val.s)); else gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); } else { gen_val(fd, 0, p, nse, nsa, encoding, q->info.minOccurs == 0); } break; default: break; } } fprintf(fd, "\""); } } t = t->prev; if (t) nsa = ns_qualifiedAttributeName(t->sym->name); } fprintf(fd, ">"); fflush(fd); } void gen_val(FILE *fd, int n, Tnode *p, const char *nse, const char *nsa, const char *encoding, int opt) { Entry *q; LONG64 i; if (!is_transient(p) && p->type != Tfun && !is_XML(p)) { if (is_fixedstring(p)) { LONG64 n = p->width / ((Tnode*)p->ref)->width - 1; if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[TEXT[" SOAP_LONG_FORMAT ":" SOAP_LONG_FORMAT "]]]%%", n, n); } else { for (i = 0; i < n; i++) fprintf(fd, "X"); } return; } else if (p->type == Tarray) { i = ((Tnode*) p->ref)->width; fprintf(fd, "\n"); if (i) { i = p->width / i; if (gflag) { fprintf(fd, "%*s<__REPEAT min=\"" SOAP_LONG_FORMAT "\" max=\"" SOAP_LONG_FORMAT "\">\n", n+1, "", i, i); fprintf(fd, "%*s", n+1, ""); gen_val(fd, n+1, (Tnode*)p->ref, nse, nsa, encoding, 0); fprintf(fd, "\n"); fprintf(fd, "%*s\n", n+1, ""); } else { if (i > 100000) /* SOAP_MAXOCCURS */ i = 100000; for (; i > 0; i--) { fprintf(fd, "%*s", n+1, ""); gen_val(fd, n+1, (Tnode*)p->ref, nse, nsa, encoding, 0); fprintf(fd, "\n"); } } fprintf(fd, "%*s", n, ""); } return; } else if ((q = is_dynamic_array(p))) { if (is_hexBinary(p)) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[HEX[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[HEX[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[HEX[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[HEX]]%%"); } } else if (is_binary(p)) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[BASE64[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[BASE64[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[BASE64[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[BASE64]]%%"); } } else { if (gflag) { fprintf(fd, "%*s<__REPEAT min=\"" SOAP_LONG_FORMAT "\"", n, "", q->info.minOccurs); if (q->info.maxOccurs > 1) fprintf(fd, " max=\"" SOAP_LONG_FORMAT "\"", q->info.maxOccurs); else fprintf(fd, " max=\"unbounded\""); fprintf(fd, ">\n"); } fprintf(fd, "\n%*s<%s>", n+1, "", q->sym->name[5]?q->sym->name+5:"item"); gen_val(fd, n+1, q->info.typ, nse, nsa, encoding, 0); fprintf(fd, "", q->sym->name[5]?q->sym->name+5:"item"); if (gflag) fprintf(fd, "%*s\n", n, ""); } return; } else if (has_restriction_base(p, "xsd__boolean")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[BOOL]]%%"); } else fprintf(fd, "false"); return; } else if (has_restriction_base(p, "xsd__ENTITY") || has_restriction_base(p, "xsd__ENTITIES")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[ENTITY[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[ENTITY[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[ENTITY[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[ENTITY]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } return; } else if (has_restriction_base(p, "xsd__ID")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[ID[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[ID[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[ID[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[ID]]%%"); } else if (p->min > 0 && p->min < 10000) { for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } else fprintf(fd, "_%lu", ++idnum); return; } else if (has_restriction_base(p, "xsd__IDREF") || has_restriction_base(p, "xsd__IDREFS")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[IDREF[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[IDREF[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[IDREF[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[IDREF]]%%"); } else if (p->min > 0 && p->min < 10000) { for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } else fprintf(fd, "_%lu", ++idnum); return; } else if (has_restriction_base(p, "xsd__integer")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[INT64]]%%"); } else fprintf(fd, "0"); return; } else if (has_restriction_base(p, "xsd__date")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[DATE]]%%"); } else fprintf(fd, "1999-12-31"); return; } else if (has_restriction_base(p, "xsd__dateTime")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[DATETIME]]%%"); } else { char tmp[256]; time_t T = time(NULL); strftime(tmp, 256, "%Y-%m-%dT%H:%M:%SZ", gmtime(&T)); fprintf(fd, "%s", tmp); } return; } else if (has_restriction_base(p, "xsd__decimal")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[DOUBLE]]%%"); } else fprintf(fd, "0.0"); return; } else if (has_restriction_base(p, "xsd__duration")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[DURATION]]%%"); } else fprintf(fd, "PT0S"); return; } else if (has_restriction_base(p, "xsd__language")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[LANG[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[LANG[%ld:2]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[LANG[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[LANG]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } return; } else if (has_restriction_base(p, "xsd__Name")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[NAME[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[NAME[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[NAME[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[NAME]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } return; } else if (has_restriction_base(p, "xsd__NCName")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[NCNAME[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[NCNAME[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[NCNAME[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[NCNAME]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } return; } else if (has_restriction_base(p, "xsd__NMTOKEN") || has_restriction_base(p, "xsd__NMTOKENS")) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[NMTOKEN[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[NMTOKEN[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[NMTOKEN[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[NMTOKEN]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } return; } else if (has_restriction_base(p, "xsd__negativeInteger")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[-9223372036854775808:-1]]%%"); } else fprintf(fd, "-1"); return; } else if (has_restriction_base(p, "xsd__nonNegativeInteger")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[0:9223372036854775807]]%%"); } else fprintf(fd, "0"); return; } else if (has_restriction_base(p, "xsd__nonPositiveInteger")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[-9223372036854775808:0]]%%"); } else fprintf(fd, "0"); return; } else if (has_restriction_base(p, "xsd__positiveInteger")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[1:9223372036854775807]]%%"); } else fprintf(fd, "1"); return; } else if (has_restriction_base(p, "xsd__time")) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[TIME]]%%"); } else fprintf(fd, "12:34:56.789Z"); return; } else if (is_qname(p) || is_stdqname(p)) { if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[QNAME]]%%"); } else fprintf(fd, "xsd:string"); return; } switch (p->type) { case Tchar: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[%d:%d]]%%", (int)p->min + (p->incmin == False), (int)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[%d:127]]%%", (int)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[-128:%d]]%%", (int)p->max - (p->incmax == False)); else fprintf(fd, "%%[[INT8]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%d", (int)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, "%d", (int)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tshort: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[%d:%d]]%%", (int)p->min + (p->incmin == False), (int)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[%d:32767]]%%", (int)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[-32768:%d]]%%", (int)p->max - (p->incmax == False)); else fprintf(fd, "%%[[INT16]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%d", (int)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, "%d", (int)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tint: case Tlong: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[%ld:%ld]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[%ld:2147483647]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[-2147483648:%ld]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[INT32]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%ld", (long)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, "%ld", (long)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tllong: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[" SOAP_LONG_FORMAT ":" SOAP_LONG_FORMAT "]]%%", (LONG64)p->min + (p->incmin == False), (LONG64)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[" SOAP_LONG_FORMAT ":9223372036854775807]]%%", (LONG64)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[-9223372036854775808:" SOAP_LONG_FORMAT "]]%%", (LONG64)p->max - (p->incmax == False)); else fprintf(fd, "%%[[INT64]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, SOAP_LONG_FORMAT, (LONG64)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, SOAP_LONG_FORMAT, (LONG64)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tuchar: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[%u:%u]]%%", (unsigned int)p->min + (p->incmin == False), (unsigned int)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[%u:255]]%%", (unsigned int)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[0:%u]]%%", (unsigned int)p->max - (p->incmax == False)); else fprintf(fd, "%%[[UINT8]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%u", (unsigned int)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, "%u", (unsigned int)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tushort: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[%u:%u]]%%", (unsigned int)p->min + (p->incmin == False), (unsigned int)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[%u:65535]]%%", (unsigned int)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[0:%u]]%%", (unsigned int)p->max - (p->incmax == False)); else fprintf(fd, "%%[[UINT16]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%u", (unsigned int)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, "%u", (unsigned int)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tuint: case Tulong: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[%lu:%lu]]%%", (unsigned long)p->min + (p->incmin == False), (unsigned long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[%lu:4294967295]]%%", (unsigned long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[0:%lu]]%%", (unsigned long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[UINT32]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%lu", (unsigned long)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, "%lu", (unsigned long)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tullong: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[" SOAP_ULONG_FORMAT ":" SOAP_ULONG_FORMAT "]]%%", (ULONG64)p->min + (p->incmin == False), (ULONG64)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[" SOAP_ULONG_FORMAT ":18446744073709551615]]%%", (ULONG64)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[0:" SOAP_ULONG_FORMAT "]]%%", (ULONG64)p->max - (p->incmax == False)); else fprintf(fd, "%%[[UINT64]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, SOAP_ULONG_FORMAT, (ULONG64)p->min + (p->incmin == False)); else if (p->hasmax && p->max < 0) fprintf(fd, SOAP_ULONG_FORMAT, (ULONG64)p->max - (p->incmax == False)); else fprintf(fd, "0"); } break; case Tfloat: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax && p->incmin && p->incmax) fprintf(fd, "%%[[%E:%E]]%%", p->min, p->max); else if (p->hasmin && p->hasmax && p->incmin) fprintf(fd, "%%[[%E:%E)]%%", p->min, p->max); else if (p->hasmin && p->hasmax && p->incmax) fprintf(fd, "%%[(%E:%E]]%%", p->min, p->max); else if (p->hasmin && p->hasmax) fprintf(fd, "%%[(%E:%E)]%%", p->min, p->max); else if (p->hasmin && p->incmin) fprintf(fd, "%%[[%E:%E]]%%", p->min, FLT_MAX); else if (p->hasmin) fprintf(fd, "%%[(%E:%E]]%%", p->min, FLT_MAX); else if (p->hasmax && p->incmax) fprintf(fd, "%%[[%E:%E]]%%", -FLT_MAX, p->max); else if (p->hasmax) fprintf(fd, "%%[[%E:%E)]%%", -FLT_MAX, p->max); else fprintf(fd, "%%[[FLOAT]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%g", p->min * (1 + (p->incmin == False)/1000)); else if (p->hasmax && p->max > 0) fprintf(fd, "%g", p->max * (1 - (p->incmax == False)/1000)); else if (p->hasmin && p->min < 0) fprintf(fd, "%g", p->min * (1 - (p->incmin == False)/1000)); else if (p->hasmax && p->max < 0) fprintf(fd, "%g", p->max * (1 + (p->incmax == False)/1000)); else fprintf(fd, "0.0"); } break; case Tdouble: case Tldouble: if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax && p->incmin && p->incmax) fprintf(fd, "%%[[%lE:%lE]]%%", p->min, p->max); else if (p->hasmin && p->hasmax && p->incmin) fprintf(fd, "%%[[%lE:%lE)]%%", p->min, p->max); else if (p->hasmin && p->hasmax && p->incmax) fprintf(fd, "%%[(%lE:%lE]]%%", p->min, p->max); else if (p->hasmin && p->hasmax) fprintf(fd, "%%[(%lE:%lE)]%%", p->min, p->max); else if (p->hasmin && p->incmin) fprintf(fd, "%%[[%lE:%lE]]%%", p->min, DBL_MAX); else if (p->hasmin) fprintf(fd, "%%[(%lE:%lE]]%%", p->min, DBL_MAX); else if (p->hasmax && p->incmax) fprintf(fd, "%%[[%lE:%lE]]%%", -DBL_MAX, p->max); else if (p->hasmax) fprintf(fd, "%%[[%lE:%lE)]%%", -DBL_MAX, p->max); else fprintf(fd, "%%[[DOUBLE]]%%"); } else { if (p->hasmin && p->min > 0) fprintf(fd, "%g", p->min * (1 + (p->incmin == False)/1000)); else if (p->hasmax && p->max > 0) fprintf(fd, "%g", p->max * (1 - (p->incmax == False)/1000)); else if (p->hasmin && p->min < 0) fprintf(fd, "%g", p->min * (1 - (p->incmin == False)/1000)); else if (p->hasmax && p->max < 0) fprintf(fd, "%g", p->max * (1 + (p->incmax == False)/1000)); else fprintf(fd, "0.0"); } break; case Ttime: if (gflag) { if (opt) fprintf(fd, "???"); fprintf(fd, "%%[[DATETIME]]%%"); } else { char tmp[256]; time_t T = time(NULL); strftime(tmp, 256, "%Y-%m-%dT%H:%M:%SZ", gmtime(&T)); fprintf(fd, "%s", tmp); } break; case Tenum: case Tenumsc: if (gflag) { if (opt) fprintf(fd, "???"); if (p->ref) { fprintf(fd, "%%[["); for (q = ((Table*)p->ref)->list; q; q = q->next) { fprintf(fd, "%s", ns_remove2(q->sym->name, c_ident(p))); if (q->next) fprintf(fd, "]["); } fprintf(fd, "]]%%"); } } else { if (p->ref && (q = ((Table*)p->ref)->list)) fprintf(fd, "%s", ns_remove2(q->sym->name, c_ident(p))); else fprintf(fd, "0"); } break; case Tpointer: case Treference: case Trvalueref: case Ttemplate: if (is_string(p) || is_wstring(p)) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[TEXT[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[TEXT[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[TEXT[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[TEXT]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } } else gen_val(fd, n, (Tnode*)p->ref, nse, nsa, encoding, opt); break; case Tclass: case Tstruct: nse = ns_qualifiedElement(p); nsa = ns_qualifiedAttribute(p); if (is_stdstr(p)) { if (gflag) { if (opt) fprintf(fd, "???"); if (p->hasmin && p->hasmax) fprintf(fd, "%%[[TEXT[%ld:%ld]]]%%", (long)p->min + (p->incmin == False), (long)p->max - (p->incmax == False)); else if (p->hasmin) fprintf(fd, "%%[[TEXT[%ld:2147483647]]]%%", (long)p->min + (p->incmin == False)); else if (p->hasmax) fprintf(fd, "%%[[TEXT[0:%ld]]]%%", (long)p->max - (p->incmax == False)); else fprintf(fd, "%%[[TEXT]]%%"); } else { if (p->min > 0 && p->min < 10000) for (i = 0; i < (int)p->min; i++) fprintf(fd, "X"); } } else if (is_primclass(p)) { Table *t = (Table*)p->ref; while (t) { Entry *r = entry(classtable, t->sym); r = t->list; while (r && !is_item(r)) r = r->next; if (r) { gen_val(fd, n, r->info.typ, nse, nsa, encoding, opt); return; } t = t->prev; if (t) nse = ns_qualifiedElementName(t->sym->name); } } else if (!is_dynamic_array(p) && p->ref) { int i = 0; Table *t; if (gflag && opt) fprintf(fd, "???"); fprintf(fd, "\n"); for (t = (Table*)p->ref; t; t = t->prev) i++; for (; i > 0; i--) { int j; const char *nse1; t = (Table*)p->ref; for (j = 0; j < i-1; j++) t = t->prev; if (t == (Table*)p->ref) nse1 = nse; else nse1 = ns_qualifiedElementName(t->sym->name); for (q = t->list; q; q = q->next) { if (is_sequence(q)) { if (gflag) { if (q->info.minOccurs == 0) fprintf(fd, "%*s<__REPEAT min=\"" SOAP_LONG_FORMAT "\">\n", n+1, "", q->info.minOccurs); gen_field(fd, n, q, nse1, nsa, encoding, 0, 0); if (q->info.minOccurs == 0) fprintf(fd, "%*s\n", n+1, ""); } else { gen_field(fd, n, q, nse1, nsa, encoding, 0, 0); } } else if (is_repetition(q)) { if (gflag) { fprintf(fd, "%*s<__REPEAT min=\"" SOAP_LONG_FORMAT "\"", n+1, "", q->info.minOccurs); if (q->info.maxOccurs > 1) fprintf(fd, " max=\"" SOAP_LONG_FORMAT "\"", q->info.maxOccurs); else fprintf(fd, " max=\"unbounded\""); fprintf(fd, ">\n"); gen_field(fd, n+1, q->next, nse1, nsa, encoding, 0, 0); fprintf(fd, "%*s\n", n+1, ""); } else { i = q->info.minOccurs; if (i < 2) i = 2; if (q->info.maxOccurs > 1 && i > q->info.maxOccurs) i = q->info.maxOccurs; do gen_field(fd, n+1, q->next, nse1, nsa, encoding, 0, 0); while (--i); } q = q->next; } else gen_field(fd, n+1, q, nse1, nsa, encoding, q->info.minOccurs == 0, 0); } } fprintf(fd, "%*s", n, ""); } break; case Tunion: if ((Table*)p->ref && ((Table*)p->ref)->list) { if (gflag) { fprintf(fd, "%*s<__SELECT>\n", n, ""); for (q = ((Table*)p->ref)->list; q; q = q->next) gen_field(fd, n, q, nse, nsa, encoding, 0, 0); fprintf(fd, "%*s\n", n, ""); } else { gen_field(fd, n, ((Table*)p->ref)->list, nse, nsa, encoding, 0, 0); } } break; default: break; } } } void gen_header(FILE *fd, const char *method, int response, const char *encoding) { if (custom_header) { Service *sp; Method *m = NULL; Entry *q; Table *r; q = entry(classtable, lookup("SOAP_ENV__Header")); if (yflag) fprintf(fd, " \n", c_type(q->info.typ)); fprintf(fd, " \n"); if (q) { r = (Table*)q->info.typ->ref; if (r) { for (q = r->list; q; q = q->next) { if (!is_transient(q->info.typ) && !(q->info.sto & Sattribute) && q->info.typ->type != Tfun) { for (sp = services; sp; sp = sp->next) for (m = sp->list; m; m = m->next) if (is_eq(m->name, method) && (!strcmp(m->part, q->sym->name) || is_eq_nons(m->part, q->sym->name)) && ((!response && (m->mess&HDRIN)) || (response && (m->mess&HDROUT)))) { gen_field(fd, 2, q, NULL, NULL, encoding, q->info.minOccurs == 0, 0); break; } } } fprintf(fd, " \n"); } } } } FILE * gen_env(const char *buf, const char *method, int response, const char *encoding, int soap) { char tmp[1024]; FILE *fd; strcpy(tmp, buf); if (!soap) strcat(tmp, "REST."); #ifdef __vms if (!response) { sprintf(strrchr(tmp, '.'), "_%s_req.xml", method); fprintf(fmsg, "Saving %s sample SOAP/XML request\n", tmp); } else { sprintf(strrchr(tmp, '.'), "_%s_res.xml", method); fprintf(fmsg, "Saving %s sample SOAP/XML response\n", tmp); } #else strcpy(strrchr(tmp, '.')+1, method); if (!response) { strcat(tmp, ".req.xml"); fprintf(fmsg, "Saving %s sample SOAP/XML request\n", tmp); } else { strcat(tmp, ".res.xml"); fprintf(fmsg, "Saving %s sample SOAP/XML response\n", tmp); } #endif fd = fopen(tmp, "w"); if (!fd) execerror("Cannot write XML file"); fprintf(fd, "\n"); if (soap && soap_version >= 0) { fprintf(fd, "\n"); gen_header(fd, method, response, encoding); fprintf(fd, " \n"); } return fd; } void gen_xmlns(FILE *fd, int soap) { Symbol *s; Service *sp = NULL; for (s = nslist; s; s = s->next) { for (sp = services; sp; sp = sp->next) if (!tagcmp(sp->ns, s->name) && sp->URI) break; if (sp) fprintf(fd, "\n xmlns:%s=\"%s\"", ns_convert(s->name), sp->URI); else if (!strcmp(s->name, "SOAP-ENV")) { if (soap && soap_version >= 0) fprintf(fd, "\n xmlns:SOAP-ENV=\"%s\"", envURI); } else if (!strcmp(s->name, "SOAP-ENC")) { if (soap && soap_version >= 0) fprintf(fd, "\n xmlns:SOAP-ENC=\"%s\"", encURI); } else if (!strcmp(s->name, "xsi")) fprintf(fd, "\n xmlns:xsi=\"%s\"", xsiURI); else if (!strcmp(s->name, "xsd")) fprintf(fd, "\n xmlns:xsd=\"%s\"", xsdURI); else fprintf(fd, "\n xmlns:%s=\"%s/%s.xsd\"", ns_convert(s->name), tmpURI, ns_convert(s->name)); } } char * emalloc(size_t n) { char *p; if ((p = (char*)malloc(n)) == NULL) execerror("out of memory"); return p; } void soap_serve(Table *table) { if (!Sflag) { Entry *method; banner(fheader, "Client-Side Call Stub Functions"); if (rflag) { Service *sp; fprintf(freport, "## Web Client Operations {#doc-client}\n\n"); for (sp = services; sp; sp = sp->next) { if (sp->documentation) { gen_text(freport, sp->documentation); fprintf(freport, "\n\n"); } } } for (method = table->list; method; method = method->next) { if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && !is_imported(method->info.typ)) { if (rflag) gen_call_proto(freport, method); gen_call_proto(fheader, method); gen_call_method(fclient, method, NULL); } } } if (!Cflag) { Entry *method, *catch_method = NULL; const char *catch_action = NULL; if (rflag) { Service *sp; fprintf(freport, "## Web Server Operations {#doc-server}\n\n"); for (sp = services; sp; sp = sp->next) { if (sp->documentation) { gen_text(freport, sp->documentation); fprintf(freport, "\n\n"); } } } banner(fheader, "Server-Side Operations"); if (!cflag && !namespaceid) fprintf(fserver, "extern \"C\" "); fprintf(fserver, "SOAP_FMAC5 int SOAP_FMAC6 %s_serve(struct soap *soap)", nflag?prefix:"soap"); fprintf(fserver, "\n{\n#ifndef WITH_FASTCGI\n\tsoap->keep_alive = soap->max_keep_alive + 1;\n#endif\n\tdo\n\t{"); fprintf(fserver, "\n#ifndef WITH_FASTCGI\n\t\tif (soap->keep_alive > 0 && soap->max_keep_alive > 0)\n\t\t\tsoap->keep_alive--;\n#endif"); fprintf(fserver, "\n\t\tif (soap_begin_serve(soap))\n\t\t{\tif (soap->error >= SOAP_STOP)\n\t\t\t\tcontinue;\n\t\t\treturn soap->error;\n\t\t}"); if (namespaceid) fprintf(fserver, "\n\t\tif ((%s::%s_serve_request(soap) || (soap->fserveloop && soap->fserveloop(soap))) && soap->error && soap->error < SOAP_STOP)\n\t\t{\n#ifdef WITH_FASTCGI\n\t\t\tsoap_send_fault(soap);\n#else\n\t\t\treturn soap_send_fault(soap);\n#endif\n\t\t}", namespaceid, nflag?prefix:"soap"); else fprintf(fserver, "\n\t\tif ((%s_serve_request(soap) || (soap->fserveloop && soap->fserveloop(soap))) && soap->error && soap->error < SOAP_STOP)\n\t\t{\n#ifdef WITH_FASTCGI\n\t\t\tsoap_send_fault(soap);\n#else\n\t\t\treturn soap_send_fault(soap);\n#endif\n\t\t}", nflag?prefix:"soap"); fprintf(fserver, "\n#ifdef WITH_FASTCGI\n\t\tsoap_destroy(soap);\n\t\tsoap_end(soap);\n\t} while (1);\n#else\n\t} while (soap->keep_alive);\n#endif"); fprintf(fserver, "\n\treturn SOAP_OK;"); fprintf(fserver, "\n}"); fprintf(fserver, "\n\n#ifndef WITH_NOSERVEREQUEST\n"); if (!cflag && !namespaceid) fprintf(fserver, "extern \"C\" "); fprintf(fserver, "SOAP_FMAC5 int SOAP_FMAC6 %s_serve_request(struct soap *soap)\n{", nflag?prefix:"soap"); if (sflag) fprintf(fserver, "\n\tsoap->mode |= SOAP_XML_STRICT;"); fprintf(fserver, "\n\tsoap_peek_element(soap);"); for (method = table->list; method; method = method->next) { const char *action = NULL; if (method->info.typ->type == Tfun && !(method->info.sto & Sextern)) { if (aflag) { Service *sp; for (sp = services; sp; sp = sp->next) { if (has_ns_eq(sp->ns, method->sym->name)) { Method *m; for (m = sp->list; m; m = m->next) { if (is_eq_nons(m->name, method->sym->name)) { if (m->mess == ACTION || m->mess == REQUEST_ACTION) action = m->part; } } } } } if (is_invisible(method->sym->name)) { Entry *param = entry(classtable, method->sym); if (param) param = ((Table*)param->info.typ->ref)->list; if (action) { if (*action == '"') { fprintf(fserver, "\n\tif ("); if (param && !Aflag) fprintf(fserver, "(soap->action == NULL && !soap_match_tag(soap, soap->tag, \"%s\")) || ", ns_convert(param->sym->name)); else { catch_method = method; catch_action = action; } fprintf(fserver, "(soap->action && !strcmp(soap->action, %s))", action); } else { fprintf(fserver, "\n\tif ("); if (param && !Aflag) fprintf(fserver, "(soap->action == NULL && !soap_match_tag(soap, soap->tag, \"%s\")) || ", ns_convert(param->sym->name)); else { catch_method = method; catch_action = action; } fprintf(fserver, "(soap->action && !strcmp(soap->action, \"%s\"))", action); } fprintf(fserver, ")\n\t\treturn soap_serve_%s(soap);", ident(method->sym->name)); } else { if (Aflag) compliancewarn("Option -A requires a SOAPAction where none is defined"); if (param) { fprintf(fserver, "\n\tif (!soap_match_tag(soap, soap->tag, \"%s\")", ns_convert(param->sym->name)); fprintf(fserver, ")\n\t\treturn soap_serve_%s(soap);", ident(method->sym->name)); } else { catch_method = method; catch_action = action; } } } else { if (action) { if (*action == '"') { fprintf(fserver, "\n\tif ("); if (!Aflag) fprintf(fserver, "(soap->action == NULL && !soap_match_tag(soap, soap->tag, \"%s\")) || ", ns_convert(method->sym->name)); fprintf(fserver, "(soap->action && !strcmp(soap->action, %s))", action); } else { fprintf(fserver, "\n\tif ("); if (!Aflag) fprintf(fserver, "(soap->action == NULL && !soap_match_tag(soap, soap->tag, \"%s\")) || ", ns_convert(method->sym->name)); fprintf(fserver, "(soap->action && !strcmp(soap->action, \"%s\"))", action); } } else { if (Aflag) compliancewarn("Option -A requires a SOAPAction where none is defined"); fprintf(fserver, "\n\tif (!soap_match_tag(soap, soap->tag, \"%s\")", ns_convert(method->sym->name)); } fprintf(fserver, ")\n\t\treturn soap_serve_%s(soap);", ident(method->sym->name)); } } } if (catch_method) { if (Aflag && catch_action) { if (*catch_action == '"') { fprintf(fserver, "\n\tif ("); fprintf(fserver, "(soap->action && !strcmp(soap->action, %s))", catch_action); fprintf(fserver, ")\n\t\treturn soap_serve_%s(soap);", ident(catch_method->sym->name)); } else { fprintf(fserver, "\n\tif ("); fprintf(fserver, "(soap->action && !strcmp(soap->action, \"%s\"))", catch_action); fprintf(fserver, ")\n\t\treturn soap_serve_%s(soap);", ident(catch_method->sym->name)); } fprintf(fserver, "\n\treturn soap->error = SOAP_NO_METHOD;"); } else fprintf(fserver, "\n\treturn soap_serve_%s(soap);", ident(catch_method->sym->name)); } else fprintf(fserver, "\n\treturn soap->error = SOAP_NO_METHOD;"); fprintf(fserver, "\n}\n#endif"); if (rflag) { fprintf(freport, "Use the service request dispatcher that is auto-generated in [%s](%s) to accept and process service requests:\n\n", soapServer, pathsoapServer); fprintf(freport, " SOAP_FMAC5 int SOAP_FMAC6 %s_serve(struct soap *soap);\n\n", nflag?prefix:"soap"); fprintf(freport, "This function serves requests by calling one of the service operations listed further below that matches the request. Returns `SOAP_OK` or an error code. This function supports CGI by accepting a request on stdin and sending the response to stdout, and FastCGI. To serve over HTTP(S), use the following functions to establish a connection:\n\n"); fprintf(freport, "- `SOAP_SOCKET soap_bind(struct soap *soap, const char *host, int port, int backlog)` returns master socket bound to port (and restricted to host name if not NULL) or `SOAP_INVALID_SOCKET`\n"); fprintf(freport, "- `SOAP_SOCKET soap_accept(struct soap *soap)` accepts connection and returns socket when accepted, or `SOAP_INVALID_SOCKET`\n"); fprintf(freport, "- `int soap_ssl_accept(struct soap *soap)` performs SSL handshake and returns `SOAP_OK` when successful or an error code, call this function after `soap_accept()` to accept SSL/TLS connection\n\n"); } for (method = table->list; method; method = method->next) { if (method->info.typ->type == Tfun && !(method->info.sto & Sextern)) { if (rflag) generate_proto(freport, table, method); generate_proto(fheader, table, method); } } if (rflag) fprintf(freport, "\n\n"); banner(fheader, "Server-Side Skeletons to Invoke Service Operations"); fprintf(fheader, "\n"); if (!cflag && !namespaceid) fprintf(fheader, "extern \"C\" "); fprintf(fheader, "SOAP_FMAC5 int SOAP_FMAC6 %s_serve(struct soap*);", nflag?prefix:"soap"); fprintf(fheader, "\n\n"); if (!cflag && !namespaceid) fprintf(fheader, "extern \"C\" "); fprintf(fheader, "SOAP_FMAC5 int SOAP_FMAC6 %s_serve_request(struct soap*);", nflag?prefix:"soap"); for (method = table->list; method; method = method->next) if (method->info.typ->type == Tfun && !(method->info.sto & Sextern) && !is_imported(method->info.typ)) gen_serve_method(fserver, table, method, NULL); } } void generate_proto(FILE *fd, Table *table, Entry *param) { Entry *q, *pout; Table *output; Entry *result; result = (Entry*)param->info.typ->ref; q = entry(table, param->sym); if (q) pout = (Entry*)q->info.typ->ref; else { fprintf(stderr, "Internal error: no table entry\n"); return; } q = entry(classtable, param->sym); output = (Table*)q->info.typ->ref; if (fd == freport) gen_report_operation(NULL, param, 1); else fprintf(fd, "\n /** Web service operation '%s' (returns SOAP_OK or error code) */", ident(param->sym->name)); fprintf(fd, "\n SOAP_FMAC5 int SOAP_FMAC6 %s(struct soap*", ident(param->sym->name)); gen_params(fd, output, pout, 1); fprintf(fd, ";"); if (fd == freport) { fprintf(freport, "\n\nwhere:\n\n- `struct soap *soap` is the context\n"); gen_report_params(q, result, 1); if (!is_transient(result->info.typ)) fprintf(freport, "This service function should be implemented as part of the service back-end code and return `SOAP_OK` and set the last parameter `%s` to the result, or return an error code\n\n", ident(result->sym->name)); else fprintf(freport, "This service function should be implemented as part of the service back-end code and call `int soap_send_empty_response(struct soap *soap, int httpcode)` with a HTTP status/error code (200 to 999) to return, when communicating over HTTP to return a HTTP header.\n\n"); gen_report_hr(); } } int tagcmp(const char *s, const char *t) { size_t i, n; if (!s) return -1; if (!t) return 1; n = strlen(s); for (i = 0; i < n; i++) { int c = t[i]; if (c == '_' && s[i] != '_') c = '-'; if (s[i] > c) return 1; if (s[i] < c) return -1; } return -(t[i] != 0); } int tagncmp(const char *s, const char *t, size_t n) { size_t i; if (!s) return -1; if (!t) return 1; for (i = 0; i < n; i++) { int c = t[i]; if (c == '_' && s[i] != '_') c = '-'; if (s[i] > c) return 1; if (s[i] < c) return -1; } return 0; } int property(Tnode *p) { if (is_primitive(p)) return 5; /* collapse white space in primitive type values */ return p->property; } void property_pattern(Tnode *p, const char *name) { p->property = 1; p->pattern = NULL; if (is_eq(name, "xsd__QName") || is_eq(name, "QName")) { p->property = 2; } else if (is_eq(name, "xsd__normalizedString") || is_eq(name, "xsd__anyURI")) { p->property = 4; } else if (is_eq(name, "xsd__NOTATION") || is_eq(name, "xsd__token")) { p->property = 5; } else if (is_eq(name, "xsd__language")) { p->property = 5; p->pattern = "([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*"; } else if (is_eq(name, "xsd__Name")) { p->property = 5; p->pattern = "\\i\\c*"; } else if (is_eq(name, "xsd__NMTOKEN")) { p->property = 5; p->pattern = "\\c+"; } else if (is_eq(name, "xsd__NMTOKENS")) { p->property = 5; p->pattern = "(\\c+[ ])*\\c+"; } else if (is_eq(name, "xsd__ENTITY") || is_eq(name, "xsd__ID") || is_eq(name, "xsd__IDREF") || is_eq(name, "xsd__NCName")) { p->property = 5; p->pattern = "[\\i-[:]][\\c-[:]]*"; } else if (is_eq(name, "xsd__ENTITIES") || is_eq(name, "xsd__IDREFS")) { p->property = 5; p->pattern = "([\\i-[:]][\\c-[:]]*[ ])*[\\i-[:]][\\c-[:]]*"; } else if (is_eq(name, "xsd__date")) { p->property = 5; p->pattern = "[-+]?\\d{4,}-\\d{2}-\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__dateTime")) { p->property = 5; p->pattern = "[-+]?\\d{4,}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__decimal")) { p->property = 5; p->pattern = "[-+]?(\\d+|\\d*\\.\\d*)"; } else if (is_eq(name, "xsd__duration")) { p->property = 5; p->pattern = "[-+]?P(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+(\\.\\d*)?S)?)?"; } else if (is_eq(name, "xsd__gDay")) { p->property = 5; p->pattern = "---\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__gMonth")) { p->property = 5; p->pattern = "--\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__gMonthDay")) { p->property = 5; p->pattern = "--\\d{2}-\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__gYear")) { p->property = 5; p->pattern = "([-+]?\\d{4,})(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__gYearMonth")) { p->property = 5; p->pattern = "([-+]?\\d{4,})-\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } else if (is_eq(name, "xsd__integer")) { p->property = 5; p->pattern = "[-+]?\\d+"; } else if (is_eq(name, "xsd__negativeInteger")) { p->property = 5; p->pattern = "-\\d*[1-9]\\d*"; } else if (is_eq(name, "xsd__nonNegativeInteger")) { p->property = 5; p->pattern = "\\+?\\d+"; } else if (is_eq(name, "xsd__nonPositiveInteger")) { p->property = 5; p->pattern = "-\\d+|\\+?0+"; } else if (is_eq(name, "xsd__positiveInteger")) { p->property = 5; p->pattern = "\\+?\\d*[1-9]\\d*"; } else if (is_eq(name, "xsd__time")) { p->property = 5; p->pattern = "\\d{2}:\\d{2}:\\d{2}(Z|[-+]\\d{2}:\\d{2})?"; } } int is_qname(Tnode *p) { if (!is_string(p) && !is_wstring(p)) return 0; if (p->property == 2) return 1; if (p->sym && (is_eq(p->sym->name, "xsd__QName") || is_eq(p->sym->name, "QName"))) return 1; return p->id && (is_eq(p->id->name, "xsd__QName") || is_eq(p->id->name, "QName")); } int is_stdqname(Tnode *p) { if (!is_stdstring(p) && !is_stdwstring(p)) return 0; if (p->property == 2) return 1; if (p->sym && (is_eq(p->sym->name, "xsd__QName") || is_eq(p->sym->name, "QName"))) return 1; return p->id && (is_eq(p->id->name, "xsd__QName") || is_eq(p->id->name, "QName")); } int is_XML(Tnode *p) { if (is_synonym(p)) return (is_string(p) || is_wstring(p)) && is_eq(p->synonym->name, "XML"); return (p->sym && (is_string(p) || is_wstring(p)) && is_eq(p->sym->name, "XML")) || ((p->type == Tpointer || p->type == Treference || p->type == Trvalueref) && is_XML((Tnode*)p->ref)); } int is_stdXML(Tnode *p) { if (is_synonym(p)) return (is_stdstring(p) || is_stdwstring(p)) && is_eq(p->synonym->name, "XML"); return p->sym && (is_stdstring(p) || is_stdwstring(p)) && is_eq(p->sym->name, "XML"); } int is_response(Tnode *p) { return (p->type == Tpointer || p->type == Treference || p->type == Trvalueref) && p->ref && has_ns((Tnode*)p->ref) && ((((Tnode*)p->ref)->type == Tstruct || ((Tnode*)p->ref)->type == Tclass) && !is_external((Tnode*)p->ref) && !is_primclass((Tnode*)p->ref) && !is_dynamic_array((Tnode*)p->ref) && !is_stdstring((Tnode*)p->ref) && !is_stdwstring((Tnode*)p->ref)); } Entry* get_response(Tnode *p) { if (p->type == Tfun) return p->response; return 0; } int is_unmatched(Symbol *sym) { const char *s = sym->name; if (*s == ':') s++; return s[0] == '_' && s[1] != '_' && strncmp(s, "_DOT", 4) && strncmp(s, "_USCORE", 7) && (strncmp(s, "_x", 2) || !isxdigit(s[2]) || !isxdigit(s[3]) || !isxdigit(s[4]) || !isxdigit(s[5])); } int is_invisible(const char *name) { return name[0] == '-' || (name[0] == '_' && name[1] == '_' && strncmp(name, "__ptr", 5)); } int is_invisible_empty(Tnode *p) { if (p->type == Tstruct || p->type == Tclass) if (is_invisible(p->id->name)) if (!p->ref || !((Table*)p->ref)->list) return 1; return 0; } int is_element(Tnode *typ) { if (is_XML(typ) || is_stdXML(typ) || is_qname(typ) || is_stdqname(typ)) return 0; if (typ->sym) return is_unmatched(typ->sym); if (typ->type == Tstruct || typ->type == Tclass) return is_unmatched(typ->id); return 0; } int is_untyped(Tnode *typ) { Tnode *p; if (typ->sym) return is_unmatched(typ->sym); if (typ->type == Tpointer || typ->type == Treference || typ->type == Trvalueref || typ->type == Tarray) return is_untyped((Tnode*)typ->ref); if (typ->type == Tstruct || typ->type == Tclass) { if (is_dynamic_array(typ) && !has_ns(typ) && !is_binary(typ)) { p = (Tnode*)((Table*)typ->ref)->list->info.typ->ref; return is_untyped(p); } else return is_unmatched(typ->id); } return 0; } int is_primclass(Tnode *typ) { Table *t; if (typ->type == Tstruct || typ->type == Tclass) { if (!is_dynamic_array(typ)) { t = (Table*)typ->ref; while (t) { Entry *p = t->list; while (p && !is_item(p)) p = p->next; if (p) break; t = t->prev; } if (!t) return 0; t = (Table*)typ->ref; while (t) { Entry *p; for (p = t->list; p; p = p->next) if (!is_item(p) && p->info.typ->type != Tfun && !is_transient(p->info.typ) && p->info.sto != Sattribute && p->info.sto != Sprivate && p->info.sto != Sprotected) return 0; t = t->prev; } return 1; } } else if (typ->type == Tpointer || typ->type == Treference || typ->type == Trvalueref) return is_primclass((Tnode*)typ->ref); return 0; } int is_mask(Tnode *typ) { return ((typ->type == Tenum || typ->type == Tenumsc) && typ->width == 9); } int is_void(Tnode *typ) { if (!typ) return 1; if (typ->type == Tvoid) return 1; if (typ->type == Tpointer || typ->type == Treference || typ->type == Trvalueref || typ->type == Tarray || typ->type == Ttemplate) return is_void((Tnode*)typ->ref); return 0; } int is_transient(Tnode *typ) { if (!typ) return 1; if (typ->type == Tstruct && typ->id == lookup("soap")) return 1; if (is_external(typ) || is_volatile(typ)) return 0; if (typ->transient > 0) return 1; if (is_wstring(typ)) /* wchar_t* is serializable but wchar_t is transient */ return 0; switch (typ->type) { case Tpointer: case Treference: case Trvalueref: case Tarray: case Ttemplate: return is_transient((Tnode*)typ->ref); case Tnone: case Tvoid: case Twchar: /* wchar_t is transient */ case Tsize: /* size_t is transient */ return 1; default: break; } return 0; } int is_imported(Tnode* typ) { return typ->imported != NULL; } int is_external(Tnode* typ) { return typ->transient == -1 || typ->transient == -3; } int is_anyType(Tnode* typ) { if (!typ) return 0; if (typ->type == Tpointer || typ->type == Ttemplate) return is_anyType((Tnode*)typ->ref); if (is_external(typ) && typ->type == Tstruct && !strcmp(typ->id->name, "soap_dom_element")) return is_anyType_flag = 1; return 0; } int is_anyAttribute(Tnode* typ) { if (!typ) return 0; if (typ->type == Tpointer || typ->type == Ttemplate) return is_anyAttribute((Tnode*)typ->ref); return is_external(typ) && typ->type == Tstruct && !strcmp(typ->id->name, "soap_dom_attribute"); } int is_volatile(Tnode* typ) { return typ->transient == -2 || typ->transient == -3; } int is_smart(Tnode *p) { return p->type == Ttemplate && p->ref && is_volatile(p); } int is_smart_shared(Tnode *p) { if (is_smart(p)) { const char *s = strstr(p->id->name, "::"); if (s) return !strcmp(s, "::shared_ptr"); /* support shared_ptr STL and Boost */ } return 0; } const char * make_shared(Tnode *p) { const char *s = ""; /* should produce make_shared only if is_smart_shared(p) is true */ if (is_smart_shared(p)) { char *t; s = strstr(p->id->name, "::"); t = emalloc(s - p->id->name + 14); strncpy(t, p->id->name, s - p->id->name + 2); strcpy(t + (s - p->id->name) + 2, "make_shared"); s = t; } return s; } int is_container(Tnode *p) { if (p->type == Tpointer) return is_container((Tnode*)p->ref); return p->type == Ttemplate && !is_smart(p); } int is_template(Tnode *p) { if (p->type == Tpointer) return is_template((Tnode*)p->ref); return p->type == Ttemplate; } int is_repetition(Entry *p) { if (p) return p->next && p->next->info.typ->type == Tpointer && ((Tnode*)p->next->info.typ->ref)->type != Tvoid && (p->info.typ->type == Tint || p->info.typ->type == Tsize) && ((p->info.sto & Sspecial) || !strncmp(p->sym->name, "__size", 6)); return 0; } int is_item(Entry *p) { if (p) return !strcmp(p->sym->name, "__item"); return 0; } int is_self(Entry *p) { if (p) return !strcmp(p->sym->name, "__self"); return 0; } int is_choice(Entry *p) { if (p) if (p->next && p->next->info.typ->type == Tunion && p->info.typ->type == Tint && ((p->info.sto & Sspecial) || !strncmp(p->sym->name, "__union", 7))) return 1; return 0; } int required_choice(Tnode *typ) { if (typ->type == Tunion && ((Table*)typ->ref)) { Entry *p; for (p = ((Table*)typ->ref)->list; p; p = p->next) { if (!(p->info.sto & (Sconst | Sprivate | Sprotected)) && !is_transient(p->info.typ) && (!(p->info.sto & Sattribute)) && !is_repetition(p) && !is_anytype(p)) { if (p->info.minOccurs <= 0) return 0; } } } return -1; } int is_sequence(Entry *p) { if (p) { Tnode *q = p->info.typ; if (q->type == Tpointer) q = (Tnode*)q->ref; if ((q->type == Tstruct || q->type == Tclass) && is_invisible(p->sym->name) && is_invisible(q->id->name) && !is_transient(q)) return 1; } return 0; } int is_anytype(Entry *p) { if (p) { if (p->next && p->next->info.typ->type == Tpointer && ((Tnode*)p->next->info.typ->ref)->type == Tvoid && p->info.typ->type == Tint && ((p->info.sto & Sspecial) || !strncmp(p->sym->name, "__type", 6))) { is_anytype_flag = 1; return 1; } } return 0; } int is_keyword(const char *name) { Symbol *s = lookup(name); if (s) return s->token != ID; return 0; } int has_ptr(Tnode *typ) { Tnode *p; if (typ->type == Tpointer || typ->type == Treference || typ->type == Trvalueref) return 0; for (p = Tptr[Tpointer]; p; p = p->next) if ((Tnode*)p->ref == typ && p->transient != 1) return 1; return 0; } int has_detail_string(void) { Entry *p = entry(classtable, lookup("SOAP_ENV__Fault")); if (p && p->info.typ->ref && (p->info.typ->type == Tstruct || p->info.typ->type == Tclass)) { Entry *e = entry((Table*)p->info.typ->ref, lookup("detail")); if (e && e->info.typ->ref && e->info.typ->type == Tpointer && ((Tnode*)e->info.typ->ref)->type == Tstruct) { Entry *e2 = entry((Table*)((Tnode*)e->info.typ->ref)->ref, lookup("__any")); return e2 && is_string(e2->info.typ); } } return 0; } int has_Detail_string(void) { Entry *p = entry(classtable, lookup("SOAP_ENV__Fault")); if (p && p->info.typ->ref && (p->info.typ->type == Tstruct || p->info.typ->type == Tclass)) { Entry *e = entry((Table*)p->info.typ->ref, lookup("SOAP_ENV__Detail")); if (e && e->info.typ->ref && e->info.typ->type == Tpointer && ((Tnode*)e->info.typ->ref)->type == Tstruct) { Entry *e2 = entry((Table*)((Tnode*)e->info.typ->ref)->ref, lookup("__any")); return e2 && is_string(e2->info.typ); } } return 0; } int has_class(Tnode *typ) { Entry *p; if (!cflag && typ->type == Tstruct && typ->ref) { for (p = ((Table*)typ->ref)->list; p; p = p->next) { if (p->info.sto & Stypedef) continue; if (p->info.typ->type == Tclass || p->info.typ->type == Ttemplate) return 1; if (p->info.typ->type == Tstruct && has_class(p->info.typ)) return 1; } } return 0; } int has_external(Tnode *typ) { Entry *p; if ((typ->type == Tstruct || typ->type == Tclass) && typ->ref) { for (p = ((Table*)typ->ref)->list; p; p = p->next) { if (p->info.typ->type == Tstruct || p->info.typ->type == Tclass) { if (is_external(p->info.typ) || has_external(p->info.typ)) return 1; } } } return 0; } int has_volatile(Tnode *typ) { Entry *p; if ((typ->type == Tstruct || typ->type == Tclass) && typ->ref) { for (p = ((Table*)typ->ref)->list; p; p = p->next) { if (p->info.typ->type == Tstruct || p->info.typ->type == Tclass) { if (is_volatile(p->info.typ) || has_volatile(p->info.typ)) if (!is_stdstr(p->info.typ)) return 1; } } } return 0; } int has_ns(Tnode *typ) { if (typ->type == Tstruct || typ->type == Tclass || typ->type == Tenum || typ->type == Tenumsc) return has_ns_eq(NULL, typ->id->name); return 0; } int has_ns_t(Tnode *typ) { if (typ->sym) return has_ns_eq(NULL, typ->sym->name); return has_ns(typ); } /* needs_lang adds xml:lang attribute to matching struct/class member name we should use an annotation for soapcpp2's input this in the future instead of a hard-coded member name */ void needs_lang(Entry *e) { if (!strcmp(e->sym->name, "SOAP_ENV__Text")) fprintf(fout, "\n\tif (soap->lang)\n\t\tsoap_set_attr(soap, \"xml:lang\", soap->lang, 1);"); } int is_eq_nons(const char *s, const char *t) { size_t n, m; const char *r; while (*s == '_' || *s == ':') s++; while (*t == '_' || *t == ':') t++; if (!*s || !*t) return 0; r = strstr(t, "__"); if (r) t = r + 2; n = strlen(s) - 1; m = strlen(t) - 1; #ifdef SOAP_OLD_DIRECTIVE_NAME_MATCHING while (n > 0 && s[n] == '_') n--; while (m > 0 && t[m] == '_') m--; #endif if (n != m) return 0; return !strncmp(s, t, n + 1); } int is_eq(const char *s, const char *t) { size_t n, m; while (*s == '_' || *s == ':') s++; while (*t == '_' || *t == ':') t++; if (!*s || !*t) return 0; for (n = strlen(s) - 1; n && s[n] == '_'; n--) ; for (m = strlen(t) - 1; m && t[m] == '_'; m--) ; if (n != m) return 0; return !strncmp(s, t, n + 1); } int has_ns_eq(const char *ns, const char *s) { size_t n; while (*s == '_' || *s == ':') s++; if (!ns) { const char *t = *s ? strstr(s + 1, "__") : NULL; if (!t || (t[2] == 'x' && isxdigit(t[3]) && isxdigit(t[4]) && isxdigit(t[5]) && isxdigit(t[6])) || !strncmp(t+2, "DOT", 3) || !strncmp(t+2, "USCORE", 6)) { t = strchr(s, ':'); if (t && t[1] == ':') t = NULL; } return t && t[1] && t[2] && ( t[2] != '_' || (t[3] == 'x' && isxdigit(t[3]) && isxdigit(t[4]) && isxdigit(t[5]) && isxdigit(t[6])) || !strncmp(t+3, "DOT", 3) || !strncmp(t+3, "USCORE", 6)); } if ((n = strlen(ns)) < strlen(s)) return ((s[n] == '_' && s[n+1] == '_') || (s[n] == ':' && s[n+1] != ':')) && !tagncmp(ns, s, n); return 0; } const char * strict_check(void) { if (sflag) return ""; return "(soap->mode & SOAP_XML_STRICT) && "; } void fixed_check(FILE *fd, Entry *e, Table *t, const char *tabs) { const char *name = NULL; const char *type = NULL; char *buf; Tnode *p = e->info.typ; if (!e || (!e->info.hasval && !e->info.ptrval) || !e->info.fixed) return; name = ident(e->sym->name); if (t) type = ident(t->sym->name); buf = emalloc(2*strlen(name) + 2*(t ? strlen(type) + 2 : 0) + 20); if (e->info.ptrval) strcpy(buf, "(*a->"); else strcpy(buf, "a->"); if (t) { strcat(buf, type); strcat(buf, "::"); } strcat(buf, name); if (e->info.ptrval) strcat(buf, ")"); fprintf(fd, "\n%sif (*soap->href != '#' && (%s", tabs, strict_check()); if (e->info.ptrval) { fprintf(fd, "a->"); if (t) fprintf(fd, "%s::", type); fprintf(fd, "%s", name); if (is_smart(e->info.typ)) fprintf(fd, ".get()"); fprintf(fd, " && "); p = p->ref; } switch (p->type) { case Tchar: case Twchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Ttime: fprintf(fd, "%s != " SOAP_LONG_FORMAT, buf, e->info.val.i); break; case Tlong: fprintf(fd, "%s != " SOAP_LONG_FORMAT "L", buf, e->info.val.i); break; case Tulong: fprintf(fd, "%s != " SOAP_LONG_FORMAT "UL", buf, e->info.val.i); break; case Tllong: fprintf(fd, "%s != " SOAP_LONG_FORMAT "LL", buf, e->info.val.i); break; case Tullong: case Tsize: fprintf(fd, "%s != " SOAP_LONG_FORMAT "ULL", buf, e->info.val.i); break; case Tfloat: case Tdouble: fprintf(fd, "%s != %g", buf, e->info.val.r); break; case Tldouble: fprintf(fd, "%s != %gL", buf, e->info.val.r); break; case Tenum: case Tenumsc: if (e->info.val.i <= 0x7FFFLL && e->info.val.i >= -0x8000LL) fprintf(fd, "%s != (%s)" SOAP_LONG_FORMAT, buf, c_type(p), e->info.val.i); else fprintf(fd, "%s != (%s)" SOAP_LONG_FORMAT "LL", buf, c_type(p), e->info.val.i); break; default: if (is_stdstring(p) && e->info.val.s) fprintf(fd, "%s.compare(\"%s\")", buf, cstring(e->info.val.s, 0)); else if (is_stdwstring(p) && e->info.val.s) fprintf(fd, "%s.compare(L\"%s\")", buf, cstring(e->info.val.s, 0)); else if (is_wstring(p) && e->info.val.s) fprintf(fd, "wcscmp(%s, L\"%s\")", buf, cstring(e->info.val.s, 0)); else if (is_string(p) && e->info.val.s) fprintf(fd, "strcmp(%s, \"%s\")", buf, cstring(e->info.val.s, 0)); else fprintf(fd, "0"); break; } fprintf(fd, "))\n%s{\tsoap->error = SOAP_FIXED;\n%s\treturn NULL;\n%s}", tabs, tabs, tabs); } const char * ns_of(const char *name) { Service *sp; for (sp = services; sp; sp = sp->next) if (has_ns_eq(sp->ns, name)) break; if (sp) return sp->URI; return NULL; } int eq_ns(const char *s, const char *t) { return ns_of(s) == ns_of(t); } const char * prefix_of(const char *s) { const char *t; if (*s == ':' && s[1] != ':') return NULL; while (*s == '_' || *s == ':') s++; t = *s ? strstr(s + 1, "__") : NULL; if (!t) { t = strchr(s, ':'); if (t && t[1] == ':') t = NULL; } if (t && t[1] && t[2] && t[2] != '_') { char *r = (char*)emalloc(t - s + 1); strncpy(r, s, t - s); r[t - s] = '\0'; return r; } return NULL; } const char * ns_add_overridden(Table *t, Entry *p, const char *ns) { Entry *q; Symbol *s = t->sym; if (s) { do { for (q = t->list; q; q = q->next) if (!strcmp(q->sym->name, p->sym->name)) return ns_add(p, ns ? prefix_of(t->sym->name) : NULL); } while ((t = t->prev) != NULL); } return ns_add(p, ns); } const char * c_ident(Tnode *typ) { if (typ->sym && strcmp(typ->sym->name, "/*?*/")) return res_remove(typ->sym->name); return t_ident(typ); } const char * soap_type(Tnode *typ) { const char *t = c_ident(typ); char *s; if (namespaceid && (Qflag || !is_external(typ))) { s = (char*)emalloc(strlen(t) + strlen(namespaceid) + 12); strcpy(s, "SOAP_TYPE_"); strcat(s, namespaceid); strcat(s, "_"); } else { s = (char*)emalloc(strlen(t) + 11); strcpy(s, "SOAP_TYPE_"); } strcat(s, t); return s; } const char * soap_union_member(Tnode *typ, Entry *p) { const char *t = c_ident(typ); const char *n = ident(p->sym->name); char *s; if (namespaceid) { s = (char*)emalloc(strlen(t) + strlen(n) + strlen(namespaceid) + 14); strcpy(s, "SOAP_UNION_"); strcat(s, namespaceid); strcat(s, "_"); } else { s = (char*)emalloc(strlen(t) + strlen(n) + 13); strcpy(s, "SOAP_UNION_"); } strcat(s, t); strcat(s, "_"); strcat(s, n); return s; } const char * ident(const char *name) { if (name) { const char *s = strrchr(name, ':'); if (s && *(s+1) && (s == name || *(s-1) != ':')) return s+1; } return name; } /*t_ident gives the base type name (e.g. when typedef'ed) of a type in identifier format*/ const char * t_ident(Tnode *typ) { char *p; const char *q; if (typ->extsym) return ident(typ->extsym->name); if (typ->restriction) return ident(typ->restriction->name); switch(typ->type) { case Tnone: return ""; case Tvoid: return "void"; case Tchar: return "byte"; case Twchar: return "wchar"; case Tshort: return "short"; case Tint: return "int"; case Tlong: return "long"; case Tllong: return "LONG64"; case Tfloat: return "float"; case Tdouble: return "double"; case Tldouble: return "decimal"; case Tuchar: return "unsignedByte"; case Tushort: return "unsignedShort"; case Tuint: return "unsignedInt"; case Tulong: return "unsignedLong"; case Tullong: return "ULONG64"; case Tsize: return "size_t"; case Ttime: return "dateTime"; case Tstruct: case Tclass: case Tunion: case Tenum: if (is_bool(typ)) return "bool"; case Tenumsc: return res_remove(typ->id->name); case Treference: case Trvalueref: return c_ident((Tnode*)typ->ref); case Tpointer: if (is_string(typ)) return "string"; if (is_wstring(typ)) return "wstring"; p = (char*)emalloc((10+strlen(q = c_ident((Tnode*)typ->ref))) * sizeof(char)); strcpy(p, "PointerTo"); strcat(p, q); return p; case Tarray: p = (char*)emalloc((16+strlen(c_ident((Tnode*)typ->ref))) * sizeof(char)); if (((Tnode*)typ->ref)->width) sprintf(p, "Array%dOf%s", typ->width / ((Tnode*) typ->ref)->width, c_ident((Tnode*)typ->ref)); else sprintf(p, "ArrayOf%s", c_ident((Tnode*)typ->ref)); return p; case Ttemplate: if (typ->ref) { p = (char*)emalloc((11+strlen(res_remove(typ->id->name))+strlen(q = c_ident((Tnode*)typ->ref))) * sizeof(char)); strcpy(p, res_remove(typ->id->name)); strcat(p, "TemplateOf"); strcat(p, q); return p; } case Tfun: return "Function"; } return "anyType"; } void utf8(char **t, long c) { if (c < 0x0080) *(*t)++ = (char)c; else { if (c < 0x0800) *(*t)++ = (char)(0xC0 | ((c >> 6) & 0x1F)); else { if (c < 0x010000) *(*t)++ = (char)(0xE0 | ((c >> 12) & 0x0F)); else { if (c < 0x200000) *(*t)++ = (char)(0xF0 | ((c >> 18) & 0x07)); else { if (c < 0x04000000) *(*t)++ = (char)(0xF8 | ((c >> 24) & 0x03)); else { *(*t)++ = (char)(0xFC | ((c >> 30) & 0x01)); *(*t)++ = (char)(0x80 | ((c >> 24) & 0x3F)); } *(*t)++ = (char)(0x80 | ((c >> 18) & 0x3F)); } *(*t)++ = (char)(0x80 | ((c >> 12) & 0x3F)); } *(*t)++ = (char)(0x80 | ((c >> 6) & 0x3F)); } *(*t)++ = (char)(0x80 | (c & 0x3F)); } *(*t) = '\0'; } const char * ns_tag_convert(Entry *p) { if (p->tag) return p->tag; return ns_convert(p->sym->name); } const char * ns_convert(const char *tag) { const char *t; char *s; size_t i, n; if (*tag == ':') tag++; if (*tag == '_') { if (!strncmp(tag, "__ptr", 5)) { if (tag[5]) tag += 5; else tag = "item"; } else if (strncmp(tag, "_DOT", 4) && strncmp(tag, "_USCORE", 7) && (strncmp(tag, "_x", 2) || !isxdigit(tag[2]) || !isxdigit(tag[3]) || !isxdigit(tag[4]) || !isxdigit(tag[5]))) tag++; /* skip leading _ */ } for (n = strlen(tag); n > 0; n--) { if (tag[n-1] != '_') break; } t = s = (char*)emalloc(n+1); for (i = 0; i < n; i++) { if (tag[i] == '_') { if (tag[i+1] == '_' && !(tag[i+2] == 'x' && isxdigit(tag[i+3]) && isxdigit(tag[i+4]) && isxdigit(tag[i+5]) && isxdigit(tag[i+6]))) break; else if (!strncmp(tag+i, "_DOT", 4)) { *s++ = '.'; i += 3; } else if (!strncmp(tag+i, "_USCORE", 7)) { *s++ = '_'; i += 6; } else if (!strncmp(tag+i, "_x", 2) && isxdigit(tag[i+2]) && isxdigit(tag[i+3]) && isxdigit(tag[i+4]) && isxdigit(tag[i+5])) { char d[5]; strncpy(d, tag+i+2, 4); d[4] = '\0'; utf8(&s, strtoul(d, NULL, 16)); i += 5; } else *s++ = '-'; } else if (!strncmp(tag+i, "\\u", 2) && isxdigit(tag[i+2]) && isxdigit(tag[i+3]) && isxdigit(tag[i+4]) && isxdigit(tag[i+5])) { char d[5]; strncpy(d, tag+i+2, 4); d[4] = '\0'; utf8(&s, strtoul(d, NULL, 16)); i += 5; } else if (tag[i] == ':' && tag[i+1] == ':') break; else *s++ = tag[i]; } if (i < n) { *s++ = ':'; for (i += 2; i < n; i++) { if (tag[i] == '_') { if (!strncmp(tag+i, "_DOT", 4)) { *s++ = '.'; i += 3; } else if (!strncmp(tag+i, "_USCORE", 7)) { *s++ = '_'; i += 6; } else if (!strncmp(tag+i, "_x", 2) && isxdigit(tag[i+2]) && isxdigit(tag[i+3]) && isxdigit(tag[i+4]) && isxdigit(tag[i+5])) { char d[5]; strncpy(d, tag+i+2, 4); d[4] = '\0'; utf8(&s, strtoul(d, NULL, 16)); i += 5; } else *s++ = '-'; } else if (!strncmp(tag+i, "\\u", 2) && isxdigit(tag[i+2]) && isxdigit(tag[i+3]) && isxdigit(tag[i+4]) && isxdigit(tag[i+5])) { char d[5]; strncpy(d, tag+i+2, 4); d[4] = '\0'; utf8(&s, strtoul(d, NULL, 16)); i += 5; } else *s++ = tag[i]; } } *s = '\0'; return t; } const char * res_remove(const char *tag) { char *s; const char *t; if (!(t = strchr(tag, ':'))) return tag; if (t[1] != ':') tag = t + 1; if (!strchr(tag, ':')) return tag; s = (char*)emalloc(strlen(tag) + 1); t = strcpy(s, tag); while ((s = strchr(s, ':'))) *s = '_'; return t; } const char * ns_qualifiedElement(Tnode *typ) { const char *s = NULL; if (typ->sym) s = typ->sym->name; if (!s && typ->id) s = typ->id->name; return ns_qualifiedElementName(s); } const char * ns_qualifiedElementName(const char *s) { Service *sp; if (!s) return NULL; s = prefix_of(s); if (!s) return NULL; for (sp = services; sp; sp = sp->next) { if (sp->elementForm && !tagcmp(sp->ns, s)) { if (!strcmp(sp->elementForm, "qualified")) return s; return NULL; } } return NULL; } const char * ns_qualifiedAttribute(Tnode *typ) { const char *s = NULL; if (typ->sym) s = typ->sym->name; if (!s && typ->id) s = typ->id->name; return ns_qualifiedAttributeName(s); } const char * ns_qualifiedAttributeName(const char *s) { Service *sp; if (!s) return NULL; s = prefix_of(s); if (!s) return NULL; for (sp = services; sp; sp = sp->next) { if (sp->attributeForm && !tagcmp(sp->ns, s)) { if (!strcmp(sp->attributeForm, "qualified")) return s; return NULL; } } return NULL; } const char * field(Entry *p, const char *ns) { const char *r; char *s; if (is_self(p)) return "tag"; r = ns_add(p, ns); s = (char*)emalloc(strlen(r) + 3); strcpy(s, "\""); strcat(s, r); strcat(s, "\""); return s; } const char * field_overridden(Table *t, Entry *p, const char *ns) { const char *r; char *s; if (is_self(p)) return "tag"; r = ns_add_overridden(t, p, ns); s = (char*)emalloc(strlen(r) + 3); strcpy(s, "\""); strcat(s, r); strcat(s, "\""); return s; } const char * ns_add(Entry *p, const char *ns) { if (p->tag) return ns_addx(p->tag, ns); if (*p->sym->name == ':') return ns_convert(p->sym->name); return ns_addx(ns_convert(p->sym->name), ns); } const char * ns_addx(const char *tag, const char *ns) { const char *n; char *t; const char *s = tag; if (*s == ':') return s+1; if (!ns || *s == '-' || strchr(s, ':')) return s; n = ns_convert(ns); t = (char*)emalloc(strlen(n) + strlen(s) + 2); strcpy(t, n); strcat(t, ":"); strcat(t, s); return t; } const char * ns_name(const char *tag) { const char *t, *r, *s = tag; if (*s) { for (r = s+strlen(s)-1; r > s; r--) if (*r != '_') break; for (t = s + 1; t < r; t++) { if (t[0] == '_' && t[1] == '_') { s = t + 2; t++; } else if (t[0] == ':' && t[1] != ':') { s = t + 1; t++; } } } return s; } const char * ns_cname(const char *tag, const char *suffix) { char *s; const char *t; size_t i, n; if (!tag) return NULL; t = ns_name(tag); n = strlen(t); if (suffix) s = (char*)emalloc(n + strlen(suffix) + 2); else s = (char*)emalloc(n + 2); for (i = 0; i < n; i++) { if (!isalnum(t[i])) s[i] = '_'; else s[i] = t[i]; } s[i] = '\0'; if (suffix) strcat(s, suffix); if (is_keyword(t)) strcat(s, "_"); return s; } const char * ns_fname(const char *tag) { char *s; size_t i; s = (char*)emalloc(strlen(tag) + 1); strcpy(s, tag); for (i = 0; s[i]; i++) if (!isalnum(s[i])) s[i] = '_'; return s; } const char * ns_tag_remove(Entry *p) { if (p->tag) { const char *s = strchr(p->tag, ':'); if (s) return s + 1; return p->tag; } return ns_remove(p->sym->name); } const char * ns_remove(const char *tag) { return ns_convert(ns_name(tag)); } const char * ns_remove1(const char *tag) { const char *t, *s = tag; int n = 2; if (*s) { for (t = s + 1; *t && n; t++) if (t[0] == '_' && t[1] == '_') { s = t + 2; t++; n--; } if (n || (s[0] == '_' && s[1] != 'x' && strncmp(s, "_USCORE", 7)) || !*s) s = tag; } return s; } const char * ns_remove2(const char *tag, const char *type) { return ns_convert(ns_remove3(tag, type)); } const char * ns_remove3(const char *tag, const char *type) { size_t n; if (tag && type && !strncmp(tag, type, n = strlen(type)) && strlen(tag) > n + 2 && tag[n] == '_' && tag[n + 1] == '_') return tag + n + 2; return tag; } const char * xsi_type_u(Tnode *typ) { Service *sp; const char *s; if (tflag) return xsi_type(typ); s = xsi_type(typ); for (sp = services; sp; sp = sp->next) if (sp->xsi_type && has_ns_eq(sp->ns, s)) return s; return ""; } const char * xsi_type(Tnode *typ) { if (!typ) return "NULL"; if (is_dynamic_array(typ) && !has_ns(typ) && !is_binary(typ)) return xsi_type_Darray(typ); if (typ->type == Tarray) return xsi_type_Tarray(typ); if ((is_qname(typ) || is_stdqname(typ))) return "xsd:QName"; if (is_untyped(typ)) return ""; if (typ->sym) { if (!strncmp(typ->sym->name, "SOAP_ENV__", 10)) return ""; if (is_XML(typ)) return "xsd:anyType"; if (typ->type != Ttemplate) return ns_convert(typ->sym->name); } if (is_string(typ) || is_wstring(typ) || is_stdstring(typ) || is_stdwstring(typ)) return "xsd:string"; switch(typ->type) { case Tvoid: return "xsd:anyType"; case Tchar: return "xsd:byte"; case Twchar: return "wchar"; case Tshort: return "xsd:short"; case Tint: return "xsd:int"; case Tlong: case Tllong: return "xsd:long"; case Tfloat: return "xsd:float"; case Tdouble: return "xsd:double"; case Tldouble: return "xsd:decimal"; case Tuchar: return "xsd:unsignedByte"; case Tushort: return "xsd:unsignedShort"; case Tuint: return "xsd:unsignedInt"; case Tulong: case Tullong: return "xsd:unsignedLong"; case Ttime: return "xsd:dateTime"; case Tpointer: case Treference: case Trvalueref: return xsi_type((Tnode*)typ->ref); case Tenum: if (is_bool(typ)) return "xsd:boolean"; case Tenumsc: case Tstruct: case Tclass: if (!strncmp(typ->id->name, "SOAP_ENV__", 10)) return ""; return ns_convert(typ->id->name); case Ttemplate: if ((Tnode*)typ->ref) return xsi_type((Tnode*)typ->ref); break; default: break; } return ""; } const char * xml_tag(Tnode *typ) { if (!typ) return "NULL"; if ((typ->type == Tpointer && !is_string(typ) && !is_wstring(typ)) || typ->type == Treference || typ->type == Trvalueref) return xml_tag((Tnode*)typ->ref); if (typ->sym) return ns_convert(typ->sym->name); return the_type(typ); } const char * wsdl_type(Tnode *typ, const char *ns) { if (!typ) return "NULL"; if ((is_qname(typ) || is_stdqname(typ)) && ns) return "xsd:QName"; if (typ->sym) { if (is_XML(typ)) return "xsd:anyType"; else if (ns) return ns_convert(typ->sym->name); else return ns_remove(typ->sym->name); } return base_type(typ, ns); } const char * base_type(Tnode *typ, const char *ns) { int d; const char *s; char *t; if (typ->restriction) { if (ns) return ns_convert(typ->restriction->name); else return ns_remove(typ->restriction->name); } if (is_string(typ) || is_wstring(typ) || is_stdstring(typ) || is_stdwstring(typ) || is_fixedstring(typ)) { if (ns) return "xsd:string"; return "string"; } if (is_dynamic_array(typ) && !is_binary(typ) && !has_ns(typ) && !is_untyped(typ)) { s = ns_remove(wsdl_type(((Table*)typ->ref)->list->info.typ, NULL)); if (ns && *ns) { t = (char*)emalloc(strlen(s)+strlen(ns_convert(ns))+13); strcpy(t, ns_convert(ns)); strcat(t, ":"); strcat(t, "ArrayOf"); } else { t = (char*)emalloc(strlen(s)+12); strcpy(t, "ArrayOf"); } strcat(t, s); d = get_Darraydims(typ); if (d) sprintf(t+strlen(t), "%dD", d); return t; } switch (typ->type) { case Tvoid : if (ns) return "xsd:anyType"; return "anyType"; case Tchar : if (ns) return "xsd:byte"; return "byte"; case Tshort : if (ns) return "xsd:short"; return "short"; case Tint : if (ns) return "xsd:int"; return "int"; case Tlong : case Tllong : if (ns) return "xsd:long"; return "long"; case Tfloat: if (ns) return "xsd:float"; return "float"; case Tdouble: if (ns) return "xsd:double"; return "double"; case Tldouble: if (ns) return "xsd:decimal"; return "decimal"; case Tuchar: if (ns) return "xsd:unsignedByte"; return "unsignedByte"; case Tushort: if (ns) return "xsd:unsignedShort"; return "unsignedShort"; case Tuint: if (ns) return "xsd:unsignedInt"; return "unsignedInt"; case Tulong: case Tullong: if (ns) return "xsd:unsignedLong"; return "unsignedLong"; case Ttime: if (ns) return "xsd:dateTime"; return "dateTime"; case Tpointer: case Treference: case Trvalueref: return wsdl_type((Tnode*)typ->ref, ns); case Tarray: if (is_fixedstring(typ)) { if (typ->sym) { if (ns) return ns_convert(typ->sym->name); return ns_remove(typ->sym->name); } if (ns) return "xsd:string"; return "string"; } if (ns && *ns) { t = (char*)emalloc((strlen(ns_convert(ns))+strlen(c_ident(typ))+2) * sizeof(char)); strcpy(t, ns_convert(ns)); strcat(t, ":"); strcat(t, c_ident(typ)); return t; } else return c_ident(typ); case Tenum: if (is_bool(typ)) { if (ns) return "xsd:boolean"; return "boolean"; } case Tenumsc: case Tstruct: case Tclass: if (!has_ns(typ) && ns && *ns) { t = (char*)emalloc((strlen(ns_convert(ns))+strlen(typ->id->name)+2) * sizeof(char)); strcpy(t, ns_convert(ns)); strcat(t, ":"); strcat(t, ns_convert(typ->id->name)); return t; } else if (ns) return ns_convert(typ->id->name); else return ns_remove(typ->id->name); case Tunion: if (ns) return "xsd:choice"; return "choice"; case Ttemplate: if ((Tnode*)typ->ref) return wsdl_type((Tnode*)typ->ref, ns); break; default: break; } return ""; } const char * the_type(Tnode *typ) { if (!typ) return "NULL"; if (typ->type == Tarray || (is_dynamic_array(typ) && !is_binary(typ) && (eflag || (!has_ns(typ) && !is_untyped(typ))))) return "SOAP-ENC:Array"; if (is_string(typ) || is_wstring(typ) || is_stdstring(typ) || is_stdwstring(typ)) return "string"; switch (typ->type) { case Tchar: return "byte"; case Twchar: return "wchar"; case Tshort: return "short"; case Tint : return "int"; case Tlong : case Tllong : return "long"; case Tfloat: return "float"; case Tdouble: return "double"; case Tldouble: return "decimal"; case Tuchar: return "unsignedByte"; case Tushort: return "unsignedShort"; case Tuint: return "unsignedInt"; case Tulong: case Tullong: return "unsignedLong"; case Ttime: return "dateTime"; case Tpointer: case Treference: case Trvalueref: return the_type((Tnode*)typ->ref); case Tarray: return "SOAP-ENC:Array"; case Tenum: if (is_bool(typ)) return "boolean"; case Tenumsc: case Tstruct: case Tclass: return ns_convert(typ->id->name); default: break; } return ""; } /* c_type returns the type to be used in parameter declaration*/ const char * c_type(Tnode *typ) { char *p = NULL; const char *q, *r; char tempBuf[10]; Tnode *temp; Entry *e; if (typ == NULL) return "NULL"; switch(typ->type) { case Tnone: return ""; case Tvoid: return "void"; case Tchar: return "char"; case Twchar: return "wchar_t"; case Tshort: return "short"; case Tint : return "int"; case Tlong : return "long"; case Tllong : return "LONG64"; case Tfloat: return "float"; case Tdouble: return "double"; case Tldouble: return "long double"; case Tuchar: return "unsigned char"; case Tushort: return "unsigned short"; case Tuint: return "unsigned int"; case Tulong: return "unsigned long"; case Tullong: return "ULONG64"; case Tsize: return "size_t"; case Ttime: return "time_t"; case Tstruct: q = ident(typ->id->name); p = (char*)emalloc((8+strlen(q)) * sizeof(char)); strcpy(p, "struct "); strcat(p, q); return p; case Tclass: return ident(typ->id->name); case Tunion: q = ident(typ->id->name); p = (char*)emalloc((7+strlen(q)) * sizeof(char)); strcpy(p, "union "); strcat(p, q); return p; case Tenum: if (is_bool(typ)) return "bool"; q = ident(typ->id->name); p = (char*)emalloc((6+strlen(q)) * sizeof(char)); strcpy(p, "enum "); strcat(p, q); return p; case Tenumsc: return ident(typ->id->name); case Tpointer: return c_type_id((Tnode*)typ->ref, "*"); case Treference: return c_type_id((Tnode*)typ->ref, "&"); case Trvalueref: return c_type_id((Tnode*)typ->ref, "&&"); case Tarray: temp = typ; while (((Tnode*) (typ->ref))->type == Tarray) typ = (Tnode*)typ->ref; p = (char*)emalloc((12 + strlen(q = c_type((Tnode*)typ->ref))) * sizeof(char)); if (((Tnode*)typ->ref)->type == Tpointer) sprintf(p, "%s", c_type((Tnode*)typ->ref)); else strcpy(p, q); typ = temp; while (typ->type == Tarray) { if (((Tnode*) typ->ref)->width) { sprintf(tempBuf, "[%d]", (typ->width / ((Tnode*) typ->ref)->width)); strcat(p, tempBuf); } typ = (Tnode*)typ->ref; } break; case Tfun: p = (char*)emalloc(1024); strcpy(p, c_type(((FNinfo*)typ->ref)->ret)); strcat(p, "("); if (((FNinfo*)typ->ref)->args) { for (e = ((FNinfo*)typ->ref)->args->list; e; e = e->next) { strcat(p, c_storage(e->info.sto)); if (e->info.typ->type != Tvoid) { strcat(p, c_type_id(e->info.typ, e->sym->name)); strcat(p, c_init(e)); } else strcat(p, "void"); if (e->next) strcat(p, ", "); } } strcat(p, ")"); return p; case Ttemplate: if (typ->ref) { p = (char*)emalloc((strlen(q = c_type((Tnode*)typ->ref)) + strlen(r = ident(typ->id->name)) + 4) * sizeof(char)); strcpy(p, r); strcat(p, "<"); strcat(p, q); strcat(p, "> "); return p; } default: return "UnknownType"; } return p; } const char * c_storage(Storage sto) { static char buf[256]; buf[0] = '\0'; if (sto & Smutable) strcat(buf, "mutable "); if (sto & Sinline) strcat(buf, "inline "); if (sto & Sfriend) strcat(buf, "friend "); if (sto & Svirtual) strcat(buf, "virtual "); if (sto & Stypedef) strcat(buf, "typedef "); if (sto & Sexplicit) strcat(buf, "explicit "); if (sto & Sstatic) strcat(buf, "static "); if (sto & Sregister) strcat(buf, "register "); if (sto & Sauto) strcat(buf, "auto "); if (sto & Sconstptr) strcat(buf, "const "); if (sto & Sconst) strcat(buf, "const "); return buf; } const char * c_const(Storage sto) { if (sto & Sconst) return "const "; if (sto & Sconstptr) return "const "; return ""; } const char * c_init(Entry *e) { return c_init_a(e, " = "); } const char * c_init_a(Entry *e, const char *a) { static char buf[8196]; buf[0] = '\0'; if (e && (e->info.hasval || e->info.ptrval)) { Tnode *p = e->info.typ; if (e->info.ptrval) p = p->ref; switch (p->type) { case Tchar: case Twchar: case Tuchar: case Tshort: case Tushort: case Tint: case Tuint: case Ttime: sprintf(buf, "%s" SOAP_LONG_FORMAT, a, e->info.val.i); break; case Tlong: sprintf(buf, "%s" SOAP_LONG_FORMAT "L", a, e->info.val.i); break; case Tulong: sprintf(buf, "%s" SOAP_LONG_FORMAT "UL", a, e->info.val.i); break; case Tllong: sprintf(buf, "%s" SOAP_LONG_FORMAT "LL", a, e->info.val.i); break; case Tullong: case Tsize: sprintf(buf, "%s" SOAP_LONG_FORMAT "ULL", a, e->info.val.i); break; case Tfloat: case Tdouble: sprintf(buf, "%s%g", a, e->info.val.r); break; case Tldouble: sprintf(buf, "%s%gL", a, e->info.val.r); break; case Tenum: case Tenumsc: if (e->info.val.i <= 0x7FFFLL && e->info.val.i >= -0x8000LL) sprintf(buf, "%s(%s)" SOAP_LONG_FORMAT, a, c_type(p), e->info.val.i); else sprintf(buf, "%s(%s)" SOAP_LONG_FORMAT "LL", a, c_type(p), e->info.val.i); break; default: if (is_stdstring(p) && e->info.val.s && strlen(e->info.val.s) < sizeof(buf)-6) sprintf(buf, "%s\"%s\"", a, cstring(e->info.val.s, 0)); else if (is_stdwstring(p) && e->info.val.s && strlen(e->info.val.s) < sizeof(buf)-7) sprintf(buf, "%sL\"%s\"", a, cstring(e->info.val.s, 0)); else if (is_wstring(p) && e->info.val.s && strlen(e->info.val.s) < sizeof(buf)-17) sprintf(buf, "%s(wchar_t*)L\"%s\"", a, cstring(e->info.val.s, 0)); else if (e->info.val.s && strlen(e->info.val.s) < sizeof(buf)-13) sprintf(buf, "%s(char*)\"%s\"", a, cstring(e->info.val.s, 0)); else if (p->type == Tpointer) sprintf(buf, "%sNULL", a); break; } } return buf; } /* c_type_constptr_id returns the const* type to be used in parameter declaration */ const char * c_type_constptr_id(Tnode *typ, const char *name) { return c_type_id(typ, name); } /* c_type_id returns the type to be used in parameter declaration */ const char * c_type_id(Tnode *typ, const char *name) { const char *id; char *p = NULL; const char *q; char tempBuf[10]; Tnode *temp; Entry *e; if (!typ) return "NULL"; id = ident(name); switch(typ->type) { case Tnone: return id; case Tvoid: p = (char*)emalloc(6+strlen(id)); strcpy(p, "void "); strcat(p, id); break; case Tchar: p = (char*)emalloc(6+strlen(id)); strcpy(p, "char "); strcat(p, id); break; case Twchar: p = (char*)emalloc(9+strlen(id)); strcpy(p, "wchar_t "); strcat(p, id); break; case Tshort: p = (char*)emalloc(7+strlen(id)); strcpy(p, "short "); strcat(p, id); break; case Tint : p = (char*)emalloc(5+strlen(id)); strcpy(p, "int "); strcat(p, id); break; case Tlong : p = (char*)emalloc(6+strlen(id)); strcpy(p, "long "); strcat(p, id); break; case Tllong : p = (char*)emalloc(8+strlen(id)); strcpy(p, "LONG64 "); strcat(p, id); break; case Tfloat: p = (char*)emalloc(7+strlen(id)); strcpy(p, "float "); strcat(p, id); break; case Tdouble: p = (char*)emalloc(8+strlen(id)); strcpy(p, "double "); strcat(p, id); break; case Tldouble: p = (char*)emalloc(13+strlen(id)); strcpy(p, "long double "); strcat(p, id); break; case Tuchar: p = (char*)emalloc(15+strlen(id)); strcpy(p, "unsigned char "); strcat(p, id); break; case Tushort: p = (char*)emalloc(16+strlen(id)); strcpy(p, "unsigned short "); strcat(p, id); break; case Tuint: p = (char*)emalloc(14+strlen(id)); strcpy(p, "unsigned int "); strcat(p, id); break; case Tulong: p = (char*)emalloc(15+strlen(id)); strcpy(p, "unsigned long "); strcat(p, id); break; case Tullong: p = (char*)emalloc(9+strlen(id)); strcpy(p, "ULONG64 "); strcat(p, id); break; case Tsize: p = (char*)emalloc(8+strlen(id)); strcpy(p, "size_t "); strcat(p, id); break; case Ttime: p = (char*)emalloc(8+strlen(id)); strcpy(p, "time_t "); strcat(p, id); break; case Tstruct: q = ident(typ->id->name); p = (char*)emalloc((9+strlen(q)+strlen(id)) * sizeof(char)); strcpy(p, "struct "); strcat(p, q); strcat(p, " "); strcat(p, id); break; case Tclass: q = ident(typ->id->name); p = (char*)emalloc((2+strlen(q)+strlen(id)) * sizeof(char)); strcpy(p, q); strcat(p, " "); strcat(p, id); break; case Tunion: q = ident(typ->id->name); p = (char*)emalloc((8+strlen(q)+strlen(id)) * sizeof(char)); strcpy(p, "union "); strcat(p, q); strcat(p, " "); strcat(p, id); break; case Tenum: if (is_bool(typ)) { p = (char*)emalloc((strlen(id)+6)* sizeof(char)); strcpy(p, "bool "); strcat(p, id); return p; } q = ident(typ->id->name); p = (char*)emalloc((7+strlen(q)+strlen(id)) * sizeof(char)); strcpy(p, "enum "); strcat(p, q); strcat(p, " "); strcat(p, id); break; case Tenumsc: q = ident(typ->id->name); p = (char*)emalloc((7+strlen(q)+strlen(id)) * sizeof(char)); strcpy(p, q); strcat(p, " "); strcat(p, id); break; case Tpointer: p = (char*)emalloc(strlen(id)+2); p[0] = '*'; strcpy(p+1, id); return c_type_id((Tnode*)typ->ref, p); case Treference: p = (char*)emalloc(strlen(id)+2); p[0] = '&'; strcpy(p+1, id); return c_type_id((Tnode*)typ->ref, p); case Trvalueref: p = (char*)emalloc(strlen(id)+3); p[0] = '&'; p[1] = '&'; strcpy(p+2, id); return c_type_id((Tnode*)typ->ref, p); case Tarray: temp = typ; while (((Tnode*) (typ->ref))->type == Tarray) typ = (Tnode*)typ->ref; p = (char*)emalloc((12+strlen(q = c_type_id((Tnode*)typ->ref, id))) * sizeof(char)); strcpy(p, q); typ = temp; while (typ->type == Tarray) { if (((Tnode*) typ->ref)->width) { sprintf(tempBuf, "[%d]", (typ->width / ((Tnode*) typ->ref)->width)); strcat(p, tempBuf); } typ = (Tnode*)typ->ref; } break; case Tfun: if (id && strncmp(id, "operator ", 9)) q = c_type_id(((FNinfo*)typ->ref)->ret, id); else q = id; p = (char*)emalloc(1024); if (q) strcpy(p, q); strcat(p, "("); for (e = ((FNinfo*)typ->ref)->args->list; e; e = e->next) { strcat(p, c_storage(e->info.sto)); if (e->info.typ->type != Tvoid) { strcat(p, c_type_id(e->info.typ, e->sym->name)); strcat(p, c_init(e)); } else strcat(p, "void"); if (e->next) strcat(p, ", "); } strcat(p, ")"); break; case Ttemplate: if (typ->ref) { p = (char*)emalloc((strlen(q = c_type((Tnode*)typ->ref))+strlen(ident(typ->id->name))+strlen(id)+4) * sizeof(char)); strcpy(p, ident(typ->id->name)); strcat(p, "<"); strcat(p, q); strcat(p, "> "); strcat(p, id); break; } default: return "UnknownType"; } return p; } const char * c_type_sym(Tnode *typ) { if (typ->sym) return ident(typ->sym->name); return c_type(typ); } /* c_type_synonym_id returns the typedef synonym name as a type (if present) to be used in parameter declaration */ const char * c_type_synonym_id(Tnode *typ, const char *name) { if (typ->synonym) { const char *synonym = ident(typ->synonym->name); const char *id = ident(name); char *p = (char*)emalloc(strlen(synonym) + strlen(id) + 2); strcpy(p, synonym); strcat(p, " "); strcat(p, id); return p; } return c_type_id(typ, name); } const char * xsi_type_Tarray(Tnode *typ) { Tnode *t; int cardinality; char *p; const char *s; t = (Tnode*)typ->ref; if (is_fixedstring(typ)) { if (typ->sym) return ns_convert(typ->sym->name); return "xsd:string"; } cardinality = 1; while (t->type == Tarray || (is_dynamic_array(t) && !has_ns(t) && !is_untyped(t) && !is_binary(t))) { if (t->type == Tarray) t = (Tnode*)t->ref; else t = (Tnode*)((Table*)t->ref)->list->info.typ->ref; cardinality++; } s = xsi_type(t); if (!*s) s = wsdl_type(t, ""); p = (char*)emalloc(strlen(s)+cardinality+3); strcpy(p, s); if (cardinality > 1) { strcat(p, "["); for (; cardinality > 2; cardinality--) strcat(p, ", "); strcat(p, "]"); } return p; } const char * xsi_type_Darray(Tnode *typ) { Tnode *t; int cardinality; char *p; const char *s; Entry *q; if (!typ->ref) return ""; q = ((Table*)typ->ref)->list; while (q && q->info.typ->type == Tfun) q = q->next; t = (Tnode*)q->info.typ->ref; cardinality = 1; while (t->type == Tarray || (is_dynamic_array(t) && !has_ns(t) && !is_untyped(t) && !is_binary(t))) { if (t->type == Tarray) t = (Tnode*)t->ref; else { q = ((Table*)t->ref)->list; while (q && q->info.typ->type == Tfun) q = q->next; t = (Tnode*)q->info.typ->ref; } cardinality++; } s = xsi_type(t); if (!*s) s = wsdl_type(t, ""); p = (char*)emalloc(strlen(s)+cardinality*2+1); strcpy(p, s); if (cardinality > 1) { strcat(p, "["); for (; cardinality > 2; cardinality--) strcat(p, ", "); strcat(p, "]"); } return p; } void generate_type(Tnode *typ) { if (is_transient(typ) || typ->type == Twchar || is_void(typ)) return; if (lflag && typ->type == Tint && !typ->sym) { fprintf(fhead, "\n\n#ifndef %s_DEFINED", soap_type(typ)); fprintf(fhead, "\n#define %s_DEFINED", soap_type(typ)); fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_int(struct soap*, int*);"); fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_int(struct soap*, const char*, int, const int*, const char*);"); fprintf(fhead, "\nSOAP_FMAC1 int* SOAP_FMAC2 soap_in_int(struct soap*, const char*, int*, const char*);"); fprintf(fhead, "\n#endif"); return; /* do not generate int serializers in libs */ } else if (is_imported(typ) && (typ->type != Tint || typ->sym)) { return; } if (is_typedef(typ) && (is_element(typ) || is_synonym(typ))) fprintf(fhead, "\n/* %s is a typedef synonym of %s */", c_ident(typ), t_ident(typ)); else if (is_typedef(typ) && (is_element(typ) || is_restriction(typ))) fprintf(fhead, "\n/* %s is a typedef restriction of %s */", c_ident(typ), t_ident(typ)); if (is_primitive(typ) || is_string(typ) || is_wstring(typ)) { if (!Qflag && is_external(typ) && namespaceid) { const char *id = namespaceid; namespaceid = NULL; fprintf(fhead, "\n\n#ifndef %s_DEFINED", soap_type(typ)); fprintf(fhead, "\n#define %s_DEFINED", soap_type(typ)); namespaceid = id; fprintf(fhead, "\n\n}"); fprintf(fout, "\n\n}"); } else { fprintf(fhead, "\n\n#ifndef %s_DEFINED", soap_type(typ)); fprintf(fhead, "\n#define %s_DEFINED", soap_type(typ)); } fflush(fhead); soap_default(typ); soap_serialize(typ); if (Etflag) soap_traverse(typ); soap_out(typ); soap_in(typ); if (!Qflag && is_external(typ) && namespaceid) { fprintf(fhead, "\n\nnamespace %s {", namespaceid); fprintf(fout, "\n\nnamespace %s {", namespaceid); } if (is_string(typ) || is_wstring(typ)) { soap_dup(typ); soap_del(typ); } soap_instantiate(typ); soap_put(typ); soap_get(typ); fprintf(fhead, "\n#endif"); return; } switch(typ->type) { case Ttemplate: case Tpointer: case Tarray: case Tstruct: case Tclass: case Tunion: if (is_header_or_fault(typ) || is_body(typ)) { fprintf(fhead, "\n\n#ifndef WITH_NOGLOBAL"); fprintf(fout, "\n\n#ifndef WITH_NOGLOBAL"); } if (!Qflag && is_external(typ) && namespaceid) { const char *id = namespaceid; namespaceid = NULL; fprintf(fhead, "\n\n#ifndef %s_DEFINED", soap_type(typ)); fprintf(fhead, "\n#define %s_DEFINED", soap_type(typ)); namespaceid = id; fprintf(fhead, "\n\n}"); fprintf(fout, "\n\n}"); } else { fprintf(fhead, "\n\n#ifndef %s_DEFINED", soap_type(typ)); fprintf(fhead, "\n#define %s_DEFINED", soap_type(typ)); } fflush(fhead); soap_default(typ); soap_serialize(typ); if (Etflag) soap_traverse(typ); soap_out(typ); soap_in(typ); if (!Qflag && is_external(typ) && namespaceid) { fprintf(fhead, "\n\nnamespace %s {", namespaceid); fprintf(fout, "\n\nnamespace %s {", namespaceid); } soap_dup(typ); soap_del(typ); soap_instantiate(typ); soap_put(typ); soap_get(typ); fprintf(fhead, "\n#endif"); if (is_header_or_fault(typ) || is_body(typ)) { fprintf(fhead, "\n\n#endif"); fprintf(fout, "\n\n#endif"); } break; default: break; } } void matlab_gen_sparseStruct(void) { fprintf(fmheader, "\nstruct soapSparseArray{\n"); fprintf(fmheader, " int *ir;\n"); fprintf(fmheader, " int *jc;\n"); fprintf(fmheader, " double *pr;\n"); fprintf(fmheader, " int num_columns;\n"); fprintf(fmheader, " int num_rows;\n"); fprintf(fmheader, " int nzmax;\n"); fprintf(fmheader, "};\n"); } void matlab_c_to_mx_sparse(void) { fprintf(fmheader, "\nmxArray* c_to_mx_soapSparseArray(struct soapSparseArray);\n"); fprintf(fmatlab, "\nmxArray* c_to_mx_soapSparseArray(struct soapSparseArray a)\n"); fprintf(fmatlab, "{\n"); fprintf(fmatlab, " mxArray *b;\n"); fprintf(fmatlab, " b = mxCreateSparse(a.num_rows, a.num_columns, a.nzmax, mxREAL);\n"); fprintf(fmatlab, " mxSetIr(b,a.ir);\n"); fprintf(fmatlab, " mxSetJc(b,a.jc);\n"); fprintf(fmatlab, " mxSetPr(b,a.pr);\n"); fprintf(fmatlab, " return b;\n"); fprintf(fmatlab, "}\n"); } void matlab_mx_to_c_sparse(void) { fprintf(fmheader, "\nmxArray* mx_to_c_soapSparseArray(const mxArray *, struct soapSparseArray *);\n"); fprintf(fmatlab, "\nmxArray* mx_to_c_soapSparseArray(const mxArray *a, struct soapSparseArray *b)\n"); fprintf(fmatlab, "{\n"); fprintf(fmatlab, " if (!mxIsSparse(a))\n"); fprintf(fmatlab, " {\n"); fprintf(fmatlab, " mexErrMsgTxt(\"Input should be a sparse array.\");\n"); fprintf(fmatlab, " }\n"); fprintf(fmatlab, " /* Get the starting positions of the data in the sparse array. */ \n"); fprintf(fmatlab, " b->pr = mxGetPr(a);\n"); fprintf(fmatlab, " b->ir = mxGetIr(a);\n"); fprintf(fmatlab, " b->jc = mxGetJc(a);\n"); fprintf(fmatlab, " b->num_columns = mxGetN(a);\n"); fprintf(fmatlab, " b->num_rows = mxGetM(a);\n"); fprintf(fmatlab, " b->nzmax = mxGetNzmax(a);\n"); fprintf(fmatlab, "}\n"); } void matlab_mx_to_c_dynamicArray(Tnode* typ) { int d; Entry *p; p = is_dynamic_array(typ); fprintf(fmatlab, "{\n"); fprintf(fmatlab, "\tint i, numdims;\n"); fprintf(fmatlab, "\tconst int *dims;\n"); fprintf(fmatlab, "\tdouble *temp;\n"); fprintf(fmatlab, "\tint size = 1;\n"); fprintf(fmatlab, "\tint ret;\n"); fprintf(fmatlab, "\tnumdims = mxGetNumberOfDimensions(a);\n"); fprintf(fmatlab, "\tdims = mxGetDimensions(a);\n"); d = get_Darraydims(typ); fprintf(fmatlab, "\tif (numdims != %d)\n", d); fprintf(fmatlab, "\t\tmexErrMsgTxt(\"Incompatible array specifications in C and mx.\");\n"); /* fprintf(fmatlab, "\tfor (i=0;i__size[i] = dims[i];\n"); fprintf(fmatlab, "\t}\n"); */ if ((((Tnode *)p->info.typ->ref)->type != Tchar) && (((Tnode *)p->info.typ->ref)->type != Tuchar)) { fprintf(fmatlab, "\ttemp = (double*)mxGetPr(a);\n"); fprintf(fmatlab, "\tif (!temp)\n\t\tmexErrMsgTxt(\"mx_to_c_ArrayOfdouble: Pointer to data is NULL\");\n"); } fprintf(fmatlab, "\tfor (i = 0; i < numdims; i++) {\n"); fprintf(fmatlab, "\t\tif (b->__size[i] < dims[i])\n"); fprintf(fmatlab, "\t\t\tmexErrMsgTxt(\"Incompatible array dimensions in C and mx.\");\n"); fprintf(fmatlab, "\t\tsize *= dims[i];\n"); fprintf(fmatlab, "\t}\n"); if ((((Tnode *)p->info.typ->ref)->type != Tchar) && (((Tnode *)p->info.typ->ref)->type != Tuchar)) { fprintf(fmatlab, "\tfor (i = 0; i < size; i++)\n"); fprintf(fmatlab, "\t\tb->__ptr[i] = (%s)*temp++;\n", c_type((Tnode*)p->info.typ->ref)); } else { fprintf(fmatlab, "\tret = mxGetString(a, b->__ptr, size + 1);\n"); fprintf(fmatlab, "\tmexPrintf(\"ret = %%d, b->__ptr = %%s, size = %%d\", ret, b->__ptr, size);\n"); } fprintf(fmatlab, "\n}\n"); fflush(fmatlab); } void matlab_c_to_mx_dynamicArray(Tnode* typ) { int d, i; Entry *p; p = is_dynamic_array(typ); fprintf(fmatlab, "{\n"); fprintf(fmatlab, "\tmxArray *out;\n"); fprintf(fmatlab, "\t%s;\n", c_type_id((Tnode*)p->info.typ->ref, "*temp")); d = get_Darraydims(typ); fprintf(fmatlab, "\tint i;\n"); fprintf(fmatlab, "\tint ndim = %d, dims[%d] = {", d, d); for (i = 0; i < d; i++) { if (i == 0) fprintf(fmatlab, "a.__size[%d]", i); else fprintf(fmatlab, ", a.__size[%d]", i); } fprintf(fmatlab, "};\n"); fprintf(fmatlab, "\tint size = "); for (i = 0; i < d; i++) { if (i == 0) fprintf(fmatlab, "dims[%d]", i); else fprintf(fmatlab, "*dims[%d]", i); } fprintf(fmatlab, ";\n"); if ((((Tnode *)p->info.typ->ref)->type != Tchar) && (((Tnode *)p->info.typ->ref)->type != Tuchar)) { fprintf(fmatlab, "\tout = mxCreateNumericArray(ndim, dims, %s, mxREAL);\n", get_mxClassID((Tnode*)p->info.typ->ref)); fprintf(fmatlab, "\tif (!out)\n\t\tmexErrMsgTxt(\"Could not create mxArray.\");\n"); fprintf(fmatlab, "\ttemp = (%s) mxGetPr(out);\n", c_type_id((Tnode*)p->info.typ->ref, "*")); fprintf(fmatlab, "\tif (!temp)\n\t\tmexErrMsgTxt(\"matlab_array_c_to_mx: Pointer to data is NULL\");\n"); fprintf(fmatlab, "\tfor (i = 0; i < size; i++)\n"); fprintf(fmatlab, "\t\t*temp++ = a.__ptr[i];\n"); } else { fprintf(fmatlab, "\tout = mxCreateString(a.__ptr);\n"); fprintf(fmatlab, "\tif (!out)\n\t\tmexErrMsgTxt(\"Could not create mxArray.\");\n"); } fprintf(fmatlab, "\treturn out;\n}\n"); fflush(fmatlab); } const char* get_mxClassID(Tnode* typ) { switch(typ->type) { case Tdouble: return "mxDOUBLE_CLASS"; case Tfloat: return "mxSINGLE_CLASS"; case Tshort: return "mxINT16_CLASS"; case Tushort: return "mxUINT16_CLASS"; case Tint: return "mxINT32_CLASS"; case Tuint: return "mxUINT32_CLASS"; case Tlong: return "mxINT32_CLASS"; case Tulong: return "mxUINT32_CLASS"; case Tllong: return "mxINT64_CLASS"; case Tullong: return "mxUINT64_CLASS"; case Tchar: return "mxCHAR_CLASS"; case Tuchar: return "mxCHAR_CLASS"; default: return ""; } } /*Function not in use.*/ void matlab_array_c_to_mx(Tnode* typ) { Tnode* temp; int d, i; fprintf(fmatlab, "{\n\tint rows, r, cols, c;\n"); fprintf(fmatlab, "\tmxArray* out;\n"); fprintf(fmatlab, "\tdouble* temp;\n"); d = get_dimension(typ); fprintf(fmatlab, "\tint ndim = %d, dims[%d] = {", d, d); temp=typ; for (i = 0; i < d; i++) { if (i == 0) fprintf(fmatlab, "%d", temp->width / ((Tnode*) temp->ref)->width); else fprintf(fmatlab, ", %d", temp->width / ((Tnode*) temp->ref)->width); temp=(Tnode*)typ->ref; } fprintf(fmatlab, "};\n"); fprintf(fmatlab, "\tout = mxCreateNumericArray(ndim, dims, mxDOUBLE_CLASS, mxREAL);\n"); fprintf(fmatlab, "\ttemp = (double *) mxGetPr(out);\n"); fprintf(fmatlab, "\tif (!out)\n\t\tmexErrMsgTxt(\"Could not create mxArray.\");\n"); fprintf(fmatlab, "\tif (!temp)\n\t\tmexErrMsgTxt(\"matlab_array_c_to_mx: Pointer to data is NULL\");\n"); fprintf(fmatlab, "\trows = mxGetM(out);\n"); fprintf(fmatlab, "\tif (!rows)\n\t\tmexErrMsgTxt(\"matlab_array_c_to_mx: Data has zero rows\");\n"); fprintf(fmatlab, "\tcols = mxGetN(out);\n"); fprintf(fmatlab, "\tif (!cols)\n\t\tmexErrMsgTxt(\"matlab_array_c_to_mx: Data has zero columns\");\n"); fprintf(fmatlab, "\tfor (c = 0; c < cols; c++)\n"); fprintf(fmatlab, "\t\tfor (r = 0; r < rows; r++)\n"); fprintf(fmatlab, "\t\t\t*temp++ = z->a[r][c];\n"); fprintf(fmatlab, "\treturn out;\n}\n"); fflush(fmatlab); } void matlab_c_to_mx_pointer(Tnode* typ) { if (!typ->ref) return; fprintf(fmheader, "\nmxArray* c_to_mx_%s(%s);\n", c_ident(typ), c_type_id(typ, "")); fprintf(fmatlab, "\nmxArray* c_to_mx_%s(%s)\n", c_ident(typ), c_type_id(typ, "a")); fprintf(fmatlab, "{\n"); fprintf(fmatlab, "\tmxArray *fout;\n"); fprintf(fmatlab, "\tfout = c_to_mx_%s(*a);\n", c_ident((Tnode*)typ->ref)); fprintf(fmatlab, "\treturn fout;\n"); fprintf(fmatlab, "}\n"); } void matlab_mx_to_c_pointer(Tnode* typ) { if (!typ->ref) return; fprintf(fmheader, "\nvoid mx_to_c_%s(const mxArray*, %s);\n", c_ident(typ), c_type_id(typ, "*")); fprintf(fmatlab, "\nvoid mx_to_c_%s(const mxArray* a, %s)\n", c_ident(typ), c_type_id(typ, "*b")); fprintf(fmatlab, "{\n\tmx_to_c_%s(a, *b);\n", c_ident((Tnode*)typ->ref)); fprintf(fmatlab, "\n}\n"); } void func2(Tnode* typ) { Table *table, *t; Entry *p; fprintf(fmatlab, "\tif (!mxIsStruct(a))\n\t\tmexErrMsgTxt(\"Input must be a structure.\");\n"); table=(Table*)typ->ref; for (t = table; t != (Table*)0; t = t->prev) { for (p = t->list; p != (Entry*)0; p = p->next) { if (p->info.typ->type != Tfun && !is_void(p->info.typ) && !is_XML(p->info.typ)) { fprintf(fmatlab, "\t{mxArray *tmp = mxGetField(a, 0, \"%s\");\n", ident(p->sym->name)); fprintf(fmatlab, "\tif (!tmp) {\n"); fprintf(fmatlab, "\t\tmexErrMsgTxt(\"Above member field is empty!\");\n\t}\n"); fprintf(fmatlab, "\tmx_to_c_%s(tmp, &b->%s);}\n", c_ident(p->info.typ), ident(p->sym->name)); } } } } void matlab_mx_to_c_struct(Tnode* typ) { if (!typ->ref) return; if (is_dynamic_array(typ)) { fprintf(fmheader, "\nvoid mx_to_c_%s(const mxArray*, %s);\n", c_ident(typ), c_type_id(typ, "*")); fprintf(fmatlab, "\nvoid mx_to_c_%s(const mxArray* a, %s)\n", c_ident(typ), c_type_id(typ, "*b")); matlab_mx_to_c_dynamicArray(typ); return; } else if (strstr(c_type_id(typ, ""), "soapSparseArray")) { return; } fprintf(fmheader, "\nvoid mx_to_c_%s(const mxArray*, %s);\n", c_ident(typ), c_type_id(typ, "*")); fprintf(fmatlab, "\nvoid mx_to_c_%s(const mxArray* a, %s)\n", c_ident(typ), c_type_id(typ, "*b")); fprintf(fmatlab, "{\n"); func2(typ); fprintf(fmatlab, "\n}\n"); return; } void matlab_c_to_mx_struct(Tnode* typ) { Table *table, *t; Entry *p; int number_of_fields=0; if (!typ->ref) return; if (is_dynamic_array(typ)) { fprintf(fmheader, "\nmxArray* c_to_mx_%s(%s);\n", c_ident(typ), c_type_id(typ, "")); fprintf(fmatlab, "\nmxArray* c_to_mx_%s(%s)\n", c_ident(typ), c_type_id(typ, "a")); matlab_c_to_mx_dynamicArray(typ); return; } else if (strstr(c_type_id(typ, ""), "soapSparseArray")) return; fprintf(fmheader, "\nmxArray* c_to_mx_%s(%s);\n", c_ident(typ), c_type_id(typ, "")); fprintf(fmatlab, "\nmxArray* c_to_mx_%s(%s)\n", c_ident(typ), c_type_id(typ, "a")); table=(Table*)typ->ref; fprintf(fmatlab, "{\n\tconst char* fnames[] = {"); for (t = table; t != (Table*)0; t = t->prev) { for (p = t->list; p != (Entry*)0; p = p->next) { if (p->info.typ->type != Tfun && !is_void(p->info.typ) && !is_XML(p->info.typ)) { if (number_of_fields) fprintf(fmatlab, ", \"%s\"", ident(p->sym->name)); else fprintf(fmatlab, "\"%s\"", ident(p->sym->name)); number_of_fields++; } } } fprintf(fmatlab, "}; /* pointers to member field names */\n"); fprintf(fmatlab, "\tint rows = 1, cols = 1;\n\tint index = 0;\n\tint number_of_fields = %d;\n\tmxArray *struct_array_ptr;\n", number_of_fields); fprintf(fmatlab, "\t/* Create a 1x1 struct matrix for output */\n"); fprintf(fmatlab, "\tstruct_array_ptr = mxCreateStructMatrix(rows, cols, number_of_fields, fnames);\n\tmexPrintf(\"6\");\n\tif (struct_array_ptr == NULL) {\n\t\tmexPrintf(\"COULDNT CREATE A MATRIX\");}\n\tmexPrintf(\"7\");\n"); for (t = table; t != (Table*)0; t = t->prev) { for (p = t->list; p != (Entry*)0; p = p->next) { if (p->info.typ->type != Tfun && !is_void(p->info.typ) && !is_XML(p->info.typ)) { fprintf(fmatlab, "\t{mxArray *fout = c_to_mx_%s(a.%s);\n", c_ident(p->info.typ), ident(p->sym->name)); fprintf(fmatlab, "\tmxSetField(struct_array_ptr, index, \"%s\" , fout);}\n", ident(p->sym->name)); } } } fprintf(fmatlab, "\treturn struct_array_ptr;\n}\n"); } void matlab_c_to_mx_primitive(Tnode *typ) { fprintf(fmheader, "\nmxArray* c_to_mx_%s(%s);", c_ident(typ), c_type_id(typ, "")); fprintf(fmatlab, "\nmxArray* c_to_mx_%s(%s)\n", c_ident(typ), c_type_id(typ, "a")); fprintf(fmatlab, "{\n\tmxArray *fout;\n"); if ((typ->type == Tchar) || (typ->type == Tuchar)) { fprintf(fmatlab, "\tchar buf[2];\n"); fprintf(fmatlab, "\tbuf[0] = a;\n"); fprintf(fmatlab, "\tbuf[1] = \'\\0\';\n"); fprintf(fmatlab, "\tfout = mxCreateString(buf);\n"); fprintf(fmatlab, "\tif (!fout)\n"); fprintf(fmatlab, "\t\tmexErrMsgTxt(\"Could not create mxArray.\");\n"); } else { fprintf(fmatlab, "\tint ndim = 1, dims[1] = {1};\n"); fprintf(fmatlab, "\tfout = mxCreateNumericArray(ndim, dims, %s, mxREAL);\n", get_mxClassID(typ)); fprintf(fmatlab, "\t%s = (%s)mxGetPr(fout);\n", c_type_id(typ, "*temp"), c_type_id(typ, "*")); fprintf(fmatlab, "\tif (!fout)\n"); fprintf(fmatlab, "\t\tmexErrMsgTxt(\"Could not create mxArray.\");\n"); fprintf(fmatlab, "\tif (!temp) \n"); fprintf(fmatlab, "\t\tmexErrMsgTxt(\"matlab_array_c_to_mx: Pointer to data is NULL\");\n"); fprintf(fmatlab, "\t*temp++= a;\n"); } fprintf(fmatlab, "\treturn fout;\n}\n"); } void matlab_mx_to_c_primitive(Tnode *typ) { fprintf(fmheader, "\nvoid mx_to_c_%s(const mxArray *, %s);\n", c_ident(typ), c_type_id(typ, "*")); fprintf(fmatlab, "\nvoid mx_to_c_%s(const mxArray *a, %s)\n", c_ident(typ), c_type_id(typ, "*b")); if ((typ->type == Tchar) || (typ->type == Tuchar)) { fprintf(fmatlab, "{\n\tint ret;\n"); fprintf(fmatlab, "\tchar buf[2];\n"); fprintf(fmatlab, "\tret = mxGetString(a, buf, 2);\n"); fprintf(fmatlab, "\tmexPrintf(\"ret = %%d, buf = %%s\", ret, buf);\n"); fprintf(fmatlab, "\t*b = buf[0];\n"); } else { fprintf(fmatlab, "{\n\tdouble* data = (double*)mxGetData(a);\n"); fprintf(fmatlab, "\t*b = (%s)*data;\n", c_type(typ)); } fprintf(fmatlab, "\n}\n"); } void matlab_out_generate(Tnode *typ) { if (is_transient(typ) || typ->type == Twchar || is_XML(typ)) return; /* typeNO++; if (typeNO>=1024) execerror("Too many user-defined data types"); */ if (is_primitive(typ)) { matlab_c_to_mx_primitive(typ); matlab_mx_to_c_primitive(typ); return; } switch(typ->type) { case Tstruct: matlab_c_to_mx_struct(typ); matlab_mx_to_c_struct(typ); break; case Tpointer: matlab_c_to_mx_pointer(typ); matlab_mx_to_c_pointer(typ); break; default: break; } } /*his function is called first it first generates all routines and then in the second pass calls all routines to generate matlab_out for the table*/ void func1(Table *table, Entry *param) { Entry *q, *pout, *response=NULL; q=entry(table, param->sym); if (q) pout = (Entry*)q->info.typ->ref; else { fprintf(stderr, "Internal error: no table entry\n"); return; } q=entry(classtable, param->sym); if (!is_response(pout->info.typ)) { response = get_response(param->info.typ); } fprintf(fmheader, "\n\toutside loop struct %s soap_tmp_%s;", param->sym->name, param->sym->name); if (!is_response(pout->info.typ) && response) { fprintf(fmheader, "\n\tif..inside loop struct %s *soap_tmp_%s;", c_ident(response->info.typ), c_ident(response->info.typ)); } fflush(fmheader); } void matlab_def_table(Table *table) { Entry *q, *pout, *e, *response=NULL; int i; Tnode *p; /* for (q1 = table->list; q1 != (Entry*) 0; q1 = q1->next) if (q1->info.typ->type == Tfun) func1(table, q1); */ /* Sparse matrix code will be present by default */ matlab_gen_sparseStruct(); matlab_c_to_mx_sparse(); matlab_mx_to_c_sparse(); for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p != (Tnode*)0 ; p = p->next) { /* This is generated for everything declared in the ".h" file. To make sure that it doesnt get generated for functions do a comparison with p->sym->name, so that its not generated for functions. */ if (is_XML(p)) continue; if (strstr(c_ident(p), "SOAP_ENV_") != NULL) continue; for (q = table->list; q != (Entry*) 0; q = q->next) { if (strcmp(c_ident(p), q->sym->name) == 0) break; e=entry(table, q->sym); if (e) pout = (Entry*)e->info.typ->ref; else { fprintf(stderr, "Internal error: no table entry\n"); return; } if (!is_response(pout->info.typ)) { response = get_response(q->info.typ); } if (!is_response(pout->info.typ) && response) { if (strcmp(c_ident(p), c_ident(response->info.typ)) == 0) break; } } if (q == (Entry*) 0) matlab_out_generate(p); } } } void detect_cycles(void) { Tnode *p; for (p = Tptr[Tclass]; p; p = p->next) detect_recursive_type(p); for (p = Tptr[Tstruct]; p; p = p->next) detect_recursive_type(p); } void detect_recursive_type(Tnode *p) { if (p->type == Tclass || p->type == Tstruct || p->type == Tunion) { if (!p->recursive) { if (!p->visited) { Table *t; Entry *e; p->visited = True; for (t = (Table*)p->ref; t; t = t->prev) for (e = t->list; e; e = e->next) detect_recursive_type(e->info.typ); if ((p->type == Tclass || p->type == Tstruct) && p->base && !is_transient(p)) { e = entry(classtable, p->base); if (e && e->info.typ->recursive) p->recursive = True; else if (e && !e->info.typ->visited) { e->info.typ->visited = True; detect_recursive_type(e->info.typ); e->info.typ->visited = False; if (e->info.typ->recursive) p->recursive = True; } } p->visited = False; } else p->recursive = True; } } else if (p->type == Tpointer || p->type == Treference || p->type == Trvalueref || p->type == Tarray || p->type == Ttemplate) detect_recursive_type(p->ref); } void generate_defs(void) { int i; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (!p->generated && !is_transient(p) && p->type != Twchar && !is_void(p)) { p->generated = True; generate_type(p); if (fflag) if (--partnum == 0) return; } } } } int no_of_var(Tnode *typ) { Entry *p; Table *t; int i=0; if (typ->type == Tstruct || typ->type == Tclass) { t = (Table*)typ->ref; for (p = t->list; p != (Entry*) 0; p = p->next) { if (p->info.typ->type == Tpointer) i++; } } if ((((Tnode *)(typ->ref))->type == Tstruct) || (((Tnode *)(typ->ref))->type == Tclass) ) { t = (Table*)((Tnode*)(typ->ref))->ref; for (p = t->list; p != (Entry*) 0; p = p->next) { if (p->info.typ->type == Tpointer) i++; } } return i; } void in_defs(void) { int i; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (!is_element(p) && !is_transient(p) && p->type != Twchar && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion && !is_XML(p) && !is_header_or_fault(p) && !is_body(p) && !is_template(p)) { const char *s = xsi_type(p); if (!*s) s = wsdl_type(p, ""); if (*s == '-') continue; if (is_string(p)) fprintf(fout, "\n\tcase %s:\n\t{\tchar **s;\n\t\ts = soap_in_%s(soap, NULL, NULL, \"%s\");\n\t\treturn s ? *s : NULL;\n\t}", soap_type(p), c_ident(p), s); else if (is_wstring(p)) fprintf(fout, "\n\tcase %s:\n\t{\twchar_t **s;\n\t\ts = soap_in_%s(soap, NULL, NULL, \"%s\");\n\t\treturn s ? *s : NULL;\n\t}", soap_type(p), c_ident(p), s); else fprintf(fout, "\n\tcase %s:\n\t\treturn soap_in_%s(soap, NULL, NULL, \"%s\");", soap_type(p), c_ident(p), s); } } } } void in_defs2(void) { int i, j; Tnode *p; const char *s; for (i = 0; i < TYPES; i++) { /* make sure (wrapper) classes are checked first */ if (i == 0) j = Tclass; else if (i == Tclass) continue; else j = i; for (p = Tptr[j]; p; p = p->next) { if (!is_element(p) && !is_transient(p) && !is_template(p) && p->type != Twchar && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion && !is_XML(p) && !is_header_or_fault(p) && !is_body(p)) { s = xsi_type(p); if (!*s) s = wsdl_type(p, ""); if (*s == '-') continue; if (*s) { if (is_dynamic_array(p) && !is_binary(p) && !has_ns(p) && !is_untyped(p)) fprintf(fout, "\n\t\tif (*soap->arrayType && !soap_match_array(soap, \"%s\"))\n\t\t{\t*type = %s;\n\t\t\treturn soap_in_%s(soap, NULL, NULL, NULL);\n\t\t}", s, soap_type(p), c_ident(p)); else if (is_string(p)) fprintf(fout, "\n\t\tif (!soap_match_tag(soap, t, \"%s\"))\n\t\t{\tchar **s;\n\t\t\t*type = %s;\n\t\t\ts = soap_in_%s(soap, NULL, NULL, NULL);\n\t\t\treturn s ? *s : NULL;\n\t\t}", s, soap_type(p), c_ident(p)); else if (is_wstring(p)) fprintf(fout, "\n\t\tif (!soap_match_tag(soap, t, \"%s\"))\n\t\t{\twchar_t **s;\n\t\t\t*type = %s;\n\t\t\ts = soap_in_%s(soap, NULL, NULL, NULL);\n\t\t\treturn s ? *s : NULL;\n\t\t}", s, soap_type(p), c_ident(p)); else if (p->type != Tpointer) fprintf(fout, "\n\t\tif (!soap_match_tag(soap, t, \"%s\"))\n\t\t{\t*type = %s;\n\t\t\treturn soap_in_%s(soap, NULL, NULL, NULL);\n\t\t}", s, soap_type(p), c_ident(p)); } } } } } void in_defs3(void) { int i; Tnode *p; const char *s; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (is_element(p) && !is_transient(p) && !is_template(p) && p->type != Twchar && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion && !is_XML(p) && !is_header_or_fault(p) && !is_body(p)) { s = xsi_type(p); if (!*s) s = wsdl_type(p, ""); if (*s == '-') continue; if (*s) { if (is_dynamic_array(p) && !is_binary(p) && !has_ns(p) && !is_untyped(p)) fprintf(fout, "\n\t\tif (*soap->arrayType && !soap_match_array(soap, \"%s\"))\n\t\t{\t*type = %s;\n\t\t\treturn soap_in_%s(soap, NULL, NULL, NULL);\n\t\t}", s, soap_type(p), c_ident(p)); else if (is_string(p)) fprintf(fout, "\n\t\tif (!soap_match_tag(soap, t, \"%s\"))\n\t\t{\tchar **s;\n\t\t\t*type = %s;\n\t\t\ts = soap_in_%s(soap, NULL, NULL, NULL);\n\t\t\treturn s ? *s : NULL;\n\t\t}", s, soap_type(p), c_ident(p)); else if (is_wstring(p)) fprintf(fout, "\n\t\tif (!soap_match_tag(soap, t, \"%s\"))\n\t\t{\twchar_t **s;\n\t\t\t*type = %s;\n\t\t\ts = soap_in_%s(soap, NULL, NULL, NULL);\n\t\t\treturn s ? *s : NULL;\n\t\t}", s, soap_type(p), c_ident(p)); else if (p->type != Tpointer) fprintf(fout, "\n\t\tif (!soap_match_tag(soap, t, \"%s\"))\n\t\t{\t*type = %s;\n\t\t\treturn soap_in_%s(soap, NULL, NULL, NULL);\n\t\t}", s, soap_type(p), c_ident(p)); } } } } } void out_defs(void) { int i; const char *s; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (is_transient(p) || is_template(p) || is_XML(p) || is_header_or_fault(p) || is_body(p)) continue; if (is_element(p)) { s = wsdl_type(p, ""); if (*s == '-') continue; if (p->type == Tarray) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_%s(soap, \"%s\", id, (%s)ptr, \"\");", soap_type(p), c_ident(p), s, c_type_id((Tnode*)p->ref, "(*)")); else if (p->type == Tclass && !is_external(p) && !is_volatile(p) && !is_typedef(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn ((%s)ptr)->soap_out(soap, \"%s\", id, \"\");", soap_type(p), c_type_id(p, "*"), s); else if (is_string(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_string(soap, \"%s\", id, (char*const*)(void*)&ptr, \"\");", soap_type(p), s); else if (is_wstring(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_wstring(soap, \"%s\", id, (wchar_t*const*)(void*)&ptr, \"\");", soap_type(p), s); else if (p->type == Tpointer) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_%s(soap, \"%s\", id, (%s)ptr, \"\");", soap_type(p), c_ident(p), s, c_type_constptr_id(p, "const*")); else if (p->type != Tnone && p->type != Ttemplate && p->type != Twchar && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_%s(soap, \"%s\", id, (const %s)ptr, \"\");", soap_type(p), c_ident(p), s, c_type_id(p, "*")); } else { s = xsi_type(p); if (!*s) s = wsdl_type(p, ""); if (*s == '-') continue; if (p->type == Tarray) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_%s(soap, tag, id, (%s)ptr, \"%s\");", soap_type(p), c_ident(p), c_type_id((Tnode*)p->ref, "(*)"), s); else if (p->type == Tclass && !is_external(p) && !is_volatile(p) && !is_typedef(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn ((%s)ptr)->soap_out(soap, tag, id, \"%s\");", soap_type(p), c_type_id(p, "*"), s); else if (is_string(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_string(soap, tag, id, (char*const*)(void*)&ptr, \"%s\");", soap_type(p), s); else if (is_wstring(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_wstring(soap, tag, id, (wchar_t*const*)(void*)&ptr, \"%s\");", soap_type(p), s); else if (p->type == Tpointer) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_%s(soap, tag, id, (%s)ptr, \"%s\");", soap_type(p), c_ident(p), c_type_constptr_id(p, "const*"), s); else if (p->type != Tnone && p->type != Ttemplate && p->type != Twchar && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_out_%s(soap, tag, id, (const %s)ptr, \"%s\");", soap_type(p), c_ident(p), c_type_id(p, "*"), s); } } } } void mark_defs() { int i; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (is_transient(p) || is_template(p) || is_XML(p) || is_header_or_fault(p) || is_body(p) || is_void(p)) continue; if (p->type == Tarray) continue; else if (p->type == Tclass && !is_external(p) && !is_volatile(p) && !is_typedef(p)) fprintf(fout, "\n\tcase %s:\n\t\t((%s)ptr)->soap_serialize(soap);\n\t\tbreak;", soap_type(p), c_type_id(p, "*")); else if (is_string(p)) fprintf(fout, "\n\tcase %s:\n\t\tsoap_serialize_string(soap, (char*const*)(void*)&ptr);\n\t\tbreak;", soap_type(p)); else if (is_wstring(p)) fprintf(fout, "\n\tcase %s:\n\t\tsoap_serialize_wstring(soap, (wchar_t*const*)(void*)&ptr);\n\t\tbreak;", soap_type(p)); else if (p->type == Tpointer) fprintf(fout, "\n\tcase %s:\n\t\tsoap_serialize_%s(soap, (%s)ptr);\n\t\tbreak;", soap_type(p), c_ident(p), c_type_constptr_id(p, "const*")); else if (p->type == Ttemplate && p->ref) fprintf(fout, "\n\tcase %s:\n\t\tsoap_serialize_%s(soap, (const %s)ptr);\n\t\tbreak;", soap_type(p), c_ident(p), c_type_id(p, "*")); else if (!is_primitive(p) && p->type != Tnone && p->type != Ttemplate && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) fprintf(fout, "\n\tcase %s:\n\t\tsoap_serialize_%s(soap, (const %s)ptr);\n\t\tbreak;", soap_type(p), c_ident(p), c_type_id(p, "*")); } } } void dup_defs() { int i; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (is_transient(p) || is_template(p) || is_XML(p) || is_header_or_fault(p) || is_body(p) || is_void(p)) continue; if (p->type == Tarray) continue; else if (p->type == Tclass && !is_external(p) && !is_volatile(p) && !is_typedef(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)((%s)ptr)->soap_dup(soap);", soap_type(p), c_type_id(p, "*")); else if (is_string(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)soap_strdup(soap, (const char*)ptr);", soap_type(p)); else if (is_wstring(p)) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)soap_wstrdup(soap, (const wchar_t*)ptr);", soap_type(p)); else if (p->type == Tpointer) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)%s_dup_%s(soap, NULL, (%s)ptr);", soap_type(p), fprefix, c_ident(p), c_type_constptr_id(p, "const*")); else if (p->type == Ttemplate && p->ref) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)%s_dup_%s(soap, NULL, (const %s)ptr);", soap_type(p), fprefix, c_ident(p), c_type_id(p, "*")); else if (!is_primitive(p) && p->type != Tnone && p->type != Ttemplate && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) fprintf(fout, "\n\tcase %s:\n\t\treturn (void*)%s_dup_%s(soap, NULL, (const %s)ptr);", soap_type(p), fprefix, c_ident(p), c_type_id(p, "*")); else if (p->type != Tnone && p->type != Ttemplate && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) fprintf(fout, "\n\tcase %s:\n\t\treturn soap_memdup(soap, ptr, sizeof(%s));", soap_type(p), c_type(p)); } } } void del_defs() { int i; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (is_transient(p) || is_template(p) || is_XML(p) || is_header_or_fault(p) || is_body(p) || is_void(p)) continue; if (p->type == Tarray) continue; else if (p->type == Tclass && !is_external(p) && !is_volatile(p) && !is_typedef(p)) fprintf(fout, "\n\tcase %s:\n\t\tstatic_cast(ptr)->soap_del();\n\t\tSOAP_DELETE(NULL, static_cast(ptr), %s);\n\t\tbreak;", soap_type(p), c_type(p), c_type(p), c_type(p)); else if (is_string(p)) fprintf(fout, "\n\tcase %s:\n\t\t%s_del_string((char*const*)(void*)&ptr);\n\t\tbreak;", soap_type(p), fprefix); else if (is_wstring(p)) fprintf(fout, "\n\tcase %s:\n\t\t%s_del_wstring((wchar_t*const*)(void*)&ptr);\n\t\tbreak;", soap_type(p), fprefix); else if (p->type == Tpointer) fprintf(fout, "\n\tcase %s:\n\t\t%s_del_%s((%s)ptr);\n\t\tSOAP_FREE(NULL, ptr);\n\t\tbreak;", soap_type(p), fprefix, c_ident(p), c_type_constptr_id(p, "const*")); else if (p->type == Ttemplate && p->ref) fprintf(fout, "\n\tcase %s:\n\t\t%s_del_%s((const %s)ptr);\n\t\tSOAP_DELETE(NULL, static_cast(ptr), %s);\n\t\tbreak;", soap_type(p), fprefix, c_ident(p), c_type_id(p, "*"), c_type(p), c_type(p)); else if (!is_primitive(p) && p->type != Tnone && p->type != Ttemplate && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) { if (!cflag && p->type == Tstruct) fprintf(fout, "\n\tcase %s:\n\t\t%s_del_%s((const %s)ptr);\n\t\tSOAP_DELETE(NULL, static_cast(ptr), %s);\n\t\tbreak;", soap_type(p), fprefix, c_ident(p), c_type_id(p, "*"), c_type(p), c_type(p)); else fprintf(fout, "\n\tcase %s:\n\t\t%s_del_%s((const %s)ptr);\n\t\tSOAP_FREE(NULL, ptr);\n\t\tbreak;", soap_type(p), fprefix, c_ident(p), c_type_id(p, "*")); } else if (p->type != Tnone && p->type != Ttemplate && !is_void(p) && p->type != Tfun && p->type != Treference && p->type != Trvalueref && p->type != Tunion) fprintf(fout, "\n\tcase %s:\n\t\tSOAP_FREE(NULL, (const %s)ptr);\n\t\tbreak;", soap_type(p), c_type_id(p, "*")); } } } void in_attach(void) { int i; Tnode *p; for (i = 0; i < TYPES; i++) { for (p = Tptr[i]; p; p = p->next) { if (is_attachment(p)) { if (p->type == Tclass) fprintf(fout, "\n\t\tcase %s:\n\t\t{\t%s a;\n\t\t\ta = (%s)soap_id_enter(soap, soap->dime.id, NULL, %s, sizeof(%s), NULL, NULL, %s_instantiate, %s_fbase);\n\t\t\tif (a)\n\t\t\t{\ta->__ptr = (unsigned char*)soap->dime.ptr;\n\t\t\t\ta->__size = soap->dime.size;\n\t\t\t\ta->id = (char*)soap->dime.id;\n\t\t\t\ta->type = (char*)soap->dime.type;\n\t\t\t\ta->options = (char*)soap->dime.options;\n\t\t\t}\n\t\t\telse\n\t\t\t\treturn soap->error;\n\t\t\tbreak;\n\t\t}", soap_type(p), c_type_id(p, "*"), c_type_id(p, "*"), soap_type(p), c_type(p), prefix, prefix); else fprintf(fout, "\n\t\tcase %s:\n\t\t{\t%s a;\n\t\t\ta = (%s)soap_id_enter(soap, soap->dime.id, NULL, %s, sizeof(%s), NULL, NULL, NULL, NULL);\n\t\t\tif (!a)\n\t\t\t\treturn soap->error;\n\t\t\ta->__ptr = (unsigned char*)soap->dime.ptr;\n\t\t\ta->__size = soap->dime.size;\n\t\t\ta->id = (char*)soap->dime.id;\n\t\t\ta->type = (char*)soap->dime.type;\n\t\t\ta->options = (char*)soap->dime.options;\n\t\t\tbreak;\n\t\t}", soap_type(p), c_type_id(p, "*"), c_type_id(p, "*"), soap_type(p), c_type(p)); } else if (is_binary(p) && !is_transient(p)) { if (p->type == Tclass) fprintf(fout, "\n\t\tcase %s:\n\t\t{\t%s a;\n\t\t\ta = (%s)soap_id_enter(soap, soap->dime.id, NULL, %s, sizeof(%s), NULL, NULL, %s_instantiate, %s_fbase);\n\t\t\tif (!a)\n\t\t\t\treturn soap->error;\n\t\t\ta->__ptr = (unsigned char*)soap->dime.ptr;\n\t\t\ta->__size = soap->dime.size;\n\t\t\tbreak;\n\t\t}", soap_type(p), c_type_id(p, "*"), c_type_id(p, "*"), soap_type(p), c_type(p), prefix, prefix); else fprintf(fout, "\n\t\tcase %s:\n\t\t{\t%s a;\n\t\t\ta = (%s)soap_id_enter(soap, soap->dime.id, NULL, %s, sizeof(%s), NULL, NULL, NULL, NULL);\n\t\t\tif (!a)\n\t\t\t\treturn soap->error;\n\t\t\ta->__ptr = (unsigned char*)soap->dime.ptr;\n\t\t\ta->__size = soap->dime.size;\n\t\t\tbreak;\n\t\t}", soap_type(p), c_type_id(p, "*"), c_type_id(p, "*"), soap_type(p), c_type(p)); } } } } void soap_instantiate(Tnode *typ) { Table *Tptr; Entry *Eptr; int derclass = 0, flag = 0; const char *s; if (is_XML(typ)) return; if (typ->type == Tunion) return; if (typ->type == Tpointer && !is_string(typ) && !is_wstring(typ)) return; if (cflag) { if ((is_typedef(typ) && !is_external(typ)) || is_restriction(typ)) fprintf(fhead, "\n#define soap_new_%s soap_new_%s\n", c_ident(typ), t_ident(typ)); else { fprintf(fhead, "\n\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_new_%s(struct soap *soap, int n);", c_type(typ), c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_new_%s(struct soap *soap, int n)\n{\n\t%s *p;\n\t%s *a = (%s*)soap_malloc((soap), (n = (n < 0 ? 1 : n)) * sizeof(%s));\n\tfor (p = a; p && n--; p++)\n\t\tsoap_default_%s(soap, p);\n\treturn a;\n}", c_type(typ), c_ident(typ), c_type(typ), c_type(typ), c_type(typ), c_type(typ), c_ident(typ)); } return; } if (typ->type != Tclass || !typ->sym || !is_eq(typ->sym->name, "xsd__QName") || is_imported(typ)) { if ((is_typedef(typ) && !is_external(typ)) || is_restriction(typ)) { fprintf(fhead, "\n\n#define %s_instantiate_%s %s_instantiate_%s\n", fprefix, c_ident(typ), fprefix, t_ident(typ)); fprintf(fhead, "\n\n#define soap_new_%s soap_new_%s\n", c_ident(typ), t_ident(typ)); if ((typ->type == Tclass || typ->type == Tstruct) && typ->ref) { fprintf(fhead, "\n\n#define soap_new_req_%s soap_new_req_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_new_set_%s soap_new_set_%s\n", c_ident(typ), t_ident(typ)); } return; } } if (is_primitive(typ) || is_string(typ) || is_wstring(typ)) { fprintf(fhead, "\n\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_new_%s(struct soap *soap, int n = -1);", c_type(typ), c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_new_%s(struct soap *soap, int n)\n{\n\t%s *a = static_cast<%s *>(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(%s)));\n\tfor (%s *p = a; p && n--; ++p)\n\t\tsoap_default_%s(soap, p);\n\treturn a;\n}", c_type(typ), c_ident(typ), c_type(typ), c_type(typ), c_type(typ), c_type(typ), c_ident(typ)); } /* NO LONGER CONSIDERED: soap_new_copy_Name1 may clash with soap_new_Name2 and soap_copy_X is already in use if (is_primitive(typ)) fprintf(fhead, "\n\ninline %s * soap_new_copy_%s(struct soap *soap, const %s& a)\n{\n\t%s *p = (%s*)soap_malloc(soap, sizeof(%s));\n\tif (p)\n\t\t*p = a;\n\treturn p;\n}", c_type(typ), c_ident(typ), c_type(typ), c_type(typ), c_type(typ), c_type(typ)); else if (is_string(typ)) fprintf(fhead, "\n\ninline char * soap_new_copy_string(struct soap *soap, const char *a)\n{\n\treturn soap_strdup(soap, a);\n}"); else if (is_wstring(typ)) fprintf(fhead, "\n\ninline wchar_t * soap_new_copy_wstring(struct soap *soap, const wchar_t *a)\n{\n\treturn soap_wstrdup(soap, a);\n}"); */ if (typ->type != Tstruct && typ->type != Tclass && typ->type != Ttemplate) return; fprintf(fhead, "\nSOAP_FMAC1 %s * SOAP_FMAC2 %s_instantiate_%s(struct soap*, int, const char*, const char*, size_t*);", c_type(typ), fprefix, c_ident(typ)); fprintf(fhead, "\n\ninline %s * soap_new_%s(struct soap *soap, int n = -1)\n{\n\treturn %s_instantiate_%s(soap, n, NULL, NULL, NULL);\n}", c_type(typ), c_ident(typ), fprefix, c_ident(typ)); /* NO LONGER CONSIDERED: soap_new_copy_Name1 may clash with soap_new_Name2 if (is_stdstring(typ)) { fprintf(fhead, "\n\ninline std::string * soap_new_copy_%s(struct soap *soap, const std::string& a)\n{\n\tstd::string *p = soap_new_%s(soap);\n\tif (p)\n\t\t*p = a;\n\treturn p;\n}", c_ident(typ), c_ident(typ)); fprintf(fhead, "\n\ninline std::string * soap_new_copy_%s(struct soap *soap, const char *a)\n{\n\tstd::string *p = soap_new_%s(soap);\n\tif (p)\n\t\tp->assign(a);\n\treturn p;\n}", c_ident(typ), c_ident(typ)); } else if (is_stdwstring(typ)) { fprintf(fhead, "\n\ninline std::wstring * soap_new_copy_%s(struct soap *soap, const std::wstring& a)\n{\n\tstd::wstring *p = soap_new_%s(soap);\n\tif (p)\n\t\t*p = a;\n\treturn p;\n}", c_ident(typ), c_ident(typ)); fprintf(fhead, "\n\ninline std::wstring * soap_new_copy_%s(struct soap *soap, const wchar_t *a)\n{\n\tstd::wstring *p = soap_new_%s(soap);\n\tif (p)\n\t\tp->assign(a);\n\treturn p;\n}", c_ident(typ), c_ident(typ)); } else if (!is_template(typ)) { fprintf(fhead, "\n\ninline %s * soap_new_copy_%s(struct soap *soap, const %s& a)\n{\n\t%s *p = soap_new_%s(soap);\n\tif (p)\n\t\t*p = a;\n\treturn p;\n}", c_type(typ), c_ident(typ), c_type(typ), c_type(typ), c_ident(typ)); } */ if (typ->type == Tclass || typ->type == Tstruct) { fprintf(fhead, "\n\ninline %s * soap_new_req_%s(\n\tstruct soap *soap", c_type(typ), c_ident(typ)); if (!is_dynamic_array(typ)) { for (Tptr = (Table*)typ->ref, derclass = 0; Tptr; Tptr = Tptr->prev, derclass++) { for (Eptr = Tptr->list; Eptr; Eptr = Eptr->next) { if (is_repetition(Eptr) || is_anytype(Eptr)) flag = 2; if ((Eptr->info.minOccurs > 0 || flag) && !(Eptr->info.sto & (Sprivate | Sprotected | Sconst | Sstatic | Stypedef)) && Eptr->info.typ->type != Tfun && !is_soapref(Eptr->info.typ)) { if (flag) flag--; if (is_smart(Eptr->info.typ)) { if (is_smart_shared(Eptr->info.typ)) fprintf(fhead, ",\n\t%s %s", c_type_id(Eptr->info.typ, "&"), ident(Eptr->sym->name)); else fprintf(fhead, ",\n\t%s %s", c_type_id(Eptr->info.typ->ref, "*"), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Ttemplate && is_smart(Eptr->info.typ->ref) && !is_smart_shared(Eptr->info.typ->ref)) continue; else if (Eptr->info.typ->type == Tclass || Eptr->info.typ->type == Tstruct || Eptr->info.typ->type == Tunion || Eptr->info.typ->type == Ttemplate) fprintf(fhead, ",\n\tconst %s& %s", c_type(Eptr->info.typ), ident(Eptr->sym->name)); else if ((Eptr->info.sto & Sconstptr)) fprintf(fhead, ",\n\tconst %s", c_type_id(Eptr->info.typ, Eptr->sym->name)); else if (Eptr->info.typ->type == Tarray) fprintf(fhead, ",\n\t%s const*%s", c_type(Eptr->info.typ->ref), ident(Eptr->sym->name)); else fprintf(fhead, ",\n\t%s", c_type_id(Eptr->info.typ, Eptr->sym->name)); if (derclass) fprintf(fhead, "__%d", derclass); } } } } if (namespaceid && !is_external(typ)) fprintf(fhead, ")\n{\n\t%s = %s::soap_new_%s(soap);\n\tif (_p)\n\t{\t", c_type_id(typ, "*_p"), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, ")\n{\n\t%s = ::soap_new_%s(soap);\n\tif (_p)\n\t{\t", c_type_id(typ, "*_p"), c_ident(typ)); else fprintf(fhead, ")\n{\n\t%s = soap_new_%s(soap);\n\tif (_p)\n\t{\t", c_type_id(typ, "*_p"), c_ident(typ)); if (!is_external(typ)) { if (typ->type == Tclass && !is_volatile(typ)) fprintf(fhead, "_p->soap_default(soap);"); else if (namespaceid && !is_external(typ)) fprintf(fhead, "%s::soap_default_%s(soap, _p);", namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "::soap_default_%s(soap, _p);", c_ident(typ)); else fprintf(fhead, "soap_default_%s(soap, _p);", c_ident(typ)); } flag = 0; if (!is_dynamic_array(typ)) { for (Tptr = (Table*)typ->ref, derclass = 0; Tptr; Tptr = Tptr->prev, derclass++) { for (Eptr = Tptr->list; Eptr; Eptr = Eptr->next) { if (is_repetition(Eptr) || is_anytype(Eptr)) flag = 2; if ((Eptr->info.minOccurs > 0 || flag) && !(Eptr->info.sto & (Sprivate | Sprotected | Sconst | Sstatic | Stypedef)) && Eptr->info.typ->type != Tfun && !is_soapref(Eptr->info.typ)) { if (flag) flag--; if (is_smart(Eptr->info.typ) && !is_smart_shared(Eptr->info.typ)) /* smart but not shared */ { if (typ->type == Tclass) fprintf(fhead, "\n\t\t_p->%s::%s = %s(%s", ident(Tptr->sym->name), ident(Eptr->sym->name), c_type(Eptr->info.typ), ident(Eptr->sym->name)); else fprintf(fhead, "\n\t\t_p->%s = %s(%s", ident(Eptr->sym->name), c_type(Eptr->info.typ), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Tarray) { if (is_fixedstring(Eptr->info.typ)) fprintf(fhead, "\n\t\tsoap_strcpy(_p->%s::%s, %d, %s", ident(Tptr->sym->name), ident(Eptr->sym->name), get_dimension(Eptr->info.typ), ident(Eptr->sym->name)); else if (typ->type == Tclass) fprintf(fhead, "\n\t\tfor (int i = 0; i < %d; i++) _p->%s::%s[i] = %s", get_dimension(Eptr->info.typ), ident(Tptr->sym->name), ident(Eptr->sym->name), ident(Eptr->sym->name)); else fprintf(fhead, "\n\t\tfor (int i = 0; i < %d; i++) _p->%s[i] = %s", get_dimension(Eptr->info.typ), ident(Eptr->sym->name), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Ttemplate && is_smart(Eptr->info.typ->ref) && !is_smart_shared(Eptr->info.typ->ref)) continue; else if (typ->type == Tclass) fprintf(fhead, "\n\t\t_p->%s::%s = %s", ident(Tptr->sym->name), ident(Eptr->sym->name), ident(Eptr->sym->name)); else fprintf(fhead, "\n\t\t_p->%s = %s", ident(Eptr->sym->name), ident(Eptr->sym->name)); if (derclass) fprintf(fhead, "__%d", derclass); if (is_fixedstring(Eptr->info.typ)) fprintf(fhead, ");"); else if (Eptr->info.typ->type == Tarray) fprintf(fhead, "[i];"); else if (is_smart(Eptr->info.typ) && !is_smart_shared(Eptr->info.typ)) /* smart but not shared */ fprintf(fhead, ");"); else fprintf(fhead, ";"); } } } } fprintf(fhead, "\n\t}\n\treturn _p;\n}"); fprintf(fhead, "\n\ninline %s * soap_new_set_%s(\n\tstruct soap *soap", c_type(typ), c_ident(typ)); for (Tptr = (Table*)typ->ref, derclass = 0; Tptr; Tptr = Tptr->prev, derclass++) { for (Eptr = Tptr->list; Eptr; Eptr = Eptr->next) { if (!(Eptr->info.sto & (Sprivate | Sprotected | Sconst | Sstatic | Stypedef)) && Eptr->info.typ->type != Tfun && strcmp(Eptr->sym->name, "soap")) { if (is_smart(Eptr->info.typ)) { if (is_smart_shared(Eptr->info.typ)) fprintf(fhead, ",\n\t%s %s", c_type_id(Eptr->info.typ, "&"), ident(Eptr->sym->name)); else fprintf(fhead, ",\n\t%s %s", c_type_id(Eptr->info.typ->ref, "*"), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Ttemplate && is_smart(Eptr->info.typ->ref) && !is_smart_shared(Eptr->info.typ->ref)) continue; else if (Eptr->info.typ->type == Tclass || Eptr->info.typ->type == Tstruct || Eptr->info.typ->type == Tunion || Eptr->info.typ->type == Ttemplate) fprintf(fhead, ",\n\tconst %s& %s", c_type(Eptr->info.typ), ident(Eptr->sym->name)); else if ((Eptr->info.sto & Sconstptr)) fprintf(fhead, ",\n\tconst %s", c_type_id(Eptr->info.typ, Eptr->sym->name)); else if (Eptr->info.typ->type == Tarray) fprintf(fhead, ",\n\t%s const*%s", c_type(Eptr->info.typ->ref), ident(Eptr->sym->name)); else fprintf(fhead, ",\n\t%s", c_type_id(Eptr->info.typ, Eptr->sym->name)); if (derclass) fprintf(fhead, "__%d", derclass); } } } if (namespaceid && !is_external(typ)) fprintf(fhead, ")\n{\n\t%s = %s::soap_new_%s(soap);\n\tif (_p)\n\t{\t", c_type_id(typ, "*_p"), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, ")\n{\n\t%s = ::soap_new_%s(soap);\n\tif (_p)\n\t{\t", c_type_id(typ, "*_p"), c_ident(typ)); else fprintf(fhead, ")\n{\n\t%s = soap_new_%s(soap);\n\tif (_p)\n\t{\t", c_type_id(typ, "*_p"), c_ident(typ)); if (!is_external(typ)) { if (typ->type == Tclass && !is_volatile(typ)) fprintf(fhead, "_p->soap_default(soap);"); else if (namespaceid && !is_external(typ)) fprintf(fhead, "%s::soap_default_%s(soap, _p);", namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "::soap_default_%s(soap, _p);", c_ident(typ)); else fprintf(fhead, "soap_default_%s(soap, _p);", c_ident(typ)); } for (Tptr = (Table*)typ->ref, derclass = 0; Tptr; Tptr = Tptr->prev, derclass++) { for (Eptr = Tptr->list; Eptr; Eptr = Eptr->next) { if (!(Eptr->info.sto & (Sprivate | Sprotected | Sconst | Sstatic | Stypedef)) && Eptr->info.typ->type != Tfun && strcmp(Eptr->sym->name, "soap")) { if (is_smart(Eptr->info.typ) && !is_smart_shared(Eptr->info.typ)) /* smart but not shared */ { if (typ->type == Tclass) fprintf(fhead, "\n\t\t_p->%s::%s = %s(%s", ident(Tptr->sym->name), ident(Eptr->sym->name), c_type(Eptr->info.typ), ident(Eptr->sym->name)); else fprintf(fhead, "\n\t\t_p->%s = %s(%s", ident(Eptr->sym->name), c_type(Eptr->info.typ), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Tarray) { if (is_fixedstring(Eptr->info.typ)) fprintf(fhead, "\n\t\tsoap_strcpy(_p->%s::%s, %d, %s", ident(Tptr->sym->name), ident(Eptr->sym->name), get_dimension(Eptr->info.typ), ident(Eptr->sym->name)); else if (typ->type == Tclass) fprintf(fhead, "\n\t\tfor (int i = 0; i < %d; i++) _p->%s::%s[i] = %s", get_dimension(Eptr->info.typ), ident(Tptr->sym->name), ident(Eptr->sym->name), ident(Eptr->sym->name)); else fprintf(fhead, "\n\t\tfor (int i = 0; i < %d; i++) _p->%s[i] = %s", get_dimension(Eptr->info.typ), ident(Eptr->sym->name), ident(Eptr->sym->name)); } else if (Eptr->info.typ->type == Ttemplate && is_smart(Eptr->info.typ->ref) && !is_smart_shared(Eptr->info.typ->ref)) continue; else if (typ->type == Tclass) fprintf(fhead, "\n\t\t_p->%s::%s = %s", ident(Tptr->sym->name), ident(Eptr->sym->name), ident(Eptr->sym->name)); else fprintf(fhead, "\n\t\t_p->%s = %s", ident(Eptr->sym->name), ident(Eptr->sym->name)); if (derclass) fprintf(fhead, "__%d", derclass); if (is_fixedstring(Eptr->info.typ)) fprintf(fhead, ");"); else if (Eptr->info.typ->type == Tarray) fprintf(fhead, "[i];"); else if (is_smart(Eptr->info.typ) && !is_smart_shared(Eptr->info.typ)) /* smart but not shared */ fprintf(fhead, ");"); else fprintf(fhead, ";"); } } } fprintf(fhead, "\n\t}\n\treturn _p;\n}"); } /* deprecated fprintf(fhead, "\n\ninline void soap_delete_%s(struct soap *soap, %s) { soap_delete(soap, p); }", c_ident(typ), c_type_id(typ, "*p")); */ fprintf(fout, "\n\nSOAP_FMAC1 %s * SOAP_FMAC2 %s_instantiate_%s(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size)", c_type(typ), fprefix, c_ident(typ)); fprintf(fout, "\n{"); fprintf(fout, "\n\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"%s_instantiate_%s(%%p, %%d, %%s, %%s)\\n\", (void*)soap, n, type?type:\"\", arrayType?arrayType:\"\"));", fprefix, c_ident(typ)); fprintf(fout, "\n\t(void)type; (void)arrayType; /* appease -Wall -Werror */"); for (Eptr = classtable->list; Eptr; Eptr = Eptr->next) { Tptr = ((Table *) Eptr->info.typ->ref); if (Tptr == ((Table *) typ->ref)) { continue; } derclass = 0; while (Tptr) { if (Tptr == (Table*)typ->ref) { derclass = 1; } Tptr = Tptr->prev; } if (derclass == 1 && !is_transient(Eptr->info.typ)) { if (is_dynamic_array(Eptr->info.typ) && !is_binary(Eptr->info.typ) && !has_ns(Eptr->info.typ) && !is_untyped(Eptr->info.typ)) fprintf(fout, "\n\tif (soap && arrayType && !soap_match_tag(soap, arrayType, \"%s\"))", xsi_type(Eptr->info.typ)); else fprintf(fout, "\n\tif (soap && type && !soap_match_tag(soap, type, \"%s\"))", the_type(Eptr->info.typ)); fprintf(fout, "\n\t\treturn %s_instantiate_%s(soap, n, NULL, NULL, size);", fprefix, c_ident(Eptr->info.typ)); derclass = 0; } } fprintf(fout, "\n\t%s;\n\tsize_t k = sizeof(%s);", c_type_id(typ, "*p"), c_type(typ)); fprintf(fout, "\n\tstruct soap_clist *cp = soap_link(soap, %s, n, %s_fdelete);", soap_type(typ), prefix); fprintf(fout, "\n\tif (!cp && soap && n != SOAP_NO_LINK_TO_DELETE)\n\t\treturn NULL;"); fprintf(fout, "\n\tif (n < 0)"); fprintf(fout, "\n\t{\tp = SOAP_NEW(soap, %s);", c_type(typ)); if ((s = has_soapref(typ))) fprintf(fout, "\n\t\tif (p)\n\t\t\tp->%s = soap;", s); fprintf(fout, "\n\t}\n\telse"); fprintf(fout, "\n\t{\tp = SOAP_NEW_ARRAY(soap, %s, n);", c_type(typ)); fprintf(fout, "\n\t\tk *= n;"); if (s) fprintf(fout, "\n\t\tif (p)\n\t\t\tfor (int i = 0; i < n; i++)\n\t\t\t\tp[i].%s = soap;", s); fprintf(fout, "\n\t}"); fprintf(fout, "\n\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Instantiated %s location=%%p n=%%d\\n\", (void*)p, n));", c_type(typ)); fprintf(fout, "\n\tif (size)\n\t\t*size = k;"); fprintf(fout, "\n\tif (!p)\n\t\tsoap->error = SOAP_EOM;"); fprintf(fout, "\n\telse if (cp)\n\t\tcp->ptr = (void*)p;"); fprintf(fout, "\n\treturn p;"); fprintf(fout, "\n}"); } void soap_dup(Tnode *typ) { if (!Ecflag) return; if (is_XML(typ)) return; if (typ->type != Tstruct && typ->type != Tclass && typ->type != Ttemplate && typ->type != Tpointer) return; if (typ->type != Tclass || !(typ->sym && (is_stdstring(typ) || is_stdwstring(typ)) && is_eq(typ->sym->name, "xsd__QName")) || is_imported(typ)) { if ((is_typedef(typ) && !is_external(typ)) || is_restriction(typ)) { fprintf(fhead, "\n\n#define %s_dup_%s %s_dup_%s\n", fprefix, c_ident(typ), fprefix, t_ident(typ)); return; } } if (typ->type == Tstruct && (is_anyType(typ) || is_anyAttribute(typ))) { if (strcmp(fprefix, "soap")) fprintf(fhead, "\n\n#define %s_dup_%s soap_dup_%s\n", fprefix, c_ident(typ), c_ident(typ)); return; } fprintf(fhead, "\n\nSOAP_FMAC1 %s * SOAP_FMAC2 %s_dup_%s(struct soap*, %s*, %s);", c_type(typ), fprefix, c_ident(typ), c_type(typ), c_type_constptr_id(typ, "const*")); fprintf(fout, "\n\nSOAP_FMAC1 %s * SOAP_FMAC2 %s_dup_%s(struct soap *soap, %s *d, %s)\n{", c_type(typ), fprefix, c_ident(typ), c_type(typ), c_type_constptr_id(typ, "const*a")); if (typ->type == Tclass || typ->type == Tstruct) { fprintf(fout, "\n\tstruct soap_plist *pp = NULL;"); if (typ->recursive) fprintf(fout, "\n\tchar *mark = NULL;"); } fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); if (typ->type == Tclass || typ->type == Tstruct) { if (typ->recursive) fprintf(fout, "\n\tif (!d && ((d = (%s*)soap_mark_lookup(soap, (const void*)a, %s, &pp, &mark)) || soap_mark_cycle(soap, pp)))\n\t\treturn d;", c_type(typ), soap_type(typ)); else fprintf(fout, "\n\tif (!d && (d = (%s*)soap_mark_lookup(soap, (const void*)a, %s, &pp, NULL)))\n\t\treturn d;", c_type(typ), soap_type(typ)); } if (cflag) fprintf(fout, "\n\tif (!d && !(d = (%s*)soap_malloc(soap, sizeof(%s))))\n\t\treturn NULL; /* ERROR */", c_type(typ), c_type(typ)); else if (typ->type == Tpointer) fprintf(fout, "\n\tif (!d && !(d = (%s*)soap_malloc(soap, sizeof(%s))))\n\t\treturn NULL; /* ERROR */", c_type(typ), c_type(typ)); else fprintf(fout, "\n\tif (!d && !(d = soap_new_%s(soap)))\n\t\treturn NULL; /* ERROR */", c_ident(typ)); if (typ->type == Tclass || typ->type == Tstruct) fprintf(fout, "\n\tsoap_mark_dup(soap, (void*)d, pp);"); fflush(fout); if (is_string(typ)) { fprintf(fout, "\n\t*d = NULL;\n\tif (*a)\n\t{\tstruct soap_plist *pp = NULL;\n\t\tif (!(*d = (%s)soap_mark_lookup(soap, (const void*)*a, %s, &pp, NULL)))", c_type(typ), soap_type(typ)); fprintf(fout, "\n\t\t\tsoap_mark_dup(soap, *d = soap_strdup(soap, *a), pp);\n\t}\n\telse\n\t\t*d = NULL;"); } else if (is_wstring(typ)) { fprintf(fout, "\n\tif (*a)\n\t{\tstruct soap_plist *pp = NULL;\n\t\tif (!(*d = (%s)soap_mark_lookup(soap, (const void*)*a, %s, &pp, NULL)))", c_type(typ), soap_type(typ)); fprintf(fout, "\n\t\t\tsoap_mark_dup(soap, *d = soap_wstrdup(soap, *a), pp);\n\t}\n\telse\n\t\t*d = NULL;"); } else if (typ->type == Tpointer) { Tnode *ref = typ->ref; if (ref->type == Tclass && !is_external(ref) && !is_volatile(ref) && !is_typedef(ref)) { fprintf(fout, "\n\tif (*a)\n\t\t*d = (*a)->soap_dup(soap);\n\telse\n\t\t*d = NULL;"); } else if (is_XML(ref) && is_string(ref)) { if (cflag) fprintf(fout, "\n\tif (*a && (*d = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t**d = soap_strdup(soap, **a);\n\telse\n\t\t*d = NULL;", c_type(typ), c_type(ref)); else fprintf(fout, "\n\tif (*a && (*d = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t**d = soap_strdup(soap, **a);\n\telse\n\t\t*d = NULL;", c_type(typ), c_type(ref)); } else if (is_XML(ref) && is_wstring(ref)) { if (cflag) fprintf(fout, "\n\tif (*a && (*d = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t**d = soap_wstrdup(soap, **a);\n\telse\n\t\t*d = NULL;", c_type(typ), c_type(ref)); else fprintf(fout, "\n\tif (*a && (*d = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t**d = soap_wstrdup(soap, **a);\n\telse\n\t\t*d = NULL;", c_type(typ), c_type(ref)); } else if (is_primitive(ref) || is_external(typ) || is_volatile(ref) || is_transient(ref)) { if (cflag) fprintf(fout, "\n\tif (*a && (*d = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t**d = **a;\n\telse\n\t\t*d = NULL;", c_type(typ), c_type(ref)); else if (is_primitive(ref)) fprintf(fout, "\n\tif (*a && (*d = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t**d = **a;\n\telse\n\t\t*d = NULL;", c_type(typ), c_type(ref)); else fprintf(fout, "\n\tif (*a && (*d = soap_new_%s(soap)))\n\t\t**d = **a;\n\telse\n\t\t*d = NULL;", c_ident(ref)); if (!is_primitive(ref) && is_transient(ref)) fprintf(fout, " /* transient (shallow copy) */"); } else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) { fprintf(fout, "\n\tif (*a)\n\t\t*d = %s_dup_%s(soap, NULL, *a);\n\telse\n\t\t*d = NULL;", fprefix, c_ident(ref)); } } else if (is_smart(typ)) { Tnode *ref = typ->ref; if (is_smart_shared(typ)) { fprintf(fout, "\n\tif (*a)\n\t{\tstruct soap_plist *pp = NULL;\n\t\tchar *mark = NULL;\n\t\t%s *sp = (%s*)soap_mark_lookup(soap, (const void*)a->get(), %s, &pp, &mark);\n\t\tif (sp)\n\t\t\t*d = *sp;\n\t\telse if (soap_mark_cycle(soap, pp))\n\t\t\treturn d;\n\t\telse\n\t\t{\t", c_type(typ), c_type(typ), soap_type(typ)); if (ref->type == Tclass && !is_external(ref) && !is_volatile(ref) && !is_typedef(ref) && !is_transient(ref)) fprintf(fout, "*d = %s((*a)->soap_alloc());\n\t\t\tsoap_mark_dup(soap, (void*)d, pp);\n\t\t\t(*a)->soap_dup(soap, (void*)d->get());", c_type(typ)); else if (is_primitive(ref) || is_external(ref) || is_volatile(ref) || is_transient(ref)) fprintf(fout, "*d = %s<%s>(**a);", make_shared(typ), c_type(ref)); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "*d = %s<%s>();\n\t\t\tsoap_mark_dup(soap, (void*)d, pp);\n\t\t\t%s_dup_%s(soap, d->get(), a->get());", make_shared(typ), c_type(ref), fprefix, c_ident(ref)); fprintf(fout, "\n\t\t\tsoap_unmark(soap, mark);\n\t\t}\n\t}"); } else { if (ref->type == Tclass && !is_external(ref) && !is_volatile(ref) && !is_typedef(ref) && !is_transient(ref)) fprintf(fout, "\n\tif (a->get())\n\t\t*d = %s((*a)->soap_dup(soap, (void*)(*a)->soap_alloc()));", c_type(typ)); else if (is_primitive(ref) || is_transient(ref)) fprintf(fout, "\n\tif (a->get() && (*d = %s(SOAP_NEW(soap, %s))).get())\n\t\t**d = **a;", c_type(typ), c_type(ref)); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\tif (a->get())\n\t\t*d = %s(%s_dup_%s(soap, SOAP_NEW(soap, %s), a->get()));", c_type(typ), fprefix, c_ident(ref), c_type(ref)); } } else if (typ->type == Ttemplate) { Tnode *ref = typ->ref; if (strcmp(typ->id->name, "std::set") || is_primitive(ref) || is_external(ref) || is_volatile(ref) || is_transient(ref)) fprintf(fout, "\n\t*d = *a;"); if (!is_primitive(ref) && !is_external(ref) && !is_volatile(ref) && !is_transient(ref)) { if (!strcmp(typ->id->name, "std::set")) { fprintf(fout, "\n\t%s v;\n\tfor (%s::const_iterator i = a->begin(); i != a->end(); ++i)\n\t{\t", c_type(ref), c_type(typ)); if (is_XML(ref) && is_string(ref)) fprintf(fout, "v = soap_strdup(soap, *i);\n\t\td->insert(v);"); else if (is_XML(ref) && is_wstring(ref)) fprintf(fout, "v = soap_wstrdup(soap, *i);\n\t\td->insert(v);"); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "%s_dup_%s(soap, &v, &*i);\n\t\td->insert(v);", fprefix, c_ident(ref)); else fprintf(fout, "\n\t\td->insert(*i);"); } else { fprintf(fout, "\n\t%s::iterator j = d->begin();\n\tfor (%s::const_iterator i = a->begin(); i != a->end(); ++i, ++j)\n\t{\t", c_type(typ), c_type(typ)); if (is_XML(ref) && is_string(ref)) fprintf(fout, "*j = soap_strdup(soap, *i);"); else if (is_XML(ref) && is_wstring(ref)) fprintf(fout, "*j = soap_wstrdup(soap, *i);"); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "%s_dup_%s(soap, &*j, &*i);", fprefix, c_ident(ref)); } fprintf(fout, "\n\t}"); } } else if (typ->ref) { Entry *p = is_dynamic_array(typ); if (p) { if (is_binary(typ)) { if (cflag) fprintf(fout, "\n\td->__ptr = NULL;\n\td->__size = a->__size;\n\tif (a->__ptr && a->__size > 0)\n\t{\td->__ptr = (unsigned char*)soap_malloc(soap, a->__size);\n\t\tsoap_memcpy(d->__ptr, d->__size, a->__ptr, a->__size);\n\t}"); else fprintf(fout, "\n\td->__ptr = NULL;\n\td->__size = a->__size;\n\tif (a->__ptr && a->__size > 0)\n\t{\td->__ptr = (unsigned char*)soap_malloc(soap, a->__size);\n\t\tsoap_memcpy(d->__ptr, d->__size, a->__ptr, a->__size);\n\t}"); if (is_attachment(typ)) fprintf(fout, "\n\td->id = soap_strdup(soap, a->id);\n\td->type = soap_strdup(soap, a->type);\n\td->options = soap_strdup(soap, a->options); /* WARNING: cannot copy binary DIME attachment options correctly, MIME/MTOM is OK */"); } else { Tnode *ref = p->info.typ->ref; int dim = get_Darraydims(typ); const char *d = ident(p->sym->name); fprintf(fout, "\n\tif (a->%s)\n\t{", d); if (dim) fprintf(fout, "\tsize_t i, n = soap_size(a->__size, %d);", dim); else fprintf(fout, "\tint i, n = a->__size;"); if (cflag) fprintf(fout, "\n\t\td->%s = (%s)soap_malloc(soap, n * sizeof(%s));", d, c_type(p->info.typ), c_type(ref)); else if (is_primitive(ref) || ref->type == Tpointer) fprintf(fout, "\n\t\td->%s = (%s)soap_malloc(soap, n * sizeof(%s));", d, c_type(p->info.typ), c_type(ref)); else fprintf(fout, "\n\t\td->%s = soap_new_%s(soap, n);", d, c_ident(ref)); fprintf(fout, "\n\t\tfor (i = 0; i < n; i++)"); if (is_XML(ref) && is_string(ref)) fprintf(fout, "\n\t\t\td->%s[i] = soap_strdup(soap, a->%s[i]);", d, d); else if (is_XML(ref) && is_wstring(ref)) fprintf(fout, "\n\t\t\td->%s[i] = soap_wstrdup(soap, a->%s[i]);", d, d); else if (is_primitive(ref) || is_transient(ref)) fprintf(fout, "\n\t\t\td->%s[i] = a->%s[i];", d, d); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t\t%s_dup_%s(soap, &d->%s[i], &a->%s[i]);", fprefix, c_ident(ref), d, d); fprintf(fout, "\n\t}\n\telse\n\t\td->%s = NULL;", d); if (dim) fprintf(fout, "\n\tsoap_memcpy(&d->__size, sizeof(d->__size), &a->__size, sizeof(a->__size));"); else fprintf(fout, "\n\td->__size = a->__size;"); if (has_offset(typ)) { if (dim) fprintf(fout, "\n\tsoap_memcpy(&d->__offset, sizeof(d->__offset), &a->__offset, sizeof(a->__offset));"); else fprintf(fout, "\n\td->__offset = a->__offset;"); } } } else { Table *t = (Table*)typ->ref; const char *b = ""; const char *c = ""; if (typ->type == Tclass) { b = ident(t->sym->name); c = "::"; } if (t->prev) fprintf(fout, "\n\t%s_dup_%s(soap, d, a);", fprefix, ident(t->prev->sym->name)); for (p = ((Table*)typ->ref)->list; p; p = p->next) { const char *d = ident(p->sym->name); if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) { continue; } else if (p->info.sto & Sconst) { fprintf(fout, "\n\t/* const %s skipped */", d); } else if (p->info.sto & Sstatic) { fprintf(fout, "\n\t/* static %s skipped */", d); } else if (p->info.sto & Stypedef) { fprintf(fout, "\n\t/* typedef %s skipped */", d); } else if (is_repetition(p)) { Tnode *ref = p->next->info.typ->ref; const char *e = ident(p->next->sym->name); fprintf(fout, "\n\td->%s%s%s = a->%s%s%s;\n\tif (a->%s%s%s > 0 && a->%s%s%s)", b, c, d, b, c, d, b, c, d, b, c, e); if (cflag) { if (ref->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t{\tint i;\n\t\td->%s%s%s = (const %s)soap_malloc(soap, a->%s%s%s * sizeof(%s));", b, c, e, c_type(p->next->info.typ), b, c, d, c_type(ref)); else fprintf(fout, "\n\t{\tint i;\n\t\td->%s%s%s = (%s)soap_malloc(soap, a->%s%s%s * sizeof(%s));", b, c, e, c_type(p->next->info.typ), b, c, d, c_type(ref)); } else if (is_primitive(ref) || ref->type == Tpointer) { if (ref->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t{\tint i;\n\t\td->%s%s%s = (const %s)soap_malloc(soap, a->%s%s%s * sizeof(%s));", b, c, e, c_type(p->next->info.typ), b, c, d, c_type(ref)); else fprintf(fout, "\n\t{\tint i;\n\t\td->%s%s%s = (%s)soap_malloc(soap, a->%s%s%s * sizeof(%s));", b, c, e, c_type(p->next->info.typ), b, c, d, c_type(ref)); } else { fprintf(fout, "\n\t{\tint i;\n\t\td->%s%s%s = soap_new_%s(soap, a->%s%s%s);", b, c, e, c_ident(ref), b, c, d); } fprintf(fout, "\n\t\tfor (i = 0; i < (int)a->%s%s%s; i++)", b, c, d); if (is_XML(ref) && is_string(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = soap_strdup(soap, a->%s%s%s[i]);", b, c, e, b, c, e); else if (is_XML(ref) && is_wstring(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = soap_wstrdup(soap, a->%s%s%s[i]);", b, c, e, b, c, e); else if (is_primitive(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = a->%s%s%s[i];", b, c, e, b, c, e); else if (ref->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t\t\t%s_dup_%s(soap, (%s)&d->%s%s%s[i], (%s)&a->%s%s%s[i]);", fprefix, c_ident(ref), c_type_id(ref, "*"), b, c, e, c_type_id(ref, "const*"), b, c, e); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t\t%s_dup_%s(soap, &d->%s%s%s[i], &a->%s%s%s[i]);", fprefix, c_ident(ref), b, c, e, b, c, e); fprintf(fout, "\n\t}\n\telse\n\t\td->%s%s%s = NULL;", b, c, e); p = p->next; } else if (is_anytype(p)) { fprintf(fout, "\n\td->%s%s%s = a->%s%s%s ? soap_dupelement(soap, a->%s%s%s, d->%s%s%s = a->%s%s%s) : NULL;", b, c, ident(p->next->sym->name), b, c, ident(p->next->sym->name), b, c, ident(p->next->sym->name), b, c, d, b, c, d); p = p->next; } else if (is_choice(p)) { Entry *q; const char *e = ident(p->next->sym->name); fprintf(fout, "\n\td->%s%s%s = a->%s%s%s;", b, c, d, b, c, d); fprintf(fout, "\n\tswitch (a->%s%s%s)\n\t{", b, c, d); t = (Table*)p->next->info.typ->ref; if (t) { for (q = t->list; q; q = q->next) { const char *f = ident(q->sym->name); fprintf(fout, "\n\t\tcase %s:", soap_union_member(p->next->info.typ, q)); if (is_XML(q->info.typ) && is_string(q->info.typ)) fprintf(fout, "\n\t\t\td->%s%s%s.%s = soap_strdup(soap, a->%s%s%s.%s);", b, c, e, f, b, c, e, f); else if (is_XML(q->info.typ) && is_wstring(q->info.typ)) fprintf(fout, "\n\t\t\td->%s%s%s.%s = soap_wstrdup(soap, a->%s%s%s.%s);", b, c, e, f, b, c, e, f); else if (is_primitive(q->info.typ)) fprintf(fout, "\n\t\t\td->%s%s%s.%s = a->%s%s%s.%s;", b, c, e, f, b, c, e, f); else if (is_transient(q->info.typ)) fprintf(fout, "\n\t\t\td->%s%s%s.%s = a->%s%s%s.%s; /* transient (shallow copy) */", b, c, e, f, b, c, e, f); else if (q->info.typ->type == Tclass || q->info.typ->type == Tstruct || q->info.typ->type == Ttemplate || q->info.typ->type == Tpointer) fprintf(fout, "\n\t\t\t%s_dup_%s(soap, &d->%s%s%s.%s, &a->%s%s%s.%s);", fprefix, c_ident(q->info.typ), b, c, e, f, b, c, e, f); fprintf(fout, "\n\t\t\tbreak;"); } } fprintf(fout, "\n\t}"); p = p->next; } else if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "\n\td->%s%s%s = soap_strdup(soap, (char*)a->%s%s%s);", b, c, d, b, c, d); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "\n\td->%s%s%s = soap_wstrdup(soap, (char*)a->%s%s%s);", b, c, d, b, c, d); } else if (is_soapref(p->info.typ)) { fprintf(fout, "\n\td->%s%s%s = soap;", b, c, d); } else if (is_primitive(p->info.typ)) { fprintf(fout, "\n\td->%s%s%s = a->%s%s%s;", b, c, d, b, c, d); } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\td->%s%s%s = a->%s%s%s; /* transient (shallow copy) */", b, c, d, b, c, d); } else if (p->info.typ->type == Tarray) { Tnode *ref = p->info.typ->ref; fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < %d; i++)", get_dimension(p->info.typ)); if (is_XML(ref) && is_string(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = soap_strdup(soap, a->%s%s%s[i]);", b, c, d, b, c, d); else if (is_XML(ref) && is_wstring(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = soap_wstrdup(soap, a->%s%s%s[i]);", b, c, d, b, c, d); else if (is_primitive(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = a->%s%s%s[i];", b, c, d, b, c, d); else if (is_transient(ref)) fprintf(fout, "\n\t\t\td->%s%s%s[i] = a->%s%s%s[i]; /* transient (shallow copy) */", b, c, d, b, c, d); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t\t%s_dup_%s(soap, &d->%s%s%s[i], &a->%s%s%s[i]);", fprefix, c_ident(ref), b, c, d, b, c, d); fprintf(fout, "\n\t}"); } else if (p->info.typ->type == Tpointer && (p->info.sto & Sconstptr)) { fprintf(fout, "\n\t%s_dup_%s(soap, (%s)&d->%s%s%s, (%s)&a->%s%s%s);", fprefix, c_ident(p->info.typ), c_type_id(p->info.typ, "*"), b, c, d, c_type_id(p->info.typ, "const*"), b, c, d); } else if (p->info.typ->type == Tclass || p->info.typ->type == Tstruct || p->info.typ->type == Ttemplate || p->info.typ->type == Tpointer) { fprintf(fout, "\n\t%s_dup_%s(soap, &d->%s%s%s, &a->%s%s%s);", fprefix, c_ident(p->info.typ), b, c, d, b, c, d); } else { fprintf(fout, "\n\t/* %s skipped */", d); } } } } else { fprintf(fout, "\n\t*d = *a;"); } if ((typ->type == Tclass || typ->type == Tstruct) && typ->recursive) fprintf(fout, "\n\tsoap_unmark(soap, mark);"); fprintf(fout, "\n\treturn d;\n}"); fflush(fout); } void soap_del(Tnode *typ) { if (!Edflag) return; if (is_XML(typ)) return; if (typ->type != Tstruct && typ->type != Tclass && typ->type != Ttemplate && typ->type != Tpointer) return; if (typ->type != Tclass || !(typ->sym && (is_stdstring(typ) || is_stdwstring(typ)) && is_eq(typ->sym->name, "xsd__QName")) || is_imported(typ)) { if ((is_typedef(typ) && !is_external(typ)) || is_restriction(typ)) { fprintf(fhead, "\n\n#define %s_del_%s %s_del_%s\n", fprefix, c_ident(typ), fprefix, t_ident(typ)); return; } } if (typ->type == Tstruct && (is_anyType(typ) || is_anyAttribute(typ))) { if (strcmp(fprefix, "soap")) fprintf(fhead, "\n\n#define %s_del_%s soap_del_%s\n", fprefix, c_ident(typ), c_ident(typ)); return; } fprintf(fhead, "\n\nSOAP_FMAC1 void SOAP_FMAC2 %s_del_%s(%s);", fprefix, c_ident(typ), c_type_constptr_id(typ, "const*")); fprintf(fout, "\n\nSOAP_FMAC1 void SOAP_FMAC2 %s_del_%s(%s)\n{", fprefix, c_ident(typ), c_type_constptr_id(typ, "const*a")); fprintf(fout, "\n\tif (!a)\n\t\treturn;"); fflush(fout); if (is_string(typ) || is_wstring(typ)) { if (cflag) fprintf(fout, "\n\tif (*a)\n\t\tSOAP_FREE(NULL, *a);"); else fprintf(fout, "\n\tif (*a)\n\t\tSOAP_FREE(NULL, *a);"); } else if (typ->type == Tpointer) { Tnode *ref = typ->ref; if (ref->type == Tclass && !is_external(ref) && !is_volatile(ref) && !is_typedef(ref)) fprintf(fout, "\n\tif (*a)\n\t{\t(*a)->soap_del();\n\t\tSOAP_DELETE(NULL, *a, %s);\n\t}", c_type(ref)); else if (is_XML(ref)) { if (cflag) fprintf(fout, "\n\tif (*a)\n\t{\tif (**a)\n\t\t\tSOAP_FREE(NULL, **a);\n\t\tSOAP_FREE(NULL, *a);\n\t}"); else fprintf(fout, "\n\tif (*a)\n\t{\tif (**a)\n\t\t\tSOAP_FREE(NULL, **a);\n\t\tSOAP_FREE(NULL, *a);\n\t}"); } else if (is_primitive(ref) || is_external(typ) || is_volatile(ref) || is_transient(ref)) { if (cflag) fprintf(fout, "\n\tif (*a)\n\t\tSOAP_FREE(NULL, *a);"); else if (is_primitive(ref)) fprintf(fout, "\n\tif (*a)\n\t\tSOAP_FREE(NULL, *a);"); else fprintf(fout, "\n\tif (*a)\n\t\tSOAP_DELETE(NULL, *a, %s);", c_type(ref)); } else if (cflag) fprintf(fout, "\n\tif (*a)\n\t{\t%s_del_%s(*a);\n\t\tSOAP_FREE(NULL, *a);\n\t}", fprefix, c_ident(ref)); else if (ref->type == Tpointer) fprintf(fout, "\n\tif (*a)\n\t{\t%s_del_%s(*a);\n\t\tSOAP_FREE(NULL, *a);\n\t}", fprefix, c_ident(ref)); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate) fprintf(fout, "\n\tif (*a)\n\t{\t%s_del_%s(*a);\n\t\tSOAP_DELETE(NULL, *a, %s);\n\t}", fprefix, c_ident(ref), c_type(ref)); } else if (is_smart(typ)) { Tnode *ref = typ->ref; if (is_smart_shared(typ)) { if (ref->type == Tclass && !is_external(ref) && !is_volatile(ref) && !is_typedef(ref) && !is_transient(ref)) fprintf(fout, "\n\tif (*a)\n\t\t(*a)->soap_del();"); else if (is_primitive(ref) || is_transient(ref)) ; else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\tif (*a)\n\t\t%s_del_%s(a->get());", fprefix, c_ident(ref)); } else { if (ref->type == Tclass && !is_external(ref) && !is_volatile(ref) && !is_typedef(ref) && !is_transient(ref)) fprintf(fout, "\n\tif (a->get())\n\t\t(*a)->soap_del();"); else if (is_primitive(ref) || is_transient(ref)) ; else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\tif (a->get())\n\t\t%s_del_%s(a->get());", fprefix, c_ident(ref)); } } else if (typ->type == Ttemplate) { Tnode *ref = typ->ref; if (!is_primitive(ref) && !is_external(typ) && !is_volatile(ref) && !is_transient(ref)) { fprintf(fout, "\n\tfor (%s::const_iterator i = a->begin(); i != a->end(); ++i)", c_type(typ)); if (is_XML(ref)) fprintf(fout, "\n\t\tSOAP_FREE(NULL, *i);"); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t%s_del_%s(&*i);", fprefix, c_ident(ref)); else fprintf(fout, "\n\t\t; /* skipped */"); } } else if (typ->ref) { Entry *p = is_dynamic_array(typ); if (p) { if (is_binary(typ)) { if (cflag) fprintf(fout, "\n\tif (a->__ptr)\n\t\tSOAP_FREE(NULL, a->__ptr);"); else fprintf(fout, "\n\tif (a->__ptr)\n\t\tSOAP_FREE(NULL, a->__ptr);"); if (is_attachment(typ)) { if (cflag) fprintf(fout, "\n\tif (a->id)\n\t\tSOAP_FREE(NULL, a->id);\n\tif (a->type)\n\t\tSOAP_FREE(NULL, a->type);\n\tif (a->options)\n\t\tSOAP_FREE(NULL, a->options);"); else fprintf(fout, "\n\tif (a->id)\n\t\tSOAP_FREE(NULL, a->id);\n\tif (a->type)\n\t\tSOAP_FREE(NULL, a->type);\n\tif (a->options)\n\t\tSOAP_FREE(NULL, a->options);"); } } else { Tnode *ref = p->info.typ->ref; int dim = get_Darraydims(typ); const char *d = ident(p->sym->name); fprintf(fout, "\n\tif (a->%s)\n\t{", d); if (!is_primitive(ref) && !is_transient(ref)) { if (dim) fprintf(fout, "\tsize_t i, n = soap_size(a->__size, %d);", dim); else fprintf(fout, "\tint i, n = a->__size;"); fprintf(fout, "\n\t\tfor (i = 0; i < n; i++)"); if (is_XML(ref)) fprintf(fout, "\n\t\t\tSOAP_FREE(NULL, a->%s[i]);", d); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t\t%s_del_%s(&a->%s[i]);", fprefix, c_ident(ref), d); } if (cflag || is_primitive(ref) || ref->type == Tpointer) fprintf(fout, "\n\t\tSOAP_FREE(NULL, a->%s);\n\t}", d); else fprintf(fout, "\n\t\tSOAP_DELETE_ARRAY(NULL, a->%s, %s);\n\t}", d, c_type(ref)); } } else { Table *t = (Table*)typ->ref; const char *b = ""; const char *c = ""; if (typ->type == Tclass) { b = ident(t->sym->name); c = "::"; } if (t->prev) fprintf(fout, "\n\t%s_del_%s(a);", fprefix, ident(t->prev->sym->name)); for (p = ((Table*)typ->ref)->list; p; p = p->next) { const char *d = ident(p->sym->name); if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) { continue; } else if (p->info.sto & Sconst) { fprintf(fout, "\n\t/* const %s skipped */", d); } else if (p->info.sto & Sstatic) { fprintf(fout, "\n\t/* static %s skipped */", d); } else if (p->info.sto & Stypedef) { fprintf(fout, "\n\t/* typedef %s skipped */", d); } else if (is_repetition(p)) { Tnode *ref = p->next->info.typ->ref; const char *e = ident(p->next->sym->name); fprintf(fout, "\n\tif (a->%s%s%s)\n\t{", b, c, e); if (!is_primitive(ref) && !is_transient(ref)) { fprintf(fout, "\tint i;\n\t\tfor (i = 0; i < (int)a->%s%s%s; i++)", b, c, d); if (is_XML(ref)) fprintf(fout, "\n\t\t\tSOAP_FREE(NULL, a->%s%s%s[i]);", b, c, e); else if (ref->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t\t\t%s_del_%s((%s)&a->%s%s%s[i]);", fprefix, c_ident(ref), c_type_id(ref, "*"), b, c, e); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t\t%s_del_%s(&a->%s%s%s[i]);", fprefix, c_ident(ref), b, c, e); } if (cflag) fprintf(fout, "\n\t\tSOAP_FREE(NULL, a->%s%s%s);\n\t}", b, c, e); else if (is_primitive(ref) || ref->type == Tpointer) fprintf(fout, "\n\t\tSOAP_FREE(NULL, a->%s%s%s);\n\t}", b, c, e); else fprintf(fout, "\n\t\tSOAP_DELETE_ARRAY(soap, a->%s%s%s, %s);\n\t}", b, c, e, c_type(ref)); p = p->next; } else if (is_anytype(p)) { fprintf(fout, "\n\tif (a->%s%s%s)\n\t\tsoap_delelement(a->%s%s%s, a->%s%s%s);", b, c, ident(p->next->sym->name), b, c, ident(p->next->sym->name), b, c, d); p = p->next; } else if (is_choice(p)) { Entry *q; const char *e = ident(p->next->sym->name); fprintf(fout, "\n\tswitch (a->%s%s%s)\n\t{", b, c, d); t = (Table*)p->next->info.typ->ref; if (t) { for (q = t->list; q; q = q->next) { if (!is_primitive(q->info.typ) && !is_transient(q->info.typ)) { const char *f = ident(q->sym->name); fprintf(fout, "\n\t\tcase %s:", soap_union_member(p->next->info.typ, q)); if (is_XML(q->info.typ)) fprintf(fout, "\n\t\t\tif (a->%s%s%s.%s)\n\t\t\t\tSOAP_FREE(NULL, a->%s%s%s.%s);", b, c, e, f, b, c, e, f); else if (q->info.typ->type == Tclass || q->info.typ->type == Tstruct || q->info.typ->type == Ttemplate || q->info.typ->type == Tpointer) fprintf(fout, "\n\t\t\t%s_del_%s(&a->%s%s%s.%s);", fprefix, c_ident(q->info.typ), b, c, e, f); fprintf(fout, "\n\t\t\tbreak;"); } } } fprintf(fout, "\n\t}"); p = p->next; } else if (is_XML(p->info.typ)) { fprintf(fout, "\n\tif (a->%s%s%s)\n\t\tSOAP_FREE(NULL, a->%s%s%s);", b, c, d, b, c, d); } else if (p->info.typ->type == Tpointer && (p->info.sto & Sconstptr)) { fprintf(fout, "\n\t%s_del_%s((%s)&a->%s%s%s);", fprefix, c_ident(p->info.typ), c_type_id(p->info.typ, "*"), b, c, d); } else if (is_primitive(p->info.typ)) { fprintf(fout, "\n\t/* %s skipped */", d); } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\t/* transient %s skipped */", d); } else if (p->info.typ->type == Tarray) { Tnode *ref = p->info.typ->ref; if (!is_primitive(ref) && !is_transient(ref)) { fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < %d; i++)", get_dimension(p->info.typ)); if (is_XML(ref)) fprintf(fout, "\n\t\t\tif (a->%s%s%s[i])\n\t\t\t\tSOAP_FREE(NULL, a->%s%s%s[i]);", b, c, d, b, c, d); else if (ref->type == Tclass || ref->type == Tstruct || ref->type == Ttemplate || ref->type == Tpointer) fprintf(fout, "\n\t\t\t%s_del_%s(&a->%s%s%s[i]);", fprefix, c_ident(ref), b, c, d); fprintf(fout, "\n\t}"); } } else if (p->info.typ->type == Tclass || p->info.typ->type == Tstruct || p->info.typ->type == Ttemplate || p->info.typ->type == Tpointer) { fprintf(fout, "\n\t%s_del_%s(&a->%s%s%s);", fprefix, c_ident(p->info.typ), b, c, d); } else { fprintf(fout, "\n\t/* %s skipped */", d); } } } } fprintf(fout, "\n}"); fflush(fout); } int get_dimension(Tnode *typ) { if (((Tnode*)typ->ref)->width) return typ->width / ((Tnode*) typ->ref)->width; return 0; } void soap_serialize(Tnode *typ) { int d; Table *table, *t; Entry *p; Tnode* temp; int cardinality; const char *self; if (is_XML(typ)) return; if (is_primitive(typ)) return; if (is_typedef(typ) && (is_template(typ) || is_element(typ) || is_restriction(typ) || is_external(typ) || is_imported(typ)) && (!is_external(typ) || is_volatile(typ))) { if (typ->type == Tclass && !is_stdstring(typ) && !is_stdwstring(typ) && !is_volatile(typ)) fprintf(fhead, "\n\n#define soap_serialize_%s(soap, a) (a)->soap_serialize(soap)\n", c_ident(typ)); else fprintf(fhead, "\n\n#define soap_serialize_%s soap_serialize_%s\n", c_ident(typ), t_ident(typ)); return; } if ((p = is_dynamic_array(typ))) { if (typ->type == Tclass && !is_typedef(typ) && !is_volatile(typ)) { if (is_external(typ)) return; fprintf(fout, "\n\nvoid %s::soap_serialize(struct soap *soap) const\n{", c_ident(typ)); fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF"); if (is_binary(typ)) { if (is_attachment(typ)) fprintf(fout, "\n\tif (this->__ptr)\n\t\t(void)soap_attachment_reference(soap, this, this->__ptr, this->__size, %s, this->id, this->type);\n#endif\n}", soap_type(typ)); else fprintf(fout, "\n\tif (this->__ptr)\n\t\t(void)soap_array_reference(soap, this, this->__ptr, this->__size, %s);\n#endif\n}", soap_type(typ)); fflush(fout); return; } else { d = get_Darraydims(typ); if (d) { fprintf(fout, "\n\tif (this->%s && !soap_array_reference(soap, this, this->%s, %s, %s))", ident(p->sym->name), ident(p->sym->name), get_Darraysize("this", d), soap_type(typ)); fprintf(fout, "\n\t{\tsize_t i, n = soap_size(this->__size, %d);", d); fprintf(fout, "\n\t\tfor (i = 0; i < n; i++)"); } else { fprintf(fout, "\n\tif (this->%s && !soap_array_reference(soap, this, this->%s, this->__size, %s))", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\t{\tfor (size_t i = 0; i < (size_t)this->__size; i++)"); } fprintf(fout, "\n\t\t{"); if (has_ptr((Tnode*)p->info.typ->ref)) fprintf(fout, "\tsoap_embedded(soap, this->%s + i, %s);", ident(p->sym->name), soap_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tclass && !is_XML((Tnode*)p->info.typ->ref) && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tthis->%s[i].soap_serialize(soap);", ident(p->sym->name)); else if (is_string((Tnode*)p->info.typ->ref) && !is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (char*const*)(this->%s + i));", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); else if (is_wstring((Tnode*)p->info.typ->ref) && !is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (wchar_t*const*)(this->%s + i));", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); else if (!is_XML((Tnode*)p->info.typ->ref) && !is_primitive((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, this->%s + i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); fprintf(fout, "\n\t\t}\n\t}\n#endif\n}"); return; } } else { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, const %s)\n{", c_ident(typ), c_type_id(typ, "*a")); if (is_binary(typ)) { fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF"); if (is_attachment(typ)) fprintf(fout, "\n\tif (a->%s)\n\t\t(void)soap_attachment_reference(soap, a, a->%s, a->__size, %s, a->id, a->type);\n#endif\n}", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); else fprintf(fout, "\n\tif (a->%s)\n\t\t(void)soap_array_reference(soap, a, a->%s, a->__size, %s);\n#endif\n}", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fflush(fout); return; } else { fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF"); d = get_Darraydims(typ); if (d) { fprintf(fout, "\n\tif (a->%s && !soap_array_reference(soap, a, a->%s, %s, %s))", ident(p->sym->name), ident(p->sym->name), get_Darraysize("a", d), soap_type(typ)); fprintf(fout, "\n\t{\tsize_t i, n = soap_size(a->__size, %d);", d); fprintf(fout, "\n\t\tfor (i = 0; i < n; i++)"); } else { fprintf(fout, "\n\tif (a->%s && !soap_array_reference(soap, a, a->%s, a->__size, %s))", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < a->__size; i++)"); } fprintf(fout, "\n\t\t{"); if (has_ptr((Tnode*)p->info.typ->ref)) fprintf(fout, "\tsoap_embedded(soap, a->%s + i, %s);", ident(p->sym->name), soap_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tclass && !is_XML((Tnode*)p->info.typ->ref) && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\ta->%s[i].soap_serialize(soap);", ident(p->sym->name)); else if (is_string((Tnode*)p->info.typ->ref) && !is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (char*const*)(a->%s + i));", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); else if (is_wstring((Tnode*)p->info.typ->ref) && !is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (wchar_t*const*)(a->%s + i));", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); else if (!is_XML((Tnode*)p->info.typ->ref) && !is_primitive((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, a->%s + i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); fprintf(fout, "\n\t\t}\n\t}\n#endif\n}"); fflush(fout); return; } } } if (is_stdstring(typ) || is_stdwstring(typ)) { fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, const %s)\n{\t(void)soap; (void)a; /* appease -Wall -Werror */\n}", c_ident(typ), c_type_id(typ, "*a")); return; } switch(typ->type) { case Tclass: if (!is_volatile(typ) && typ->ref) /* fall through to switch case Tstruct */ { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); return; } if (!is_typedef(typ)) { self = "this"; fprintf(fout, "\n\nvoid %s::soap_serialize(struct soap *soap) const\n{\n\t(void)soap; /* appease -Wall -Werror */", ident(typ->id->name)); } else { self = "p"; fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, const %s)\n{\n\t(void)soap; (void)p; /* appease -Wall -Werror */", c_ident(typ), c_type_id(typ, "*p")); } fprintf(fout, "\n#ifndef WITH_NOIDREF"); table = (Table*)typ->ref; for (p = table->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { if (!is_XML(p->next->info.typ)) { fprintf(fout, "\n\tif (%s->%s::%s)", self, ident(table->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)%s->%s::%s; i++)\n\t\t{", self, ident(table->sym->name), ident(p->sym->name)); if (!is_invisible(p->next->sym->name)) if (has_ptr((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_embedded(soap, %s->%s::%s + i, %s);", self, ident(table->sym->name), ident(p->next->sym->name), soap_type((Tnode*)p->next->info.typ->ref)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t%s->%s::%s[i].soap_serialize(soap);", self, ident(table->sym->name), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (char*const*)(%s->%s::%s + i));", c_ident((Tnode*)p->next->info.typ->ref), self, ident(table->sym->name), ident(p->next->sym->name)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (wchar_t*const*)(%s->%s::%s + i));", c_ident((Tnode*)p->next->info.typ->ref), self, ident(table->sym->name), ident(p->next->sym->name)); else if (!is_primitive((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, %s->%s::%s + i);", c_ident((Tnode*)p->next->info.typ->ref), self, ident(table->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t}\n\t}"); } p = p->next; } else if (is_anytype(p)) { fprintf(fout, "\n\tsoap_markelement(soap, %s->%s, %s->%s);", self, ident(p->next->sym->name), self, ident(p->sym->name)); p = p->next; } else if (is_choice(p)) { fprintf(fout, "\n\tsoap_serialize_%s(soap, %s->%s::%s, &%s->%s::%s);", c_ident(p->next->info.typ), self, ident(table->sym->name), ident(p->sym->name), self, ident(table->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); } else if (p->info.typ->type == Tarray) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, %s->%s::%s, %s);", self, ident(table->sym->name), ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tsoap_serialize_%s(soap, %s->%s::%s);", c_ident(p->info.typ), self, ident(table->sym->name), ident(p->sym->name)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &%s->%s::%s, %s);", self, ident(table->sym->name), ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\t%s->%s::%s.soap_serialize(soap);", self, ident(table->sym->name), ident(p->sym->name)); } else if (!is_void(p->info.typ) && !is_XML(p->info.typ)) { if (!is_template(p->info.typ)) if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &%s->%s::%s, %s);", self, ident(table->sym->name), ident(p->sym->name), soap_type(p->info.typ)); if (is_string(p->info.typ)) fprintf(fout, "\n\tsoap_serialize_%s(soap, (char*const*)&%s->%s::%s);", c_ident(p->info.typ), self, ident(table->sym->name), ident(p->sym->name)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tsoap_serialize_%s(soap, (wchar_t*const*)&%s->%s::%s);", c_ident(p->info.typ), self, ident(table->sym->name), ident(p->sym->name)); else if ((p->info.typ->type == Treference || p->info.typ->type == Trvalueref) && ((Tnode*)(p->info.typ->ref))->type == Tclass && !is_external(p->info.typ->ref) && !is_volatile(p->info.typ->ref)) fprintf(fout, "\n\t%s->%s::%s.soap_serialize(soap);", self, ident(table->sym->name), ident(p->sym->name)); else if ((p->info.typ->type == Treference || p->info.typ->type == Trvalueref) && !is_primitive(p->info.typ->ref)) fprintf(fout, "\n\tsoap_serialize_%s(soap, &%s->%s::%s);", c_ident(p->info.typ), self, ident(table->sym->name), ident(p->sym->name)); else if (!is_primitive(p->info.typ) && p->info.typ->type != Treference && p->info.typ->type != Trvalueref) fprintf(fout, "\n\tsoap_serialize_%s(soap, &%s->%s::%s);", c_ident(p->info.typ), self, ident(table->sym->name), ident(p->sym->name)); else if (!is_primitive(p->info.typ)) fprintf(fout, "\n\t/* %s skipped */", ident(p->sym->name)); } } if (table && table->prev) fprintf(fout, "\n\t%s->%s::soap_serialize(soap);", self, ident(table->prev->sym->name)); fprintf(fout, "\n#endif\n}"); break; } /* fall through to next case when class is volatile, since serializers cannot be member functions */ case Tstruct: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, const %s)\n{", c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF"); table = (Table*)typ->ref; for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { if (!is_XML(p->next->info.typ)) { fprintf(fout, "\n\tif (a->%s)", ident(p->next->sym->name)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)a->%s; i++)\n\t\t{", ident(p->sym->name)); if (!is_invisible(p->next->sym->name)) if (has_ptr((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_embedded(soap, a->%s + i, %s);", ident(p->next->sym->name), soap_type((Tnode*)p->next->info.typ->ref)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\ta->%s[i].soap_serialize(soap);", ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (char*const*)(a->%s + i));", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, (wchar_t*const*)(a->%s + i));", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); else if (!is_primitive((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_serialize_%s(soap, a->%s + i);", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); fprintf(fout, "\n\t\t}\n\t}"); } p = p->next; } else if (is_anytype(p)) { fprintf(fout, "\n\tsoap_markelement(soap, a->%s, a->%s);", ident(p->next->sym->name), ident(p->sym->name)); p = p->next; } else if (is_choice(p)) { fprintf(fout, "\n\tsoap_serialize_%s(soap, a->%s, &a->%s);", c_ident(p->next->info.typ), ident(p->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); } else if (p->info.typ->type == Tarray) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tsoap_serialize_%s(soap, a->%s);", c_ident(p->info.typ), ident(p->sym->name)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\ta->%s.soap_serialize(soap);", ident(p->sym->name)); } else if (!is_void(p->info.typ) && !is_XML(p->info.typ)) { if (!is_template(p->info.typ)) if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); if (is_string(p->info.typ)) fprintf(fout, "\n\tsoap_serialize_%s(soap, (char*const*)&a->%s);", c_ident(p->info.typ), ident(p->sym->name)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tsoap_serialize_%s(soap, (wchar_t*const*)&a->%s);", c_ident(p->info.typ), ident(p->sym->name)); else if ((p->info.typ->type == Treference || p->info.typ->type == Trvalueref) && ((Tnode*)(p->info.typ->ref))->type == Tclass && !is_external(p->info.typ->ref) && !is_volatile(p->info.typ->ref)) fprintf(fout, "\n\ta->%s.soap_serialize(soap);", ident(p->sym->name)); else if ((p->info.typ->type == Treference || p->info.typ->type == Trvalueref) && !is_primitive(p->info.typ->ref)) fprintf(fout, "\n\tsoap_serialize_%s(soap, &a->%s);", c_ident(p->info.typ), ident(p->sym->name)); else if (!is_primitive(p->info.typ) && p->info.typ->type != Treference && p->info.typ->type != Trvalueref) fprintf(fout, "\n\tsoap_serialize_%s(soap, &a->%s);", c_ident(p->info.typ), ident(p->sym->name)); else if (!is_primitive(p->info.typ)) fprintf(fout, "\n\t/* %s skipped */", ident(p->sym->name)); } } } fprintf(fout, "\n#endif\n}"); break; case Tunion: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, int, const %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, int, const %s);", c_ident(typ), c_type_id(typ, "*")); if (!typ->ref) return; fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, int choice, const %s)\n{", c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)soap; (void)choice; (void)a; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF"); fprintf(fout, "\n\tswitch (choice)\n\t{"); table = (Table*)typ->ref; for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) ; else if (is_anytype(p)) ; else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.typ->type == Tarray) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); if (has_ptr(p->info.typ)) fprintf(fout, "\n\t\tsoap_embedded(soap, a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\t\tsoap_serialize_%s(soap, a->%s);", c_ident(p->info.typ), ident(p->sym->name)); fprintf(fout, "\n\t\tbreak;"); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); if (has_ptr(p->info.typ)) fprintf(fout, "\n\t\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\t\ta->%s.soap_serialize(soap);", ident(p->sym->name)); fprintf(fout, "\n\t\tbreak;"); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ) && !is_XML(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); if (has_ptr(p->info.typ)) fprintf(fout, "\n\t\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); if (!is_primitive(p->info.typ)) fprintf(fout, "\n\t\tsoap_serialize_%s(soap, &a->%s);", c_ident(p->info.typ), ident(p->sym->name)); fprintf(fout, "\n\t\tbreak;"); } } } fprintf(fout, "\n\tdefault:\n\t\tbreak;\n\t}\n#endif\n}"); break; case Tpointer: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, %s);", c_ident(typ), c_type_constptr_id(typ, "const*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, %s);", c_ident(typ), c_type_constptr_id(typ, "const*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, %s)\n{\n\t(void)soap; (void)a; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF", c_ident(typ), c_type_constptr_id(typ, "const*a")); temp = (Tnode*)typ->ref; if (!temp) return; if (is_string(typ) || is_wstring(typ)) fprintf(fout, "\n\t(void)soap_reference(soap, *a, %s);", soap_type(typ)); else if (is_primitive(temp)) fprintf(fout, "\n\t(void)soap_reference(soap, *a, %s);", soap_type(temp)); else { if (is_dynamic_array(temp)) fprintf(fout, "\n\tif (*a)"); else fprintf(fout, "\n\tif (!soap_reference(soap, *a, %s))", soap_type(temp)); if (temp->type == Tclass && !is_external(temp) && !is_volatile(temp) && !is_typedef(temp)) fprintf(fout, "\n\t\t(*a)->soap_serialize(soap);"); else fprintf(fout, "\n\t\tsoap_serialize_%s(soap, *a);", c_ident(temp)); } fprintf(fout, "\n#endif\n}"); break; case Tarray: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "const")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "const")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, %s)\n{", c_ident(typ), c_type_id(typ, "const a")); if (!is_primitive((Tnode*)typ->ref)) { fprintf(fout, "\n\tint i;"); fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */\n#ifndef WITH_NOIDREF"); fprintf(fout, "\n\tfor (i = 0; i < %d; i++)", get_dimension(typ)); temp = (Tnode*)typ->ref;; cardinality = 1; while (temp->type == Tarray) { temp=(Tnode*)temp->ref; cardinality++; } fprintf(fout, "\n\t{"); if (has_ptr((Tnode*)typ->ref)) { fprintf(fout, "\tsoap_embedded(soap, a"); if (cardinality > 1) fprintf(fout, "[i]"); else fprintf(fout, "+i"); fprintf(fout, ", %s);", soap_type((Tnode*)typ->ref)); } if (((Tnode *)typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { fprintf(fout, "\n\ta[i].soap_serialize(soap)"); } else if (!is_primitive((Tnode*)typ->ref)) { fprintf(fout, "\n\tsoap_serialize_%s(soap, a", c_ident((Tnode*)typ->ref)); if (cardinality > 1) { fprintf(fout, "[i])"); } else { fprintf(fout, "+i)"); } } fprintf(fout, ";\n\t}"); fprintf(fout, "\n#endif\n}"); } else fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */\n}"); break; case Ttemplate: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap*, const %s);", c_ident(typ), c_type_id(typ, "*")); temp = (Tnode*)typ->ref; if (!temp) return; fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_serialize_%s(struct soap *soap, const %s)\n{\n\t(void)soap; (void)a;/* appease -Wall -Werror */\n#ifndef WITH_NOIDREF", c_ident(typ), c_type_id(typ, "*a")); if (!is_XML(temp) && temp->type != Tfun && !is_void(temp)) { if (is_smart(typ)) { if (is_primitive(temp)) fprintf(fout, "\n\t(void)soap_reference(soap, a->get(), %s);", soap_type(temp)); else { if (is_dynamic_array(temp)) fprintf(fout, "\n\tif (a->get())"); else fprintf(fout, "\n\tif (!soap_reference(soap, a->get(), %s))", soap_type(temp)); if (temp->type == Tclass && !is_external(temp) && !is_volatile(temp) && !is_typedef(temp)) fprintf(fout, "\n\t\t(*a)->soap_serialize(soap);"); else fprintf(fout, "\n\t\tsoap_serialize_%s(soap, a->get());", c_ident(temp)); } } else if (!is_primitive(temp)) { fprintf(fout, "\n\tfor (%s::const_iterator i = a->begin(); i != a->end(); ++i)", c_type(typ)); if (temp->type == Tclass && !is_external(temp) && !is_volatile(temp) && !is_typedef(temp)) fprintf(fout, "\n\t\t(*i).soap_serialize(soap);"); else fprintf(fout, "\n\t\tsoap_serialize_%s(soap, &(*i));", c_ident(temp)); } } fprintf(fout, "\n#endif\n}"); default: break; } } void soap_default(Tnode* typ) { int i, d; Table *table, *t; Entry *p; Tnode *temp; const char *s; int cardinality; if (is_XML(typ)) return; if (typ->type == Tpointer && !is_string(typ) && !is_wstring(typ)) return; if (is_typedef(typ) && (is_template(typ) || is_element(typ) || is_restriction(typ) || is_external(typ) || is_imported(typ)) && (!is_external(typ) || is_volatile(typ))) { if (typ->type == Tclass && !is_stdstring(typ) && !is_stdwstring(typ) && !is_volatile(typ)) fprintf(fhead, "\n\n#define soap_default_%s(soap, a) (a)->%s::soap_default(soap)\n", c_ident(typ), t_ident(typ)); else if (typ->type == Tclass && is_eq(typ->sym->name, "xsd__QName")) fprintf(fhead, "\n\n#define soap_default_%s soap_default_std__string\n", c_ident(typ)); else fprintf(fhead, "\n\n#define soap_default_%s soap_default_%s\n", c_ident(typ), t_ident(typ)); return; } p = is_dynamic_array(typ); if (p) { if (typ->type == Tclass && !is_typedef(typ) && !is_volatile(typ)) { if (is_external(typ)) return; fprintf(fout, "\n\nvoid %s::soap_default(struct soap *soap)\n{", c_ident(typ)); if ((s = has_soapref(typ))) fprintf(fout, "\n\tthis->%s = soap;", s); else fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */"); if (is_smart(p->info.typ)) fprintf(fout, "\n\tthis->%s.reset();", ident(p->sym->name)); else fprintf(fout, "\n\tthis->%s = NULL;", ident(p->sym->name)); d = get_Darraydims(typ); if (d) { for (i = 0; i < d; i++) { fprintf(fout, "\n\tthis->__size[%d] = 0;", i); if (has_offset(typ) && (((Table*)typ->ref)->list->next->next->info.sto & Sconst) == 0) fprintf(fout, "\n\tthis->__offset[%d] = 0;", i); } } else { fprintf(fout, "\n\tthis->__size = 0;"); if (has_offset(typ) && (((Table*)typ->ref)->list->next->next->info.sto & Sconst) == 0) fprintf(fout, "\n\tthis->__offset = 0;"); } if (is_attachment(typ)) fprintf(fout, "\n\tthis->id = NULL;\n\tthis->type = NULL;\n\tthis->options = NULL;"); fprintf(fout, "\n}"); } else { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap *soap, %s)\n{", c_ident(typ), c_type_id(typ, "*a")); if ((s = has_soapref(typ))) fprintf(fout, "\n\ta->%s = soap;", s); else fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */"); fprintf(fout, "\n\ta->%s = NULL;", ident(p->sym->name)); d = get_Darraydims(typ); if (d) { for (i = 0; i < d; i++) { fprintf(fout, "\n\ta->__size[%d] = 0;", i); if (has_offset(typ) && (((Table*)typ->ref)->list->next->next->info.sto & Sconst) == 0) fprintf(fout, "\n\ta->__offset[%d] = 0;", i); } } else { fprintf(fout, "\n\ta->__size = 0;"); if (has_offset(typ) && (((Table*)typ->ref)->list->next->next->info.sto & Sconst) == 0) fprintf(fout, "\n\ta->__offset = 0;"); } if (is_attachment(typ)) fprintf(fout, "\n\ta->id = NULL;\n\ta->type = NULL;\n\ta->options = NULL;"); fprintf(fout, "\n}"); } fflush(fout); return; } if (is_primitive(typ) || is_string(typ) || is_wstring(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); return; } if (is_imported(typ) && typ->type == Tint && !typ->sym) fprintf(fout, "\n\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap *soap, %s)\n{\n\t(void)soap; /* appease -Wall -Werror */\n#ifdef SOAP_DEFAULT_%s\n\t*a = SOAP_DEFAULT_%s;\n#else\n\t*a = (%s)0;\n#endif\n}", c_ident(typ), c_type_id(typ, "*a"), c_ident(typ), c_ident(typ), c_type(typ)); else if (cflag) { fprintf(fhead, "\n\n#ifdef SOAP_DEFAULT_%s\n#define soap_default_%s(soap, a) (*(a) = SOAP_DEFAULT_%s)\n#else\n#define soap_default_%s(soap, a) (*(a) = (%s)0)\n#endif", c_ident(typ), c_ident(typ), c_ident(typ), c_ident(typ), c_type(typ)); } else fprintf(fhead, "\n\ninline void soap_default_%s(struct soap *soap, %s)\n{\n\t(void)soap; /* appease -Wall -Werror */\n#ifdef SOAP_DEFAULT_%s\n\t*a = SOAP_DEFAULT_%s;\n#else\n\t*a = (%s)0;\n#endif\n}", c_ident(typ), c_type_id(typ, "*a"), c_ident(typ), c_ident(typ), c_type(typ)); return; } if (is_fixedstring(typ)) { fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap*, char[]);", c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap *soap, char a[])\n{\n\t(void)soap; /* appease -Wall -Werror */\n\ta[0] = '\\0';\n}", c_ident(typ)); return; } if (is_stdstring(typ) || is_stdwstring(typ)) { fprintf(fhead, "\n\ninline void soap_default_%s(struct soap *soap, %s)\n{\n\t(void)soap; /* appease -Wall -Werror */\n\tp->erase();\n}", c_ident(typ), c_type_id(typ, "*p")); return; } switch(typ->type) { case Tclass: if (!is_volatile(typ) && !is_typedef(typ) && typ->ref) /* fall through to switch case Tstruct */ { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); return; } table=(Table*)typ->ref; fprintf(fout, "\n\nvoid %s::soap_default(struct soap *soap)\n{", ident(typ->id->name)); if ((s = has_soapref(typ))) fprintf(fout, "\n\tthis->%s = soap;", s); else fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */"); fflush(fout); if (table) { if (table->prev) fprintf(fout, "\n\tthis->%s::soap_default(soap);", ident(table->prev->sym->name)); for (p = table->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) continue; if (p->info.sto & Sconst) fprintf(fout, "\n\t/* const %s skipped */", ident(p->sym->name)); else if (is_choice(p)) { fprintf(fout, "\n\tthis->%s::%s = %d;", ident(table->sym->name), ident(p->sym->name), required_choice(p->next->info.typ)); p = p->next; } else if (is_repetition(p) || is_anytype(p)) { fprintf(fout, "\n\tthis->%s::%s = 0;\n\tthis->%s::%s = NULL;", ident(table->sym->name), ident(p->sym->name), ident(table->sym->name), ident(p->next->sym->name)); p = p->next; } else { if (is_fixedstring(p->info.typ)) { if (p->info.hasval) fprintf(fout, "\n\tsoap_strcpy(this->%s::%s, %d, \"%s\");", ident(table->sym->name), ident(p->sym->name), get_dimension(p->info.typ), cstring(p->info.val.s, 0)); else fprintf(fout, "\n\tthis->%s::%s[0] = '\\0';", ident(table->sym->name), ident(p->sym->name)); } else if (p->info.typ->type == Tarray) { fprintf(fout, "\n\tsoap_default_%s(soap, this->%s::%s);", c_ident(p->info.typ), ident(table->sym->name), ident(p->sym->name)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ) && !is_transient(p->info.typ)) fprintf(fout, "\n\tthis->%s::%s.%s::soap_default(soap);", ident(table->sym->name), ident(p->sym->name), c_ident(p->info.typ)); else if (p->info.hasval) { fprintf(fout, "\n\tthis->%s::%s%s;", ident(table->sym->name), ident(p->sym->name), c_init(p)); } else if (is_transient(p->info.typ) || is_void(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.typ->type == Tpointer && (!is_string(p->info.typ) || is_XML(p->info.typ) || (p->info.sto & Sconstptr))) fprintf(fout, "\n\tthis->%s::%s = NULL;", ident(table->sym->name), ident(p->sym->name)); else if (p->info.typ->type != Treference && p->info.typ->type != Trvalueref) fprintf(fout, "\n\tsoap_default_%s(soap, &this->%s::%s);", c_ident(p->info.typ), ident(table->sym->name), ident(p->sym->name)); else fprintf(fout, "\n\t/* %s skipped */", ident(p->sym->name)); } } } fprintf(fout, "\n}"); fflush(fout); break; } case Tstruct: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap *soap, %s)\n{", c_ident(typ), c_type_id(typ, "*a")); fflush(fout); if ((s = has_soapref(typ))) fprintf(fout, "\n\ta->%s = soap;", s); else fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */"); table = (Table*)typ->ref; for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) continue; if (p->info.sto & Sconst) fprintf(fout, "\n\t/* const %s skipped */", ident(p->sym->name)); else if (p->info.sto & (Sprivate | Sprotected)) fprintf(fout, "\n\t/* private/protected %s skipped */", ident(p->sym->name)); else if (is_choice(p)) { fprintf(fout, "\n\ta->%s = %d;", ident(p->sym->name), required_choice(p->next->info.typ)); p = p->next; } else if (is_repetition(p) || is_anytype(p)) { fprintf(fout, "\n\ta->%s = 0;\n\ta->%s = NULL;", ident(p->sym->name), ident(p->next->sym->name)); p = p->next; } else { if (is_fixedstring(p->info.typ)) { if (p->info.hasval) fprintf(fout, "\n\tsoap_strcpy(a->%s, %d, \"%s\");", ident(p->sym->name), get_dimension(p->info.typ), cstring(p->info.val.s, 0)); else fprintf(fout, "\n\ta->%s[0] = '\\0';", ident(p->sym->name)); } else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tsoap_default_%s(soap, a->%s);", c_ident(p->info.typ), ident(p->sym->name)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ) && !is_transient(p->info.typ)) fprintf(fout, "\n\ta->%s.%s::soap_default(soap);", ident(p->sym->name), c_ident(p->info.typ)); else if (p->info.hasval) fprintf(fout, "\n\ta->%s%s;", ident(p->sym->name), c_init(p)); else if (is_transient(p->info.typ) || is_void(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.typ->type == Tpointer && (!is_string(p->info.typ) || is_XML(p->info.typ) || (p->info.sto & Sconstptr))) fprintf(fout, "\n\ta->%s = NULL;", ident(p->sym->name)); else if (p->info.typ->type != Treference && p->info.typ->type != Trvalueref) fprintf(fout, "\n\tsoap_default_%s(soap, &a->%s);", c_ident(p->info.typ), ident(p->sym->name)); else fprintf(fout, "\n\t/* %s skipped */", ident(p->sym->name)); } } } fprintf(fout, "\n}"); fflush(fout); break; case Tarray: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap *soap, %s)\n{", c_ident(typ), c_type_id(typ, "a")); fprintf(fout, "\n\tint i;"); fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */"); fprintf(fout, "\n\tfor (i = 0; i < %d; i++)", get_dimension(typ)); temp = (Tnode*)typ->ref; cardinality = 1; while (temp->type == Tarray) { temp = (Tnode*)temp->ref; cardinality++; } if (((Tnode *)typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref)) { if (cardinality>1) fprintf(fout, "a[i].%s::soap_default(soap)", t_ident((Tnode*)typ->ref)); else fprintf(fout, "(a+i)->soap_default(soap)"); } else if (((Tnode*)typ->ref)->type == Tpointer) fprintf(fout, "\n\t\ta[i] = NULL"); else { fprintf(fout, "\n\t\tsoap_default_%s(soap, a", c_ident((Tnode*)typ->ref)); if (cardinality>1) fprintf(fout, "[i])"); else fprintf(fout, "+i)"); } fprintf(fout, ";\n}"); break; case Ttemplate: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap*, %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_default_%s(struct soap *soap, %s)\n{", c_ident(typ), c_type_id(typ, "*p")); fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */"); if (is_smart(typ)) fprintf(fout, "\n\tp->reset();"); else fprintf(fout, "\n\tp->clear();"); fprintf(fout, "\n}"); fflush(fout); break; default: break; } } void soap_traverse(Tnode* typ) { int d; Table *table, *t; Entry *p; Tnode* temp; int cardinality; if (is_primitive_or_string(typ) || is_fixedstring(typ)) { fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)\n{\t(void)soap; (void)q; /* appease -Wall -Werror */", c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\tif (q) q(soap, (void*)a, %s, s, \"%s\");\n}", soap_type(typ), c_type(typ)); return; } if (typ->type != Tclass || !(typ->sym && (is_stdstring(typ) || is_stdwstring(typ)) && is_eq(typ->sym->name, "xsd__QName")) || is_external(typ) || is_imported(typ)) if (is_typedef(typ) && !is_external(typ)) { if (typ->type == Tclass && !is_stdstring(typ) && !is_stdwstring(typ) && !is_volatile(typ)) fprintf(fhead, "\n\n#define soap_traverse_%s(soap, a, s, p, q) (a)->soap_traverse(soap, s, p, q)\n", c_ident(typ)); else if (typ->type == Tclass && is_eq(typ->sym->name, "xsd__QName")) fprintf(fhead, "\n\n#define soap_traverse_%s(soap, a, s, p, q) soap_traverse_std__string(soap, a, s, p, q)\n", c_ident(typ)); else fprintf(fhead, "\n\n#define soap_traverse_%s(soap, a, s, p, q) soap_traverse_%s(soap, a, s, p, q)\n", c_ident(typ), t_ident(typ)); return; } if (is_XML(typ)) { fprintf(fhead, "\n\n#define soap_traverse_%s(soap, a, s, p, q) soap_traverse_%s(soap, a, s, p, q)\n", c_ident(typ), t_ident(typ)); return; } if ((p = is_dynamic_array(typ))) { if (typ->type == Tclass && !is_volatile(typ)) { if (is_external(typ)) return; fprintf(fout, "\n\nvoid %s::soap_traverse(struct soap *soap, const char *s, soap_walker p, soap_walker q)\n{", c_ident(typ)); if (is_binary(typ)) { if (is_attachment(typ)) fprintf(fout, "\n\tif (this->%s && soap_attachment_reference(soap, this, this->%s, this->__size, %s, this->id, this->type))\n\t{", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); else fprintf(fout, "\n\tif (this->%s && !soap_array_reference(soap, this, this->%s, this->__size, %s))\n\t{", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)this, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)this->%s, 0, \"%s\", NULL);", ident(p->sym->name), p->sym->name); if (is_attachment(typ)) { fprintf(fout, "\n\t\tif (p) p(soap, (void*)this->id, SOAP_TYPE_string, \"id\", NULL);"); fprintf(fout, "\n\t\tif (q) q(soap, (void*)this->id, SOAP_TYPE_string, \"id\", NULL);"); fprintf(fout, "\n\t\tif (p) p(soap, (void*)this->type, SOAP_TYPE_string, \"type\", NULL);"); fprintf(fout, "\n\t\tif (q) q(soap, (void*)this->type, SOAP_TYPE_string, \"type\", NULL);"); fprintf(fout, "\n\t\tif (p) p(soap, (void*)this->options, 0, \"options\", NULL);"); fprintf(fout, "\n\t\tif (q) q(soap, (void*)this->options, 0, \"options\", NULL);"); } fprintf(fout, "\n\t\tif (q) q(soap, (void*)this->%s, 0, \"%s\", NULL);", ident(p->sym->name), p->sym->name); fprintf(fout, "\n\t\tif (q) q(soap, (void*)this, %s, s, \"%s\");\n\t}\n}", soap_type(typ), c_type(typ)); fflush(fout); return; } else { d = get_Darraydims(typ); if (d) { fprintf(fout, "\n\tif (this->%s && !soap_array_reference(soap, this, this->%s, %s, %s))\n\t{", ident(p->sym->name), ident(p->sym->name), get_Darraysize("this", d), soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)this, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tfor (size_t i = 0; i < soap_size(this->__size, %d); i++)", d); } else { fprintf(fout, "\n\tif (this->%s && !soap_array_reference(soap, this, this->%s, this->__size, %s))\n\t{", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)this, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tfor (size_t i = 0; i < (size_t)this->__size; i++)"); } fprintf(fout, "\n\t\t{"); if (has_ptr((Tnode*)p->info.typ->ref)) fprintf(fout, "\tsoap_embedded(soap, this->%s + i, %s);", ident(p->sym->name), soap_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tthis->%s[i].soap_traverse(soap, \"%s\", p, q);", ident(p->sym->name), p->sym->name); else fprintf(fout, "\n\t\t\tsoap_traverse_%s(soap, this->%s + i, \"%s\", p, q);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), ident(p->sym->name)); fprintf(fout, "\n\t\t}\n\t\tif (q) q(soap, (void*)this, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t}\n}"); return; } } else { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)\n{", c_ident(typ), c_type_id(typ, "*a")); if (is_binary(typ)) { if (is_attachment(typ)) fprintf(fout, "\n\tif (a->%s && soap_attachment_reference(soap, a, a->%s, a->__size, %s, a->id, a->type))\n\t{", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); else fprintf(fout, "\n\tif (a->%s && !soap_array_reference(soap, a, a->%s, a->__size, %s))\n\t{", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)a->%s, 0, \"%s\", NULL);", ident(p->sym->name), p->sym->name); if (is_attachment(typ)) { fprintf(fout, "\n\t\tif (p) p(soap, (void*)a->id, SOAP_TYPE_string, \"id\", NULL);"); fprintf(fout, "\n\t\tif (q) q(soap, (void*)a->id, SOAP_TYPE_string, \"id\", NULL);"); fprintf(fout, "\n\t\tif (p) p(soap, (void*)a->type, SOAP_TYPE_string, \"type\", NULL);"); fprintf(fout, "\n\t\tif (q) q(soap, (void*)a->type, SOAP_TYPE_string, \"type\", NULL);"); fprintf(fout, "\n\t\tif (p) p(soap, (void*)a->options, 0, \"options\", NULL);"); fprintf(fout, "\n\t\tif (q) q(soap, (void*)a->options, 0, \"options\", NULL);"); } fprintf(fout, "\n\t\tif (q) q(soap, (void*)a->%s, 0, \"%s\", NULL);", ident(p->sym->name), p->sym->name); fprintf(fout, "\n\t\tif (q) q(soap, (void*)a, %s, s, \"%s\");\n\t}\n}", soap_type(typ), c_type(typ)); fflush(fout); return; } else { fprintf(fout, "\n\tsize_t i;"); d = get_Darraydims(typ); if (d) { fprintf(fout, "\n\tif (a->%s && !soap_array_reference(soap, a, a->%s, %s, %s))\n\t{", ident(p->sym->name), ident(p->sym->name), get_Darraysize("a", d), soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tfor (i = 0; i < soap_size(a->__size, %d); i++)", d); } else { fprintf(fout, "\n\tif (a->%s && !soap_array_reference(soap, a, a->%s, a->__size, %s))\n\t{", ident(p->sym->name), ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tfor (i = 0; i < (size_t)a->__size; i++)"); } fprintf(fout, "\n\t\t{"); if (has_ptr((Tnode*)p->info.typ->ref)) fprintf(fout, "\tsoap_embedded(soap, a->%s + i, %s);", ident(p->sym->name), soap_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\ta->%s[i].soap_traverse(soap, \"%s\", p, q);", ident(p->sym->name), p->sym->name); else fprintf(fout, "\n\t\t\tsoap_traverse_%s(soap, a->%s + i, \"%s\", p, q);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), p->sym->name); fprintf(fout, "\n\t\t}\n\t\tif (q) q(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\t}\n}"); fflush(fout); return; } } } switch(typ->type) { case Tclass: if (!is_volatile(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } table=(Table*)typ->ref; fprintf(fout, "\n\nvoid %s::soap_traverse(struct soap *soap, const char *s, soap_walker p, soap_walker q)\n{", ident(typ->id->name)); fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */"); fprintf(fout, "\n\tif (p) p(soap, (void*)this, %s, s, \"%s\");", soap_type(typ), c_type(typ)); for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { fprintf(fout, "\n\tif (this->%s::%s)", ident(t->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)this->%s::%s; i++)\n\t\t{", ident(t->sym->name), ident(p->sym->name)); if (!is_invisible(p->next->sym->name)) if (has_ptr((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_embedded(soap, this->%s::%s + i, %s);", ident(t->sym->name), ident(p->next->sym->name), soap_type((Tnode*)p->next->info.typ->ref)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tthis->%s::%s[i].soap_traverse(soap, \"%s\", p, q);", ident(t->sym->name), ident(p->next->sym->name), p->next->sym->name); else fprintf(fout, "\n\t\t\tsoap_traverse_%s(soap, this->%s::%s + i, \"%s\", p, q);", c_ident((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name), p->next->sym->name); fprintf(fout, "\n\t\t}\n\t}"); p = p->next; } else if (is_anytype(p)) { p = p->next; } else if (is_choice(p)) { fprintf(fout, "\n\tsoap_traverse_%s(soap, this->%s::%s, &this->%s::%s, \"%s\", p, q);", c_ident(p->next->info.typ), ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name), p->next->sym->name); p = p->next; } else if (p->info.typ->type == Tarray) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, this->%s::%s, %s);", ident(t->sym->name), ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tsoap_traverse_%s(soap, this->%s::%s, \"%s\", p, q);", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), p->sym->name); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &this->%s::%s, %s);", ident(t->sym->name), ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tthis->%s::%s.soap_traverse(soap, \"%s\", p, q);", ident(t->sym->name), ident(p->sym->name), p->sym->name); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (!is_template(p->info.typ)) if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &this->%s::%s, %s);", ident(t->sym->name), ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tsoap_traverse_%s(soap, &this->%s::%s, \"%s\", p, q);", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), p->sym->name); } } } fprintf(fout, "\n\tif (q) q(soap, (void*)this, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n}"); break; } /* fall through to next case when class is volatile, since serializers cannot be member functions */ case Tstruct: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); if (!typ->ref) return; fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)\n{", c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); table=(Table*)typ->ref; for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { fprintf(fout, "\n\tif (a->%s)", ident(p->next->sym->name)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)a->%s; i++)\n\t\t{", ident(p->sym->name)); if (!is_invisible(p->next->sym->name)) if (has_ptr((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tsoap_embedded(soap, a->%s + i, %s);", ident(p->next->sym->name), soap_type((Tnode*)p->next->info.typ->ref)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\ta->%s[i].soap_traverse(soap, \"%s\", p, q);", ident(p->next->sym->name), p->next->sym->name); else fprintf(fout, "\n\t\t\tsoap_traverse_%s(soap, a->%s + i, \"%s\", p, q);", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name), p->next->sym->name); fprintf(fout, "\n\t\t}\n\t}"); p = p->next; } else if (is_anytype(p)) { p = p->next; } else if (is_choice(p)) { fprintf(fout, "\n\tsoap_traverse_%s(soap, a->%s, &a->%s, \"%s\", p, q);", c_ident(p->next->info.typ), ident(p->sym->name), ident(p->next->sym->name), p->next->sym->name); p = p->next; } else if (p->info.typ->type == Tarray) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tsoap_traverse_%s(soap, a->%s, \"%s\", p, q);", c_ident(p->info.typ), ident(p->sym->name), p->sym->name); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\ta->%s.soap_traverse(soap, \"%s\", p, q);", ident(p->sym->name), p->sym->name); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (!is_template(p->info.typ)) if (has_ptr(p->info.typ)) fprintf(fout, "\n\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\tsoap_traverse_%s(soap, &a->%s, \"%s\", p, q);", c_ident(p->info.typ), ident(p->sym->name), p->sym->name); } } } fprintf(fout, "\n\tif (q) q(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n}"); break; case Tunion: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, int, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } table = (Table*)typ->ref; fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, int, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, int choice, %s, const char *s, soap_walker p, soap_walker q)\n{", c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\tswitch (choice)\n\t{"); for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) ; else if (is_anytype(p)) ; else if (p->info.typ->type == Tarray) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); if (has_ptr(p->info.typ)) fprintf(fout, "\n\t\tsoap_embedded(soap, a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\t\tsoap_traverse_%s(soap, a->%s, \"%s\", p, q);", c_ident(p->info.typ), ident(p->sym->name), p->sym->name); fprintf(fout, "\n\t\tbreak;"); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); if (has_ptr(p->info.typ)) fprintf(fout, "\n\t\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\t\ta->%s.soap_traverse(soap, \"%s\", p, q);", ident(p->sym->name), p->sym->name); fprintf(fout, "\n\t\tbreak;"); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); if (has_ptr(p->info.typ)) fprintf(fout, "\n\t\tsoap_embedded(soap, &a->%s, %s);", ident(p->sym->name), soap_type(p->info.typ)); fprintf(fout, "\n\t\tsoap_traverse_%s(soap, &a->%s, \"%s\", p, q);", c_ident(p->info.typ), ident(p->sym->name), p->sym->name); fprintf(fout, "\n\t\tbreak;"); } } } fprintf(fout, "\n\tdefault:\n\t\tbreak;\n\t}"); fprintf(fout, "\n\tif (q) q(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n}"); break; case Tpointer: if (((Tnode*)typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)\n{", c_ident(typ), c_type_id(typ, "*a")); p = is_dynamic_array((Tnode*)typ->ref); if (p) { d = get_Darraydims((Tnode*)typ->ref); if (d) fprintf(fout, "\n\tif (*a)"); else fprintf(fout, "\n\tif (*a)"); } else fprintf(fout, "\n\tif (!soap_reference(soap, *a, %s))", soap_type((Tnode*)typ->ref)); fprintf(fout, "\n\t\t(*a)->soap_traverse(soap, s, p, q);\n}"); } else { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)\n{", c_ident(typ), c_type_id(typ, "*a")); if (is_primitive((Tnode*)typ->ref)) { fprintf(fout, "\n\tif (!soap_reference(soap, *a, %s))\n\t{", soap_type(typ)); fprintf(fout, "\n\t\tif (p) p(soap, (void*)*a, %s, s, \"%s\");", soap_type((Tnode*)typ->ref), c_type((Tnode*)typ->ref)); fprintf(fout, "\n\t\tif (q) q(soap, (void*)*a, %s, s, \"%s\");\n\t}\n}", soap_type((Tnode*)typ->ref), c_type((Tnode*)typ->ref)); } else if ((p = is_dynamic_array((Tnode*)typ->ref)) != NULL) { d = get_Darraydims((Tnode*)typ->ref); if (d) fprintf(fout, "\n\tif (*a)"); else fprintf(fout, "\n\tif (*a)"); fprintf(fout, "\n\t\tsoap_traverse_%s(soap, *a, s, p, q);\n}", c_ident((Tnode*)typ->ref)); } else { fprintf(fout, "\n\tif (!soap_reference(soap, *a, %s))", soap_type((Tnode*)typ->ref)); fprintf(fout, "\n\t\tsoap_traverse_%s(soap, *a, s, p, q);\n}", c_ident((Tnode*)typ->ref)); } } break; case Tarray: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)", c_ident(typ), c_type_id(typ, "a")); if (is_primitive((Tnode*)typ->ref)) { fprintf(fout, "\n{"); fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */"); fprintf(fout, "\n\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); } else { fprintf(fout, "\n{\tsize_t i;"); fprintf(fout, "\n\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\tfor (i = 0; i < %d; i++)", get_dimension(typ)); temp=(Tnode*)typ->ref;; cardinality = 1; while (temp->type == Tarray) { temp=(Tnode*)temp->ref; cardinality++; } fprintf(fout, "\n\t{"); if (has_ptr((Tnode*)typ->ref)) { fprintf(fout, "\tsoap_embedded(soap, a"); if (cardinality > 1) fprintf(fout, "[i]"); else fprintf(fout, "+i"); fprintf(fout, ", %s);", soap_type((Tnode*)typ->ref)); } if (((Tnode *)typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { fprintf(fout, "\n\ta[i].soap_traverse(soap, s, p, q)"); } else if (!is_primitive((Tnode*)typ->ref)) { fprintf(fout, "\n\tsoap_traverse_%s(soap, a", c_ident((Tnode*)typ->ref)); if (cardinality > 1) fprintf(fout, "[i], s, p, q)"); else fprintf(fout, "+i, s, p, q)"); } fprintf(fout, ";\n\t}"); } fprintf(fout, "\n\tif (q) q(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n}"); break; case Ttemplate: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 void SOAP_FMAC2 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap*, %s, const char *s, soap_walker p, soap_walker q);", c_ident(typ), c_type_id(typ, "*")); temp = (Tnode*)typ->ref; if (!temp) return; fprintf(fout, "\n\nSOAP_FMAC3 void SOAP_FMAC4 soap_traverse_%s(struct soap *soap, %s, const char *s, soap_walker p, soap_walker q)\n{\n\t(void)soap; (void)a; (void)s; (void)p; (void)q; /* appease -Wall -Werror */", c_ident(typ), c_type_id(typ, "*a")); if (!is_primitive(temp) && temp->type != Tfun && !is_void(temp)) { fprintf(fout, "\n\tif (p) p(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); fprintf(fout, "\n\tfor (%s::iterator i = a->begin(); i != a->end(); ++i)", c_type(typ)); if (temp->type == Tclass && !is_external(temp) && !is_volatile(temp) && !is_typedef(temp)) fprintf(fout, "\n\t\t(*i).soap_traverse(soap, s, p, q);"); else fprintf(fout, "\n\t\tsoap_traverse_%s(soap, &(*i), s, p, q);", c_ident(temp)); fprintf(fout, "\n\tif (q) q(soap, (void*)a, %s, s, \"%s\");", soap_type(typ), c_type(typ)); } fprintf(fout, "\n}"); default: break; } } void soap_put(Tnode *typ) { const char *ci = c_ident(typ); const char *ct = c_type(typ); if (is_XML(typ)) return; if (typ->type == Ttemplate || typ->type == Tunion) return; if (is_typedef(typ) && (is_template(typ) || is_element(typ) || is_synonym(typ) || is_external(typ) || is_imported(typ)) && (!is_external(typ) || is_volatile(typ))) { fprintf(fhead, "\n\n#define soap_put_%s soap_put_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_write_%s soap_write_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_PUT_%s soap_PUT_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_POST_send_%s soap_POST_send_%s\n", c_ident(typ), t_ident(typ)); return; } if (typ->type == Tarray) { fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_put_%s(struct soap*, %s, const char*, const char*);", ci, c_type_id(typ, "const")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_put_%s(struct soap *soap, %s, const char *tag, const char *type)\n{", ci, c_type_id(typ, "const a")); } else if (typ->type == Tclass && !is_external(typ) && !is_volatile(typ) && !is_typedef(typ)) fprintf(fout, "\n\nint %s::soap_put(struct soap *soap, const char *tag, const char *type) const\n{", ct); else if (typ->type == Tpointer) { fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_put_%s(struct soap*, %s, const char*, const char*);", ci, c_type_constptr_id(typ, "const*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_put_%s(struct soap *soap, %s, const char *tag, const char *type)\n{", ci, c_type_constptr_id(typ, "const*a")); } else { fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_put_%s(struct soap*, const %s, const char*, const char*);", ci, c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_put_%s(struct soap *soap, const %s, const char *tag, const char *type)\n{", ci, c_type_id(typ, "*a")); } fflush(fout); if (typ->type == Tclass && !is_external(typ) && !is_volatile(typ) && !is_typedef(typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, tag ? tag : \"%s\", -2, this, type))\n\t\treturn soap->error;", ci, xml_tag(typ)); else fprintf(fout, "\n\tif (soap_out_%s(soap, tag ? tag : \"%s\", -2, a, type))\n\t\treturn soap->error;", ci, xml_tag(typ)); if (!is_invisible(typ->id->name)) fprintf(fout, "\n\treturn soap_putindependent(soap);\n}"); else fprintf(fout, "\n\treturn SOAP_OK;\n}"); if ((typ->type != Tpointer || is_string(typ) || is_wstring(typ)) && typ->type != Tarray && typ->type != Treference && typ->type != Trvalueref && !is_template(typ) && !is_anyAttribute(typ)) { const char *x = xsi_type_u(typ); if (typ->type == Tclass && !is_external(typ) && !is_volatile(typ) && !is_typedef(typ)) { fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, \"%s\", p->soap_type() == %s ? \"%s\" : NULL) || soap_end_send(soap))\n\t\treturn soap->error;\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), xml_tag(typ), soap_type(typ), x); fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || (p->soap_serialize(soap), 0) || p->soap_put(soap, \"%s\", p->soap_type() == %s ? \"%s\" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), xml_tag(typ), soap_type(typ), x); fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || (p->soap_serialize(soap), 0) || p->soap_put(soap, \"%s\", p->soap_type() == %s ? \"%s\" : NULL) || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), xml_tag(typ), soap_type(typ), x); } else if (is_primitive_or_string(typ)) { if (cflag) fprintf(fhead, "\n\n#ifndef soap_write_%s\n#define soap_write_%s(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || soap_put_%s(soap, data, \"%s\", \"%s\") || soap_end_send(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), xml_tag(typ), x); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (p)\n\t{\tif (soap_begin_send(soap) || %s::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), namespaceid, c_ident(typ), xml_tag(typ), x); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (p)\n\t{\tif (soap_begin_send(soap) || ::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), xml_tag(typ), x); else fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (p)\n\t{\tif (soap_begin_send(soap) || soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), xml_tag(typ), x); if (cflag) fprintf(fhead, "\n\n#ifndef soap_PUT_%s\n#define soap_PUT_%s(soap, URL, data) ( soap_free_temp(soap), soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || soap_put_%s(soap, data, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap), soap_closesock(soap) )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), xml_tag(typ), x); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || %s::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), namespaceid, c_ident(typ), xml_tag(typ), x); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || ::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), xml_tag(typ), x); else fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), xml_tag(typ), x); if (cflag) fprintf(fhead, "\n\n#ifndef soap_POST_send_%s\n#define soap_POST_send_%s(soap, URL, data) ( soap_free_temp(soap), ( soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || soap_put_%s(soap, data, \"%s\", \"%s\") || soap_end_send(soap) ) && soap_closesock(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), xml_tag(typ), x); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || %s::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), namespaceid, c_ident(typ), xml_tag(typ), x); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || ::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), xml_tag(typ), x); else fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), xml_tag(typ), x); } else { if (cflag) fprintf(fhead, "\n\n#ifndef soap_write_%s\n#define soap_write_%s(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_%s(soap, data), 0) || soap_put_%s(soap, data, \"%s\", \"%s\") || soap_end_send(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), c_ident(typ), xml_tag(typ), x); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_begin_send(soap) || (%s::soap_serialize_%s(soap, p), 0) || %s::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\t\treturn soap->error;\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), namespaceid, c_ident(typ), namespaceid, c_ident(typ), xml_tag(typ), x); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_begin_send(soap) || (::soap_serialize_%s(soap, p), 0) || ::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\t\treturn soap->error;\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), c_ident(typ), xml_tag(typ), x); else fprintf(fhead, "\n\ninline int soap_write_%s(struct soap *soap, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_begin_send(soap) || (soap_serialize_%s(soap, p), 0) || soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\t\treturn soap->error;\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), c_ident(typ), xml_tag(typ), x); if (cflag) fprintf(fhead, "\n\n#ifndef soap_PUT_%s\n#define soap_PUT_%s(soap, URL, data) ( soap_free_temp(soap), soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || (soap_serialize_%s(soap, data), 0) || soap_put_%s(soap, data, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap), soap_closesock(soap) )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), c_ident(typ), xml_tag(typ), x); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || (%s::soap_serialize_%s(soap, p), 0) || %s::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), namespaceid, c_ident(typ), namespaceid, c_ident(typ), xml_tag(typ), x); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || (::soap_serialize_%s(soap, p), 0) || ::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), c_ident(typ), xml_tag(typ), x); else fprintf(fhead, "\n\ninline int soap_PUT_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_PUT(soap, URL, NULL, \"text/xml; charset=utf-8\") || (soap_serialize_%s(soap, p), 0) || soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap) || soap_recv_empty_response(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), c_ident(typ), xml_tag(typ), x); if (cflag) fprintf(fhead, "\n\n#ifndef soap_POST_send_%s\n#define soap_POST_send_%s(soap, URL, data) ( soap_free_temp(soap), ( soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || (soap_serialize_%s(soap, data), 0) || soap_put_%s(soap, data, \"%s\", \"%s\") || soap_end_send(soap) ) && soap_closesock(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), c_ident(typ), xml_tag(typ), x); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || (%s::soap_serialize_%s(soap, p), 0) || %s::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), namespaceid, c_ident(typ), namespaceid, c_ident(typ), xml_tag(typ), x); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || (::soap_serialize_%s(soap, p), 0) || ::soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), c_ident(typ), xml_tag(typ), x); else fprintf(fhead, "\n\ninline int soap_POST_send_%s(struct soap *soap, const char *URL, %s)\n{\n\tsoap_free_temp(soap);\n\tif (soap_POST(soap, URL, NULL, \"text/xml; charset=utf-8\") || (soap_serialize_%s(soap, p), 0) || soap_put_%s(soap, p, \"%s\", \"%s\") || soap_end_send(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_constptr_id(typ, "const*p"), c_ident(typ), c_ident(typ), xml_tag(typ), x); } } fflush(fout); } Entry * is_dynamic_array(Tnode *typ) { Entry *p; Table *t; if ((typ->type == Tstruct || typ->type == Tclass) && typ->ref) { for (t = (Table*)typ->ref; t; t = t->prev) { p = t->list; while (p && p->info.typ->type == Tfun) p = p->next; if (p && (p->info.typ->type == Tpointer || is_smart(p->info.typ)) && !strncmp(ident(p->sym->name), "__ptr", 5)) if (p->next && (p->next->info.typ->type == Tint || (p->next->info.typ->type == Tarray && (((Tnode*)p->next->info.typ->ref)->type == Tint))) && !strcmp(ident(p->next->sym->name), "__size")) return p; } } return NULL; } Entry * is_discriminant(Tnode *typ) { Entry *p; Table *t; if ((typ->type == Tstruct || typ->type == Tclass) && typ->ref) { t = (Table*)typ->ref; /* only if this struct/class has a union and is not derived */ if (t && !t->prev) { p = t->list; if (p && p->info.typ->type == Tint && ((p->info.sto & Sspecial) || !strncmp(ident(p->sym->name), "__union", 7))) if (p->next && p->next->info.typ->type == Tunion) { Entry *q; for (q = p->next->next; q; q = q->next) { if (q->info.typ->type != Tfun && !is_void(q->info.typ) && !is_transient(q->info.typ)) return NULL; } return p; } } } return NULL; } int get_Darraydims(Tnode *typ) { Entry *p; Table *t; if ((typ->type == Tstruct || typ->type == Tclass) && typ->ref) { for (t = (Table*)typ->ref; t; t = t->prev) { p = t->list; while (p && p->info.typ->type == Tfun) p = p->next; if (p && (p->info.typ->type == Tpointer || is_smart(p->info.typ)) && !strncmp(ident(p->sym->name), "__ptr", 5)) if (p->next && p->next->info.typ->type == Tarray && ((Tnode*)p->next->info.typ->ref)->type == Tint && !strcmp(ident(p->next->sym->name), "__size")) return get_dimension(p->next->info.typ); } } return 0; } const char* get_Darraysize(const char *a, int d) { int i; char *s = (char*)emalloc(d * (strlen(a) + 16) + 1); *s = '\0'; for (i = 0; i < d; i++) { size_t l = strlen(s); sprintf(s + l, "%s%s->__size[%d]", i ? " * " : "", a, i); } return s; } int has_offset(Tnode *typ) { Entry *p; Table *t; if (typ->type == Tstruct || typ->type == Tclass) { for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if ((p->info.typ->type == Tint || (p->info.typ->type == Tarray && ((Tnode*)p->info.typ->ref)->type == Tint)) && !strcmp(ident(p->sym->name), "__offset")) return 1; } } } return 0; } int is_bool(Tnode *typ) { return (typ->type == Tenum && (Table*)typ->ref == booltable); } int is_boolean(Tnode *typ) { if (typ->type == Tenum) { if ((Table*)typ->ref == booltable) return 1; else { size_t n = strlen(ident(typ->id->name)); return n >= 7 && is_eq(ident(typ->id->name) + n - 7, "boolean"); } } return 0; } int is_hexBinary(Tnode *typ) { Table *t; if (!is_binary(typ)) return 0; if ((typ->synonym && typ->synonym->name && strstr(typ->synonym->name, "hex")) || (typ->sym && typ->sym->name && strstr(typ->sym->name, "hex")) || (typ->id && typ->id->name && strstr(typ->id->name, "hex"))) return 1; for (t = (Table*)typ->ref; t; t = t->prev) if (t->sym && t->sym->name && strstr(t->sym->name, "hex")) return 1; return 0; } int is_binary(Tnode *typ) { if (!has_ns(typ) && !is_element(typ)) return 0; if (typ->type == Tstruct || typ->type == Tclass) { Table *t; for (t = (Table*)typ->ref; t; t = t->prev) { Entry *p; p = t->list; while (p && p->info.typ->type == Tfun) p = p->next; if (p && (p->info.typ->type == Tpointer || is_smart(p->info.typ)) && ((Tnode*)p->info.typ->ref)->type == Tuchar && !strcmp(ident(p->sym->name), "__ptr")) { p = p->next; return p && p->info.typ->type == Tint && !strcmp(ident(p->sym->name), "__size"); } } } return 0; } int is_attachment(Tnode *typ) { Entry *p; Table *t; if (!is_binary(typ) || is_transient(typ)) return 0; for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (is_string(p->info.typ) && !strcmp(p->sym->name, "id")) { p = p->next; if (!p || !is_string(p->info.typ) || strcmp(p->sym->name, "type")) break; p = p->next; if (!p || !is_string(p->info.typ) || strcmp(p->sym->name, "options")) break; return 1; } } } return 0; } int is_mutable(Entry *e) { return e->info.typ->transient == -4 || is_header_or_fault(e->info.typ); } int is_header_or_fault(Tnode *typ) { if (typ->type == Tpointer || typ->type == Treference) return is_header_or_fault((Tnode*)typ->ref); return (typ->type == Tstruct || typ->type == Tclass) && (!strcmp(ident(typ->id->name), "SOAP_ENV__Header") || !strcmp(ident(typ->id->name), "SOAP_ENV__Fault") || !strcmp(ident(typ->id->name), "SOAP_ENV__Text") || !strcmp(ident(typ->id->name), "SOAP_ENV__Code") || !strcmp(ident(typ->id->name), "SOAP_ENV__Detail") || !strcmp(ident(typ->id->name), "SOAP_ENV__Reason")); } int is_body(Tnode *typ) { if (typ->type == Tpointer || typ->type == Treference) return is_body((Tnode*)typ->ref); return (typ->type == Tstruct || typ->type == Tclass) && !strcmp(ident(typ->id->name), "SOAP_ENV__Body"); } long minlen(Tnode *typ) { if (!typ->hasmin || typ->min < 0 || typ->min > 2147483647) return 0; if (typ->incmin) return (long)typ->min; return (long)typ->min + 1; } long maxlen(Tnode *typ) { if (!typ->hasmax || typ->max < 0 || typ->max > 2147483647) return -1; if (typ->incmax) return (long)typ->max; return (long)typ->max - 1; } const char* pattern(Tnode *typ) { if (!typ->pattern || (typ->pattern[0] == '%' && typ->pattern[1])) return "NULL"; return cstring(typ->pattern, 1); } int is_soap12(const char *enc) { return !strcmp(envURI, "http://www.w3.org/2003/05/soap-envelope") || (enc && !strcmp(enc, "http://www.w3.org/2003/05/soap-encoding")); } int is_document(const char *style) { return soap_version < 0 || (!eflag && !style) || (style && !strcmp(style, "document")); } int is_literal(const char *encoding) { return soap_version < 0 || (!eflag && !encoding) || (encoding && !strcmp(encoding, "literal")); } const char * has_soapref(Tnode *typ) { Entry *p; Table *t; if (typ->type == Tstruct || typ->type == Tclass) for (t = (Table*)typ->ref; t; t = t->prev) for (p = t->list; p; p = p->next) if (is_soapref(p->info.typ) && (t == (Table*)typ->ref || !(p->info.sto & Sprivate))) return ident(p->sym->name); return NULL; } int is_soapref(Tnode *typ) { return typ->type == Tpointer && ((Tnode*)typ->ref)->type == Tstruct && ((Tnode*)typ->ref)->id == lookup("soap"); } const char * union_member(Tnode *typ) { Table *t; Entry *p, *q; for (p = classtable->list; p; p = p->next) { if (p->info.typ->type == Tunion) { for (t = (Table*)p->info.typ->ref; t; t = t->prev) for (q = t->list; q; q = q->next) if (typ == q->info.typ) return p->info.typ->id->name; } else { for (t = (Table*)p->info.typ->ref; t; t = t->prev) { for (q = t->list; q; q = q->next) { if (typ == q->info.typ) { const char *s = union_member(p->info.typ); if (s) return s; } } } } } return NULL; } int has_union(Tnode *typ) { Table *t; Entry *p; if (typ->type == Tclass || typ->type == Tstruct) { for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tunion) return 1; else if ((p->info.typ->type == Tstruct || p->info.typ->type == Tclass) && has_union(p->info.typ)) return 1; } } } return 0; } int has_constructor(Tnode *typ) { Table *t; Entry *p; if (typ->type == Tclass || typ->type == Tstruct) for (t = (Table*)typ->ref; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->info.typ->type == Tfun && !strcmp(p->sym->name, typ->id->name) && ((FNinfo *)p->info.typ->ref)->ret->type == Tnone) if (!((FNinfo*)p->info.typ->ref)->args->list) return 1; return 0; } int has_destructor(Tnode *typ) { Entry *p; Table *t; if (typ->type == Tclass || typ->type == Tstruct) for (t = (Table*)typ->ref; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->info.typ->type == Tfun && strchr(p->sym->name, '~')) return 1; return 0; } int has_getter(Tnode *typ) { Entry *p, *q; Table *t; if (typ->type == Tclass || (!cflag && typ->type == Tstruct)) { for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !strcmp(p->sym->name, "get") && ((FNinfo *)p->info.typ->ref)->ret->type == Tint) { q = ((FNinfo*)p->info.typ->ref)->args->list; if (q && q->info.typ->type == Tpointer && ((Tnode*)q->info.typ->ref)->type == Tstruct && ((Tnode*)q->info.typ->ref)->id == lookup("soap")) return 1; } } } } return 0; } int has_setter(Tnode *typ) { Entry *p, *q; Table *t; if (typ->type == Tclass || (!cflag && typ->type == Tstruct)) { for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun && !strcmp(p->sym->name, "set") && ((FNinfo *)p->info.typ->ref)->ret->type == Tint) { q = ((FNinfo*)p->info.typ->ref)->args->list; if (q && q->info.typ->type == Tpointer && ((Tnode*)q->info.typ->ref)->type == Tstruct && ((Tnode*)q->info.typ->ref)->id == lookup("soap")) return 1; } } } } return 0; } const char* kind_of(Tnode *typ) { if (is_bool(typ)) return "bool"; if (is_attachment(typ)) return "base64 binary or attachment"; if (is_hexBinary(typ)) return "hex binary"; if (is_binary(typ)) return "base64 binary"; if (is_stdstring(typ)) return "std::string"; if (is_stdwstring(typ)) return "std::wstring"; if (is_external(typ)) return "custom"; if (is_string(typ)) return "string"; if (is_wstring(typ)) return "wide string"; if (typ->type == Tenum || typ->type == Tenumsc) return "enum"; if (is_primitive(typ)) return c_type(typ); if (typ->type == Tclass) return "class"; if (typ->type == Tstruct) return "struct"; if (is_smart(typ)) return "smart pointer"; if (is_template(typ)) return "container"; return ""; } int is_primitive_or_string(Tnode *typ) { return is_primitive(typ) || is_string(typ) || is_wstring(typ) || is_stdstring(typ) || is_stdwstring(typ) || is_qname(typ) || is_stdqname(typ); } int is_primitive(Tnode *typ) { return typ->type >= Tchar && typ->type <= Tenumsc; } int is_string(Tnode *typ) { return typ->type == Tpointer && ((Tnode*)typ->ref)->type == Tchar && !((Tnode*)typ->ref)->sym; } int is_fixedstring(Tnode *typ) { return bflag && typ->type == Tarray && ((Tnode*)typ->ref)->type == Tchar; } int is_wstring(Tnode *typ) { return typ->type == Tpointer && ((Tnode*)typ->ref)->type == Twchar; } int is_stdstring(Tnode *typ) { return typ->type == Tclass && typ->id == lookup("std::string"); } int is_stdwstring(Tnode *typ) { return typ->type == Tclass && typ->id == lookup("std::wstring"); } int is_stdstr(Tnode *typ) { if (typ->type == Tpointer) return is_stdstring((Tnode*)typ->ref) || is_stdwstring((Tnode*)typ->ref); return is_stdstring(typ) || is_stdwstring(typ); } int is_typedef(Tnode *typ) { return typ->sym && !is_transient(typ); } int is_restriction(Tnode *typ) { return is_typedef(typ) && typ->restriction; } int has_restriction_base(Tnode *typ, const char *base) { while (typ) { Entry *p; if (typ->sym && is_eq(typ->sym->name, base)) return 1; if (!typ->restriction) break; if (is_eq(typ->restriction->name, base)) return 1; p = entry(typetable, typ->restriction); if (!p) break; typ = p->info.typ; } return 0; } int is_synonym(Tnode *typ) { return is_typedef(typ) && typ->synonym; } int reflevel(Tnode *typ) { int level; for (level = 0; typ->type == Tpointer || is_smart(typ); level++) typ = (Tnode*)typ->ref; return level; } Tnode * reftype(Tnode *typ) { while ((typ->type == Tpointer && !is_string(typ) && !is_wstring(typ)) || typ->type == Treference || typ->type == Trvalueref || is_smart(typ)) typ = (Tnode*)typ->ref; return typ; } void soap_set_attr(Entry *p, const char *obj, const char *name, const char *tag) { Tnode *typ = p->info.typ; if (p->info.sto & (Sconst | Sprivate | Sprotected)) return; if (typ->type == Treference || typ->type == Trvalueref) typ = typ->ref; if (p->info.minOccurs == 0 && (typ->type != Tpointer || is_string(typ) || is_wstring(typ)) && p->info.hasval && !p->info.ptrval && !p->info.fixed) { if (is_string(typ)) fprintf(fout, "\n\tif (!%s->%s || strcmp(%s->%s, %s))\n\t{\t", obj, name, obj, name, c_init_a(p, "")); else if (is_wstring(typ)) fprintf(fout, "\n\tif (!%s->%s || wcscmp(%s->%s, %s))\n\t{\t", obj, name, obj, name, c_init_a(p, "")); else fprintf(fout, "\n\tif (%s->%s != %s)\n\t{\t", obj, name, c_init_a(p, "")); } else fprintf(fout, "\n\t"); if ((is_external(typ) || is_typedef(typ)) && !is_anyAttribute(typ) && !is_anyType(typ) && !is_smart(typ) && typ->type != Tpointer && !is_stdstr(typ) && !is_string(typ) && !is_wstring(typ) && !is_binary(typ)) fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, %s->%s), 1);", tag, c_ident(typ), obj, name); else if (is_XML(typ)) { if (p->info.minOccurs > 0) fprintf(fout, "soap_set_attr(soap, \"%s\", %s->%s ? %s->%s : \"%s\", 1);", tag, obj, name, obj, name, default_value(p)); else fprintf(fout, "if (%s->%s)\n\t\tsoap_set_attr(soap, \"%s\", %s->%s, 1);", obj, name, tag, obj, name); } else if (is_string(typ)) { if (p->info.minOccurs > 0) fprintf(fout, "soap_set_attr(soap, \"%s\", %s->%s ? soap_%s2s(soap, %s->%s) : \"%s\", 1);", tag, obj, name, c_ident(typ), obj, name, default_value(p)); else fprintf(fout, "if (%s->%s)\n\t\tsoap_set_attr(soap, \"%s\", soap_%s2s(soap, %s->%s), 1);", obj, name, tag, c_ident(typ), obj, name); } else if (is_wstring(typ)) { if (p->info.minOccurs > 0) fprintf(fout, "soap_set_attr(soap, \"%s\", %s->%s ? soap_%s2s(soap, %s->%s) : \"%s\", 2);", tag, obj, name, c_ident(typ), obj, name, default_value(p)); else fprintf(fout, "if (%s->%s)\n\t\tsoap_set_attr(soap, \"%s\", soap_%s2s(soap, %s->%s), 2);", obj, name, tag, c_ident(typ), obj, name); } else if (is_stdstring(typ)) { fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, %s->%s), 1);", tag, c_ident(typ), obj, name); } else if (is_stdwstring(typ)) { fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, %s->%s), 2);", tag, c_ident(typ), obj, name); } else if (is_smart(typ) || (typ->type == Tpointer && !is_string(typ) && !is_wstring(typ))) { Tnode *ptr = (Tnode*)typ->ref; if (is_smart(typ)) fprintf(fout, "if (%s->%s.get())\n\t{\t", obj, name); else fprintf(fout, "if (%s->%s)\n\t{\t", obj, name); if ((is_external(ptr) || is_typedef(ptr)) && !is_anyAttribute(ptr) && !is_anyType(ptr) && !is_stdstr(ptr) && !is_string(ptr) && !is_wstring(ptr) && !is_binary(ptr)) fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, *%s->%s), 1);", tag, c_ident(ptr), obj, name); else if (is_XML(ptr)) fprintf(fout, "if (*%s->%s)\n\t\tsoap_set_attr(soap, \"%s\", *%s->%s, 1);", obj, name, tag, obj, name); else if (is_string(ptr)) fprintf(fout, "if (*%s->%s)\n\t\t\tsoap_set_attr(soap, \"%s\", soap_%s2s(soap, *%s->%s), 1);", obj, name, tag, c_ident(ptr), obj, name); else if (is_wstring(ptr)) fprintf(fout, "if (*%s->%s)\n\t\t\tsoap_set_attr(soap, \"%s\", soap_%s2s(soap, *%s->%s), 2);", obj, name, tag, c_ident(ptr), obj, name); else if (is_stdwstring(ptr)) fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, *%s->%s), 2);", tag, c_ident(ptr), obj, name); else if (is_primitive_or_string(ptr) || is_binary(ptr)) fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, *%s->%s), 1);", tag, c_ident(ptr), obj, name); else if (is_anyAttribute(ptr)) fprintf(fout, "if (soap_out_%s(soap, \"%s\", -1, %s->%s, \"%s\"))\n\t\t\treturn soap->error;", c_ident(ptr), tag, obj, name, xsi_type_u(ptr)); else { sprintf(errbuf, "Member '%s' cannot be serialized as an XML attribute", name); semwarn(errbuf); } fprintf(fout, "\n\t}"); if (p->info.minOccurs > 0) { fprintf(fout, "\n\telse\n\t\t"); if (is_wstring(ptr) || is_stdwstring(ptr)) fprintf(fout, "soap_set_attr(soap, \"%s\", \"%s\", 2);", tag, default_value(p)); else fprintf(fout, "soap_set_attr(soap, \"%s\", \"%s\", 1);", tag, default_value(p)); } } else if (is_primitive_or_string(typ) || is_binary(typ)) fprintf(fout, "soap_set_attr(soap, \"%s\", soap_%s2s(soap, %s->%s), 1);", tag, c_ident(typ), obj, name); else if (is_anyAttribute(typ)) fprintf(fout, "if (soap_out_%s(soap, \"%s\", -1, &%s->%s, \"%s\"))\n\t\treturn soap->error;", c_ident(typ), tag, obj, name, xsi_type_u(typ)); else { sprintf(errbuf, "Member '%s' cannot be serialized as an XML attribute", name); semwarn(errbuf); } if (p->info.minOccurs == 0 && (typ->type != Tpointer || is_string(typ) || is_wstring(typ)) && p->info.hasval && !p->info.ptrval && !p->info.fixed) fprintf(fout, "\n\t}"); } void soap_attr_value(Entry *p, const char *obj, const char *name, const char *tag) { int occurs = 0; Tnode *typ = p->info.typ; if (p->info.sto & (Sconst | Sprivate | Sprotected)) return; if (typ->type == Treference || typ->type == Trvalueref) typ = typ->ref; if (p->info.maxOccurs == 0) occurs = 2; /* prohibited */ else if (p->info.minOccurs >= 1) occurs = 1; /* required */ if (sflag && occurs) occurs += 2; /* prohibited/required if SOAP_XML_STRICT */ if ((is_external(typ) || is_typedef(typ)) && !is_anyAttribute(typ) && !is_anyType(typ) && !is_smart(typ) && typ->type != Tpointer && !is_stdstr(typ) && !is_string(typ) && !is_wstring(typ) && !is_binary(typ)) fprintf(fout, "\n\tif (soap_s2%s(soap, soap_attr_value(soap, \"%s\", %d, %d), &%s->%s))\n\t\treturn NULL;", c_ident(typ), tag, property(typ), occurs, obj, name); else if (is_smart(typ) || (typ->type == Tpointer && !is_string(typ) && !is_wstring(typ))) { Tnode *ptr = (Tnode*)typ->ref; const char *get = ""; if (!is_anyAttribute(ptr) && !is_anyType(ptr)) fprintf(fout, "\n\t{\n\t\tconst char *t = soap_attr_value(soap, \"%s\", %d, %d);\n\t\tif (t)\n\t\t{", tag, property(ptr), occurs); if (is_smart(typ)) { fprintf(fout, "\n\t\t\t%s->%s = %s(SOAP_NEW(soap, %s));", obj, name, c_type(typ), c_type(ptr)); get = ".get()"; } else if (is_stdstr(ptr) || ptr->type == Tclass) fprintf(fout, "\n\t\t\tif (!(%s->%s = soap_new_%s(soap)))\n\t\t\t{\tsoap->error = SOAP_EOM;\n\t\t\t\treturn NULL;\n\t\t\t}", obj, name, c_ident(ptr)); else fprintf(fout, "\n\t\t\tif (!(%s->%s = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t\t{\tsoap->error = SOAP_EOM;\n\t\t\t\treturn NULL;\n\t\t\t}", obj, name, c_type(typ), c_type(ptr)); if ((is_external(ptr) || is_typedef(ptr)) && !is_anyAttribute(ptr) && !is_anyType(ptr) && !is_stdstr(ptr) && !is_string(ptr) && !is_wstring(ptr) && !is_binary(ptr)) fprintf(fout, "\n\t\t\tif (soap_s2%s(soap, t, %s->%s%s))\n\t\t\t\treturn NULL;", c_ident(ptr), obj, name, get); else if (is_smart(typ) && is_anyAttribute(ptr)) fprintf(fout, "\n\t\t\tif (!soap_in_%s(soap, \"%s\", %s->%s%s, \"%s\")\n\t\t\t\t%s->%s.reset();", c_ident(ptr), tag, obj, name, get, xsi_type(ptr), obj, name); else if (is_anyAttribute(ptr)) fprintf(fout, "\n\t\t\t%s->%s = soap_in_%s(soap, \"%s\", %s->%s, \"%s\");", obj, name, c_ident(ptr), tag, obj, name, xsi_type(ptr)); else if (is_XML(ptr)) fprintf(fout, "\n\t\t\tif (soap_s2char(soap, t, %s->%s%s, 0, %ld, %ld, %s))\n\t\t\t\treturn NULL;", obj, name, get, minlen(ptr), maxlen(ptr), pattern(ptr)); else if (is_primitive_or_string(ptr) || is_binary(ptr)) fprintf(fout, "\n\t\t\tif (soap_s2%s(soap, t, %s->%s%s))\n\t\t\t\treturn NULL;", c_ident(ptr), obj, name, get); if (!is_anyAttribute(ptr) && !is_anyType(ptr)) { fixed_check(fout, p, NULL, "\t\t\t"); fprintf(fout, "\n\t\t}\n\t\telse if (soap->error)\n\t\t\treturn NULL;\n\t}"); } } else if (is_anyAttribute(typ)) fprintf(fout, "\n\tsoap_in_%s(soap, \"%s\", &%s->%s, \"%s\");", c_ident(typ), tag, obj, name, xsi_type(typ)); else if (is_XML(typ)) fprintf(fout, "\n\tif (soap_s2char(soap, soap_attr_value(soap, \"%s\", 0, %d), &%s->%s, 0, %ld, %ld, %s))\n\t\treturn NULL;", tag, occurs, obj, name, minlen(typ), maxlen(typ), pattern(typ)); else if (is_primitive_or_string(typ) || is_binary(typ)) fprintf(fout, "\n\tif (soap_s2%s(soap, soap_attr_value(soap, \"%s\", %d, %d), &%s->%s))\n\t\treturn NULL;", c_ident(typ), tag, property(typ), occurs, obj, name); if (!is_smart(typ) && !(typ->type == Tpointer && !is_string(typ) && !is_wstring(typ))) fixed_check(fout, p, NULL, "\t"); } const char * ptr_cast(Table *t, const char *name) { const char *type = ident(t->sym->name); char *s = (char*)emalloc(strlen(type) + strlen(name) + 6); sprintf(s, "((%s*)%s)", type, name); return s; } void soap_out(Tnode *typ) { Table *table, *t; Entry *p = NULL; int cardinality, i, j, d; Tnode *n; const char *nse = ns_qualifiedElement(typ); const char *nsa = ns_qualifiedAttribute(typ); const char *x; if (is_XML(typ)) return; if (is_dynamic_array(typ)) { soap_out_Darray(typ); return; } if (is_external(typ) && !is_volatile(typ)) fprintf(fhead, "\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap*, %s);", c_ident(typ), c_type(typ)); else if (is_qname(typ)) fprintf(fhead, "\n\n#define soap_%s2s(soap, a) soap_QName2s(soap, (a))", c_ident(typ)); else if (is_string(typ)) fprintf(fhead, "\n\n#define soap_%s2s(soap, a) (a)", c_ident(typ)); else if (is_wstring(typ)) fprintf(fhead, "\n\n#define soap_%s2s(soap, a) soap_wchar2s((soap), (a))", c_ident(typ)); else if (is_stdqname(typ)) fprintf(fhead, "\n\n#define soap_%s2s(soap, a) soap_QName2s((soap), (a).c_str())", c_ident(typ)); else if (is_stdstring(typ)) fprintf(fhead, "\n\n#define soap_%s2s(soap, a) ((a).c_str())", c_ident(typ)); else if (is_stdwstring(typ)) fprintf(fhead, "\n\n#define soap_%s2s(soap, a) soap_wchar2s((soap), (a).c_str())", c_ident(typ)); else if (is_typedef(typ) && (!is_external(typ) || is_volatile(typ)) && !is_qname(typ) && !is_stdqname(typ)) { if ((typ->type == Tfloat || typ->type == Tdouble || typ->type == Tldouble) && typ->pattern && typ->pattern[0] == '%' && typ->pattern[1]) { fprintf(fhead, "\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap*, %s);", c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap *soap, %s)", c_ident(typ), c_type_id(typ, "n")); fprintf(fout, "\n{\n\tconst char *s;"); if (typ->type == Tfloat) fprintf(fout, "\n\tconst char *t = soap->float_format;\n\tsoap->float_format = \"%s\";", typ->pattern); else if (typ->type == Tdouble) fprintf(fout, "\n\tconst char *t = soap->double_format;\n\tsoap->double_format = \"%s\";", typ->pattern); else if (typ->type == Tldouble) fprintf(fout, "\n\tconst char *t = soap->long_double_format;\n\tsoap->long_double_format = \"%s\";", typ->pattern); fprintf(fout, "\n\ts = soap_%s2s(soap, n);", t_ident(typ)); if (typ->type == Tfloat) fprintf(fout, "\n\tsoap->float_format = t;"); else if (typ->type == Tdouble) fprintf(fout, "\n\tsoap->double_format = t;"); else if (typ->type == Tldouble) fprintf(fout, "\n\tsoap->long_double_format = t;"); fprintf(fout, "\n\treturn s;\n}"); } else { fprintf(fhead, "\n\n#define soap_%s2s soap_%s2s\n", c_ident(typ), t_ident(typ)); } } if (is_typedef(typ) && (is_element(typ) || is_synonym(typ) || is_external(typ)) && (!is_external(typ) || is_volatile(typ))) { fprintf(fhead, "\n\n#define soap_out_%s soap_out_%s\n", c_ident(typ), t_ident(typ)); return; } if (is_primitive(typ) && typ->type != Tenum && typ->type != Tenumsc) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "*a")); if (typ->pattern && typ->pattern[0] == '%' && typ->pattern[1]) { fprintf(fout, "\n\tint err;"); x = xsi_type_u(typ); if (x && *x) fprintf(fout, "\n\tif (!type)\n\t\ttype = \"%s\";", x); if (typ->type == Tfloat) fprintf(fout, "\n\tconst char *s = soap->float_format;\n\tsoap->float_format = \"%s\";", typ->pattern); else if (typ->type == Tdouble) fprintf(fout, "\n\tconst char *s = soap->double_format;\n\tsoap->double_format = \"%s\";", typ->pattern); else if (typ->type == Tldouble) fprintf(fout, "\n\tconst char *s = soap->long_double_format;\n\tsoap->long_double_format = \"%s\";", typ->pattern); if (typ->type == Tllong || typ->type == Tullong) fprintf(fout, "\n\terr = soap_out%s(soap, tag, id, a, type, %s);", c_type(typ), soap_type(typ)); else fprintf(fout, "\n\terr = soap_out%s(soap, tag, id, a, type, %s);", the_type(typ), soap_type(typ)); if (typ->type == Tfloat) fprintf(fout, "\n\tsoap->float_format = s;"); else if (typ->type == Tdouble) fprintf(fout, "\n\tsoap->double_format = s;"); else if (typ->type == Tldouble) fprintf(fout, "\n\tsoap->long_double_format = s;"); fprintf(fout, "\n\treturn err;\n}"); } else { x = xsi_type_u(typ); if (x && *x) fprintf(fout, "\n\tif (!type)\n\t\ttype = \"%s\";", x); if (typ->type == Tllong || typ->type == Tullong) fprintf(fout, "\n\treturn soap_out%s(soap, tag, id, a, type, %s);\n}", c_type(typ), soap_type(typ)); else fprintf(fout, "\n\treturn soap_out%s(soap, tag, id, a, type, %s);\n}", the_type(typ), soap_type(typ)); } return; } if (is_fixedstring(typ)) { fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const char[], const char*);", c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const char a[], const char *type)\n{", c_ident(typ)); fprintf(fout, "\n\treturn soap_outstring(soap, tag, id, (char*const*)(void*)&a, type, %s);\n}", soap_type(typ)); return; } if (is_string(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, char*const*, const char*);", c_ident(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, char*const*, const char*);", c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, char *const*a, const char *type)\n{", c_ident(typ)); fprintf(fout, "\n\treturn soap_outstring(soap, tag, id, a, type, %s);\n}", soap_type(typ)); return; } if (is_wstring(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, wchar_t*const*, const char*);", c_ident(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, wchar_t*const*, const char*);", c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, wchar_t *const*a, const char *type)\n{", c_ident(typ)); fprintf(fout, "\n\treturn soap_outwstring(soap, tag, id, a, type, %s);\n}", soap_type(typ)); return; } if (is_stdstring(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const std::string*, const char*);", c_ident(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const std::string*, const char*);", c_ident(typ)); if (is_stdXML(typ)) fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const std::string *s, const char *type)\n{\n\t(void)id; /* appease -Wall -Werror */\n\tconst char *t = s->c_str();\n\treturn soap_outliteral(soap, tag, (char*const*)(void*)&t, type);\n}", c_ident(typ)); else fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const std::string *s, const char *type)\n{\n\tif ((soap->mode & SOAP_C_NILSTRING) && s->empty())\n\t\treturn soap_element_null(soap, tag, id, type);\n\tif (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, %s), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag))\n\t\treturn soap->error;\n\treturn SOAP_OK;\n}", c_ident(typ), soap_type(typ)); return; } if (is_stdwstring(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const std::wstring*, const char*);", c_ident(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const std::wstring*, const char*);", c_ident(typ)); if (is_stdXML(typ)) fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const std::wstring *s, const char *type)\n{\n\tconst wchar_t *t = s->c_str();\n\treturn soap_outwliteral(soap, tag, (wchar_t*const*)(void*)&t, type);\n}", c_ident(typ)); else fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const std::wstring *s, const char *type)\n{\n\tif ((soap->mode & SOAP_C_NILSTRING) && s->empty())\n\t\treturn soap_element_null(soap, tag, id, type);\n\tif (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, %s), type) || soap_wstring_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag))\n\t\treturn soap->error;\n\treturn SOAP_OK;\n}", c_ident(typ), soap_type(typ)); return; } switch(typ->type) { case Tstruct: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "*a")); if (has_setter(typ)) fprintf(fout, "\n\tif (((%s)a)->set(soap))\n\t\treturn soap->error;", c_type_id(typ, "*")); x = xsi_type_u(typ); if (x && *x) fprintf(fout, "\n\tif (!type)\n\t\ttype = \"%s\";", x); table = (Table*)typ->ref; for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (is_repetition(p)) p = p->next; else if (p->info.sto & Sattribute) soap_set_attr(p, "a", ident(p->sym->name), ns_add(p, nsa)); else if (is_qname(p->info.typ)) fprintf(fout, "\n\tconst char *soap_tmp_%s = soap_QName2s(soap, a->%s);", ident(p->sym->name), ident(p->sym->name)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\tstd::string soap_tmp_%s(soap_QName2s(soap, a->%s.c_str()));", ident(p->sym->name), ident(p->sym->name)); else if ((p->info.typ->type == Tpointer || is_smart_shared(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tconst char *soap_tmp_%s = a->%s ? soap_QName2s(soap, *a->%s) : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); else if (is_smart(p->info.typ) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tconst char *soap_tmp_%s = a->%s.get() ? soap_QName2s(soap, *a->%s) : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); else if ((p->info.typ->type == Tpointer || is_smart_shared(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tstd::string soap_temp_%s(a->%s ? soap_QName2s(soap, a->%s->c_str()) : \"\"), *soap_tmp_%s = a->%s ? &soap_temp_%s : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); else if (is_smart(p->info.typ) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tstd::string soap_temp_%s(a->%s.get() ? soap_QName2s(soap, a->%s->c_str()) : \"\"), *soap_tmp_%s = a->%s.get() ? &soap_temp_%s : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); } } fprintf(fout, "\n\t(void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */"); if (!table) { fprintf(fout, "\n\treturn SOAP_OK;\n}"); } else if (is_primclass(typ)) { for (table = (Table*)typ->ref; table; table = table->prev) { p = table->list; while (p && !is_item(p)) p = p->next; if (p) break; } if ((p->info.sto & SmustUnderstand) && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && !is_transient(p->info.typ) && !is_void(p->info.typ) && p->info.typ->type != Tfun) fprintf(fout, "\n\tsoap->mustUnderstand = 1;"); if (p->info.typ->type == Tarray) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, a->%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\treturn a->%s.soap_out(soap, tag, id, \"%s\");", ident(p->sym->name), xsi_type_u(typ)); else if (is_qname(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)(void*)&soap_tmp_%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, &soap_tmp_%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)(void)&soap_tmp_%s, \"%s\");", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type_u(typ->ref)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_tmp_%s)\n\t\treturn soap_out_%s(soap, tag, id, soap_tmp_%s, \"%s\");", ident(p->sym->name), c_ident(p->info.typ->ref), ident(p->sym->name), xsi_type_u(typ->ref)); else if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\treturn soap_outliteral(soap, tag, (char*const*)&a->%s, NULL);", ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\treturn soap_outwliteral(soap, tag, (wchar_t*const*)&a->%s, NULL);", ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)&a->%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (wchar_t*const*)&a->%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, &a->%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else fprintf(fout, "\n\treturn SOAP_OK;"); fprintf(fout, "\n}"); } else { if (!is_invisible(typ->id->name)) fprintf(fout, "\n\tif (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, %s), type))\n\t\treturn soap->error;", soap_type(typ)); fflush(fout); for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.sto & Sreturn) { if (nse || has_ns_eq(NULL, p->sym->name)) { if (p->info.typ->type == Tpointer) fprintf(fout, "\n\tif (a->%s)\n\t\tsoap_element_result(soap, \"%s\");", ident(p->sym->name), ns_add(p, nse)); else fprintf(fout, "\n\tsoap_element_result(soap, \"%s\");", ns_add(p, nse)); } } if ((p->info.sto & SmustUnderstand) && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !is_transient(p->info.typ) && !is_void(p->info.typ) && p->info.typ->type != Tfun) fprintf(fout, "\n\tsoap->mustUnderstand = 1;"); needs_lang(p); if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { fprintf(fout, "\n\tif (a->%s)", ident(p->next->sym->name)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)a->%s; i++)", ident(p->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (a->%s[i].soap_out(soap, \"%s\", -1, \"%s\"))\n\t\t\t\treturn soap->error;", ident(p->next->sym->name), ns_add(p->next, nse), xsi_type_u((Tnode*)p->next->info.typ->ref)); else if (is_qname((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t{\tconst char *soap_tmp_%s = soap_QName2s(soap, a->%s[i]);\n\t\t\tif (soap_out_%s(soap, \"%s\", -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\t\t\treturn soap->error;\n\t\t}", ident(p->next->sym->name), ident(p->next->sym->name), c_ident((Tnode*)p->next->info.typ->ref), ns_add(p->next, nse), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_outliteral(soap, \"%s\", (char*const*)(a->%s + i), NULL))\n\t\t\t\treturn soap->error;", ns_add(p->next, nse), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_outwliteral(soap, \"%s\", (wchar_t*const*)(a->%s + i), NULL))\n\t\t\t\treturn soap->error;", ns_add(p->next, nse), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_out_string(soap, \"%s\", -1, (char*const*)(a->%s + i), \"%s\"))\n\t\t\t\treturn soap->error;", ns_add(p->next, nse), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_out_wstring(soap, \"%s\", -1, (wchar_t*const*)(a->%s + i), \"%s\"))\n\t\t\t\treturn soap->error;", ns_add(p->next, nse), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\tif (soap_out_%s(soap, \"%s\", -1, a->%s + i, \"%s\"))\n\t\t\t\treturn soap->error;", c_ident((Tnode*)p->next->info.typ->ref), ns_add(p->next, nse), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); fprintf(fout, "\n\t}"); p = p->next; } else if (is_anytype(p) && is_invisible(p->next->sym->name)) { fprintf(fout, "\n\tif (soap_putelement(soap, a->%s, tag, -1, a->%s))\n\t\treturn soap->error;", ident(p->next->sym->name), ident(p->sym->name)); p = p->next; } else if (is_anytype(p)) { fprintf(fout, "\n\tif (soap_putelement(soap, a->%s, \"%s\", -1, a->%s))\n\t\treturn soap->error;", ident(p->next->sym->name), ns_add(p->next, nse), ident(p->sym->name)); p = p->next; } else if (is_choice(p)) { fprintf(fout, "\n\tif (soap_out_%s(soap, a->%s, &a->%s))\n\t\treturn soap->error;", c_ident(p->next->info.typ), ident(p->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); } else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, a->%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif (a->%s.soap_out(soap, %s, -1, \"%s\"))\n\t\treturn soap->error;", ident(p->sym->name), field(p, nse), xsi_type_u(p->info.typ)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, &soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); else { if (zflag != 2 && p->info.typ->type == Tpointer && !is_void(p->info.typ) && p->info.minOccurs > 0) { /* xsi:nil only if nillable, otherwise empty element */ if (p->info.nillable) fprintf(fout, "\n\tif (!a->%s)\n\t{\tif (soap_element_nil(soap, %s))\n\t\t\treturn soap->error;\n\t}\n\telse", ident(p->sym->name), field(p, nse)); else fprintf(fout, "\n\tif (!a->%s)\n\t{\tif (soap_element_empty(soap, %s))\n\t\t\treturn soap->error;\n\t}\n\telse", ident(p->sym->name), field(p, nse)); } if (is_qname(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ->ref), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ->ref)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_tmp_%s && soap_out_%s(soap, %s, -1, soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", ident(p->sym->name), c_ident(p->info.typ->ref), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ->ref)); else if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (soap_outliteral(soap, %s, (char*const*)&a->%s, NULL))\n\t\treturn soap->error;", field(p, nse), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap_outwliteral(soap, %s, (wchar_t*const*)&a->%s, NULL))\n\t\treturn soap->error;", field(p, nse), ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)&a->%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (wchar_t*const*)&a->%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, &a->%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); } } } if (!is_invisible(typ->id->name)) fprintf(fout, "\n\treturn soap_element_end_out(soap, tag);\n}"); else fprintf(fout, "\n\treturn SOAP_OK;\n}"); } fflush(fout); break; case Tclass: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); return; } if (!is_volatile(typ) && !is_typedef(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fout, "\n\nint %s::soap_out(struct soap *soap, const char *tag, int id, const char *type) const", ident(typ->id->name)); fprintf(fout, "\n{\n\treturn soap_out_%s(soap, tag, id, this, type);\n}", c_ident(typ)); } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "*a")); fflush(fout); if (has_setter(typ)) fprintf(fout, "\n\tif (((%s)a)->set(soap))\n\t\treturn soap->error;", c_type_id(typ, "*")); x = xsi_type_u(typ); if (x && *x) fprintf(fout, "\n\tif (!type)\n\t\ttype = \"%s\";", x); table = (Table*)typ->ref; for (t = table; t; t = t->prev) { Entry *e = entry(classtable, t->sym); const char *nsa1 = e ? ns_qualifiedAttribute(e->info.typ) : nsa; for (p = t->list; p; p = p->next) { if (is_repetition(p)) p = p->next; else if (p->info.sto & Sattribute) soap_set_attr(p, ptr_cast(t, "a"), ident(p->sym->name), ns_add(p, nsa1)); else if (is_qname(p->info.typ)) fprintf(fout, "\n\tconst char *soap_tmp_%s = soap_QName2s(soap, a->%s);", ident(p->sym->name), ident(p->sym->name)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\tstd::string soap_tmp_%s(soap_QName2s(soap, a->%s.c_str()));", ident(p->sym->name), ident(p->sym->name)); else if ((p->info.typ->type == Tpointer || is_smart_shared(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tconst char *soap_tmp_%s = a->%s ? soap_QName2s(soap, *a->%s) : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); else if (is_smart(p->info.typ) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tconst char *soap_tmp_%s = a->%s.get() ? soap_QName2s(soap, *a->%s) : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); else if ((p->info.typ->type == Tpointer || is_smart_shared(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tstd::string soap_temp_%s(a->%s ? soap_QName2s(soap, a->%s->c_str()) : \"\"), *soap_tmp_%s = a->%s ? &soap_temp_%s : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); else if (is_smart(p->info.typ) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tstd::string soap_temp_%s(a->%s.get() ? soap_QName2s(soap, a->%s->c_str()) : \"\"), *soap_tmp_%s = a->%s.get() ? &soap_temp_%s : NULL;", ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name), ident(p->sym->name)); } } fprintf(fout, "\n\t(void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */"); if (!table) { fprintf(fout, "\n\treturn SOAP_OK;\n}"); } else if (is_primclass(typ)) { for (t = table; t; t = t->prev) { p = t->list; while (p && !is_item(p)) p = p->next; if (p) break; } if ((p->info.sto & SmustUnderstand) && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && !is_transient(p->info.typ) && !is_void(p->info.typ) && p->info.typ->type != Tfun) fprintf(fout, "\n\tsoap->mustUnderstand = 1;"); if (table && table->prev) { if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\treturn soap_outliteral(soap, tag, (char*const*)&a->%s::%s, \"%s\");", ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\treturn soap_outwliteral(soap, tag, (wchar_t*const*)&a->%s::%s, \"%s\");", ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else if (is_qname(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)(void*)&soap_tmp_%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type(typ)); else if (is_string(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)&a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (wchar_t*const*)&a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\treturn (a->%s::%s).soap_out(soap, tag, id, \"%s\");", ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, &soap_tmp_%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type(typ)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)(void*)&soap_tmp_%s, \"%s\");", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type_u(typ->ref)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_tmp_%s)\n\t\treturn soap_out_%s(soap, tag, id, soap_tmp_%s, \"%s\");", ident(p->sym->name), c_ident(p->info.typ->ref), ident(p->sym->name), xsi_type_u(typ->ref)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, &a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(typ)); else fprintf(fout, "\n\treturn SOAP_OK;"); } else { if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\treturn soap_outliteral(soap, tag, (char*const*)&a->%s::%s, NULL);", ident(t->sym->name), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\treturn soap_outwliteral(soap, tag, (wchar_t*const*)&a->%s::%s, NULL);", ident(t->sym->name), ident(p->sym->name)); else if (is_qname(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)(void*)&soap_tmp_%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if (is_string(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)&a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type_u(typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (wchar_t*const*)&a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type_u(typ)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type_u(typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\treturn (a->%s::%s).soap_out(soap, tag, id, \"%s\");", ident(t->sym->name), ident(p->sym->name), xsi_type_u(typ)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, &soap_tmp_%s, \"%s\");", c_ident(p->info.typ), ident(p->sym->name), xsi_type_u(typ)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, (char*const*)(void*)&soap_tmp_%s, \"%s\");", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type_u(typ->ref)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_tmp_%s)\n\t\treturn soap_out_%s(soap, tag, id, soap_tmp_%s, \"%s\");", ident(p->sym->name), c_ident(p->info.typ->ref), ident(p->sym->name), xsi_type_u(typ->ref)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, &a->%s::%s, \"%s\");", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type_u(typ)); else fprintf(fout, "\n\treturn SOAP_OK;"); } fprintf(fout, "\n}"); } else { if (!is_invisible(typ->id->name)) { if (table && table->prev) fprintf(fout, "\n\tif (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, %s), type ? type : \"%s\"))\n\t\treturn soap->error;", soap_type(typ), xsi_type(typ)); else fprintf(fout, "\n\tif (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, %s), type))\n\t\treturn soap->error;", soap_type(typ)); } fflush(fout); i = 0; /* Get the depth of the inheritance hierarchy */ for (t = table; t; t = t->prev) i++; /* Call routines to output the member data of the class */ /* Data members of the Base Classes are outputed first followed by the data members of the Derived classes. Overridden data members are output twice once for the base class they are defined in and once for the derived class that overwrites them */ for (; i > 0; i--) { Entry *e; const char *nse1; t = table; for (j = 0; j < i-1; j++) t = t->prev; e = entry(classtable, t->sym); nse1 = e ? ns_qualifiedElement(e->info.typ) : nse; for (p = t->list; p != (Entry*) 0; p = p->next) { if (p->info.sto & Sreturn) { if (nse1 || has_ns_eq(NULL, p->sym->name)) { if (p->info.typ->type == Tpointer) fprintf(fout, "\n\tif (a->%s)\n\t\tsoap_element_result(soap, \"%s\");", ident(p->sym->name), ns_add(p, nse1)); else fprintf(fout, "\n\tsoap_element_result(soap, \"%s\");", ns_add(p, nse1)); } } if ((p->info.sto & SmustUnderstand) && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && !is_transient(p->info.typ) && !is_void(p->info.typ) && p->info.typ->type != Tfun) fprintf(fout, "\n\tsoap->mustUnderstand = 1;"); needs_lang(p); if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { fprintf(fout, "\n\tif (a->%s::%s)", ident(t->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < (int)a->%s::%s; i++)", ident(t->sym->name), ident(p->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (a->%s::%s[i].soap_out(soap, %s, -1, \"%s\"))\n\t\t\t\treturn soap->error;", ident(t->sym->name), ident(p->next->sym->name), field_overridden(t, p->next, nse1), xsi_type_u((Tnode*)p->next->info.typ->ref)); else if (is_qname((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t{\tconst char *soap_tmp_%s = soap_QName2s(soap, a->%s[i]);\n\t\t\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\t\t\treturn soap->error;\n\t\t}", ident(p->next->sym->name), ident(p->next->sym->name), c_ident((Tnode*)p->next->info.typ->ref), field_overridden(t, p->next, nse1), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_outliteral(soap, %s, (char*const*)(a->%s::%s + i), NULL))\n\t\t\t\treturn soap->error;", field_overridden(t, p->next, nse1), ident(t->sym->name), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_outwliteral(soap, %s, (wchar_t*const*)(a->%s::%s + i), NULL))\n\t\t\t\treturn soap->error;", field_overridden(t, p->next, nse1), ident(t->sym->name), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_out_string(soap, \"%s\", -1, (char*const*)(a->%s::%s + i), \"%s\"))\n\t\t\t\treturn soap->error;", ns_add(p->next, nse), ident(t->sym->name), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\tif (soap_out_wstring(soap, \"%s\", -1, (wchar_t*const*)(a->%s::%s + i), \"%s\"))\n\t\t\t\treturn soap->error;", ns_add(p->next, nse), ident(t->sym->name), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\tif (soap_out_%s(soap, %s, -1, a->%s::%s + i, \"%s\"))\n\t\t\t\treturn soap->error;", c_ident((Tnode*)p->next->info.typ->ref), field_overridden(t, p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type_u((Tnode*)p->next->info.typ->ref)); fprintf(fout, "\n\t}"); p = p->next; } else if (is_anytype(p) && is_invisible(p->next->sym->name)) { fprintf(fout, "\n\tif (soap_putelement(soap, a->%s::%s, tag, -1, a->%s::%s))\n\t\treturn soap->error;", ident(t->sym->name), ident(p->next->sym->name), ident(t->sym->name), ident(p->sym->name)); p = p->next; } else if (is_anytype(p)) { fprintf(fout, "\n\tif (soap_putelement(soap, a->%s::%s, %s, -1, a->%s::%s))\n\t\treturn soap->error;", ident(t->sym->name), ident(p->next->sym->name), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); p = p->next; } else if (is_choice(p)) { fprintf(fout, "\n\tif (soap_out_%s(soap, a->%s::%s, &a->%s::%s))\n\t\treturn soap->error;", c_ident(p->next->info.typ), ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_item(p)) ; else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif ((a->%s::%s).soap_out(soap, %s, -1, \"%s\"))\n\t\treturn soap->error;", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1), xsi_type_u(p->info.typ)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, &soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ)); else { if (zflag != 2 && p->info.typ->type == Tpointer && !is_void(p->info.typ) && p->info.minOccurs > 0) { /* xsi:nil only if nillable, otherwise empty element */ if (p->info.nillable) fprintf(fout, "\n\tif (!a->%s::%s)\n\t{\tif (soap_element_nil(soap, %s))\n\t\t\treturn soap->error;\n\t}\n\telse", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1)); else fprintf(fout, "\n\tif (!a->%s::%s)\n\t{\tif (soap_element_empty(soap, %s))\n\t\t\treturn soap->error;\n\t}\n\telse", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1)); } if (is_qname(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident((Tnode*)p->info.typ->ref), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ->ref)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_tmp_%s && soap_out_%s(soap, %s, -1, soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", ident(p->sym->name), c_ident(p->info.typ->ref), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ->ref)); else if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (soap_outliteral(soap, %s, (char*const*)&a->%s::%s, NULL))\n\t\treturn soap->error;", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap_outwliteral(soap, %s, (wchar_t*const*)&a->%s::%s, NULL))\n\t\treturn soap->error;", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)&a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (wchar_t*const*)&a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, &a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); } } } i = 0; /* Get the depth of the inheritance hierarchy */ for (t = table; t; t = t->prev) i++; /* output __item(s) and inherited DOM at the end */ for (; i > 0; i--) { Entry *e; const char *nse1; t = table; for (j = 0; j < i-1; j++) t = t->prev; e = entry(classtable, t->sym); if (!t->prev && e && e->info.typ && e->info.typ->base && !strcmp(e->info.typ->base->name, "soap_dom_element")) fprintf(fout, "\n\tif (soap_out_xsd__anyType(soap, NULL, -1, static_cast(a), NULL))\n\t\treturn soap->error;"); nse1 = e ? ns_qualifiedElement(e->info.typ) : nse; for (p = t->list; p != (Entry*) 0; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected | Sattribute)) ; else if (is_repetition(p) || is_anytype(p) || is_choice(p)) p = p->next; else if (!is_item(p)) ; else if (is_transient(p->info.typ)) ; else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif ((a->%s::%s).soap_out(soap, %s, -1, \"%s\"))\n\t\treturn soap->error;", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1), xsi_type_u(p->info.typ)); else if (is_stdqname(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, &soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ)); else { if (zflag != 2 && p->info.typ->type == Tpointer && !is_void(p->info.typ) && p->info.minOccurs > 0) { /* xsi:nil only if nillable, otherwise empty element */ if (p->info.nillable) fprintf(fout, "\n\tif(a->%s::%s)\n\t{\tif (soap_element_nil(soap, %s))\n\t\t\treturn soap->error;\n\t}\n\telse", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1)); else fprintf(fout, "\n\tif(a->%s::%s)\n\t{\tif (soap_element_empty(soap, %s))\n\t\t\treturn soap->error;\n\t}\n\telse", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1)); } if (is_qname(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_qname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)(void*)&soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", c_ident((Tnode*)p->info.typ->ref), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ->ref)); else if ((p->info.typ->type == Tpointer || is_smart(p->info.typ)) && is_stdqname((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\tif (soap_tmp_%s && soap_out_%s(soap, %s, -1, soap_tmp_%s, \"%s\"))\n\t\treturn soap->error;", ident(p->sym->name), c_ident(p->info.typ->ref), field_overridden(t, p, nse1), ident(p->sym->name), xsi_type_u(p->info.typ->ref)); else if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (soap_outliteral(soap, %s, (char*const*)&a->%s::%s, NULL))\n\t\treturn soap->error;", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap_outwliteral(soap, %s, (wchar_t*const*)&a->%s::%s, NULL))\n\t\treturn soap->error;", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (char*const*)&a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, (wchar_t*const*)&a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\tif (soap_out_%s(soap, %s, -1, &a->%s::%s, \"%s\"))\n\t\treturn soap->error;", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type_u(p->info.typ)); } fflush(fout); } } if (!is_invisible(typ->id->name)) fprintf(fout, "\n\treturn soap_element_end_out(soap, tag);\n}"); else fprintf(fout, "\n\treturn SOAP_OK;\n}"); } fflush(fout); break; case Tunion: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, int, const %s);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, int, const %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, int choice, const %s)\n{", c_ident(typ), c_type_id(typ, "*a")); table = (Table*)typ->ref; fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */"); fprintf(fout, "\n\tswitch (choice)\n\t{"); if (table) { for (p = table->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) ; else if (is_anytype(p)) ; else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (p->info.typ->type == Tarray) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn soap_out_%s(soap, \"%s\", -1, a->%s, \"%s\");", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn a->%s.soap_out(soap, \"%s\", -1, \"%s\");", ident(p->sym->name), ns_add(p, nse), xsi_type_u(p->info.typ)); } else if (is_qname(p->info.typ) || is_stdqname(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t{\tconst char *soap_tmp_%s = soap_QName2s(soap, a->%s);", ident(p->sym->name), ident(p->sym->name)); fprintf(fout, "\n\t\treturn soap_out_%s(soap, \"%s\", -1, (char*const*)(void*)&soap_tmp_%s, \"%s\");\n\t}", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); } else if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn soap_outliteral(soap, \"%s\", (char*const*)&a->%s, NULL);", ns_add(p, nse), ident(p->sym->name)); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn soap_outwliteral(soap, \"%s\", (wchar_t*const*)&a->%s, NULL);", ns_add(p, nse), ident(p->sym->name)); } else if (is_string(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn soap_out_%s(soap, \"%s\", -1, (char*const*)&a->%s, \"%s\");", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); } else if (is_wstring(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn soap_out_%s(soap, \"%s\", -1, (wchar_t*const*)&a->%s, \"%s\");", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "\n\tcase %s:", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn soap_out_%s(soap, \"%s\", -1, &a->%s, \"%s\");", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type_u(p->info.typ)); } } } fprintf(fout, "\n\tdefault:\n\t\tbreak;\n\t}\n\treturn SOAP_OK;\n}"); fflush(fout); break; case Tpointer: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char *, int, %s, const char *);", c_ident(typ), c_type_constptr_id(typ, "const*")); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char *, int, %s, const char *);", c_ident(typ), c_type_constptr_id(typ, "const*")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, %s, const char *type)\n{", c_ident(typ), c_type_constptr_id(typ, "const*a")); if (is_template(typ)) { fprintf(fout, "\n\tif (!*a)"); fprintf(fout, "\n\t\treturn soap_element_null(soap, tag, id, type);"); fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, *a, type);", c_ident((Tnode*)typ->ref)); } else { p = is_dynamic_array((Tnode*)typ->ref); if (p) { d = get_Darraydims((Tnode*)typ->ref); if (d) fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, *a, *a ? (*a)->%s : NULL, *a ? %s : 0, type, %s, NULL);", ident(p->sym->name), get_Darraysize("(*a)", d), soap_type((Tnode*)typ->ref)); else fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, *a, *a ? (*a)->%s : NULL, *a ? (*a)->__size : 0, type, %s, NULL);", ident(p->sym->name), soap_type((Tnode*)typ->ref)); fprintf(fout, "\n\tif (!*a || id < 0)\n\t\treturn soap->error;"); } else { if (((Tnode*)typ->ref)->recursive) fprintf(fout, "\n\tchar *mark;\n\tid = soap_element_id(soap, tag, id, *a, NULL, 0, type, %s, &mark);", soap_type((Tnode*)typ->ref)); else fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, *a, NULL, 0, type, %s, NULL);", soap_type((Tnode*)typ->ref)); fprintf(fout, "\n\tif (id < 0)\n\t\treturn soap->error;"); } if (((Tnode *) typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { if (!p && ((Tnode*)typ->ref)->recursive) fprintf(fout, "\n\t(void)(*a)->soap_out(soap, tag, id, (*a)->soap_type() == %s ? type : NULL);\n\tsoap_unmark(soap, mark);\n\treturn soap->error;", soap_type((Tnode*)typ->ref)); else fprintf(fout, "\n\treturn (*a)->soap_out(soap, tag, id, (*a)->soap_type() == %s ? type : NULL);", soap_type((Tnode*)typ->ref)); } else { if (!p && ((Tnode*)typ->ref)->recursive) fprintf(fout, "\n\t(void)soap_out_%s(soap, tag, id, *a, type);\n\tsoap_unmark(soap, mark);\n\treturn soap->error;", c_ident((Tnode*)typ->ref)); else fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, *a, type);", c_ident((Tnode*)typ->ref)); } } fprintf(fout, "\n}"); break; case Tarray: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, %s, const char*);", c_ident(typ), c_type_id(typ, "const")); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, %s, const char*);", c_ident(typ), c_type_id(typ, "const")); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "const a")); fprintf(fout, "\n\tsize_t i;\n\t(void)type;"); fprintf(fout, "\n\tsoap_array_begin_out(soap, tag, soap_embedded_id(soap, id, a, %s), \"%s[%d]\", 0);", soap_type(typ), xsi_type_Tarray(typ), get_dimension(typ)); n=(Tnode*)typ->ref; cardinality = 1; while (n->type == Tarray) { n = (Tnode*)n->ref; cardinality++; } fprintf(fout, "\n\tfor (i = 0; i < %d; i++)\n\t{", get_dimension(typ)); if (((Tnode *)typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { if (cardinality>1) fprintf(fout, "\n\t\tif (a[i].soap_out(soap, \"item\", -1, \"%s\")", xsi_type_u((Tnode*)typ->ref)); else fprintf(fout, "\n\t\tif ((a+i)->soap_out(soap, \"item\", -1, \"%s\")", xsi_type_u((Tnode*)typ->ref)); } else { if (((Tnode *)typ->ref)->type != Tarray) { if (((Tnode *)typ->ref)->type == Tpointer) fprintf(fout, "\n\t\tsoap->position = 1;\n\t\tsoap->positions[0] = i;\n\t\tif (soap_out_%s(soap, \"item\", -1, a", c_ident((Tnode*)typ->ref)); else fprintf(fout, "\n\t\tif (soap_out_%s(soap, \"item\", -1, a", c_ident((Tnode*)typ->ref)); } else fprintf(fout, "\n\t\tif (soap_out_%s(soap, \"item\", -1, a", c_ident((Tnode*)typ->ref)); if (cardinality>1) fprintf(fout, "[i], \"%s\")", xsi_type_u((Tnode*)typ->ref)); else fprintf(fout, "+i, \"%s\")", xsi_type_u((Tnode*)typ->ref)); } fprintf(fout, ")\n\t\t\treturn soap->error;"); if (((Tnode *)typ->ref)->type == Tpointer) fprintf(fout, "\n\t}\n\tsoap->position = 0;\n\treturn soap_element_end_out(soap, tag);\n}"); else fprintf(fout, "\n\t}\n\treturn soap_element_end_out(soap, tag);\n}"); break; case Tenum: case Tenumsc: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); if (!is_typedef(typ)) { fprintf(fout, "\n\nstatic const struct soap_code_map soap_codes_%s[] =\n{", c_ident(typ)); for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (typ->type == Tenumsc) fprintf(fout, "\t{ (LONG64)%s::%s, \"%s\" },\n", c_ident(typ), ident(p->sym->name), ns_remove2(p->sym->name, c_ident(typ))); else fprintf(fout, "\t{ (LONG64)%s, \"%s\" },\n", ident(p->sym->name), ns_remove2(p->sym->name, c_ident(typ))); } } fprintf(fout, "\t{ 0, NULL }\n"); fprintf(fout, "};"); } if (!is_typedef(typ)) { fprintf(fhead, "\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap*, %s);", c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap *soap, %s)", c_ident(typ), c_type_id(typ, "n")); if (is_boolean(typ)) fprintf(fout, "\n{\n\t(void)soap; /* appease -Wall -Werror */\n\treturn soap_code_str(soap_codes_%s, n != 0);\n}", c_ident(typ)); else if (!is_mask(typ)) { fprintf(fout, "\n{\tconst char *s = soap_code_str(soap_codes_%s, (long)n);", c_ident(typ)); fprintf(fout, "\n\tif (s)\n\t\treturn s;"); fprintf(fout, "\n\treturn soap_long2s(soap, (long)n);"); fprintf(fout, "\n}"); } else fprintf(fout, "\n{\n\treturn soap_code_list(soap, soap_codes_%s, (long)n);\n}", c_ident(typ)); } fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "*a")); x = xsi_type_u(typ); if (x && *x) fprintf(fout, "\n\tif (!type)\n\t\ttype = \"%s\";", x); fprintf(fout, "\n\tif (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, %s), type)", soap_type(typ)); fprintf(fout, " || soap_send(soap, soap_%s2s(soap, *a)))\n\t\treturn soap->error;", c_ident(typ)); fprintf(fout, "\n\treturn soap_element_end_out(soap, tag);\n}"); break; case Ttemplate: if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 int SOAP_FMAC2 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); return; } if (is_typedef(typ)) { fprintf(fhead, "\n\n#define soap_out_%s soap_out_%s\n", c_ident(typ), t_ident(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); n = (Tnode*)typ->ref; if (!n) return; fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)id; (void)type; /* appease -Wall -Werror */"); if (is_smart(typ)) { p = is_dynamic_array((Tnode*)typ->ref); if (p) { d = get_Darraydims((Tnode*)typ->ref); if (d) fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, a->get(), a->get() ? (*a)->%s : NULL, a->get() ? %s : 0, type, %s, NULL);", ident(p->sym->name), get_Darraysize("(*a)", d), soap_type((Tnode*)typ->ref)); else fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, a->get(), a->get() ? (*a)->%s : NULL, a->get() ? (*a)->__size : 0, type, %s, NULL);", ident(p->sym->name), soap_type((Tnode*)typ->ref)); } else if (((Tnode*)typ->ref)->recursive) fprintf(fout, "\n\tchar *mark;\n\tid = soap_element_id(soap, tag, id, a->get(), NULL, 0, type, %s, &mark);", soap_type((Tnode*)typ->ref)); else fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, a->get(), NULL, 0, type, %s, NULL);", soap_type((Tnode*)typ->ref)); fprintf(fout, "\n\tif (id < 0)\n\t\treturn soap->error;"); if (((Tnode *) typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { if (!p && ((Tnode*)typ->ref)->recursive) fprintf(fout, "\n\t(void)(*a)->soap_out(soap, tag, id, (*a)->soap_type() == %s ? type : NULL);\n\tsoap_unmark(soap, mark);\n\treturn soap->error;", soap_type((Tnode*)typ->ref)); else fprintf(fout, "\n\treturn (*a)->soap_out(soap, tag, id, (*a)->soap_type() == %s ? type : NULL);", soap_type((Tnode*)typ->ref)); } else { if (!p && ((Tnode*)typ->ref)->recursive) fprintf(fout, "\n\t(void)soap_out_%s(soap, tag, id, a->get(), type);\n\tsoap_unmark(soap, mark);\n\treturn soap->error;", c_ident((Tnode*)typ->ref)); else fprintf(fout, "\n\treturn soap_out_%s(soap, tag, id, a->get(), type);", c_ident((Tnode*)typ->ref)); } fprintf(fout, "\n}"); } else { fprintf(fout, "\n\tfor (%s::const_iterator i = a->begin(); i != a->end(); ++i)\n\t{", c_type(typ)); if (n->type == Tarray) fprintf(fout, "\n\t\tif (soap_out_%s(soap, tag, id, *i, \"%s\"))", c_ident(n), xsi_type_u(typ)); else if (n->type == Tclass && !is_external(n) && !is_volatile(n) && !is_typedef(n)) fprintf(fout, "\n\t\tif ((*i).soap_out(soap, tag, id, \"%s\"))", xsi_type_u(typ)); else if (is_qname(n)) fprintf(fout, "\n\t\tconst char *soap_tmp = soap_QName2s(soap, *i);\n\t\tif (soap_out_%s(soap, tag, id, (char*const*)(void*)&soap_tmp, \"%s\"))", c_ident(n), xsi_type_u(typ)); else if (is_stdqname(n)) fprintf(fout, "\n\t\tstd::string soap_tmp(soap_QName2s(soap, (*i).c_str()));\n\t\tif (soap_out_%s(soap, tag, id, &soap_tmp, \"%s\"))", c_ident(n), xsi_type_u(typ)); else if (is_XML(n) && is_string(n)) fprintf(fout, "\n\t\tif (soap_outliteral(soap, tag, (char*const*)&(*i), NULL))"); else if (is_XML(n) && is_wstring(n)) fprintf(fout, "\n\t\tif (soap_outwliteral(soap, tag, (wchar_t*const*)&(*i), NULL))"); else if (is_string(n)) fprintf(fout, "\n\t\tif (soap_out_%s(soap, tag, -1, (char*const*)&(*i), \"%s\"))", c_ident(n), xsi_type_u(typ)); else if (is_wstring(n)) fprintf(fout, "\n\t\tif (soap_out_%s(soap, tag, -1, (wchar_t*const*)&(*i), \"%s\"))", c_ident(n), xsi_type_u(typ)); else if (is_bool(n)) fprintf(fout, "\n\t\tbool b = (*i);\n\t\tif (soap_out_%s(soap, tag, id, &b, \"%s\"))", c_ident(n), xsi_type_u(typ)); else fprintf(fout, "\n\t\tif (soap_out_%s(soap, tag, id, &(*i), \"%s\"))", c_ident(n), xsi_type_u(typ)); fprintf(fout, "\n\t\t\treturn soap->error;"); fprintf(fout, "\n\t}\n\treturn SOAP_OK;\n}"); } break; default: break; } } void soap_out_Darray(Tnode *typ) { int i, j, d = 0; Table *t, *table; Entry *p; const char *nse = ns_qualifiedElement(typ); const char *nsa = ns_qualifiedAttribute(typ); const char *item; table = (Table*)typ->ref; fprintf(fhead, "\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap*, const char*, int, const %s, const char*);", c_ident(typ), c_type_id(typ, "*")); if (is_external(typ)) return; if (is_binary(typ)) { fprintf(fhead, "\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap*, %s);", c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3S const char* SOAP_FMAC4S soap_%s2s(struct soap *soap, %s)\n{", c_ident(typ), c_type_id(typ, "a")); if (is_hexBinary(typ)) fprintf(fout, "\n\treturn soap_s2hex(soap, a.__ptr, NULL, a.__size);"); else fprintf(fout, "\n\treturn soap_s2base64(soap, a.__ptr, NULL, a.__size);"); fprintf(fout, "\n}"); } if (typ->type == Tclass && !is_volatile(typ) && !is_typedef(typ)) { fprintf(fout, "\n\nint %s::soap_out(struct soap *soap, const char *tag, int id, const char *type) const", c_type(typ)); fprintf(fout, "\n{\treturn soap_out_%s(soap, tag, id, this, type);\n}", c_ident(typ)); } fflush(fout); fprintf(fout, "\n\nSOAP_FMAC3 int SOAP_FMAC4 soap_out_%s(struct soap *soap, const char *tag, int id, const %s, const char *type)\n{", c_ident(typ), c_type_id(typ, "*a")); if (has_setter(typ)) fprintf(fout, "\n\t((%s)a)->set(soap);", c_type_id(typ, "*")); if (!is_binary(typ)) { p = is_dynamic_array(typ); d = get_Darraydims(typ); if (d) fprintf(fout, "\n\tsize_t i, n = soap_size(a->__size, %d);", d); else fprintf(fout, "\n\tint i, n = a->__size;"); } if (typ->type == Tclass) { for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.sto & Sattribute) soap_set_attr(p, ptr_cast(t, "a"), ident(p->sym->name), ns_add(p, nsa)); } } } else { for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.sto & Sattribute) soap_set_attr(p, "a", ident(p->sym->name), ns_add(p, nsa)); } } } p = is_dynamic_array(typ); if (p->sym->name[5]) item = ns_addx(ns_convert(p->sym->name + 5), nse); else item = ns_addx("item", nse); if (!has_ns(typ) && !is_untyped(typ) && !is_binary(typ)) { const char *s = xsi_type(typ); if (is_untyped(p->info.typ)) s = wsdl_type(p->info.typ, "xsd"); if (d) { if (has_offset(typ)) fprintf(fout, "\n\tchar *t = a->%s ? soap_putsizesoffsets(soap, \"%s\", a->__size, a->__offset, %d) : NULL;", ident(p->sym->name), s, d); else fprintf(fout, "\n\tchar *t = a->%s ? soap_putsizesoffsets(soap, \"%s\", a->__size, NULL, %d) : NULL;", ident(p->sym->name), s, d); } else { if (has_offset(typ)) fprintf(fout, "\n\tchar *t = a->%s ? soap_putsizesoffsets(soap, \"%s\", &a->__size, &a->__offset, 1) : NULL;", ident(p->sym->name), s); else fprintf(fout, "\n\tchar *t = a->%s ? soap_putsizesoffsets(soap, \"%s\", &a->__size, NULL, 1) : NULL;", ident(p->sym->name), s); } } if (d) fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, a, a->%s, %s, type, %s, NULL);", ident(p->sym->name), get_Darraysize("a", d), soap_type(typ)); else if (is_attachment(typ)) { fprintf(fout, "\n#ifndef WITH_LEANER\n\tid = soap_attachment(soap, tag, id, a, a->%s, a->__size, a->id, a->type, a->options, type, %s);", ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n#else\n\tid = soap_element_id(soap, tag, id, a, a->%s, a->__size, type, %s, NULL);\n#endif", ident(p->sym->name), soap_type(typ)); } else fprintf(fout, "\n\tid = soap_element_id(soap, tag, id, a, a->%s, a->__size, type, %s, NULL);", ident(p->sym->name), soap_type(typ)); fprintf(fout, "\n\tif (id < 0)\n\t\treturn soap->error;"); fprintf(fout, "\n\tif ("); if (has_ns(typ) || is_untyped(typ) || is_binary(typ)) { if (table && table->prev) fprintf(fout, "soap_element_begin_out(soap, tag, id, type ? type : \"%s\")", xsi_type(typ)); else fprintf(fout, "soap_element_begin_out(soap, tag, id, type)"); } else if (has_offset(typ)) { if (d) fprintf(fout, "soap_array_begin_out(soap, tag, id, t, soap_putoffsets(soap, a->__offset, %d))", d); else fprintf(fout, "soap_array_begin_out(soap, tag, id, t, soap_putoffsets(soap, &a->__offset, 1))"); } else fprintf(fout, "soap_array_begin_out(soap, tag, id, t, NULL)"); fprintf(fout, ")\n\t\treturn soap->error;"); if (is_hexBinary(typ)) fprintf(fout, "\n\tif (soap_puthex(soap, a->__ptr, a->__size))\n\t\treturn soap->error;"); else if (is_binary(typ)) fprintf(fout, "\n\tif (soap_putbase64(soap, a->__ptr, a->__size))\n\t\treturn soap->error;"); else { fprintf(fout, "\n\tfor (i = 0; i < n; i++)\n\t{"); if (!has_ns(typ) && !is_untyped(typ)) { if (d) { fprintf(fout, "\n\t\tsoap->position = %d;", d); for (i = 0; i < d; i++) { fprintf(fout, "\n\t\tsoap->positions[%d] = i", i); for (j = i+1; j < d; j++) fprintf(fout, "/a->__size[%d]", j); fprintf(fout, "%%a->__size[%d];", i); } fprintf(fout, "\n\t\tif ("); if (is_XML((Tnode*)p->info.typ->ref) && is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_outliteral(soap, \"%s\", (char*const*)&a->%s[i], NULL)", item, ident(p->sym->name)); else if (is_XML((Tnode*)p->info.typ->ref) && is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_outwliteral(soap, \"%s\", (wchar_t*const*)&a->%s[i], NULL)", item, ident(p->sym->name)); else if (is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_out_%s(soap, \"%s\", -1, (char*const*)&a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); else if (is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_out_%s(soap, \"%s\", -1, (wchar_t*const*)&a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); else if (((Tnode *)p->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "a->%s[i].soap_out(soap, \"%s\", -1, \"%s\")", ident(p->sym->name), item, xsi_type_u(((Tnode *)p->info.typ->ref))); else fprintf(fout, "soap_out_%s(soap, \"%s\", -1, &a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); fprintf(fout, ")\n\t\t\treturn soap->error;"); } else { fprintf(fout, "\n\t\tsoap->position = 1;\n\t\tsoap->positions[0] = i;"); fprintf(fout, "\n\t\tif ("); if (is_XML((Tnode*)p->info.typ->ref) && is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_outliteral(soap, \"%s\", &a->%s[i], NULL)", item, ident(p->sym->name)); else if (is_XML((Tnode*)p->info.typ->ref) && is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_outwliteral(soap, \"%s\", &a->%s[i], NULL)", item, ident(p->sym->name)); else if (is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_out_%s(soap, \"%s\", -1, (char*const*)&a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); else if (is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_out_%s(soap, \"%s\", -1, (wchar_t*const*)&a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); else if (((Tnode *)p->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "a->%s[i].soap_out(soap, \"%s\", -1, \"%s\")", ident(p->sym->name), item, xsi_type_u(((Tnode *)p->info.typ->ref))); else fprintf(fout, "soap_out_%s(soap, \"%s\", -1, &a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); fprintf(fout, ")\n\t\t\treturn soap->error;"); } } else { fprintf(fout, "\n\t\tif ("); if (is_XML((Tnode*)p->info.typ->ref) && is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_outliteral(soap, \"%s\", &a->%s[i], NULL)", item, ident(p->sym->name)); else if (is_XML((Tnode*)p->info.typ->ref) && is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_outwliteral(soap, \"%s\", &a->%s[i], NULL)", item, ident(p->sym->name)); else if (is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_out_%s(soap, \"%s\", -1, (char*const*)&a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); else if (is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "soap_out_%s(soap, \"%s\", -1, (wchar_t*const*)&a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); else if (((Tnode *)p->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "a->%s[i].soap_out(soap, \"%s\", -1, \"%s\")", ident(p->sym->name), item, xsi_type_u(((Tnode *)p->info.typ->ref))); else fprintf(fout, "soap_out_%s(soap, \"%s\", -1, &a->%s[i], \"%s\")", c_ident(((Tnode *)p->info.typ->ref)), item, ident(p->sym->name), xsi_type_u(((Tnode *)p->info.typ->ref))); fprintf(fout, ")\n\t\t\treturn soap->error;"); } } if (is_binary(typ)) fprintf(fout, "\n\treturn soap_element_end_out(soap, tag);\n}"); else if (!has_ns(typ) && !is_untyped(typ)) fprintf(fout, "\n\t}\n\tsoap->position = 0;\n\treturn soap_element_end_out(soap, tag);\n}"); else fprintf(fout, "\n\t}\n\treturn soap_element_end_out(soap, tag);\n}"); } void soap_get(Tnode *typ) { Tnode *temp; if (is_XML(typ)) return; if (typ->type == Ttemplate || typ->type == Tunion) return; if (is_typedef(typ) && (is_template(typ) || is_element(typ) || is_synonym(typ) || is_external(typ) || is_imported(typ)) && (!is_external(typ) || is_volatile(typ))) { fprintf(fhead, "\n\n#define soap_get_%s soap_get_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_read_%s soap_read_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_GET_%s soap_GET_%s\n", c_ident(typ), t_ident(typ)); fprintf(fhead, "\n\n#define soap_POST_recv_%s soap_POST_recv_%s\n", c_ident(typ), t_ident(typ)); return; } if (typ->type == Tarray) { /* ARRAY */ temp = typ; while (temp->type == Tarray) { temp = (Tnode*)temp->ref; } fprintf(fhead, "\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_get_%s(struct soap*, %s, const char*, const char*);", c_type(temp), c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_get_%s(struct soap *soap, %s, const char *tag, const char *type)", c_type(temp), c_ident(typ), c_type_id(typ, "a")); fprintf(fout, "\n{\t%s;", c_type_id(temp, "(*p)")); fprintf(fout, "\n\tif ((p = soap_in_%s(soap, tag, a, type)))", c_ident(typ)); } else if (typ->type == Tclass && !is_external(typ) && !is_volatile(typ) && !is_typedef(typ)) { /* CLASS */ fprintf(fout, "\n\nvoid *%s::soap_get(struct soap *soap, const char *tag, const char *type)", c_type(typ)); fprintf(fout, "\n{\n\treturn soap_get_%s(soap, this, tag, type);\n}", c_ident(typ)); fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_get_%s(struct soap*, %s, const char*, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_get_%s(struct soap *soap, %s, const char *tag, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*p")); fprintf(fout, "\n\tif ((p = soap_in_%s(soap, tag, p, type)))", c_ident(typ)); } else { fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_get_%s(struct soap*, %s, const char*, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_get_%s(struct soap *soap, %s, const char *tag, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*p")); fprintf(fout, "\n\tif ((p = soap_in_%s(soap, tag, p, type)))", c_ident(typ)); } fprintf(fout, "\n\t\tif (soap_getindependent(soap))\n\t\t\treturn NULL;"); fprintf(fout, "\n\treturn p;\n}"); if ((typ->type != Tpointer || is_string(typ) || is_wstring(typ)) && typ->type != Tarray && typ->type != Treference && typ->type != Trvalueref && !is_template(typ) && !is_anyAttribute(typ)) { if (typ->type == Tclass && !is_external(typ) && !is_volatile(typ) && !is_typedef(typ)) { if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tp->soap_default(soap);\n\t\tif (soap_begin_recv(soap) || %s::soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tp->soap_default(soap);\n\t\tif (soap_begin_recv(soap) || ::soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); else fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tp->soap_default(soap);\n\t\tif (soap_begin_recv(soap) || soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); } else if (is_primitive_or_string(typ)) { if (cflag) fprintf(fhead, "\n\n#ifndef soap_read_%s\n#define soap_read_%s(soap, data) ( soap_begin_recv(soap) || !soap_get_%s(soap, (data), NULL, NULL) || soap_end_recv(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ)); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tif (soap_begin_recv(soap) || %s::soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tif (soap_begin_recv(soap) || ::soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); else fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tif (soap_begin_recv(soap) || soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); } else { if (cflag) fprintf(fhead, "\n\n#ifndef soap_read_%s\n#define soap_read_%s(soap, data) ( ((data) ? (soap_default_%s(soap, (data)), 0) : 0) || soap_begin_recv(soap) || !soap_get_%s(soap, (data), NULL, NULL) || soap_end_recv(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ), c_ident(typ)); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\t%s::soap_default_%s(soap, p);\n\t\tif (soap_begin_recv(soap) || %s::soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), namespaceid, c_ident(typ), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\t::soap_default_%s(soap, p);\n\t\tif (soap_begin_recv(soap) || ::soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ), c_ident(typ)); else fprintf(fhead, "\n\ninline int soap_read_%s(struct soap *soap, %s)\n{\n\tif (p)\n\t{\tsoap_default_%s(soap, p);\n\t\tif (soap_begin_recv(soap) || soap_get_%s(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))\n\t\t\treturn soap->error;\n\t}\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ), c_ident(typ)); } if (cflag) fprintf(fhead, "\n\n#ifndef soap_GET_%s\n#define soap_GET_%s(soap, URL, data) ( soap_GET(soap, URL, NULL) || soap_read_%s(soap, (data)), soap_closesock(soap) )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ)); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_GET_%s(struct soap *soap, const char *URL, %s)\n{\n\tif (soap_GET(soap, URL, NULL) || %s::soap_read_%s(soap, p) || soap_closesock(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_GET_%s(struct soap *soap, const char *URL, %s)\n{\n\tif (soap_GET(soap, URL, NULL) || ::soap_read_%s(soap, p) || soap_closesock(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); else fprintf(fhead, "\n\ninline int soap_GET_%s(struct soap *soap, const char *URL, %s)\n{\n\tif (soap_GET(soap, URL, NULL) || soap_read_%s(soap, p) || soap_closesock(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); if (cflag) fprintf(fhead, "\n\n#ifndef soap_POST_recv_%s\n#define soap_POST_recv_%s(soap, data) ( soap_read_%s(soap, (data)) || soap_closesock(soap), (soap)->error )\n#endif\n", c_ident(typ), c_ident(typ), c_ident(typ)); else if (namespaceid && !is_external(typ)) fprintf(fhead, "\n\ninline int soap_POST_recv_%s(struct soap *soap, %s)\n{\n\tif (%s::soap_read_%s(soap, p) || soap_closesock(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), namespaceid, c_ident(typ)); else if (!is_external(typ)) fprintf(fhead, "\n\ninline int soap_POST_recv_%s(struct soap *soap, %s)\n{\n\tif (::soap_read_%s(soap, p) || soap_closesock(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); else fprintf(fhead, "\n\ninline int soap_POST_recv_%s(struct soap *soap, %s)\n{\n\tif (soap_read_%s(soap, p) || soap_closesock(soap))\n\t\treturn soap_closesock(soap);\n\treturn SOAP_OK;\n}", c_ident(typ), c_type_id(typ, "*p"), c_ident(typ)); } fflush(fout); } void soap_in(Tnode *typ) { Entry *p = NULL; Table *table, *t; int total, strict, nonempty, flag, cardinality, i, j; Tnode *n, *temp; const char *nse = ns_qualifiedElement(typ); const char *nsa = ns_qualifiedAttribute(typ); if (is_XML(typ)) return; if (is_dynamic_array(typ)) { soap_in_Darray(typ); return; } if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap*, const char*, %s);", c_ident(typ), c_type_id(typ, "*")); } else if (is_qname(typ)) fprintf(fhead, "\n\n#define soap_s2%s(soap, s, a) soap_s2QName((soap), (s), (char**)(a), %ld, %ld, %s)", c_ident(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_string(typ)) fprintf(fhead, "\n\n#define soap_s2%s(soap, s, a) soap_s2char((soap), (s), (char**)(a), %d, %ld, %ld, %s)", c_ident(typ), property(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_wstring(typ)) fprintf(fhead, "\n\n#define soap_s2%s(soap, s, a) soap_s2wchar((soap), (s), (wchar_t**)(a), %d, %ld, %ld, %s)", c_ident(typ), property(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_stdqname(typ)) fprintf(fhead, "\n\n#define soap_s2%s(soap, s, a) soap_s2stdQName((soap), (s), (a), %ld, %ld, %s)", c_ident(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_stdstring(typ)) fprintf(fhead, "\n\n#define soap_s2%s(soap, s, a) soap_s2stdchar((soap), (s), (a), %d, %ld, %ld, %s)", c_ident(typ), property(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_stdwstring(typ)) fprintf(fhead, "\n\n#define soap_s2%s(soap, s, a) soap_s2stdwchar((soap), (s), (a), %d, %ld, %ld, %s)", c_ident(typ), property(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_typedef(typ) && typ->type <= Tstruct && (!is_external(typ) || is_volatile(typ)) && !is_qname(typ) && !is_stdqname(typ)) { if (!is_synonym(typ) && (typ->hasmin || typ->hasmax || (typ->pattern && typ->pattern[0] != '%'))) { fprintf(fhead, "\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap*, const char*, %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap *soap, const char *s, %s)\n{", c_ident(typ), c_type_id(typ, "*a")); if (is_string(typ) || is_wstring(typ) || is_stdstr(typ)) fprintf(fout, "\n\tint err = soap_s2%s(soap, s, a, %ld, %ld, %s);\n\tif (!err)\n\t{", t_ident(typ), minlen(typ), maxlen(typ), pattern(typ)); else { fprintf(fout, "\n\tint err = soap_s2%s(soap, s, a);\n\tif (!err)\n\t{", t_ident(typ)); if (typ->hasmin) { if (!cflag && (typ->type == Tclass || typ->type == Tstruct)) { if (typ->min > 0) fprintf(fout, "\n\t\tif ((*a)->size() %s %lG)\n\t\t\treturn soap->error = SOAP_LENGTH;", typ->incmin ? "<" : "<=", typ->min); } else if ((typ->type >= Tfloat && typ->type <= Tldouble) || is_external(typ)) fprintf(fout, "\n\t\tif (*a %s %lG)\n\t\t\treturn soap->error = SOAP_LENGTH;", typ->incmin ? "<" : "<=", typ->min); else if (typ->min > 0 || typ->type < Tuchar || typ->type > Tullong) fprintf(fout, "\n\t\tif (*a %s " SOAP_LONG_FORMAT ")\n\t\t\treturn soap->error = SOAP_LENGTH;", typ->incmin ? "<" : "<=", (LONG64)typ->min); } if (typ->hasmax) { if (!cflag && (typ->type == Tclass || typ->type == Tstruct)) { if (typ->max >= 0) fprintf(fout, "\n\t\tif ((*a).size() %s %lG)\n\t\t\treturn soap->error = SOAP_LENGTH;", typ->incmax ? ">" : ">=", typ->max); } else if ((typ->type >= Tfloat && typ->type <= Tldouble) || is_external(typ)) fprintf(fout, "\n\t\tif (*a %s %lG)\n\t\t\treturn soap->error = SOAP_LENGTH;", typ->incmax ? ">" : ">=", typ->max); else if (typ->max >= 0 || typ->type < Tuchar || typ->type > Tullong) fprintf(fout, "\n\t\tif (*a %s " SOAP_LONG_FORMAT ")\n\t\t\treturn soap->error = SOAP_LENGTH;", typ->incmax ? ">" : ">=", (LONG64)typ->max); } } fprintf(fout, "\n\t}\n\treturn err;\n}"); } else fprintf(fhead, "\n\n#define soap_s2%s soap_s2%s\n", c_ident(typ), t_ident(typ)); } if (is_typedef(typ) && (is_element(typ) || is_synonym(typ)) && (!is_external(typ) || is_volatile(typ))) { fprintf(fhead, "\n\n#define soap_in_%s soap_in_%s\n", c_ident(typ), t_ident(typ)); return; } if ((is_primitive_or_string(typ) && typ->type != Tenum && typ->type != Tenumsc) || (is_external(typ) && is_volatile(typ))) { if (is_stdstring(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC1 std::string * SOAP_FMAC2 soap_in_%s(struct soap*, const char*, std::string*, const char*);", c_ident(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_%s(struct soap*, const char*, std::string*, const char*);", c_ident(typ)); if (is_stdXML(typ)) fprintf(fout, "\n\nSOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, std::string *s, const char *type)\n{\n\tchar *t;\n\t(void)type; /* appease -Wall -Werror */\n\tif (soap_inliteral(soap, tag, &t))\n\t{\tif (!s)\n\t\t\ts = soap_new_std__string(soap, -1);\n\t\ts->assign(t);\n\t\treturn s;\n\t}\n\treturn NULL;\n}", c_ident(typ)); else { fprintf(fout, "\n\nSOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, std::string *s, const char *type)\n{\n\t(void)type; /* appease -Wall -Werror */\n\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\treturn NULL;\n\tif (!s)\n\t\ts = soap_new_std__string(soap, -1);\n\tif (soap->null)\n\t\tif (s)\n\t\t\ts->erase();", c_ident(typ)); fprintf(fout, "\n\tif (soap->body && *soap->href != '#')\n\t{\tchar *t;\n\t\ts = (std::string*)soap_id_enter(soap, soap->id, s, %s, sizeof(std::string), soap->type, soap->arrayType, %s_instantiate, %s_fbase);\n\t\tif (s)\n\t\t{\tif (!(t = soap_string_in(soap, %d, %ld, %ld, %s)))\n\t\t\t\treturn NULL;\n\t\t\ts->assign(t);\n\t\t}\n\t}\n\telse\n\t\ts = (std::string*)soap_id_forward(soap, soap->href, soap_id_enter(soap, soap->id, s, %s, sizeof(std::string), soap->type, soap->arrayType, %s_instantiate, %s_fbase), 0, %s, %s, sizeof(std::string), 0, %s_finsert, NULL);\n\tif (soap->body && soap_element_end_in(soap, tag))\n\t\treturn NULL;\n\treturn s;\n}", soap_type(typ), prefix, prefix, property(typ), minlen(typ), maxlen(typ), pattern(typ), soap_type(typ), prefix, prefix, soap_type(typ), soap_type(typ), prefix); } return; } if (is_stdwstring(typ)) { if (is_external(typ)) { fprintf(fhead, "\nSOAP_FMAC3 std::wstring * SOAP_FMAC4 soap_in_%s(struct soap*, const char*, std::wstring*, const char*);", c_ident(typ)); return; } if (is_stdXML(typ)) fprintf(fout, "\n\nSOAP_FMAC3 std::wstring * SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, std::wstring *s, const char *type)\n{\n\twchar_t *t;\n\t(void)type; /* appease -Wall -Werror */\n\tif (soap_inwliteral(soap, tag, &t))\n\t{\tif (!s)\n\t\t\ts = soap_new_std__wstring(soap, -1);\n\t\ts->assign(t);\n\t\treturn s;\n\t}\n\treturn NULL;\n}", c_ident(typ)); else { fprintf(fhead, "\nSOAP_FMAC3 std::wstring * SOAP_FMAC4 soap_in_%s(struct soap*, const char*, std::wstring*, const char*);", c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 std::wstring * SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, std::wstring *s, const char *type)\n{\n\t(void)type; /* appease -Wall -Werror */\n\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\treturn NULL;\n\tif (!s)\n\t\ts = soap_new_std__wstring(soap, -1);\n\tif (soap->null)\n\t\tif (s)\n\t\t\ts->erase();", c_ident(typ)); fprintf(fout, "\n\tif (soap->body && *soap->href != '#')\n\t{\twchar_t *t;\n\t\ts = (std::wstring*)soap_id_enter(soap, soap->id, s, %s, sizeof(std::wstring), soap->type, soap->arrayType, %s_instantiate, %s_fbase);\n\t\tif (s)\n\t\t{\tif (!(t = soap_wstring_in(soap, %d, %ld, %ld, %s)))\n\t\t\t\treturn NULL;\n\t\t\ts->assign(t);\n\t\t}\n\t}\n\telse\n\t\ts = (std::wstring*)soap_id_forward(soap, soap->href, soap_id_enter(soap, soap->id, s, %s, sizeof(std::wstring), soap->type, soap->arrayType, %s_instantiate, %s_fbase), 0, %s, %s, sizeof(std::wstring), 0, %s_finsert, NULL);\n\tif (soap->body && soap_element_end_in(soap, tag))\n\t\treturn NULL;\n\treturn s;\n}", soap_type(typ), prefix, prefix, property(typ), minlen(typ), maxlen(typ), pattern(typ), soap_type(typ), prefix, prefix, soap_type(typ), soap_type(typ), prefix); } return; } if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s * SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type(typ), c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type(typ), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s * SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type(typ), c_ident(typ), c_type_id(typ, "*a")); if (is_wstring(typ)) fprintf(fout, "\n\ta = soap_inwstring(soap, tag, a, type, %s, %d, %ld, %ld, %s);", soap_type(typ), property(typ), minlen(typ), maxlen(typ), pattern(typ)); else if (is_string(typ)) fprintf(fout, "\n\ta = soap_instring(soap, tag, a, type, %s, %d, %ld, %ld, %s);", soap_type(typ), property(typ), minlen(typ), maxlen(typ), pattern(typ)); else { if (typ->type == Tllong || typ->type == Tullong) fprintf(fout, "\n\ta = soap_in%s(soap, tag, a, type, %s);", c_type(typ), soap_type(typ)); else if (is_primitive_or_string(typ)) fprintf(fout, "\n\ta = soap_in%s(soap, tag, a, type, %s);", the_type(typ), soap_type(typ)); else fprintf(fout, "\n\ta = soap_in_%s(soap, tag, a, type);", t_ident(typ)); if (typ->hasmin) { if (!cflag && (typ->type == Tclass || typ->type == Tstruct)) { if (typ->min > 0) fprintf(fout, "\n\tif (a && (*a).size() %s %lG)\n\t{\tsoap->error = SOAP_LENGTH;\n\t\treturn NULL;\n\t}", typ->incmin ? "<" : "<=", typ->min); } else if ((typ->type >= Tfloat && typ->type <= Tldouble) || is_external(typ)) fprintf(fout, "\n\tif (a && *a %s %lG)\n\t{\tsoap->error = SOAP_LENGTH;\n\t\treturn NULL;\n\t}", typ->incmin ? "<" : "<=", typ->min); else if (typ->min > 0 || typ->type < Tuchar || typ->type > Tullong) fprintf(fout, "\n\tif (a && *a %s " SOAP_LONG_FORMAT ")\n\t{\tsoap->error = SOAP_LENGTH;\n\t\treturn NULL;\n\t}", typ->incmin ? "<" : "<=", (LONG64)typ->min); } if (typ->hasmax) { if (!cflag && (typ->type == Tclass || typ->type == Tstruct)) { if (typ->max >= 0) fprintf(fout, "\n\tif (a && (*a).size() %s %lG)\n\t{\tsoap->error = SOAP_LENGTH;\n\t\treturn NULL;\n\t}", typ->incmax ? ">" : ">=", typ->max); } else if ((typ->type >= Tfloat && typ->type <= Tldouble) || is_external(typ)) fprintf(fout, "\n\tif (a && *a %s %lG)\n\t{\tsoap->error = SOAP_LENGTH;\n\t\treturn NULL;\n\t}", typ->incmax ? ">" : ">=", typ->max); else if (typ->max >= 0 || typ->type < Tuchar || typ->type > Tullong) fprintf(fout, "\n\tif (a && *a %s " SOAP_LONG_FORMAT ")\n\t{\tsoap->error = SOAP_LENGTH;\n\t\treturn NULL;\n\t}", typ->incmax ? ">" : ">=", (LONG64)typ->max); } } fprintf(fout, "\n\treturn a;\n}"); fflush(fout); return; } if (is_fixedstring(typ)) { int n = typ->width / ((Tnode*)typ->ref)->width; fprintf(fhead, "\nSOAP_FMAC3 char* SOAP_FMAC4 soap_in_%s(struct soap*, const char*, char[], const char*);", c_ident(typ)); fprintf(fout, "\n\nSOAP_FMAC3 char* SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, char a[], const char *type)\n{\tchar *p = NULL;\n\tif (!soap_instring(soap, tag, &p, type, %s, 1, 0, %d, %s))\n\t\treturn NULL;\n\tif (!p)\n\t{\tif (*soap->href == '#')\n\t\t\tsoap_id_nullify(soap, soap->href);\n\t\telse\n\t\t\tsoap->error = SOAP_NULL;\n\t\treturn NULL;\n\t}\n\tsoap_strncpy(a, %d, p, %d);\n\treturn a;\n}", c_ident(typ), soap_type(typ), n - 1, pattern(typ), n, n - 1); return; } switch(typ->type) { case Tstruct: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); table = (Table*)typ->ref; if (!typ->ref) { fprintf(fout, "\n\t(void)soap; (void)tag; (void)a; (void)type; /* appease -Wall -Werror */"); fprintf(fout, "\n\tif (!a)\n\t\tsoap->error = SOAP_TAG_MISMATCH;\n\treturn a;\n}"); } else if (is_primclass(typ)) { fprintf(fout, "\n\t(void)type; /* appease -Wall -Werror */"); fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\treturn NULL;"); if (!cflag) fprintf(fout, "\n\tif (!(a = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase)))\n\t\treturn NULL;", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); else fprintf(fout, "\n\tif (!(a = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), NULL, NULL, NULL, NULL)))\n\t\treturn NULL;", c_type_id(typ, "*"), soap_type(typ), c_type(typ)); fprintf(fout, "\n\tsoap_revert(soap);\n\t*soap->id = '\\0';"); fprintf(fout, "\n\tsoap_default_%s(soap, a);", c_ident(typ)); for (t = (Table*)typ->ref; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->info.sto & Sattribute) soap_attr_value(p, "a", ident(p->sym->name), ns_add(p, nsa)); fflush(fout); for (table = (Table*)typ->ref; table; table = table->prev) { p = table->list; while (p && !is_item(p)) p = p->next; if (p) break; } if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (!soap_inliteral(soap, tag, (char**)&a->%s))", ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (!soap_inwliteral(soap, tag, (wchar_t**)&a->%s))", ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, (char**)&a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, (wchar_t**)&a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif (!a->%s.soap_in(soap, tag, \"%s\"))", ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, &a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(typ)); fprintf(fout, "\n\t\treturn NULL;"); fixed_check(fout, p, NULL, "\t"); if (has_getter(typ)) fprintf(fout, "\n\tif (a->get(soap))\n\t\treturn NULL;"); fprintf(fout, "\n\treturn a;\n}"); } else { table = (Table*)typ->ref; if (!is_discriminant(typ)) { for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (!(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (is_anytype(p) || is_choice(p)) { p = p->next; fprintf(fout, "\n\tsize_t soap_flag_%s = " SOAP_LONG_FORMAT ";", ident(p->sym->name), p->info.maxOccurs); } else if (is_repetition(p)) { fprintf(fout, "\n\tstruct soap_blist *soap_blist_%s = NULL;", ident(p->next->sym->name)); p = p->next; } else if (!is_transient(p->info.typ) && !is_container(p->info.typ)) fprintf(fout, "\n\tsize_t soap_flag_%s = " SOAP_LONG_FORMAT ";", ident(p->sym->name), p->info.maxOccurs); } } } } if (!is_invisible(typ->id->name)) { fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 0, type))\n\t\treturn NULL;"); } else if (!is_discriminant(typ)) { if (table && (table->prev || table->list)) fprintf(fout, "\n\tshort soap_flag;"); fprintf(fout, "\n\t(void)tag; (void)type; /* appease -Wall -Werror */"); } else fprintf(fout, "\n\t(void)tag; (void)type; /* appease -Wall -Werror */"); if (has_class(typ)) { if (is_invisible(typ->id->name)) fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, \"\", a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); else fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); } else if (is_invisible(typ->id->name)) fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, \"\", a, %s, sizeof(%s), NULL, NULL, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), c_type(typ)); else fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), NULL, NULL, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), c_type(typ)); fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); fprintf(fout, "\n\tsoap_default_%s(soap, a);", c_ident(typ)); for (t = table; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->info.sto & Sattribute) soap_attr_value(p, "a", ident(p->sym->name), ns_add(p, nsa)); if (!is_invisible(typ->id->name)) { if (!is_discriminant(typ)) { fprintf(fout, "\n\tif (soap->body && *soap->href != '#')\n\t{"); fprintf(fout, "\n\t\tfor (;;)\n\t\t{\tsoap->error = SOAP_TAG_MISMATCH;"); } else fprintf(fout, "\n\tif (!tag || *tag == '-' || (soap->body && *soap->href != '#'))\n\t{"); } else if (!is_discriminant(typ)) { if (table && (table->prev || table->list)) fprintf(fout, "\n\t\tfor (soap_flag = 0;; soap_flag = 1)\n\t\t{\tsoap->error = SOAP_TAG_MISMATCH;"); } flag = 0; for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { if (is_unmatched(p->next->sym) || is_invisible(p->next->sym->name)) { p = p->next; continue; } flag = 1; fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH && "); fprintf(fout, "!soap_element_begin_in(soap, %s, 1, NULL))", field(p->next, nse)); fprintf(fout, "\n\t\t\t{\tif (a->%s == NULL)\n\t\t\t\t{\tif (soap_blist_%s == NULL)\n\t\t\t\t\t\tsoap_blist_%s = soap_alloc_block(soap);", ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass || ((Tnode*)p->next->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->next->info.typ->ref) || (!cflag && ((Tnode*)p->next->info.typ->ref)->type == Tstruct)) fprintf(fout, "\n\t\t\t\t\ta->%s = soap_block<%s>::push(soap, soap_blist_%s);\n\t\t\t\t\tif (a->%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t\t\t\t\ta->%s = (const %s)soap_push_block_max(soap, soap_blist_%s, sizeof(%s));\n\t\t\t\t\tif (a->%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), c_type((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\ta->%s = (%s)soap_push_block_max(soap, soap_blist_%s, sizeof(%s));\n\t\t\t\t\tif (a->%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), c_type((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\ta->%s->soap_default(soap);", ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type != Tpointer && !is_XML((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\tsoap_default_%s(soap, a->%s);", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\t*a->%s = NULL;", ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t}"); fprintf(fout, "\n\t\t\t\tsoap_revert(soap);"); if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inliteral(soap, %s, (char**)a->%s))", field(p->next, nse), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inwliteral(soap, %s, (wchar_t**)a->%s))", field(p->next, nse), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (char**)a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (wchar_t**)a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); fprintf(fout, "\n\t\t\t\t{\ta->%s++;\n\t\t\t\t\ta->%s = NULL;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}", ident(p->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_anytype(p)) { flag = 1; fprintf(fout, "\n\t\t\tif (soap_flag_%s && soap->error == SOAP_TAG_MISMATCH)", ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t{\tif ((a->%s = soap_getelement(soap, &a->%s)))", ident(p->next->sym->name), ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s = 0;", ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}\n\t\t\t}"); p = p->next; } else if (is_discriminant(typ) && p->next) { flag = 1; fprintf(fout, "\n\t\tif (!soap_in_%s(soap, &a->%s, &a->%s))", c_ident(p->next->info.typ), ident(p->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t\treturn NULL;"); break; } else if (is_choice(p)) { flag = 1; fprintf(fout, "\n\t\t\tif (soap_flag_%s && soap->error == SOAP_TAG_MISMATCH)", ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t{\tif (soap_in_%s(soap, &a->%s, &a->%s))", c_ident(p->next->info.typ), ident(p->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s = 0;", ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}\n\t\t\t}"); p = p->next; } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\t\t\t/* transient %s skipped */", ident(p->sym->name)); } else { flag = 1; if (!is_invisible(p->sym->name) && !is_primclass(typ) && p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (is_string(p->info.typ) || is_wstring(p->info.typ) || is_stdstr(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap_flag_%s && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))", ident(p->sym->name)); else if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH)"); else fprintf(fout, "\n\t\t\tif (soap_flag_%s && soap->error == SOAP_TAG_MISMATCH)", ident(p->sym->name)); fprintf(fout, "\n\t\t\t{\t"); } if (is_unmatched(p->sym)) { if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "if (soap_inliteral(soap, NULL, (char**)&a->%s))", ident(p->sym->name)); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "if (soap_inwliteral(soap, NULL, (wchar_t**)&a->%s))", ident(p->sym->name)); } else if (is_string(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, NULL, (char**)&a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(p->info.typ)); } else if (is_wstring(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, NULL, (wchar_t**)&a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tarray) { fprintf(fout, "if (soap_in_%s(soap, NULL, a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "if (a->%s.soap_in(soap, NULL, \"%s\"))", ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, NULL, &a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(p->info.typ)); } } else if (!is_invisible(p->sym->name)) { if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "if (soap_inliteral(soap, %s, (char**)&a->%s))", field(p, nse), ident(p->sym->name)); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "if (soap_inwliteral(soap, %s, (wchar_t**)&a->%s))", field(p, nse), ident(p->sym->name)); } else if (is_string(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, (char**)&a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); } else if (is_wstring(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, (wchar_t**)&a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tarray) { fprintf(fout, "if (soap_in_%s(soap, %s, a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "if (a->%s.soap_in(soap, %s, \"%s\"))", ident(p->sym->name), field(p, nse), xsi_type(p->info.typ)); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, &a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); } } if (!is_invisible(p->sym->name) && !is_primclass(typ) && p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\t\t\tcontinue;"); else { fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s--;", ident(p->sym->name)); fixed_check(fout, p, NULL, "\t\t\t\t\t"); if (p->info.hasval && !p->info.fixed && (is_string(p->info.typ) || is_wstring(p->info.typ))) { fprintf(fout, "\n\t\t\t\t\tif (*soap->href != '#' && a->%s && ", ident(p->sym->name)); fprintf(fout, "!*a->%s)", ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t\t\ta->%s%s;", ident(p->sym->name), c_init(p)); } else if (p->info.ptrval && !p->info.fixed && (is_string(p->info.typ->ref) || is_wstring(p->info.typ->ref) || is_stdstring(p->info.typ->ref) || is_stdwstring(p->info.typ->ref))) { Tnode *ptr = (Tnode*)p->info.typ->ref; if (is_smart(p->info.typ)) fprintf(fout, "\n\t\t\t\t\tif (*soap->href != '#' && a->%s.get() && ", ident(p->sym->name)); else fprintf(fout, "\n\t\t\t\t\tif (*soap->href != '#' && a->%s && ", ident(p->sym->name)); if (is_string(ptr) || is_wstring(ptr)) fprintf(fout, "*a->%s && !**a->%s)", ident(p->sym->name), ident(p->sym->name)); else fprintf(fout, "a->%s->empty())", ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t\t\t*a->%s%s;", ident(p->sym->name), c_init(p)); } fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}"); if (p->info.ptrval && !p->info.fixed && !(is_string(p->info.typ->ref) || is_wstring(p->info.typ->ref) || is_stdstring(p->info.typ->ref) || is_stdwstring(p->info.typ->ref))) { Tnode *ptr = (Tnode*)p->info.typ->ref; fprintf(fout, "\n\t\t\t\tif (soap->error == SOAP_EMPTY)\n\t\t\t\t{\t"); if (is_smart(p->info.typ)) { if (is_smart_shared(p->info.typ)) fprintf(fout, "a->%s = %s<%s>();", ident(p->sym->name), make_shared(p->info.typ), c_type(ptr)); else if (ptr->type == Tclass && !is_external(ptr) && !is_volatile(ptr) && !is_typedef(ptr)) fprintf(fout, "a->%s = %s(%s_instantiate_%s(soap, SOAP_NO_LINK_TO_DELETE, soap->type, soap->arrayType, NULL));", ident(p->sym->name), c_type(p->info.typ), fprefix, c_ident(ptr)); else fprintf(fout, "a->%s = %s(SOAP_NEW(soap, %s));", ident(p->sym->name), c_type(p->info.typ), c_type(ptr)); } else if (ptr->type == Tclass) { fprintf(fout, "if (!(a->%s = (%s)%s_instantiate_%s(soap, -1, soap->type, soap->arrayType, NULL)))\n\t\t\t\t\t\treturn NULL;", ident(p->sym->name), c_type(p->info.typ), fprefix, c_ident(ptr)); } else { fprintf(fout, "if (!(a->%s = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t\t\t\t\treturn NULL;", ident(p->sym->name), c_type(p->info.typ), c_type(ptr)); } fprintf(fout, "\n\t\t\t\t\t*a->%s%s;", ident(p->sym->name), c_init(p)); fprintf(fout, "\n\t\t\t\t\tsoap->error = SOAP_OK;\n\t\t\t\t\tsoap_flag_%s--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}", ident(p->sym->name)); } } fprintf(fout, "\n\t\t\t}"); } } fflush(fout); } } if (!is_discriminant(typ)) { for (t = table; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (is_repetition(p) && (is_unmatched(p->next->sym) || (is_invisible(p->next->sym->name)))) { flag = 1; fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH && "); if (is_unmatched(p->next->sym)) fprintf(fout, "!soap_element_begin_in(soap, NULL, 1, NULL))"); else if (is_invisible(p->next->sym->name)) fprintf(fout, "!soap_peek_element(soap))"); fprintf(fout, "\n\t\t\t{\tif (a->%s == NULL)\n\t\t\t\t{\tif (soap_blist_%s == NULL)\n\t\t\t\t\t\tsoap_blist_%s = soap_alloc_block(soap);", ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass || ((Tnode*)p->next->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->next->info.typ->ref) || (!cflag && ((Tnode*)p->next->info.typ->ref)->type == Tstruct)) fprintf(fout, "\n\t\t\t\t\ta->%s = soap_block<%s>::push(soap, soap_blist_%s);\n\t\t\t\t\tif (a->%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t\t\t\t\ta->%s = (const %s)soap_push_block_max(soap, soap_blist_%s, sizeof(%s));\n\t\t\t\t\tif (a->%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), c_type((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\ta->%s = (%s)soap_push_block_max(soap, soap_blist_%s, sizeof(%s));\n\t\t\t\t\tif (a->%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), c_type((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\ta->%s->soap_default(soap);", ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type != Tpointer && !is_XML((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\tsoap_default_%s(soap, a->%s);", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\t*a->%s = NULL;", ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t}"); if (!is_invisible(p->next->sym->name)) fprintf(fout, "\n\t\t\t\tsoap_revert(soap);"); if (is_unmatched(p->next->sym)) { if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inliteral(soap, NULL, (char**)a->%s))", ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inwliteral(soap, NULL, (wchar_t**)a->%s))", ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, NULL, (char**)a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, NULL, (wchar_t**)a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, NULL, a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); } else { if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inliteral(soap, %s, (char**)a->%s))", field(p->next, nse), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inwliteral(soap, %s, (wchar_t**)a->%s))", field(p->next, nse), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (char**)a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (wchar_t**)a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, a->%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); } fprintf(fout, "\n\t\t\t\t{\ta->%s++;\n\t\t\t\t\ta->%s = NULL;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}", ident(p->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_repetition(p) || is_anytype(p) || is_choice(p)) { p = p->next; continue; } else if (is_invisible(p->sym->name) && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !is_transient(p->info.typ) && !(p->info.sto & Sattribute)) { flag = 1; if (is_string(p->info.typ) || is_wstring(p->info.typ) || is_stdstr(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap_flag_%s && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))", ident(p->sym->name)); else if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH)"); else fprintf(fout, "\n\t\t\tif (soap_flag_%s && soap->error == SOAP_TAG_MISMATCH)", ident(p->sym->name)); fprintf(fout, "\n\t\t\t{\t"); if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "if (soap_inliteral(soap, %s, (char**)&a->%s))", field(p, nse), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "if (soap_inwliteral(soap, %s, (wchar_t**)&a->%s))", field(p, nse), ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "if (soap_in_%s(soap, %s, (char**)&a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "if (soap_in_%s(soap, %s, (wchar_t**)&a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); else if (p->info.typ->type == Tarray) fprintf(fout, "if (soap_in_%s(soap, %s, a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "if (a->%s.soap_in(soap, %s, \"%s\"))", ident(p->sym->name), field(p, nse), xsi_type(p->info.typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "if (soap_in_%s(soap, %s, &a->%s, \"%s\"))", c_ident(p->info.typ), field(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\t\t\tcontinue;"); else { fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s--;", ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}"); } fprintf(fout, "\n\t\t\t}"); } } } for (t = table; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->info.sto & Sreturn) if (nse || has_ns_eq(NULL, p->sym->name)) fprintf(fout, "\n\t\t\tsoap_check_result(soap, \"%s\");", ns_add(p, nse)); if (!flag && is_invisible(typ->id->name)) fprintf(fout, "\n\tsoap->error = SOAP_TAG_MISMATCH;\n\ta = NULL;"); if (!is_invisible(typ->id->name) || (table && (table->prev || table->list))) { if (!is_invisible(typ->id->name) || is_discriminant(typ)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH)\n\t\t\t\tsoap->error = soap_ignore_element(soap);"); else fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH && soap_flag)\n\t\t\t{\tsoap->error = SOAP_OK;\n\t\t\t\tbreak;\n\t\t\t}"); if (!is_invisible(typ->id->name)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_NO_TAG)"); else fprintf(fout, "\n\t\t\tif (soap_flag && soap->error == SOAP_NO_TAG)"); fprintf(fout, "\n\t\t\t\tbreak;"); fprintf(fout, "\n\t\t\tif (soap->error)\n\t\t\t\treturn NULL;"); fprintf(fout, "\n\t\t}"); } } if (table && !is_discriminant(typ)) { for (p = table->list; p; p = p->next) { if (is_repetition(p)) { if (((Tnode*)p->next->info.typ->ref)->type == Tclass || ((Tnode*)p->next->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->next->info.typ->ref) || (!cflag && ((Tnode*)p->next->info.typ->ref)->type == Tstruct)) { fprintf(fout, "\n\t\tif (a->%s)\n\t\t\tsoap_block<%s>::pop(soap, soap_blist_%s);", ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name)); fprintf(fout, "\n\t\tif (a->%s)\n\t\t{\ta->%s = soap_new_%s(soap, a->%s);\n\t\t\tif (!a->%s)\n\t\t\t\treturn NULL;\n\t\t\tsoap_block<%s>::save(soap, soap_blist_%s, a->%s);\n\t\t}\n\t\telse\n\t\t{\ta->%s = NULL;\n\t\t\tif (soap_blist_%s)\n\t\t\t\tsoap_block<%s>::end(soap, soap_blist_%s);\n\t\t}", ident(p->sym->name), ident(p->next->sym->name), c_ident(p->next->info.typ->ref), ident(p->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name)); } else { fprintf(fout, "\n\t\tif (a->%s)\n\t\t\tsoap_pop_block(soap, soap_blist_%s);", ident(p->next->sym->name), ident(p->next->sym->name)); if ((((Tnode*)p->next->info.typ->ref)->type == Tpointer && (p->next->info.sto & Sconstptr))) fprintf(fout, "\n\t\tif (a->%s)\n\t\t{\ta->%s = (const %s)soap_save_block(soap, soap_blist_%s, NULL, 1);\n\t\t}\n\t\telse\n\t\t{\ta->%s = NULL;\n\t\t\tif (soap_blist_%s)\n\t\t\t\tsoap_end_block(soap, soap_blist_%s);\n\t\t}", ident(p->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name)); else fprintf(fout, "\n\t\tif (a->%s)\n\t\t{\ta->%s = (%s)soap_save_block(soap, soap_blist_%s, NULL, 1);\n\t\t}\n\t\telse\n\t\t{\ta->%s = NULL;\n\t\t\tif (soap_blist_%s)\n\t\t\t\tsoap_end_block(soap, soap_blist_%s);\n\t\t}", ident(p->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), ident(p->next->sym->name)); } p = p->next; } } } if (!is_invisible(typ->id->name)) { if (is_discriminant(typ)) fprintf(fout, "\n\t\tif (tag && *tag != '-')\n\t\t{\tsoap->error = soap_ignore_element(soap);\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH || soap_element_end_in(soap, tag))\n\t\t\t\treturn NULL;\n\t\t}"); else fprintf(fout, "\n\t\tif (soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); } strict = 0; nonempty = 0; if (table && !is_discriminant(typ)) { for (p = table->list; p; p = p->next) { if (p->info.minOccurs > 0 && p->info.maxOccurs >= 0 && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && p->info.typ->type != Tfun && !is_void(p->info.typ) && !is_transient(p->info.typ) && !is_container(p->info.typ) && !is_repetition(p) && !is_choice(p)) { if (is_item(p)) continue; if (is_anytype(p)) { p = p->next; if (p->info.minOccurs <= 0) continue; } if ((p->info.typ->type != Tpointer && !is_smart(p->info.typ)) || p->info.nillable) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(soap_flag_%s > " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), p->info.maxOccurs - p->info.minOccurs); strict = 1; } else fprintf(fout, " || soap_flag_%s > " SOAP_LONG_FORMAT, ident(p->sym->name), p->info.maxOccurs - p->info.minOccurs); } else if (strict == 0) { if (is_smart(p->info.typ)) fprintf(fout, "\n\t\tif (%s(!a->%s.get()", strict_check(), ident(p->sym->name)); else fprintf(fout, "\n\t\tif (%s(!a->%s", strict_check(), ident(p->sym->name)); strict = 1; } else { if (is_smart(p->info.typ)) fprintf(fout, " || !a->%s.get()", ident(p->sym->name)); else fprintf(fout, " || !a->%s", ident(p->sym->name)); } nonempty = 1; } else if (is_container(p->info.typ)) { if (p->info.minOccurs > 0) { if (p->info.typ->type == Tpointer) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(!a->%s || a->%s->size() < " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), ident(p->sym->name), p->info.minOccurs); strict = 1; } else fprintf(fout, " || !a->%s || a->%s->size() < " SOAP_LONG_FORMAT, ident(p->sym->name), ident(p->sym->name), p->info.minOccurs); } else { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s.size() < " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), p->info.minOccurs); strict = 1; } else fprintf(fout, " || a->%s.size() < " SOAP_LONG_FORMAT, ident(p->sym->name), p->info.minOccurs); } nonempty = 1; } if (p->info.maxOccurs > 1) { if (p->info.typ->type == Tpointer) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s((a->%s && a->%s->size() > " SOAP_LONG_FORMAT ")", strict_check(), ident(p->sym->name), ident(p->sym->name), p->info.maxOccurs); strict = 1; } else fprintf(fout, " || (a->%s && a->%s->size() > " SOAP_LONG_FORMAT ")", ident(p->sym->name), ident(p->sym->name), p->info.maxOccurs); } else { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s.size() > " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), p->info.maxOccurs); strict = 1; } else fprintf(fout, " || a->%s.size() > " SOAP_LONG_FORMAT, ident(p->sym->name), p->info.maxOccurs); } } } else if (is_repetition(p)) { if (p->info.minOccurs > 0) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s < " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), p->info.minOccurs); strict = 1; } else fprintf(fout, " || a->%s < " SOAP_LONG_FORMAT, ident(p->sym->name), p->info.minOccurs); nonempty = 1; } if (p->info.maxOccurs > 1) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s > " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), p->info.maxOccurs); strict = 1; } else fprintf(fout, " || a->%s > " SOAP_LONG_FORMAT, ident(p->sym->name), p->info.maxOccurs); } p = p->next; } else if (is_choice(p)) { if (p->info.minOccurs != 0 && required_choice(p->next->info.typ) < 0) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(soap_flag_%s", strict_check(), ident(p->next->sym->name)); strict = 1; } else fprintf(fout, " || soap_flag_%s", ident(p->next->sym->name)); nonempty = 1; } p = p->next; } } if (strict) fprintf(fout, "))\n\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\treturn NULL;\n\t\t}"); } if (has_getter(typ)) fprintf(fout, "\n\t\tif (a->get(soap))\n\t\t\treturn NULL;"); if (!is_invisible(typ->id->name)) { if (nonempty) fprintf(fout, "\n\t}\n\telse if (%s*soap->href != '#')\n\t{\tsoap->error = SOAP_OCCURS;\n\t\treturn NULL;", strict_check()); fprintf(fout, "\n\t}\n\telse\n\t{\t"); if (!cflag) fprintf(fout, "a = (%s)soap_id_forward(soap, soap->href, (void*)a, 0, %s, %s, sizeof(%s), 0, %s_finsert, NULL);", c_type_id(typ, "*"), soap_type(typ), soap_type(typ), c_type(typ), prefix); else fprintf(fout, "a = (%s)soap_id_forward(soap, soap->href, (void*)a, 0, %s, %s, sizeof(%s), 0, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;\n\t}"); } fprintf(fout, "\n\treturn a;\n}"); } break; case Tclass: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); if (!is_volatile(typ) && !is_typedef(typ)) { fprintf(fout, "\n\nvoid *%s::soap_in(struct soap *soap, const char *tag, const char *type)", c_type(typ)); fprintf(fout, "\n{\treturn soap_in_%s(soap, tag, this, type);\n}", c_ident(typ)); fflush(fout); } fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)tag; (void)type; /* appease -Wall -Werror */"); if (!typ->ref) { fprintf(fout, "\n\t(void)soap; (void)a; /* appease -Wall -Werror */"); fprintf(fout, "\n\tif (!a)\n\t\tsoap->error = SOAP_TAG_MISMATCH;\n\treturn a;\n}"); } else if (is_primclass(typ)) { table = (Table*)typ->ref; fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\treturn NULL;"); fprintf(fout, "\n\tif (!(a = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase)))\n\t{\tsoap->error = SOAP_TAG_MISMATCH;\n\t\treturn NULL;\n\t}", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); fprintf(fout, "\n\tsoap_revert(soap);\n\t*soap->id = '\\0';"); fprintf(fout, "\n\tif (soap->alloced && soap->alloced != %s)", soap_type(typ)); fprintf(fout, "\n\t\treturn (%s)a->soap_in(soap, tag, type);", c_type_id(typ, "*")); fprintf(fout, "\n\tif (soap->alloced)\n\t\ta->soap_default(soap);"); for (t = table; t; t = t->prev) { Entry *e = entry(classtable, t->sym); const char *nsa1 = e ? ns_qualifiedAttribute(e->info.typ) : nsa; for (p = t->list; p; p = p->next) if (p->info.sto & Sattribute) soap_attr_value(p, ptr_cast(t, "a"), ident(p->sym->name), ns_add(p, nsa1)); } fflush(fout); for (table = (Table*)typ->ref; table; table = table->prev) { p = table->list; while (p && !is_item(p)) p = p->next; if (p) break; } if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (!soap_inliteral(soap, tag, (char**)&a->%s::%s))", ident(table->sym->name), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (!soap_inwliteral(soap, tag, (wchar_t**)&a->%s::%s))", ident(table->sym->name), ident(p->sym->name)); else if (is_string(p->info.typ)) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, (char**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(table->sym->name), ident(p->sym->name), xsi_type(typ)); else if (is_wstring(p->info.typ)) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, (wchar_t**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(table->sym->name), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(table->sym->name), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif (!(a->%s::%s).soap_in(soap, tag, \"%s\"))", ident(table->sym->name), ident(p->sym->name), xsi_type(typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) fprintf(fout, "\n\tif (!soap_in_%s(soap, tag, &a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(table->sym->name), ident(p->sym->name), xsi_type(typ)); fprintf(fout, "\n\t\treturn NULL;"); fixed_check(fout, p, t, "\t"); if (has_getter(typ)) fprintf(fout, "\n\tif (a->get(soap))\n\t\treturn NULL;"); fprintf(fout, "\n\treturn a;\n}"); } else { if (!is_invisible(typ->id->name)) { fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 0, NULL))\n\t\treturn NULL;"); fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); } else fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, \"\", a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); table = (Table*)typ->ref; if (!is_discriminant(typ)) { if (!is_invisible(typ->id->name)) { fprintf(fout, "\n\tif (soap->alloced && soap->alloced != %s)", soap_type(typ)); fprintf(fout, "\n\t{\tsoap_revert(soap);"); fprintf(fout, "\n\t\t*soap->id = '\\0';"); if (is_volatile(typ) || is_typedef(typ)) fprintf(fout, "\n\t\treturn soap_in_%s(soap, tag, a, type);", c_ident(typ)); else fprintf(fout, "\n\t\treturn (%s)a->soap_in(soap, tag, type);", c_type_id(typ, "*")); fprintf(fout, "\n\t}"); } } fprintf(fout, "\n\tif (soap->alloced)"); if (is_volatile(typ) || is_typedef(typ)) fprintf(fout, "\n\t\tsoap_default_%s(soap, a);", c_ident(typ)); else fprintf(fout, "\n\t\ta->soap_default(soap);"); for (t = table; t; t = t->prev) { Entry *e = entry(classtable, t->sym); const char *nsa1 = e ? ns_qualifiedAttribute(e->info.typ) : nsa; for (p = t->list; p; p = p->next) if (p->info.sto & Sattribute) soap_attr_value(p, ptr_cast(t, "a"), ident(p->sym->name), ns_add(p, nsa1)); } fflush(fout); i = 0; if (!is_discriminant(typ)) { for (t = table; t; t = t->prev) i++; for (; i > 0; i--) { t = table; for (j = 0; j < i-1; j++) t = t->prev; if (!t->prev) { Entry *e = entry(classtable, t->sym); if (e && e->info.typ && e->info.typ->base && !strcmp(e->info.typ->base->name, "soap_dom_element")) fprintf(fout, "\n\tsize_t soap_flag_soap_dom_element = 1;"); } for (p = t->list; p; p = p->next) { if (!(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (is_anytype(p) || is_choice(p)) { p = p->next; fprintf(fout, "\n\tsize_t soap_flag_%s%d = " SOAP_LONG_FORMAT ";", ident(p->sym->name), i, p->info.maxOccurs); } else if (is_repetition(p)) { fprintf(fout, "\n\tstruct soap_blist *soap_blist_%s%d = NULL;", ident(p->next->sym->name), i); p = p->next; } else if (!is_transient(p->info.typ) && !is_container(p->info.typ)) fprintf(fout, "\n\tsize_t soap_flag_%s%d = " SOAP_LONG_FORMAT ";", ident(p->sym->name), i, p->info.maxOccurs); } } } } fflush(fout); if (!is_invisible(typ->id->name)) { if (!is_discriminant(typ)) { fprintf(fout, "\n\tif (soap->body && *soap->href != '#')\n\t{"); fprintf(fout, "\n\t\tfor (;;)\n\t\t{\tsoap->error = SOAP_TAG_MISMATCH;"); } else fprintf(fout, "\n\tif (!tag || *tag == '-' || (soap->body && *soap->href != '#'))\n\t{"); } else if (!is_discriminant(typ)) { if (table && (table->prev || table->list)) fprintf(fout, "\n\t\tfor (short soap_flag = 0;; soap_flag = 1)\n\t\t{\tsoap->error = SOAP_TAG_MISMATCH;"); } table = (Table*)typ->ref; i = 0; flag = 0; for (t = table; t; t = t->prev) i++; for (; i > 0; i--) { Entry *e; const char *nse1; t = table; for (j = 0; j < i-1; j++) t = t->prev; e = entry(classtable, t->sym); nse1 = e ? ns_qualifiedElement(e->info.typ) : nse; for (p = t->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion || is_soapref(p->info.typ)) ; else if (is_item(p)) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t\t\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_repetition(p)) { if (is_unmatched(p->next->sym) || is_invisible(p->next->sym->name)) { p = p->next; continue; } flag = 1; fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH && "); fprintf(fout, "!soap_element_begin_in(soap, %s, 1, NULL))", field(p->next, nse1)); fprintf(fout, "\n\t\t\t{\tif (a->%s::%s == NULL)\n\t\t\t\t{\tif (soap_blist_%s%d == NULL)\n\t\t\t\t\t\tsoap_blist_%s%d = soap_alloc_block(soap);", ident(t->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), i, ident(p->next->sym->name), i); if (((Tnode*)p->next->info.typ->ref)->type == Tclass || ((Tnode*)p->next->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->next->info.typ->ref) || (!cflag && ((Tnode*)p->next->info.typ->ref)->type == Tstruct)) fprintf(fout, "\n\t\t\t\t\ta->%s::%s = soap_block<%s>::push(soap, soap_blist_%s%d);\n\t\t\t\t\tif (a->%s::%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), i, ident(t->sym->name), ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t\t\t\t\ta->%s::%s = (const %s)soap_push_block_max(soap, soap_blist_%s%d, sizeof(%s));\n\t\t\t\t\tif (a->%s::%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), i, c_type((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\ta->%s::%s = (%s)soap_push_block_max(soap, soap_blist_%s%d, sizeof(%s));\n\t\t\t\t\tif (a->%s::%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), i, c_type((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\ta->%s::%s->soap_default(soap);", ident(t->sym->name), ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type != Tpointer && !is_XML((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\tsoap_default_%s(soap, a->%s::%s);", c_ident((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\t*a->%s::%s = NULL;", ident(t->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t}"); fprintf(fout, "\n\t\t\t\tsoap_revert(soap);"); if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inliteral(soap, %s, (char**)a->%s::%s))", field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inwliteral(soap, %s, (wchar_t**)a->%s::%s))", field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (char**)a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (wchar_t**)a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); fprintf(fout, "\n\t\t\t\t{\ta->%s::%s++;\n\t\t\t\t\ta->%s::%s = NULL;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_anytype(p)) { flag = 1; fprintf(fout, "\n\t\t\tif (soap_flag_%s%d && soap->error == SOAP_TAG_MISMATCH)", ident(p->next->sym->name), i); fprintf(fout, "\n\t\t\t{\tif ((a->%s::%s = soap_getelement(soap, &a->%s::%s)))", ident(t->sym->name), ident(p->next->sym->name), ident(t->sym->name), ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s%d = 0;", ident(p->next->sym->name), i); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}\n\t\t\t}"); p = p->next; } else if (is_discriminant(typ) && p->next) { flag = 1; fprintf(fout, "\n\t\tif (!soap_in_%s(soap, &a->%s, &a->%s))", c_ident(p->next->info.typ), ident(p->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t\treturn NULL;"); i = 0; break; } else if (is_choice(p)) { flag = 1; fprintf(fout, "\n\t\t\tif (soap_flag_%s%d && soap->error == SOAP_TAG_MISMATCH)", ident(p->next->sym->name), i); fprintf(fout, "\n\t\t\t{\tif (soap_in_%s(soap, &a->%s::%s, &a->%s::%s))", c_ident(p->next->info.typ), ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s%d = 0;", ident(p->next->sym->name), i); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}\n\t\t}"); p = p->next; } else if (is_transient(p->info.typ)) { fprintf(fout, "\n\t\t\t/* transient %s skipped */", ident(p->sym->name)); } else { flag = 1; if (!is_invisible(p->sym->name) && !is_primclass(typ) && p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (is_string(p->info.typ) || is_wstring(p->info.typ) || is_stdstr(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap_flag_%s%d && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))", ident(p->sym->name), i); else if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH)"); else fprintf(fout, "\n\t\t\tif (soap_flag_%s%d && soap->error == SOAP_TAG_MISMATCH)", ident(p->sym->name), i); fprintf(fout, "\n\t\t\t{\t"); } if (is_unmatched(p->sym)) { if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "if (soap_inliteral(soap, NULL, (char**)&a->%s::%s))", ident(t->sym->name), ident(p->sym->name)); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "if (soap_inwliteral(soap, NULL, (wchar_t**)&a->%s::%s))", ident(t->sym->name), ident(p->sym->name)); } else if (is_string(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, NULL, (char**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (is_wstring(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, NULL, (wchar_t**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tarray) { fprintf(fout, "if (soap_in_%s(soap, NULL, a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "if ((a->%s::%s).soap_in(soap, NULL, \"%s\"))", ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, NULL, &a->%s::%s, \"%s\"))", c_ident(p->info.typ), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } } else if (!is_invisible(p->sym->name)) { if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "if (soap_inliteral(soap, %s, (char**)&a->%s::%s))", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "if (soap_inwliteral(soap, %s, (wchar_t**)&a->%s::%s))", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); } else if (is_string(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, (char**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (is_wstring(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, (wchar_t**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tarray) { fprintf(fout, "if (soap_in_%s(soap, %s, a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "if ((a->%s::%s).soap_in(soap, %s, \"%s\"))", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1), xsi_type(p->info.typ)); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, &a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } } if (!is_invisible(p->sym->name) && !is_primclass(typ) && p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\t\t\tcontinue;"); else { fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s%d--;", ident(p->sym->name), i); fixed_check(fout, p, t, "\t\t\t\t\t"); if (p->info.hasval && !p->info.fixed && (is_string(p->info.typ) || is_wstring(p->info.typ))) { fprintf(fout, "\n\t\t\t\t\tif (*soap->href != '#' && a->%s::%s && ", ident(t->sym->name), ident(p->sym->name)); fprintf(fout, "!*a->%s::%s)", ident(t->sym->name), ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t\t\ta->%s::%s%s;", ident(t->sym->name), ident(p->sym->name), c_init(p)); } else if (p->info.ptrval && !p->info.fixed && (is_string(p->info.typ->ref) || is_wstring(p->info.typ->ref) || is_stdstring(p->info.typ->ref) || is_stdwstring(p->info.typ->ref))) { Tnode *ptr = (Tnode*)p->info.typ->ref; if (is_smart(p->info.typ)) fprintf(fout, "\n\t\t\t\t\tif (*soap->href != '#' && a->%s::%s.get() && ", ident(t->sym->name), ident(p->sym->name)); else fprintf(fout, "\n\t\t\t\t\tif (*soap->href != '#' && a->%s::%s && ", ident(t->sym->name), ident(p->sym->name)); if (is_string(ptr) || is_wstring(ptr)) fprintf(fout, "*a->%s::%s && !**a->%s::%s)", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->sym->name)); else fprintf(fout, "a->%s::%s->empty())", ident(t->sym->name), ident(p->sym->name)); fprintf(fout, "\n\t\t\t\t\t\t*a->%s::%s%s;", ident(t->sym->name), ident(p->sym->name), c_init(p)); } fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}"); if (p->info.ptrval && !p->info.fixed && !(is_string(p->info.typ->ref) || is_wstring(p->info.typ->ref) || is_stdstring(p->info.typ->ref) || is_stdwstring(p->info.typ->ref))) { Tnode *ptr = (Tnode*)p->info.typ->ref; fprintf(fout, "\n\t\t\t\tif (soap->error == SOAP_EMPTY)\n\t\t\t\t{\t"); if (is_smart(p->info.typ)) { if (is_smart_shared(p->info.typ)) fprintf(fout, "a->%s::%s = %s<%s>();", ident(t->sym->name), ident(p->sym->name), make_shared(p->info.typ), c_type(ptr)); else if (ptr->type == Tclass && !is_external(ptr) && !is_volatile(ptr) && !is_typedef(ptr)) fprintf(fout, "a->%s::%s = %s(%s_instantiate_%s(soap, SOAP_NO_LINK_TO_DELETE, soap->type, soap->arrayType, NULL));", ident(t->sym->name), ident(p->sym->name), c_type(p->info.typ), fprefix, c_ident(ptr)); else fprintf(fout, "a->%s::%s = %s(SOAP_NEW(soap, %s));", ident(t->sym->name), ident(p->sym->name), c_type(p->info.typ), c_type(ptr)); } else if (ptr->type == Tclass) { fprintf(fout, "if (!(a->%s::%s = (%s)%s_instantiate_%s(soap, -1, soap->type, soap->arrayType, NULL)))\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->sym->name), c_type(p->info.typ), fprefix, c_ident(ptr)); } else { fprintf(fout, "if (!(a->%s::%s = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->sym->name), c_type(p->info.typ), c_type(ptr)); } fprintf(fout, "\n\t\t\t\t\t*a->%s::%s%s;", ident(t->sym->name), ident(p->sym->name), c_init(p)); fprintf(fout, "\n\t\t\t\t\tsoap->error = SOAP_OK;\n\t\t\t\t\tsoap_flag_%s%d--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}", ident(p->sym->name), i); } } fprintf(fout, "\n\t\t\t}"); } fflush(fout); } } } if (!is_discriminant(typ)) { Entry *e; const char *nse1; i = 0; for (t = table; t; t = t->prev) { i++; e = entry(classtable, t->sym); nse1 = e ? ns_qualifiedElement(e->info.typ) : nse; for (p = t->list; p; p = p->next) { if (is_repetition(p) && (is_unmatched(p->next->sym) || is_invisible(p->next->sym->name))) { flag = 1; fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH && "); if (is_unmatched(p->next->sym)) fprintf(fout, "!soap_element_begin_in(soap, NULL, 1, NULL))"); else if (is_invisible(p->next->sym->name)) fprintf(fout, "!soap_peek_element(soap))"); fprintf(fout, "\n\t\t\t{\tif (a->%s::%s == NULL)\n\t\t\t\t{\tif (soap_blist_%s%d == NULL)\n\t\t\t\t\t\tsoap_blist_%s%d = soap_alloc_block(soap);", ident(t->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), i, ident(p->next->sym->name), i); if (((Tnode*)p->next->info.typ->ref)->type == Tclass || ((Tnode*)p->next->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->next->info.typ->ref) || (!cflag && ((Tnode*)p->next->info.typ->ref)->type == Tstruct)) fprintf(fout, "\n\t\t\t\t\ta->%s::%s = soap_block<%s>::push(soap, soap_blist_%s%d);\n\t\t\t\t\tif (a->%s::%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), i, ident(t->sym->name), ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type == Tpointer && (p->next->info.sto & Sconstptr)) fprintf(fout, "\n\t\t\t\t\ta->%s::%s = (const %s)soap_push_block_max(soap, soap_blist_%s%d, sizeof(%s));\n\t\t\t\t\tif (a->%s::%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), i, c_type((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\ta->%s::%s = (%s)soap_push_block_max(soap, soap_blist_%s%d, sizeof(%s));\n\t\t\t\t\tif (a->%s::%s == NULL)\n\t\t\t\t\t\treturn NULL;", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), i, c_type((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name)); if (((Tnode*)p->next->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->next->info.typ->ref) && !is_volatile((Tnode*)p->next->info.typ->ref) && !is_typedef((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\ta->%s::%s->soap_default(soap);", ident(t->sym->name), ident(p->next->sym->name)); else if (((Tnode*)p->next->info.typ->ref)->type != Tpointer && !is_XML((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\t\tsoap_default_%s(soap, a->%s::%s);", c_ident((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name)); else fprintf(fout, "\n\t\t\t\t\t*a->%s::%s = NULL;", ident(t->sym->name), ident(p->next->sym->name)); fprintf(fout, "\n\t\t\t\t}"); if (!is_invisible(p->next->sym->name)) fprintf(fout, "\n\t\t\t\tsoap_revert(soap);"); if (is_unmatched(p->next->sym)) { if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inliteral(soap, NULL, (char**)a->%s::%s))", ident(t->sym->name), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inwliteral(soap, NULL, (wchar_t**)a->%s::%s))", ident(t->sym->name), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, NULL, (char**)a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, NULL, (wchar_t**)a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, NULL, a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); } else { if (is_XML((Tnode*)p->next->info.typ->ref) && is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inliteral(soap, %s, (char**)a->%s::%s))", field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name)); else if (is_XML((Tnode*)p->next->info.typ->ref) && is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_inwliteral(soap, %s, (wchar_t**)a->%s::%s))", field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name)); else if (is_string((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (char**)a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else if (is_wstring((Tnode*)p->next->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, (wchar_t**)a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (soap_in_%s(soap, %s, a->%s::%s, \"%s\"))", c_ident((Tnode*)p->next->info.typ->ref), field(p->next, nse1), ident(t->sym->name), ident(p->next->sym->name), xsi_type((Tnode*)p->next->info.typ->ref)); } fprintf(fout, "\n\t\t\t\t{\ta->%s::%s++;\n\t\t\t\t\ta->%s::%s = NULL;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name)); p = p->next; } else if (is_repetition(p) || is_anytype(p) || is_choice(p)) { p = p->next; continue; } else if (is_invisible(p->sym->name) && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !is_transient(p->info.typ) && !(p->info.sto & Sattribute)) { flag = 1; if (is_string(p->info.typ) || is_wstring(p->info.typ) || is_stdstr(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap_flag_%s%d && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))", ident(p->sym->name), i); else if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH)"); else fprintf(fout, "\n\t\t\tif (soap_flag_%s%d && soap->error == SOAP_TAG_MISMATCH)", ident(p->sym->name), i); fprintf(fout, "\n\t\t\t{\t"); if (is_XML(p->info.typ) && is_string(p->info.typ)) { fprintf(fout, "if (soap_inliteral(soap, %s, (char**)&a->%s::%s))", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); } else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) { fprintf(fout, "if (soap_inwliteral(soap, %s, (wchar_t**)&a->%s::%s))", field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name)); } else if (is_string(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, (char**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (is_wstring(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, (wchar_t**)&a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tarray) { fprintf(fout, "if (soap_in_%s(soap, %s, a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) { fprintf(fout, "if ((a->%s::%s).soap_in(soap, %s, \"%s\"))", ident(t->sym->name), ident(p->sym->name), field_overridden(t, p, nse1), xsi_type(p->info.typ)); } else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { fprintf(fout, "if (soap_in_%s(soap, %s, &a->%s::%s, \"%s\"))", c_ident(p->info.typ), field_overridden(t, p, nse1), ident(t->sym->name), ident(p->sym->name), xsi_type(p->info.typ)); } if (is_container(p->info.typ)) fprintf(fout, "\n\t\t\t\t\tcontinue;"); else { fprintf(fout, "\n\t\t\t\t{\tsoap_flag_%s%d--;", ident(p->sym->name), i); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}"); } fprintf(fout, "\n\t\t\t}"); } } if (!t->prev && e && e->info.typ && e->info.typ->base && !strcmp(e->info.typ->base->name, "soap_dom_element")) { fprintf(fout, "\n\t\t\tif (soap_flag_soap_dom_element && soap->error == SOAP_TAG_MISMATCH)\n\t\t\t\tif (soap_in_xsd__anyType(soap, NULL, static_cast(a), NULL))"); fprintf(fout, "\n\t\t\t\t{\tsoap_flag_soap_dom_element = 0;"); fprintf(fout, "\n\t\t\t\t\tcontinue;"); fprintf(fout, "\n\t\t\t\t}"); } } for (t = table; t; t = t->prev) for (p = t->list; p; p = p->next) if (p->info.sto & Sreturn) if (nse || has_ns_eq(NULL, p->sym->name)) fprintf(fout, "\n\t\t\tsoap_check_result(soap, \"%s\");", ns_add(p, nse)); if (!flag && is_invisible(typ->id->name)) fprintf(fout, "\n\tsoap->error = SOAP_TAG_MISMATCH;\n\ta = NULL;"); if (!is_invisible(typ->id->name) || (table && (table->prev || table->list))) { if (!is_invisible(typ->id->name) || is_discriminant(typ)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH)\n\t\t\t\tsoap->error = soap_ignore_element(soap);"); else fprintf(fout, "\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH && soap_flag)\n\t\t\t{\n\t\t\t\tsoap->error = SOAP_OK;\n\t\t\t\tbreak;\n\t\t\t}"); if (!is_invisible(typ->id->name)) fprintf(fout, "\n\t\t\tif (soap->error == SOAP_NO_TAG)"); else fprintf(fout, "\n\t\t\tif (soap_flag && soap->error == SOAP_NO_TAG)"); fprintf(fout, "\n\t\t\t\tbreak;"); fprintf(fout, "\n\t\t\tif (soap->error)\n\t\t\t\treturn NULL;"); fprintf(fout, "\n\t\t}"); } } if (!is_discriminant(typ)) { i = 0; for (t = table; t; t = t->prev) i++; for (; i > 0; i--) { t = table; for (j = 0; j < i-1; j++) t = t->prev; for (p = t->list; p; p = p->next) { if (is_repetition(p)) { if (((Tnode*)p->next->info.typ->ref)->type == Tclass || ((Tnode*)p->next->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->next->info.typ->ref) || (((Tnode*)p->next->info.typ->ref)->type == Tstruct && !cflag)) { fprintf(fout, "\n\t\tif (a->%s::%s)\n\t\t\tsoap_block<%s>::pop(soap, soap_blist_%s%d);", ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), i); fprintf(fout, "\n\t\tif (a->%s::%s)\n\t\t{\ta->%s::%s = soap_new_%s(soap, a->%s::%s);\n\t\t\tif (!a->%s::%s)\n\t\t\t\treturn NULL;\n\t\t\tsoap_block<%s>::save(soap, soap_blist_%s%d, a->%s::%s);\n\t\t}\n\t\telse\n\t\t{\ta->%s::%s = NULL;\n\t\t\tif (soap_blist_%s%d)\n\t\t\t\tsoap_block<%s>::end(soap, soap_blist_%s%d);\n\t\t}", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name), c_ident(p->next->info.typ->ref), ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ->ref), ident(p->next->sym->name), i, ident(t->sym->name), ident(p->next->sym->name), ident(t->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), i, c_type(p->next->info.typ->ref), ident(p->next->sym->name), i); } else { fprintf(fout, "\n\t\tif (a->%s::%s)\n\t\t\tsoap_pop_block(soap, soap_blist_%s%d);", ident(t->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), i); if ((((Tnode*)p->next->info.typ->ref)->type == Tpointer && (p->next->info.sto & Sconstptr))) fprintf(fout, "\n\t\tif (a->%s::%s)\n\t\t{\ta->%s::%s = (const %s)soap_save_block(soap, soap_blist_%s%d, NULL, 1);\n\t\t}\n\t\telse\n\t\t{\ta->%s::%s = NULL;\n\t\t\tif (soap_blist_%s%d)\n\t\t\t\tsoap_end_block(soap, soap_blist_%s%d);\n\t\t}", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), i, ident(t->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), i, ident(p->next->sym->name), i); else fprintf(fout, "\n\t\tif (a->%s::%s)\n\t\t{\ta->%s::%s = (%s)soap_save_block(soap, soap_blist_%s%d, NULL, 1);\n\t\t}\n\t\telse\n\t\t{\ta->%s::%s = NULL;\n\t\t\tif (soap_blist_%s%d)\n\t\t\t\tsoap_end_block(soap, soap_blist_%s%d);\n\t\t}", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->next->sym->name), c_type(p->next->info.typ), ident(p->next->sym->name), i, ident(t->sym->name), ident(p->next->sym->name), ident(p->next->sym->name), i, ident(p->next->sym->name), i); } p = p->next; } } } } if (!is_invisible(typ->id->name)) { if (is_discriminant(typ)) fprintf(fout, "\n\t\tif (tag && *tag != '-')\n\t\t{\tsoap->error = soap_ignore_element(soap);\n\t\t\tif (soap->error == SOAP_TAG_MISMATCH || soap_element_end_in(soap, tag))\n\t\t\t\treturn NULL;\n\t\t}"); else fprintf(fout, "\n\t\tif (soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); } strict = 0; nonempty = 0; if (!is_discriminant(typ)) { i = 0; for (t = table; t; t = t->prev) i++; for (; i > 0; i--) { t = table; for (j = 0; j < i-1; j++) t = t->prev; for (p = t->list; p; p = p->next) { if (p->info.minOccurs > 0 && p->info.maxOccurs >= 0 && !(p->info.sto & (Sconst | Sprivate | Sprotected)) && !(p->info.sto & Sattribute) && p->info.typ->type != Tfun && !is_void(p->info.typ) && !is_transient(p->info.typ) && !is_container(p->info.typ) && !is_repetition(p) && !is_choice(p)) { if (is_item(p)) continue; if (is_anytype(p)) { p = p->next; if (p->info.minOccurs <= 0) continue; } if ((p->info.typ->type != Tpointer && !is_smart(p->info.typ)) || p->info.nillable) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(soap_flag_%s%d > " SOAP_LONG_FORMAT, strict_check(), ident(p->sym->name), i, p->info.maxOccurs - p->info.minOccurs); strict = 1; } else fprintf(fout, " || soap_flag_%s%d > " SOAP_LONG_FORMAT, ident(p->sym->name), i, p->info.maxOccurs - p->info.minOccurs); } else if (strict == 0) { if (is_smart(p->info.typ)) fprintf(fout, "\n\t\tif (%s(!a->%s::%s.get()", strict_check(), ident(t->sym->name), ident(p->sym->name)); else fprintf(fout, "\n\t\tif (%s(!a->%s::%s", strict_check(), ident(t->sym->name), ident(p->sym->name)); strict = 1; } else { if (is_smart(p->info.typ)) fprintf(fout, " || !a->%s::%s.get()", ident(t->sym->name), ident(p->sym->name)); else fprintf(fout, " || !a->%s::%s", ident(t->sym->name), ident(p->sym->name)); } nonempty = 1; } else if (is_container(p->info.typ)) { if (p->info.minOccurs > 0) { if (p->info.typ->type == Tpointer) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(!a->%s::%s || a->%s::%s->size() < " SOAP_LONG_FORMAT, strict_check(), ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->sym->name), p->info.minOccurs); strict = 1; } else fprintf(fout, " || !a->%s::%s || a->%s::%s->size() < " SOAP_LONG_FORMAT, ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->sym->name), p->info.minOccurs); } else { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s::%s.size() < " SOAP_LONG_FORMAT, strict_check(), ident(t->sym->name), ident(p->sym->name), p->info.minOccurs); strict = 1; } else fprintf(fout, " || a->%s::%s.size() < " SOAP_LONG_FORMAT, ident(t->sym->name), ident(p->sym->name), p->info.minOccurs); } nonempty = 1; } if (p->info.maxOccurs > 1) { if (p->info.typ->type == Tpointer) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s((a->%s::%s && a->%s::%s->size() > " SOAP_LONG_FORMAT ")", strict_check(), ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->sym->name), p->info.maxOccurs); strict = 1; } else fprintf(fout, " || (a->%s::%s && a->%s::%s->size() > " SOAP_LONG_FORMAT ")", ident(t->sym->name), ident(p->sym->name), ident(t->sym->name), ident(p->sym->name), p->info.maxOccurs); } else { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s::%s.size() > " SOAP_LONG_FORMAT, strict_check(), ident(t->sym->name), ident(p->sym->name), p->info.maxOccurs); strict = 1; } else fprintf(fout, " || a->%s::%s.size() > " SOAP_LONG_FORMAT, ident(t->sym->name), ident(p->sym->name), p->info.maxOccurs); } } } else if (is_repetition(p)) { if (p->info.minOccurs > 0) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s::%s < " SOAP_LONG_FORMAT, strict_check(), ident(t->sym->name), ident(p->sym->name), p->info.minOccurs); strict = 1; } else fprintf(fout, " || a->%s::%s < " SOAP_LONG_FORMAT, ident(t->sym->name), ident(p->sym->name), p->info.minOccurs); nonempty = 1; } if (p->info.maxOccurs > 1) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(a->%s::%s > " SOAP_LONG_FORMAT, strict_check(), ident(t->sym->name), ident(p->sym->name), p->info.maxOccurs); strict = 1; } else fprintf(fout, " || a->%s::%s > " SOAP_LONG_FORMAT, ident(t->sym->name), ident(p->sym->name), p->info.maxOccurs); } p = p->next; } else if (is_choice(p)) { if (p->info.minOccurs != 0 && required_choice(p->next->info.typ) < 0) { if (strict == 0) { fprintf(fout, "\n\t\tif (%s(soap_flag_%s%d", strict_check(), ident(p->next->sym->name), i); strict = 1; } else fprintf(fout, " || soap_flag_%s%d", ident(p->next->sym->name), i); nonempty = 1; } p = p->next; } } } if (strict) fprintf(fout, "))\n\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\treturn NULL;\n\t\t}"); } if (has_getter(typ)) fprintf(fout, "\n\t\tif (a->get(soap))\n\t\t\treturn NULL;"); if (!is_invisible(typ->id->name)) { if (nonempty) fprintf(fout, "\n\t}\n\telse if (%s*soap->href != '#')\n\t{\tsoap->error = SOAP_OCCURS;\n\t\treturn NULL;", strict_check()); fprintf(fout, "\n\t}\n\telse\n\t{"); fprintf(fout, "\ta = (%s)soap_id_forward(soap, soap->href, (void*)a, 0, %s, %s, sizeof(%s), 0, %s_finsert, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), soap_type(typ), c_type(typ), prefix, prefix); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;\n\t}"); } fprintf(fout, "\n\treturn a;\n}"); } break; case Tunion: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, int*, %s);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, int*, %s);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, int *choice, %s)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)a; /* appease -Wall -Werror */"); fprintf(fout, "\tsoap->error = SOAP_TAG_MISMATCH;"); table = (Table *)typ->ref; if (table) { for (p = table->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) fprintf(fout, "\n\t/* non-serializable %s skipped */", ident(p->sym->name)); else if (p->info.sto & Sattribute) ; else if (is_transient(p->info.typ)) fprintf(fout, "\n\t/* transient %s skipped */", ident(p->sym->name)); else if (!is_invisible(p->sym->name)) { if (is_unmatched(p->sym)) { if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_inliteral(soap, NULL, (char**)&a->%s))", ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_inwliteral(soap, NULL, (wchar_t**)&a->%s))", ident(p->sym->name)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_in_%s(soap, NULL, a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(p->info.typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && a->%s.soap_in(soap, NULL, \"%s\"))", ident(p->sym->name), xsi_type(p->info.typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (p->info.typ->type == Tpointer) fprintf(fout, "\n\ta->%s = NULL;", ident(p->sym->name)); fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_in_%s(soap, NULL, &a->%s, \"%s\"))", c_ident(p->info.typ), ident(p->sym->name), xsi_type(p->info.typ)); } } else { if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_inliteral(soap, \"%s\", (char**)&a->%s))", ns_add(p, nse), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_inwliteral(soap, \"%s\", (wchar_t**)&a->%s))", ns_add(p, nse), ident(p->sym->name)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_in_%s(soap, \"%s\", a->%s, \"%s\"))", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && a->%s.soap_in(soap, \"%s\", \"%s\"))", ident(p->sym->name), ns_add(p, nse), xsi_type(p->info.typ)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (p->info.typ->type == Tpointer) fprintf(fout, "\n\ta->%s = NULL;", ident(p->sym->name)); fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_in_%s(soap, \"%s\", &a->%s, \"%s\"))", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name), xsi_type(p->info.typ)); } } fprintf(fout, "\n\t{\t*choice = %s;", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn a;"); fprintf(fout, "\n\t}"); fflush(fout); } } } table = (Table *)typ->ref; if (table) { for (p = table->list; p; p = p->next) { if (p->info.typ->type == Tfun || p->info.typ->type == Tunion) ; else if (p->info.sto & (Sconst | Sprivate | Sprotected)) ; else if (is_transient(p->info.typ)) ; else if (p->info.sto & Sattribute) ; else if (is_invisible(p->sym->name)) { if (is_XML(p->info.typ) && is_string(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_inliteral(soap, \"%s\", (char**)&a->%s))", ns_add(p, nse), ident(p->sym->name)); else if (is_XML(p->info.typ) && is_wstring(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_inwliteral(soap, \"%s\", (wchar_t**)&a->%s))", ns_add(p, nse), ident(p->sym->name)); else if (p->info.typ->type == Tarray) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_in_%s(soap, \"%s\", a->%s, NULL))", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name)); else if (p->info.typ->type == Tclass && !is_external(p->info.typ) && !is_volatile(p->info.typ) && !is_typedef(p->info.typ)) fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && a->%s.soap_in(soap, \"%s\", NULL))", ident(p->sym->name), ns_add(p, nse)); else if (p->info.typ->type != Tfun && !is_void(p->info.typ)) { if (p->info.typ->type == Tpointer) fprintf(fout, "\n\ta->%s = NULL;", ident(p->sym->name)); fprintf(fout, "\n\tif (soap->error == SOAP_TAG_MISMATCH && soap_in_%s(soap, \"%s\", &a->%s, NULL))", c_ident(p->info.typ), ns_add(p, nse), ident(p->sym->name)); } fprintf(fout, "\n\t{\t*choice = %s;", soap_union_member(typ, p)); fprintf(fout, "\n\t\treturn a;"); fprintf(fout, "\n\t}"); fflush(fout); } } } fprintf(fout, "\n\t*choice = %d;", required_choice(typ)); fprintf(fout, "\n\tif (!soap->error)\n\t\tsoap->error = SOAP_TAG_MISMATCH;\n\treturn NULL;\n}"); break; case Tpointer: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)type; /* appease -Wall -Werror */\n\tif (soap_element_begin_in(soap, tag, 1, NULL))"); fprintf(fout, "\n\t\treturn NULL;"); if (is_template(typ->ref)) { fprintf(fout, "\n\tsoap_revert(soap);"); fprintf(fout, "\n\tif (!a)\n\t{\tif (!(a = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t\treturn NULL;\n\t\t*a = NULL;\n\t}", c_type_id(typ, "*"), c_type(typ)); fprintf(fout, "\n\tif (!(*a = soap_in_%s(soap, tag, *a, type)))\n\t\treturn NULL;", c_ident((Tnode*)typ->ref)); fprintf(fout, "\n\treturn a;\n}"); } else if (((Tnode *) typ->ref)->type == Tclass && !is_external((Tnode*)typ->ref) && !is_volatile((Tnode*)typ->ref) && !is_typedef((Tnode*)typ->ref)) { fprintf(fout, "\n\tif (!a)\n\t\tif (!(a = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t\treturn NULL;", c_type_id(typ, "*"), c_type(typ)); fprintf(fout, "\n\t*a = NULL;\n\tif (!soap->null && *soap->href != '#')"); fprintf(fout, "\n\t{\tsoap_revert(soap);"); fprintf(fout, "\n\t\tif (!(*a = (%s)%s_instantiate_%s(soap, -1, soap->type, soap->arrayType, NULL)))", c_type(typ), fprefix, c_ident((Tnode*)typ->ref)); fprintf(fout, "\n\t\t\treturn NULL;"); fprintf(fout, "\n\t\t(*a)->soap_default(soap);"); fprintf(fout, "\n\t\tif (!(*a)->soap_in(soap, tag, NULL))"); fprintf(fout, "\n\t\t{\t*a = NULL;\n\t\t\treturn NULL;\n\t\t}"); fprintf(fout, "\n\t}\n\telse\n\t{\ta = (%s)soap_id_lookup(soap, soap->href, (void**)a, %s, sizeof(%s), %d, %s_fbase);", c_type_id(typ, "*"), soap_type(reftype(typ->ref)), c_type(reftype(typ->ref)), reflevel(typ->ref), prefix); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\treturn a;\n}"); } else { fprintf(fout, "\n\tif (!a)\n\t\tif (!(a = (%s)soap_malloc(soap, sizeof(%s))))\n\t\t\treturn NULL;", c_type_id(typ, "*"), c_type(typ)); fprintf(fout, "\n\t*a = NULL;\n\tif (!soap->null && *soap->href != '#')"); fprintf(fout, "\n\t{\tsoap_revert(soap);"); fprintf(fout, "\n\t\tif (!(*a = soap_in_%s(soap, tag, *a, type)))", c_ident((Tnode*)typ->ref)); fprintf(fout, "\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\telse\n\t{\ta = (%s)soap_id_lookup(soap, soap->href, (void**)a, %s, sizeof(%s), %d, NULL);", c_type_id(typ, "*"), soap_type(reftype(typ->ref)), c_type(reftype(typ->ref)), reflevel(typ->ref)); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\treturn a;\n}"); } break; case Tarray: temp = typ; while (temp->type == Tarray) temp = (Tnode*)temp->ref; if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(temp, "*"), c_ident(typ), c_type(typ)); return; } fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(temp, "*"), c_ident(typ), c_type(typ)); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type_id(temp, "*"), c_ident(typ), c_type_id(typ, "a")); fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 0, NULL))"); fprintf(fout, "\n\t\treturn NULL;"); fprintf(fout, "\n\tif (soap_match_array(soap, type))"); fprintf(fout, "\n\t{\tsoap->error = SOAP_TYPE;\n\t\treturn NULL;\n\t}"); fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), NULL, NULL, NULL, NULL);", c_type_id((Tnode*)typ->ref, "(*)"), soap_type(typ), c_type(typ)); fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); fprintf(fout, "\n\tsoap_default_%s(soap, a);", c_ident(typ)); fprintf(fout, "\n\tif (soap->body && *soap->href != '#')"); total = get_dimension(typ); n = (Tnode*)typ->ref; cardinality = 1; while (n->type == Tarray) { total=total*get_dimension(n); n = (Tnode*)n->ref; cardinality++; } fprintf(fout, "\n\t{\tint i;\n\t\tfor (i = 0; i < %d; i++)", get_dimension(typ)); fprintf(fout, "\n\t\t{\tsoap_peek_element(soap);\n\t\t\tif (soap->position)\n\t\t\t{\ti = soap->positions[0];\n\t\t\t\tif (i < 0 || i >= %d)\n\t\t\t\t{\tsoap->error = SOAP_IOB;\n\t\t\t\t\treturn NULL;\n\t\t\t\t}\n\t\t\t}", get_dimension(typ)); fprintf(fout, "\n\t\t\tif (!soap_in_%s(soap, NULL, a", c_ident((Tnode*)typ->ref)); if (cardinality > 1) fprintf(fout, "[i]"); else fprintf(fout, "+i"); fprintf(fout, ", \"%s\"))", xsi_type((Tnode*)typ->ref)); fprintf(fout, "\n\t\t\t{\tif (soap->error != SOAP_NO_TAG)\n\t\t\t\t\treturn NULL;"); fprintf(fout, "\n\t\t\t\tsoap->error = SOAP_OK;"); fprintf(fout, "\n\t\t\t\tbreak;"); fprintf(fout, "\n\t\t\t}"); fprintf(fout, "\n\t\t}"); fprintf(fout, "\n\t\tif (soap->mode & SOAP_C_NOIOB)\n\t\t\twhile (soap_element_end_in(soap, tag) == SOAP_SYNTAX_ERROR)\n\t\t\t{\tsoap->peeked = 1;\n\t\t\t\tsoap_ignore_element(soap);\n\t\t\t}"); fprintf(fout, "\n\t\telse if (soap_element_end_in(soap, tag))\n\t\t{\tif (soap->error == SOAP_SYNTAX_ERROR)\n\t\t\t\tsoap->error = SOAP_IOB;\n\t\t\treturn NULL;\n\t\t}"); fprintf(fout, "\n\t}\n\telse\n\t{\ta = (%s)soap_id_forward(soap, soap->href, (void*)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), NULL, NULL, NULL, NULL), 0, %s, %s, sizeof(%s), 0, NULL, NULL);", c_type_id((Tnode*)typ->ref, "(*)"), soap_type(typ), c_type(typ), soap_type(typ), soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\treturn (%s)a;\n}", c_type_id(temp, "*")); break; case Tenum: case Tenumsc: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); return; } fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); if (!is_typedef(typ)) { fprintf(fhead, "\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap*, const char*, %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap *soap, const char *s, %s)\n{", c_ident(typ), c_type_id(typ, "*a")); if (!is_mask(typ)) { LONG64 min = 0; LONG64 max = 0; fprintf(fout, "\n\tconst struct soap_code_map *map;"); t = (Table*)typ->ref; if (t && t->list && has_ns_eq(NULL, ns_remove3(t->list->sym->name, c_ident(typ)))) { fprintf(fout, "\n\tchar *t;"); fprintf(fout, "\n\tif (!s)\n\t\treturn soap->error;"); fprintf(fout, "\n\tsoap_s2QName(soap, s, &t, %ld, %ld, %s);", minlen(typ), maxlen(typ), pattern(typ)); fprintf(fout, "\n\tmap = soap_code(soap_codes_%s, t);", c_ident(typ)); } else { fprintf(fout, "\n\tif (!s)\n\t\treturn soap->error;"); fprintf(fout, "\n\tmap = soap_code(soap_codes_%s, s);", c_ident(typ)); } for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) { if (p->info.val.i < min) min = p->info.val.i; if (p->info.val.i > max) max = p->info.val.i; } } if (is_boolean(typ)) fprintf(fout, "\n\tif (map)\n\t\t*a = (%s)(map->code != 0);\n\telse if (!*s)\n\t\treturn soap->error = SOAP_EMPTY;\n\telse\n\t{\tlong n;\n\t\tif (soap_s2long(soap, s, &n) || n < 0 || n > 1)\n\t\t\treturn soap->error = SOAP_TYPE;\n\t\t*a = (%s)(n != 0);\n\t}\n\treturn SOAP_OK;\n}", c_type(typ), c_type(typ)); else if (sflag) fprintf(fout, "\n\tif (map)\n\t\t*a = (%s)map->code;\n\telse if (!*s)\n\t\treturn soap->error = SOAP_EMPTY;\n\telse\n\t\treturn soap->error = SOAP_TYPE;\n\treturn SOAP_OK;\n}", c_type(typ)); else if (min >= -2147483648LL && min <= 2147483647LL && max >= -2147483648LL && max <= 2147483647LL) fprintf(fout, "\n\tif (map)\n\t\t*a = (%s)map->code;\n\telse if (!*s)\n\t\treturn soap->error = SOAP_EMPTY;\n\telse\n\t{\tint n;\n\t\tif (soap_s2int(soap, s, &n) || n < " SOAP_LONG_FORMAT " || n > " SOAP_LONG_FORMAT ")\n\t\t\treturn soap->error = SOAP_TYPE;\n\t\t*a = (%s)n;\n\t}\n\treturn SOAP_OK;\n}", c_type(typ), min, max, c_type(typ)); else fprintf(fout, "\n\tif (map)\n\t\t*a = (%s)map->code;\n\telse if (!*s)\n\t\treturn soap->error = SOAP_EMPTY;\n\telse\n\t{\tLONG64 n;\n\t\tif (soap_s2LONG64(soap, s, &n) || n < " SOAP_LONG_FORMAT "LL || n > " SOAP_LONG_FORMAT "LL)\n\t\t\treturn soap->error = SOAP_TYPE;\n\t\t*a = (%s)n;\n\t}\n\treturn SOAP_OK;\n}", c_type(typ), min, max, c_type(typ)); } else { t = (Table*)typ->ref; if (t && t->list && has_ns_eq(NULL, ns_remove3(t->list->sym->name, c_ident(typ)))) { fprintf(fout, "\n\tchar *t;"); fprintf(fout, "\n\tsoap_s2QName(soap, s, &t, %ld, %ld, %s);", minlen(typ), maxlen(typ), pattern(typ)); fprintf(fout, "\n\t*a = (%s)soap_code_bits(soap_codes_%s, t);", c_type(typ), c_ident(typ)); } else fprintf(fout, "\n\t(void)soap; /* appease -Wall -Werror */\n\t*a = (%s)soap_code_bits(soap_codes_%s, s);", c_type(typ), c_ident(typ)); fprintf(fout, "\n\treturn SOAP_OK;\n}"); } } fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); if (is_boolean(typ)) { fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 0, NULL))"); fprintf(fout, "\n\t\treturn NULL;"); fprintf(fout, "\n\tif (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, \":boolean\"))"); fprintf(fout, "\n\t{\tsoap->error = SOAP_TYPE;\n\t\treturn NULL;\n\t}"); } else if (typ->sym) { fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 0, NULL))"); fprintf(fout, "\n\t\treturn NULL;"); fprintf(fout, "\n\tif (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, \"%s\"))", base_type(typ, "")); fprintf(fout, "\n\t{\tsoap->error = SOAP_TYPE;\n\t\treturn NULL;\n\t}"); } else { fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 0, type))"); fprintf(fout, "\n\t\treturn NULL;"); } fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), NULL, NULL, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), c_type(typ)); fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); fprintf(fout, "\n\tif (*soap->href != '#')\n\t{"); fprintf(fout, "\tint err = soap_s2%s(soap, soap_value(soap), a);\n\t\tif ((soap->body && soap_element_end_in(soap, tag)) || err)\n\t\t\treturn NULL;", c_ident(typ)); fprintf(fout, "\n\t}\n\telse\n\t{\ta = (%s)soap_id_forward(soap, soap->href, (void*)a, 0, %s, %s, sizeof(%s), 0, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\treturn a;\n}"); break; case Ttemplate: if (is_external(typ) && !is_volatile(typ)) { fprintf(fhead, "\nSOAP_FMAC1 %s SOAP_FMAC2 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); return; } if (is_typedef(typ)) { fprintf(fhead, "\n\n#define soap_in_%s soap_in_%s\n", c_ident(typ), t_ident(typ)); return; } n = (Tnode*)typ->ref; if (n->type == Tfun || is_void(n)) return; fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)\n{", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); fprintf(fout, "\n\t(void)type; /* appease -Wall -Werror */"); if (is_smart(typ)) { fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 1, NULL))"); fprintf(fout, "\n\t\treturn NULL;"); fprintf(fout, "\n\tif (!a && !(a = soap_new_%s(soap)))\n\t\treturn NULL;", c_ident(typ)); fprintf(fout, "\n\tif (!soap->null && *soap->href != '#')\n\t{"); if (is_smart_shared(typ)) { fprintf(fout, "\tvoid **x = soap_id_smart(soap, soap->id, %s, sizeof(%s));", soap_type(n), c_type(n)); if (n->type == Tclass && !is_external(n) && !is_volatile(n) && !is_typedef(n)) fprintf(fout, "\n\t\tif (x && *x)\n\t\t\t*a = *(%s)(*x);\n\t\telse if ((*a = %s(%s_instantiate_%s(soap, SOAP_NO_LINK_TO_DELETE, soap->type, soap->arrayType, NULL))))\n\t\t{\tif (x)\n\t\t\t\t*x = (void*)a;\n\t\t}\n\t\telse\n\t\t\treturn NULL;", c_type_id(typ, "*"), c_type(typ), fprefix, c_ident(n)); else fprintf(fout, "\n\t\tif (x && *x)\n\t\t\t*a = *(%s)(*x);\n\t\telse\n\t\t{\t*a = %s<%s>();\n\t\t\tif (x)\n\t\t\t\t*x = (void*)a;\n\t\t}", c_type_id(typ, "*"), make_shared(typ), c_type(n)); } else if (n->type == Tclass && !is_external(n) && !is_volatile(n) && !is_typedef(n)) fprintf(fout, "\tif (!(*a = %s(%s_instantiate_%s(soap, SOAP_NO_LINK_TO_DELETE, soap->type, soap->arrayType, NULL))))\n\t\t\treturn NULL;", c_type(typ), fprefix, c_ident(n)); else fprintf(fout, "\tif (!(*a = %s(SOAP_NEW(soap, %s))))\n\t\t\treturn NULL;", c_type(typ), c_type(n)); fprintf(fout, "\n\t\tsoap_revert(soap);"); if (is_XML(n) && is_string(n)) fprintf(fout, "\n\t\tif (!soap_inliteral(soap, tag, (char*const*)a->get()))\n\t\t\treturn NULL;"); else if (is_XML(n) && is_wstring(n)) fprintf(fout, "\n\t\tif (!soap_inwliteral(soap, tag, (wchar_t*const*)a->get()))\n\t\t\treturn NULL;"); else if (n->type == Tarray) fprintf(fout, "\n\t\tif (!soap_in_%s(soap, tag, a->get(), \"%s\"))\n\t\t\treturn NULL;", c_ident(n), xsi_type(n)); else if (n->type == Tclass && !is_external(n) && !is_volatile(n) && !is_typedef(n)) { fprintf(fout, "\n\t\t(*a)->soap_default(soap);"); fprintf(fout, "\n\t\tif (!(*a)->soap_in(soap, tag, NULL))\n\t\t\treturn NULL;"); } else { fprintf(fout, "\n\t\tsoap_default_%s(soap, a->get());", c_ident(n)); fprintf(fout, "\n\t\tif (!soap_in_%s(soap, tag, a->get(), \"%s\"))\n\t\t\treturn NULL;", c_ident(n), xsi_type(n)); } fprintf(fout, "\n\t}\n\telse\n\t{"); fprintf(fout, "\tif (!soap_id_forward(soap, soap->href, a, 0, %s, %s, sizeof(%s), %d, %s_finsert, %s_fbase))\n\t\t\treturn NULL;", soap_type(reftype(n)), soap_type(typ), c_type(reftype(n)), reflevel(n) + 1, prefix, prefix); /* reflevel + 1 since smart pointer accepts derived types */ fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\treturn a;\n}"); } else if (c11flag && (!strcmp(typ->id->name, "std::deque") || !strcmp(typ->id->name, "std::list") || (!strcmp(typ->id->name, "std::vector") && !is_bool(n)))) /* use C++11 emplace_back */ { fprintf(fout, "\n\tshort soap_flag;"); fprintf(fout, "\n\tfor (soap_flag = 0;; soap_flag = 1)\n\t{"); fprintf(fout, "\n\t\tif (tag && *tag != '-')\n\t\t{\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\t\t\tbreak;\n\t\t\tsoap_revert(soap);\n\t\t}"); fprintf(fout, "\n\t\tif (!a && !(a = soap_new_%s(soap)))\n\t\t\treturn NULL;", c_ident(typ)); if (!strcmp(typ->id->name, "std::vector") && !is_primitive(n) && n->type != Tpointer) { fprintf(fout, "\n\t\tif (!a->empty() && a->size() == a->capacity())\n\t\t{\tconst void *p = &a->front();"); fprintf(fout, "\n\t\t\ta->emplace_back();"); fprintf(fout, "\n\t\t\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Vector capacity increased to %%lu to fit %%lu items: updating pointers\\n\", a->capacity(), a->size()));"); fprintf(fout, "\n\t\t\tsoap_update_pointers(soap, (const char*)&a->front(), (const char*)p, (a->size() - 1) * sizeof(%s));", c_type(n)); fprintf(fout, "\n\t\t}\n\t\telse\n\t\t{\ta->emplace_back();\n\t\t}"); fprintf(fout, "\n\t\t%s *n = &a->back();\n\t\t", c_type(n)); } else { fprintf(fout, "\n\t\ta->emplace_back();\n\t\t%s *n = &a->back();\n\t\t", c_type(n)); } if (n->type == Tpointer) fprintf(fout, "*n = NULL;"); else if (n->type == Tarray) fprintf(fout, "soap_default_%s(soap, n);", c_ident(n)); else if (n->type == Tclass && !is_external(n) && !is_volatile(n) && !is_typedef(n)) fprintf(fout, "n->soap_default(soap);"); else if (n->type != Tfun && !is_void(n) && !is_XML(n)) fprintf(fout, "soap_default_%s(soap, n);", c_ident(n)); if (!is_primitive(n) && n->type != Tpointer) fprintf(fout, "\n\t\tshort soap_shaky = soap_begin_shaky(soap);"); fprintf(fout, "\n\t\tif (tag && *tag != '-' && (*soap->id || *soap->href == '#'))\n\t\t{\tif ("); fprintf(fout, "!soap_id_forward(soap, *soap->id?soap->id:soap->href, a, (size_t)a->size() - 1, %s, %s, sizeof(%s), %d, %s_finsert, %s_fbase))\n\t\t\t\tbreak;\n\t\t\tif (", soap_type(reftype(n)), soap_type(typ), c_type(reftype(n)), reflevel(n), prefix, prefix); if (is_XML(n) && is_string(n)) fprintf(fout, "!soap_inliteral(soap, tag, NULL)"); else if (is_XML(n) && is_wstring(n)) fprintf(fout, "!soap_inwliteral(soap, tag, NULL)"); else if (n->type == Tarray) fprintf(fout, "!soap_in_%s(soap, tag, NULL, \"%s\")", c_ident(n), xsi_type(n)); else fprintf(fout, "!soap_in_%s(soap, tag, NULL, \"%s\")", c_ident(n), xsi_type(n)); fprintf(fout, ")\n\t\t\t\tbreak;\n\t\t}\n\t\telse\n\t\t{\t"); if (is_XML(n) && is_string(n)) fprintf(fout, "if (!soap_inliteral(soap, tag, n))"); else if (is_XML(n) && is_wstring(n)) fprintf(fout, "if (!soap_inwliteral(soap, tag, n))"); else if (n->type == Tarray) fprintf(fout, "if (!soap_in_%s(soap, tag, n, \"%s\"))", c_ident(n), xsi_type(n)); else fprintf(fout, "if (!soap_in_%s(soap, tag, n, \"%s\"))", c_ident(n), xsi_type(n)); fprintf(fout, "\n\t\t\t{\ta->pop_back();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}"); if (!is_primitive(n) && n->type != Tpointer) fprintf(fout, "\n\t\tsoap_end_shaky(soap, soap_shaky);"); fprintf(fout, "\n\t\tif (!tag || *tag == '-')\n\t\t\treturn a;\n\t}\n\tif (soap_flag && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))\n\t{\tsoap->error = SOAP_OK;\n\t\treturn a;\n\t}\n\treturn NULL;\n}"); } else { fprintf(fout, "\n\tshort soap_flag;"); fprintf(fout, "\n\tfor (soap_flag = 0;; soap_flag = 1)\n\t{"); fprintf(fout, "\n\t\tif (tag && *tag != '-')\n\t\t{\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\t\t\tbreak;\n\t\t\tsoap_revert(soap);\n\t\t}"); fprintf(fout, "\n\t\tif (!a && !(a = soap_new_%s(soap)))\n\t\t\treturn NULL;", c_ident(typ)); fprintf(fout, "\n\t\telse if (static_cast(a->size()) > soap->maxoccurs)\n\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\treturn NULL;\n\t\t}"); fprintf(fout, "\n\t\t%s;\n\t\t", c_type_id(n, "n")); if (n->type == Tpointer) fprintf(fout, "n = NULL;"); else if (n->type == Tarray) fprintf(fout, "soap_default_%s(soap, &n);", c_ident(n)); else if (n->type == Tclass && !is_external(n) && !is_volatile(n) && !is_typedef(n)) fprintf(fout, "n.soap_default(soap);"); else if (n->type != Tfun && !is_void(n) && !is_XML(n) && !is_smart(n)) fprintf(fout, "soap_default_%s(soap, &n);", c_ident(n)); if (!is_primitive(n) && n->type != Tpointer) fprintf(fout, "\n\t\tshort soap_shaky = soap_begin_shaky(soap);"); fprintf(fout, "\n\t\tif (tag && *tag != '-' && (*soap->id || *soap->href == '#'))\n\t\t{\tif ("); fprintf(fout, "!soap_id_forward(soap, *soap->id?soap->id:soap->href, a, static_cast(a->size()), %s, %s, sizeof(%s), %d, %s_finsert, %s_fbase))\n\t\t\t\tbreak;\n\t\t\tif (", soap_type(reftype(n)), soap_type(typ), c_type(reftype(n)), reflevel(n), prefix, prefix); if (is_XML(n) && is_string(n)) fprintf(fout, "!soap_inliteral(soap, tag, NULL)"); else if (is_XML(n) && is_wstring(n)) fprintf(fout, "!soap_inwliteral(soap, tag, NULL)"); else if (n->type == Tarray) fprintf(fout, "!soap_in_%s(soap, tag, NULL, \"%s\")", c_ident(n), xsi_type(n)); else fprintf(fout, "!soap_in_%s(soap, tag, NULL, \"%s\")", c_ident(n), xsi_type(n)); fprintf(fout, ")\n\t\t\t\tbreak;\n\t\t}\n\t\telse\n\t\t{\t"); if (is_XML(n) && is_string(n)) fprintf(fout, "if (!soap_inliteral(soap, tag, &n))"); else if (is_XML(n) && is_wstring(n)) fprintf(fout, "if (!soap_inwliteral(soap, tag, &n))"); else if (n->type == Tarray) fprintf(fout, "if (!soap_in_%s(soap, tag, &n, \"%s\"))", c_ident(n), xsi_type(n)); else fprintf(fout, "if (!soap_in_%s(soap, tag, &n, \"%s\"))", c_ident(n), xsi_type(n)); fprintf(fout, "\n\t\t\t\tbreak;\n\t\t}"); if (!is_primitive(n) && n->type != Tpointer) fprintf(fout, "\n\t\tsoap_end_shaky(soap, soap_shaky);"); if (!(!strcmp(typ->id->name, "std::list") || !strcmp(typ->id->name, "std::deque") || !strcmp(typ->id->name, "std::set")) && !is_primitive(n) && n->type != Tpointer && !is_smart(n)) { fprintf(fout, "\n\t\tif (a->size())\n\t\t{\tconst void *p = &*a->begin();\n\t\t\tsoap_update_pointers(soap, (const char*)&(*a->insert(a->end(), n)), (const char*)&n, sizeof(%s));", c_type(n)); fprintf(fout, "\n\t\t\tif (p != &*a->begin())\n\t\t\t{\tDBGLOG(TEST, SOAP_MESSAGE(fdebug, \"Container capacity increased: updating pointers\\n\"));"); fprintf(fout, "\n\t\t\t\tsoap_update_pointers(soap, (const char*)&*a->begin(), (const char*)p, (a->size() - 1) * sizeof(%s));\n\t\t\t}", c_type(n)); fprintf(fout, "\n\t\t}\n\t\telse\n\t\t{\tsoap_update_pointers(soap, (const char*)&(*a->insert(a->end(), n)), (const char*)&n, sizeof(%s));", c_type(n)); fprintf(fout, "\n\t\t}"); } else { if (is_primitive(n) || n->type == Tpointer || is_smart(n)) fprintf(fout, "\n\t\ta->insert(a->end(), n);"); else fprintf(fout, "\n\t\tsoap_update_pointers(soap, (const char*)&(*a->insert(a->end(), n)), (const char*)&n, sizeof(%s));", c_type(n)); } fprintf(fout, "\n\t\tif (!tag || *tag == '-')\n\t\t\treturn a;\n\t}\n\tif (soap_flag && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))\n\t{\tsoap->error = SOAP_OK;\n\t\treturn a;\n\t}\n\treturn NULL;\n}"); } break; default: break; } fflush(fout); } void soap_in_Darray(Tnode *typ) { int i, j, d; Entry *p; Table *t; const char *nsa = ns_qualifiedAttribute(typ); p = is_dynamic_array(typ); d = get_Darraydims(typ); fprintf(fhead, "\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap*, const char*, %s, const char*);", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*")); if (is_external(typ)) return; if (is_binary(typ)) { fprintf(fhead, "\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap*, const char*, %s);", c_ident(typ), c_type_id(typ, "*")); fprintf(fout, "\n\nSOAP_FMAC3S int SOAP_FMAC4S soap_s2%s(struct soap *soap, const char *s, %s)\n{", c_ident(typ), c_type_id(typ, "*a")); if (is_hexBinary(typ)) fprintf(fout, "\n\ta->__ptr = (unsigned char*)soap_hex2s(soap, s, NULL, 0, &a->__size);"); else fprintf(fout, "\n\ta->__ptr = (unsigned char*)soap_base642s(soap, s, NULL, 0, &a->__size);"); fprintf(fout, "\n\tif (!a->__ptr)\n\t\treturn soap->error;"); if (typ->hasmin) fprintf(fout, "\n\tif (a->__size %s %lG)\n\t\treturn soap->error = SOAP_LENGTH;", typ->incmin ? "<" : "<=", typ->min); if (typ->hasmax) fprintf(fout, "\n\tif (a->__size %s %lG)\n\t\treturn soap->error = SOAP_LENGTH;", typ->incmax ? ">" : ">=", typ->max); fprintf(fout, "\n\treturn SOAP_OK;\n}"); } if (typ->type == Tclass && !is_volatile(typ) && !is_typedef(typ)) { fprintf(fout, "\n\nvoid *%s::soap_in(struct soap *soap, const char *tag, const char *type)", c_type(typ)); fprintf(fout, "\n{\treturn soap_in_%s(soap, tag, this, type);\n}", c_ident(typ)); } fflush(fout); fprintf(fout, "\n\nSOAP_FMAC3 %s SOAP_FMAC4 soap_in_%s(struct soap *soap, const char *tag, %s, const char *type)", c_type_id(typ, "*"), c_ident(typ), c_type_id(typ, "*a")); if (is_binary(typ)) fprintf(fout, "\n{"); else if (d) fprintf(fout, "\n{\tsize_t i, n;\n\tint j;\n\t%s;", c_type_id(p->info.typ, "p")); else fprintf(fout, "\n{\tint i, j;\n\t%s;", c_type_id(p->info.typ, "p")); fprintf(fout, "\n\tif (soap_element_begin_in(soap, tag, 1, NULL))\n\t\treturn NULL;"); if (is_hexBinary(typ)) fprintf(fout, "\n\tif (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, \":hexBinary\"))"); else if (is_binary(typ)) fprintf(fout, "\n\tif (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, \":base64Binary\") && soap_match_tag(soap, soap->type, \":base64\"))"); else if (has_ns(typ) || is_untyped(typ)) fprintf(fout, "\n\tif (*soap->type && soap_match_array(soap, \"%s\") && soap_match_tag(soap, soap->type, type))", xsi_type((Tnode*)p->info.typ->ref)); else fprintf(fout, "\n\tif (soap_match_array(soap, type))"); fprintf(fout, "\n\t{\tsoap->error = SOAP_TYPE;\n\t\treturn NULL;\n\t}"); if (typ->type == Tclass) { fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), soap->type, soap->arrayType, %s_instantiate, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), c_type(typ), prefix, prefix); fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); fprintf(fout, "\n\ta->soap_default(soap);"); for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) if (p->info.sto & Sattribute) soap_attr_value(p, ptr_cast(t, "a"), ident(p->sym->name), ns_add(p, nsa)); } } else { fprintf(fout, "\n\ta = (%s)soap_id_enter(soap, soap->id, a, %s, sizeof(%s), NULL, NULL, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), c_type(typ)); fprintf(fout, "\n\tif (!a)\n\t\treturn NULL;"); fprintf(fout, "\n\tsoap_default_%s(soap, a);", c_ident(typ)); for (t = (Table*)typ->ref; t; t = t->prev) { for (p = t->list; p; p = p->next) if (p->info.sto & Sattribute) soap_attr_value(p, "a", ident(p->sym->name), ns_add(p, nsa)); } } if (is_attachment(typ)) fprintf(fout, "\n\tif (soap->body && !*soap->href)\n\t{"); else fprintf(fout, "\n\tif (soap->body && *soap->href != '#')\n\t{"); p = is_dynamic_array(typ); if (is_binary(typ)) { if (is_hexBinary(typ)) fprintf(fout, "\n\t\ta->__ptr = soap_gethex(soap, &a->__size);"); else { fprintf(fout, "\n\t\ta->__ptr = soap_getbase64(soap, &a->__size, 0);"); if (is_attachment(typ)) fprintf(fout, "\n#ifndef WITH_LEANER\n\t\tif (soap_xop_forward(soap, &a->__ptr, &a->__size, &a->id, &a->type, &a->options))\n\t\t\treturn NULL;\n#endif"); } fprintf(fout, "\n\t\tif ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); if (typ->hasmin) fprintf(fout, "\n\t\tif (a->__size %s %lG)\n\t\t{\tsoap->error = SOAP_LENGTH;\n\t\t\treturn NULL;\n\t\t}", typ->incmin ? "<" : "<=", typ->min); if (typ->hasmax) fprintf(fout, "\n\t\tif (a->__size %s %lG)\n\t\t{\tsoap->error = SOAP_LENGTH;\n\t\t\treturn NULL;\n\t\t}", typ->incmax ? ">" : ">=", typ->max); } else { fprintf(fout, "\n\t\tif (*soap->arraySize)\n\t\t{"); if (d) { fprintf(fout, "\n\t\t\tn = soap_getsizes(soap->arraySize, a->__size, %d);", d); if (has_offset(typ)) fprintf(fout, "\n\t\t\tn -= j = soap_getoffsets(soap->arrayOffset, a->__size, a->__offset, %d);", d); else fprintf(fout, "\n\t\t\tn -= j = soap_getoffsets(soap->arrayOffset, a->__size, NULL, %d);", d); if (p->info.minOccurs > 0) fprintf(fout, "\n\t\t\tif (%sn < " SOAP_LONG_FORMAT ")\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}", strict_check(), p->info.minOccurs); if (p->info.maxOccurs > 1) fprintf(fout, "\n\t\t\t\tif (%sn > " SOAP_LONG_FORMAT ")\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}", strict_check(), p->info.maxOccurs); else fprintf(fout, "\n\t\t\tif (n > soap->maxoccurs)\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}"); if (((Tnode*)p->info.typ->ref)->type == Tclass || (((Tnode*)p->info.typ->ref)->type == Tstruct && !cflag)) { fprintf(fout, "\n\t\t\ta->%s = soap_new_%s(soap, n);", ident(p->sym->name), c_ident((Tnode*)p->info.typ->ref)); if (!is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref) && ((Tnode*)p->info.typ->ref)->type == Tclass) fprintf(fout, "\n\t\t\tfor (i = 0; i < n; i++)\n\t\t\t\t(a->%s+i)->%s::soap_default(soap);", ident(p->sym->name), c_type((Tnode*)p->info.typ->ref)); else if (((Tnode*)p->info.typ->ref)->type == Tpointer) fprintf(fout, "\n\t\t\tfor (i = 0; i < n; i++)\n\t\t\t\tsoap_default_%s(soap, a->%s+i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); } else if (has_class((Tnode*)p->info.typ->ref)) { fprintf(fout, "\n\t\t\ta->%s = soap_new_%s(soap, n);", ident(p->sym->name), c_ident((Tnode*)p->info.typ->ref)); fprintf(fout, "\n\t\t\tfor (i = 0; i < n; i++)\n\t\t\t\tsoap_default_%s(soap, a->%s+i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); } else { fprintf(fout, "\n\t\t\ta->%s = (%s)soap_malloc(soap, n * sizeof(%s));", ident(p->sym->name), c_type_id((Tnode*)p->info.typ->ref, "*"), c_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tpointer) fprintf(fout, "\n\t\t\tfor (i = 0; i < n; i++)\n\t\t\t\ta->%s[i] = NULL;", ident(p->sym->name)); else if (!is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tfor (i = 0; i < n; i++)\n\t\t\t\tsoap_default_%s(soap, a->%s+i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); } fprintf(fout, "\n\t\t\tfor (i = 0; i < n; i++)"); fprintf(fout, "\n\t\t\t{\tsoap_peek_element(soap);\n\t\t\t\tif (soap->position == %d)", d); fprintf(fout, "\n\t\t\t\t{\ti = (size_t)("); for (i = 0; i < d; i++) { fprintf(fout, "soap->positions[%d]", i); for (j = 1; j < d-i; j++) fprintf(fout, "*a->__size[%d]", j); if (i < d-1) fprintf(fout, "+"); } fprintf(fout, "-j);"); fprintf(fout, "\n\t\t\t\t\tif (i >= n)\n\t\t\t\t\t{\tsoap->error = SOAP_IOB;\n\t\t\t\t\t\treturn NULL;\n\t\t\t\t\t}\n\t\t\t\t}"); fprintf(fout, "\n\t\t\t\tif (!soap_in_%s(soap, NULL, a->%s + i, \"%s\"))", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type((Tnode*)p->info.typ->ref)); fprintf(fout, "\n\t\t\t\t{\tif (soap->error != SOAP_NO_TAG)\n\t\t\t\t\t\treturn NULL;"); fprintf(fout, "\n\t\t\t\t\tsoap->error = SOAP_OK;"); fprintf(fout, "\n\t\t\t\t\tbreak;"); fprintf(fout, "\n\t\t\t\t}"); } else { fprintf(fout, "\n\t\t\tsoap_getsizes(soap->arraySize, &a->__size, 1);"); if (has_offset(typ)) fprintf(fout, "\n\t\t\ta->__size -= j = soap_getoffsets(soap->arrayOffset, &a->__size, &a->__offset, 1);"); else fprintf(fout, "\n\t\t\ta->__size -= j = soap_getoffsets(soap->arrayOffset, &a->__size, NULL, 1);"); if (p->info.minOccurs > 0) fprintf(fout, "\n\t\t\tif (%sa->__size < " SOAP_LONG_FORMAT ")\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}", strict_check(), p->info.minOccurs); if (p->info.maxOccurs > 1) fprintf(fout, "\n\t\t\tif (%sa->__size > " SOAP_LONG_FORMAT ")\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}", strict_check(), p->info.maxOccurs); else fprintf(fout, "\n\t\t\tif ((size_t)a->__size > soap->maxoccurs)\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}"); if (((Tnode*)p->info.typ->ref)->type == Tclass || (((Tnode*)p->info.typ->ref)->type == Tstruct && !cflag)) { fprintf(fout, "\n\t\t\ta->%s = soap_new_%s(soap, a->__size);", ident(p->sym->name), c_ident((Tnode*)p->info.typ->ref)); if (!is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref) && ((Tnode*)p->info.typ->ref)->type == Tclass) fprintf(fout, "\n\t\t\tfor (i = 0; i < a->__size; i++)\n\t\t\t\t(a->%s+i)->%s::soap_default(soap);", ident(p->sym->name), c_type((Tnode*)p->info.typ->ref)); else fprintf(fout, "\n\t\t\tfor (i = 0; i < a->__size; i++)\n\t\t\t\tsoap_default_%s(soap, a->%s+i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); } else if (has_class((Tnode*)p->info.typ->ref)) { fprintf(fout, "\n\t\t\ta->%s = soap_new_%s(soap, a->__size);", ident(p->sym->name), c_ident((Tnode*)p->info.typ->ref)); fprintf(fout, "\n\t\t\tfor (i = 0; i < a->__size; i++)\n\t\t\t\tsoap_default_%s(soap, a->%s+i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); } else { fprintf(fout, "\n\t\t\ta->%s = (%s)soap_malloc(soap, sizeof(%s) * a->__size);", ident(p->sym->name), c_type_id((Tnode*)p->info.typ->ref, "*"), c_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tpointer) fprintf(fout, "\n\t\t\tfor (i = 0; i < a->__size; i++)\n\t\t\t\ta->%s[i] = NULL;", ident(p->sym->name)); else if (!is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\tfor (i = 0; i < a->__size; i++)\n\t\t\t\tsoap_default_%s(soap, a->%s+i);", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name)); } fprintf(fout, "\n\t\t\tfor (i = 0; i < a->__size; i++)"); fprintf(fout, "\n\t\t\t{\tsoap_peek_element(soap);\n\t\t\t\tif (soap->position)\n\t\t\t\t{\ti = soap->positions[0]-j;\n\t\t\t\t\tif (i < 0 || i >= a->__size)\n\t\t\t\t\t{\tsoap->error = SOAP_IOB;\n\t\t\t\t\t\treturn NULL;\n\t\t\t\t\t}\n\t\t\t\t}"); if (is_XML((Tnode*)p->info.typ->ref) && is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (!soap_inliteral(soap, NULL, (char**)(a->%s + i)))", ident(p->sym->name)); else if (is_XML((Tnode*)p->info.typ->ref) && is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (!soap_inwliteral(soap, NULL, (wchar_t**)(a->%s + i)))", ident(p->sym->name)); else if (is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (!soap_in_%s(soap, NULL, (char**)(a->%s + i), \"%s\"))", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type((Tnode*)p->info.typ->ref)); else if (is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (!soap_in_%s(soap, NULL, (wchar_t**)(a->%s + i), \"%s\"))", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type((Tnode*)p->info.typ->ref)); else fprintf(fout, "\n\t\t\t\tif (!soap_in_%s(soap, NULL, a->%s + i, \"%s\"))", c_ident((Tnode*)p->info.typ->ref), ident(p->sym->name), xsi_type((Tnode*)p->info.typ->ref)); fprintf(fout, "\n\t\t\t\t{\tif (soap->error != SOAP_NO_TAG)\n\t\t\t\t\t\treturn NULL;"); fprintf(fout, "\n\t\t\t\t\tsoap->error = SOAP_OK;"); fprintf(fout, "\n\t\t\t\t\tbreak;"); fprintf(fout, "\n\t\t\t\t}"); } fprintf(fout, "\n\t\t\t}\n\t\t}\n\t\telse"); fprintf(fout, "\n\t\t{\tif (soap_alloc_block(soap) == NULL)\n\t\t\t\treturn NULL;"); if (d) { for (i = 1; i < d; i++) fprintf(fout, "\n\t\t\ta->__size[%d] = 1;", i); fprintf(fout, "\n\t\t\tfor (a->__size[0] = 0; ; a->__size[0]++)\n\t\t\t{"); } else { fprintf(fout, "\n\t\t\tfor (a->__size = 0; ; a->__size++)\n\t\t\t{"); } if (((Tnode*)p->info.typ->ref)->type == Tclass || ((Tnode*)p->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->info.typ->ref) || (!cflag && ((Tnode*)p->info.typ->ref)->type == Tstruct)) fprintf(fout, "\tp = soap_block<%s>::push(soap, NULL);\n\t\t\t\tif (!p)\n\t\t\t\t\tbreak;", c_type((Tnode*)p->info.typ->ref)); else fprintf(fout, "\tp = (%s)soap_push_block(soap, NULL, sizeof(%s));\n\t\t\t\tif (!p)\n\t\t\t\t\tbreak;", c_type(p->info.typ), c_type((Tnode*)p->info.typ->ref)); if (((Tnode*)p->info.typ->ref)->type == Tclass && !is_external((Tnode*)p->info.typ->ref) && !is_volatile((Tnode*)p->info.typ->ref) && !is_typedef((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tp->soap_default(soap);"); else if (((Tnode*)p->info.typ->ref)->type == Tpointer) fprintf(fout, "\n\t\t\t\t*p = NULL;"); else if (!is_XML((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tsoap_default_%s(soap, p);", c_ident((Tnode*)p->info.typ->ref)); if (is_XML((Tnode*)p->info.typ->ref) && is_string((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (!soap_inliteral(soap, NULL, p))"); else if (is_XML((Tnode*)p->info.typ->ref) && is_wstring((Tnode*)p->info.typ->ref)) fprintf(fout, "\n\t\t\t\tif (!soap_inwliteral(soap, NULL, p))"); else fprintf(fout, "\n\t\t\t\tif (!soap_in_%s(soap, NULL, p, \"%s\"))", c_ident((Tnode*)p->info.typ->ref), xsi_type((Tnode*)p->info.typ->ref)); fprintf(fout, "\n\t\t\t\t{\tif (soap->error == SOAP_NO_TAG)"); fprintf(fout, "\n\t\t\t\t\t\tsoap->error = SOAP_OK;"); if (((Tnode*)p->info.typ->ref)->type == Tclass || ((Tnode*)p->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->info.typ->ref) || (!cflag && ((Tnode*)p->info.typ->ref)->type == Tstruct)) fprintf(fout, "\n\t\t\t\t\tsoap_block<%s>::pop(soap, NULL);", c_type((Tnode*)p->info.typ->ref)); else fprintf(fout, "\n\t\t\t\t\tsoap_pop_block(soap, NULL);"); fprintf(fout, "\n\t\t\t\t\tbreak;"); fprintf(fout, "\n\t\t\t\t}"); if (d) { if (p->info.maxOccurs > 1) fprintf(fout, "\n\t\t\t\tif (%sa->__size[0] > " SOAP_LONG_FORMAT ")", strict_check(), p->info.maxOccurs); else fprintf(fout, "\n\t\t\t\tif ((size_t)a->__size[0] > soap->maxoccurs)"); } else { if (p->info.maxOccurs > 1) fprintf(fout, "\n\t\t\t\tif (%sa->__size > " SOAP_LONG_FORMAT ")", strict_check(), p->info.maxOccurs); else fprintf(fout, "\n\t\t\t\tif ((size_t)a->__size > soap->maxoccurs)"); } fprintf(fout, "\n\t\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\t\treturn NULL;\n\t\t\t\t}"); fprintf(fout, "\n\t\t\t}"); if (p->info.minOccurs > 0) { if (d) fprintf(fout, "\n\t\t\tif (%sa->__size[0] < " SOAP_LONG_FORMAT ")\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}", strict_check(), p->info.minOccurs); else fprintf(fout, "\n\t\t\tif (%sa->__size < " SOAP_LONG_FORMAT ")\n\t\t\t{\tsoap->error = SOAP_OCCURS;\n\t\t\t\treturn NULL;\n\t\t\t}", strict_check(), p->info.minOccurs); } if (((Tnode*)p->info.typ->ref)->type == Tclass || ((Tnode*)p->info.typ->ref)->type == Ttemplate || has_class((Tnode*)p->info.typ->ref) || (!cflag && ((Tnode*)p->info.typ->ref)->type == Tstruct)) { fprintf(fout, "\n\t\t\tif (soap->blist->size)\n\t\t\t\ta->%s = soap_new_%s(soap, soap->blist->size/sizeof(%s));\n\t\t\telse\n\t\t\t\ta->%s = NULL;", ident(p->sym->name), c_ident((Tnode*)p->info.typ->ref), c_type((Tnode*)p->info.typ->ref), ident(p->sym->name)); fprintf(fout, "\n\t\t\tif (a->%s)\n\t\t\t\tsoap_block<%s>::save(soap, NULL, a->%s);\n\t\t\telse\n\t\t\t\tsoap_block<%s>::end(soap, NULL);", ident(p->sym->name), c_type((Tnode*)p->info.typ->ref), ident(p->sym->name), c_type((Tnode*)p->info.typ->ref)); } else fprintf(fout, "\n\t\t\ta->%s = (%s)soap_save_block(soap, NULL, NULL, 1);", ident(p->sym->name), c_type(p->info.typ)); fprintf(fout, "\n\t\t}"); fprintf(fout, "\n\t\tif (soap->error || soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); } if (has_getter(typ)) fprintf(fout, "\n\t\tif (a->get(soap))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}\n\telse\n\t{\t"); if (is_attachment(typ)) fprintf(fout, "\n#ifndef WITH_LEANER\n\t\tif (*soap->href != '#')\n\t\t{\tif (soap_attachment_forward(soap, &a->__ptr, &a->__size, &a->id, &a->type, &a->options))\n\t\t\t\treturn NULL;\n\t\t}\n\t\telse\n#endif\n\t\t\t"); if (typ->type == Tclass || (!cflag && typ->type == Tstruct)) fprintf(fout, "a = (%s)soap_id_forward(soap, soap->href, (void*)a, 0, %s, %s, sizeof(%s), 0, %s_finsert, %s_fbase);", c_type_id(typ, "*"), soap_type(typ), soap_type(typ), c_type(typ), prefix, prefix); else fprintf(fout, "a = (%s)soap_id_forward(soap, soap->href, (void*)a, 0, %s, %s, sizeof(%s), 0, NULL, NULL);", c_type_id(typ, "*"), soap_type(typ), soap_type(typ), c_type(typ)); fprintf(fout, "\n\t\tif (soap->body && soap_element_end_in(soap, tag))\n\t\t\treturn NULL;"); fprintf(fout, "\n\t}"); fprintf(fout, "\n\treturn a;\n}"); } const char * cstring(const char *s, int q) { size_t n; char *t; const char *r; for (n = 0, r = s; *r; n++, r++) { if (*r == '"' || *r == '\\') n++; else if (*r < 32) n += 3; } r = t = (char*)emalloc(n + 2*q + 1); if (q) *t++ = '"'; for (; *s; s++) { if (*s == '"' || *s == '\\') { *t++ = '\\'; *t++ = *s; } else if (*s < 32) { sprintf(t, "\\%03o", (unsigned int)(unsigned char)*s); t += 4; } else *t++ = *s; } if (q) *t++ = '"'; *t = '\0'; return r; } const char * xstring(const char *s) { size_t n; char *t; const char *r; for (n = 0, r = s; *r; n++, r++) { if (*r < 32 || *r >= 127) n += 4; else if (*r == '<' || *r == '>') n += 3; else if (*r == '&') n += 4; else if (*r == '"') n += 5; else if (*r == '\\') n += 1; } r = t = (char*)emalloc(n + 1); for (; *s; s++) { if (*s < 32 || *s >= 127) { sprintf(t, "&#%.2x;", (unsigned char)*s); t += 5; } else if (*s == '<') { strcpy(t, "<"); t += 4; } else if (*s == '>') { strcpy(t, ">"); t += 4; } else if (*s == '&') { strcpy(t, "&"); t += 5; } else if (*s == '"') { strcpy(t, """); t += 6; } else if (*s == '\\') { strcpy(t, "\\\\"); t += 2; } else *t++ = *s; } *t = '\0'; return r; } void set_namespace(const char *id) { namespaceid = id; if (id) { const char *s = id; int h = 0; while (*s) h = 65599*h + *s++; if (h == 0) h = 1; h <<= 12; /* permits 4096 unique types */ if (h < 0) h = -h; typeNO = h; } } gsoap-2.8.60/gsoap/Makefile.in0000644000175000017500000016104213227173555015454 0ustar ellertellert# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = gsoap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" \ "$(DESTDIR)$(includedir)" LIBRARIES = $(lib_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libgsoap___a_AR = $(AR) $(ARFLAGS) libgsoap___a_LIBADD = am_libgsoap___a_OBJECTS = libgsoap___a-stdsoap2_cpp.$(OBJEXT) \ libgsoap___a-dom_cpp.$(OBJEXT) libgsoap___a_OBJECTS = $(am_libgsoap___a_OBJECTS) libgsoap_a_AR = $(AR) $(ARFLAGS) libgsoap_a_LIBADD = am_libgsoap_a_OBJECTS = libgsoap_a-stdsoap2.$(OBJEXT) \ libgsoap_a-dom.$(OBJEXT) libgsoap_a_OBJECTS = $(am_libgsoap_a_OBJECTS) libgsoapck___a_AR = $(AR) $(ARFLAGS) libgsoapck___a_LIBADD = am_libgsoapck___a_OBJECTS = libgsoapck___a-stdsoap2_ck_cpp.$(OBJEXT) \ libgsoapck___a-dom_cpp.$(OBJEXT) libgsoapck___a_OBJECTS = $(am_libgsoapck___a_OBJECTS) libgsoapck_a_AR = $(AR) $(ARFLAGS) libgsoapck_a_LIBADD = am_libgsoapck_a_OBJECTS = libgsoapck_a-stdsoap2_ck.$(OBJEXT) \ libgsoapck_a-dom.$(OBJEXT) libgsoapck_a_OBJECTS = $(am_libgsoapck_a_OBJECTS) libgsoapssl___a_AR = $(AR) $(ARFLAGS) libgsoapssl___a_LIBADD = am_libgsoapssl___a_OBJECTS = \ libgsoapssl___a-stdsoap2_ssl_cpp.$(OBJEXT) \ libgsoapssl___a-dom_cpp.$(OBJEXT) libgsoapssl___a_OBJECTS = $(am_libgsoapssl___a_OBJECTS) libgsoapssl_a_AR = $(AR) $(ARFLAGS) libgsoapssl_a_LIBADD = am_libgsoapssl_a_OBJECTS = libgsoapssl_a-stdsoap2_ssl.$(OBJEXT) \ libgsoapssl_a-dom.$(OBJEXT) libgsoapssl_a_OBJECTS = $(am_libgsoapssl_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libgsoap___a_SOURCES) $(libgsoap_a_SOURCES) \ $(libgsoapck___a_SOURCES) $(libgsoapck_a_SOURCES) \ $(libgsoapssl___a_SOURCES) $(libgsoapssl_a_SOURCES) DIST_SOURCES = $(libgsoap___a_SOURCES) $(libgsoap_a_SOURCES) \ $(libgsoapck___a_SOURCES) $(libgsoapck_a_SOURCES) \ $(libgsoapssl___a_SOURCES) $(libgsoapssl_a_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(nobase_pkgdata_DATA) HEADERS = $(include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON_DEFINE = @BISON_DEFINE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ENABLE_SAMPLES = @ENABLE_SAMPLES@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_DEFINE = @LEX_DEFINE@ LEX_FLAGS = @LEX_FLAGS@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SAMPLE_DIRS = @SAMPLE_DIRS@ SAMPLE_EXTRA_LIBS = @SAMPLE_EXTRA_LIBS@ SAMPLE_INCLUDES = @SAMPLE_INCLUDES@ SAMPLE_SSL_LIBS = @SAMPLE_SSL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SOAPCPP2_DEBUG = @SOAPCPP2_DEBUG@ SOAPCPP2_IMPORTPATH = @SOAPCPP2_IMPORTPATH@ SOAPCPP2_IPV6 = @SOAPCPP2_IPV6@ SOAPCPP2_NONAMESPACES = @SOAPCPP2_NONAMESPACES@ SOAPCPP2_NO_C_LOCALE = @SOAPCPP2_NO_C_LOCALE@ STRIP = @STRIP@ VERSION = @VERSION@ WITH_OPENSSL = @WITH_OPENSSL@ WSDL2H_EXTRA_FLAGS = @WSDL2H_EXTRA_FLAGS@ WSDL2H_EXTRA_LIBS = @WSDL2H_EXTRA_LIBS@ WSDL2H_IMPORTPATH = @WSDL2H_IMPORTPATH@ WSDL2H_SOAP_CPP_LIB = @WSDL2H_SOAP_CPP_LIB@ YACC = @YACC@ YACC_LIB = @YACC_LIB@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ platform = @platform@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = subdir-objects foreign 1.4 SUBDIRS = . src wsdl @SAMPLE_DIRS@ CLEANFILES = soapcpp2 wsdl2h stdsoap2_cpp.cpp stdsoap2_ck.c stdsoap2_ck_cpp.cpp stdsoap2_ssl.c stdsoap2_ssl_cpp.cpp dom_cpp.cpp AM_CXXFLAGS = $(SOAPCPP2_DEBUG) -D$(platform) AM_CFLAGS = $(SOAPCPP2_DEBUG) -D$(platform) # Install all soapcpp2 and wsdl2h files into ${prefix}/share/gsoap nobase_pkgdata_DATA = $(top_srcdir)/gsoap/import/* $(top_srcdir)/gsoap/plugin/* $(top_srcdir)/gsoap/WS/* $(top_srcdir)/gsoap/custom/* $(top_srcdir)/gsoap/extras/* lib_LIBRARIES = libgsoap.a libgsoap++.a libgsoapck.a libgsoapck++.a libgsoapssl.a libgsoapssl++.a libgsoap_a_SOURCES = stdsoap2.c dom.c libgsoap_a_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) -D$(platform) libgsoap___a_SOURCES = stdsoap2_cpp.cpp dom_cpp.cpp libgsoap___a_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) -D$(platform) libgsoapck_a_SOURCES = stdsoap2_ck.c dom.c libgsoapck_a_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) -D$(platform) -DWITH_COOKIES libgsoapck___a_SOURCES = stdsoap2_ck_cpp.cpp dom_cpp.cpp libgsoapck___a_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) -D$(platform) -DWITH_COOKIES libgsoapssl_a_SOURCES = stdsoap2_ssl.c dom.c libgsoapssl_a_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) -D$(platform) $(WSDL2H_EXTRA_FLAGS) -DWITH_DOM -DWITH_COOKIES libgsoapssl___a_SOURCES = stdsoap2_ssl_cpp.cpp dom_cpp.cpp libgsoapssl___a_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) -D$(platform) $(WSDL2H_EXTRA_FLAGS) -DWITH_DOM -DWITH_COOKIES BUILT_SOURCES = stdsoap2_cpp.cpp dom_cpp.cpp stdsoap2_ck.c stdsoap2_ck_cpp.cpp stdsoap2_ssl.c stdsoap2_ssl_cpp.cpp include_HEADERS = stdsoap2.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .cpp .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gsoap/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign gsoap/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLIBRARIES: $(lib_LIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } @$(POST_INSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ if test -f $$p; then \ $(am__strip_dir) \ echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \ ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \ else :; fi; \ done uninstall-libLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir) clean-libLIBRARIES: -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) libgsoap++.a: $(libgsoap___a_OBJECTS) $(libgsoap___a_DEPENDENCIES) $(EXTRA_libgsoap___a_DEPENDENCIES) $(AM_V_at)-rm -f libgsoap++.a $(AM_V_AR)$(libgsoap___a_AR) libgsoap++.a $(libgsoap___a_OBJECTS) $(libgsoap___a_LIBADD) $(AM_V_at)$(RANLIB) libgsoap++.a libgsoap.a: $(libgsoap_a_OBJECTS) $(libgsoap_a_DEPENDENCIES) $(EXTRA_libgsoap_a_DEPENDENCIES) $(AM_V_at)-rm -f libgsoap.a $(AM_V_AR)$(libgsoap_a_AR) libgsoap.a $(libgsoap_a_OBJECTS) $(libgsoap_a_LIBADD) $(AM_V_at)$(RANLIB) libgsoap.a libgsoapck++.a: $(libgsoapck___a_OBJECTS) $(libgsoapck___a_DEPENDENCIES) $(EXTRA_libgsoapck___a_DEPENDENCIES) $(AM_V_at)-rm -f libgsoapck++.a $(AM_V_AR)$(libgsoapck___a_AR) libgsoapck++.a $(libgsoapck___a_OBJECTS) $(libgsoapck___a_LIBADD) $(AM_V_at)$(RANLIB) libgsoapck++.a libgsoapck.a: $(libgsoapck_a_OBJECTS) $(libgsoapck_a_DEPENDENCIES) $(EXTRA_libgsoapck_a_DEPENDENCIES) $(AM_V_at)-rm -f libgsoapck.a $(AM_V_AR)$(libgsoapck_a_AR) libgsoapck.a $(libgsoapck_a_OBJECTS) $(libgsoapck_a_LIBADD) $(AM_V_at)$(RANLIB) libgsoapck.a libgsoapssl++.a: $(libgsoapssl___a_OBJECTS) $(libgsoapssl___a_DEPENDENCIES) $(EXTRA_libgsoapssl___a_DEPENDENCIES) $(AM_V_at)-rm -f libgsoapssl++.a $(AM_V_AR)$(libgsoapssl___a_AR) libgsoapssl++.a $(libgsoapssl___a_OBJECTS) $(libgsoapssl___a_LIBADD) $(AM_V_at)$(RANLIB) libgsoapssl++.a libgsoapssl.a: $(libgsoapssl_a_OBJECTS) $(libgsoapssl_a_DEPENDENCIES) $(EXTRA_libgsoapssl_a_DEPENDENCIES) $(AM_V_at)-rm -f libgsoapssl.a $(AM_V_AR)$(libgsoapssl_a_AR) libgsoapssl.a $(libgsoapssl_a_OBJECTS) $(libgsoapssl_a_LIBADD) $(AM_V_at)$(RANLIB) libgsoapssl.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoap___a-dom_cpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoap___a-stdsoap2_cpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoap_a-dom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoap_a-stdsoap2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapck___a-dom_cpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapck_a-dom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapck_a-stdsoap2_ck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapssl___a-dom_cpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapssl_a-dom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` libgsoap_a-stdsoap2.o: stdsoap2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -MT libgsoap_a-stdsoap2.o -MD -MP -MF $(DEPDIR)/libgsoap_a-stdsoap2.Tpo -c -o libgsoap_a-stdsoap2.o `test -f 'stdsoap2.c' || echo '$(srcdir)/'`stdsoap2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap_a-stdsoap2.Tpo $(DEPDIR)/libgsoap_a-stdsoap2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdsoap2.c' object='libgsoap_a-stdsoap2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -c -o libgsoap_a-stdsoap2.o `test -f 'stdsoap2.c' || echo '$(srcdir)/'`stdsoap2.c libgsoap_a-stdsoap2.obj: stdsoap2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -MT libgsoap_a-stdsoap2.obj -MD -MP -MF $(DEPDIR)/libgsoap_a-stdsoap2.Tpo -c -o libgsoap_a-stdsoap2.obj `if test -f 'stdsoap2.c'; then $(CYGPATH_W) 'stdsoap2.c'; else $(CYGPATH_W) '$(srcdir)/stdsoap2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap_a-stdsoap2.Tpo $(DEPDIR)/libgsoap_a-stdsoap2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdsoap2.c' object='libgsoap_a-stdsoap2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -c -o libgsoap_a-stdsoap2.obj `if test -f 'stdsoap2.c'; then $(CYGPATH_W) 'stdsoap2.c'; else $(CYGPATH_W) '$(srcdir)/stdsoap2.c'; fi` libgsoap_a-dom.o: dom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -MT libgsoap_a-dom.o -MD -MP -MF $(DEPDIR)/libgsoap_a-dom.Tpo -c -o libgsoap_a-dom.o `test -f 'dom.c' || echo '$(srcdir)/'`dom.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap_a-dom.Tpo $(DEPDIR)/libgsoap_a-dom.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dom.c' object='libgsoap_a-dom.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -c -o libgsoap_a-dom.o `test -f 'dom.c' || echo '$(srcdir)/'`dom.c libgsoap_a-dom.obj: dom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -MT libgsoap_a-dom.obj -MD -MP -MF $(DEPDIR)/libgsoap_a-dom.Tpo -c -o libgsoap_a-dom.obj `if test -f 'dom.c'; then $(CYGPATH_W) 'dom.c'; else $(CYGPATH_W) '$(srcdir)/dom.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap_a-dom.Tpo $(DEPDIR)/libgsoap_a-dom.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dom.c' object='libgsoap_a-dom.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap_a_CFLAGS) $(CFLAGS) -c -o libgsoap_a-dom.obj `if test -f 'dom.c'; then $(CYGPATH_W) 'dom.c'; else $(CYGPATH_W) '$(srcdir)/dom.c'; fi` libgsoapck_a-stdsoap2_ck.o: stdsoap2_ck.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -MT libgsoapck_a-stdsoap2_ck.o -MD -MP -MF $(DEPDIR)/libgsoapck_a-stdsoap2_ck.Tpo -c -o libgsoapck_a-stdsoap2_ck.o `test -f 'stdsoap2_ck.c' || echo '$(srcdir)/'`stdsoap2_ck.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck_a-stdsoap2_ck.Tpo $(DEPDIR)/libgsoapck_a-stdsoap2_ck.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdsoap2_ck.c' object='libgsoapck_a-stdsoap2_ck.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -c -o libgsoapck_a-stdsoap2_ck.o `test -f 'stdsoap2_ck.c' || echo '$(srcdir)/'`stdsoap2_ck.c libgsoapck_a-stdsoap2_ck.obj: stdsoap2_ck.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -MT libgsoapck_a-stdsoap2_ck.obj -MD -MP -MF $(DEPDIR)/libgsoapck_a-stdsoap2_ck.Tpo -c -o libgsoapck_a-stdsoap2_ck.obj `if test -f 'stdsoap2_ck.c'; then $(CYGPATH_W) 'stdsoap2_ck.c'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ck.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck_a-stdsoap2_ck.Tpo $(DEPDIR)/libgsoapck_a-stdsoap2_ck.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdsoap2_ck.c' object='libgsoapck_a-stdsoap2_ck.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -c -o libgsoapck_a-stdsoap2_ck.obj `if test -f 'stdsoap2_ck.c'; then $(CYGPATH_W) 'stdsoap2_ck.c'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ck.c'; fi` libgsoapck_a-dom.o: dom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -MT libgsoapck_a-dom.o -MD -MP -MF $(DEPDIR)/libgsoapck_a-dom.Tpo -c -o libgsoapck_a-dom.o `test -f 'dom.c' || echo '$(srcdir)/'`dom.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck_a-dom.Tpo $(DEPDIR)/libgsoapck_a-dom.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dom.c' object='libgsoapck_a-dom.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -c -o libgsoapck_a-dom.o `test -f 'dom.c' || echo '$(srcdir)/'`dom.c libgsoapck_a-dom.obj: dom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -MT libgsoapck_a-dom.obj -MD -MP -MF $(DEPDIR)/libgsoapck_a-dom.Tpo -c -o libgsoapck_a-dom.obj `if test -f 'dom.c'; then $(CYGPATH_W) 'dom.c'; else $(CYGPATH_W) '$(srcdir)/dom.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck_a-dom.Tpo $(DEPDIR)/libgsoapck_a-dom.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dom.c' object='libgsoapck_a-dom.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck_a_CFLAGS) $(CFLAGS) -c -o libgsoapck_a-dom.obj `if test -f 'dom.c'; then $(CYGPATH_W) 'dom.c'; else $(CYGPATH_W) '$(srcdir)/dom.c'; fi` libgsoapssl_a-stdsoap2_ssl.o: stdsoap2_ssl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -MT libgsoapssl_a-stdsoap2_ssl.o -MD -MP -MF $(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Tpo -c -o libgsoapssl_a-stdsoap2_ssl.o `test -f 'stdsoap2_ssl.c' || echo '$(srcdir)/'`stdsoap2_ssl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Tpo $(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdsoap2_ssl.c' object='libgsoapssl_a-stdsoap2_ssl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -c -o libgsoapssl_a-stdsoap2_ssl.o `test -f 'stdsoap2_ssl.c' || echo '$(srcdir)/'`stdsoap2_ssl.c libgsoapssl_a-stdsoap2_ssl.obj: stdsoap2_ssl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -MT libgsoapssl_a-stdsoap2_ssl.obj -MD -MP -MF $(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Tpo -c -o libgsoapssl_a-stdsoap2_ssl.obj `if test -f 'stdsoap2_ssl.c'; then $(CYGPATH_W) 'stdsoap2_ssl.c'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ssl.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Tpo $(DEPDIR)/libgsoapssl_a-stdsoap2_ssl.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdsoap2_ssl.c' object='libgsoapssl_a-stdsoap2_ssl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -c -o libgsoapssl_a-stdsoap2_ssl.obj `if test -f 'stdsoap2_ssl.c'; then $(CYGPATH_W) 'stdsoap2_ssl.c'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ssl.c'; fi` libgsoapssl_a-dom.o: dom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -MT libgsoapssl_a-dom.o -MD -MP -MF $(DEPDIR)/libgsoapssl_a-dom.Tpo -c -o libgsoapssl_a-dom.o `test -f 'dom.c' || echo '$(srcdir)/'`dom.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl_a-dom.Tpo $(DEPDIR)/libgsoapssl_a-dom.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dom.c' object='libgsoapssl_a-dom.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -c -o libgsoapssl_a-dom.o `test -f 'dom.c' || echo '$(srcdir)/'`dom.c libgsoapssl_a-dom.obj: dom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -MT libgsoapssl_a-dom.obj -MD -MP -MF $(DEPDIR)/libgsoapssl_a-dom.Tpo -c -o libgsoapssl_a-dom.obj `if test -f 'dom.c'; then $(CYGPATH_W) 'dom.c'; else $(CYGPATH_W) '$(srcdir)/dom.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl_a-dom.Tpo $(DEPDIR)/libgsoapssl_a-dom.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dom.c' object='libgsoapssl_a-dom.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl_a_CFLAGS) $(CFLAGS) -c -o libgsoapssl_a-dom.obj `if test -f 'dom.c'; then $(CYGPATH_W) 'dom.c'; else $(CYGPATH_W) '$(srcdir)/dom.c'; fi` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` libgsoap___a-stdsoap2_cpp.o: stdsoap2_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoap___a-stdsoap2_cpp.o -MD -MP -MF $(DEPDIR)/libgsoap___a-stdsoap2_cpp.Tpo -c -o libgsoap___a-stdsoap2_cpp.o `test -f 'stdsoap2_cpp.cpp' || echo '$(srcdir)/'`stdsoap2_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap___a-stdsoap2_cpp.Tpo $(DEPDIR)/libgsoap___a-stdsoap2_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stdsoap2_cpp.cpp' object='libgsoap___a-stdsoap2_cpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoap___a-stdsoap2_cpp.o `test -f 'stdsoap2_cpp.cpp' || echo '$(srcdir)/'`stdsoap2_cpp.cpp libgsoap___a-stdsoap2_cpp.obj: stdsoap2_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoap___a-stdsoap2_cpp.obj -MD -MP -MF $(DEPDIR)/libgsoap___a-stdsoap2_cpp.Tpo -c -o libgsoap___a-stdsoap2_cpp.obj `if test -f 'stdsoap2_cpp.cpp'; then $(CYGPATH_W) 'stdsoap2_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_cpp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap___a-stdsoap2_cpp.Tpo $(DEPDIR)/libgsoap___a-stdsoap2_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stdsoap2_cpp.cpp' object='libgsoap___a-stdsoap2_cpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoap___a-stdsoap2_cpp.obj `if test -f 'stdsoap2_cpp.cpp'; then $(CYGPATH_W) 'stdsoap2_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_cpp.cpp'; fi` libgsoap___a-dom_cpp.o: dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoap___a-dom_cpp.o -MD -MP -MF $(DEPDIR)/libgsoap___a-dom_cpp.Tpo -c -o libgsoap___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo '$(srcdir)/'`dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap___a-dom_cpp.Tpo $(DEPDIR)/libgsoap___a-dom_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_cpp.cpp' object='libgsoap___a-dom_cpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoap___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo '$(srcdir)/'`dom_cpp.cpp libgsoap___a-dom_cpp.obj: dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoap___a-dom_cpp.obj -MD -MP -MF $(DEPDIR)/libgsoap___a-dom_cpp.Tpo -c -o libgsoap___a-dom_cpp.obj `if test -f 'dom_cpp.cpp'; then $(CYGPATH_W) 'dom_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_cpp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoap___a-dom_cpp.Tpo $(DEPDIR)/libgsoap___a-dom_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_cpp.cpp' object='libgsoap___a-dom_cpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoap___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoap___a-dom_cpp.obj `if test -f 'dom_cpp.cpp'; then $(CYGPATH_W) 'dom_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_cpp.cpp'; fi` libgsoapck___a-stdsoap2_ck_cpp.o: stdsoap2_ck_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapck___a-stdsoap2_ck_cpp.o -MD -MP -MF $(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Tpo -c -o libgsoapck___a-stdsoap2_ck_cpp.o `test -f 'stdsoap2_ck_cpp.cpp' || echo '$(srcdir)/'`stdsoap2_ck_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Tpo $(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stdsoap2_ck_cpp.cpp' object='libgsoapck___a-stdsoap2_ck_cpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapck___a-stdsoap2_ck_cpp.o `test -f 'stdsoap2_ck_cpp.cpp' || echo '$(srcdir)/'`stdsoap2_ck_cpp.cpp libgsoapck___a-stdsoap2_ck_cpp.obj: stdsoap2_ck_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapck___a-stdsoap2_ck_cpp.obj -MD -MP -MF $(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Tpo -c -o libgsoapck___a-stdsoap2_ck_cpp.obj `if test -f 'stdsoap2_ck_cpp.cpp'; then $(CYGPATH_W) 'stdsoap2_ck_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ck_cpp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Tpo $(DEPDIR)/libgsoapck___a-stdsoap2_ck_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stdsoap2_ck_cpp.cpp' object='libgsoapck___a-stdsoap2_ck_cpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapck___a-stdsoap2_ck_cpp.obj `if test -f 'stdsoap2_ck_cpp.cpp'; then $(CYGPATH_W) 'stdsoap2_ck_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ck_cpp.cpp'; fi` libgsoapck___a-dom_cpp.o: dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapck___a-dom_cpp.o -MD -MP -MF $(DEPDIR)/libgsoapck___a-dom_cpp.Tpo -c -o libgsoapck___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo '$(srcdir)/'`dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck___a-dom_cpp.Tpo $(DEPDIR)/libgsoapck___a-dom_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_cpp.cpp' object='libgsoapck___a-dom_cpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapck___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo '$(srcdir)/'`dom_cpp.cpp libgsoapck___a-dom_cpp.obj: dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapck___a-dom_cpp.obj -MD -MP -MF $(DEPDIR)/libgsoapck___a-dom_cpp.Tpo -c -o libgsoapck___a-dom_cpp.obj `if test -f 'dom_cpp.cpp'; then $(CYGPATH_W) 'dom_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_cpp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapck___a-dom_cpp.Tpo $(DEPDIR)/libgsoapck___a-dom_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_cpp.cpp' object='libgsoapck___a-dom_cpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapck___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapck___a-dom_cpp.obj `if test -f 'dom_cpp.cpp'; then $(CYGPATH_W) 'dom_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_cpp.cpp'; fi` libgsoapssl___a-stdsoap2_ssl_cpp.o: stdsoap2_ssl_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapssl___a-stdsoap2_ssl_cpp.o -MD -MP -MF $(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Tpo -c -o libgsoapssl___a-stdsoap2_ssl_cpp.o `test -f 'stdsoap2_ssl_cpp.cpp' || echo '$(srcdir)/'`stdsoap2_ssl_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Tpo $(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stdsoap2_ssl_cpp.cpp' object='libgsoapssl___a-stdsoap2_ssl_cpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapssl___a-stdsoap2_ssl_cpp.o `test -f 'stdsoap2_ssl_cpp.cpp' || echo '$(srcdir)/'`stdsoap2_ssl_cpp.cpp libgsoapssl___a-stdsoap2_ssl_cpp.obj: stdsoap2_ssl_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapssl___a-stdsoap2_ssl_cpp.obj -MD -MP -MF $(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Tpo -c -o libgsoapssl___a-stdsoap2_ssl_cpp.obj `if test -f 'stdsoap2_ssl_cpp.cpp'; then $(CYGPATH_W) 'stdsoap2_ssl_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ssl_cpp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Tpo $(DEPDIR)/libgsoapssl___a-stdsoap2_ssl_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stdsoap2_ssl_cpp.cpp' object='libgsoapssl___a-stdsoap2_ssl_cpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapssl___a-stdsoap2_ssl_cpp.obj `if test -f 'stdsoap2_ssl_cpp.cpp'; then $(CYGPATH_W) 'stdsoap2_ssl_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/stdsoap2_ssl_cpp.cpp'; fi` libgsoapssl___a-dom_cpp.o: dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapssl___a-dom_cpp.o -MD -MP -MF $(DEPDIR)/libgsoapssl___a-dom_cpp.Tpo -c -o libgsoapssl___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo '$(srcdir)/'`dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl___a-dom_cpp.Tpo $(DEPDIR)/libgsoapssl___a-dom_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_cpp.cpp' object='libgsoapssl___a-dom_cpp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapssl___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo '$(srcdir)/'`dom_cpp.cpp libgsoapssl___a-dom_cpp.obj: dom_cpp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -MT libgsoapssl___a-dom_cpp.obj -MD -MP -MF $(DEPDIR)/libgsoapssl___a-dom_cpp.Tpo -c -o libgsoapssl___a-dom_cpp.obj `if test -f 'dom_cpp.cpp'; then $(CYGPATH_W) 'dom_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_cpp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgsoapssl___a-dom_cpp.Tpo $(DEPDIR)/libgsoapssl___a-dom_cpp.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='dom_cpp.cpp' object='libgsoapssl___a-dom_cpp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsoapssl___a_CXXFLAGS) $(CXXFLAGS) -c -o libgsoapssl___a-dom_cpp.obj `if test -f 'dom_cpp.cpp'; then $(CYGPATH_W) 'dom_cpp.cpp'; else $(CYGPATH_W) '$(srcdir)/dom_cpp.cpp'; fi` install-nobase_pkgdataDATA: $(nobase_pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(nobase_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pkgdatadir)/$$dir" || exit $$?; }; \ done uninstall-nobase_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-libLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-includeHEADERS install-nobase_pkgdataDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLIBRARIES \ uninstall-nobase_pkgdataDATA .MAKE: $(am__recursive_targets) all check install install-am \ install-data-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLIBRARIES cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-hook install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLIBRARIES install-man install-nobase_pkgdataDATA \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-includeHEADERS uninstall-libLIBRARIES \ uninstall-nobase_pkgdataDATA .PRECIOUS: Makefile stdsoap2_ck.c: stdsoap2.cpp $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ck.c stdsoap2_cpp.cpp: stdsoap2.cpp $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_cpp.cpp stdsoap2_ck_cpp.cpp: stdsoap2.cpp $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ck_cpp.cpp stdsoap2_ssl.c: stdsoap2.cpp $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ssl.c stdsoap2_ssl_cpp.cpp: stdsoap2.cpp $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ssl_cpp.cpp dom_cpp.cpp: dom.cpp $(LN_S) -f $(top_srcdir)/gsoap/dom.cpp dom_cpp.cpp install-data-hook: $(LN_S) -f $(top_builddir)/gsoap/src/soapcpp2 $(top_builddir)/gsoap/soapcpp2 || echo "ok, link already exists". $(LN_S) -f $(top_builddir)/gsoap/wsdl/wsdl2h $(top_builddir)/gsoap/wsdl2h || echo "ok, link already exists". # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gsoap-2.8.60/gsoap/uddi2/0000755000175000017500000000000013234023226014375 5ustar ellertellertgsoap-2.8.60/gsoap/uddi2/uddi_v2.h0000644000175000017500000051611313227173557016130 0ustar ellertellert/** @mainpage gSOAP UDDI v2 Universal Description, Discovery and Integration, or UDDI, is the name of a group of web-based registries that expose information about a business or other entity and its technical interfaces. See the UDDI v2 specification @url http://uddi.org/pubs/ProgrammersAPI_v2.htm for more details. @section UDDI2_CLASSES Classes See Related Pages for examples. UDDI Inquire classes - @ref uddi2__find_USCOREbinding - @ref uddi2__find_USCOREbusiness - @ref uddi2__find_USCORErelatedBusinesses - @ref uddi2__find_USCOREservice - @ref uddi2__find_USCOREtModel - @ref uddi2__get_USCOREbindingDetail - @ref uddi2__get_USCOREbusinessDetail - @ref uddi2__get_USCOREbusinessDetailExt - @ref uddi2__get_USCOREserviceDetail - @ref uddi2__get_USCOREtModelDetail UDDI Publish classes - @ref uddi2__add_USCOREpublisherAssertions - @ref uddi2__delete_USCOREbinding - @ref uddi2__delete_USCOREbusiness - @ref uddi2__delete_USCOREservice - @ref uddi2__delete_USCOREtModel - @ref uddi2__delete_USCOREpublisherAssertions - @ref uddi2__discard_USCOREauthToken - @ref uddi2__get_USCOREassertionStatusReport - @ref uddi2__get_USCOREauthToken - @ref uddi2__get_USCOREpublisherAssertions - @ref uddi2__get_USCOREregisteredInfo - @ref uddi2__save_USCOREbinding - @ref uddi2__save_USCOREbusiness - @ref uddi2__save_USCOREservice - @ref uddi2__save_USCOREtModel - @ref uddi2__set_USCOREpublisherAssertions @section UDDI2_BINDINGS Binding Reference - @ref InquireSoap - @ref PublishSoap */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbinding @brief Represents a request to locate bindings that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137712 */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbinding class. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the find_USCOREbinding class using the specified tModel key. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREbinding class using the specified tModel keys. */ /** @fn uddi2__bindingDetail* uddi2__find_USCOREbinding::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to find binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbusiness @brief Represents a request to locate businesses that meet specific requirements. When the send method is called, the instance returns a uddi2__businessList object that contains a list of business that matched the search criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137713 See also @ref example2. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified name of the requested business. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified category references. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified tModel keys. */ /** @fn uddi2__businessList *uddi2__find_USCOREbusiness::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessList object or NULL on error Send a request to a UDDI server to find a list of businesses. See also @ref example2. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_relatedBusinesses // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCORErelatedBusinesses @brief Represents a request to locate businesses that are related to a specific business. When the send method is called, the instance returns a uddi2__relatedBusinessList object that contains a list of business that matched the relationship set. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137714 */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCORErelatedBusiness class. */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the find_USCORErelatedBusiness class using the specified business key. */ /** @fn uddi2__relatedBusinessesList *uddi2__find_USCORErelatedBusinesses::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__relatedBusinessList object or NULL on error Send a request to a UDDI server to find a list of related businesses. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREservice @brief Represents a request to locate services that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137715 See also @ref example1. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREservice class. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the service Creates an instance of the find_USCOREservice class using the specified name. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREservice class using the specified category keys. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREservice class using the specified tModel keys. */ /** @fn uddi2__serviceList* uddi2__find_USCOREservice::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceList object or NULL on error Send a request to a UDDI server to find a list of services. See also @ref example1. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREtModel @brief Represents a request to locate a list of tModel entries that match a set of specific criteria. The result of a search is a uddi2__tModelList object that contains information about registered tModel data that matches the criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137716 */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREtModel class. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the tModel Creates an instance of the find_USCOREtModel class using the specified tModel name. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREtModel class using the specified category keys. */ /** @fn uddi2__tModelList* uddi2__find_USCOREtModel::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelList object or NULL on error Send a request to a UDDI server to find a tModelList. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_bindingDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbindingDetail @brief Represents a request to get binding details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137717 */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbindingDetail class. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey string Creates an instance of the get_USCOREbindingDetail class using the specified binding key. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of key strings Creates an instance of the get_USCOREbindingDetail class using the specified collection of binding keys. */ /** @fn uddi2__bindingDetail* uddi2__get_USCOREbindingDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to get the binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetail @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137718 */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetail class. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetail class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetail class using the specified collection of business keys. */ /** @fn uddi2__businessDetail* uddi2__get_USCOREbusinessDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetailExt // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetailExt @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137719 */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetailExt class. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetailExt class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetailExt class using the specified collection of business keys. */ /** @fn uddi2__businessDetailExt* uddi2__get_USCOREbusinessDetailExt::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetailExt object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_serviceDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREserviceDetail @brief Represents a request to get service details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137720 */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREserviceDetail class. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey string Creates an instance of the get_USCOREserviceDetail class using the specified service key. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of key strings Creates an instance of the get_USCOREserviceDetail class using the specified collection of service keys. */ /** @fn uddi2__serviceDetail* uddi2__get_USCOREserviceDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to get the service details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_tModelDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREtModelDetail @brief Represents a request to get tModel details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137721 */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREtModelDetail class. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the get_USCOREtModelDetail class using the specified tModel key. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of key strings Creates an instance of the get_USCOREtModelDetail class using the specified collection of tModel keys. */ /** @fn uddi2__tModelDetail* uddi2__get_USCOREtModelDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to get the tModel details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:add_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__add_USCOREpublisherAssertions @brief Represents a request to add one or more publisher assertions to the assertion collection for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137731 */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the add_USCOREpublisherAssertions class. */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the add_USCOREpublisherAssertions class using the specified publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__add_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI server to add one or more publisher assertions to the assertion collection for an individual publisher. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbinding @brief Represents a request to delete a binding that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137732 */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap) @brief Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey a binding key string Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of binding keys Creates an instance of the delete_USCOREbinding class using the specified binding keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a binding that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbusiness @brief Represents a request to delete a business that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137733 */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREbusiness class. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey a business key string Creates an instance of the delete_USCOREbusiness class using the specified business key. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of business keys Creates an instance of the delete_USCOREbusiness class using the specified business keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a business that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREservice @brief Represents a request to delete a service that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137735 */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREservice class. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey a service key string Creates an instance of the delete_USCOREservice class using the specified service key. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of service keys Creates an instance of the delete_USCOREservice class using the specified service keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a service that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREtModel @brief Represents a request to delete a tModel that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137736 */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREtModel class. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey a tModel key string Creates an instance of the delete_USCOREtModel class using the specified tModel key. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel keys Creates an instance of the delete_USCOREtModel class using the specified tModel keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a tModel that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREpublisherAssertions @brief Represents a request to delete publisher assertions meeting the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137734 */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREpublisherAssertions class. */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions a collection of publisher assertions Creates an instance of the delete_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete publisher assertions meeting the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:discard_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__discard_USCOREauthToken @brief Represents a request to discard an authorization token obtained with the get_USCOREauthToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137737 */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREauthToken class. */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap, const char *authInfo) @brief @param[in] soap gSOAP context @param[in] authInfo authorization token provided by the UDDI server Creates an instance of the delete_USCOREauthToken class using the specified authentication token string. */ /** @fn uddi2__dispositionReport *uddi2__discard_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to discard an authentication token. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_assertionStatusReport // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREassertionStatusReport @brief Provides the ability to determine the status of current and outstanding publisher assertions. The results can be restricted by setting the completionStatus property. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137738 */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREassertionStatusReport class. */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap, const char *completionStatus) @brief @param[in] soap gSOAP context @param[in] completionStatus completion status string Creates an instance of the get_USCOREassertionStatusReport class using the specified completion status. */ /** @fn uddi2__assertionStatusReport *uddi2__get_USCOREassertionStatusReport::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__assertionStatusReport object or NULL on error Send a request to a UDDI service to get the status of current and outstanding publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREauthToken @brief Represents a request to obtain an authorization token, which is represented by the uddi2__authToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137739 */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREauthToken class. */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap, const char *userid, const char *passwd) @brief @param[in] soap gSOAP context @param[in] userid the user ID string @param[in] passwd the password string Creates an instance of the get_USCOREauthToken class using the specified user ID and password. */ /** @fn uddi2__authToken *uddi2__get_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__authToken object or NULL on error Send a request to a UDDI service to get a authorization token given a user ID and password. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREpublisherAssertions @brief Represents a request to obtain the full set of publisher assertions that are associated with an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137740 */ /** @fn uddi2__get_USCOREpublisherAssertions::uddi2__get_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREpublisherAssetions class. */ /** @fn uddi2__publisherAssertions *uddi2__get_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI service to get publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_registeredInfo // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREregisteredInfo @brief Represents a request to get all registered business entities and tModels controlled by an individual. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137741 */ /** @fn uddi2__get_USCOREregisteredInfo::uddi2__get_USCOREregisteredInfo(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREregisteredInfo class. */ /** @fn uddi2__registeredInfo *uddi2__get_USCOREregisteredInfo::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__registeredInfo object or NULL on error Send a request to a UDDI service to get all registered business entities and tModels controlled by an individual. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbinding @brief Represents a request to post binding information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137742 */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbinding class. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, uddi2__bindingTemplate &bindingTemplate) @brief @param[in] soap gSOAP context @param[in] bindingTemplate binding template Creates an instance of the save_USCOREbinding class using the specified binding template. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, std::vector bindingTemplates) @brief @param[in] soap gSOAP context @param[in] bindingTemplates collection of binding templates Creates an instance of the save_USCOREbinding class using the specified binding templates. */ /** @fn uddi2__bindingDetail *uddi2__save_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to post binding information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbusiness @brief Represents a request to post business information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137743 */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbusiness class. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, uddi2__businessEntity &businessEntity) @brief @param[in] soap gSOAP context @param[in] businessEntity business entity Creates an instance of the save_USCOREbusiness class using the specified business entity. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, std::vector businessEntities) @brief @param[in] soap gSOAP context @param[in] businessEntities collection of business entities Creates an instance of the save_USCOREbusiness class using the specified business entities. */ /** @fn uddi2__businessDetail *uddi2__save_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to post business information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREservice @brief Represents a request to post service information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137744 */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREservice class. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, uddi2__businessService &businessService) @brief @param[in] soap gSOAP context @param[in] businessService business service Creates an instance of the save_USCOREservice class using the specified service. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, std::vector businessServices) @brief @param[in] soap gSOAP context @param[in] businessServices collection of business services Creates an instance of the save_USCOREservice class using the specified services. */ /** @fn uddi2__serviceDetail *uddi2__save_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to post service information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREtModel @brief Represents a request to post tModel information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137745 */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREtModel class. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, uddi2__tModel &tModel) @brief @param[in] soap gSOAP context @param[in] tModel a tModel Creates an instance of the save_USCOREtModel class using the specified tModel. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, std::vector tModels) @brief @param[in] soap gSOAP context @param[in] tModels collection of tModels Creates an instance of the save_USCOREtModel class using the specified tModels. */ /** @fn uddi2__tModelDetail *uddi2__save_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:set_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__set_USCOREpublisherAssertions @brief Represents a request to modify the existing publisher assertions for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137746 */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the set_USCOREpublisherAssertions class. */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the set_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__publisherAssertions *uddi2__set_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // Code Examples // //////////////////////////////////////////////////////////////////////////////// /** @page example1 Code Example 1: Finding a service This example shows you how to find Web services. In this case, the example finds Web services with names that begin with the word "magic". @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "magic"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREservice fs(soap, search_string); // Send the request uddi2__serviceList *sl = fs.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!sl) soap_print_fault(soap, stderr); // If OK, report the service name(s) and unique identification keys else if (sl->serviceInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator si = sl->serviceInfos->serviceInfo.begin(); si != sl->serviceInfos->serviceInfo.end(); ++si) { // Report serviceKey and businessKey std::cout << "serviceKey=" << (*si)->serviceKey << std::endl << "businessKey=" << (*si)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*si)->name.begin(); n != (*si)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example1 example1.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example2 Code Example 2: Finding a business This example shows you how to find a business from a UDDI server. @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "xmethods"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREbusiness fb(soap, search_string); // Send the request uddi2__businessList *bl = fb.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!bl) soap_print_fault(soap, stderr); // If OK, report the business name(s) and unique identification keys else if (bl->businessInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator bi = bl->businessInfos->businessInfo.begin(); bi != bl->businessInfos->businessInfo.end(); ++bi) { // Report businessKey std::cout << "businessKey=" << (*bi)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*bi)->name.begin(); n != (*bi)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example2 example2.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example3 Code Example 3: Publishing a WSDL and service on XMethods This example shows you how to publish a Web service. In this case, the example template code obtains an authorization token, saves the tModel with the WSDL URL in the server, and saves the business service information in the server. @code #include "pubH.h" const char *server = "https://uddi.xmethods.net/publish"; const char *userid = "..."; // user ID to access UDDI server const char *passwd = "..."; // password to access UDDI server int main(int argc, char **argv) { // Create a gSOAP context struct soap *soap = soap_new(); // Setup SSL context (optional) to verify server's credentials if (soap_ssl_client_context(soap, SOAP_SSL_DEFAULT, NULL, NULL, "cacerts.pem", NULL, NULL)) { soap_print_fault(soap, stderr); exit(1); } // Step 1: Get an authorization token from the UDDI server uddi2__get_USCOREauthToken get_authToken(soap, userid, passwd); uddi2__authToken *authToken = get_authToken.send(server); // Check if authorized if (!authToken) { soap_print_fault(soap, stderr); exit(1); } // Authorization info provided by server for this session char *authInfo = authToken->authInfo; // Step 2: Create a tModel for the WSDL to be published uddi2__tModel tModel; tModel.soap_default(soap); // Create the tModel and service name tModel.name = soap_new_uddi2__name(soap, -1); tModel.name->__item = "..."; tModel.name->xml__lang_ = "en"; // Create XMethods description elements (see http://www.xmethods.net/ve2/UDDI.po) uddi2__description *description = soap_new_uddi2__description(soap, 6); description[0].__item = "SHORT DESCRIPTION: ..."; description[0].xml__lang_ = "en"; description[1].__item = "SHORT DESCRIPTION: ..."; description[1].xml__lang_ = "en"; description[2].__item = "USAGE NOTES: ..."; description[2].xml__lang_ = "en"; description[3].__item = "HOMEPAGE URL: ..."; description[3].xml__lang_ = "en"; description[4].__item = "CONTACT EMAIL: ..."; description[4].xml__lang_ = "en"; description[5].__item = "IMPLEMENTATION: ..."; description[5].xml__lang_ = "en"; // Add the four description elements to the tModel tModel.description.push_back(description + 0); tModel.description.push_back(description + 1); tModel.description.push_back(description + 2); tModel.description.push_back(description + 4); // Add an overviewDoc element with description and overviewURL tModel.overviewDoc = soap_new_uddi2__overviewDoc(soap, -1); tModel.overviewDoc->soap_default(soap); tModel.overviewDoc->description.push_back(soap_new_uddi2__description(soap, -1)); tModel.overviewDoc->description[0]->__item = "WSDL source document"; tModel.overviewDoc->description[0]->xml__lang_ = "en"; tModel.overviewDoc->overviewURL = "http://.../my.wsdl#bindingName"; // Omit identifier bag tModel.identifierBag = NULL; // Add a category with a WSDL-specific keyedReference tModel.categoryBag = soap_new_uddi2__categoryBag(soap, -1); tModel.categoryBag->soap_default(soap); tModel.categoryBag->keyedReference.push_back(soap_new_uddi2__keyedReference(soap, -1)); tModel.categoryBag->keyedReference[0]->tModelKey = "..."; tModel.categoryBag->keyedReference[0]->keyName = "uddi-org:types"; tModel.categoryBag->keyedReference[0]->keyValue = "wsdlSpec"; tModel.authorizedName = "..."; tModel.operator_ = "..."; tModel.tModelKey = "..."; // Save the tModel uddi2__save_USCOREtModel save_tModel(soap, tModel); uddi2__tModelDetail *tModelDetail = save_tModel.send(server, authInfo); // Step 3: Create a new service to be published uddi2__businessService service; service.soap_default(soap); // Service name is the tModel name (XMethods) service.name.push_back(tModel.name); // Add two description elements to the service service.description.push_back(description + 4); service.description.push_back(description + 5); // Create binding template uddi2__bindingTemplate bindingTemplate; bindingTemplate.soap_default(soap); bindingTemplate.tModelInstanceDetails = soap_new_uddi2__tModelInstanceDetails(soap, -1); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo.push_back(soap_new_uddi2__tModelInstanceInfo(soap, -1)); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->instanceDetails = NULL; bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->tModelKey = tModel.tModelKey; bindingTemplate.accessPoint = soap_new_uddi2__accessPoint(soap, -1); bindingTemplate.accessPoint->__item = "..."; bindingTemplate.accessPoint->URLType = uddi2__URLType__http; bindingTemplate.hostingRedirector = NULL; bindingTemplate.serviceKey = "..."; bindingTemplate.bindingKey = "..."; // Add binding Template to service service.bindingTemplates = soap_new_uddi2__bindingTemplates(soap, -1); service.bindingTemplates->soap_default(soap); service.bindingTemplates->bindingTemplate.push_back(&bindingTemplate); service.categoryBag = NULL; service.serviceKey = "..."; service.businessKey = "..."; // Save the service uddi2__save_USCOREservice save_service(soap, service); uddi2__serviceDetail *serviceDetail = save_service.send(server, authInfo); // Step 4: Discard authorization token uddi2__discard_USCOREauthToken discard_authToken(soap, authInfo); uddi2__dispositionReport *dispositionReport = discard_authToken.send(server); // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat publish_v2.wsdl - soapcpp2 -I.. -ppub publish_v2.h - g++ -DWITH_OPENSSL -DWITH_NONAMESPACES -I.. -o example3 example3.cpp publish_v2.cpp pubC.cpp pubClient.cpp ../stdsoap2.cpp */ /* uddi_v2.h Generated by wsdl2h 1.2.0 from inquire_v2.wsdl publish_v2.wsdl and uddi2-typemap.dat 2005-04-24 00:29:41 GMT Copyright (C) 2001-2005 Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. */ /* NOTE: - Compile this file with soapcpp2 to complete the code generation process. - Use wsdl2h option -l to view the software license terms. - Use wsdl2h options -c and -s to generate pure C code or C++ code without STL. - To build with STL, stlvector.h from the gSOAP distribution must be in the current directory. Or use soapcpp2 option -I with path to stlvector.h. - Use typemap.dat to control schema namespace bindings and type mappings. It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces section below and add the modified lines to typemap.dat to rerun wsdl2h. - Use Doxygen (www.doxygen.org) to browse this file. */ /******************************************************************************\ * * * * * * \******************************************************************************/ //gsoapopt w #import "stlvector.h" /******************************************************************************\ * * * Schema Namespaces * * * \******************************************************************************/ /* NOTE: It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings below and add the modified lines to typemap.dat to rerun wsdl2h: inq2 = urn:uddi-org:inquiry_v2 uddi2 = urn:uddi-org:api_v2 pub2 = urn:uddi-org:publication_v2 */ //gsoap inq2 schema namespace: urn:uddi-org:inquiry_v2 //gsoap uddi2 schema namespace: urn:uddi-org:api_v2 //gsoap pub2 schema namespace: urn:uddi-org:publication_v2 //gsoap inq2 schema form: unqualified //gsoap uddi2 schema elementForm: qualified //gsoap uddi2 schema attributeForm: unqualified //gsoap pub2 schema form: unqualified /******************************************************************************\ * * * Schema Types * * * \******************************************************************************/ /// Primitive built-in type "xs:NMTOKEN" typedef char* xsd__NMTOKEN; /// Built-in attribute "xml:lang" typedef char* xml__lang; class uddi2__accessPoint; class uddi2__address; class uddi2__addressLine; class uddi2__assertionStatusItem; class uddi2__bindingTemplate; class uddi2__bindingTemplates; class uddi2__businessEntity; class uddi2__businessEntityExt; class uddi2__businessInfo; class uddi2__businessInfos; class uddi2__businessService; class uddi2__businessServices; class uddi2__categoryBag; class uddi2__contact; class uddi2__contacts; class uddi2__description; class uddi2__discoveryURL; class uddi2__discoveryURLs; class uddi2__dispositionReport; class uddi2__email; class uddi2__errInfo; class uddi2__findQualifiers; class uddi2__hostingRedirector; class uddi2__identifierBag; class uddi2__instanceDetails; class uddi2__keyedReference; class uddi2__keysOwned; class uddi2__name; class uddi2__overviewDoc; class uddi2__phone; class uddi2__publisherAssertion; class uddi2__relatedBusinessInfo; class uddi2__relatedBusinessInfos; class uddi2__result; class uddi2__serviceInfo; class uddi2__serviceInfos; class uddi2__sharedRelationships; class uddi2__tModel; class uddi2__tModelBag; class uddi2__tModelInfo; class uddi2__tModelInfos; class uddi2__tModelInstanceDetails; class uddi2__tModelInstanceInfo; class uddi2__add_USCOREpublisherAssertions; class uddi2__delete_USCOREbinding; class uddi2__delete_USCOREbusiness; class uddi2__delete_USCOREpublisherAssertions; class uddi2__delete_USCOREservice; class uddi2__delete_USCOREtModel; class uddi2__discard_USCOREauthToken; class uddi2__find_USCOREbinding; class uddi2__find_USCOREbusiness; class uddi2__find_USCORErelatedBusinesses; class uddi2__find_USCOREservice; class uddi2__find_USCOREtModel; class uddi2__get_USCOREassertionStatusReport; class uddi2__get_USCOREauthToken; class uddi2__get_USCOREbindingDetail; class uddi2__get_USCOREbusinessDetail; class uddi2__get_USCOREbusinessDetailExt; class uddi2__get_USCOREpublisherAssertions; class uddi2__get_USCOREregisteredInfo; class uddi2__get_USCOREserviceDetail; class uddi2__get_USCOREtModelDetail; class uddi2__save_USCOREbinding; class uddi2__save_USCOREbusiness; class uddi2__save_USCOREservice; class uddi2__save_USCOREtModel; class uddi2__set_USCOREpublisherAssertions; class uddi2__validate_USCOREvalues; class uddi2__assertionStatusReport; class uddi2__authToken; class uddi2__bindingDetail; class uddi2__businessDetail; class uddi2__businessDetailExt; class uddi2__businessList; class uddi2__publisherAssertions; class uddi2__registeredInfo; class uddi2__relatedBusinessesList; class uddi2__serviceDetail; class uddi2__serviceList; class uddi2__tModelDetail; class uddi2__tModelList; /// Schema "urn:uddi-org:api_v2":bindingKey simpleType restriction of xs:string typedef char* uddi2__bindingKey; /// Schema "urn:uddi-org:api_v2":businessKey simpleType restriction of xs:string typedef char* uddi2__businessKey; /// Schema "urn:uddi-org:api_v2":serviceKey simpleType restriction of xs:string typedef char* uddi2__serviceKey; /// Schema "urn:uddi-org:api_v2":tModelKey simpleType restriction of xs:string typedef char* uddi2__tModelKey; /// Schema "urn:uddi-org:api_v2":direction simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__direction' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__direction { uddi2__direction__fromKey, ///< xs:NMTOKEN value="fromKey" uddi2__direction__toKey, ///< xs:NMTOKEN value="toKey" }; /// Schema "urn:uddi-org:api_v2":truncated simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__truncated' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__truncated { uddi2__truncated__true_, ///< xs:NMTOKEN value="true" uddi2__truncated__false_, ///< xs:NMTOKEN value="false" }; /// Schema "urn:uddi-org:api_v2":URLType simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__URLType' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__URLType { uddi2__URLType__mailto, ///< xs:NMTOKEN value="mailto" uddi2__URLType__http, ///< xs:NMTOKEN value="http" uddi2__URLType__https, ///< xs:NMTOKEN value="https" uddi2__URLType__ftp, ///< xs:NMTOKEN value="ftp" uddi2__URLType__fax, ///< xs:NMTOKEN value="fax" uddi2__URLType__phone, ///< xs:NMTOKEN value="phone" uddi2__URLType__other, ///< xs:NMTOKEN value="other" }; /// Schema "urn:uddi-org:api_v2":keyType simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__keyType' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__keyType { uddi2__keyType__businessKey, ///< xs:NMTOKEN value="businessKey" uddi2__keyType__tModelKey, ///< xs:NMTOKEN value="tModelKey" uddi2__keyType__serviceKey, ///< xs:NMTOKEN value="serviceKey" uddi2__keyType__bindingKey, ///< xs:NMTOKEN value="bindingKey" }; /// Schema urn:uddi-org:api_v2:"address" class uddi2__address { public: /// Vector of uddi2__addressLine* with length 0..unbounded std::vector addressLine 0; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// Attribute sortCode of type xs:string @char* sortCode 0; ///< Optional attribute /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"assertionStatusItem" class uddi2__assertionStatusItem { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keysOwned uddi2__keysOwned* keysOwned 1; ///< Required element /// Attribute completionStatus of type xs:string @char* completionStatus 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingTemplate" class uddi2__bindingTemplate { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":tModelInstanceDetails uddi2__tModelInstanceDetails* tModelInstanceDetails 1; ///< Required element // CHOICE OF ELEMENTS: /// Element reference "urn:uddi-org:api_v2":accessPoint uddi2__accessPoint* accessPoint 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":hostingRedirector uddi2__hostingRedirector* hostingRedirector 1; ///< Required element // END CHOICE /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 0; ///< Optional attribute /// Attribute bindingKey of type "urn:uddi-org:api_v2":bindingKey @uddi2__bindingKey bindingKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingTemplates" class uddi2__bindingTemplates { public: /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessEntity" class uddi2__businessEntity { public: /// Element reference "urn:uddi-org:api_v2":discoveryURLs uddi2__discoveryURLs* discoveryURLs 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":contacts uddi2__contacts* contacts 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":businessServices uddi2__businessServices* businessServices 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 0; ///< Optional attribute /// Attribute authorizedName of type xs:string @char* authorizedName 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessEntityExt" class uddi2__businessEntityExt { public: /// Element reference "urn:uddi-org:api_v2":businessEntity uddi2__businessEntity* businessEntity 1; ///< Required element // TODO: // Schema extensibility is user-definable // Consult the protocol documentation to insert declarations here: _XML __any ; ///< Catch any element content in XML string /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessInfo" class uddi2__businessInfo { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":serviceInfos uddi2__serviceInfos* serviceInfos 1; ///< Required element /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessInfos" class uddi2__businessInfos { public: /// Vector of uddi2__businessInfo* with length 0..unbounded std::vector businessInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessService" class uddi2__businessService { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":bindingTemplates uddi2__bindingTemplates* bindingTemplates 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessServices" class uddi2__businessServices { public: /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"categoryBag" class uddi2__categoryBag { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"contact" class uddi2__contact { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":personName char* personName 1; ///< Required element /// Vector of uddi2__phone* with length 0..unbounded std::vector phone 0; /// Vector of uddi2__email* with length 0..unbounded std::vector email 0; /// Vector of uddi2__address* with length 0..unbounded std::vector address 0; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"contacts" class uddi2__contacts { public: /// Vector of uddi2__contact* with length 0..unbounded std::vector contact 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"discoveryURLs" class uddi2__discoveryURLs { public: /// Vector of uddi2__discoveryURL* with length 0..unbounded std::vector discoveryURL 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"dispositionReport" class uddi2__dispositionReport { public: /// Vector of uddi2__result* with length 0..unbounded std::vector result 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"findQualifiers" class uddi2__findQualifiers { public: /// Vector of char* with length 0..unbounded std::vector findQualifier 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"hostingRedirector" class uddi2__hostingRedirector { public: /// Attribute bindingKey of type "urn:uddi-org:api_v2":bindingKey @uddi2__bindingKey bindingKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"identifierBag" class uddi2__identifierBag { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"instanceDetails" class uddi2__instanceDetails { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewDoc uddi2__overviewDoc* overviewDoc 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":instanceParms char* instanceParms 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"keyedReference" class uddi2__keyedReference { public: /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 0; ///< Optional attribute /// Attribute keyName of type xs:string @char* keyName 0; ///< Optional attribute /// Attribute keyValue of type xs:string @char* keyValue 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"keysOwned" class uddi2__keysOwned { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"overviewDoc" class uddi2__overviewDoc { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewURL char* overviewURL 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"publisherAssertion" class uddi2__publisherAssertion { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 1; ///< Required element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessInfo" class uddi2__relatedBusinessInfo { public: /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Vector of uddi2__sharedRelationships* with length 0..2 std::vector sharedRelationships 1:2; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessInfos" class uddi2__relatedBusinessInfos { public: /// Vector of uddi2__relatedBusinessInfo* with length 0..unbounded std::vector relatedBusinessInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"result" class uddi2__result { public: /// Element reference "urn:uddi-org:api_v2":errInfo uddi2__errInfo* errInfo 0; ///< Optional element /// Attribute keyType of type "urn:uddi-org:api_v2":keyType @enum uddi2__keyType* keyType 0; ///< Optional attribute /// Attribute errno of type xs:int @int errno_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceInfo" class uddi2__serviceInfo { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceInfos" class uddi2__serviceInfos { public: /// Vector of uddi2__serviceInfo* with length 0..unbounded std::vector serviceInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"sharedRelationships" class uddi2__sharedRelationships { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// Attribute direction of type "urn:uddi-org:api_v2":direction @enum uddi2__direction direction 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModel" class uddi2__tModel { public: /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 1; ///< Required element /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewDoc uddi2__overviewDoc* overviewDoc 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 0; ///< Optional attribute /// Attribute authorizedName of type xs:string @char* authorizedName 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelBag" class uddi2__tModelBag { public: /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInfo" class uddi2__tModelInfo { public: /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 1; ///< Required element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInfos" class uddi2__tModelInfos { public: /// Vector of uddi2__tModelInfo* with length 0..unbounded std::vector tModelInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInstanceDetails" class uddi2__tModelInstanceDetails { public: /// Vector of uddi2__tModelInstanceInfo* with length 0..unbounded std::vector tModelInstanceInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInstanceInfo" class uddi2__tModelInstanceInfo { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":instanceDetails uddi2__instanceDetails* instanceDetails 0; ///< Optional element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"add_publisherAssertions" class uddi2__add_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__add_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__add_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_binding" class uddi2__delete_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__bindingKey with length 0..unbounded std::vector bindingKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*, const char *bindingKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*, std::vector bindingKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_business" class uddi2__delete_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_publisherAssertions" class uddi2__delete_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_service" class uddi2__delete_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__serviceKey with length 0..unbounded std::vector serviceKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*, const char *serviceKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*, std::vector serviceKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_tModel" class uddi2__delete_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"discard_authToken" class uddi2__discard_USCOREauthToken { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__discard_USCOREauthToken(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__discard_USCOREauthToken(struct soap*, const char *authInfo); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_binding" class uddi2__find_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_business" class uddi2__find_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":discoveryURLs uddi2__discoveryURLs* discoveryURLs 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__businessList *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_relatedBusinesses" class uddi2__find_USCORErelatedBusinesses { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCORErelatedBusinesses(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCORErelatedBusinesses(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__relatedBusinessesList *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_service" class uddi2__find_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__serviceList* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_tModel" class uddi2__find_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__tModelList* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_assertionStatusReport" class uddi2__get_USCOREassertionStatusReport { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":completionStatus char* completionStatus 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREassertionStatusReport(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREassertionStatusReport(struct soap*, const char *completionStatus); /// Member declared in uddi2-typemap.dat uddi2__assertionStatusReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_authToken" class uddi2__get_USCOREauthToken { public: /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute userID of type xs:string @char* userID 1; ///< Required attribute /// Attribute cred of type xs:string @char* cred 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREauthToken(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREauthToken(struct soap*, const char *userid, const char *passwd); /// Member declared in uddi2-typemap.dat uddi2__authToken* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_bindingDetail" class uddi2__get_USCOREbindingDetail { public: /// Vector of uddi2__bindingKey with length 0..unbounded std::vector bindingKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*, const char *bindingKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*, std::vector bindingKeys); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_businessDetail" class uddi2__get_USCOREbusinessDetail { public: /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__businessDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_businessDetailExt" class uddi2__get_USCOREbusinessDetailExt { public: /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__businessDetailExt* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_publisherAssertions" class uddi2__get_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_registeredInfo" class uddi2__get_USCOREregisteredInfo { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREregisteredInfo(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__registeredInfo* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_serviceDetail" class uddi2__get_USCOREserviceDetail { public: /// Vector of uddi2__serviceKey with length 0..unbounded std::vector serviceKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*, const char *serviceKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*, std::vector serviceKeys); /// Member declared in uddi2-typemap.dat uddi2__serviceDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_tModelDetail" class uddi2__get_USCOREtModelDetail { public: /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__tModelDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"save_binding" class uddi2__save_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*, uddi2__bindingTemplate &bindingTemplate); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*, std::vector bindingTemplates); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_business" class uddi2__save_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Vector of char* with length 0..unbounded std::vector uploadRegister 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*, uddi2__businessEntity &businessEntity); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*, std::vector businessEntities); /// Member declared in uddi2-typemap.dat uddi2__businessDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_service" class uddi2__save_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*, uddi2__businessService &businessService); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*, std::vector businessServices); /// Member declared in uddi2-typemap.dat uddi2__serviceDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_tModel" class uddi2__save_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 0; /// Vector of char* with length 0..unbounded std::vector uploadRegister 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*, uddi2__tModel &tModel); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*, std::vector tModels); /// Member declared in uddi2-typemap.dat uddi2__tModelDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"set_publisherAssertions" class uddi2__set_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__set_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__set_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"validate_values" class uddi2__validate_USCOREvalues { public: // CHOICE OF ELEMENTS: /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 0; // END CHOICE /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"assertionStatusReport" class uddi2__assertionStatusReport { public: /// Vector of uddi2__assertionStatusItem* with length 0..unbounded std::vector assertionStatusItem 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"authToken" class uddi2__authToken { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingDetail" class uddi2__bindingDetail { public: /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessDetail" class uddi2__businessDetail { public: /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessDetailExt" class uddi2__businessDetailExt { public: /// Vector of uddi2__businessEntityExt* with length 0..unbounded std::vector businessEntityExt 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessList" class uddi2__businessList { public: /// Element reference "urn:uddi-org:api_v2":businessInfos uddi2__businessInfos* businessInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"publisherAssertions" class uddi2__publisherAssertions { public: /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute authorizedName of type xs:string @char* authorizedName 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"registeredInfo" class uddi2__registeredInfo { public: /// Element reference "urn:uddi-org:api_v2":businessInfos uddi2__businessInfos* businessInfos 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":tModelInfos uddi2__tModelInfos* tModelInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessesList" class uddi2__relatedBusinessesList { public: /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":relatedBusinessInfos uddi2__relatedBusinessInfos* relatedBusinessInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceDetail" class uddi2__serviceDetail { public: /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceList" class uddi2__serviceList { public: /// Element reference "urn:uddi-org:api_v2":serviceInfos uddi2__serviceInfos* serviceInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelDetail" class uddi2__tModelDetail { public: /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelList" class uddi2__tModelList { public: /// Element reference "urn:uddi-org:api_v2":tModelInfos uddi2__tModelInfos* tModelInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"accessPoint" class uddi2__accessPoint { public: char* __item ; /// Attribute URLType of type "urn:uddi-org:api_v2":URLType @enum uddi2__URLType URLType 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"addressLine" class uddi2__addressLine { public: char* __item ; /// Attribute keyName of type xs:string @char* keyName 0; ///< Optional attribute /// Attribute keyValue of type xs:string @char* keyValue 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"description" class uddi2__description { public: char* __item ; /// Attribute reference xml:lang @xml__lang xml__lang_ 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"discoveryURL" class uddi2__discoveryURL { public: char* __item ; /// Attribute useType of type xs:string @char* useType 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"email" class uddi2__email { public: char* __item ; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"errInfo" class uddi2__errInfo { public: char* __item ; /// Attribute errCode of type xs:string @char* errCode 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"name" class uddi2__name { public: char* __item ; /// Attribute reference xml:lang @xml__lang xml__lang_ 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"phone" class uddi2__phone { public: char* __item ; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /******************************************************************************\ * * * Services * * * \******************************************************************************/ //gsoap inq2 service name: InquireSoap //gsoap inq2 service type: Inquire //gsoap inq2 service namespace: urn:uddi-org:inquiry_v2 //gsoap pub2 service name: PublishSoap //gsoap pub2 service type: Publish //gsoap pub2 service namespace: urn:uddi-org:publication_v2 /** @mainpage Service Definitions @section Service_bindings Bindings - @ref InquireSoap - @ref PublishSoap */ /** @page InquireSoap Binding "InquireSoap" @section InquireSoap_operations Operations of Binding "InquireSoap" - @ref __inq2__find_USCOREbinding - @ref __inq2__find_USCOREbusiness - @ref __inq2__find_USCORErelatedBusinesses - @ref __inq2__find_USCOREservice - @ref __inq2__find_USCOREtModel - @ref __inq2__get_USCOREbindingDetail - @ref __inq2__get_USCOREbusinessDetail - @ref __inq2__get_USCOREbusinessDetailExt - @ref __inq2__get_USCOREserviceDetail - @ref __inq2__get_USCOREtModelDetail @section InquireSoap_ports Endpoints of Binding "InquireSoap" */ /** @page PublishSoap Binding "PublishSoap" @section PublishSoap_operations Operations of Binding "PublishSoap" - @ref __pub2__add_USCOREpublisherAssertions - @ref __pub2__delete_USCOREbinding - @ref __pub2__delete_USCOREbusiness - @ref __pub2__delete_USCOREpublisherAssertions - @ref __pub2__delete_USCOREservice - @ref __pub2__delete_USCOREtModel - @ref __pub2__discard_USCOREauthToken - @ref __pub2__get_USCOREassertionStatusReport - @ref __pub2__get_USCOREauthToken - @ref __pub2__get_USCOREpublisherAssertions - @ref __pub2__get_USCOREregisteredInfo - @ref __pub2__save_USCOREbinding - @ref __pub2__save_USCOREbusiness - @ref __pub2__save_USCOREservice - @ref __pub2__save_USCOREtModel - @ref __pub2__set_USCOREpublisherAssertions @section PublishSoap_ports Endpoints of Binding "PublishSoap" */ /******************************************************************************\ * * * SOAP Fault Detail * * * \******************************************************************************/ /// The SOAP Fault Detail element contains one of the following types serialized // in the __type and fault fields of the SOAP_ENV__Detail struct (see docs) class _dispositionReport { public: uddi2__dispositionReport* uddi2__dispositionReport_; struct soap *soap ; }; /******************************************************************************\ * * * InquireSoap * * * \******************************************************************************/ /******************************************************************************\ * * * __inq2__find_USCOREbinding * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREbinding" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_binding" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREbinding(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREbinding* uddi2__find_USCOREbinding_, // response parameters: uddi2__bindingDetail* uddi2__bindingDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREbinding document //gsoap inq2 service method-encoding: find_USCOREbinding literal //gsoap inq2 service method-action: find_USCOREbinding find_binding //gsoap inq2 service method-fault: find_USCOREbinding _dispositionReport int __inq2__find_USCOREbinding( uddi2__find_USCOREbinding* uddi2__find_USCOREbinding_, uddi2__bindingDetail* uddi2__bindingDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCOREbusiness * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREbusiness" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_business" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREbusiness(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREbusiness* uddi2__find_USCOREbusiness_, // response parameters: uddi2__businessList* uddi2__businessList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREbusiness document //gsoap inq2 service method-encoding: find_USCOREbusiness literal //gsoap inq2 service method-action: find_USCOREbusiness find_business //gsoap inq2 service method-fault: find_USCOREbusiness _dispositionReport int __inq2__find_USCOREbusiness( uddi2__find_USCOREbusiness* uddi2__find_USCOREbusiness_, uddi2__businessList* uddi2__businessList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCORErelatedBusinesses * * * \******************************************************************************/ /// Operation "__inq2__find_USCORErelatedBusinesses" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_relatedBusinesses" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCORErelatedBusinesses(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCORErelatedBusinesses* uddi2__find_USCORErelatedBusinesses_, // response parameters: uddi2__relatedBusinessesList* uddi2__relatedBusinessesList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCORErelatedBusinesses document //gsoap inq2 service method-encoding: find_USCORErelatedBusinesses literal //gsoap inq2 service method-action: find_USCORErelatedBusinesses find_relatedBusinesses //gsoap inq2 service method-fault: find_USCORErelatedBusinesses _dispositionReport int __inq2__find_USCORErelatedBusinesses( uddi2__find_USCORErelatedBusinesses* uddi2__find_USCORErelatedBusinesses_, uddi2__relatedBusinessesList* uddi2__relatedBusinessesList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCOREservice * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREservice" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_service" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREservice(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREservice* uddi2__find_USCOREservice_, // response parameters: uddi2__serviceList* uddi2__serviceList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREservice document //gsoap inq2 service method-encoding: find_USCOREservice literal //gsoap inq2 service method-action: find_USCOREservice find_service //gsoap inq2 service method-fault: find_USCOREservice _dispositionReport int __inq2__find_USCOREservice( uddi2__find_USCOREservice* uddi2__find_USCOREservice_, uddi2__serviceList* uddi2__serviceList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCOREtModel * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREtModel" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_tModel" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREtModel(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREtModel* uddi2__find_USCOREtModel_, // response parameters: uddi2__tModelList* uddi2__tModelList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREtModel document //gsoap inq2 service method-encoding: find_USCOREtModel literal //gsoap inq2 service method-action: find_USCOREtModel find_tModel //gsoap inq2 service method-fault: find_USCOREtModel _dispositionReport int __inq2__find_USCOREtModel( uddi2__find_USCOREtModel* uddi2__find_USCOREtModel_, uddi2__tModelList* uddi2__tModelList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREbindingDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREbindingDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_bindingDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREbindingDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREbindingDetail* uddi2__get_USCOREbindingDetail_, // response parameters: uddi2__bindingDetail* uddi2__bindingDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREbindingDetail document //gsoap inq2 service method-encoding: get_USCOREbindingDetail literal //gsoap inq2 service method-action: get_USCOREbindingDetail get_bindingDetail //gsoap inq2 service method-fault: get_USCOREbindingDetail _dispositionReport int __inq2__get_USCOREbindingDetail( uddi2__get_USCOREbindingDetail* uddi2__get_USCOREbindingDetail_, uddi2__bindingDetail* uddi2__bindingDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREbusinessDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREbusinessDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_businessDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREbusinessDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREbusinessDetail* uddi2__get_USCOREbusinessDetail_, // response parameters: uddi2__businessDetail* uddi2__businessDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREbusinessDetail document //gsoap inq2 service method-encoding: get_USCOREbusinessDetail literal //gsoap inq2 service method-action: get_USCOREbusinessDetail get_businessDetail //gsoap inq2 service method-fault: get_USCOREbusinessDetail _dispositionReport int __inq2__get_USCOREbusinessDetail( uddi2__get_USCOREbusinessDetail* uddi2__get_USCOREbusinessDetail_, uddi2__businessDetail* uddi2__businessDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREbusinessDetailExt * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREbusinessDetailExt" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_businessDetailExt" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREbusinessDetailExt(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREbusinessDetailExt* uddi2__get_USCOREbusinessDetailExt_, // response parameters: uddi2__businessDetailExt* uddi2__businessDetailExt_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREbusinessDetailExt document //gsoap inq2 service method-encoding: get_USCOREbusinessDetailExt literal //gsoap inq2 service method-action: get_USCOREbusinessDetailExt get_businessDetailExt //gsoap inq2 service method-fault: get_USCOREbusinessDetailExt _dispositionReport int __inq2__get_USCOREbusinessDetailExt( uddi2__get_USCOREbusinessDetailExt* uddi2__get_USCOREbusinessDetailExt_, uddi2__businessDetailExt* uddi2__businessDetailExt_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREserviceDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREserviceDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_serviceDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREserviceDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREserviceDetail* uddi2__get_USCOREserviceDetail_, // response parameters: uddi2__serviceDetail* uddi2__serviceDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREserviceDetail document //gsoap inq2 service method-encoding: get_USCOREserviceDetail literal //gsoap inq2 service method-action: get_USCOREserviceDetail get_serviceDetail //gsoap inq2 service method-fault: get_USCOREserviceDetail _dispositionReport int __inq2__get_USCOREserviceDetail( uddi2__get_USCOREserviceDetail* uddi2__get_USCOREserviceDetail_, uddi2__serviceDetail* uddi2__serviceDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREtModelDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREtModelDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_tModelDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREtModelDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREtModelDetail* uddi2__get_USCOREtModelDetail_, // response parameters: uddi2__tModelDetail* uddi2__tModelDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREtModelDetail document //gsoap inq2 service method-encoding: get_USCOREtModelDetail literal //gsoap inq2 service method-action: get_USCOREtModelDetail get_tModelDetail //gsoap inq2 service method-fault: get_USCOREtModelDetail _dispositionReport int __inq2__get_USCOREtModelDetail( uddi2__get_USCOREtModelDetail* uddi2__get_USCOREtModelDetail_, uddi2__tModelDetail* uddi2__tModelDetail_ ///< response parameter ); /******************************************************************************\ * * * PublishSoap * * * \******************************************************************************/ /******************************************************************************\ * * * __pub2__add_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__add_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="add_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__add_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__add_USCOREpublisherAssertions* uddi2__add_USCOREpublisherAssertions_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: add_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: add_USCOREpublisherAssertions literal //gsoap pub2 service method-action: add_USCOREpublisherAssertions add_publisherAssertions //gsoap pub2 service method-fault: add_USCOREpublisherAssertions _dispositionReport int __pub2__add_USCOREpublisherAssertions( uddi2__add_USCOREpublisherAssertions* uddi2__add_USCOREpublisherAssertions_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREbinding * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREbinding" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_binding" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREbinding(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREbinding* uddi2__delete_USCOREbinding_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREbinding document //gsoap pub2 service method-encoding: delete_USCOREbinding literal //gsoap pub2 service method-action: delete_USCOREbinding delete_binding //gsoap pub2 service method-fault: delete_USCOREbinding _dispositionReport int __pub2__delete_USCOREbinding( uddi2__delete_USCOREbinding* uddi2__delete_USCOREbinding_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREbusiness * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREbusiness" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_business" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREbusiness(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREbusiness* uddi2__delete_USCOREbusiness_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREbusiness document //gsoap pub2 service method-encoding: delete_USCOREbusiness literal //gsoap pub2 service method-action: delete_USCOREbusiness delete_business //gsoap pub2 service method-fault: delete_USCOREbusiness _dispositionReport int __pub2__delete_USCOREbusiness( uddi2__delete_USCOREbusiness* uddi2__delete_USCOREbusiness_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREpublisherAssertions* uddi2__delete_USCOREpublisherAssertions_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: delete_USCOREpublisherAssertions literal //gsoap pub2 service method-action: delete_USCOREpublisherAssertions delete_publisherAssertions //gsoap pub2 service method-fault: delete_USCOREpublisherAssertions _dispositionReport int __pub2__delete_USCOREpublisherAssertions( uddi2__delete_USCOREpublisherAssertions* uddi2__delete_USCOREpublisherAssertions_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREservice * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREservice" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_service" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREservice(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREservice* uddi2__delete_USCOREservice_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREservice document //gsoap pub2 service method-encoding: delete_USCOREservice literal //gsoap pub2 service method-action: delete_USCOREservice delete_service //gsoap pub2 service method-fault: delete_USCOREservice _dispositionReport int __pub2__delete_USCOREservice( uddi2__delete_USCOREservice* uddi2__delete_USCOREservice_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREtModel * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREtModel" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_tModel" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREtModel(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREtModel* uddi2__delete_USCOREtModel_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREtModel document //gsoap pub2 service method-encoding: delete_USCOREtModel literal //gsoap pub2 service method-action: delete_USCOREtModel delete_tModel //gsoap pub2 service method-fault: delete_USCOREtModel _dispositionReport int __pub2__delete_USCOREtModel( uddi2__delete_USCOREtModel* uddi2__delete_USCOREtModel_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__discard_USCOREauthToken * * * \******************************************************************************/ /// Operation "__pub2__discard_USCOREauthToken" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="discard_authToken" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__discard_USCOREauthToken(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__discard_USCOREauthToken* uddi2__discard_USCOREauthToken_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: discard_USCOREauthToken document //gsoap pub2 service method-encoding: discard_USCOREauthToken literal //gsoap pub2 service method-action: discard_USCOREauthToken discard_authToken //gsoap pub2 service method-fault: discard_USCOREauthToken _dispositionReport int __pub2__discard_USCOREauthToken( uddi2__discard_USCOREauthToken* uddi2__discard_USCOREauthToken_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREassertionStatusReport * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREassertionStatusReport" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_assertionStatusReport" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREassertionStatusReport(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREassertionStatusReport* uddi2__get_USCOREassertionStatusReport_, // response parameters: uddi2__assertionStatusReport* uddi2__assertionStatusReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREassertionStatusReport document //gsoap pub2 service method-encoding: get_USCOREassertionStatusReport literal //gsoap pub2 service method-action: get_USCOREassertionStatusReport get_assertionStatusReport //gsoap pub2 service method-fault: get_USCOREassertionStatusReport _dispositionReport int __pub2__get_USCOREassertionStatusReport( uddi2__get_USCOREassertionStatusReport* uddi2__get_USCOREassertionStatusReport_, uddi2__assertionStatusReport* uddi2__assertionStatusReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREauthToken * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREauthToken" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_authToken" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREauthToken(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREauthToken* uddi2__get_USCOREauthToken_, // response parameters: uddi2__authToken* uddi2__authToken_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREauthToken document //gsoap pub2 service method-encoding: get_USCOREauthToken literal //gsoap pub2 service method-action: get_USCOREauthToken get_authToken //gsoap pub2 service method-fault: get_USCOREauthToken _dispositionReport int __pub2__get_USCOREauthToken( uddi2__get_USCOREauthToken* uddi2__get_USCOREauthToken_, uddi2__authToken* uddi2__authToken_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREpublisherAssertions* uddi2__get_USCOREpublisherAssertions_, // response parameters: uddi2__publisherAssertions* uddi2__publisherAssertions_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: get_USCOREpublisherAssertions literal //gsoap pub2 service method-action: get_USCOREpublisherAssertions get_publisherAssertions //gsoap pub2 service method-fault: get_USCOREpublisherAssertions _dispositionReport int __pub2__get_USCOREpublisherAssertions( uddi2__get_USCOREpublisherAssertions* uddi2__get_USCOREpublisherAssertions_, uddi2__publisherAssertions* uddi2__publisherAssertions_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREregisteredInfo * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREregisteredInfo" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_registeredInfo" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREregisteredInfo(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREregisteredInfo* uddi2__get_USCOREregisteredInfo_, // response parameters: uddi2__registeredInfo* uddi2__registeredInfo_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREregisteredInfo document //gsoap pub2 service method-encoding: get_USCOREregisteredInfo literal //gsoap pub2 service method-action: get_USCOREregisteredInfo get_registeredInfo //gsoap pub2 service method-fault: get_USCOREregisteredInfo _dispositionReport int __pub2__get_USCOREregisteredInfo( uddi2__get_USCOREregisteredInfo* uddi2__get_USCOREregisteredInfo_, uddi2__registeredInfo* uddi2__registeredInfo_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREbinding * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREbinding" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_binding" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREbinding(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREbinding* uddi2__save_USCOREbinding_, // response parameters: uddi2__bindingDetail* uddi2__bindingDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREbinding document //gsoap pub2 service method-encoding: save_USCOREbinding literal //gsoap pub2 service method-action: save_USCOREbinding save_binding //gsoap pub2 service method-fault: save_USCOREbinding _dispositionReport int __pub2__save_USCOREbinding( uddi2__save_USCOREbinding* uddi2__save_USCOREbinding_, uddi2__bindingDetail* uddi2__bindingDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREbusiness * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREbusiness" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_business" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREbusiness(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREbusiness* uddi2__save_USCOREbusiness_, // response parameters: uddi2__businessDetail* uddi2__businessDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREbusiness document //gsoap pub2 service method-encoding: save_USCOREbusiness literal //gsoap pub2 service method-action: save_USCOREbusiness save_business //gsoap pub2 service method-fault: save_USCOREbusiness _dispositionReport int __pub2__save_USCOREbusiness( uddi2__save_USCOREbusiness* uddi2__save_USCOREbusiness_, uddi2__businessDetail* uddi2__businessDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREservice * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREservice" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_service" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREservice(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREservice* uddi2__save_USCOREservice_, // response parameters: uddi2__serviceDetail* uddi2__serviceDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREservice document //gsoap pub2 service method-encoding: save_USCOREservice literal //gsoap pub2 service method-action: save_USCOREservice save_service //gsoap pub2 service method-fault: save_USCOREservice _dispositionReport int __pub2__save_USCOREservice( uddi2__save_USCOREservice* uddi2__save_USCOREservice_, uddi2__serviceDetail* uddi2__serviceDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREtModel * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREtModel" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_tModel" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREtModel(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREtModel* uddi2__save_USCOREtModel_, // response parameters: uddi2__tModelDetail* uddi2__tModelDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREtModel document //gsoap pub2 service method-encoding: save_USCOREtModel literal //gsoap pub2 service method-action: save_USCOREtModel save_tModel //gsoap pub2 service method-fault: save_USCOREtModel _dispositionReport int __pub2__save_USCOREtModel( uddi2__save_USCOREtModel* uddi2__save_USCOREtModel_, uddi2__tModelDetail* uddi2__tModelDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__set_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__set_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="set_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__set_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__set_USCOREpublisherAssertions* uddi2__set_USCOREpublisherAssertions_, // response parameters: uddi2__publisherAssertions* uddi2__publisherAssertions_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: set_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: set_USCOREpublisherAssertions literal //gsoap pub2 service method-action: set_USCOREpublisherAssertions set_publisherAssertions //gsoap pub2 service method-fault: set_USCOREpublisherAssertions _dispositionReport int __pub2__set_USCOREpublisherAssertions( uddi2__set_USCOREpublisherAssertions* uddi2__set_USCOREpublisherAssertions_, uddi2__publisherAssertions* uddi2__publisherAssertions_ ///< response parameter ); /* End of uddi_v2.h */ gsoap-2.8.60/gsoap/uddi2/uddi2-typemap.dat0000644000175000017500000016654613227173557017614 0ustar ellertellert# uddi2map.dat # # gSOAP type map bindings for UDDI v2 to run the gSOAP WSDL tool 'wsdl2h' # # Includes full documentation and examples of the gSOAP UDDI v2 API [ /** @mainpage gSOAP UDDI v2 Universal Description, Discovery and Integration, or UDDI, is the name of a group of web-based registries that expose information about a business or other entity and its technical interfaces. See the UDDI v2 specification @url http://uddi.org/pubs/ProgrammersAPI_v2.htm for more details. @section UDDI2_CLASSES Classes See Related Pages for examples. UDDI Inquire classes - @ref uddi2__find_USCOREbinding - @ref uddi2__find_USCOREbusiness - @ref uddi2__find_USCORErelatedBusinesses - @ref uddi2__find_USCOREservice - @ref uddi2__find_USCOREtModel - @ref uddi2__get_USCOREbindingDetail - @ref uddi2__get_USCOREbusinessDetail - @ref uddi2__get_USCOREbusinessDetailExt - @ref uddi2__get_USCOREserviceDetail - @ref uddi2__get_USCOREtModelDetail UDDI Publish classes - @ref uddi2__add_USCOREpublisherAssertions - @ref uddi2__delete_USCOREbinding - @ref uddi2__delete_USCOREbusiness - @ref uddi2__delete_USCOREservice - @ref uddi2__delete_USCOREtModel - @ref uddi2__delete_USCOREpublisherAssertions - @ref uddi2__discard_USCOREauthToken - @ref uddi2__get_USCOREassertionStatusReport - @ref uddi2__get_USCOREauthToken - @ref uddi2__get_USCOREpublisherAssertions - @ref uddi2__get_USCOREregisteredInfo - @ref uddi2__save_USCOREbinding - @ref uddi2__save_USCOREbusiness - @ref uddi2__save_USCOREservice - @ref uddi2__save_USCOREtModel - @ref uddi2__set_USCOREpublisherAssertions @section UDDI2_BINDINGS Binding Reference - @ref InquireSoap - @ref PublishSoap */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbinding @brief Represents a request to locate bindings that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137712 */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbinding class. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the find_USCOREbinding class using the specified tModel key. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREbinding class using the specified tModel keys. */ /** @fn uddi2__bindingDetail* uddi2__find_USCOREbinding::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to find binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbusiness @brief Represents a request to locate businesses that meet specific requirements. When the send method is called, the instance returns a uddi2__businessList object that contains a list of business that matched the search criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137713 See also @ref example2. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified name of the requested business. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified category references. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified tModel keys. */ /** @fn uddi2__businessList *uddi2__find_USCOREbusiness::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessList object or NULL on error Send a request to a UDDI server to find a list of businesses. See also @ref example2. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_relatedBusinesses // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCORErelatedBusinesses @brief Represents a request to locate businesses that are related to a specific business. When the send method is called, the instance returns a uddi2__relatedBusinessList object that contains a list of business that matched the relationship set. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137714 */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCORErelatedBusiness class. */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the find_USCORErelatedBusiness class using the specified business key. */ /** @fn uddi2__relatedBusinessesList *uddi2__find_USCORErelatedBusinesses::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__relatedBusinessList object or NULL on error Send a request to a UDDI server to find a list of related businesses. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREservice @brief Represents a request to locate services that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137715 See also @ref example1. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREservice class. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the service Creates an instance of the find_USCOREservice class using the specified name. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREservice class using the specified category keys. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREservice class using the specified tModel keys. */ /** @fn uddi2__serviceList* uddi2__find_USCOREservice::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceList object or NULL on error Send a request to a UDDI server to find a list of services. See also @ref example1. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREtModel @brief Represents a request to locate a list of tModel entries that match a set of specific criteria. The result of a search is a uddi2__tModelList object that contains information about registered tModel data that matches the criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137716 */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREtModel class. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the tModel Creates an instance of the find_USCOREtModel class using the specified tModel name. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREtModel class using the specified category keys. */ /** @fn uddi2__tModelList* uddi2__find_USCOREtModel::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelList object or NULL on error Send a request to a UDDI server to find a tModelList. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_bindingDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbindingDetail @brief Represents a request to get binding details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137717 */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbindingDetail class. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey string Creates an instance of the get_USCOREbindingDetail class using the specified binding key. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of key strings Creates an instance of the get_USCOREbindingDetail class using the specified collection of binding keys. */ /** @fn uddi2__bindingDetail* uddi2__get_USCOREbindingDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to get the binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetail @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137718 */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetail class. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetail class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetail class using the specified collection of business keys. */ /** @fn uddi2__businessDetail* uddi2__get_USCOREbusinessDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetailExt // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetailExt @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137719 */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetailExt class. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetailExt class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetailExt class using the specified collection of business keys. */ /** @fn uddi2__businessDetailExt* uddi2__get_USCOREbusinessDetailExt::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetailExt object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_serviceDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREserviceDetail @brief Represents a request to get service details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137720 */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREserviceDetail class. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey string Creates an instance of the get_USCOREserviceDetail class using the specified service key. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of key strings Creates an instance of the get_USCOREserviceDetail class using the specified collection of service keys. */ /** @fn uddi2__serviceDetail* uddi2__get_USCOREserviceDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to get the service details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_tModelDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREtModelDetail @brief Represents a request to get tModel details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137721 */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREtModelDetail class. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the get_USCOREtModelDetail class using the specified tModel key. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of key strings Creates an instance of the get_USCOREtModelDetail class using the specified collection of tModel keys. */ /** @fn uddi2__tModelDetail* uddi2__get_USCOREtModelDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to get the tModel details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:add_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__add_USCOREpublisherAssertions @brief Represents a request to add one or more publisher assertions to the assertion collection for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137731 */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the add_USCOREpublisherAssertions class. */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the add_USCOREpublisherAssertions class using the specified publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__add_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI server to add one or more publisher assertions to the assertion collection for an individual publisher. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbinding @brief Represents a request to delete a binding that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137732 */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap) @brief Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey a binding key string Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of binding keys Creates an instance of the delete_USCOREbinding class using the specified binding keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a binding that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbusiness @brief Represents a request to delete a business that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137733 */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREbusiness class. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey a business key string Creates an instance of the delete_USCOREbusiness class using the specified business key. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of business keys Creates an instance of the delete_USCOREbusiness class using the specified business keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a business that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREservice @brief Represents a request to delete a service that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137735 */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREservice class. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey a service key string Creates an instance of the delete_USCOREservice class using the specified service key. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of service keys Creates an instance of the delete_USCOREservice class using the specified service keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a service that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREtModel @brief Represents a request to delete a tModel that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137736 */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREtModel class. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey a tModel key string Creates an instance of the delete_USCOREtModel class using the specified tModel key. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel keys Creates an instance of the delete_USCOREtModel class using the specified tModel keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a tModel that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREpublisherAssertions @brief Represents a request to delete publisher assertions meeting the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137734 */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREpublisherAssertions class. */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions a collection of publisher assertions Creates an instance of the delete_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete publisher assertions meeting the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:discard_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__discard_USCOREauthToken @brief Represents a request to discard an authorization token obtained with the get_USCOREauthToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137737 */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREauthToken class. */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap, const char *authInfo) @brief @param[in] soap gSOAP context @param[in] authInfo authorization token provided by the UDDI server Creates an instance of the delete_USCOREauthToken class using the specified authentication token string. */ /** @fn uddi2__dispositionReport *uddi2__discard_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to discard an authentication token. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_assertionStatusReport // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREassertionStatusReport @brief Provides the ability to determine the status of current and outstanding publisher assertions. The results can be restricted by setting the completionStatus property. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137738 */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREassertionStatusReport class. */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap, const char *completionStatus) @brief @param[in] soap gSOAP context @param[in] completionStatus completion status string Creates an instance of the get_USCOREassertionStatusReport class using the specified completion status. */ /** @fn uddi2__assertionStatusReport *uddi2__get_USCOREassertionStatusReport::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__assertionStatusReport object or NULL on error Send a request to a UDDI service to get the status of current and outstanding publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREauthToken @brief Represents a request to obtain an authorization token, which is represented by the uddi2__authToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137739 */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREauthToken class. */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap, const char *userid, const char *passwd) @brief @param[in] soap gSOAP context @param[in] userid the user ID string @param[in] passwd the password string Creates an instance of the get_USCOREauthToken class using the specified user ID and password. */ /** @fn uddi2__authToken *uddi2__get_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__authToken object or NULL on error Send a request to a UDDI service to get a authorization token given a user ID and password. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREpublisherAssertions @brief Represents a request to obtain the full set of publisher assertions that are associated with an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137740 */ /** @fn uddi2__get_USCOREpublisherAssertions::uddi2__get_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREpublisherAssetions class. */ /** @fn uddi2__publisherAssertions *uddi2__get_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI service to get publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_registeredInfo // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREregisteredInfo @brief Represents a request to get all registered business entities and tModels controlled by an individual. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137741 */ /** @fn uddi2__get_USCOREregisteredInfo::uddi2__get_USCOREregisteredInfo(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREregisteredInfo class. */ /** @fn uddi2__registeredInfo *uddi2__get_USCOREregisteredInfo::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__registeredInfo object or NULL on error Send a request to a UDDI service to get all registered business entities and tModels controlled by an individual. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbinding @brief Represents a request to post binding information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137742 */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbinding class. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, uddi2__bindingTemplate &bindingTemplate) @brief @param[in] soap gSOAP context @param[in] bindingTemplate binding template Creates an instance of the save_USCOREbinding class using the specified binding template. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, std::vector bindingTemplates) @brief @param[in] soap gSOAP context @param[in] bindingTemplates collection of binding templates Creates an instance of the save_USCOREbinding class using the specified binding templates. */ /** @fn uddi2__bindingDetail *uddi2__save_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to post binding information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbusiness @brief Represents a request to post business information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137743 */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbusiness class. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, uddi2__businessEntity &businessEntity) @brief @param[in] soap gSOAP context @param[in] businessEntity business entity Creates an instance of the save_USCOREbusiness class using the specified business entity. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, std::vector businessEntities) @brief @param[in] soap gSOAP context @param[in] businessEntities collection of business entities Creates an instance of the save_USCOREbusiness class using the specified business entities. */ /** @fn uddi2__businessDetail *uddi2__save_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to post business information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREservice @brief Represents a request to post service information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137744 */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREservice class. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, uddi2__businessService &businessService) @brief @param[in] soap gSOAP context @param[in] businessService business service Creates an instance of the save_USCOREservice class using the specified service. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, std::vector businessServices) @brief @param[in] soap gSOAP context @param[in] businessServices collection of business services Creates an instance of the save_USCOREservice class using the specified services. */ /** @fn uddi2__serviceDetail *uddi2__save_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to post service information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREtModel @brief Represents a request to post tModel information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137745 */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREtModel class. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, uddi2__tModel &tModel) @brief @param[in] soap gSOAP context @param[in] tModel a tModel Creates an instance of the save_USCOREtModel class using the specified tModel. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, std::vector tModels) @brief @param[in] soap gSOAP context @param[in] tModels collection of tModels Creates an instance of the save_USCOREtModel class using the specified tModels. */ /** @fn uddi2__tModelDetail *uddi2__save_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:set_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__set_USCOREpublisherAssertions @brief Represents a request to modify the existing publisher assertions for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137746 */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the set_USCOREpublisherAssertions class. */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the set_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__publisherAssertions *uddi2__set_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // Code Examples // //////////////////////////////////////////////////////////////////////////////// /** @page example1 Code Example 1: Finding a service This example shows you how to find Web services. In this case, the example finds Web services with names that begin with the word "magic". @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "magic"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREservice fs(soap, search_string); // Send the request uddi2__serviceList *sl = fs.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!sl) soap_print_fault(soap, stderr); // If OK, report the service name(s) and unique identification keys else if (sl->serviceInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator si = sl->serviceInfos->serviceInfo.begin(); si != sl->serviceInfos->serviceInfo.end(); ++si) { // Report serviceKey and businessKey std::cout << "serviceKey=" << (*si)->serviceKey << std::endl << "businessKey=" << (*si)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*si)->name.begin(); n != (*si)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example1 example1.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example2 Code Example 2: Finding a business This example shows you how to find a business from a UDDI server. @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "xmethods"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREbusiness fb(soap, search_string); // Send the request uddi2__businessList *bl = fb.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!bl) soap_print_fault(soap, stderr); // If OK, report the business name(s) and unique identification keys else if (bl->businessInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator bi = bl->businessInfos->businessInfo.begin(); bi != bl->businessInfos->businessInfo.end(); ++bi) { // Report businessKey std::cout << "businessKey=" << (*bi)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*bi)->name.begin(); n != (*bi)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example2 example2.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example3 Code Example 3: Publishing a WSDL and service on XMethods This example shows you how to publish a Web service. In this case, the example template code obtains an authorization token, saves the tModel with the WSDL URL in the server, and saves the business service information in the server. @code #include "pubH.h" const char *server = "https://uddi.xmethods.net/publish"; const char *userid = "..."; // user ID to access UDDI server const char *passwd = "..."; // password to access UDDI server int main(int argc, char **argv) { // Create a gSOAP context struct soap *soap = soap_new(); // Setup SSL context (optional) to verify server's credentials if (soap_ssl_client_context(soap, SOAP_SSL_DEFAULT, NULL, NULL, "cacerts.pem", NULL, NULL)) { soap_print_fault(soap, stderr); exit(1); } // Step 1: Get an authorization token from the UDDI server uddi2__get_USCOREauthToken get_authToken(soap, userid, passwd); uddi2__authToken *authToken = get_authToken.send(server); // Check if authorized if (!authToken) { soap_print_fault(soap, stderr); exit(1); } // Authorization info provided by server for this session char *authInfo = authToken->authInfo; // Step 2: Create a tModel for the WSDL to be published uddi2__tModel tModel; tModel.soap_default(soap); // Create the tModel and service name tModel.name = soap_new_uddi2__name(soap, -1); tModel.name->__item = "..."; tModel.name->xml__lang_ = "en"; // Create XMethods description elements (see http://www.xmethods.net/ve2/UDDI.po) uddi2__description *description = soap_new_uddi2__description(soap, 6); description[0].__item = "SHORT DESCRIPTION: ..."; description[0].xml__lang_ = "en"; description[1].__item = "SHORT DESCRIPTION: ..."; description[1].xml__lang_ = "en"; description[2].__item = "USAGE NOTES: ..."; description[2].xml__lang_ = "en"; description[3].__item = "HOMEPAGE URL: ..."; description[3].xml__lang_ = "en"; description[4].__item = "CONTACT EMAIL: ..."; description[4].xml__lang_ = "en"; description[5].__item = "IMPLEMENTATION: ..."; description[5].xml__lang_ = "en"; // Add the four description elements to the tModel tModel.description.push_back(description + 0); tModel.description.push_back(description + 1); tModel.description.push_back(description + 2); tModel.description.push_back(description + 4); // Add an overviewDoc element with description and overviewURL tModel.overviewDoc = soap_new_uddi2__overviewDoc(soap, -1); tModel.overviewDoc->soap_default(soap); tModel.overviewDoc->description.push_back(soap_new_uddi2__description(soap, -1)); tModel.overviewDoc->description[0]->__item = "WSDL source document"; tModel.overviewDoc->description[0]->xml__lang_ = "en"; tModel.overviewDoc->overviewURL = "http://.../my.wsdl#bindingName"; // Omit identifier bag tModel.identifierBag = NULL; // Add a category with a WSDL-specific keyedReference tModel.categoryBag = soap_new_uddi2__categoryBag(soap, -1); tModel.categoryBag->soap_default(soap); tModel.categoryBag->keyedReference.push_back(soap_new_uddi2__keyedReference(soap, -1)); tModel.categoryBag->keyedReference[0]->tModelKey = "..."; tModel.categoryBag->keyedReference[0]->keyName = "uddi-org:types"; tModel.categoryBag->keyedReference[0]->keyValue = "wsdlSpec"; tModel.authorizedName = "..."; tModel.operator_ = "..."; tModel.tModelKey = "..."; // Save the tModel uddi2__save_USCOREtModel save_tModel(soap, tModel); uddi2__tModelDetail *tModelDetail = save_tModel.send(server, authInfo); // Step 3: Create a new service to be published uddi2__businessService service; service.soap_default(soap); // Service name is the tModel name (XMethods) service.name.push_back(tModel.name); // Add two description elements to the service service.description.push_back(description + 4); service.description.push_back(description + 5); // Create binding template uddi2__bindingTemplate bindingTemplate; bindingTemplate.soap_default(soap); bindingTemplate.tModelInstanceDetails = soap_new_uddi2__tModelInstanceDetails(soap, -1); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo.push_back(soap_new_uddi2__tModelInstanceInfo(soap, -1)); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->instanceDetails = NULL; bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->tModelKey = tModel.tModelKey; bindingTemplate.accessPoint = soap_new_uddi2__accessPoint(soap, -1); bindingTemplate.accessPoint->__item = "..."; bindingTemplate.accessPoint->URLType = uddi2__URLType__http; bindingTemplate.hostingRedirector = NULL; bindingTemplate.serviceKey = "..."; bindingTemplate.bindingKey = "..."; // Add binding Template to service service.bindingTemplates = soap_new_uddi2__bindingTemplates(soap, -1); service.bindingTemplates->soap_default(soap); service.bindingTemplates->bindingTemplate.push_back(&bindingTemplate); service.categoryBag = NULL; service.serviceKey = "..."; service.businessKey = "..."; // Save the service uddi2__save_USCOREservice save_service(soap, service); uddi2__serviceDetail *serviceDetail = save_service.send(server, authInfo); // Step 4: Discard authorization token uddi2__discard_USCOREauthToken discard_authToken(soap, authInfo); uddi2__dispositionReport *dispositionReport = discard_authToken.send(server); // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat publish_v2.wsdl - soapcpp2 -I.. -ppub publish_v2.h - g++ -DWITH_OPENSSL -DWITH_NONAMESPACES -I.. -o example3 example3.cpp publish_v2.cpp pubC.cpp pubClient.cpp ../stdsoap2.cpp */ ] ################################################################################ # # UDDI v2 XML namespaces # ################################################################################ inq2 = "urn:uddi-org:inquiry_v2" pub2 = "urn:uddi-org:publication_v2" uddi2 = "urn:uddi-org:api_v2" ################################################################################ # # Type Definitions # ################################################################################ # Use regular C strings only: xsd__string = | char* | char* ################################################################################ # # Class/Struct Extensions # ################################################################################ # uddi2:find_binding object extended with con/de-structors and send() uddi2__find_USCOREbinding = $ uddi2__find_USCOREbinding(struct soap*); uddi2__find_USCOREbinding = $ uddi2__find_USCOREbinding(struct soap*, const char *tModelKey); uddi2__find_USCOREbinding = $ uddi2__find_USCOREbinding(struct soap*, std::vector tModelKeys); uddi2__find_USCOREbinding = $ uddi2__bindingDetail *send(const char *endpoint); # uddi2:find_business object extended with con/de-structors and send() uddi2__find_USCOREbusiness = $ uddi2__find_USCOREbusiness(struct soap*); uddi2__find_USCOREbusiness = $ uddi2__find_USCOREbusiness(struct soap*, const char *name); uddi2__find_USCOREbusiness = $ uddi2__find_USCOREbusiness(struct soap*, std::vector tModelKeys); uddi2__find_USCOREbusiness = $ uddi2__find_USCOREbusiness(struct soap*, std::vector keyedReferences); uddi2__find_USCOREbusiness = $ uddi2__businessList *send(const char *endpoint); # uddi2:find_relatedBusinesses object extended with con/de-structors and send() uddi2__find_USCORErelatedBusinesses = $ uddi2__find_USCORErelatedBusinesses(struct soap*); uddi2__find_USCORErelatedBusinesses = $ uddi2__find_USCORErelatedBusinesses(struct soap*, const char *businessKey); uddi2__find_USCORErelatedBusinesses = $ uddi2__relatedBusinessesList *send(const char *endpoint); # uddi2:find_service object extended with con/de-structors and send() uddi2__find_USCOREservice = $ uddi2__find_USCOREservice(struct soap*); uddi2__find_USCOREservice = $ uddi2__find_USCOREservice(struct soap*, const char *name); uddi2__find_USCOREservice = $ uddi2__find_USCOREservice(struct soap*, std::vector tModelKeys); uddi2__find_USCOREservice = $ uddi2__find_USCOREservice(struct soap*, std::vector keyedReferences); uddi2__find_USCOREservice = $ uddi2__serviceList* send(const char *endpoint); # uddi2:find_tModel object extended with con/de-structors and send() uddi2__find_USCOREtModel = $ uddi2__find_USCOREtModel(struct soap*); uddi2__find_USCOREtModel = $ uddi2__find_USCOREtModel(struct soap*, const char *name); uddi2__find_USCOREtModel = $ uddi2__find_USCOREtModel(struct soap*, std::vector keyedReferences); uddi2__find_USCOREtModel = $ uddi2__tModelList* send(const char *endpoint); # uddi2:get_bindingDetail object extended with con/de-structors and send() uddi2__get_USCOREbindingDetail = $ uddi2__get_USCOREbindingDetail(struct soap*); uddi2__get_USCOREbindingDetail = $ uddi2__get_USCOREbindingDetail(struct soap*, const char *bindingKey); uddi2__get_USCOREbindingDetail = $ uddi2__get_USCOREbindingDetail(struct soap*, std::vector bindingKeys); uddi2__get_USCOREbindingDetail = $ uddi2__bindingDetail* send(const char *endpoint); # uddi2:get_businessDetail object extended with con/de-structors and send() uddi2__get_USCOREbusinessDetail = $ uddi2__get_USCOREbusinessDetail(struct soap*); uddi2__get_USCOREbusinessDetail = $ uddi2__get_USCOREbusinessDetail(struct soap*, const char *businessKey); uddi2__get_USCOREbusinessDetail = $ uddi2__get_USCOREbusinessDetail(struct soap*, std::vector businessKeys); uddi2__get_USCOREbusinessDetail = $ uddi2__businessDetail* send(const char *endpoint); # uddi2:get_businessDetailExt object extended with con/de-structors and send() uddi2__get_USCOREbusinessDetailExt = $ uddi2__get_USCOREbusinessDetailExt(struct soap*); uddi2__get_USCOREbusinessDetailExt = $ uddi2__get_USCOREbusinessDetailExt(struct soap*, const char *businessKey); uddi2__get_USCOREbusinessDetailExt = $ uddi2__get_USCOREbusinessDetailExt(struct soap*, std::vector businessKeys); uddi2__get_USCOREbusinessDetailExt = $ uddi2__businessDetailExt* send(const char *endpoint); # uddi2:get_serviceDetail object extended with con/de-structors and send() uddi2__get_USCOREserviceDetail = $ uddi2__get_USCOREserviceDetail(struct soap*); uddi2__get_USCOREserviceDetail = $ uddi2__get_USCOREserviceDetail(struct soap*, const char *serviceKey); uddi2__get_USCOREserviceDetail = $ uddi2__get_USCOREserviceDetail(struct soap*, std::vector serviceKeys); uddi2__get_USCOREserviceDetail = $ uddi2__serviceDetail* send(const char *endpoint); # uddi2:get_tModelDetail object extended with con/de-structors and send() uddi2__get_USCOREtModelDetail = $ uddi2__get_USCOREtModelDetail(struct soap*); uddi2__get_USCOREtModelDetail = $ uddi2__get_USCOREtModelDetail(struct soap*, const char *tModelKey); uddi2__get_USCOREtModelDetail = $ uddi2__get_USCOREtModelDetail(struct soap*, std::vector tModelKeys); uddi2__get_USCOREtModelDetail = $ uddi2__tModelDetail* send(const char *endpoint); # uddi2:add_publisherAssertions object extended with con/de-structors and send() uddi2__add_USCOREpublisherAssertions = $ uddi2__add_USCOREpublisherAssertions(struct soap*); uddi2__add_USCOREpublisherAssertions = $ uddi2__add_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); uddi2__add_USCOREpublisherAssertions = $ uddi2__dispositionReport* send(const char *endpoint, char *authInfo); # uddi2:delete_binding object extended with con/de-structors and send() uddi2__delete_USCOREbinding = $ uddi2__delete_USCOREbinding(struct soap*); uddi2__delete_USCOREbinding = $ uddi2__delete_USCOREbinding(struct soap*, const char *bindingKey); uddi2__delete_USCOREbinding = $ uddi2__delete_USCOREbinding(struct soap*, std::vector bindingKeys); uddi2__delete_USCOREbinding = $ uddi2__dispositionReport* send(const char *endpoint, char *authInfo); # uddi2:delete_business object extended with con/de-structors and send() uddi2__delete_USCOREbusiness = $ uddi2__delete_USCOREbusiness(struct soap*); uddi2__delete_USCOREbusiness = $ uddi2__delete_USCOREbusiness(struct soap*, const char *businessKey); uddi2__delete_USCOREbusiness = $ uddi2__delete_USCOREbusiness(struct soap*, std::vector businessKeys); uddi2__delete_USCOREbusiness = $ uddi2__dispositionReport* send(const char *endpoint, char *authInfo); # uddi2:delete_service object extended with con/de-structors and send() uddi2__delete_USCOREservice = $ uddi2__delete_USCOREservice(struct soap*); uddi2__delete_USCOREservice = $ uddi2__delete_USCOREservice(struct soap*, const char *serviceKey); uddi2__delete_USCOREservice = $ uddi2__delete_USCOREservice(struct soap*, std::vector serviceKeys); uddi2__delete_USCOREservice = $ uddi2__dispositionReport* send(const char *endpoint, char *authInfo); # uddi2:delete_tModel object extended with con/de-structors and send() uddi2__delete_USCOREtModel = $ uddi2__delete_USCOREtModel(struct soap*); uddi2__delete_USCOREtModel = $ uddi2__delete_USCOREtModel(struct soap*, const char *tModelKey); uddi2__delete_USCOREtModel = $ uddi2__delete_USCOREtModel(struct soap*, std::vector tModelKeys); uddi2__delete_USCOREtModel = $ uddi2__dispositionReport* send(const char *endpoint, char *authInfo); # uddi2:delete_publisherAssertions object extended with con/de-structors and send() uddi2__delete_USCOREpublisherAssertions = $ uddi2__delete_USCOREpublisherAssertions(struct soap*); uddi2__delete_USCOREpublisherAssertions = $ uddi2__delete_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); uddi2__delete_USCOREpublisherAssertions = $ uddi2__dispositionReport* send(const char *endpoint, char *authInfo); # uddi2:discard_authToken object extended with con/de-structors and send() uddi2__discard_USCOREauthToken = $ uddi2__discard_USCOREauthToken(struct soap*); uddi2__discard_USCOREauthToken = $ uddi2__discard_USCOREauthToken(struct soap*, const char *authInfo); uddi2__discard_USCOREauthToken = $ uddi2__dispositionReport* send(const char *endpoint); # uddi2:get_assertionStatusReport object extended with con/de-structors and send() uddi2__get_USCOREassertionStatusReport = $ uddi2__get_USCOREassertionStatusReport(struct soap*); uddi2__get_USCOREassertionStatusReport = $ uddi2__get_USCOREassertionStatusReport(struct soap*, const char *completionStatus); uddi2__get_USCOREassertionStatusReport = $ uddi2__assertionStatusReport* send(const char *endpoint, char *authInfo); # uddi2:get_authToken object extended with con/de-structors and send() uddi2__get_USCOREauthToken = $ uddi2__get_USCOREauthToken(struct soap*); uddi2__get_USCOREauthToken = $ uddi2__get_USCOREauthToken(struct soap*, const char *userid, const char *passwd); uddi2__get_USCOREauthToken = $ uddi2__authToken* send(const char *endpoint); # uddi2:get_publisherAssertions object extended with con/de-structors and send() uddi2__get_USCOREpublisherAssertions = $ uddi2__get_USCOREpublisherAssertions(struct soap*); uddi2__get_USCOREpublisherAssertions = $ uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); # uddi2:get_registeredInfo object extended with con/de-structors and send() uddi2__get_USCOREregisteredInfo = $ uddi2__get_USCOREregisteredInfo(struct soap*); uddi2__get_USCOREregisteredInfo = $ uddi2__registeredInfo* send(const char *endpoint, char *authInfo); # uddi2:save_binding object extended with con/de-structors and send() uddi2__save_USCOREbinding = $ uddi2__save_USCOREbinding(struct soap*); uddi2__save_USCOREbinding = $ uddi2__save_USCOREbinding(struct soap*, uddi2__bindingTemplate &bindingTemplate); uddi2__save_USCOREbinding = $ uddi2__save_USCOREbinding(struct soap*, std::vector bindingTemplates); uddi2__save_USCOREbinding = $ uddi2__bindingDetail* send(const char *endpoint, char *authInfo); # uddi2:save_business object extended with con/de-structors and send() uddi2__save_USCOREbusiness = $ uddi2__save_USCOREbusiness(struct soap*); uddi2__save_USCOREbusiness = $ uddi2__save_USCOREbusiness(struct soap*, uddi2__businessEntity &businessEntity); uddi2__save_USCOREbusiness = $ uddi2__save_USCOREbusiness(struct soap*, std::vector businessEntities); uddi2__save_USCOREbusiness = $ uddi2__businessDetail* send(const char *endpoint, char *authInfo); # uddi2:save_service object extended with con/de-structors and send() uddi2__save_USCOREservice = $ uddi2__save_USCOREservice(struct soap*); uddi2__save_USCOREservice = $ uddi2__save_USCOREservice(struct soap*, uddi2__businessService &businessService); uddi2__save_USCOREservice = $ uddi2__save_USCOREservice(struct soap*, std::vector businessServices); uddi2__save_USCOREservice = $ uddi2__serviceDetail* send(const char *endpoint, char *authInfo); # uddi2:save_tModel object extended with con/de-structors and send() uddi2__save_USCOREtModel = $ uddi2__save_USCOREtModel(struct soap*); uddi2__save_USCOREtModel = $ uddi2__save_USCOREtModel(struct soap*, uddi2__tModel &tModel); uddi2__save_USCOREtModel = $ uddi2__save_USCOREtModel(struct soap*, std::vector tModels); uddi2__save_USCOREtModel = $ uddi2__tModelDetail* send(const char *endpoint, char *authInfo); # uddi2:set_publisherAssertions object extended with con/de-structors and send() uddi2__set_USCOREpublisherAssertions = $ uddi2__set_USCOREpublisherAssertions(struct soap*); uddi2__set_USCOREpublisherAssertions = $ uddi2__set_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); uddi2__set_USCOREpublisherAssertions = $ uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); gsoap-2.8.60/gsoap/uddi2/Makefile0000644000175000017500000000402413227173557016054 0ustar ellertellert.SUFFIXES: .wsdl .xsd GSOAP=../bin/soapcpp2 WSDL2H=../bin/wsdl2h SOAPH=../stdsoap2.h SOAPC=../stdsoap2.c SOAPCPP=../stdsoap2.cpp SOAPDOMC=../dom.c SOAPDOMCPP=../dom.cpp CC=gcc CPP=g++ LIBS= COFLAGS=-O2 CWFLAGS=-Wall CIFLAGS=-I../ CMFLAGS=-DWITH_NONAMESPACES CFLAGS= $(CWFLAGS) $(COFLAGS) $(CIFLAGS) $(CMFLAGS) all: example1 example2 example1: example1.cpp inqClientLib.o inquire_v2.o $(SOAPCPP) envC.o $(CPP) $(CFLAGS) -o example1 example1.cpp inqClientLib.o inquire_v2.o $(SOAPCPP) envC.o example2: example2.cpp inqClientLib.o inquire_v2.o $(SOAPCPP) envC.o $(CPP) $(CFLAGS) -o example2 example2.cpp inqClientLib.o inquire_v2.o $(SOAPCPP) envC.o example3: example3.cpp pubClientLib.o publish_v2.o $(SOAPCPP) envC.o $(CPP) $(CFLAGS) -DWITH_OPENSSL -o example3 example3.cpp pubClientLib.o publish_v2.o $(SOAPCPP) envC.o -lssl -lcrypto uddiClientLib.cpp: uddi_v2.h inquire_v2.h publish_v2.h $(GSOAP) -I.. -C -p uddi uddi_v2.h $(GSOAP) -I.. -C -p inq inquire_v2.h $(GSOAP) -I.. -C -p pub publish_v2.h inqClientLib.cpp: inquire_v2.h $(GSOAP) -I.. -C -p inq inquire_v2.h pubClientLib.cpp: publish_v2.h $(GSOAP) -I.. -C -p pub publish_v2.h envC.cpp: echo '' > env.h $(GSOAP) -I.. -CSL -p env env.h .c.o: $(CPP) $(CFLAGS) -c $< .cpp.o: $(CPP) $(CFLAGS) -c $< uddi_v2.h: inquire_v2.wsdl publish_v2.wsdl uddi_v2.xsd uddi2-typemap.dat $(WSDL2H) -tuddi2-typemap.dat -ouddi_v2.h inquire_v2.wsdl publish_v2.wsdl inquire_v2.h: inquire_v2.wsdl uddi_v2.xsd uddi2-typemap.dat $(WSDL2H) -tuddi2-typemap.dat inquire_v2.wsdl publish_v2.h: publish_v2.wsdl uddi_v2.xsd uddi2-typemap.dat $(WSDL2H) -tuddi2-typemap.dat publish_v2.wsdl .PHONY: clean distclean clean: rm -f *.o *.log *.xml *.nsmap *Stub.h inqH.h pubH.h uddiH.h *Proxy.h *Object.h inqC*.cpp inqS*.cpp pubC*.cpp pubS*.cpp uddiC*.cpp uddiS*.cpp env*.h env*.cpp distclean: rm -f *.o *.log *.xml *.nsmap *Stub.h inqH.h pubH.h uddiH.h *Proxy.h *Object.h inqC*.cpp inqS*.cpp pubC*.cpp pubS*.cpp uddiC*.cpp uddiS*.cpp env*.h env*.cpp rm -f example1 example2 example3 gsoap-2.8.60/gsoap/uddi2/example2.cpp0000644000175000017500000000530213227173557016635 0ustar ellertellert/* example2.cpp Example UDDI V2 Client -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2004-2005, Robert van Engelen, Genivia Inc. All Rights Reserved. This software is released under one of the following two licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "inqH.h" int main(int argc, char **argv) { char *search_string = "xmethods"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREbusiness fb(soap, search_string); // Send the request uddi2__businessList *bl = fb.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!bl) soap_print_fault(soap, stderr); // If OK, report the business name(s) and unique identification keys else if (bl->businessInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator bi = bl->businessInfos->businessInfo.begin(); bi != bl->businessInfos->businessInfo.end(); ++bi) { // Report businessKey std::cout << "businessKey=" << (*bi)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*bi)->name.begin(); n != (*bi)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } gsoap-2.8.60/gsoap/uddi2/publish_v2.h0000644000175000017500000045566113227173557016663 0ustar ellertellert/** @mainpage gSOAP UDDI v2 Universal Description, Discovery and Integration, or UDDI, is the name of a group of web-based registries that expose information about a business or other entity and its technical interfaces. See the UDDI v2 specification @url http://uddi.org/pubs/ProgrammersAPI_v2.htm for more details. @section UDDI2_CLASSES Classes See Related Pages for examples. UDDI Inquire classes - @ref uddi2__find_USCOREbinding - @ref uddi2__find_USCOREbusiness - @ref uddi2__find_USCORErelatedBusinesses - @ref uddi2__find_USCOREservice - @ref uddi2__find_USCOREtModel - @ref uddi2__get_USCOREbindingDetail - @ref uddi2__get_USCOREbusinessDetail - @ref uddi2__get_USCOREbusinessDetailExt - @ref uddi2__get_USCOREserviceDetail - @ref uddi2__get_USCOREtModelDetail UDDI Publish classes - @ref uddi2__add_USCOREpublisherAssertions - @ref uddi2__delete_USCOREbinding - @ref uddi2__delete_USCOREbusiness - @ref uddi2__delete_USCOREservice - @ref uddi2__delete_USCOREtModel - @ref uddi2__delete_USCOREpublisherAssertions - @ref uddi2__discard_USCOREauthToken - @ref uddi2__get_USCOREassertionStatusReport - @ref uddi2__get_USCOREauthToken - @ref uddi2__get_USCOREpublisherAssertions - @ref uddi2__get_USCOREregisteredInfo - @ref uddi2__save_USCOREbinding - @ref uddi2__save_USCOREbusiness - @ref uddi2__save_USCOREservice - @ref uddi2__save_USCOREtModel - @ref uddi2__set_USCOREpublisherAssertions @section UDDI2_BINDINGS Binding Reference - @ref InquireSoap - @ref PublishSoap */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbinding @brief Represents a request to locate bindings that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137712 */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbinding class. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the find_USCOREbinding class using the specified tModel key. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREbinding class using the specified tModel keys. */ /** @fn uddi2__bindingDetail* uddi2__find_USCOREbinding::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to find binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbusiness @brief Represents a request to locate businesses that meet specific requirements. When the send method is called, the instance returns a uddi2__businessList object that contains a list of business that matched the search criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137713 See also @ref example2. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified name of the requested business. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified category references. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified tModel keys. */ /** @fn uddi2__businessList *uddi2__find_USCOREbusiness::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessList object or NULL on error Send a request to a UDDI server to find a list of businesses. See also @ref example2. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_relatedBusinesses // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCORErelatedBusinesses @brief Represents a request to locate businesses that are related to a specific business. When the send method is called, the instance returns a uddi2__relatedBusinessList object that contains a list of business that matched the relationship set. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137714 */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCORErelatedBusiness class. */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the find_USCORErelatedBusiness class using the specified business key. */ /** @fn uddi2__relatedBusinessesList *uddi2__find_USCORErelatedBusinesses::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__relatedBusinessList object or NULL on error Send a request to a UDDI server to find a list of related businesses. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREservice @brief Represents a request to locate services that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137715 See also @ref example1. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREservice class. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the service Creates an instance of the find_USCOREservice class using the specified name. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREservice class using the specified category keys. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREservice class using the specified tModel keys. */ /** @fn uddi2__serviceList* uddi2__find_USCOREservice::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceList object or NULL on error Send a request to a UDDI server to find a list of services. See also @ref example1. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREtModel @brief Represents a request to locate a list of tModel entries that match a set of specific criteria. The result of a search is a uddi2__tModelList object that contains information about registered tModel data that matches the criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137716 */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREtModel class. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the tModel Creates an instance of the find_USCOREtModel class using the specified tModel name. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREtModel class using the specified category keys. */ /** @fn uddi2__tModelList* uddi2__find_USCOREtModel::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelList object or NULL on error Send a request to a UDDI server to find a tModelList. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_bindingDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbindingDetail @brief Represents a request to get binding details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137717 */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbindingDetail class. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey string Creates an instance of the get_USCOREbindingDetail class using the specified binding key. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of key strings Creates an instance of the get_USCOREbindingDetail class using the specified collection of binding keys. */ /** @fn uddi2__bindingDetail* uddi2__get_USCOREbindingDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to get the binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetail @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137718 */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetail class. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetail class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetail class using the specified collection of business keys. */ /** @fn uddi2__businessDetail* uddi2__get_USCOREbusinessDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetailExt // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetailExt @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137719 */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetailExt class. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetailExt class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetailExt class using the specified collection of business keys. */ /** @fn uddi2__businessDetailExt* uddi2__get_USCOREbusinessDetailExt::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetailExt object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_serviceDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREserviceDetail @brief Represents a request to get service details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137720 */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREserviceDetail class. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey string Creates an instance of the get_USCOREserviceDetail class using the specified service key. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of key strings Creates an instance of the get_USCOREserviceDetail class using the specified collection of service keys. */ /** @fn uddi2__serviceDetail* uddi2__get_USCOREserviceDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to get the service details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_tModelDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREtModelDetail @brief Represents a request to get tModel details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137721 */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREtModelDetail class. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the get_USCOREtModelDetail class using the specified tModel key. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of key strings Creates an instance of the get_USCOREtModelDetail class using the specified collection of tModel keys. */ /** @fn uddi2__tModelDetail* uddi2__get_USCOREtModelDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to get the tModel details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:add_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__add_USCOREpublisherAssertions @brief Represents a request to add one or more publisher assertions to the assertion collection for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137731 */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the add_USCOREpublisherAssertions class. */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the add_USCOREpublisherAssertions class using the specified publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__add_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI server to add one or more publisher assertions to the assertion collection for an individual publisher. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbinding @brief Represents a request to delete a binding that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137732 */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap) @brief Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey a binding key string Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of binding keys Creates an instance of the delete_USCOREbinding class using the specified binding keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a binding that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbusiness @brief Represents a request to delete a business that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137733 */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREbusiness class. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey a business key string Creates an instance of the delete_USCOREbusiness class using the specified business key. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of business keys Creates an instance of the delete_USCOREbusiness class using the specified business keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a business that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREservice @brief Represents a request to delete a service that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137735 */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREservice class. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey a service key string Creates an instance of the delete_USCOREservice class using the specified service key. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of service keys Creates an instance of the delete_USCOREservice class using the specified service keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a service that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREtModel @brief Represents a request to delete a tModel that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137736 */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREtModel class. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey a tModel key string Creates an instance of the delete_USCOREtModel class using the specified tModel key. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel keys Creates an instance of the delete_USCOREtModel class using the specified tModel keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a tModel that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREpublisherAssertions @brief Represents a request to delete publisher assertions meeting the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137734 */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREpublisherAssertions class. */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions a collection of publisher assertions Creates an instance of the delete_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete publisher assertions meeting the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:discard_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__discard_USCOREauthToken @brief Represents a request to discard an authorization token obtained with the get_USCOREauthToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137737 */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREauthToken class. */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap, const char *authInfo) @brief @param[in] soap gSOAP context @param[in] authInfo authorization token provided by the UDDI server Creates an instance of the delete_USCOREauthToken class using the specified authentication token string. */ /** @fn uddi2__dispositionReport *uddi2__discard_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to discard an authentication token. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_assertionStatusReport // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREassertionStatusReport @brief Provides the ability to determine the status of current and outstanding publisher assertions. The results can be restricted by setting the completionStatus property. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137738 */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREassertionStatusReport class. */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap, const char *completionStatus) @brief @param[in] soap gSOAP context @param[in] completionStatus completion status string Creates an instance of the get_USCOREassertionStatusReport class using the specified completion status. */ /** @fn uddi2__assertionStatusReport *uddi2__get_USCOREassertionStatusReport::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__assertionStatusReport object or NULL on error Send a request to a UDDI service to get the status of current and outstanding publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREauthToken @brief Represents a request to obtain an authorization token, which is represented by the uddi2__authToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137739 */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREauthToken class. */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap, const char *userid, const char *passwd) @brief @param[in] soap gSOAP context @param[in] userid the user ID string @param[in] passwd the password string Creates an instance of the get_USCOREauthToken class using the specified user ID and password. */ /** @fn uddi2__authToken *uddi2__get_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__authToken object or NULL on error Send a request to a UDDI service to get a authorization token given a user ID and password. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREpublisherAssertions @brief Represents a request to obtain the full set of publisher assertions that are associated with an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137740 */ /** @fn uddi2__get_USCOREpublisherAssertions::uddi2__get_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREpublisherAssetions class. */ /** @fn uddi2__publisherAssertions *uddi2__get_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI service to get publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_registeredInfo // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREregisteredInfo @brief Represents a request to get all registered business entities and tModels controlled by an individual. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137741 */ /** @fn uddi2__get_USCOREregisteredInfo::uddi2__get_USCOREregisteredInfo(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREregisteredInfo class. */ /** @fn uddi2__registeredInfo *uddi2__get_USCOREregisteredInfo::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__registeredInfo object or NULL on error Send a request to a UDDI service to get all registered business entities and tModels controlled by an individual. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbinding @brief Represents a request to post binding information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137742 */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbinding class. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, uddi2__bindingTemplate &bindingTemplate) @brief @param[in] soap gSOAP context @param[in] bindingTemplate binding template Creates an instance of the save_USCOREbinding class using the specified binding template. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, std::vector bindingTemplates) @brief @param[in] soap gSOAP context @param[in] bindingTemplates collection of binding templates Creates an instance of the save_USCOREbinding class using the specified binding templates. */ /** @fn uddi2__bindingDetail *uddi2__save_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to post binding information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbusiness @brief Represents a request to post business information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137743 */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbusiness class. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, uddi2__businessEntity &businessEntity) @brief @param[in] soap gSOAP context @param[in] businessEntity business entity Creates an instance of the save_USCOREbusiness class using the specified business entity. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, std::vector businessEntities) @brief @param[in] soap gSOAP context @param[in] businessEntities collection of business entities Creates an instance of the save_USCOREbusiness class using the specified business entities. */ /** @fn uddi2__businessDetail *uddi2__save_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to post business information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREservice @brief Represents a request to post service information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137744 */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREservice class. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, uddi2__businessService &businessService) @brief @param[in] soap gSOAP context @param[in] businessService business service Creates an instance of the save_USCOREservice class using the specified service. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, std::vector businessServices) @brief @param[in] soap gSOAP context @param[in] businessServices collection of business services Creates an instance of the save_USCOREservice class using the specified services. */ /** @fn uddi2__serviceDetail *uddi2__save_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to post service information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREtModel @brief Represents a request to post tModel information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137745 */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREtModel class. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, uddi2__tModel &tModel) @brief @param[in] soap gSOAP context @param[in] tModel a tModel Creates an instance of the save_USCOREtModel class using the specified tModel. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, std::vector tModels) @brief @param[in] soap gSOAP context @param[in] tModels collection of tModels Creates an instance of the save_USCOREtModel class using the specified tModels. */ /** @fn uddi2__tModelDetail *uddi2__save_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:set_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__set_USCOREpublisherAssertions @brief Represents a request to modify the existing publisher assertions for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137746 */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the set_USCOREpublisherAssertions class. */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the set_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__publisherAssertions *uddi2__set_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // Code Examples // //////////////////////////////////////////////////////////////////////////////// /** @page example1 Code Example 1: Finding a service This example shows you how to find Web services. In this case, the example finds Web services with names that begin with the word "magic". @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "magic"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREservice fs(soap, search_string); // Send the request uddi2__serviceList *sl = fs.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!sl) soap_print_fault(soap, stderr); // If OK, report the service name(s) and unique identification keys else if (sl->serviceInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator si = sl->serviceInfos->serviceInfo.begin(); si != sl->serviceInfos->serviceInfo.end(); ++si) { // Report serviceKey and businessKey std::cout << "serviceKey=" << (*si)->serviceKey << std::endl << "businessKey=" << (*si)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*si)->name.begin(); n != (*si)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example1 example1.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example2 Code Example 2: Finding a business This example shows you how to find a business from a UDDI server. @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "xmethods"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREbusiness fb(soap, search_string); // Send the request uddi2__businessList *bl = fb.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!bl) soap_print_fault(soap, stderr); // If OK, report the business name(s) and unique identification keys else if (bl->businessInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator bi = bl->businessInfos->businessInfo.begin(); bi != bl->businessInfos->businessInfo.end(); ++bi) { // Report businessKey std::cout << "businessKey=" << (*bi)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*bi)->name.begin(); n != (*bi)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example2 example2.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example3 Code Example 3: Publishing a WSDL and service on XMethods This example shows you how to publish a Web service. In this case, the example template code obtains an authorization token, saves the tModel with the WSDL URL in the server, and saves the business service information in the server. @code #include "pubH.h" const char *server = "https://uddi.xmethods.net/publish"; const char *userid = "..."; // user ID to access UDDI server const char *passwd = "..."; // password to access UDDI server int main(int argc, char **argv) { // Create a gSOAP context struct soap *soap = soap_new(); // Setup SSL context (optional) to verify server's credentials if (soap_ssl_client_context(soap, SOAP_SSL_DEFAULT, NULL, NULL, "cacerts.pem", NULL, NULL)) { soap_print_fault(soap, stderr); exit(1); } // Step 1: Get an authorization token from the UDDI server uddi2__get_USCOREauthToken get_authToken(soap, userid, passwd); uddi2__authToken *authToken = get_authToken.send(server); // Check if authorized if (!authToken) { soap_print_fault(soap, stderr); exit(1); } // Authorization info provided by server for this session char *authInfo = authToken->authInfo; // Step 2: Create a tModel for the WSDL to be published uddi2__tModel tModel; tModel.soap_default(soap); // Create the tModel and service name tModel.name = soap_new_uddi2__name(soap, -1); tModel.name->__item = "..."; tModel.name->xml__lang_ = "en"; // Create XMethods description elements (see http://www.xmethods.net/ve2/UDDI.po) uddi2__description *description = soap_new_uddi2__description(soap, 6); description[0].__item = "SHORT DESCRIPTION: ..."; description[0].xml__lang_ = "en"; description[1].__item = "SHORT DESCRIPTION: ..."; description[1].xml__lang_ = "en"; description[2].__item = "USAGE NOTES: ..."; description[2].xml__lang_ = "en"; description[3].__item = "HOMEPAGE URL: ..."; description[3].xml__lang_ = "en"; description[4].__item = "CONTACT EMAIL: ..."; description[4].xml__lang_ = "en"; description[5].__item = "IMPLEMENTATION: ..."; description[5].xml__lang_ = "en"; // Add the four description elements to the tModel tModel.description.push_back(description + 0); tModel.description.push_back(description + 1); tModel.description.push_back(description + 2); tModel.description.push_back(description + 4); // Add an overviewDoc element with description and overviewURL tModel.overviewDoc = soap_new_uddi2__overviewDoc(soap, -1); tModel.overviewDoc->soap_default(soap); tModel.overviewDoc->description.push_back(soap_new_uddi2__description(soap, -1)); tModel.overviewDoc->description[0]->__item = "WSDL source document"; tModel.overviewDoc->description[0]->xml__lang_ = "en"; tModel.overviewDoc->overviewURL = "http://.../my.wsdl#bindingName"; // Omit identifier bag tModel.identifierBag = NULL; // Add a category with a WSDL-specific keyedReference tModel.categoryBag = soap_new_uddi2__categoryBag(soap, -1); tModel.categoryBag->soap_default(soap); tModel.categoryBag->keyedReference.push_back(soap_new_uddi2__keyedReference(soap, -1)); tModel.categoryBag->keyedReference[0]->tModelKey = "..."; tModel.categoryBag->keyedReference[0]->keyName = "uddi-org:types"; tModel.categoryBag->keyedReference[0]->keyValue = "wsdlSpec"; tModel.authorizedName = "..."; tModel.operator_ = "..."; tModel.tModelKey = "..."; // Save the tModel uddi2__save_USCOREtModel save_tModel(soap, tModel); uddi2__tModelDetail *tModelDetail = save_tModel.send(server, authInfo); // Step 3: Create a new service to be published uddi2__businessService service; service.soap_default(soap); // Service name is the tModel name (XMethods) service.name.push_back(tModel.name); // Add two description elements to the service service.description.push_back(description + 4); service.description.push_back(description + 5); // Create binding template uddi2__bindingTemplate bindingTemplate; bindingTemplate.soap_default(soap); bindingTemplate.tModelInstanceDetails = soap_new_uddi2__tModelInstanceDetails(soap, -1); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo.push_back(soap_new_uddi2__tModelInstanceInfo(soap, -1)); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->instanceDetails = NULL; bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->tModelKey = tModel.tModelKey; bindingTemplate.accessPoint = soap_new_uddi2__accessPoint(soap, -1); bindingTemplate.accessPoint->__item = "..."; bindingTemplate.accessPoint->URLType = uddi2__URLType__http; bindingTemplate.hostingRedirector = NULL; bindingTemplate.serviceKey = "..."; bindingTemplate.bindingKey = "..."; // Add binding Template to service service.bindingTemplates = soap_new_uddi2__bindingTemplates(soap, -1); service.bindingTemplates->soap_default(soap); service.bindingTemplates->bindingTemplate.push_back(&bindingTemplate); service.categoryBag = NULL; service.serviceKey = "..."; service.businessKey = "..."; // Save the service uddi2__save_USCOREservice save_service(soap, service); uddi2__serviceDetail *serviceDetail = save_service.send(server, authInfo); // Step 4: Discard authorization token uddi2__discard_USCOREauthToken discard_authToken(soap, authInfo); uddi2__dispositionReport *dispositionReport = discard_authToken.send(server); // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat publish_v2.wsdl - soapcpp2 -I.. -ppub publish_v2.h - g++ -DWITH_OPENSSL -DWITH_NONAMESPACES -I.. -o example3 example3.cpp publish_v2.cpp pubC.cpp pubClient.cpp ../stdsoap2.cpp */ /* publish_v2.h Generated by wsdl2h 1.2.0 from publish_v2.wsdl and uddi2-typemap.dat 2005-04-24 00:29:41 GMT Copyright (C) 2001-2005 Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. */ /* NOTE: - Compile this file with soapcpp2 to complete the code generation process. - Use wsdl2h option -l to view the software license terms. - Use wsdl2h options -c and -s to generate pure C code or C++ code without STL. - To build with STL, stlvector.h from the gSOAP distribution must be in the current directory. Or use soapcpp2 option -I with path to stlvector.h. - Use typemap.dat to control schema namespace bindings and type mappings. It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces section below and add the modified lines to typemap.dat to rerun wsdl2h. - Use Doxygen (www.doxygen.org) to browse this file. */ /******************************************************************************\ * * * urn:uddi-org:publication_v2 * * * \******************************************************************************/ /* WSDL Documentation: Copyright (c) 2000 - 2002 by Accenture, Ariba, Inc., Commerce One, Inc. Fujitsu Limited, Hewlett-Packard Company, i2 Technologies, Inc., Intel Corporation, International Business Machines Corporation, Microsoft Corporation, Oracle Corporation, SAP AG, Sun Microsystems, Inc., and VeriSign, Inc. All Rights Reserved. WSDL Service Interface for UDDI Publication API V2.0 This WSDL document defines the publication API calls for interacting with the UDDI registry. The complete UDDI API specification is available at http://www.uddi.org/specification.html. */ //gsoapopt w #import "stlvector.h" /******************************************************************************\ * * * Schema Namespaces * * * \******************************************************************************/ /* NOTE: It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings below and add the modified lines to typemap.dat to rerun wsdl2h: pub2 = "urn:uddi-org:publication_v2" uddi2 = urn:uddi-org:api_v2 */ //gsoap pub2 schema namespace: urn:uddi-org:publication_v2 //gsoap uddi2 schema namespace: urn:uddi-org:api_v2 //gsoap pub2 schema form: unqualified //gsoap uddi2 schema elementForm: qualified //gsoap uddi2 schema attributeForm: unqualified /******************************************************************************\ * * * Schema Types * * * \******************************************************************************/ /// Primitive built-in type "xs:NMTOKEN" typedef char* xsd__NMTOKEN; /// Built-in attribute "xml:lang" typedef char* xml__lang; class uddi2__accessPoint; class uddi2__address; class uddi2__addressLine; class uddi2__assertionStatusItem; class uddi2__bindingTemplate; class uddi2__bindingTemplates; class uddi2__businessEntity; class uddi2__businessEntityExt; class uddi2__businessInfo; class uddi2__businessInfos; class uddi2__businessService; class uddi2__businessServices; class uddi2__categoryBag; class uddi2__contact; class uddi2__contacts; class uddi2__description; class uddi2__discoveryURL; class uddi2__discoveryURLs; class uddi2__dispositionReport; class uddi2__email; class uddi2__errInfo; class uddi2__findQualifiers; class uddi2__hostingRedirector; class uddi2__identifierBag; class uddi2__instanceDetails; class uddi2__keyedReference; class uddi2__keysOwned; class uddi2__name; class uddi2__overviewDoc; class uddi2__phone; class uddi2__publisherAssertion; class uddi2__relatedBusinessInfo; class uddi2__relatedBusinessInfos; class uddi2__result; class uddi2__serviceInfo; class uddi2__serviceInfos; class uddi2__sharedRelationships; class uddi2__tModel; class uddi2__tModelBag; class uddi2__tModelInfo; class uddi2__tModelInfos; class uddi2__tModelInstanceDetails; class uddi2__tModelInstanceInfo; class uddi2__add_USCOREpublisherAssertions; class uddi2__delete_USCOREbinding; class uddi2__delete_USCOREbusiness; class uddi2__delete_USCOREpublisherAssertions; class uddi2__delete_USCOREservice; class uddi2__delete_USCOREtModel; class uddi2__discard_USCOREauthToken; class uddi2__find_USCOREbinding; class uddi2__find_USCOREbusiness; class uddi2__find_USCORErelatedBusinesses; class uddi2__find_USCOREservice; class uddi2__find_USCOREtModel; class uddi2__get_USCOREassertionStatusReport; class uddi2__get_USCOREauthToken; class uddi2__get_USCOREbindingDetail; class uddi2__get_USCOREbusinessDetail; class uddi2__get_USCOREbusinessDetailExt; class uddi2__get_USCOREpublisherAssertions; class uddi2__get_USCOREregisteredInfo; class uddi2__get_USCOREserviceDetail; class uddi2__get_USCOREtModelDetail; class uddi2__save_USCOREbinding; class uddi2__save_USCOREbusiness; class uddi2__save_USCOREservice; class uddi2__save_USCOREtModel; class uddi2__set_USCOREpublisherAssertions; class uddi2__validate_USCOREvalues; class uddi2__assertionStatusReport; class uddi2__authToken; class uddi2__bindingDetail; class uddi2__businessDetail; class uddi2__businessDetailExt; class uddi2__businessList; class uddi2__publisherAssertions; class uddi2__registeredInfo; class uddi2__relatedBusinessesList; class uddi2__serviceDetail; class uddi2__serviceList; class uddi2__tModelDetail; class uddi2__tModelList; /// Schema "urn:uddi-org:api_v2":bindingKey simpleType restriction of xs:string typedef char* uddi2__bindingKey; /// Schema "urn:uddi-org:api_v2":businessKey simpleType restriction of xs:string typedef char* uddi2__businessKey; /// Schema "urn:uddi-org:api_v2":serviceKey simpleType restriction of xs:string typedef char* uddi2__serviceKey; /// Schema "urn:uddi-org:api_v2":tModelKey simpleType restriction of xs:string typedef char* uddi2__tModelKey; /// Schema "urn:uddi-org:api_v2":direction simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__direction' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__direction { uddi2__direction__fromKey, ///< xs:NMTOKEN value="fromKey" uddi2__direction__toKey, ///< xs:NMTOKEN value="toKey" }; /// Schema "urn:uddi-org:api_v2":truncated simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__truncated' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__truncated { uddi2__truncated__true_, ///< xs:NMTOKEN value="true" uddi2__truncated__false_, ///< xs:NMTOKEN value="false" }; /// Schema "urn:uddi-org:api_v2":URLType simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__URLType' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__URLType { uddi2__URLType__mailto, ///< xs:NMTOKEN value="mailto" uddi2__URLType__http, ///< xs:NMTOKEN value="http" uddi2__URLType__https, ///< xs:NMTOKEN value="https" uddi2__URLType__ftp, ///< xs:NMTOKEN value="ftp" uddi2__URLType__fax, ///< xs:NMTOKEN value="fax" uddi2__URLType__phone, ///< xs:NMTOKEN value="phone" uddi2__URLType__other, ///< xs:NMTOKEN value="other" }; /// Schema "urn:uddi-org:api_v2":keyType simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__keyType' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__keyType { uddi2__keyType__businessKey, ///< xs:NMTOKEN value="businessKey" uddi2__keyType__tModelKey, ///< xs:NMTOKEN value="tModelKey" uddi2__keyType__serviceKey, ///< xs:NMTOKEN value="serviceKey" uddi2__keyType__bindingKey, ///< xs:NMTOKEN value="bindingKey" }; /// Schema urn:uddi-org:api_v2:"address" class uddi2__address { public: /// Vector of uddi2__addressLine* with length 0..unbounded std::vector addressLine 0; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// Attribute sortCode of type xs:string @char* sortCode 0; ///< Optional attribute /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"assertionStatusItem" class uddi2__assertionStatusItem { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keysOwned uddi2__keysOwned* keysOwned 1; ///< Required element /// Attribute completionStatus of type xs:string @char* completionStatus 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingTemplate" class uddi2__bindingTemplate { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":tModelInstanceDetails uddi2__tModelInstanceDetails* tModelInstanceDetails 1; ///< Required element // CHOICE OF ELEMENTS: /// Element reference "urn:uddi-org:api_v2":accessPoint uddi2__accessPoint* accessPoint 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":hostingRedirector uddi2__hostingRedirector* hostingRedirector 1; ///< Required element // END CHOICE /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 0; ///< Optional attribute /// Attribute bindingKey of type "urn:uddi-org:api_v2":bindingKey @uddi2__bindingKey bindingKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingTemplates" class uddi2__bindingTemplates { public: /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessEntity" class uddi2__businessEntity { public: /// Element reference "urn:uddi-org:api_v2":discoveryURLs uddi2__discoveryURLs* discoveryURLs 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":contacts uddi2__contacts* contacts 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":businessServices uddi2__businessServices* businessServices 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 0; ///< Optional attribute /// Attribute authorizedName of type xs:string @char* authorizedName 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessEntityExt" class uddi2__businessEntityExt { public: /// Element reference "urn:uddi-org:api_v2":businessEntity uddi2__businessEntity* businessEntity 1; ///< Required element // TODO: // Schema extensibility is user-definable // Consult the protocol documentation to insert declarations here: _XML __any ; ///< Catch any element content in XML string /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessInfo" class uddi2__businessInfo { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":serviceInfos uddi2__serviceInfos* serviceInfos 1; ///< Required element /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessInfos" class uddi2__businessInfos { public: /// Vector of uddi2__businessInfo* with length 0..unbounded std::vector businessInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessService" class uddi2__businessService { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":bindingTemplates uddi2__bindingTemplates* bindingTemplates 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessServices" class uddi2__businessServices { public: /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"categoryBag" class uddi2__categoryBag { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"contact" class uddi2__contact { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":personName char* personName 1; ///< Required element /// Vector of uddi2__phone* with length 0..unbounded std::vector phone 0; /// Vector of uddi2__email* with length 0..unbounded std::vector email 0; /// Vector of uddi2__address* with length 0..unbounded std::vector address 0; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"contacts" class uddi2__contacts { public: /// Vector of uddi2__contact* with length 0..unbounded std::vector contact 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"discoveryURLs" class uddi2__discoveryURLs { public: /// Vector of uddi2__discoveryURL* with length 0..unbounded std::vector discoveryURL 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"dispositionReport" class uddi2__dispositionReport { public: /// Vector of uddi2__result* with length 0..unbounded std::vector result 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"findQualifiers" class uddi2__findQualifiers { public: /// Vector of char* with length 0..unbounded std::vector findQualifier 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"hostingRedirector" class uddi2__hostingRedirector { public: /// Attribute bindingKey of type "urn:uddi-org:api_v2":bindingKey @uddi2__bindingKey bindingKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"identifierBag" class uddi2__identifierBag { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"instanceDetails" class uddi2__instanceDetails { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewDoc uddi2__overviewDoc* overviewDoc 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":instanceParms char* instanceParms 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"keyedReference" class uddi2__keyedReference { public: /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 0; ///< Optional attribute /// Attribute keyName of type xs:string @char* keyName 0; ///< Optional attribute /// Attribute keyValue of type xs:string @char* keyValue 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"keysOwned" class uddi2__keysOwned { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"overviewDoc" class uddi2__overviewDoc { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewURL char* overviewURL 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"publisherAssertion" class uddi2__publisherAssertion { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 1; ///< Required element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessInfo" class uddi2__relatedBusinessInfo { public: /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Vector of uddi2__sharedRelationships* with length 0..2 std::vector sharedRelationships 1:2; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessInfos" class uddi2__relatedBusinessInfos { public: /// Vector of uddi2__relatedBusinessInfo* with length 0..unbounded std::vector relatedBusinessInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"result" class uddi2__result { public: /// Element reference "urn:uddi-org:api_v2":errInfo uddi2__errInfo* errInfo 0; ///< Optional element /// Attribute keyType of type "urn:uddi-org:api_v2":keyType @enum uddi2__keyType* keyType 0; ///< Optional attribute /// Attribute errno of type xs:int @int errno_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceInfo" class uddi2__serviceInfo { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceInfos" class uddi2__serviceInfos { public: /// Vector of uddi2__serviceInfo* with length 0..unbounded std::vector serviceInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"sharedRelationships" class uddi2__sharedRelationships { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// Attribute direction of type "urn:uddi-org:api_v2":direction @enum uddi2__direction direction 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModel" class uddi2__tModel { public: /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 1; ///< Required element /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewDoc uddi2__overviewDoc* overviewDoc 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 0; ///< Optional attribute /// Attribute authorizedName of type xs:string @char* authorizedName 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelBag" class uddi2__tModelBag { public: /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInfo" class uddi2__tModelInfo { public: /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 1; ///< Required element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInfos" class uddi2__tModelInfos { public: /// Vector of uddi2__tModelInfo* with length 0..unbounded std::vector tModelInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInstanceDetails" class uddi2__tModelInstanceDetails { public: /// Vector of uddi2__tModelInstanceInfo* with length 0..unbounded std::vector tModelInstanceInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInstanceInfo" class uddi2__tModelInstanceInfo { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":instanceDetails uddi2__instanceDetails* instanceDetails 0; ///< Optional element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"add_publisherAssertions" class uddi2__add_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__add_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__add_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_binding" class uddi2__delete_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__bindingKey with length 0..unbounded std::vector bindingKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*, const char *bindingKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*, std::vector bindingKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_business" class uddi2__delete_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_publisherAssertions" class uddi2__delete_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_service" class uddi2__delete_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__serviceKey with length 0..unbounded std::vector serviceKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*, const char *serviceKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*, std::vector serviceKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_tModel" class uddi2__delete_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"discard_authToken" class uddi2__discard_USCOREauthToken { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__discard_USCOREauthToken(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__discard_USCOREauthToken(struct soap*, const char *authInfo); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_binding" class uddi2__find_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_business" class uddi2__find_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":discoveryURLs uddi2__discoveryURLs* discoveryURLs 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__businessList *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_relatedBusinesses" class uddi2__find_USCORErelatedBusinesses { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCORErelatedBusinesses(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCORErelatedBusinesses(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__relatedBusinessesList *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_service" class uddi2__find_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__serviceList* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_tModel" class uddi2__find_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__tModelList* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_assertionStatusReport" class uddi2__get_USCOREassertionStatusReport { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":completionStatus char* completionStatus 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREassertionStatusReport(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREassertionStatusReport(struct soap*, const char *completionStatus); /// Member declared in uddi2-typemap.dat uddi2__assertionStatusReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_authToken" class uddi2__get_USCOREauthToken { public: /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute userID of type xs:string @char* userID 1; ///< Required attribute /// Attribute cred of type xs:string @char* cred 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREauthToken(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREauthToken(struct soap*, const char *userid, const char *passwd); /// Member declared in uddi2-typemap.dat uddi2__authToken* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_bindingDetail" class uddi2__get_USCOREbindingDetail { public: /// Vector of uddi2__bindingKey with length 0..unbounded std::vector bindingKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*, const char *bindingKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*, std::vector bindingKeys); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_businessDetail" class uddi2__get_USCOREbusinessDetail { public: /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__businessDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_businessDetailExt" class uddi2__get_USCOREbusinessDetailExt { public: /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__businessDetailExt* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_publisherAssertions" class uddi2__get_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_registeredInfo" class uddi2__get_USCOREregisteredInfo { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREregisteredInfo(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__registeredInfo* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_serviceDetail" class uddi2__get_USCOREserviceDetail { public: /// Vector of uddi2__serviceKey with length 0..unbounded std::vector serviceKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*, const char *serviceKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*, std::vector serviceKeys); /// Member declared in uddi2-typemap.dat uddi2__serviceDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_tModelDetail" class uddi2__get_USCOREtModelDetail { public: /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__tModelDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"save_binding" class uddi2__save_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*, uddi2__bindingTemplate &bindingTemplate); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*, std::vector bindingTemplates); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_business" class uddi2__save_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Vector of char* with length 0..unbounded std::vector uploadRegister 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*, uddi2__businessEntity &businessEntity); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*, std::vector businessEntities); /// Member declared in uddi2-typemap.dat uddi2__businessDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_service" class uddi2__save_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*, uddi2__businessService &businessService); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*, std::vector businessServices); /// Member declared in uddi2-typemap.dat uddi2__serviceDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_tModel" class uddi2__save_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 0; /// Vector of char* with length 0..unbounded std::vector uploadRegister 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*, uddi2__tModel &tModel); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*, std::vector tModels); /// Member declared in uddi2-typemap.dat uddi2__tModelDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"set_publisherAssertions" class uddi2__set_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__set_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__set_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"validate_values" class uddi2__validate_USCOREvalues { public: // CHOICE OF ELEMENTS: /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 0; // END CHOICE /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"assertionStatusReport" class uddi2__assertionStatusReport { public: /// Vector of uddi2__assertionStatusItem* with length 0..unbounded std::vector assertionStatusItem 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"authToken" class uddi2__authToken { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingDetail" class uddi2__bindingDetail { public: /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessDetail" class uddi2__businessDetail { public: /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessDetailExt" class uddi2__businessDetailExt { public: /// Vector of uddi2__businessEntityExt* with length 0..unbounded std::vector businessEntityExt 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessList" class uddi2__businessList { public: /// Element reference "urn:uddi-org:api_v2":businessInfos uddi2__businessInfos* businessInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"publisherAssertions" class uddi2__publisherAssertions { public: /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute authorizedName of type xs:string @char* authorizedName 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"registeredInfo" class uddi2__registeredInfo { public: /// Element reference "urn:uddi-org:api_v2":businessInfos uddi2__businessInfos* businessInfos 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":tModelInfos uddi2__tModelInfos* tModelInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessesList" class uddi2__relatedBusinessesList { public: /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":relatedBusinessInfos uddi2__relatedBusinessInfos* relatedBusinessInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceDetail" class uddi2__serviceDetail { public: /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceList" class uddi2__serviceList { public: /// Element reference "urn:uddi-org:api_v2":serviceInfos uddi2__serviceInfos* serviceInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelDetail" class uddi2__tModelDetail { public: /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelList" class uddi2__tModelList { public: /// Element reference "urn:uddi-org:api_v2":tModelInfos uddi2__tModelInfos* tModelInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"accessPoint" class uddi2__accessPoint { public: char* __item ; /// Attribute URLType of type "urn:uddi-org:api_v2":URLType @enum uddi2__URLType URLType 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"addressLine" class uddi2__addressLine { public: char* __item ; /// Attribute keyName of type xs:string @char* keyName 0; ///< Optional attribute /// Attribute keyValue of type xs:string @char* keyValue 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"description" class uddi2__description { public: char* __item ; /// Attribute reference xml:lang @xml__lang xml__lang_ 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"discoveryURL" class uddi2__discoveryURL { public: char* __item ; /// Attribute useType of type xs:string @char* useType 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"email" class uddi2__email { public: char* __item ; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"errInfo" class uddi2__errInfo { public: char* __item ; /// Attribute errCode of type xs:string @char* errCode 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"name" class uddi2__name { public: char* __item ; /// Attribute reference xml:lang @xml__lang xml__lang_ 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"phone" class uddi2__phone { public: char* __item ; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /******************************************************************************\ * * * Services * * * \******************************************************************************/ //gsoap pub2 service name: PublishSoap //gsoap pub2 service type: Publish //gsoap pub2 service namespace: urn:uddi-org:publication_v2 /** @mainpage UDDI_Publication_API_V2 Definitions @section UDDI_Publication_API_V2_documentation Documentation Copyright (c) 2000 - 2002 by Accenture, Ariba, Inc., Commerce One, Inc. Fujitsu Limited, Hewlett-Packard Company, i2 Technologies, Inc., Intel Corporation, International Business Machines Corporation, Microsoft Corporation, Oracle Corporation, SAP AG, Sun Microsystems, Inc., and VeriSign, Inc. All Rights Reserved. WSDL Service Interface for UDDI Publication API V2.0 This WSDL document defines the publication API calls for interacting with the UDDI registry. The complete UDDI API specification is available at http://www.uddi.org/specification.html. @section UDDI_Publication_API_V2_bindings Bindings - @ref PublishSoap */ /** @page PublishSoap Binding "PublishSoap" @section PublishSoap_operations Operations of Binding "PublishSoap" - @ref __pub2__add_USCOREpublisherAssertions - @ref __pub2__delete_USCOREbinding - @ref __pub2__delete_USCOREbusiness - @ref __pub2__delete_USCOREpublisherAssertions - @ref __pub2__delete_USCOREservice - @ref __pub2__delete_USCOREtModel - @ref __pub2__discard_USCOREauthToken - @ref __pub2__get_USCOREassertionStatusReport - @ref __pub2__get_USCOREauthToken - @ref __pub2__get_USCOREpublisherAssertions - @ref __pub2__get_USCOREregisteredInfo - @ref __pub2__save_USCOREbinding - @ref __pub2__save_USCOREbusiness - @ref __pub2__save_USCOREservice - @ref __pub2__save_USCOREtModel - @ref __pub2__set_USCOREpublisherAssertions @section PublishSoap_ports Endpoints of Binding "PublishSoap" */ /******************************************************************************\ * * * SOAP Fault Detail * * * \******************************************************************************/ /// The SOAP Fault Detail element contains one of the following types serialized // in the __type and fault fields of the SOAP_ENV__Detail struct (see docs) class _dispositionReport { public: uddi2__dispositionReport* uddi2__dispositionReport_; struct soap *soap ; }; /******************************************************************************\ * * * PublishSoap * * * \******************************************************************************/ /******************************************************************************\ * * * __pub2__add_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__add_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="add_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__add_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__add_USCOREpublisherAssertions* uddi2__add_USCOREpublisherAssertions_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: add_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: add_USCOREpublisherAssertions literal //gsoap pub2 service method-action: add_USCOREpublisherAssertions add_publisherAssertions //gsoap pub2 service method-fault: add_USCOREpublisherAssertions _dispositionReport int __pub2__add_USCOREpublisherAssertions( uddi2__add_USCOREpublisherAssertions* uddi2__add_USCOREpublisherAssertions_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREbinding * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREbinding" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_binding" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREbinding(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREbinding* uddi2__delete_USCOREbinding_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREbinding document //gsoap pub2 service method-encoding: delete_USCOREbinding literal //gsoap pub2 service method-action: delete_USCOREbinding delete_binding //gsoap pub2 service method-fault: delete_USCOREbinding _dispositionReport int __pub2__delete_USCOREbinding( uddi2__delete_USCOREbinding* uddi2__delete_USCOREbinding_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREbusiness * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREbusiness" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_business" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREbusiness(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREbusiness* uddi2__delete_USCOREbusiness_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREbusiness document //gsoap pub2 service method-encoding: delete_USCOREbusiness literal //gsoap pub2 service method-action: delete_USCOREbusiness delete_business //gsoap pub2 service method-fault: delete_USCOREbusiness _dispositionReport int __pub2__delete_USCOREbusiness( uddi2__delete_USCOREbusiness* uddi2__delete_USCOREbusiness_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREpublisherAssertions* uddi2__delete_USCOREpublisherAssertions_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: delete_USCOREpublisherAssertions literal //gsoap pub2 service method-action: delete_USCOREpublisherAssertions delete_publisherAssertions //gsoap pub2 service method-fault: delete_USCOREpublisherAssertions _dispositionReport int __pub2__delete_USCOREpublisherAssertions( uddi2__delete_USCOREpublisherAssertions* uddi2__delete_USCOREpublisherAssertions_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREservice * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREservice" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_service" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREservice(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREservice* uddi2__delete_USCOREservice_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREservice document //gsoap pub2 service method-encoding: delete_USCOREservice literal //gsoap pub2 service method-action: delete_USCOREservice delete_service //gsoap pub2 service method-fault: delete_USCOREservice _dispositionReport int __pub2__delete_USCOREservice( uddi2__delete_USCOREservice* uddi2__delete_USCOREservice_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__delete_USCOREtModel * * * \******************************************************************************/ /// Operation "__pub2__delete_USCOREtModel" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="delete_tModel" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__delete_USCOREtModel(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__delete_USCOREtModel* uddi2__delete_USCOREtModel_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: delete_USCOREtModel document //gsoap pub2 service method-encoding: delete_USCOREtModel literal //gsoap pub2 service method-action: delete_USCOREtModel delete_tModel //gsoap pub2 service method-fault: delete_USCOREtModel _dispositionReport int __pub2__delete_USCOREtModel( uddi2__delete_USCOREtModel* uddi2__delete_USCOREtModel_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__discard_USCOREauthToken * * * \******************************************************************************/ /// Operation "__pub2__discard_USCOREauthToken" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="discard_authToken" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__discard_USCOREauthToken(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__discard_USCOREauthToken* uddi2__discard_USCOREauthToken_, // response parameters: uddi2__dispositionReport* uddi2__dispositionReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: discard_USCOREauthToken document //gsoap pub2 service method-encoding: discard_USCOREauthToken literal //gsoap pub2 service method-action: discard_USCOREauthToken discard_authToken //gsoap pub2 service method-fault: discard_USCOREauthToken _dispositionReport int __pub2__discard_USCOREauthToken( uddi2__discard_USCOREauthToken* uddi2__discard_USCOREauthToken_, uddi2__dispositionReport* uddi2__dispositionReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREassertionStatusReport * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREassertionStatusReport" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_assertionStatusReport" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREassertionStatusReport(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREassertionStatusReport* uddi2__get_USCOREassertionStatusReport_, // response parameters: uddi2__assertionStatusReport* uddi2__assertionStatusReport_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREassertionStatusReport document //gsoap pub2 service method-encoding: get_USCOREassertionStatusReport literal //gsoap pub2 service method-action: get_USCOREassertionStatusReport get_assertionStatusReport //gsoap pub2 service method-fault: get_USCOREassertionStatusReport _dispositionReport int __pub2__get_USCOREassertionStatusReport( uddi2__get_USCOREassertionStatusReport* uddi2__get_USCOREassertionStatusReport_, uddi2__assertionStatusReport* uddi2__assertionStatusReport_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREauthToken * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREauthToken" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_authToken" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREauthToken(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREauthToken* uddi2__get_USCOREauthToken_, // response parameters: uddi2__authToken* uddi2__authToken_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREauthToken document //gsoap pub2 service method-encoding: get_USCOREauthToken literal //gsoap pub2 service method-action: get_USCOREauthToken get_authToken //gsoap pub2 service method-fault: get_USCOREauthToken _dispositionReport int __pub2__get_USCOREauthToken( uddi2__get_USCOREauthToken* uddi2__get_USCOREauthToken_, uddi2__authToken* uddi2__authToken_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREpublisherAssertions* uddi2__get_USCOREpublisherAssertions_, // response parameters: uddi2__publisherAssertions* uddi2__publisherAssertions_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: get_USCOREpublisherAssertions literal //gsoap pub2 service method-action: get_USCOREpublisherAssertions get_publisherAssertions //gsoap pub2 service method-fault: get_USCOREpublisherAssertions _dispositionReport int __pub2__get_USCOREpublisherAssertions( uddi2__get_USCOREpublisherAssertions* uddi2__get_USCOREpublisherAssertions_, uddi2__publisherAssertions* uddi2__publisherAssertions_ ///< response parameter ); /******************************************************************************\ * * * __pub2__get_USCOREregisteredInfo * * * \******************************************************************************/ /// Operation "__pub2__get_USCOREregisteredInfo" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_registeredInfo" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__get_USCOREregisteredInfo(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREregisteredInfo* uddi2__get_USCOREregisteredInfo_, // response parameters: uddi2__registeredInfo* uddi2__registeredInfo_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: get_USCOREregisteredInfo document //gsoap pub2 service method-encoding: get_USCOREregisteredInfo literal //gsoap pub2 service method-action: get_USCOREregisteredInfo get_registeredInfo //gsoap pub2 service method-fault: get_USCOREregisteredInfo _dispositionReport int __pub2__get_USCOREregisteredInfo( uddi2__get_USCOREregisteredInfo* uddi2__get_USCOREregisteredInfo_, uddi2__registeredInfo* uddi2__registeredInfo_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREbinding * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREbinding" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_binding" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREbinding(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREbinding* uddi2__save_USCOREbinding_, // response parameters: uddi2__bindingDetail* uddi2__bindingDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREbinding document //gsoap pub2 service method-encoding: save_USCOREbinding literal //gsoap pub2 service method-action: save_USCOREbinding save_binding //gsoap pub2 service method-fault: save_USCOREbinding _dispositionReport int __pub2__save_USCOREbinding( uddi2__save_USCOREbinding* uddi2__save_USCOREbinding_, uddi2__bindingDetail* uddi2__bindingDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREbusiness * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREbusiness" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_business" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREbusiness(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREbusiness* uddi2__save_USCOREbusiness_, // response parameters: uddi2__businessDetail* uddi2__businessDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREbusiness document //gsoap pub2 service method-encoding: save_USCOREbusiness literal //gsoap pub2 service method-action: save_USCOREbusiness save_business //gsoap pub2 service method-fault: save_USCOREbusiness _dispositionReport int __pub2__save_USCOREbusiness( uddi2__save_USCOREbusiness* uddi2__save_USCOREbusiness_, uddi2__businessDetail* uddi2__businessDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREservice * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREservice" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_service" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREservice(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREservice* uddi2__save_USCOREservice_, // response parameters: uddi2__serviceDetail* uddi2__serviceDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREservice document //gsoap pub2 service method-encoding: save_USCOREservice literal //gsoap pub2 service method-action: save_USCOREservice save_service //gsoap pub2 service method-fault: save_USCOREservice _dispositionReport int __pub2__save_USCOREservice( uddi2__save_USCOREservice* uddi2__save_USCOREservice_, uddi2__serviceDetail* uddi2__serviceDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__save_USCOREtModel * * * \******************************************************************************/ /// Operation "__pub2__save_USCOREtModel" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="save_tModel" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__save_USCOREtModel(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__save_USCOREtModel* uddi2__save_USCOREtModel_, // response parameters: uddi2__tModelDetail* uddi2__tModelDetail_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: save_USCOREtModel document //gsoap pub2 service method-encoding: save_USCOREtModel literal //gsoap pub2 service method-action: save_USCOREtModel save_tModel //gsoap pub2 service method-fault: save_USCOREtModel _dispositionReport int __pub2__save_USCOREtModel( uddi2__save_USCOREtModel* uddi2__save_USCOREtModel_, uddi2__tModelDetail* uddi2__tModelDetail_ ///< response parameter ); /******************************************************************************\ * * * __pub2__set_USCOREpublisherAssertions * * * \******************************************************************************/ /// Operation "__pub2__set_USCOREpublisherAssertions" of service binding "PublishSoap" /** Operation details: - SOAP document/literal style - SOAP action="set_publisherAssertions" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___pub2__set_USCOREpublisherAssertions(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__set_USCOREpublisherAssertions* uddi2__set_USCOREpublisherAssertions_, // response parameters: uddi2__publisherAssertions* uddi2__publisherAssertions_ ); @endcode C++ proxy class (defined in soapPublishSoapProxy.h): class PublishSoap; */ //gsoap pub2 service method-style: set_USCOREpublisherAssertions document //gsoap pub2 service method-encoding: set_USCOREpublisherAssertions literal //gsoap pub2 service method-action: set_USCOREpublisherAssertions set_publisherAssertions //gsoap pub2 service method-fault: set_USCOREpublisherAssertions _dispositionReport int __pub2__set_USCOREpublisherAssertions( uddi2__set_USCOREpublisherAssertions* uddi2__set_USCOREpublisherAssertions_, uddi2__publisherAssertions* uddi2__publisherAssertions_ ///< response parameter ); /* End of publish_v2.h */ gsoap-2.8.60/gsoap/uddi2/cacerts.pem0000644000175000017500000077654213227173557016570 0ustar ellertellert# Part of the source for this file is provided by Mozilla: # http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 # This file was converted to PEM format with tools provided by OpenSSL. # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. GlobalSign Root CA ================== -----BEGIN CERTIFICATE----- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE----- GlobalSign Root CA - R2 ======================= -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== -----END CERTIFICATE----- Verisign Class 3 Public Primary Certification Authority - G3 ============================================================ -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== -----END CERTIFICATE----- Entrust.net Premium 2048 Secure Server CA ========================================= -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= -----END CERTIFICATE----- Baltimore CyberTrust Root ========================= -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- AddTrust Low-Value Services Root ================================ -----BEGIN CERTIFICATE----- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= -----END CERTIFICATE----- AddTrust External Root ====================== -----BEGIN CERTIFICATE----- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE----- AddTrust Public Services Root ============================= -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= -----END CERTIFICATE----- AddTrust Qualified Certificates Root ==================================== -----BEGIN CERTIFICATE----- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= -----END CERTIFICATE----- Entrust Root Certification Authority ==================================== -----BEGIN CERTIFICATE----- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- GeoTrust Global CA ================== -----BEGIN CERTIFICATE----- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm Mw== -----END CERTIFICATE----- GeoTrust Global CA 2 ==================== -----BEGIN CERTIFICATE----- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF H4z1Ir+rzoPz4iIprn2DQKi6bA== -----END CERTIFICATE----- GeoTrust Universal CA ===================== -----BEGIN CERTIFICATE----- MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI P/rmMuGNG2+k5o7Y+SlIis5z/iw= -----END CERTIFICATE----- GeoTrust Universal CA 2 ======================= -----BEGIN CERTIFICATE----- MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS -----END CERTIFICATE----- Visa eCommerce Root =================== -----BEGIN CERTIFICATE----- MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI /k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt 398znM/jra6O1I7mT1GvFpLgXPYHDw== -----END CERTIFICATE----- Certum Root CA ============== -----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ 89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ 0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== -----END CERTIFICATE----- Comodo AAA Services root ======================== -----BEGIN CERTIFICATE----- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- Comodo Secure Services root =========================== -----BEGIN CERTIFICATE----- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H RR3B7Hzs/Sk= -----END CERTIFICATE----- Comodo Trusted Services root ============================ -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O 9y5Xt5hwXsjEeLBi -----END CERTIFICATE----- QuoVadis Root CA ================ -----BEGIN CERTIFICATE----- MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi 5nrQNiOKSnQ2+Q== -----END CERTIFICATE----- QuoVadis Root CA 2 ================== -----BEGIN CERTIFICATE----- MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt 66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK +JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II 4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u -----END CERTIFICATE----- QuoVadis Root CA 3 ================== -----BEGIN CERTIFICATE----- MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- Security Communication Root CA ============================== -----BEGIN CERTIFICATE----- MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi FL39vmwLAw== -----END CERTIFICATE----- Sonera Class 2 Root CA ====================== -----BEGIN CERTIFICATE----- MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH llpwrN9M -----END CERTIFICATE----- UTN USERFirst Hardware Root CA ============================== -----BEGIN CERTIFICATE----- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 nfhmqA== -----END CERTIFICATE----- Camerfirma Chambers of Commerce Root ==================================== -----BEGIN CERTIFICATE----- MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 erfutGWaIZDgqtCYvDi1czyL+Nw= -----END CERTIFICATE----- Camerfirma Global Chambersign Root ================================== -----BEGIN CERTIFICATE----- MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J 1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl 6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c 8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== -----END CERTIFICATE----- XRamp Global CA Root ==================== -----BEGIN CERTIFICATE----- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- Go Daddy Class 2 CA =================== -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b vZ8= -----END CERTIFICATE----- Starfield Class 2 CA ==================== -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- StartCom Certification Authority ================================ -----BEGIN CERTIFICATE----- MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT 37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh 3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl 1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro g14= -----END CERTIFICATE----- Taiwan GRCA =========== -----BEGIN CERTIFICATE----- MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O 1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk 7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS -----END CERTIFICATE----- Swisscom Root CA 1 ================== -----BEGIN CERTIFICATE----- MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn 7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW NY6E0F/6MBr1mmz0DlP5OlvRHA== -----END CERTIFICATE----- DigiCert Assured ID Root CA =========================== -----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== -----END CERTIFICATE----- DigiCert Global Root CA ======================= -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- DigiCert High Assurance EV Root CA ================================== -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K -----END CERTIFICATE----- Certplus Class 2 Primary CA =========================== -----BEGIN CERTIFICATE----- MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 l7+ijrRU -----END CERTIFICATE----- DST Root CA X3 ============== -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- DST ACES CA X6 ============== -----BEGIN CERTIFICATE----- MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 oKfN5XozNmr6mis= -----END CERTIFICATE----- SwissSign Gold CA - G2 ====================== -----BEGIN CERTIFICATE----- MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR 7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm 5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr 44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ -----END CERTIFICATE----- SwissSign Silver CA - G2 ======================== -----BEGIN CERTIFICATE----- MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG 9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm +/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH 6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P 4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L 3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx /uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u -----END CERTIFICATE----- GeoTrust Primary Certification Authority ======================================== -----BEGIN CERTIFICATE----- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= -----END CERTIFICATE----- thawte Primary Root CA ====================== -----BEGIN CERTIFICATE----- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== -----END CERTIFICATE----- VeriSign Class 3 Public Primary Certification Authority - G5 ============================================================ -----BEGIN CERTIFICATE----- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- SecureTrust CA ============== -----BEGIN CERTIFICATE----- MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= -----END CERTIFICATE----- Secure Global CA ================ -----BEGIN CERTIFICATE----- MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW -----END CERTIFICATE----- COMODO Certification Authority ============================== -----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== -----END CERTIFICATE----- Network Solutions Certificate Authority ======================================= -----BEGIN CERTIFICATE----- MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey -----END CERTIFICATE----- WellsSecure Public Root Certificate Authority ============================================= -----BEGIN CERTIFICATE----- MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ tylv2G0xffX8oRAHh84vWdw+WNs= -----END CERTIFICATE----- COMODO ECC Certification Authority ================================== -----BEGIN CERTIFICATE----- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- Security Communication EV RootCA1 ================================= -----BEGIN CERTIFICATE----- MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO /VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK 9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 -----END CERTIFICATE----- OISTE WISeKey Global Root GA CA =============================== -----BEGIN CERTIFICATE----- MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= -----END CERTIFICATE----- Microsec e-Szigno Root CA ========================= -----BEGIN CERTIFICATE----- MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= -----END CERTIFICATE----- Certigna ======== -----BEGIN CERTIFICATE----- MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- Deutsche Telekom Root CA 2 ========================== -----BEGIN CERTIFICATE----- MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU Cm26OWMohpLzGITY+9HPBVZkVw== -----END CERTIFICATE----- Cybertrust Global Root ====================== -----BEGIN CERTIFICATE----- MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW WL1WMRJOEcgh4LMRkWXbtKaIOM5V -----END CERTIFICATE----- ePKI Root Certification Authority ================================= -----BEGIN CERTIFICATE----- MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX 12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= -----END CERTIFICATE----- T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 ============================================================================================================================= -----BEGIN CERTIFICATE----- MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR 6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= -----END CERTIFICATE----- certSIGN ROOT CA ================ -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD -----END CERTIFICATE----- CNNIC ROOT ========== -----BEGIN CERTIFICATE----- MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m mxE= -----END CERTIFICATE----- ApplicationCA - Japanese Government =================================== -----BEGIN CERTIFICATE----- MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL rosot4LKGAfmt1t06SAZf7IbiVQ= -----END CERTIFICATE----- GeoTrust Primary Certification Authority - G3 ============================================= -----BEGIN CERTIFICATE----- MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt -----END CERTIFICATE----- thawte Primary Root CA - G2 =========================== -----BEGIN CERTIFICATE----- MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== -----END CERTIFICATE----- thawte Primary Root CA - G3 =========================== -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= -----END CERTIFICATE----- GeoTrust Primary Certification Authority - G2 ============================================= -----BEGIN CERTIFICATE----- MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 npaqBA+K -----END CERTIFICATE----- VeriSign Universal Root Certification Authority =============================================== -----BEGIN CERTIFICATE----- MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 mJO37M2CYfE45k+XmCpajQ== -----END CERTIFICATE----- VeriSign Class 3 Public Primary Certification Authority - G4 ============================================================ -----BEGIN CERTIFICATE----- MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== -----END CERTIFICATE----- NetLock Arany (Class Gold) Főtanúsítvány ======================================== -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- Staat der Nederlanden Root CA - G2 ================================== -----BEGIN CERTIFICATE----- MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ 5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz +51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm 66+KAQ== -----END CERTIFICATE----- Hongkong Post Root CA 1 ======================= -----BEGIN CERTIFICATE----- MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== -----END CERTIFICATE----- SecureSign RootCA11 =================== -----BEGIN CERTIFICATE----- MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= -----END CERTIFICATE----- ACEDICOM Root ============= -----BEGIN CERTIFICATE----- MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz 4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU 9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== -----END CERTIFICATE----- Microsec e-Szigno Root CA 2009 ============================== -----BEGIN CERTIFICATE----- MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi LXpUq3DDfSJlgnCW -----END CERTIFICATE----- GlobalSign Root CA - R3 ======================= -----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r kpeDMdmztcpHWD9f -----END CERTIFICATE----- Autoridad de Certificacion Firmaprofesional CIF A62634068 ========================================================= -----BEGIN CERTIFICATE----- MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V -----END CERTIFICATE----- Izenpe.com ========== -----BEGIN CERTIFICATE----- MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ 03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU +zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK 0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ 0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- Chambers of Commerce Root - 2008 ================================ -----BEGIN CERTIFICATE----- MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ -----END CERTIFICATE----- Global Chambersign Root - 2008 ============================== -----BEGIN CERTIFICATE----- MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B -----END CERTIFICATE----- Go Daddy Root Certificate Authority - G2 ======================================== -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 -----END CERTIFICATE----- Starfield Root Certificate Authority - G2 ========================================= -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 -----END CERTIFICATE----- Starfield Services Root Certificate Authority - G2 ================================================== -----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 -----END CERTIFICATE----- AffirmTrust Commercial ====================== -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= -----END CERTIFICATE----- AffirmTrust Networking ====================== -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= -----END CERTIFICATE----- AffirmTrust Premium =================== -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== -----END CERTIFICATE----- AffirmTrust Premium ECC ======================= -----BEGIN CERTIFICATE----- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM eQ== -----END CERTIFICATE----- Certum Trusted Network CA ========================= -----BEGIN CERTIFICATE----- MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= -----END CERTIFICATE----- Certinomis - Autorité Racine ============================ -----BEGIN CERTIFICATE----- MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw 2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g 530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna 4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ vgt2Fl43N+bYdJeimUV5 -----END CERTIFICATE----- TWCA Root Certification Authority ================================= -----BEGIN CERTIFICATE----- MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== -----END CERTIFICATE----- Security Communication RootCA2 ============================== -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 -----END CERTIFICATE----- EC-ACC ====== -----BEGIN CERTIFICATE----- MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw 0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D 5EI= -----END CERTIFICATE----- Hellenic Academic and Research Institutions RootCA 2011 ======================================================= -----BEGIN CERTIFICATE----- MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI 1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa 71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u 8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH 3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD /md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N 7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 -----END CERTIFICATE----- Actalis Authentication Root CA ============================== -----BEGIN CERTIFICATE----- MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- Trustis FPS Root CA =================== -----BEGIN CERTIFICATE----- MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P 8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl iB6XzCGcKQENZetX2fNXlrtIzYE= -----END CERTIFICATE----- StartCom Certification Authority ================================ -----BEGIN CERTIFICATE----- MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT 37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA 2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= -----END CERTIFICATE----- StartCom Certification Authority G2 =================================== -----BEGIN CERTIFICATE----- MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG 4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K 2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG /+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm 7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm obp573PYtlNXLfbQ4ddI -----END CERTIFICATE----- Buypass Class 2 Root CA ======================= -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn 9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b /+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN rJgWVqA= -----END CERTIFICATE----- Buypass Class 3 Root CA ======================= -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR 5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh 7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH 2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV /afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz 6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi Cp/HuZc= -----END CERTIFICATE----- T-TeleSec GlobalRoot Class 3 ============================ -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== -----END CERTIFICATE----- EE Certification Centre Root CA =============================== -----BEGIN CERTIFICATE----- MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM dcGWxZ0= -----END CERTIFICATE----- TURKTRUST Certificate Services Provider Root 2007 ================================================= -----BEGIN CERTIFICATE----- MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK poRq0Tl9 -----END CERTIFICATE----- D-TRUST Root Class 3 CA 2 2009 ============================== -----BEGIN CERTIFICATE----- MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ 4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm 2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= -----END CERTIFICATE----- D-TRUST Root Class 3 CA 2 EV 2009 ================================= -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T 7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv w9y4AyHqnxbxLFS1 -----END CERTIFICATE----- PSCProcert ========== -----BEGIN CERTIFICATE----- MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA 3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2 0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH 0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/ AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG 9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52 ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1 n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo 5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq 3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5 poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km -----END CERTIFICATE----- China Internet Network Information Center EV Certificates Root ============================================================== -----BEGIN CERTIFICATE----- MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV 98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23 KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC 7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5 0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM 7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0 5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8= -----END CERTIFICATE----- Swisscom Root CA 2 ================== -----BEGIN CERTIFICATE----- MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2 MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3 qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ 82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o +sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX 5OfNeOI5wSsSnqaeG8XmDtkx2Q== -----END CERTIFICATE----- Swisscom Root EV CA 2 ===================== -----BEGIN CERTIFICATE----- MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/ BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7 XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH 59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/ 23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc= -----END CERTIFICATE----- CA Disig Root R1 ================ -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy 3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8 u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2 m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6 vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ 04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85 YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ a7+h89n07eLw4+1knj0vllJPgFOL -----END CERTIFICATE----- CA Disig Root R2 ================ -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa 5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV 7+ZtsH8tZ/3zbBt1RqPlShfppNcL -----END CERTIFICATE----- ACCVRAIZ1 ========= -----BEGIN CERTIFICATE----- MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ 0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR 5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J 9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd 3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p EfbRD0tVNEYqi4Y7 -----END CERTIFICATE----- TWCA Global Root CA =================== -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M 8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg /eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= -----END CERTIFICATE----- TeliaSonera Root CA v1 ====================== -----BEGIN CERTIFICATE----- MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ 6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA 3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- E-Tugra Certification Authority =============================== -----BEGIN CERTIFICATE----- MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB /wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G C7TbO6Orb1wdtn7os4I07QZcJA== -----END CERTIFICATE----- T-TeleSec GlobalRoot Class 2 ============================ -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR 3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== -----END CERTIFICATE----- Atos TrustedRoot 2011 ===================== -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr 54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G 3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed -----END CERTIFICATE----- QuoVadis Root CA 1 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV 7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX 9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP +V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh 3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV hMJKzRwuJIczYOXD -----END CERTIFICATE----- QuoVadis Root CA 2 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD 6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr O3jtZsSOeWmD3n+M -----END CERTIFICATE----- QuoVadis Root CA 3 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe 6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX 0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 PpxxVJkES/1Y+Zj0 -----END CERTIFICATE----- DigiCert Assured ID Root G2 =========================== -----BEGIN CERTIFICATE----- MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH 35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv 0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo IhNzbM8m9Yop5w== -----END CERTIFICATE----- DigiCert Assured ID Root G3 =========================== -----BEGIN CERTIFICATE----- MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy 1vUhZscv6pZjamVFkpUBtA== -----END CERTIFICATE----- DigiCert Global Root G2 ======================= -----BEGIN CERTIFICATE----- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO 3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu 5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl MrY= -----END CERTIFICATE----- DigiCert Global Root G3 ======================= -----BEGIN CERTIFICATE----- MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y 3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 VOKa5Vt8sycX -----END CERTIFICATE----- DigiCert Trusted Root G4 ======================== -----BEGIN CERTIFICATE----- MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy 7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN 5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb /UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa 5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP 82Z+ -----END CERTIFICATE----- WoSign ====== -----BEGIN CERTIFICATE----- MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX 2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5 KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR +ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2 8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R 8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC 2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes 5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/ EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w== -----END CERTIFICATE----- WoSign China ============ -----BEGIN CERTIFICATE----- MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k 8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5 uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85 dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5 Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc 76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m +Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6 yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115 j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97 qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO kI26oQ== -----END CERTIFICATE----- COMODO RSA Certification Authority ================================== -----BEGIN CERTIFICATE----- MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ 5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX 2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I LaZRfyHBNVOFBkpdn627G190 -----END CERTIFICATE----- USERTrust RSA Certification Authority ===================================== -----BEGIN CERTIFICATE----- MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz 0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O +T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq /nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ 7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM 8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 -----END CERTIFICATE----- USERTrust ECC Certification Authority ===================================== -----BEGIN CERTIFICATE----- MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= -----END CERTIFICATE----- GlobalSign ECC Root CA - R4 =========================== -----BEGIN CERTIFICATE----- MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= -----END CERTIFICATE----- GlobalSign ECC Root CA - R5 =========================== -----BEGIN CERTIFICATE----- MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- Staat der Nederlanden Root CA - G3 ================================== -----BEGIN CERTIFICATE----- MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp 07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE 41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA 8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b 8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq 1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= -----END CERTIFICATE----- Staat der Nederlanden EV Root CA ================================ -----BEGIN CERTIFICATE----- MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r 0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr 08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV 0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd 74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq 5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi 5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== -----END CERTIFICATE----- IdenTrust Commercial Root CA 1 ============================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi 1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl 3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH 6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe 2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R cGzM7vRX+Bi6hG6H -----END CERTIFICATE----- IdenTrust Public Sector Root CA 1 ================================= -----BEGIN CERTIFICATE----- MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL 4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ 3Wl9af0AVqW3rLatt8o+Ae+c -----END CERTIFICATE----- Entrust Root Certification Authority - G2 ========================================= -----BEGIN CERTIFICATE----- MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP /vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO e4pIb4tF9g== -----END CERTIFICATE----- Entrust Root Certification Authority - EC1 ========================================== -----BEGIN CERTIFICATE----- MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef 9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G -----END CERTIFICATE----- CFCA EV ROOT ============ -----BEGIN CERTIFICATE----- MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD 7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB /wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua 4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su -----END CERTIFICATE----- TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 ==================================================== -----BEGIN CERTIFICATE----- MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537 jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP 9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV 4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8 B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU= -----END CERTIFICATE----- TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 ==================================================== -----BEGIN CERTIFICATE----- MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5 MDQxMFoXDTIzMTIxNjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBL BgNVBAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSf aSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlm aWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQCdsGjW6L0UlqMACprx9MfMkU1xeHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a 2uqsxgbPJQ1BgfbBOCK9+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EED wnS3/faAz1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0pu5Fb HH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6plVxiSvgNZ1GpryHV +DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMBAAGjQjBAMB0GA1UdDgQWBBTdVRcT 9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG 9w0BAQsFAAOCAQEAb1gNl0OqFlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3R fdCaqaXKGDsCQC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKIDgI6tflEATseW hvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm9ocJV612ph1jmv3XZch4gyt1 O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsGtAuYSyher4hYyw== -----END CERTIFICATE----- Certinomis - Root CA ==================== -----BEGIN CERTIFICATE----- MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00 8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE 6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I 6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9 Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr hkIGuUE= -----END CERTIFICATE----- OISTE WISeKey Global Root GB CA =============================== -----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk 9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= -----END CERTIFICATE----- Certification Authority of WoSign G2 ==================================== -----BEGIN CERTIFICATE----- MIIDfDCCAmSgAwIBAgIQayXaioidfLwPBbOxemFFRDANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQG EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxLTArBgNVBAMTJENlcnRpZmljYXRpb24g QXV0aG9yaXR5IG9mIFdvU2lnbiBHMjAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4NThaMFgx CzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEtMCsGA1UEAxMkQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkgb2YgV29TaWduIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAvsXEoCKASU+/2YcRxlPhuw+9YH+v9oIOH9ywjj2X4FA8jzrvZjtFB5sg+OPXJYY1kBai XW8wGQiHC38Gsp1ij96vkqVg1CuAmlI/9ZqD6TRay9nVYlzmDuDfBpgOgHzKtB0TiGsOqCR3A9Du W/PKaZE1OVbFbeP3PU9ekzgkyhjpJMuSA93MHD0JcOQg5PGurLtzaaNjOg9FD6FKmsLRY6zLEPg9 5k4ot+vElbGs/V6r+kHLXZ1L3PR8du9nfwB6jdKgGlxNIuG12t12s9R23164i5jIFFTMaxeSt+BK v0mUYQs4kI9dJGwlezt52eJ+na2fmKEG/HgUYFf47oB3sQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU+mCp62XF3RYUCE4MD42b4Pdkr2cwDQYJKoZI hvcNAQELBQADggEBAFfDejaCnI2Y4qtAqkePx6db7XznPWZaOzG73/MWM5H8fHulwqZm46qwtyeY P0nXYGdnPzZPSsvxFPpahygc7Y9BMsaV+X3avXtbwrAh449G3CE4Q3RM+zD4F3LBMvzIkRfEzFg3 TgvMWvchNSiDbGAtROtSjFA9tWwS1/oJu2yySrHFieT801LYYRf+epSEj3m2M1m6D8QL4nCgS3gu +sif/a+RZQp4OBXllxcU3fngLDT4ONCEIgDAFFEYKwLcMFrw6AF8NTojrwjkr6qOKEJJLvD1mTS+ 7Q9LGOHSJDy7XUe3IfKN0QqZjuNuPq1w4I+5ysxugTH2e5x6eeRncRg= -----END CERTIFICATE----- CA WoSign ECC Root ================== -----BEGIN CERTIFICATE----- MIICCTCCAY+gAwIBAgIQaEpYcIBr8I8C+vbe6LCQkDAKBggqhkjOPQQDAzBGMQswCQYDVQQGEwJD TjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMTEkNBIFdvU2lnbiBFQ0MgUm9v dDAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4NThaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQK ExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAxMSQ0EgV29TaWduIEVDQyBSb290MHYwEAYHKoZI zj0CAQYFK4EEACIDYgAE4f2OuEMkq5Z7hcK6C62N4DrjJLnSsb6IOsq/Srj57ywvr1FQPEd1bPiU t5v8KB7FVMxjnRZLU8HnIKvNrCXSf4/CwVqCXjCLelTOA7WRf6qU0NGKSMyCBSah1VES1ns2o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqv3VWqP2h4syhf3R MluARZPzA7gwCgYIKoZIzj0EAwMDaAAwZQIxAOSkhLCB1T2wdKyUpOgOPQB0TKGXa/kNUTyh2Tv0 Daupn75OcsqF1NnstTJFGG+rrQIwfcf3aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYu a/GRspBl9JrmkO5K -----END CERTIFICATE----- SZAFIR ROOT CA2 =============== -----BEGIN CERTIFICATE----- MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE 2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul 4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 +/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== -----END CERTIFICATE----- Certum Trusted Network CA 2 =========================== -----BEGIN CERTIFICATE----- MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ 9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 zAYspsbiDrW5viSP -----END CERTIFICATE----- Hellenic Academic and Research Institutions RootCA 2015 ======================================================= -----BEGIN CERTIFICATE----- MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ 6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn 82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q p/UsQu0yrbYhnr68 -----END CERTIFICATE----- Hellenic Academic and Research Institutions ECC RootCA 2015 =========================================================== -----BEGIN CERTIFICATE----- MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR -----END CERTIFICATE----- Certplus Root CA G1 =================== -----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2 z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc 4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd 4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+ ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh 66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/ 2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F 6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/ +mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+ qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo= -----END CERTIFICATE----- Certplus Root CA G2 =================== -----BEGIN CERTIFICATE----- MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0 cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw== -----END CERTIFICATE----- OpenTrust Root CA G1 ==================== -----BEGIN CERTIFICATE----- MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87 ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9 xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO 9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq 3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9 URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80 nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/ bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o 4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx -----END CERTIFICATE----- OpenTrust Root CA G2 ==================== -----BEGIN CERTIFICATE----- MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+ Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz 4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz 3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj 3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz 9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0 0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59 M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ 6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0 YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK -----END CERTIFICATE----- OpenTrust Root CA G3 ==================== -----BEGIN CERTIFICATE----- MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB /wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta 3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB -----END CERTIFICATE----- ISRG Root X1 ============ -----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ 4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf 1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY 9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV 0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ m+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- AC RAIZ FNMT-RCM ================ -----BEGIN CERTIFICATE----- MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou 08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ 47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW +YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d 8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm 5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= -----END CERTIFICATE----- Amazon Root CA 1 ================ -----BEGIN CERTIFICATE----- MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB /zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy 8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa 2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 -----END CERTIFICATE----- Amazon Root CA 2 ================ -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ 3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY +gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= -----END CERTIFICATE----- Amazon Root CA 3 ================ -----BEGIN CERTIFICATE----- MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== -----END CERTIFICATE----- Amazon Root CA 4 ================ -----BEGIN CERTIFICATE----- MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN /sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri 83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== -----END CERTIFICATE----- LuxTrust Global Root 2 ====================== -----BEGIN CERTIFICATE----- MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2 xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm 1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/ a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB /zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5 Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT +Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW 7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt /f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc 7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr -----END CERTIFICATE----- gsoap-2.8.60/gsoap/uddi2/example1.cpp0000644000175000017500000000537013227173557016641 0ustar ellertellert/* example1.cpp Example UDDI V2 Client -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2004-2005, Robert van Engelen, Genivia Inc. All Rights Reserved. This software is released under one of the following two licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "inqH.h" int main(int argc, char **argv) { char *search_string = "magic"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREservice fs(soap, search_string); // Send the request uddi2__serviceList *sl = fs.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!sl) soap_print_fault(soap, stderr); // If OK, report the service name(s) and unique identification keys else if (sl->serviceInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator si = sl->serviceInfos->serviceInfo.begin(); si != sl->serviceInfos->serviceInfo.end(); ++si) { // Report serviceKey and businessKey std::cout << "serviceKey=" << (*si)->serviceKey << std::endl << "businessKey=" << (*si)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*si)->name.begin(); n != (*si)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } gsoap-2.8.60/gsoap/uddi2/README.txt0000644000175000017500000000274313227173557016120 0ustar ellertellertgSOAP UDDI v2 See directory html/index.html for documentation and examples of the UDDI v2 API generated with gSOAP and Doxygen. The API is written in C++. However, wsdl2h option -c can be used to generate C code serializers for UDDI v2. The API implementation supports UDDI v2 inquiry and publish operations. A Makefile is included to build two example C++ clients, example1 and example2, to search services and businesses, respectively. Code can be generated for the inquiry API, publish API, and both combined. To do so, run wsdl2h on inquire_v2.wsdl and/or publish_v2.wsdl COMPILATION The build steps are generally as follows: # Run wsdl2h with mapping specified in uddi2-typemap.dat on the UDDI WSDL(s): $ wsdl2h -tuddi2-typemap.dat -ouddi_v2.h inquire_v2.wsdl publish_v2.wsdl # Run soapcpp2 on the generated .h file (-puddi saves sources as uddiXYZ): $ soapcpp2 -I.. -puddi uddi_v2.h # Complete the build: $ g++ -DWITH_NONAMESPACES -I.. -o main main.cpp inquire_v2.cpp publish_v2.cpp uddiC.cpp uddiClient.cpp ../stdsoap2.cpp # To avoid link errors combining multiple services, replace the last step with: $ echo '' > env.h $ soapcpp2 -I.. -penv env.h $ g++ -DWITH_NONAMESPACES -I.. -o main main.cpp inquire_v2.cpp publish_v2.cpp uddiClientLib.cpp ../stdsoap2.cpp USING DOXYGEN To generate documentation, use Doxygen on the generated header file, e.g. uddi_v2.h. Part of the documentation is included in the uddi2-typemap.dat file, which was used to generate the header file(s) with wsdl2h. gsoap-2.8.60/gsoap/uddi2/inquire_v2.cpp0000644000175000017500000003776013227173557017220 0ustar ellertellert/* inquire_v2.cpp UDDI V2 Inquiry Interface -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2004-2005, Robert van Engelen, Genivia Inc. All Rights Reserved. This software is released under one of the following two licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "inqH.h" #undef SOAP_NMAC #define SOAP_NMAC static #define uddiH_H #include "InquireSoap.nsmap" //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_binding // //////////////////////////////////////////////////////////////////////////////// uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, const char *tModelKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelKey this->tModelBag = soap_new_uddi2__tModelBag(soap, -1); this->tModelBag->soap_default(soap); this->tModelBag->tModelKey.push_back(soap_strdup(soap, tModelKey)); this->generic = "2.0"; } uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, std::vector tModelKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelKey Bag this->tModelBag = soap_new_uddi2__tModelBag(soap, -1); this->tModelBag->soap_default(soap); this->tModelBag->tModelKey = tModelKeys; this->generic = "2.0"; } uddi2__bindingDetail *uddi2__find_USCOREbinding::send(const char *endpoint) { // Allocate result uddi2__bindingDetail *result = soap_new_uddi2__bindingDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__find_USCOREbinding(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_business // //////////////////////////////////////////////////////////////////////////////// uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, const char *name) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI name uddi2__name *uname = soap_new_uddi2__name(soap, -1); uname->soap_default(soap); uname->__item = soap_strdup(soap, name); this->name.push_back(uname); this->generic = "2.0"; } uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector keyedReferences) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelBag this->categoryBag = soap_new_uddi2__categoryBag(soap, -1); this->categoryBag->soap_default(soap); this->categoryBag->keyedReference = keyedReferences; this->generic = "2.0"; } uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector tModelKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelBag this->tModelBag = soap_new_uddi2__tModelBag(soap, -1); this->tModelBag->soap_default(soap); this->tModelBag->tModelKey = tModelKeys; this->generic = "2.0"; } uddi2__businessList *uddi2__find_USCOREbusiness::send(const char *endpoint) { // Allocate result uddi2__businessList *result = soap_new_uddi2__businessList(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__find_USCOREbusiness(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_relatedBusinesses // //////////////////////////////////////////////////////////////////////////////// uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap, const char *businessKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey = soap_strdup(soap, businessKey); this->generic = "2.0"; } uddi2__relatedBusinessesList *uddi2__find_USCORErelatedBusinesses::send(const char *endpoint) { // Allocate result uddi2__relatedBusinessesList *result = soap_new_uddi2__relatedBusinessesList(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__find_USCORErelatedBusinesses(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_service // //////////////////////////////////////////////////////////////////////////////// uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, const char *name) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI name uddi2__name *uname = soap_new_uddi2__name(soap, -1); uname->soap_default(soap); uname->__item = soap_strdup(soap, name); this->name.push_back(uname); this->generic = "2.0"; } uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector keyedReferences) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelBag this->categoryBag = soap_new_uddi2__categoryBag(soap, -1); this->categoryBag->soap_default(soap); this->categoryBag->keyedReference = keyedReferences; this->generic = "2.0"; } uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector tModelKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelBag this->tModelBag = soap_new_uddi2__tModelBag(soap, -1); this->tModelBag->soap_default(soap); this->tModelBag->tModelKey = tModelKeys; this->generic = "2.0"; } uddi2__serviceList* uddi2__find_USCOREservice::send(const char *endpoint) { // Allocate result uddi2__serviceList *result = soap_new_uddi2__serviceList(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__find_USCOREservice(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_tModel // //////////////////////////////////////////////////////////////////////////////// uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, const char *name) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI name this->name = soap_new_uddi2__name(soap, -1); this->name->soap_default(soap); this->name->__item = soap_strdup(soap, name); this->generic = "2.0"; } uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, std::vector keyedReferences) { // Initialize this object and associate it with the gSOAP context soap_default(soap); // Create a new UDDI tModelBag this->categoryBag = soap_new_uddi2__categoryBag(soap, -1); this->categoryBag->soap_default(soap); this->categoryBag->keyedReference = keyedReferences; this->generic = "2.0"; } uddi2__tModelList* uddi2__find_USCOREtModel::send(const char *endpoint) { // Allocate result uddi2__tModelList *result = soap_new_uddi2__tModelList(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__find_USCOREtModel(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_bindingDetail // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, const char *bindingKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->bindingKey.push_back(soap_strdup(soap, bindingKey)); this->generic = "2.0"; } uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, std::vector bindingKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->bindingKey = bindingKeys; this->generic = "2.0"; } uddi2__bindingDetail *uddi2__get_USCOREbindingDetail::send(const char *endpoint) { // Allocate result uddi2__bindingDetail *result = soap_new_uddi2__bindingDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__get_USCOREbindingDetail(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetail // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, const char *businessKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey.push_back(soap_strdup(soap, businessKey)); this->generic = "2.0"; } uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, std::vector businessKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey = businessKeys; this->generic = "2.0"; } uddi2__businessDetail *uddi2__get_USCOREbusinessDetail::send(const char *endpoint) { // Allocate result uddi2__businessDetail *result = soap_new_uddi2__businessDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__get_USCOREbusinessDetail(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetailExt // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, const char *businessKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey.push_back(soap_strdup(soap, businessKey)); this->generic = "2.0"; } uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, std::vector businessKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey = businessKeys; this->generic = "2.0"; } uddi2__businessDetailExt *uddi2__get_USCOREbusinessDetailExt::send(const char *endpoint) { // Allocate result uddi2__businessDetailExt *result = soap_new_uddi2__businessDetailExt(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__get_USCOREbusinessDetailExt(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_serviceDetail // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, const char *serviceKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->serviceKey.push_back(soap_strdup(soap, serviceKey)); this->generic = "2.0"; } uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, std::vector serviceKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->serviceKey = serviceKeys; this->generic = "2.0"; } uddi2__serviceDetail *uddi2__get_USCOREserviceDetail::send(const char *endpoint) { // Allocate result uddi2__serviceDetail *result = soap_new_uddi2__serviceDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__get_USCOREserviceDetail(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_tModelDetail // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, const char *tModelKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->tModelKey.push_back(soap_strdup(soap, tModelKey)); this->generic = "2.0"; } uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, std::vector tModelKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->tModelKey = tModelKeys; this->generic = "2.0"; } uddi2__tModelDetail *uddi2__get_USCOREtModelDetail::send(const char *endpoint) { // Allocate result uddi2__tModelDetail *result = soap_new_uddi2__tModelDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___inq2__get_USCOREtModelDetail(soap, endpoint, NULL, this, result)) return NULL; return result; } gsoap-2.8.60/gsoap/uddi2/publish_v2.cpp0000644000175000017500000005145113227173557017203 0ustar ellertellert/* publish_v2.cpp UDDI V2 Publish Interface -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2004-2005, Robert van Engelen, Genivia Inc. All Rights Reserved. This software is released under one of the following two licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "pubH.h" #define SOAP_NMAC static #define uddiH_H #include "PublishSoap.nsmap" //////////////////////////////////////////////////////////////////////////////// // // uddi2:add_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->publisherAssertion = publisherAssertions; this->generic = "2.0"; } uddi2__dispositionReport *uddi2__add_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__add_USCOREpublisherAssertions(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_binding // //////////////////////////////////////////////////////////////////////////////// uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, const char *bindingKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->bindingKey.push_back(soap_strdup(soap, bindingKey)); this->generic = "2.0"; } uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, std::vector bindingKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->bindingKey = bindingKeys; this->generic = "2.0"; } uddi2__dispositionReport *uddi2__delete_USCOREbinding::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__delete_USCOREbinding(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_business // //////////////////////////////////////////////////////////////////////////////// uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, const char *businessKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey.push_back(soap_strdup(soap, businessKey)); this->generic = "2.0"; } uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, std::vector businessKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessKey = businessKeys; this->generic = "2.0"; } uddi2__dispositionReport *uddi2__delete_USCOREbusiness::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__delete_USCOREbusiness(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_service // //////////////////////////////////////////////////////////////////////////////// uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, const char *serviceKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->serviceKey.push_back(soap_strdup(soap, serviceKey)); this->generic = "2.0"; } uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, std::vector serviceKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->serviceKey = serviceKeys; this->generic = "2.0"; } uddi2__dispositionReport *uddi2__delete_USCOREservice::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__delete_USCOREservice(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_tModel // //////////////////////////////////////////////////////////////////////////////// uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, const char *tModelKey) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->tModelKey.push_back(soap_strdup(soap, tModelKey)); this->generic = "2.0"; } uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, std::vector tModelKeys) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->tModelKey = tModelKeys; this->generic = "2.0"; } uddi2__dispositionReport *uddi2__delete_USCOREtModel::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__delete_USCOREtModel(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->publisherAssertion = publisherAssertions; this->generic = "2.0"; } uddi2__dispositionReport *uddi2__delete_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__delete_USCOREpublisherAssertions(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:discard_authToken // //////////////////////////////////////////////////////////////////////////////// uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap, const char *authInfo) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->authInfo = soap_strdup(soap, authInfo); this->generic = "2.0"; } uddi2__dispositionReport *uddi2__discard_USCOREauthToken::send(const char *endpoint) { // Allocate result uddi2__dispositionReport *result = soap_new_uddi2__dispositionReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__discard_USCOREauthToken(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_assertionStatusReport // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap, const char *completionStatus) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->completionStatus = soap_strdup(soap, completionStatus); this->generic = "2.0"; } uddi2__assertionStatusReport *uddi2__get_USCOREassertionStatusReport::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__assertionStatusReport *result = soap_new_uddi2__assertionStatusReport(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__get_USCOREassertionStatusReport(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_authToken // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap, const char *userid, const char *passwd) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->userID = soap_strdup(soap, userid); this->cred = soap_strdup(soap, passwd); this->generic = "2.0"; } uddi2__authToken *uddi2__get_USCOREauthToken::send(const char *endpoint) { // Allocate result uddi2__authToken *result = soap_new_uddi2__authToken(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__get_USCOREauthToken(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREpublisherAssertions::uddi2__get_USCOREpublisherAssertions(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__publisherAssertions *uddi2__get_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__publisherAssertions *result = soap_new_uddi2__publisherAssertions(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__get_USCOREpublisherAssertions(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_registeredInfo // //////////////////////////////////////////////////////////////////////////////// uddi2__get_USCOREregisteredInfo::uddi2__get_USCOREregisteredInfo(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__registeredInfo *uddi2__get_USCOREregisteredInfo::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__registeredInfo *result = soap_new_uddi2__registeredInfo(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__get_USCOREregisteredInfo(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_binding // //////////////////////////////////////////////////////////////////////////////// uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, uddi2__bindingTemplate &bindingTemplate) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->bindingTemplate.push_back(&bindingTemplate); this->generic = "2.0"; } uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, std::vector bindingTemplates) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->bindingTemplate = bindingTemplates; this->generic = "2.0"; } uddi2__bindingDetail *uddi2__save_USCOREbinding::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__bindingDetail *result = soap_new_uddi2__bindingDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__save_USCOREbinding(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_business // //////////////////////////////////////////////////////////////////////////////// uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, uddi2__businessEntity &businessEntity) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessEntity.push_back(&businessEntity); this->generic = "2.0"; } uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, std::vector businessEntities) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessEntity = businessEntities; this->generic = "2.0"; } uddi2__businessDetail *uddi2__save_USCOREbusiness::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__businessDetail *result = soap_new_uddi2__businessDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__save_USCOREbusiness(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_service // //////////////////////////////////////////////////////////////////////////////// uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, uddi2__businessService &businessService) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessService.push_back(&businessService); this->generic = "2.0"; } uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, std::vector businessServices) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->businessService = businessServices; this->generic = "2.0"; } uddi2__serviceDetail *uddi2__save_USCOREservice::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__serviceDetail *result = soap_new_uddi2__serviceDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__save_USCOREservice(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_tModel // //////////////////////////////////////////////////////////////////////////////// uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, uddi2__tModel &tModel) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->tModel.push_back(&tModel); this->generic = "2.0"; } uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, std::vector tModels) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->tModel = tModels; this->generic = "2.0"; } uddi2__tModelDetail *uddi2__save_USCOREtModel::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__tModelDetail *result = soap_new_uddi2__tModelDetail(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__save_USCOREtModel(soap, endpoint, NULL, this, result)) return NULL; return result; } //////////////////////////////////////////////////////////////////////////////// // // uddi2:set_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->generic = "2.0"; } uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) { // Initialize this object and associate it with the gSOAP context soap_default(soap); this->publisherAssertion = publisherAssertions; this->generic = "2.0"; } uddi2__publisherAssertions *uddi2__set_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) { // Set authorization token this->authInfo = authInfo; // Allocate result uddi2__publisherAssertions *result = soap_new_uddi2__publisherAssertions(soap, -1); // Invoke the wrapper soap_set_namespaces(soap, namespaces); if (soap_call___pub2__set_USCOREpublisherAssertions(soap, endpoint, NULL, this, result)) return NULL; return result; } gsoap-2.8.60/gsoap/uddi2/example3.cpp0000644000175000017500000001507013227173557016641 0ustar ellertellert/* example3.cpp Example UDDI V2 Client -------------------------------------------------------------------------------- gSOAP XML Web services tools Copyright (C) 2004-2005, Robert van Engelen, Genivia Inc. All Rights Reserved. This software is released under one of the following two licenses: GPL or Genivia's license for commercial use. -------------------------------------------------------------------------------- GPL license. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Author contact information: engelen@genivia.com / engelen@acm.org -------------------------------------------------------------------------------- A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ #include "pubH.h" const char *server = "https://uddi.xmethods.net/publish"; const char *userid = "..."; // user ID to access UDDI server const char *passwd = "..."; // password to access UDDI server int main(int argc, char **argv) { // Create a gSOAP context struct soap *soap = soap_new(); // Setup SSL context (optional) to verify server's credentials if (soap_ssl_client_context(soap, SOAP_SSL_DEFAULT, NULL, NULL, "cacerts.pem", NULL, NULL)) { soap_print_fault(soap, stderr); exit(1); } // Step 1: Get an authorization token from the UDDI server uddi2__get_USCOREauthToken get_authToken(soap, userid, passwd); uddi2__authToken *authToken = get_authToken.send(server); // Check if authorized if (!authToken) { soap_print_fault(soap, stderr); exit(1); } // Authorization info provided by server for this session char *authInfo = authToken->authInfo; // Step 2: Create a tModel for the WSDL to be published uddi2__tModel tModel; tModel.soap_default(soap); // Create the tModel and service name tModel.name = soap_new_uddi2__name(soap, -1); tModel.name->__item = "..."; tModel.name->xml__lang_ = "en"; // Create XMethods description elements (see http://www.xmethods.net/ve2/UDDI.po) uddi2__description *description = soap_new_uddi2__description(soap, 6); description[0].__item = "SHORT DESCRIPTION: ..."; description[0].xml__lang_ = "en"; description[1].__item = "SHORT DESCRIPTION: ..."; description[1].xml__lang_ = "en"; description[2].__item = "USAGE NOTES: ..."; description[2].xml__lang_ = "en"; description[3].__item = "HOMEPAGE URL: ..."; description[3].xml__lang_ = "en"; description[4].__item = "CONTACT EMAIL: ..."; description[4].xml__lang_ = "en"; description[5].__item = "IMPLEMENTATION: ..."; description[5].xml__lang_ = "en"; // Add the four description elements to the tModel tModel.description.push_back(description + 0); tModel.description.push_back(description + 1); tModel.description.push_back(description + 2); tModel.description.push_back(description + 4); // Add an overviewDoc element with description and overviewURL tModel.overviewDoc = soap_new_uddi2__overviewDoc(soap, -1); tModel.overviewDoc->soap_default(soap); tModel.overviewDoc->description.push_back(soap_new_uddi2__description(soap, -1)); tModel.overviewDoc->description[0]->__item = "WSDL source document"; tModel.overviewDoc->description[0]->xml__lang_ = "en"; tModel.overviewDoc->overviewURL = "http://.../my.wsdl#bindingName"; // Omit identifier bag tModel.identifierBag = NULL; // Add a category with a WSDL-specific keyedReference tModel.categoryBag = soap_new_uddi2__categoryBag(soap, -1); tModel.categoryBag->soap_default(soap); tModel.categoryBag->keyedReference.push_back(soap_new_uddi2__keyedReference(soap, -1)); tModel.categoryBag->keyedReference[0]->tModelKey = "..."; tModel.categoryBag->keyedReference[0]->keyName = "uddi-org:types"; tModel.categoryBag->keyedReference[0]->keyValue = "wsdlSpec"; tModel.authorizedName = "..."; tModel.operator_ = "..."; tModel.tModelKey = "..."; // Save the tModel uddi2__save_USCOREtModel save_tModel(soap, tModel); uddi2__tModelDetail *tModelDetail = save_tModel.send(server, authInfo); // Step 3: Create a new service to be published uddi2__businessService service; service.soap_default(soap); // Service name is the tModel name (XMethods) service.name.push_back(tModel.name); // Add two description elements to the service service.description.push_back(description + 4); service.description.push_back(description + 5); // Create binding template uddi2__bindingTemplate bindingTemplate; bindingTemplate.soap_default(soap); bindingTemplate.tModelInstanceDetails = soap_new_uddi2__tModelInstanceDetails(soap, -1); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo.push_back(soap_new_uddi2__tModelInstanceInfo(soap, -1)); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->instanceDetails = NULL; bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->tModelKey = tModel.tModelKey; bindingTemplate.accessPoint = soap_new_uddi2__accessPoint(soap, -1); bindingTemplate.accessPoint->__item = "..."; bindingTemplate.accessPoint->URLType = uddi2__URLType__http; bindingTemplate.hostingRedirector = NULL; bindingTemplate.serviceKey = "..."; bindingTemplate.bindingKey = "..."; // Add binding Template to service service.bindingTemplates = soap_new_uddi2__bindingTemplates(soap, -1); service.bindingTemplates->soap_default(soap); service.bindingTemplates->bindingTemplate.push_back(&bindingTemplate); service.categoryBag = NULL; service.serviceKey = "..."; service.businessKey = "..."; // Save the service uddi2__save_USCOREservice save_service(soap, service); uddi2__serviceDetail *serviceDetail = save_service.send(server, authInfo); // Step 4: Discard authorization token uddi2__discard_USCOREauthToken discard_authToken(soap, authInfo); uddi2__dispositionReport *dispositionReport = discard_authToken.send(server); // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } gsoap-2.8.60/gsoap/uddi2/inquire_v2.h0000644000175000017500000043123313227173557016656 0ustar ellertellert/** @mainpage gSOAP UDDI v2 Universal Description, Discovery and Integration, or UDDI, is the name of a group of web-based registries that expose information about a business or other entity and its technical interfaces. See the UDDI v2 specification @url http://uddi.org/pubs/ProgrammersAPI_v2.htm for more details. @section UDDI2_CLASSES Classes See Related Pages for examples. UDDI Inquire classes - @ref uddi2__find_USCOREbinding - @ref uddi2__find_USCOREbusiness - @ref uddi2__find_USCORErelatedBusinesses - @ref uddi2__find_USCOREservice - @ref uddi2__find_USCOREtModel - @ref uddi2__get_USCOREbindingDetail - @ref uddi2__get_USCOREbusinessDetail - @ref uddi2__get_USCOREbusinessDetailExt - @ref uddi2__get_USCOREserviceDetail - @ref uddi2__get_USCOREtModelDetail UDDI Publish classes - @ref uddi2__add_USCOREpublisherAssertions - @ref uddi2__delete_USCOREbinding - @ref uddi2__delete_USCOREbusiness - @ref uddi2__delete_USCOREservice - @ref uddi2__delete_USCOREtModel - @ref uddi2__delete_USCOREpublisherAssertions - @ref uddi2__discard_USCOREauthToken - @ref uddi2__get_USCOREassertionStatusReport - @ref uddi2__get_USCOREauthToken - @ref uddi2__get_USCOREpublisherAssertions - @ref uddi2__get_USCOREregisteredInfo - @ref uddi2__save_USCOREbinding - @ref uddi2__save_USCOREbusiness - @ref uddi2__save_USCOREservice - @ref uddi2__save_USCOREtModel - @ref uddi2__set_USCOREpublisherAssertions @section UDDI2_BINDINGS Binding Reference - @ref InquireSoap - @ref PublishSoap */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbinding @brief Represents a request to locate bindings that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137712 */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbinding class. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the find_USCOREbinding class using the specified tModel key. */ /** @fn uddi2__find_USCOREbinding::uddi2__find_USCOREbinding(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREbinding class using the specified tModel keys. */ /** @fn uddi2__bindingDetail* uddi2__find_USCOREbinding::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to find binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREbusiness @brief Represents a request to locate businesses that meet specific requirements. When the send method is called, the instance returns a uddi2__businessList object that contains a list of business that matched the search criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137713 See also @ref example2. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified name of the requested business. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified category references. */ /** @fn uddi2__find_USCOREbusiness::uddi2__find_USCOREbusiness(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREbusiness class using the specified tModel keys. */ /** @fn uddi2__businessList *uddi2__find_USCOREbusiness::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessList object or NULL on error Send a request to a UDDI server to find a list of businesses. See also @ref example2. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_relatedBusinesses // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCORErelatedBusinesses @brief Represents a request to locate businesses that are related to a specific business. When the send method is called, the instance returns a uddi2__relatedBusinessList object that contains a list of business that matched the relationship set. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137714 */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCORErelatedBusiness class. */ /** @fn uddi2__find_USCORErelatedBusinesses::uddi2__find_USCORErelatedBusinesses(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the find_USCORErelatedBusiness class using the specified business key. */ /** @fn uddi2__relatedBusinessesList *uddi2__find_USCORErelatedBusinesses::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__relatedBusinessList object or NULL on error Send a request to a UDDI server to find a list of related businesses. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREservice @brief Represents a request to locate services that meet the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137715 See also @ref example1. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREservice class. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the service Creates an instance of the find_USCOREservice class using the specified name. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREservice class using the specified category keys. */ /** @fn uddi2__find_USCOREservice::uddi2__find_USCOREservice(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel key strings Creates an instance of the find_USCOREservice class using the specified tModel keys. */ /** @fn uddi2__serviceList* uddi2__find_USCOREservice::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceList object or NULL on error Send a request to a UDDI server to find a list of services. See also @ref example1. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:find_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__find_USCOREtModel @brief Represents a request to locate a list of tModel entries that match a set of specific criteria. The result of a search is a uddi2__tModelList object that contains information about registered tModel data that matches the criteria. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137716 */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the find_USCOREtModel class. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, const char *name) @brief @param[in] soap gSOAP context @param[in] name of the tModel Creates an instance of the find_USCOREtModel class using the specified tModel name. */ /** @fn uddi2__find_USCOREtModel::uddi2__find_USCOREtModel(struct soap *soap, std::vector keyedReferences) @brief @param[in] soap gSOAP context @param[in] keyedReferences collection of category keys Creates an instance of the find_USCOREtModel class using the specified category keys. */ /** @fn uddi2__tModelList* uddi2__find_USCOREtModel::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelList object or NULL on error Send a request to a UDDI server to find a tModelList. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_bindingDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbindingDetail @brief Represents a request to get binding details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137717 */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbindingDetail class. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey string Creates an instance of the get_USCOREbindingDetail class using the specified binding key. */ /** @fn uddi2__get_USCOREbindingDetail::uddi2__get_USCOREbindingDetail(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of key strings Creates an instance of the get_USCOREbindingDetail class using the specified collection of binding keys. */ /** @fn uddi2__bindingDetail* uddi2__get_USCOREbindingDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to get the binding details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetail @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137718 */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetail class. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetail class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetail::uddi2__get_USCOREbusinessDetail(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetail class using the specified collection of business keys. */ /** @fn uddi2__businessDetail* uddi2__get_USCOREbusinessDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_businessDetailExt // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREbusinessDetailExt @brief Represents a request to get business details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137719 */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREbusinessDetailExt class. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey string Creates an instance of the get_USCOREbusinessDetailExt class using the specified business key. */ /** @fn uddi2__get_USCOREbusinessDetailExt::uddi2__get_USCOREbusinessDetailExt(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of key strings Creates an instance of the get_USCOREbusinessDetailExt class using the specified collection of business keys. */ /** @fn uddi2__businessDetailExt* uddi2__get_USCOREbusinessDetailExt::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__businessDetailExt object or NULL on error Send a request to a UDDI server to get the business details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_serviceDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREserviceDetail @brief Represents a request to get service details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137720 */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREserviceDetail class. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey string Creates an instance of the get_USCOREserviceDetail class using the specified service key. */ /** @fn uddi2__get_USCOREserviceDetail::uddi2__get_USCOREserviceDetail(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of key strings Creates an instance of the get_USCOREserviceDetail class using the specified collection of service keys. */ /** @fn uddi2__serviceDetail* uddi2__get_USCOREserviceDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to get the service details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_tModelDetail // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREtModelDetail @brief Represents a request to get tModel details from a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137721 */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREtModelDetail class. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey string Creates an instance of the get_USCOREtModelDetail class using the specified tModel key. */ /** @fn uddi2__get_USCOREtModelDetail::uddi2__get_USCOREtModelDetail(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of key strings Creates an instance of the get_USCOREtModelDetail class using the specified collection of tModel keys. */ /** @fn uddi2__tModelDetail* uddi2__get_USCOREtModelDetail::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to get the tModel details. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:add_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__add_USCOREpublisherAssertions @brief Represents a request to add one or more publisher assertions to the assertion collection for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137731 */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the add_USCOREpublisherAssertions class. */ /** @fn uddi2__add_USCOREpublisherAssertions::uddi2__add_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the add_USCOREpublisherAssertions class using the specified publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__add_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI server to add one or more publisher assertions to the assertion collection for an individual publisher. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbinding @brief Represents a request to delete a binding that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137732 */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap) @brief Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, const char *bindingKey) @brief @param[in] soap gSOAP context @param[in] bindingKey a binding key string Creates an instance of the delete_USCOREbinding class. */ /** @fn uddi2__delete_USCOREbinding::uddi2__delete_USCOREbinding(struct soap *soap, std::vector bindingKeys) @brief @param[in] soap gSOAP context @param[in] bindingKeys collection of binding keys Creates an instance of the delete_USCOREbinding class using the specified binding keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a binding that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREbusiness @brief Represents a request to delete a business that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137733 */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREbusiness class. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, const char *businessKey) @brief @param[in] soap gSOAP context @param[in] businessKey a business key string Creates an instance of the delete_USCOREbusiness class using the specified business key. */ /** @fn uddi2__delete_USCOREbusiness::uddi2__delete_USCOREbusiness(struct soap *soap, std::vector businessKeys) @brief @param[in] soap gSOAP context @param[in] businessKeys collection of business keys Creates an instance of the delete_USCOREbusiness class using the specified business keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a business that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREservice @brief Represents a request to delete a service that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137735 */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREservice class. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, const char *serviceKey) @brief @param[in] soap gSOAP context @param[in] serviceKey a service key string Creates an instance of the delete_USCOREservice class using the specified service key. */ /** @fn uddi2__delete_USCOREservice::uddi2__delete_USCOREservice(struct soap *soap, std::vector serviceKeys) @brief @param[in] soap gSOAP context @param[in] serviceKeys collection of service keys Creates an instance of the delete_USCOREservice class using the specified service keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a service that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREtModel @brief Represents a request to delete a tModel that meets the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137736 */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREtModel class. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, const char *tModelKey) @brief @param[in] soap gSOAP context @param[in] tModelKey a tModel key string Creates an instance of the delete_USCOREtModel class using the specified tModel key. */ /** @fn uddi2__delete_USCOREtModel::uddi2__delete_USCOREtModel(struct soap *soap, std::vector tModelKeys) @brief @param[in] soap gSOAP context @param[in] tModelKeys collection of tModel keys Creates an instance of the delete_USCOREtModel class using the specified tModel keys. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete a tModel that meets the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:delete_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__delete_USCOREpublisherAssertions @brief Represents a request to delete publisher assertions meeting the specified requirements. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137734 */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREpublisherAssertions class. */ /** @fn uddi2__delete_USCOREpublisherAssertions::uddi2__delete_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions a collection of publisher assertions Creates an instance of the delete_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__dispositionReport *uddi2__delete_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to delete publisher assertions meeting the specified requirements. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:discard_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__discard_USCOREauthToken @brief Represents a request to discard an authorization token obtained with the get_USCOREauthToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137737 */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the delete_USCOREauthToken class. */ /** @fn uddi2__discard_USCOREauthToken::uddi2__discard_USCOREauthToken(struct soap *soap, const char *authInfo) @brief @param[in] soap gSOAP context @param[in] authInfo authorization token provided by the UDDI server Creates an instance of the delete_USCOREauthToken class using the specified authentication token string. */ /** @fn uddi2__dispositionReport *uddi2__discard_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__dispositionReport object or NULL on error Send a request to a UDDI service to discard an authentication token. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_assertionStatusReport // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREassertionStatusReport @brief Provides the ability to determine the status of current and outstanding publisher assertions. The results can be restricted by setting the completionStatus property. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137738 */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREassertionStatusReport class. */ /** @fn uddi2__get_USCOREassertionStatusReport::uddi2__get_USCOREassertionStatusReport(struct soap *soap, const char *completionStatus) @brief @param[in] soap gSOAP context @param[in] completionStatus completion status string Creates an instance of the get_USCOREassertionStatusReport class using the specified completion status. */ /** @fn uddi2__assertionStatusReport *uddi2__get_USCOREassertionStatusReport::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__assertionStatusReport object or NULL on error Send a request to a UDDI service to get the status of current and outstanding publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_authToken // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREauthToken @brief Represents a request to obtain an authorization token, which is represented by the uddi2__authToken class. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137739 */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREauthToken class. */ /** @fn uddi2__get_USCOREauthToken::uddi2__get_USCOREauthToken(struct soap *soap, const char *userid, const char *passwd) @brief @param[in] soap gSOAP context @param[in] userid the user ID string @param[in] passwd the password string Creates an instance of the get_USCOREauthToken class using the specified user ID and password. */ /** @fn uddi2__authToken *uddi2__get_USCOREauthToken::send(const char *endpoint) @brief @param[in] endpoint URL of the UDDI server @return A pointer to a uddi2__authToken object or NULL on error Send a request to a UDDI service to get a authorization token given a user ID and password. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREpublisherAssertions @brief Represents a request to obtain the full set of publisher assertions that are associated with an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137740 */ /** @fn uddi2__get_USCOREpublisherAssertions::uddi2__get_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREpublisherAssetions class. */ /** @fn uddi2__publisherAssertions *uddi2__get_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI service to get publisher assertions. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:get_registeredInfo // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__get_USCOREregisteredInfo @brief Represents a request to get all registered business entities and tModels controlled by an individual. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137741 */ /** @fn uddi2__get_USCOREregisteredInfo::uddi2__get_USCOREregisteredInfo(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the get_USCOREregisteredInfo class. */ /** @fn uddi2__registeredInfo *uddi2__get_USCOREregisteredInfo::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__registeredInfo object or NULL on error Send a request to a UDDI service to get all registered business entities and tModels controlled by an individual. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_binding // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbinding @brief Represents a request to post binding information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137742 */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbinding class. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, uddi2__bindingTemplate &bindingTemplate) @brief @param[in] soap gSOAP context @param[in] bindingTemplate binding template Creates an instance of the save_USCOREbinding class using the specified binding template. */ /** @fn uddi2__save_USCOREbinding::uddi2__save_USCOREbinding(struct soap *soap, std::vector bindingTemplates) @brief @param[in] soap gSOAP context @param[in] bindingTemplates collection of binding templates Creates an instance of the save_USCOREbinding class using the specified binding templates. */ /** @fn uddi2__bindingDetail *uddi2__save_USCOREbinding::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__bindingDetail object or NULL on error Send a request to a UDDI server to post binding information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_business // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREbusiness @brief Represents a request to post business information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137743 */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREbusiness class. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, uddi2__businessEntity &businessEntity) @brief @param[in] soap gSOAP context @param[in] businessEntity business entity Creates an instance of the save_USCOREbusiness class using the specified business entity. */ /** @fn uddi2__save_USCOREbusiness::uddi2__save_USCOREbusiness(struct soap *soap, std::vector businessEntities) @brief @param[in] soap gSOAP context @param[in] businessEntities collection of business entities Creates an instance of the save_USCOREbusiness class using the specified business entities. */ /** @fn uddi2__businessDetail *uddi2__save_USCOREbusiness::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__businessDetail object or NULL on error Send a request to a UDDI server to post business information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_service // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREservice @brief Represents a request to post service information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137744 */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREservice class. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, uddi2__businessService &businessService) @brief @param[in] soap gSOAP context @param[in] businessService business service Creates an instance of the save_USCOREservice class using the specified service. */ /** @fn uddi2__save_USCOREservice::uddi2__save_USCOREservice(struct soap *soap, std::vector businessServices) @brief @param[in] soap gSOAP context @param[in] businessServices collection of business services Creates an instance of the save_USCOREservice class using the specified services. */ /** @fn uddi2__serviceDetail *uddi2__save_USCOREservice::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__serviceDetail object or NULL on error Send a request to a UDDI server to post service information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:save_tModel // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__save_USCOREtModel @brief Represents a request to post tModel information on a UDDI server. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137745 */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the save_USCOREtModel class. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, uddi2__tModel &tModel) @brief @param[in] soap gSOAP context @param[in] tModel a tModel Creates an instance of the save_USCOREtModel class using the specified tModel. */ /** @fn uddi2__save_USCOREtModel::uddi2__save_USCOREtModel(struct soap *soap, std::vector tModels) @brief @param[in] soap gSOAP context @param[in] tModels collection of tModels Creates an instance of the save_USCOREtModel class using the specified tModels. */ /** @fn uddi2__tModelDetail *uddi2__save_USCOREtModel::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__tModelDetail object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // uddi2:set_publisherAssertions // //////////////////////////////////////////////////////////////////////////////// /** @class uddi2__set_USCOREpublisherAssertions @brief Represents a request to modify the existing publisher assertions for an individual publisher. See @url http://uddi.org/pubs/ProgrammersAPI_v2.htm#_Toc25137746 */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap) @brief @param[in] soap gSOAP context Creates an instance of the set_USCOREpublisherAssertions class. */ /** @fn uddi2__set_USCOREpublisherAssertions::uddi2__set_USCOREpublisherAssertions(struct soap *soap, std::vector publisherAssertions) @brief @param[in] soap gSOAP context @param[in] publisherAssertions collection of publisher assertions Creates an instance of the set_USCOREpublisherAssertions class using the specified collection of publisher assertions. */ /** @fn uddi2__publisherAssertions *uddi2__set_USCOREpublisherAssertions::send(const char *endpoint, char *authInfo) @brief @param[in] endpoint URL of the UDDI server @param[in] authInfo authorization token provided by the UDDI server @return A pointer to a uddi2__publisherAssertions object or NULL on error Send a request to a UDDI server to post tModel information on the server. */ //////////////////////////////////////////////////////////////////////////////// // // Code Examples // //////////////////////////////////////////////////////////////////////////////// /** @page example1 Code Example 1: Finding a service This example shows you how to find Web services. In this case, the example finds Web services with names that begin with the word "magic". @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "magic"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREservice fs(soap, search_string); // Send the request uddi2__serviceList *sl = fs.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!sl) soap_print_fault(soap, stderr); // If OK, report the service name(s) and unique identification keys else if (sl->serviceInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator si = sl->serviceInfos->serviceInfo.begin(); si != sl->serviceInfos->serviceInfo.end(); ++si) { // Report serviceKey and businessKey std::cout << "serviceKey=" << (*si)->serviceKey << std::endl << "businessKey=" << (*si)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*si)->name.begin(); n != (*si)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example1 example1.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example2 Code Example 2: Finding a business This example shows you how to find a business from a UDDI server. @code #include "inqH.h" int main(int argc, char **argv) { char *search_string = "xmethods"; if (argc > 1) search_string = argv[1]; // Create a gSOAP context struct soap *soap = soap_new(); // Create an object to find a business uddi2__find_USCOREbusiness fb(soap, search_string); // Send the request uddi2__businessList *bl = fb.send("http://uddi.xmethods.net/inquire"); // Check if result is OK if (!bl) soap_print_fault(soap, stderr); // If OK, report the business name(s) and unique identification keys else if (bl->businessInfos) { std::cout << "Search results on " << search_string << ":" << std::endl << std::endl; for (std::vector::const_iterator bi = bl->businessInfos->businessInfo.begin(); bi != bl->businessInfos->businessInfo.end(); ++bi) { // Report businessKey std::cout << "businessKey=" << (*bi)->businessKey << std::endl; // Report names for (std::vector::const_iterator n = (*bi)->name.begin(); n != (*bi)->name.end(); ++n) std::cout << "name=" << (*n)->__item << std::endl; std::cout << std::endl; } } // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat inquire_v2.wsdl - soapcpp2 -I.. -pinq inquire_v2.h - g++ -DWITH_NONAMESPACES -I.. -o example2 example2.cpp inquire_v2.cpp inqC.cpp inqClient.cpp ../stdsoap2.cpp */ /** @page example3 Code Example 3: Publishing a WSDL and service on XMethods This example shows you how to publish a Web service. In this case, the example template code obtains an authorization token, saves the tModel with the WSDL URL in the server, and saves the business service information in the server. @code #include "pubH.h" const char *server = "https://uddi.xmethods.net/publish"; const char *userid = "..."; // user ID to access UDDI server const char *passwd = "..."; // password to access UDDI server int main(int argc, char **argv) { // Create a gSOAP context struct soap *soap = soap_new(); // Setup SSL context (optional) to verify server's credentials if (soap_ssl_client_context(soap, SOAP_SSL_DEFAULT, NULL, NULL, "cacerts.pem", NULL, NULL)) { soap_print_fault(soap, stderr); exit(1); } // Step 1: Get an authorization token from the UDDI server uddi2__get_USCOREauthToken get_authToken(soap, userid, passwd); uddi2__authToken *authToken = get_authToken.send(server); // Check if authorized if (!authToken) { soap_print_fault(soap, stderr); exit(1); } // Authorization info provided by server for this session char *authInfo = authToken->authInfo; // Step 2: Create a tModel for the WSDL to be published uddi2__tModel tModel; tModel.soap_default(soap); // Create the tModel and service name tModel.name = soap_new_uddi2__name(soap, -1); tModel.name->__item = "..."; tModel.name->xml__lang_ = "en"; // Create XMethods description elements (see http://www.xmethods.net/ve2/UDDI.po) uddi2__description *description = soap_new_uddi2__description(soap, 6); description[0].__item = "SHORT DESCRIPTION: ..."; description[0].xml__lang_ = "en"; description[1].__item = "SHORT DESCRIPTION: ..."; description[1].xml__lang_ = "en"; description[2].__item = "USAGE NOTES: ..."; description[2].xml__lang_ = "en"; description[3].__item = "HOMEPAGE URL: ..."; description[3].xml__lang_ = "en"; description[4].__item = "CONTACT EMAIL: ..."; description[4].xml__lang_ = "en"; description[5].__item = "IMPLEMENTATION: ..."; description[5].xml__lang_ = "en"; // Add the four description elements to the tModel tModel.description.push_back(description + 0); tModel.description.push_back(description + 1); tModel.description.push_back(description + 2); tModel.description.push_back(description + 4); // Add an overviewDoc element with description and overviewURL tModel.overviewDoc = soap_new_uddi2__overviewDoc(soap, -1); tModel.overviewDoc->soap_default(soap); tModel.overviewDoc->description.push_back(soap_new_uddi2__description(soap, -1)); tModel.overviewDoc->description[0]->__item = "WSDL source document"; tModel.overviewDoc->description[0]->xml__lang_ = "en"; tModel.overviewDoc->overviewURL = "http://.../my.wsdl#bindingName"; // Omit identifier bag tModel.identifierBag = NULL; // Add a category with a WSDL-specific keyedReference tModel.categoryBag = soap_new_uddi2__categoryBag(soap, -1); tModel.categoryBag->soap_default(soap); tModel.categoryBag->keyedReference.push_back(soap_new_uddi2__keyedReference(soap, -1)); tModel.categoryBag->keyedReference[0]->tModelKey = "..."; tModel.categoryBag->keyedReference[0]->keyName = "uddi-org:types"; tModel.categoryBag->keyedReference[0]->keyValue = "wsdlSpec"; tModel.authorizedName = "..."; tModel.operator_ = "..."; tModel.tModelKey = "..."; // Save the tModel uddi2__save_USCOREtModel save_tModel(soap, tModel); uddi2__tModelDetail *tModelDetail = save_tModel.send(server, authInfo); // Step 3: Create a new service to be published uddi2__businessService service; service.soap_default(soap); // Service name is the tModel name (XMethods) service.name.push_back(tModel.name); // Add two description elements to the service service.description.push_back(description + 4); service.description.push_back(description + 5); // Create binding template uddi2__bindingTemplate bindingTemplate; bindingTemplate.soap_default(soap); bindingTemplate.tModelInstanceDetails = soap_new_uddi2__tModelInstanceDetails(soap, -1); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo.push_back(soap_new_uddi2__tModelInstanceInfo(soap, -1)); bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->instanceDetails = NULL; bindingTemplate.tModelInstanceDetails->tModelInstanceInfo[0]->tModelKey = tModel.tModelKey; bindingTemplate.accessPoint = soap_new_uddi2__accessPoint(soap, -1); bindingTemplate.accessPoint->__item = "..."; bindingTemplate.accessPoint->URLType = uddi2__URLType__http; bindingTemplate.hostingRedirector = NULL; bindingTemplate.serviceKey = "..."; bindingTemplate.bindingKey = "..."; // Add binding Template to service service.bindingTemplates = soap_new_uddi2__bindingTemplates(soap, -1); service.bindingTemplates->soap_default(soap); service.bindingTemplates->bindingTemplate.push_back(&bindingTemplate); service.categoryBag = NULL; service.serviceKey = "..."; service.businessKey = "..."; // Save the service uddi2__save_USCOREservice save_service(soap, service); uddi2__serviceDetail *serviceDetail = save_service.send(server, authInfo); // Step 4: Discard authorization token uddi2__discard_USCOREauthToken discard_authToken(soap, authInfo); uddi2__dispositionReport *dispositionReport = discard_authToken.send(server); // Remove deserialized objects soap_destroy(soap); // Remove temporary data soap_end(soap); // Detach and free context soap_done(soap); free(soap); return 0; } @endcode To compile: - wsdl2h -tuddi2-typemap.dat publish_v2.wsdl - soapcpp2 -I.. -ppub publish_v2.h - g++ -DWITH_OPENSSL -DWITH_NONAMESPACES -I.. -o example3 example3.cpp publish_v2.cpp pubC.cpp pubClient.cpp ../stdsoap2.cpp */ /* inquire_v2.h Generated by wsdl2h 1.2.0 from inquire_v2.wsdl and uddi2-typemap.dat 2005-04-24 00:29:41 GMT Copyright (C) 2001-2005 Robert van Engelen, Genivia Inc. All Rights Reserved. This part of the software is released under one of the following licenses: GPL or Genivia's license for commercial use. */ /* NOTE: - Compile this file with soapcpp2 to complete the code generation process. - Use wsdl2h option -l to view the software license terms. - Use wsdl2h options -c and -s to generate pure C code or C++ code without STL. - To build with STL, stlvector.h from the gSOAP distribution must be in the current directory. Or use soapcpp2 option -I with path to stlvector.h. - Use typemap.dat to control schema namespace bindings and type mappings. It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces section below and add the modified lines to typemap.dat to rerun wsdl2h. - Use Doxygen (www.doxygen.org) to browse this file. */ /******************************************************************************\ * * * urn:uddi-org:inquiry_v2 * * * \******************************************************************************/ /* WSDL Documentation: Copyright (c) 2000 - 2002 by Accenture, Ariba, Inc., Commerce One, Inc. Fujitsu Limited, Hewlett-Packard Company, i2 Technologies, Inc., Intel Corporation, International Business Machines Corporation, Microsoft Corporation, Oracle Corporation, SAP AG, Sun Microsystems, Inc., and VeriSign, Inc. All Rights Reserved. WSDL Service Interface for UDDI Inquiry API V2.0 This WSDL document defines the inquiry API calls for interacting with the UDDI registry. The complete UDDI API specification is available at http://www.uddi.org/specification.html. */ //gsoapopt w #import "stlvector.h" /******************************************************************************\ * * * Schema Namespaces * * * \******************************************************************************/ /* NOTE: It is strongly recommended to customize the names of the namespace prefixes generated by wsdl2h. To do so, modify the prefix bindings below and add the modified lines to typemap.dat to rerun wsdl2h: inq2 = "urn:uddi-org:inquiry_v2" uddi2 = urn:uddi-org:api_v2 */ //gsoap inq2 schema namespace: urn:uddi-org:inquiry_v2 //gsoap uddi2 schema namespace: urn:uddi-org:api_v2 //gsoap inq2 schema form: unqualified //gsoap uddi2 schema elementForm: qualified //gsoap uddi2 schema attributeForm: unqualified /******************************************************************************\ * * * Schema Types * * * \******************************************************************************/ /// Primitive built-in type "xs:NMTOKEN" typedef char* xsd__NMTOKEN; /// Built-in attribute "xml:lang" typedef char* xml__lang; class uddi2__accessPoint; class uddi2__address; class uddi2__addressLine; class uddi2__assertionStatusItem; class uddi2__bindingTemplate; class uddi2__bindingTemplates; class uddi2__businessEntity; class uddi2__businessEntityExt; class uddi2__businessInfo; class uddi2__businessInfos; class uddi2__businessService; class uddi2__businessServices; class uddi2__categoryBag; class uddi2__contact; class uddi2__contacts; class uddi2__description; class uddi2__discoveryURL; class uddi2__discoveryURLs; class uddi2__dispositionReport; class uddi2__email; class uddi2__errInfo; class uddi2__findQualifiers; class uddi2__hostingRedirector; class uddi2__identifierBag; class uddi2__instanceDetails; class uddi2__keyedReference; class uddi2__keysOwned; class uddi2__name; class uddi2__overviewDoc; class uddi2__phone; class uddi2__publisherAssertion; class uddi2__relatedBusinessInfo; class uddi2__relatedBusinessInfos; class uddi2__result; class uddi2__serviceInfo; class uddi2__serviceInfos; class uddi2__sharedRelationships; class uddi2__tModel; class uddi2__tModelBag; class uddi2__tModelInfo; class uddi2__tModelInfos; class uddi2__tModelInstanceDetails; class uddi2__tModelInstanceInfo; class uddi2__add_USCOREpublisherAssertions; class uddi2__delete_USCOREbinding; class uddi2__delete_USCOREbusiness; class uddi2__delete_USCOREpublisherAssertions; class uddi2__delete_USCOREservice; class uddi2__delete_USCOREtModel; class uddi2__discard_USCOREauthToken; class uddi2__find_USCOREbinding; class uddi2__find_USCOREbusiness; class uddi2__find_USCORErelatedBusinesses; class uddi2__find_USCOREservice; class uddi2__find_USCOREtModel; class uddi2__get_USCOREassertionStatusReport; class uddi2__get_USCOREauthToken; class uddi2__get_USCOREbindingDetail; class uddi2__get_USCOREbusinessDetail; class uddi2__get_USCOREbusinessDetailExt; class uddi2__get_USCOREpublisherAssertions; class uddi2__get_USCOREregisteredInfo; class uddi2__get_USCOREserviceDetail; class uddi2__get_USCOREtModelDetail; class uddi2__save_USCOREbinding; class uddi2__save_USCOREbusiness; class uddi2__save_USCOREservice; class uddi2__save_USCOREtModel; class uddi2__set_USCOREpublisherAssertions; class uddi2__validate_USCOREvalues; class uddi2__assertionStatusReport; class uddi2__authToken; class uddi2__bindingDetail; class uddi2__businessDetail; class uddi2__businessDetailExt; class uddi2__businessList; class uddi2__publisherAssertions; class uddi2__registeredInfo; class uddi2__relatedBusinessesList; class uddi2__serviceDetail; class uddi2__serviceList; class uddi2__tModelDetail; class uddi2__tModelList; /// Schema "urn:uddi-org:api_v2":bindingKey simpleType restriction of xs:string typedef char* uddi2__bindingKey; /// Schema "urn:uddi-org:api_v2":businessKey simpleType restriction of xs:string typedef char* uddi2__businessKey; /// Schema "urn:uddi-org:api_v2":serviceKey simpleType restriction of xs:string typedef char* uddi2__serviceKey; /// Schema "urn:uddi-org:api_v2":tModelKey simpleType restriction of xs:string typedef char* uddi2__tModelKey; /// Schema "urn:uddi-org:api_v2":direction simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__direction' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__direction { uddi2__direction__fromKey, ///< xs:NMTOKEN value="fromKey" uddi2__direction__toKey, ///< xs:NMTOKEN value="toKey" }; /// Schema "urn:uddi-org:api_v2":truncated simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__truncated' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__truncated { uddi2__truncated__true_, ///< xs:NMTOKEN value="true" uddi2__truncated__false_, ///< xs:NMTOKEN value="false" }; /// Schema "urn:uddi-org:api_v2":URLType simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__URLType' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__URLType { uddi2__URLType__mailto, ///< xs:NMTOKEN value="mailto" uddi2__URLType__http, ///< xs:NMTOKEN value="http" uddi2__URLType__https, ///< xs:NMTOKEN value="https" uddi2__URLType__ftp, ///< xs:NMTOKEN value="ftp" uddi2__URLType__fax, ///< xs:NMTOKEN value="fax" uddi2__URLType__phone, ///< xs:NMTOKEN value="phone" uddi2__URLType__other, ///< xs:NMTOKEN value="other" }; /// Schema "urn:uddi-org:api_v2":keyType simpleType restriction of xs:NMTOKEN /// Note: enum values are prefixed with 'uddi2__keyType' to avoid name clashes, please use wsdl2h option -e to omit this prefix enum uddi2__keyType { uddi2__keyType__businessKey, ///< xs:NMTOKEN value="businessKey" uddi2__keyType__tModelKey, ///< xs:NMTOKEN value="tModelKey" uddi2__keyType__serviceKey, ///< xs:NMTOKEN value="serviceKey" uddi2__keyType__bindingKey, ///< xs:NMTOKEN value="bindingKey" }; /// Schema urn:uddi-org:api_v2:"address" class uddi2__address { public: /// Vector of uddi2__addressLine* with length 0..unbounded std::vector addressLine 0; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// Attribute sortCode of type xs:string @char* sortCode 0; ///< Optional attribute /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"assertionStatusItem" class uddi2__assertionStatusItem { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keysOwned uddi2__keysOwned* keysOwned 1; ///< Required element /// Attribute completionStatus of type xs:string @char* completionStatus 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingTemplate" class uddi2__bindingTemplate { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":tModelInstanceDetails uddi2__tModelInstanceDetails* tModelInstanceDetails 1; ///< Required element // CHOICE OF ELEMENTS: /// Element reference "urn:uddi-org:api_v2":accessPoint uddi2__accessPoint* accessPoint 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":hostingRedirector uddi2__hostingRedirector* hostingRedirector 1; ///< Required element // END CHOICE /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 0; ///< Optional attribute /// Attribute bindingKey of type "urn:uddi-org:api_v2":bindingKey @uddi2__bindingKey bindingKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingTemplates" class uddi2__bindingTemplates { public: /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessEntity" class uddi2__businessEntity { public: /// Element reference "urn:uddi-org:api_v2":discoveryURLs uddi2__discoveryURLs* discoveryURLs 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":contacts uddi2__contacts* contacts 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":businessServices uddi2__businessServices* businessServices 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 0; ///< Optional attribute /// Attribute authorizedName of type xs:string @char* authorizedName 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessEntityExt" class uddi2__businessEntityExt { public: /// Element reference "urn:uddi-org:api_v2":businessEntity uddi2__businessEntity* businessEntity 1; ///< Required element // TODO: // Schema extensibility is user-definable // Consult the protocol documentation to insert declarations here: _XML __any ; ///< Catch any element content in XML string /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessInfo" class uddi2__businessInfo { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":serviceInfos uddi2__serviceInfos* serviceInfos 1; ///< Required element /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessInfos" class uddi2__businessInfos { public: /// Vector of uddi2__businessInfo* with length 0..unbounded std::vector businessInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessService" class uddi2__businessService { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":bindingTemplates uddi2__bindingTemplates* bindingTemplates 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessServices" class uddi2__businessServices { public: /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"categoryBag" class uddi2__categoryBag { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"contact" class uddi2__contact { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":personName char* personName 1; ///< Required element /// Vector of uddi2__phone* with length 0..unbounded std::vector phone 0; /// Vector of uddi2__email* with length 0..unbounded std::vector email 0; /// Vector of uddi2__address* with length 0..unbounded std::vector address 0; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"contacts" class uddi2__contacts { public: /// Vector of uddi2__contact* with length 0..unbounded std::vector contact 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"discoveryURLs" class uddi2__discoveryURLs { public: /// Vector of uddi2__discoveryURL* with length 0..unbounded std::vector discoveryURL 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"dispositionReport" class uddi2__dispositionReport { public: /// Vector of uddi2__result* with length 0..unbounded std::vector result 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"findQualifiers" class uddi2__findQualifiers { public: /// Vector of char* with length 0..unbounded std::vector findQualifier 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"hostingRedirector" class uddi2__hostingRedirector { public: /// Attribute bindingKey of type "urn:uddi-org:api_v2":bindingKey @uddi2__bindingKey bindingKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"identifierBag" class uddi2__identifierBag { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"instanceDetails" class uddi2__instanceDetails { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewDoc uddi2__overviewDoc* overviewDoc 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":instanceParms char* instanceParms 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"keyedReference" class uddi2__keyedReference { public: /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 0; ///< Optional attribute /// Attribute keyName of type xs:string @char* keyName 0; ///< Optional attribute /// Attribute keyValue of type xs:string @char* keyValue 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"keysOwned" class uddi2__keysOwned { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"overviewDoc" class uddi2__overviewDoc { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewURL char* overviewURL 0; ///< Optional element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"publisherAssertion" class uddi2__publisherAssertion { public: /// Element reference "urn:uddi-org:api_v2":fromKey uddi2__businessKey fromKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":toKey uddi2__businessKey toKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 1; ///< Required element /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessInfo" class uddi2__relatedBusinessInfo { public: /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Vector of uddi2__name* with length 0..unbounded std::vector name 1; /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Vector of uddi2__sharedRelationships* with length 0..2 std::vector sharedRelationships 1:2; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessInfos" class uddi2__relatedBusinessInfos { public: /// Vector of uddi2__relatedBusinessInfo* with length 0..unbounded std::vector relatedBusinessInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"result" class uddi2__result { public: /// Element reference "urn:uddi-org:api_v2":errInfo uddi2__errInfo* errInfo 0; ///< Optional element /// Attribute keyType of type "urn:uddi-org:api_v2":keyType @enum uddi2__keyType* keyType 0; ///< Optional attribute /// Attribute errno of type xs:int @int errno_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceInfo" class uddi2__serviceInfo { public: /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceInfos" class uddi2__serviceInfos { public: /// Vector of uddi2__serviceInfo* with length 0..unbounded std::vector serviceInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"sharedRelationships" class uddi2__sharedRelationships { public: /// Vector of uddi2__keyedReference* with length 0..unbounded std::vector keyedReference 1; /// Attribute direction of type "urn:uddi-org:api_v2":direction @enum uddi2__direction direction 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModel" class uddi2__tModel { public: /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 1; ///< Required element /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":overviewDoc uddi2__overviewDoc* overviewDoc 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 0; ///< Optional attribute /// Attribute authorizedName of type xs:string @char* authorizedName 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelBag" class uddi2__tModelBag { public: /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInfo" class uddi2__tModelInfo { public: /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 1; ///< Required element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInfos" class uddi2__tModelInfos { public: /// Vector of uddi2__tModelInfo* with length 0..unbounded std::vector tModelInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInstanceDetails" class uddi2__tModelInstanceDetails { public: /// Vector of uddi2__tModelInstanceInfo* with length 0..unbounded std::vector tModelInstanceInfo 0; /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelInstanceInfo" class uddi2__tModelInstanceInfo { public: /// Vector of uddi2__description* with length 0..unbounded std::vector description 0; /// Element reference "urn:uddi-org:api_v2":instanceDetails uddi2__instanceDetails* instanceDetails 0; ///< Optional element /// Attribute tModelKey of type "urn:uddi-org:api_v2":tModelKey @uddi2__tModelKey tModelKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"add_publisherAssertions" class uddi2__add_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__add_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__add_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_binding" class uddi2__delete_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__bindingKey with length 0..unbounded std::vector bindingKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*, const char *bindingKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbinding(struct soap*, std::vector bindingKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_business" class uddi2__delete_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREbusiness(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_publisherAssertions" class uddi2__delete_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_service" class uddi2__delete_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__serviceKey with length 0..unbounded std::vector serviceKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*, const char *serviceKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREservice(struct soap*, std::vector serviceKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"delete_tModel" class uddi2__delete_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__delete_USCOREtModel(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"discard_authToken" class uddi2__discard_USCOREauthToken { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__discard_USCOREauthToken(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__discard_USCOREauthToken(struct soap*, const char *authInfo); /// Member declared in uddi2-typemap.dat uddi2__dispositionReport* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_binding" class uddi2__find_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// Attribute serviceKey of type "urn:uddi-org:api_v2":serviceKey @uddi2__serviceKey serviceKey 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbinding(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_business" class uddi2__find_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":discoveryURLs uddi2__discoveryURLs* discoveryURLs 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREbusiness(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__businessList *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_relatedBusinesses" class uddi2__find_USCORErelatedBusinesses { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":keyedReference uddi2__keyedReference* keyedReference 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCORErelatedBusinesses(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCORErelatedBusinesses(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__relatedBusinessesList *send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_service" class uddi2__find_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Vector of uddi2__name* with length 0..unbounded std::vector name 0; /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":tModelBag uddi2__tModelBag* tModelBag 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// Attribute businessKey of type "urn:uddi-org:api_v2":businessKey @uddi2__businessKey businessKey 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREservice(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__serviceList* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"find_tModel" class uddi2__find_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":findQualifiers uddi2__findQualifiers* findQualifiers 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":name uddi2__name* name 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":identifierBag uddi2__identifierBag* identifierBag 0; ///< Optional element /// Element reference "urn:uddi-org:api_v2":categoryBag uddi2__categoryBag* categoryBag 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute maxRows of type xs:int @int* maxRows 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*, const char *name); /// Member declared in uddi2-typemap.dat uddi2__find_USCOREtModel(struct soap*, std::vector keyedReferences); /// Member declared in uddi2-typemap.dat uddi2__tModelList* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_assertionStatusReport" class uddi2__get_USCOREassertionStatusReport { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":completionStatus char* completionStatus 0; ///< Optional element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREassertionStatusReport(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREassertionStatusReport(struct soap*, const char *completionStatus); /// Member declared in uddi2-typemap.dat uddi2__assertionStatusReport* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_authToken" class uddi2__get_USCOREauthToken { public: /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute userID of type xs:string @char* userID 1; ///< Required attribute /// Attribute cred of type xs:string @char* cred 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREauthToken(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREauthToken(struct soap*, const char *userid, const char *passwd); /// Member declared in uddi2-typemap.dat uddi2__authToken* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_bindingDetail" class uddi2__get_USCOREbindingDetail { public: /// Vector of uddi2__bindingKey with length 0..unbounded std::vector bindingKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*, const char *bindingKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbindingDetail(struct soap*, std::vector bindingKeys); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_businessDetail" class uddi2__get_USCOREbusinessDetail { public: /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetail(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__businessDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_businessDetailExt" class uddi2__get_USCOREbusinessDetailExt { public: /// Vector of uddi2__businessKey with length 0..unbounded std::vector businessKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*, const char *businessKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREbusinessDetailExt(struct soap*, std::vector businessKeys); /// Member declared in uddi2-typemap.dat uddi2__businessDetailExt* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_publisherAssertions" class uddi2__get_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_registeredInfo" class uddi2__get_USCOREregisteredInfo { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREregisteredInfo(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__registeredInfo* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"get_serviceDetail" class uddi2__get_USCOREserviceDetail { public: /// Vector of uddi2__serviceKey with length 0..unbounded std::vector serviceKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*, const char *serviceKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREserviceDetail(struct soap*, std::vector serviceKeys); /// Member declared in uddi2-typemap.dat uddi2__serviceDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"get_tModelDetail" class uddi2__get_USCOREtModelDetail { public: /// Vector of uddi2__tModelKey with length 0..unbounded std::vector tModelKey 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*, const char *tModelKey); /// Member declared in uddi2-typemap.dat uddi2__get_USCOREtModelDetail(struct soap*, std::vector tModelKeys); /// Member declared in uddi2-typemap.dat uddi2__tModelDetail* send(const char *endpoint); }; /// Schema urn:uddi-org:api_v2:"save_binding" class uddi2__save_USCOREbinding { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*, uddi2__bindingTemplate &bindingTemplate); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbinding(struct soap*, std::vector bindingTemplates); /// Member declared in uddi2-typemap.dat uddi2__bindingDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_business" class uddi2__save_USCOREbusiness { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Vector of char* with length 0..unbounded std::vector uploadRegister 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*, uddi2__businessEntity &businessEntity); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREbusiness(struct soap*, std::vector businessEntities); /// Member declared in uddi2-typemap.dat uddi2__businessDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_service" class uddi2__save_USCOREservice { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*, uddi2__businessService &businessService); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREservice(struct soap*, std::vector businessServices); /// Member declared in uddi2-typemap.dat uddi2__serviceDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"save_tModel" class uddi2__save_USCOREtModel { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 0; /// Vector of char* with length 0..unbounded std::vector uploadRegister 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*, uddi2__tModel &tModel); /// Member declared in uddi2-typemap.dat uddi2__save_USCOREtModel(struct soap*, std::vector tModels); /// Member declared in uddi2-typemap.dat uddi2__tModelDetail* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"set_publisherAssertions" class uddi2__set_USCOREpublisherAssertions { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; /// Member declared in uddi2-typemap.dat uddi2__set_USCOREpublisherAssertions(struct soap*); /// Member declared in uddi2-typemap.dat uddi2__set_USCOREpublisherAssertions(struct soap*, std::vector publisherAssertions); /// Member declared in uddi2-typemap.dat uddi2__publisherAssertions* send(const char *endpoint, char *authInfo); }; /// Schema urn:uddi-org:api_v2:"validate_values" class uddi2__validate_USCOREvalues { public: // CHOICE OF ELEMENTS: /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 0; // END CHOICE /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"assertionStatusReport" class uddi2__assertionStatusReport { public: /// Vector of uddi2__assertionStatusItem* with length 0..unbounded std::vector assertionStatusItem 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"authToken" class uddi2__authToken { public: /// Element reference "urn:uddi-org:api_v2":authInfo char* authInfo 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"bindingDetail" class uddi2__bindingDetail { public: /// Vector of uddi2__bindingTemplate* with length 0..unbounded std::vector bindingTemplate 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessDetail" class uddi2__businessDetail { public: /// Vector of uddi2__businessEntity* with length 0..unbounded std::vector businessEntity 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessDetailExt" class uddi2__businessDetailExt { public: /// Vector of uddi2__businessEntityExt* with length 0..unbounded std::vector businessEntityExt 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"businessList" class uddi2__businessList { public: /// Element reference "urn:uddi-org:api_v2":businessInfos uddi2__businessInfos* businessInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"publisherAssertions" class uddi2__publisherAssertions { public: /// Vector of uddi2__publisherAssertion* with length 0..unbounded std::vector publisherAssertion 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute authorizedName of type xs:string @char* authorizedName 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"registeredInfo" class uddi2__registeredInfo { public: /// Element reference "urn:uddi-org:api_v2":businessInfos uddi2__businessInfos* businessInfos 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":tModelInfos uddi2__tModelInfos* tModelInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"relatedBusinessesList" class uddi2__relatedBusinessesList { public: /// Element reference "urn:uddi-org:api_v2":businessKey uddi2__businessKey businessKey 1; ///< Required element /// Element reference "urn:uddi-org:api_v2":relatedBusinessInfos uddi2__relatedBusinessInfos* relatedBusinessInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceDetail" class uddi2__serviceDetail { public: /// Vector of uddi2__businessService* with length 0..unbounded std::vector businessService 0; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"serviceList" class uddi2__serviceList { public: /// Element reference "urn:uddi-org:api_v2":serviceInfos uddi2__serviceInfos* serviceInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelDetail" class uddi2__tModelDetail { public: /// Vector of uddi2__tModel* with length 0..unbounded std::vector tModel 1; /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"tModelList" class uddi2__tModelList { public: /// Element reference "urn:uddi-org:api_v2":tModelInfos uddi2__tModelInfos* tModelInfos 1; ///< Required element /// Attribute generic of type xs:string @char* generic 1; ///< Required attribute /// Attribute operator of type xs:string @char* operator_ 1; ///< Required attribute /// Attribute truncated of type "urn:uddi-org:api_v2":truncated @enum uddi2__truncated* truncated 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"accessPoint" class uddi2__accessPoint { public: char* __item ; /// Attribute URLType of type "urn:uddi-org:api_v2":URLType @enum uddi2__URLType URLType 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"addressLine" class uddi2__addressLine { public: char* __item ; /// Attribute keyName of type xs:string @char* keyName 0; ///< Optional attribute /// Attribute keyValue of type xs:string @char* keyValue 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"description" class uddi2__description { public: char* __item ; /// Attribute reference xml:lang @xml__lang xml__lang_ 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"discoveryURL" class uddi2__discoveryURL { public: char* __item ; /// Attribute useType of type xs:string @char* useType 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"email" class uddi2__email { public: char* __item ; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"errInfo" class uddi2__errInfo { public: char* __item ; /// Attribute errCode of type xs:string @char* errCode 1; ///< Required attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"name" class uddi2__name { public: char* __item ; /// Attribute reference xml:lang @xml__lang xml__lang_ 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /// Schema urn:uddi-org:api_v2:"phone" class uddi2__phone { public: char* __item ; /// Attribute useType of type xs:string @char* useType 0; ///< Optional attribute /// A handle to the soap struct context that manages this class instance struct soap *soap ; }; /******************************************************************************\ * * * Services * * * \******************************************************************************/ //gsoap inq2 service name: InquireSoap //gsoap inq2 service type: Inquire //gsoap inq2 service namespace: urn:uddi-org:inquiry_v2 /** @mainpage UDDI_Inquiry_API_V2 Definitions @section UDDI_Inquiry_API_V2_documentation Documentation Copyright (c) 2000 - 2002 by Accenture, Ariba, Inc., Commerce One, Inc. Fujitsu Limited, Hewlett-Packard Company, i2 Technologies, Inc., Intel Corporation, International Business Machines Corporation, Microsoft Corporation, Oracle Corporation, SAP AG, Sun Microsystems, Inc., and VeriSign, Inc. All Rights Reserved. WSDL Service Interface for UDDI Inquiry API V2.0 This WSDL document defines the inquiry API calls for interacting with the UDDI registry. The complete UDDI API specification is available at http://www.uddi.org/specification.html. @section UDDI_Inquiry_API_V2_bindings Bindings - @ref InquireSoap */ /** @page InquireSoap Binding "InquireSoap" @section InquireSoap_operations Operations of Binding "InquireSoap" - @ref __inq2__find_USCOREbinding - @ref __inq2__find_USCOREbusiness - @ref __inq2__find_USCORErelatedBusinesses - @ref __inq2__find_USCOREservice - @ref __inq2__find_USCOREtModel - @ref __inq2__get_USCOREbindingDetail - @ref __inq2__get_USCOREbusinessDetail - @ref __inq2__get_USCOREbusinessDetailExt - @ref __inq2__get_USCOREserviceDetail - @ref __inq2__get_USCOREtModelDetail @section InquireSoap_ports Endpoints of Binding "InquireSoap" */ /******************************************************************************\ * * * SOAP Fault Detail * * * \******************************************************************************/ /// The SOAP Fault Detail element contains one of the following types serialized // in the __type and fault fields of the SOAP_ENV__Detail struct (see docs) class _dispositionReport { public: uddi2__dispositionReport* uddi2__dispositionReport_; struct soap *soap ; }; /******************************************************************************\ * * * InquireSoap * * * \******************************************************************************/ /******************************************************************************\ * * * __inq2__find_USCOREbinding * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREbinding" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_binding" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREbinding(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREbinding* uddi2__find_USCOREbinding_, // response parameters: uddi2__bindingDetail* uddi2__bindingDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREbinding document //gsoap inq2 service method-encoding: find_USCOREbinding literal //gsoap inq2 service method-action: find_USCOREbinding find_binding //gsoap inq2 service method-fault: find_USCOREbinding _dispositionReport int __inq2__find_USCOREbinding( uddi2__find_USCOREbinding* uddi2__find_USCOREbinding_, uddi2__bindingDetail* uddi2__bindingDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCOREbusiness * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREbusiness" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_business" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREbusiness(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREbusiness* uddi2__find_USCOREbusiness_, // response parameters: uddi2__businessList* uddi2__businessList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREbusiness document //gsoap inq2 service method-encoding: find_USCOREbusiness literal //gsoap inq2 service method-action: find_USCOREbusiness find_business //gsoap inq2 service method-fault: find_USCOREbusiness _dispositionReport int __inq2__find_USCOREbusiness( uddi2__find_USCOREbusiness* uddi2__find_USCOREbusiness_, uddi2__businessList* uddi2__businessList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCORErelatedBusinesses * * * \******************************************************************************/ /// Operation "__inq2__find_USCORErelatedBusinesses" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_relatedBusinesses" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCORErelatedBusinesses(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCORErelatedBusinesses* uddi2__find_USCORErelatedBusinesses_, // response parameters: uddi2__relatedBusinessesList* uddi2__relatedBusinessesList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCORErelatedBusinesses document //gsoap inq2 service method-encoding: find_USCORErelatedBusinesses literal //gsoap inq2 service method-action: find_USCORErelatedBusinesses find_relatedBusinesses //gsoap inq2 service method-fault: find_USCORErelatedBusinesses _dispositionReport int __inq2__find_USCORErelatedBusinesses( uddi2__find_USCORErelatedBusinesses* uddi2__find_USCORErelatedBusinesses_, uddi2__relatedBusinessesList* uddi2__relatedBusinessesList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCOREservice * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREservice" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_service" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREservice(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREservice* uddi2__find_USCOREservice_, // response parameters: uddi2__serviceList* uddi2__serviceList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREservice document //gsoap inq2 service method-encoding: find_USCOREservice literal //gsoap inq2 service method-action: find_USCOREservice find_service //gsoap inq2 service method-fault: find_USCOREservice _dispositionReport int __inq2__find_USCOREservice( uddi2__find_USCOREservice* uddi2__find_USCOREservice_, uddi2__serviceList* uddi2__serviceList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__find_USCOREtModel * * * \******************************************************************************/ /// Operation "__inq2__find_USCOREtModel" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="find_tModel" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__find_USCOREtModel(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__find_USCOREtModel* uddi2__find_USCOREtModel_, // response parameters: uddi2__tModelList* uddi2__tModelList_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: find_USCOREtModel document //gsoap inq2 service method-encoding: find_USCOREtModel literal //gsoap inq2 service method-action: find_USCOREtModel find_tModel //gsoap inq2 service method-fault: find_USCOREtModel _dispositionReport int __inq2__find_USCOREtModel( uddi2__find_USCOREtModel* uddi2__find_USCOREtModel_, uddi2__tModelList* uddi2__tModelList_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREbindingDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREbindingDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_bindingDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREbindingDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREbindingDetail* uddi2__get_USCOREbindingDetail_, // response parameters: uddi2__bindingDetail* uddi2__bindingDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREbindingDetail document //gsoap inq2 service method-encoding: get_USCOREbindingDetail literal //gsoap inq2 service method-action: get_USCOREbindingDetail get_bindingDetail //gsoap inq2 service method-fault: get_USCOREbindingDetail _dispositionReport int __inq2__get_USCOREbindingDetail( uddi2__get_USCOREbindingDetail* uddi2__get_USCOREbindingDetail_, uddi2__bindingDetail* uddi2__bindingDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREbusinessDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREbusinessDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_businessDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREbusinessDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREbusinessDetail* uddi2__get_USCOREbusinessDetail_, // response parameters: uddi2__businessDetail* uddi2__businessDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREbusinessDetail document //gsoap inq2 service method-encoding: get_USCOREbusinessDetail literal //gsoap inq2 service method-action: get_USCOREbusinessDetail get_businessDetail //gsoap inq2 service method-fault: get_USCOREbusinessDetail _dispositionReport int __inq2__get_USCOREbusinessDetail( uddi2__get_USCOREbusinessDetail* uddi2__get_USCOREbusinessDetail_, uddi2__businessDetail* uddi2__businessDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREbusinessDetailExt * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREbusinessDetailExt" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_businessDetailExt" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREbusinessDetailExt(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREbusinessDetailExt* uddi2__get_USCOREbusinessDetailExt_, // response parameters: uddi2__businessDetailExt* uddi2__businessDetailExt_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREbusinessDetailExt document //gsoap inq2 service method-encoding: get_USCOREbusinessDetailExt literal //gsoap inq2 service method-action: get_USCOREbusinessDetailExt get_businessDetailExt //gsoap inq2 service method-fault: get_USCOREbusinessDetailExt _dispositionReport int __inq2__get_USCOREbusinessDetailExt( uddi2__get_USCOREbusinessDetailExt* uddi2__get_USCOREbusinessDetailExt_, uddi2__businessDetailExt* uddi2__businessDetailExt_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREserviceDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREserviceDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_serviceDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREserviceDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREserviceDetail* uddi2__get_USCOREserviceDetail_, // response parameters: uddi2__serviceDetail* uddi2__serviceDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREserviceDetail document //gsoap inq2 service method-encoding: get_USCOREserviceDetail literal //gsoap inq2 service method-action: get_USCOREserviceDetail get_serviceDetail //gsoap inq2 service method-fault: get_USCOREserviceDetail _dispositionReport int __inq2__get_USCOREserviceDetail( uddi2__get_USCOREserviceDetail* uddi2__get_USCOREserviceDetail_, uddi2__serviceDetail* uddi2__serviceDetail_ ///< response parameter ); /******************************************************************************\ * * * __inq2__get_USCOREtModelDetail * * * \******************************************************************************/ /// Operation "__inq2__get_USCOREtModelDetail" of service binding "InquireSoap" /** Operation details: - SOAP document/literal style - SOAP action="get_tModelDetail" - SOAP Fault: _dispositionReport C stub function (defined in soapClient.c[pp]): @code int soap_call___inq2__get_USCOREtModelDetail(struct soap *soap, NULL, // char *endpoint = NULL selects default endpoint for this operation NULL, // char *action = NULL selects default action for this operation // request parameters: uddi2__get_USCOREtModelDetail* uddi2__get_USCOREtModelDetail_, // response parameters: uddi2__tModelDetail* uddi2__tModelDetail_ ); @endcode C++ proxy class (defined in soapInquireSoapProxy.h): class InquireSoap; */ //gsoap inq2 service method-style: get_USCOREtModelDetail document //gsoap inq2 service method-encoding: get_USCOREtModelDetail literal //gsoap inq2 service method-action: get_USCOREtModelDetail get_tModelDetail //gsoap inq2 service method-fault: get_USCOREtModelDetail _dispositionReport int __inq2__get_USCOREtModelDetail( uddi2__get_USCOREtModelDetail* uddi2__get_USCOREtModelDetail_, uddi2__tModelDetail* uddi2__tModelDetail_ ///< response parameter ); /* End of inquire_v2.h */ gsoap-2.8.60/gsoap/typemap.dat0000644000175000017500000006017213227173557015564 0ustar ellertellert# typemap.dat # Use this file to define XML namespace prefixes and type bindings for # interface header files generated by the wsdl2h tool. # # This typemap.dat file is the default file used by wsdl2h to customize # its output. You can use wsdl2h option -t to specify an alternate file. ####### XML NAMESPACE BINDINGS # You can define XML namespace prefix bindings to override the default # choice of the ns1, ns2, ... prefixes generated by wsdl2h. It is highly # recommended to provide namespace prefixes for your project's XML # namespaces. In this way, changes to the WSDL (or newer releases of # wsdl2h) will have a minimal impact on coding and project maintenance. # # Bindings for namespace prefixes are of the form: # # prefix = "URI" # # For example, to bind prefix s3 to the AWS S3 namespace: # # s3 = "http://s3.amazonaws.com/doc/2006-03-01/" ####### XSD TYPE BINDINGS # Type bindings can be provided to bind XML schema types to C/C++ # types for your project. # # Type bindings are of the form: # # prefix__type = declaration | use | ptr-use # # where 'prefix__type' is the C/C++-translation of the schema type, # 'declaration' introduces the type in the header file, the optional # 'use' specifies how the type is used directly, and the optional # 'ptr-use' specifies how the type is used as a pointer type. # # For example, to use wide strings in C: # # xsd__string = | wchar_t* | wchar_t* # # this replaces the default char* mapping in C for xsd:string. # To use C++ std::wstring for xsd:string: # # xsd__string = | std::wstring # # After enabling one of these lines, all XSD strings will be changed in # the interface file generated by wsdl2h. Rerun wsdl2h if necessary. # Note that the 'declaration' part above is empta,y as expected. # # When a type binding requires only the usage to be changed and the # declaration part must be kept intact, then the declaration part should # be specified as an elipsis '...': # # prefix__type = ... | use | ptr-use # # This ensure that the wsdl2h-generated type definition is preserved, # while the use and ptr-use are changed. # # For example, this is useful to map schema polymorphic types to C types, # where we need to be able to both handle a base type and its extensions # as per schema extensibility. Say base type ns:base allows derived # extensions and we need to map this to C types as follows: # # ns__base = ... | int __type_base; void* # # where __type_base and void* are used to (de)serialize any data type, # including base and its derived types. ####### CLASS/STRUCT MEMBER ADDITIONS # Additional data and function members can be provided to extend a # wsdl2h-generated struct or class. # # Class and struct extensions are of the form: # # prefix__type = $ member-declaration # # For example, to add a constructor and destructor to class myns__record: # # myns__record = $ myns__record(); # myns__record = $ ~myns__record(); ####### TYPE EQUIVALENCES # Type equivalence mappings can be given to replace a type with another: # # prefix__type1 == prefix__type2 # # This replaces 'prefix__type1' by 'prefix__type2' in the wsdl2h output. # # For example: # # SOAP_ENC__boolean == xsd__boolean # # replaces 'SOAP_ENC__boolean' with the C/C++ type information that # corresponds to `xsd__boolean' which is 'bool' for C++. # # Target C/C++ type names (names without prefix) can also be replaced: # # float == double # # which replaces all 'float' with 'double' in the wsdl2h output. Beware # that replacing types may lead to xsi:type mismatches and SOAP # encoding id-ref mismatches when parsing inbound XML messages. However, # this is not a problem when using XML instead of SOAP and when mapping # schema root elements to their types, for example the WCF serialization # root element remappings defined further below. ####### BUILT-IN VARIABLES # The variable '$CONTAINER' defines the container to emit in the # generated declarations, which is std::vector by default. For example, # to change containers to std::list: # # $CONTAINER = std::list # # To remove containers, use wsdl2h option -s (removes std::string also, # you can re-introduce std::string with xsd__string = | std::string). # # The variable '$POINTER' defines the smart pointer to emit in the # generated declarations, replacing '*'. For example: # # $POINTER = std::shared_ptr # # Not all pointers in the generated output are replaced by smart # pointers by wsdl2h, such as pointers as union members and pointers # as struct/class members that point to arrays of values. # # The variable '$SIZE' defines the type of array sizes, which is int by # default. For example, to change array size types to size_t: # # $SIZE = size_t # # Permissible types are int and size_t. This variable does not affect # the size of SOAP-encoded arrays, xsd__hexBinary and xsd__base64Binary # types, which is always int. ####### USER-DEFINED CONTENT # Any other content to be included in the generated header file can be # provided by enclosing it within brackets [ and ]. These brackets MUST # appear at the start of a new line. # # For example, to add an #import directive to the wsdl2h-generated output: # # [ # #import "wsa5.h" # ] #------------------------------------------------------------------------------- #gSOAP XML Web services tools #Copyright (C) 2000-2015, Robert van Engelen, Genivia Inc. All Rights Reserved. #This software is released under one of the following two licenses: #GPL or Genivia's license for commercial use. #------------------------------------------------------------------------------- #A commercial use license is available from Genivia, Inc., contact@genivia.com #------------------------------------------------------------------------------- [ // Reminder: Modify typemap.dat to customize the header file generated by wsdl2h ] # Remember: type bindings are given on a single line (use \ to continue # with the next line). Here is an example binding for the XSD int type # that maps to an 'int': # xsd__int = | int # To use regular char* strings instead of std::string, use: # xsd__string = | char* | char* # For char* serialized with xsi:type when using soapcpp2 option -t, use: # xsd__string = typedef char *xsd__string; | xsd__string | xsd__string # The following mapping is internally applied by wsdl2h for C (not C++): # (assuming option -e is used to remove the xsd__boolean__ name prefix) # xsd__boolean = enum xsd__boolean { false_, true_ }; | enum xsd__boolean # Uncomment the line below to use __int128_t for xsd:integer instead of # mapping xsd:integer to string. # Then rerun wsdl2h and also compile and link custom/int128.c # xsd__integer = #import "custom/int128.h" | xsd__integer # # Or if the xsd:integer value range is bounded to int64_t, then: # xsd__integer = typedef LONG64 xsd__integer; # # Also, to enable XSD integer types that are restrictions of xsd:integer # to be mapped to int128 or LONG64, uncomment: # xsd__nonNegativeInteger = typedef xsd__integer xsd__nonNegativeInteger 0 : ; # xsd__nonPositiveInteger = typedef xsd__integer xsd__nonPositiveInteger : 0 ; # xsd__positiveInteger = typedef xsd__integer xsd__positiveInteger 1 : ; # xsd__negativeInteger = typedef xsd__integer xsd__negativeInteger : -1; # Uncomment the line below to use long double for xsd:decimal instead of # mapping xsd:decimal to string. # Then rerun wsdl2h and also compile and link custom/long_double.c. # xsd__decimal = #import "custom/long_double.h" | long double # # Or if your system supports __float128 then you can use: # xsd__decimal = #import "custom/float128.h" | xsd__decimal # # Or if the xsd:decimal value range is bounded to double, then: # xsd__decimal = typedef double xsd__decimal; # Uncomment the line below to use struct tm instead of time_t xsd:dateTime # Then rerun wsdl2h and also compile and link custom/struct_tm.c. # xsd__dateTime = #import "custom/struct_tm.h" | xsd__dateTime # Uncomment the line below to use timeval with usec precision xsd:dateTime # Then rerun wsdl2h and also compile and link custom/struct_timeval.c. # xsd__dateTime = #import "custom/struct_timeval.h" | xsd__dateTime # Uncomment the line below to use std::chrono::system_clock::time_point # for xsd:dateTime. # Then rerun wsdl2h and also compile and link custom/chrono_time_point.c. # xsd__dateTime = #import "custom/chrono_time_point.h" | xsd__dateTime # Uncomment the line below to use struct tm for xsd:date instead of # mapping xsd:date to string. # Then rerun wsdl2h and also compile and link custom/struct_tm_date.c. # xsd__date = #import "custom/struct_tm_date.h" | xsd__date # Uncomment the line below to use LONG64 int for xsd:duration instead of # mapping xsd:duration to string (in milliseconds precision). # Then rerun wsdl2h and also compile and link custom/duration.c. xsd__duration = #import "custom/duration.h" | xsd__duration # Uncomment the line below to use C++11 std::chrono::nanoseconds for # xsd:duration instead of mapping xsd:duration to string. # Then rerun wsdl2h and also compile and link custom/chrono_duration.cpp. # xsd__duration = #import "custom/chrono_duration.h" | xsd__duration # Uncomment the line below to use ULONG64 int for xsd:time instead of # mapping xsd:time to string (also comes with high usec precision) # Then rerun wsdl2h and also compile and link custom/time.c # xsd__time = #import "custom/long_time.h" | xsd__time # When compiling WITH_LEAN there is no hexBinary serializer. You can # remap the hexBinary type to a string as follows: # xsd__hexBinary = | char* # When wsdl2h option -d is used, xsd:any is mapped to xsd__anyType DOM # declared in dom.h and implemented in dom.c/dom.cpp. You can remap # xsd:any, for example to a pointer to a DOM node as follows: # xsd__any = | xsd__anyType* # When SOAP 1.2 Faults should carry multiple SOAP_ENV__Text elements with # xml:lang attributes, then remap SOAP_ENV__Reason as follows: # [ # struct SOAP_ENV__Reason # { # char *SOAP_ENV__Text; // at least one SOAP-ENV:Text for the gSOAP engine # $int size; # struct SOAP_ENV__Text *SOAP_ENV__Text_; // array of more SOAP-ENV:Text # }; # struct SOAP_ENV__Text # { # char *__item; # @char *xml__lang; # }; # ] # SOAP-ENV mapping. Note that SOAP Body content is mapped to an XML # string. Use xsd__anyType instead of _XML to use a DOM instead. SOAP_ENV__Envelope = struct SOAP_ENV__Envelope { struct SOAP_ENV__Header *SOAP_ENV__Header; _XML SOAP_ENV__Body; }; | struct SOAP_ENV__Envelope SOAP_ENV__Header = | struct SOAP_ENV__Header SOAP_ENV__Fault = | struct SOAP_ENV__Fault SOAP_ENV__Detail = | struct SOAP_ENV__Detail SOAP_ENV__Code = | struct SOAP_ENV__Code SOAP_ENV__Subcode = | struct SOAP_ENV__Subcode SOAP_ENV__Reason = | struct SOAP_ENV__Reason # SOAP-ENV mapping when using C++ namespaces with soapcpp2 option -q # THE FOLLOWING DEFINITIONS SHOULD ONLY BE USED WHEN COMPILATION ERRORS # OCCUR. Remove the previous SOAP_ENV__Envelope, SOAP_ENV__Header and # SOAP_ENV__Fault, then enable the following definitions: # SOAP_ENV__Envelope = struct SOAP_ENV__Envelope { struct SOAP_ENV__Header_ *SOAP_ENV__Header; _XML SOAP_ENV__Body; }; | struct SOAP_ENV__Envelope # SOAP_ENV__Header = struct SOAP_ENV__Header_ { /* place SOAP Header elements here, if any */ }; | struct SOAP_ENV__Header_ # SOAP_ENV__Fault = \ # struct SOAP_ENV__Fault_\ # {\ # char *faultcode;\ # char *faultstring;\ # char *faultactor;\ # struct SOAP_ENV__Detail_ *detail;\ # struct SOAP_ENV__Code_ *SOAP_ENV__Code;\ # struct SOAP_ENV__Reason_ *SOAP_ENV__Reason;\ # char *SOAP_ENV__Node;\ # char *SOAP_ENV__Role;\ # struct SOAP_ENV__Detail_ *SOAP_ENV__Detail;\ # };\ # struct SOAP_ENV__Detail_\ # {\ # char *__any;\ # int __type;\ # void *fault;\ # };\ # struct SOAP_ENV__Code_\ # {\ # char *SOAP_ENV__Value;\ # struct SOAP_ENV__Code_ *SOAP_ENV__Subcode_;\ # };\ # struct SOAP_ENV__Reason_\ # {\ # char *SOAP_ENV__Text;\ # };\ # | struct SOAP_ENV__Fault_ # Temporary URI tempuri = "http://tempuri.org/" # Empty URI empty = "" # .NET WCF DataContract Serialization Schema ser = arr = "http://schemas.microsoft.com/2003/10/Serialization/Arrays" # .NET WCF DataContract Serialization Schema root element remappings _ser__anyURI == xsd__anyURI _ser__boolean == xsd__boolean _ser__base64Binary == xsd__base64Binary _ser__byte == xsd__byte _ser__dateTime == xsd__dateTime _ser__decimal == xsd__decimal _ser__double == xsd__double _ser__float == xsd__float _ser__int == xsd__int _ser__long == xsd__long _ser__QName == xsd__QName _ser__short == xsd__short _ser__string == xsd__string _ser__unsignedByte == xsd__unsignedByte _ser__unsignedInt == xsd__unsignedInt _ser__unsignedLong == xsd__unsignedLong _ser__unsignedShort == xsd__unsignedShort # .NET WCF ser:anyType represents an object (see import/ser.h): _ser__anyType = | struct __ser__anyType | struct __ser__anyType # .NET WCF ser:char element and type represents a Unicode character _ser__char = | int ser__char = | int # .NET WCF ser:duration root element and type maps to xsd:duration _ser__duration == xsd__duration ser__duration == xsd__duration # .NET WCF ser:guid pattern = "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" _ser__guid = | char* ser__guid = | char* # .NET WCF samples mssamh = "http://Microsoft.Samples.Http" mssamhi = "http://Microsoft.Samples.Http/Imports" mssamt = "http://Microsoft.Samples.TransportSecurity" mssamti = "http://Microsoft.Samples.TransportSecurity/Imports" mssamm = "http://Microsoft.Samples.MessageSecurity" mssammi = "http://Microsoft.Samples.MessageSecurity/Imports" mssadh = "http://Microsoft.Samples.DualHttp" mssadhi = "http://Microsoft.Samples.DualHttp/Imports" # MTOM xop and xmime are imported from xop.h, xmime.h, and xmlmime.h: # Note: changed xmlmime to xmime to avoid other MTOM tools from # complaining that 'xml' is reserved. xop = xmime = xmime4 = xmime5 = # xop:Include is imported from xop.h and redefined as _xop__Include: xop__Include = #import "xop.h" | _xop__Include # xmime/xmlmime:contentType attribute is a string: _xmime__contentType = | char* | char* _xmime4__contentType = | char* | char* _xmime5__contentType = | char* | char* # exc-c14n c14n = # WS-Addressing (2003, 2004, and 2005 schemas) # See import/wsa.h, import/wsa3.h etc for definitions and code examples # The API is defined in plugin/wsaapi.c, plugin/wsaapi3.c, etc. wsa = wsa3 = wsa4 = wsa5 = # The types below should not use pointers, so we add a 3rd column: _wsa__Action = | | _wsa__Action _wsa__MessageID = | | _wsa__MessageID _wsa__To = | | _wsa__To _wsa3__Action = | | _wsa3__Action _wsa3__MessageID = | | _wsa3__MessageID _wsa3__To = | | _wsa3__To _wsa4__Action = | | _wsa4__Action _wsa4__MessageID = | | _wsa4__MessageID _wsa4__To = | | _wsa4__To _wsa5__Action = | | _wsa5__Action _wsa5__MessageID = | | _wsa5__MessageID _wsa5__To = | | _wsa5__To # WS-ReliableMessaging 1.1 and 1.0 (and obsolete WS-Reliability 2004) wsrm = wsrm5 = wsrm4 = # WS-Discovery 1.1 (2009/01) and 1.0 (2004/08 with WS-Addressing) # To upgrade WS-Discovery to WS-Addressing 2005/08, uncomment wsdd5: wsdd = #wsdd5 = wsdd10 = wsdd5__HelloType = | wsdd__HelloType wsdd5__ByeType = | wsdd__ByeType wsdd5__ProbeType = | wsdd__ProbeType wsdd5__ProbeMatchesType = | wsdd__ProbeMatchesType wsdd5__ProbeMatchType = | wsdd__ProbeMatchType wsdd5__ResolveType = | wsdd__ResolveType wsdd5__ResolveMatchesType = | wsdd__ResolveMatchesType wsdd5__ResolveMatchType = | wsdd__ResolveMatchType wsdd5__ScopesType = | wsdd__ScopesType wsdd5__SecurityType = | wsdd__SecurityType wsdd5__SigType = | wsdd__SigType wsdd5__AppSequenceType = | wsdd__AppSequenceType wsdd10__HelloType = | wsdd__HelloType wsdd10__ByeType = | wsdd__ByeType wsdd10__ProbeType = | wsdd__ProbeType wsdd10__ProbeMatchesType = | wsdd__ProbeMatchesType wsdd10__ProbeMatchType = | wsdd__ProbeMatchType wsdd10__ResolveType = | wsdd__ResolveType wsdd10__ResolveMatchesType = | wsdd__ResolveMatchesType wsdd10__ResolveMatchType = | wsdd__ResolveMatchType wsdd10__ScopesType = | wsdd__ScopesType wsdd10__SecurityType = | wsdd__SecurityType wsdd10__SigType = | wsdd__SigType wsdd10__AppSequenceType = | wsdd__AppSequenceType # WS-Policy wsp = # WS-SecureConversation 1.4 wsc = wsc2 = # WS-Trust 1.2 and 1.3 wst = wst = wst12 = # SAML bindings saml1 = saml2 = # WS-Security wsse 2004 v1.0 and 1.1 and old wsse 2002 schema wsse11 = wsse = wsse2 = _wsse2__Security == _wsse__Security wsse2__Security == wsse__Security # wsu 2004 wsu = _wsu__Id = | char* _wsu__Created = | time_t _wsu__Expires = | time_t wsu__AttributedDateTime = | time_t wsu__AttributedURI = | char* # Bindings for ds and xenc for WS-Security protocols: ds = xenc = # xlink xlink = "http://www.w3.org/1999/xlink" # wsrp routing protocol (deprecated) wsrp = # BPEL 2.0 bpel = "http://docs.oasis-open.org/wsbpel/2.0/process/executable" bpelabs = "http://docs.oasis-open.org/wsbpel/2.0/process/abstract" plnk = "http://docs.oasis-open.org/wsbpel/2.0/plnktype" sref = "http://docs.oasis-open.org/wsbpel/2.0/serviceref" vprop = "http://docs.oasis-open.org/wsbpel/2.0/varprop" # ONVIF recommended prefixes as per 8/20/12 # http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl # http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl # http://www.onvif.org/onvif/ver10/display.wsdl # http://www.onvif.org/onvif/ver10/deviceio.wsdl # http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl # http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl # http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl # http://www.onvif.org/onvif/ver10/receiver.wsdl # http://www.onvif.org/onvif/ver10/recording.wsdl # http://www.onvif.org/onvif/ver10/search.wsdl # http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl # http://www.onvif.org/onvif/ver10/replay.wsdl # http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl # http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl # http://www.onvif.org/onvif/ver10/schema/onvif.xsd tds = "http://www.onvif.org/ver10/device/wsdl" tev = "http://www.onvif.org/ver10/events/wsdl" tls = "http://www.onvif.org/ver10/display/wsdl" tmd = "http://www.onvif.org/ver10/deviceIO/wsdl" timg = "http://www.onvif.org/ver20/imaging/wsdl" trt = "http://www.onvif.org/ver10/media/wsdl" tptz = "http://www.onvif.org/ver20/ptz/wsdl" trv = "http://www.onvif.org/ver10/receiver/wsdl" trc = "http://www.onvif.org/ver10/recording/wsdl" tse = "http://www.onvif.org/ver10/search/wsdl" trp = "http://www.onvif.org/ver10/replay/wsdl" tan = "http://www.onvif.org/ver20/analytics/wsdl" tad = "http://www.onvif.org/ver10/analyticsdevice/wsdl" tdn = "http://www.onvif.org/ver10/network/wsdl" tt = "http://www.onvif.org/ver10/schema" # OASIS recommended prefixes wsnt = "http://docs.oasis-open.org/wsn/b-2" wsntw = "http://docs.oasis-open.org/wsn/bw-2" wsrfbf = "http://docs.oasis-open.org/wsrf/bf-2" wsrfr = "http://docs.oasis-open.org/wsrf/r-2" wsrfrw = "http://docs.oasis-open.org/wsrf/rw-2" wstop = "http://docs.oasis-open.org/wsn/t-1" # TR-069 recommended prefixes cwmp = "urn:dslforum-org:cwmp-1-2" lwn = "urn:broadband-forum-org:cwmp:lwnotif-1-0" dm = "urn:broadband-forum-org:cwmp:datamodel-1-5" dmr = "urn:broadband-forum-org:cwmp:datamodel-report-0-1" dt = "urn:broadband-forum-org:cwmp:devicetype-1-3" dtf = "urn:broadband-forum-org:cwmp:devicetype-features" xmpp = "urn:broadband-forum-org:cwmp:xmppConnReq-1-0" bdc = "urn:broadband-forum-org:ipdr:tr-232-1-0" ipdr = "http://www.ipdr.org/namespaces/ipdr" # XMPP and jabber protocols (a selection) stream = "http://etherx.jabber.org/streams" iqrpc = "jabber:iq:rpc" xdata = "jabber:x:data" iqlast = "jabber:iq:last" # XHTML prefix and recommended types xhtml = "http://www.w3.org/1999/xhtml" xhtml__Number = | unsigned int xhtml__Pixels = | unsigned int # HL7 FHIR prefix # When using FHIR you may want to use XHTML as a DOM instead of XML data # binding resulting in lots of code, by uncommenting the following line: # xhtml = # with this line uncommented, create an xhtml.h file with the following: = #import "dom.h" # typedef xsd__anyType _xhtml__div; fhir = "http://hl7.org/fhir" # Prefix bindings for WhiteMesa interoperability testing round 2: i = "http://soapinterop.org/" s = "http://soapinterop.org/xsd" # Prefix bindings for Amazon AWS S3 Web Services: aws = "urn:PI/DevCentral/SoapService" s3 = "http://s3.amazonaws.com/doc/2006-03-01/" _s3__CreateBucketResponse = $ s3__CreateBucketResult* CreateBucketResponse; _s3__CopyObjectResponse = $ s3__CopyObjectResult* CopyObjectResponse; # Prefix bindings for Exchange Web Services ewsmsg = "http://schemas.microsoft.com/exchange/services/2006/messages" ewstype = "http://schemas.microsoft.com/exchange/services/2006/types" # Prefix binding for Mappoint Web services: mpt = "http://s.mappoint.net/mappoint-30/" # Prefix binding for XLIFF 2.0 xliff = "urn:oasis:names:tc:xliff:document:2.0" xliff__priorityValue = typedef int xliff__priorityValue 1:10; gsoap-2.8.60/gsoap/doc/0000755000175000017500000000000013234023226014133 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wsa/0000755000175000017500000000000013234023226014725 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wsa/Doxyfile0000644000175000017500000002317713227173554016461 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WS-Addressing" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/wsaapi.h ../../plugin/wsaapi.c FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/wsdd/0000755000175000017500000000000013234023226015074 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wsdd/Doxyfile0000644000175000017500000002335013227173554016621 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WS-Discovery" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/wsddapi.h ../../plugin/wsddapi.c ../../plugin/wsaapi.h ../../plugin/wsaapi.c ../../import/wsdd.h ../../import/wsdx.h ../../import/wsa5.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/sessions/0000755000175000017500000000000013234023226016001 5ustar ellertellertgsoap-2.8.60/gsoap/doc/sessions/Doxyfile0000644000175000017500000002330213227173554017523 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "HTTP Server Session Management" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/sessions.h ../../plugin/sessions.c ../../plugin/threads.h ../../plugin/threads.c FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/uddi2/0000755000175000017500000000000013234023226015142 5ustar ellertellertgsoap-2.8.60/gsoap/doc/uddi2/Doxyfile0000644000175000017500000002314313227173554016667 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "UDDI v2" PROJECT_NUMBER = "2.8 stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../uddi2/uddi_v2.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/wsse/0000755000175000017500000000000013234023226015114 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wsse/Doxyfile0000644000175000017500000002357213227173554016647 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WS-Security" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/wsseapi.h ../../plugin/wsseapi.c ../../plugin/smdevp.h ../../plugin/smdevp.c ../../plugin/mecevp.h ../../plugin/mecevp.c ../../plugin/threads.h ../../plugin/threads.c ../../import/wsse.h ../../import/ds.h ../../import/xenc.h ../../import/wsu.h ../../import/c14n.h ../../import/wsc.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/wst/0000755000175000017500000000000013234023226014750 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wst/Doxyfile0000644000175000017500000002353513227173555016503 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WS-Trust" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/wstapi.h ../../plugin/wstapi.c ../../import/wst.h ../../import/wstx.h ../../import/wsp_appliesto.h ../../import/wsse.h ../../import/ds.h ../../import/xenc.h ../../import/wsu.h ../../import/c14n.h ../../import/wsc.h ../../import/saml1.h ../../import/saml2.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/apache/0000755000175000017500000000000013234023226015354 5ustar ellertellertgsoap-2.8.60/gsoap/doc/apache/Doxyfile0000644000175000017500000002325513227173553017104 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Apache Module" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../mod_gsoap/mod_gsoap-0.9/apache_20/README.md ../../mod_gsoap/mod_gsoap-0.9/apache_20 FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/fonts/0000755000175000017500000000000013227173553015277 5ustar ellertellertgsoap-2.8.60/gsoap/doc/fonts/inconsolata-webfont.ttf0000755000175000017500000012614013227173553022001 0ustar ellertellertFFTM]kZGDEF8 OS/2mNX`cmap@cvt 8fpgmS/egasp$glyf%8,headn6hheaAs$hmtxnilocarmaxp| nameA,Upost7n3Tprep{Ewebf*SX=Yv|33d  /kPfEd@ % & ~Sx    " & / : _ !"% Rx    " & / 9 _ !"%pL7  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}bعyqzzqv|fR]D,KLPXJvY#?+X=YKLPX}Y ԰.-, ڰ +-,KRXE#Y!-,i @PX!@Y-,+X!#!zXYKRXXY#!+XFvYXYYY-, \Z-,"PX \\Y-,$PX@\\Y-, 9/- , }+XY %I# &JPXea PX8!!Ya RX8!!YY- ,+X!!Y- , Ұ +- , /+\X G#Faj X db8!!Y!Y- , 9/ GFa# #JPX#RX@8!Y#PX@e8!YY-,+X=!! ֊KRX #I UX8!!Y!!YY-,# /+\X# XKS!YX&I## I#a8!!!!Y!!!!!Y-, ڰ+-, Ұ+-, /+\X G#Faj G#F#aj` X db8!!Y!!Y-, %Jd# PX<Y-,@@BBKcKc UX RX#b #Bb #BY @RX CcB CcB ce!Y!!Y-,Cc#Cc#-DdU./<2<2/<2<23!%!!D $hUDqdXG+ +/ִ + ++ / +$901$462"47>32#.qGdHHd2 17 %g0dGGdG4$ ",, 3-5EK,UL/3 +2 /ְ2  +2!+  99999017654&54632?654&54632, 6"#9D2- 5"#9D1g>3V89?@H>3V89?@H3+3/333*+222 +@ +/$3*+ $2 /ֱ++ + !+6?Z+ ?X+ . .  +++ +  +  + + + +?g+  ++++?g+  + ++ #99 .......@ ................@9901??77777?3 *)|+() * -|-,x+)^]a[Lc`woaYz519A0/-3:20 +@0/ +/7/$327 +@ +B/ֱ2 2/+6222.$:$2.=+2) C+299)=99019%)26A$97901?&'.546753&'4/&'#5&>54'&'zX fI(=V*sX  F|nGox&o"&[\/_pf#FzmHK? o{ No  Uu& [Mm|x^@b \xHe8: (3 +'+, ++2"' +2 ' +4/ֱ+  +))/+%5+ $9/) '"9992  $%$999014632"&332654.#"4632#"32654&":^_$Ê5*"!&>$&?\^_^_ B+)@BRBssqk1F GP3H H$⚙ SOJSYLLJ #0;j!+3'+9?>54&#"Jvvtxe? EVxq@dkP&P;/ Q]d{GUT:8Q+w@rvd7H][|sZObXs**a5nd(FGZTKU*/ +/ְ2 +  99017654&54632- 5"#9D1g>3V89?@HgT/ֱ+017#"&#"&>  Ch}j\ykS /ֱ +01654'7'*nls2(zU&73% 'U5J E7pp ӄj  ͔}jYT[3\/ R/32 +@ + +@ + / ְ2 2 +@  + +@ + +015!3!!#\j^T}^}Rr(/ +/ֱ + ++0167654.'.54632R9.E19U5K0%! */F^L@r//+015!@pb5+ ++ + /ִ + + +01%462"&pGdGGdG_0EE`FE~Q//+01z}l>f+K+#+,/ֱ )+ -+) $9# +$9014>32#".7.#"32>54'fHuM;tiO/1Pjp9MvI(j70aQ3L)o:#HG6"t\6q֓g0YqERTD|S[!Lngne%++/ֱ +901%3#NcOML.]+(+-+// ֱ  +@ +0+ +,99(9-+9!$90135>7>54&#"'>32!276Kx"B!)fKsh8m(M=.GD+:1 ZlA1DH%fH, S`oіAyjC+BC2GI& f.U,+  +, +// ֱ)  # 0+ )999&9#99901?32654&#"527>54&#"'>32#"&l 4K)n#F@H~`\O32.'.#">32#"&'&732654.#"68{vc  H&"CZC2*SD}b;՗X6` vY(CL)GE𙞞tn!>f|GS9haWROxD!\t )++ /ֱ+9015!#6ӁqvVw}EutOhB{ "1j+ +/2/ֱ #  /# + ,  3+,#  $9/  )$901467.54632#"&73264&'>54&#"{rXjȑo]n⧤he|^z4.BBMbvUSqAm6-]~\12oǢ`''2/X:, )HPpj!-r +++%  +./ֱ""+/+"99 (+$9)9 99+%999014632#"'7326767#"&732676&#"՘m/,67|tc P)L'.,O΋\E*r\b鑒tn$VZqAIḇUGpbb9+ +/ +/ְ 2 + 2 ++01%462"&462"&pGdGGdGGdGGdG_0EE`FE0EF`EERrbP/ +/ֱ  +/ 3 ++ $99990167654.'.54632462"&R9.E19U(GdGGdG5K0%! */F^LF0EF`EEGa5 5Gi4^j8\\/// +015!5!\II\~~~~Qa75 5Q:caj8cyS"+d*/& +/,/ֱ #+( ++-+%&)*$9(9 9&"$901>32#5467>54&#"462"&Bu4!: 9 ">A-{\N1HdGGdH}eqӗ.S8</3[BUURqDB&BF&[~`Q?0FF`FE@5G0+++ 90 +B0 +H/ֱ%%+6 6+@22I+6 +0$9-.99+-9999B%999014>32#5#"&5467>;4&#"327#".%3267>=#"@yc7Oi@^D.R"1;X Qߔg-xk.nL?aN`oU$rBӅs}V&CcU.hmC]0-U0<'8 ,+3+ + / + 9013#!!핍k|Yuc#0c++0$# +$1/ֱ$2+*  2+* 9#9$ 90 9013!2#'327>54&'&+5327>54&'&+cj2>Z%XagVkpe)bC8l9AGLEB}v;;AD>9p&X\#$pe+}vFG|!y`89bS'>!++ !+(/ֱ)+ $9 9014>32&54654'.#"3267#".S@c~@4 (J͔K,j}YKn65qK)NF q$|HM,x G+ + + /ֱ 2 +@ +2@  + +013!!!!!xy]&~ @++ + /ֱ 2 +@  +@  + +013!!!!#~o|J)p$++$ +*/ֱ+! 2! +@ +++$999!9!9 $9014>32&'.#"327#5!#".J%>UXdR(v7e ST0@ybwnlX[Fb<ot†i>(rcg CT^Yx։pN0| AD(`oO+3+ 3  + /ֱ 222+ 2 + 90133!3#!o  " 0b9 G + 2+2 /ֱ  +@ +2 +@ +2 +0153#5!#!y xxxwe H++2!/ֱ +@ + +@ +"+9901?327>45#5!##"&e_*`0a6 G+]Uvu'/Q6"J*xx(32#".3267654'.#"<<]}x=n=NLz|]R'@UW-F*92)L+SS?( _%zvz|(auxP!UXy|gcJmxD++ +/ֱ2+ + 99013!2+!27>54&'&+x3@X&X_^V%U>1a36@o< ,Ci+>/2D/ֱ--%+9+ E+%3>9999999 999> %3$9014>323267""#"'.'&545.732>54'.#"<<]}x=o.q6G/z;mlN1&@TY/%IVA,4*L,TT>'_%{xfx01  = 4hؘu{S#CjyӁibJos[+ 3+ +/ֱ 2+ + 99 9 9 9013!2##327>54&'&+sx3AZ&V_t'a36@oj3^1++ 4/ֱ# # +2+5+#99 '1$9+9 +$901?32654'&$'&54632&54'.#"#"&jU /bk&Bܩi@Z 'Vi}+1cA_ZxϏ<J\////ֱ  +@ +2 +01!!5!!9IA#z9-+ +2/ִ ++9013 9,m 3fG\//+01!!Gs'}xs^( / +/ִ ++ 9017&'.'i7!@ ->1'+3='9;)!jkd{!9i++%+0 +:/ֱ""+,22;+"9%0$9999017467>354.'&#"'632#5#"&73267>=#"#"#"#"dmj7[e6dHn-kYQ&" ?  YRSS'#$%@Zh]PK1eGg~vB`F(F*!>`zS0W++! +-1/ֱ2'+2+9' $9-!9990133>32#"&'32>54.#"z ,YGmADpJT.47)1>/ AO;));P?FtS MY;rvzx?OD|z13M*-G~R^P2I?s3++ /ֱ!+$901432.'.#"3267#"so8h *4R-G/UBc[Rz#% ;6cHL\S3[++$+// +@ +4/ֱ  +)22 5+ 99/$ 999014>323#&=#".73267654'.#"\0Nik8_"  ,ZFkA#6HD"LWZ.,TP1gmIWJ4  ?6!'QO\32!327#".7!654'&#"dGyV=piM h-@UO)^R;f`yE"JZ;:P~L1iOGJ?v\GU>t^"R!+/32/ #/!ְ2 2 ! +@  +! +@! +$+ 9901535467>32&'&'.#"!!#!0djC lA9B80V;+ Z"GJA`[u[*\OrLX5;q,t,yyyna'V\Y*LYTx-GX;.- n@'MM9$'CJLN$)0L%? @yyxwQ!H+3 +"/ֱ!2!+ #+ 99 90133>32#4.'&#" 7[Q#"2MB{#Q  RiWNM4.4Q;S/%I3+? _+2+/ /ֱ +@ + +@ + + + $901353#5!3462"wt>X>>XvxvX==X=c?#Y+/ #/ $/ֱ +@ ++! %+"#$9 99017326765!5!#"&462"c_ -F'=e.hW>X>>X %>84a zLj5ZaEX==X=Q-+ 3+/ֱ2+99013; #"(F5u,X{S   s_Q <+2/ /ֱ +@ + +@ + +0135!!5!!vdw%vN.j+"33++ 3)2//ֱ. 2.#+" "+0+#.9" 9 9) 9990133>32>32#46.'&#"#4'.#"N"f8>\ sDa14=0' 0B/\3@M;>JJV-;e)  4TARZ!$$W6PtG+ 3++/ֱ2 + + 990133>32#4.'&#"7[Q#"2MB|#RiWNM4.4Q;S/%H4SD++ /ֱ+ !+99 99014>32#".732654&#"SHxXQuFEuTXwGuoprjJ@xuqzCI~t̼z,S+++(/-/ֱ22"+ .+"99( 999013>32#"&'#32>54.#"z0ZGnBDqJU/ uFAQ>*,=S>GwLX:qw|x>OF/TTLV>C,GTaN1 J>:W)S+++%/*/ֱ+ 22 ++99% 999014>3253##"73267654'.#"WEsN*L6--YmKG1[M.su?#" O\`R32.'&#"˚,keE 6e:HIajgF B0/W1$8u6`5+ +&7/ֱ)) +08+)99  &-5$90!"999&  0$901?32654'.'.54632&4'.#"#"uT ?If^(6$0ȟh@V %XQt]$:3^\27SAK,; )+=!lLG0QI7E-I!M6gT3#+ +3#2$/!ֱ! +@ +%+6?+ #.  ##+?+   +  +  +  #9 9 .... # ........@9!990173?!!327#"'.547  2 Y;_r.F/x n,+z0NIUtid$`C7!M+++3"/!ֱ+ 2#+9990133267653#&5457#"&'.!`8Av!% .X]( B73+ .¯+ . ?P+ .     ......@  ..........@9013376'453# # Z: <_]jtQ-*^a &+3+3 / + 99013 33 #aIX[8l."2+3!/ #/ֱ$+ !9990173276?3673#".L5I:!  4'7%,Zy =#JE  Ohc1fg 5+ 2+ /+9 99015!5!!26gC-# eŁe9lDP`=/://3Q/ ֱIL22! -022R+:=E9-I99(9 $999$9015327654&547>:;#"&:;#*.'&54654'&#l(]-5e")/48>GG/!R .d!76T !- 9LJ @6-$r6*Xr/7w`\  t 3_cA_+ *GwL!p: s  X*5)E8/ֱ  +013mPV-/.//Q/Hֱ9<22  22R+.-%9 <99A9E9990153:;#"*+53:>7654&54>7&'&54654'.#>84/)"e5-\(*X*6r$-6@ JL9 -! T67!d. R!/Gt  \`w7/r)5*X  s :p!LwG* +_Ac_3 U4+/ /+ 999 99901>323267#".#"U/T/S<7? .N2^1W.O95@"]MQg -- ADNLq"/0"~qdXH+ +/ +/ִ + ++ +$901462"4673#"&'&qGdHHd:%g 17 dGGdG.-5E 4$ ",, c_%,+!// 3*/-/ֱ& &"+.+6&!"."!.ɰ6?u+ "! ""+?t+ ! ! +! +! + ! +?+ "#"+)"+*"+#" #9)9! 9 9 #).....@   #)*..........@* $99014?&5464&'&'3267+'7&7c SZ :__J5JAevp_Y.   t  E3<7cGL*Ã&P66+03++46 /( 6 +!3 27/ֱ$ $ +@$! +$+ / &2  +@ +8+  99$"(4$9(4-99 $99  99017>7654'#53&54632.'.#"3#632327#".#"P;&'GjӔqZ  I'Y˰KF8UB7jk6y?je nKuC@hq x9LuvQyU9jU-.MPt8!r/!/ "/ֱ+#+$9 $9 $9$9!$9  $9017&47'76327'#"'264&"s:;tItRhdSrIq=Nn54'.'k6\5[o^(5\KFCe0sbIPjm)dXTDACŘgrn!""(v~)4@}  #1#_CZ7?MyDo+|AwaTg,M]A^:5/z>?l,~D{\b5'B'g:( F!Q//3 2 /ֱ  + +01462"$462":;54'&#"'632#5#"&7327>=#"&"j=<(4? H'\}BGeV^|hH9WE" <#2><7oo7g  G"=ZTtEB2aAEX}^-@A:,$ C}4 557OR07PR0.URY0.URBP0/ +@ +/ֱ  +@ ++015!#E{@r//+015!@'=)4 /*+(/**+(* +@( +4/*+/*+5/ִ++)+*2)/+!+!++6+) 99/ '$$9!&99%9(%&99*$$94!901432 .732654& 32#327654'&+%dO]\128C5bjI!).!Ie12Ql'VS17WN,-"//+ ++015!ss!E/ //ֱ  ++ $9 99901462"&72654&"梢~Z~ZZ~Z q⢡tD``ED``\# _ / /32 +@ + +@ +/ ְ2 2 +@  +2 +@ +2+015!3!!#5!\j^K}^}e4%R/ /&/ֱ +@ +'+9 99 %$901>32!276!5>7>54&#"-^x_pu2u (jEi37TF8a oPZ_gXO]8 Z7m:Q*J+3J2%?0X.//*+/"1/ ֱ+ %2+ (9+999(9%99901732654.#"532654&#"'>32#"&_ R,Kj #M7([OVC4f$K4Nq@4AV|Tj &  N7"&g>+0I2-L=BZ8W d@cF- / +/ִ ++01k-W1*\%+3 2+3/+/ֱ * + ,+%9"9 "($9016533267653326?#"&'#"&'1([28d*8 7 ^6@`#OK~ p r@63!###.nd.qH@wza+!j p0b./ + + /ִ + + +01462"&pGdGGdG0EE`FEB] + #+ +/*+/ ִ + ++ 9999 9901732654'&+73#"B3Zq5)7<X "3=viUI aA<\d +/ֱ +901%3#Yyg37gG////ֱ+  +99 99015!4632#"&732654&"]9hU36Zl:|oKJomn7oo>.WY_[/Ƭx{}}4 7'7%'7P7"P7U0RU0 qk  /3+2  +@  + +@ +//ִ$++2+2 +@ + +@ ++ 999 99  9 $90173#7533##5'35 Fhxa}H?gg]x)s7h:nNL kk //*+2)/*+/0/ִ$+&++& +@& +1+ 99& $99 99) $/$9 9990173# >32!276!5>7654&#" Fhxa}$K`{MZ](*  6 U6UUC8-Mx)s7@HkLRF@J- gH,W.BE:);(qx.2=@+ +)+3/93>+723> +@3< +>3 +@>5 +,/*+/+0/0 +*+A/ ִ)+ #+)?+<27+:27? +@79 +?7 +@?3 +B+ &9?)>970599,>@99&9#1$901732654.#"532654&#"'>32#"&7533##5'35L, I@E6*Q<)r>Z}3)4DdCzca}H?gg]iU5>,R2"&;($<15hH-F O4On8s7h:nNLS"+u + /+/& +,/ֱ +  (+$ +$/( +-+$9 9  %&*+$9 999014>7>=33267#"&462"4!: 9 ">A-{\N1hBuHdGGdO.S8</3[BUURqDB&BF&[~`Qaeq`FE10EU ,+3+  +/+ 9013#!7!핍k|wQ90YuȏUU ,+3+  +/+ 9013#!%!핍k|9Q+Yu~U,+3+ +/+9013#!%3'!핍k|& ,C8YuNj"%L+3+# +// &/'+#%9"9999013#!63232>7#".#"!핍k|pw&J=* L/ֱ2+'?+2@ !"*,78$96/'-99 *99 9014>32&54654'.#"3267#"'732654'&+7.S@c~@4 (J͔K,j4c "3=vil3Zq5)7<AyxY7w_%tC   DPTHEVm OA<\LUI 0dxU G+ + +/ֱ 2 +@ +2@  ++013!!!!!7xyQ90]&ƏUxU G+ + +/ֱ 2 +@ +2@  ++013!!!!!%xy9R]&~xU O+ + +/ֱ 2 +@ +2@  ++  9013!!!!!%3'xy` ,C]&NxO p+ + +/3 2/ֱ 2 +@ +2 + + 2+ 99013!!!!!462"$462"xy[&g++" +%3#2'/ְ2 "2 +@% + +@ ++ (+ 990153!2#!3267>54&'.+3#>c^>nnUzD`1[b57FN5'iv.QԮC(k !=sK*6[vgj ) +3+3+!/&/*/ֱ + 2++ 9!)$9  999  99!$)999&9999901333#63232>7#".#"gr6pw&J. L=X5(M4A%7+O 7% ! . RKF0;09E<U*.I++%//ֱ + 0+ +-$9% 99901>32#".3267654'.#"7<<]}x=n=NLz|]R'@UW-F*92)L+SS?(YQ90 _%zvz|(auxP!UXy|gcJmƏU<U*.I++%//ֱ + 0+ +-$9% 99901>32#".3267654'.#"%<<]}x=n=NLz|]R'@UW-F*92)L+SS?(9R _%zvz|(auxP!UXy|gcJm~<U*1I++%2/ֱ + 3+ +.$9% 99901>32#".3267654'.#"%3'<<]}x=n=NLz|]R'@UW-F*92)L+SS?( ,C _%zvz|(auxP!UXy|gcJmN<j0Fy+7+A(/-/G/ֱ11<+ H+19<$(0$9 %9A7 999(+0999-%9901>32#".63232>7#".#"3267654'.#"<<]}x=n=NLz|]Cpw&J. L=X5(M4A%7+L'@UW-F*92)L+SS?( _%zvz|(a% ! . RKF0;09EuxP!UXy|gcJm<O*2:l++%2/93. 52;/ֱ,+0 04+8 8 + <+40%$9% 99901>32#".3267654'.#"462"$462"<<]}x=n=NLz|]R'@UW-F*92)L+SS?(327#"''7&&#"3267654/<<]}x=j^nqNL54&'&+x Lo6X_^V5kIa36@oqZ4t++"/#,/5/ֱ44+ +))/ ) +@)" +6+)4$9#99, 90134>7>32#"'732654&'&+5327>54&#"q.kWLsڞw^I;OcK
;:$:H\4c#b;54.'&#"'632#5#"&73267>=#"&7dmj7[e6dHn-kYQ&" ~4YRSxgS'"$%@Zh]PK1eGg~vB`F(F*!>` W>d{!59k++%+. +:/ֱ""+,22;+"9%068$9999017467>;54.'&#"'632#5#"&73267>=#"&dmj7[e6dHn-kYQ&" ~4YRSS'"$%@Zh]PK1eGg~vB`F(F*!>`7-Wd{{!5<r++%+. +=/ֱ""+,22>+"9%068:$999999017467>;54.'&#"'632#5#"&73267>=#"&3'dmj7[e6dHn-kYQ&" ~4YRS',`S'"$%@Zh]PK1eGg~vB`F(F*!>`' Fdh!=Q++A+J +4/*:/$R/ֱ>>+H2212S+>"99@ $*4=AL$9/099J9999*4"=99:1899017467>;54.'&#"'632#5#"&63232>7#".#"3267>=#"&dmj7[e6dHn-ipx&K<* L=X5!>1-3%6+0kYQ&" ~4YRSS'"$%@Zh]PK1eGg~1&@ . RKF -. 8FB`F(F*!>`d{Q!5=E++%+. +=/D39 @2F/ֱ""7+; ;+,22C ? ?/C G+;7%999?0999C 9.9999017467>;54.'&#"'632#5#"&73267>=#"&462"$462"dmj7[e6dHn-kYQ&" ~4YRS=V<`V<$+>C+;+;+,22H+7"9>9C%089<=$9; 9.9999EA6:;7$9017467>;54.'&#"'632#5#"&73267>=#"&462"'264&"dmj7[e6dHn-kYQ&" ~4YRSXnmm2F22F2S'"$%@Zh]PK1eGg~vB`F(F*!>`Yjjj'67N666IU.+43(:2+3 Q2E. +"3J2!V/ֱ7 7C+2#J2#K+ W+799C 4999#199K(.999 *9E(*1999 !9990174676?54'.#"'>32>32327#"&'#"&73267>&=%54'.#"_\L{- Q0+SH+|EJy!"uA;o$Vh=_7I,{CN*!|JoY?,J,l2023B'J3'T)"5D%3=/)Z6;D;;D;<)pEAN_Y.;DJT4:KBAL|B^2.&5 NT )S,+0M;ds5r3+3+%/**+1/+6/ֱ-+"7+-@ %'23$91*"(99$901432.'.#"3267#"'732654'&+7&so8h *4R-G/Ux "3=vil3Zq5)7<[Rz#% ;6cLA<\LUI d&*C++"  ++/ֱ 2,+ 999014>32!327#".7!6&#"7dGyV=piMh-@UO)^R;f`yEq)QP"JZ[XP~L1iOGJ?vs>tW>d&*C++"  ++/ֱ 2,+ 999014>32!327#".7!6&#"dGyV=piMh-@UO)^R;f`yEq)QP<|w>"JZ[XP~L1iOGJ?vs>t-Wd{&-C++"  +./ֱ 2/+ 999014>32!327#".7!6&#"3'dGyV=piMh-@UO)^R;f`yEq)QP<,_|w>"JZ[XP~L1iOGJ?vs>t FdQ%.6++*&  +&%/53! 127/ֱ &2 +# 0+4 8+#  %990*$94'(999 99&9014>32!327#".462"!6&#"462"dGyV=piMh-@UO)^R;f`yE=V<"JZ[XP~L1iOGJ?vhV<t@V<+ H+2+/ֱ +@ + +@ ++ 9901353#5!3wdvxvk-W+{ J+2+/ֱ +@ + +@ ++ 99901353#5!33'w,_vxv[ F+Q l+2+/3 2/ ְ2 + +@ ++ + 999901353#5!3462"$462"w4.#"Sc=s%_r^T#P7hu/YT36VX,5cR1%k|Ja:P3"5K=\2څ\d&QʓK!,Uth7u+ 3++./$4/8/ֱ2 + 9+799 $.4$9 )+99$.7994+2990133>32#4.'&#"63232>7#".#"7[Q#"2MB|#spx&K<* L=X5!>1-3%6+RiWNM4.4Q;S/%H4&@ . RKF -. 8FS#G++$/ֱ+ %+ "$9 99014>32#".732654&#"7SHxXQuFEuTXwGuoprgjJ@xuqzCI~t̼W>S#G++$/ֱ+ %+ "$9 99014>32#".732654&#"SHxXQuFEuTXwGuoprjJ@xuqzCI~t̼-WS{&G++'/ֱ+ (+ #$9 99014>32#".732654&#"3'SHxXQuFEuTXwGuopr#,_jJ@xuqzCI~t̼ FSh.:u+2+8&/+/;/ֱ//5+ <+/95!&.$9 #982 99&).999+#9014>32#".63232>7#".#"32654&#"SHxXQuFEuTXwGgpw&K<* L=X5(M4A%7+&uoprjJ@xuqzCI~R&@ . RKF0;09Ec̼SQ'/o++%/.3 *20/ֱ+ "+ - "+) )/- 1+)%$9% 99014>32#".462"32654&#"462"SHxXQuFEuTXwG327#"''7.7&#"326'SHxXQOLmQEuTdYSj[GPD;28r=@oLjJ":qzC.7B}dE $Ne#K+++3$/ֱ+ 2%+ "99990133267653#&?#"&'.7!`8Av!% .X](g B7#K+++3$/ֱ+ 2%+ "99990133267653#&?#"&'.!`8Av!% .X](" B732#"&'32>54.#"|0ZGnBDqJU/ uFAQ>*,=S>Gw$ LX:qw|x>OF/TTLV>C,GTaN1 J>:.Q"*2r+3!/ */13& -23/$ֱ( (,+0 0,+4+($ !$9,99.199 !9990173276?3673#"462"$462".L5I:!  4'7%,Zyf325!!!!!!5#"&'&3267.#"E/IdD&U*@gV).9W*5Q )9!/U( maJ:]&@NLAUE8<$RPu +CQ"+&312+ 3?M2D" +DR/ֱ,,E+E +@E8 +S+E,@  "&432>32!327#"'#".'&732654.54>54&#"!54.'.#" :,L9d!'m :)-U$WK*.SlSW1--1XY(/#:B A;:PXoTSN;w]MI,$NNCsD '2>9LC+*E&'4;::Od++3/3 2/ ֱ ++ + 99999013 3#462"$462":97#".#"pw&K<* L=X5(M4A%7+&@ . RKF0;09E@r5!@@r5!@@r5!@@5!@@5!@u(/ +/ֱ + ++0147#"&uF;,E19U>6I0& */F^Rr(/ +/ֱ + ++0167654.'.54632R;,E19U-6I0&! */F^LRr(/ +/ֱ + ++0167654.'.54632R9.E19U5K0%! */F^Li'N/%3 +2(/ֱ + ++ +" +)+990147#"&%47#"&G;,E19UF;,E19U>6I0& */F^L>6I0& */F^}F)N/)3 +$2*/ֱ + ++'' +! +++)990167654.'.54632%67654.'.54632};,E19Ub;,E19U-6I2$! */F^L>6I0&! */F^L}F)N/)3 +$2*/ֱ + ++'' +! +++)990167654.'.54632%67654.'.54632}9.E19Ub9.E19U5K2#! */F^L>5K0%! */F^L^ ./ + + /ִ + + +01462#"^eeeIHdddT+33 + 22+ +/ִ + + ++ ++017462"&%462"&%462"&GdGGdGbGdGGdGaGdGGdG_0EE`FE10EE`FE10EE`FE)}4/ִ ++015)7PR0.UR)}4/ִ ++901%'7)P7U0C6f0+++0 +#3%20 +327/ְ62!&2 8++-990173547#7367>32.'&#"!!!!327#".'CRrh1&emg4m3[}i*,!.?3L~]:w6lzaNw N6vwSB`3o[ v:?w}TFDTghBem$}+ 33*+2 +@ +22/ִ+ +@ + +@ +++ 2+++ 9 9015!##3?3#/$Ÿ]PHMMCV>= qRR3ה{pmH5+ ++ +/ִ + ++011!\_<||jn Dq3z:JU\Rpfc{pRG\Q@cSnxJoeWSg<x<sj@g3#S:g Gdzs\dOcNSzWuQ a.glUqcPJ\1pB   Sxxxx>g<<<<<<gggg:xqddddddsddddSSSSSSS.|. :5j5j#H[ uRR}}^H))C$,,,,~."Jr2JJv, * f | " T ( t \ :|6Z$Nd P<p|h v$8N N !J!" "D"#$#$D$f$$%R%p%&&f&&'h''(*(L(()<)*++R++,0,--r..D../b>>?(?@@@A(AABtBC2CDDjDEXEF&FGBHHbHHHHHHHHHHHHHHHHI IINIIJ JJKKnKnKKKL6LLV r 6 6  L LX $     0Created by Raph Levien using his own tools and FontForge. Copyright 2006 Raph Levien. Released under the SIL Open Font License, http://scripts.sil.org/OFL.InconsolataMediumFontForge 2.0 : Inconsolata : 7-2-2009Inconsolata MediumVersion 001.010 InconsolataWebfont 1.0Sat Jun 28 16:52:12 2014f  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a bcdefghjikmlnoqprsutvwxzy{}|~    glyph1glyph2uni00A0uni00ADuni00B2uni00B3uni00B5uni00B9uni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni2010uni2011 figuredashuni202Funi205FEurouni25FCKPXYF+X!YKRX!Y+\X E+D E++D E~++D E++D E\++D EJ++D E++D E+D E +Fv+D E +Fv+D E +Fv+D E :+Fv+D E9+Fv+D E*+Fv+D E+Fv+D E+Fv+D EL+Fv+D E>+Fv+D E$+Fv+D E-+Fv+DY+S*gsoap-2.8.60/gsoap/doc/fonts/inconsolata-webfont.eot0000755000175000017500000005307213227173553021776 0ustar ellertellert:V\U  LP/kˡInconsolata Medium Version 001.010 $Inconsolata MediumBSGPr4248+B`WhKqJx"U:r,/4\ liʚELFMC>^+H,'mSfZ}o6euX6H7I5ۦF}f.Lx/R F`H0sKL e#fɩd4P?a?H g,WWA&/),sAFn%ؿtЃ71/GsX<=9o/_ gDË|h(E'T8XmfQ8'UJBhTmE20h.Ŧ3C3΃Z~nKP"b0E7<ñj0 b9Kw I7(JeX<ԗ/<;)QKIH@>AElLY<}!$b1$ v)Ak4 !8? di2ݯq@К.H'E1'?b JQ 0=xH r%\z' 7ƀnrHl/ ˆ_p?b17 Wv߮Nmqa'&+X7_e%pU SfMHSbUռ"L0, &h[W8R($ekUޅ@?-)PPvE6~Ҍdru$2|T6МMܚDI b@ FܮEf8 X}͡33`cR{uWRA=ףUI?w[D6ڻ+e$$w-k`kNHaT7iuKDf!$#U;z hS u2[xqIPs)\+dfkExWe39XazrYTfۧ!6KGD/[q5K.F!6[X[}Ut\#g-Ws cuTQ.VNz!ڗ-{Nx.Ǡ8(2 ,M n+@1He{Jʩ:!AVSjޞa}Bt h5r`\`_OcGn^R5@G/UԦ>Y@.l԰g©9ԡZHWfPridJcH+0SG!^K(ÇG J[z /V;9J9Yн.<>5J0/S%(x $0# _)vǛ) rQ+@hsKy;dYkK¼Mhy;}mֈI;Uzc \u^U|=4k!dHfd"Rd$+V1(ς<>-s%[pnfv`ef{J `9 tV >&TFASeyԥ(ơGH É&srJ_!"҆6 \,Tk% H3Թ:r"6Ę?ڴ&([-38$(PWc CH` h'%Bܵfp$E#٫D*w@OYML6qLw3;9U0_ aRZ` P3?n0aͺn>ZE;,h'[ 55f0|3jE\L5]ISH#Y>ySh{-v8? ^"#qD(rR2RH&ܯ罻7l{DGD) VnHIVR+2Y6a3ɶӼynZ[C9Md-!D,?Aۭ^"G6Vк/-^9š"-E =D/m<8xfeI:'5i%9PeiҫV#XZ6-` x%Hsbbqݹ@^h"((-pԞ:>:/q")m^D{]Ix@1 ~,u\\Vz"\ +܋XHK7=9#NfrR1F~;BJv5`SPFEji3`\w|:aF1UV„PU#%G:Hk|s }WSswL* fݻJ (Z2j+ J˿۬M}32(E,83Jk(&23.X2z3A:&G ?R`]?vXW[J=z! )| ]Uٽ }:({d]кg mc'ܙ" I;>R0} (9=V0${: y"D~ɏR*N9 B;([͠E1Έk0A `K$C1Yhq@F"lTp2| ;F~*n/=i.I<[tց::j`3Jo| u'-1Hs#>?<rQW$A(l̇}`%${?7ހ}kɸI;9~0CW t_3ϛw" MU`}) D0j#凓ȼYNv*mːd, IY~'ha]ȘJ++ޫK$m%X4q N lژh]Ez`jtEgGfYNՄ# CcE[1~x]D"_l<ẩϙE > )Fm}($J%om Ojh. OT3t:>]$ 1ޖ_>{.l,B=רB@CW f&xQ >8hJ2iP'nWbCIс*"4(LD##9%&(;S%&X-6ZHaަ|PC4 4S3T!!h[duou9uU\Ѵ] rN0*M I 9ZEэ%;m."O!B`NdVތPd5.4E'SH%tLmG's H* cWe:-jbX)I@ o03@TZu!.4`]ָڶ*/vN2yxĕfȩmb&b?:Aıf,eX5AV5ː㆜F+`BmV 梠{i+愕nFE#rjG8 ˞wNG[uR|}@~Wq`oJO!Gb@xKH Kۂe&W($I%jNnM1/>%,Z:35 3ؒq\.Pgxֽ~yu@ 01>]YhA3 < Az^d.<^R<`!(EJ\\3 AKEi"Ow't ULl h%[u?D ogi3}\Awhf + Мy&2@yx07K.i](7w*_Eq:ᬌ? a[Kh{eYmsݜ#=Ƙe0HFdx5UèquTvH.Kdu愱w 6xC* $'拓nz$KгyYnɬ(zB#YG/j[[Bݕ c퇾 pq1Yr40ܨgh]cLQBȅt"΀ڡZT*%]'~H 6E9Aa7^!%h~)Oǖ+G"d !]oX)n1D+Pxg#5&:'Jo"-| y(r>o)DH ,mMPf?O 9m. CJ_wӴDK -鎲rR('uY߼)V.{>tHJh~YHFJr8b%3"d-|E"CT45 5Աݼ|B3W ʥl''"Emֵch˲ nkG^,JPZ"%;s[=E odBy+\RmXFs@Z@QD)s^!#%1pd f 0,rHNȴTz*h~57RIӡoq>+] tf`~)!ݺi4u'!iJSQ53e1 02Vݴw0Yz9##H y NHzW23Fx`)ᙔ *ByKx,e$r>ȅaI\$n?IBf`rx۵ě]0B .S50ݡJEX=2B3Kԯ17UVOaEw5-Tu ygڟԓJ9>2=(UKa"^c䔻]pJREUuMp 9C>]F<K$f9Ċgx55KĸUM/pU2G)2 U\6Ox׈G¿laɮo6 o_ ߣPtpR]<,ǑjxE~ JfX)W,y#Dskו4`m6mshfLvɊ@XZd/>k֧b1K9ɎXprF &q_N-5pZ9@8@CP4|~ql@C!<}jө7,e/tFkφtLf7/0@W6CxJ59ΠZK>w.ڤpHr>}Fw3;=Y4Ț*n;+|Y} zǢNc*͈9]a"61ug)"0*ûh$!vhsX,.Zx&'FI#wJ*f hP)Ws(vawvYIeU}7/z: p02.a`ͬ t,o85[".[8{AeUkVh\IA\?X,L8*e T]k܎Qyf#(4s ~,=`Du9ŎNUo=U٣eWFf1uhC& 0cgR`dgߤ(HPmQGj)i+I)tF1"&q; jQ4(9쌶&DmaC|hD2B?bֆh_vA(1ոa\ŬIAz~Jwy*ͅ]:VCf w@TwRq{HBoRiTn'fcph\h!grْ T iEYZ8lhTqݕd ?tU#SGBJ0 '"MXcsmZ2:YTB2 hm9>Xe4>Ad(ǿT?lJr%UܽǓ$1-厰,K=a 铩ct8WL&Ȭs(+@oZ*,YmtaLwY,;=˷^n1[7BC#A+2RSHswX`JH00NSGX)4yyeYkA}+k$î\)<-3n\ PnG&䠠ַفSAdV?&wyXB9@(7C 0Sf: eaS=?Yk/?6I҈ HtEj!˼Bg Ӧ@bG>`Jmgc5Ә! ]% zf_8Q$=fdI]0J,,L0m{P2pg~+NβF(k?T~Cy@ A4-eSâ0Oط\:!Eo\!|Dr`KABe>NQTJ#,iJf˽;&0 0X}[l7n<Ƕ$5WNhr@@j݆/FTd"+xZ0`3͆$p6~Kߙ!, `;\VDYs I2&9Q ( @ZItθ3fBMQ^>  .#VFI٥_O\o TE0 a@!jöAw-$1#h0MW|ͦ2tg=vfES<<^v Tt.'FNРxeg@JY\b 0IHQ䡮0U0W/Dr?24zW WUN /ѯspF_"I vs |$͚a Cӕ8^ΗӠ5AQ!p;y~:Uӌ5.˨Po a6K$F#b44.$ZZjQ-Λ2J?љ,OwGI{gQ8]Љtڪ,.}VuP*zW W`9ADGУb6``B^DCUSm1A~ɉ<F|CSnˋDVKHrq)V)GPye0Y &¥]Jt% 3~ZQOo`~>VPtm j%ր B}@ 7ZlXC-QiǪR>Uqzdڣ gBfah$ RjcҮ nƳ@hڑw];șUoq0I,r˹tr"Vc\egdrt\FEa;<2_Ō]r`Hi(("DzЗ<=b_6a!쨷lb,m6GMϲrt TN83-N9c|D>)^d1+HM31cݤH0L g?d^Q'7cgΌv'oSRmMbE Q:_!$:>,v3c%:NmGQaQ~4Fnh=l+ ,ujRp>\117Q@aQJR` WZM5w&:}jAe1Z/pAL5Ck@JQ0l*u(h@tP~ɶ)FITHH@W\ / HL/ Vk7P;" y{JhUul>$u[JGrļ'9\dn>8F?yjKmnno~+\G k+E8rHh]W\!o:p7x&R _֢b$HwËd"Xiw̗GȨhƝ_ /Lc`b,-eVe a%LFr1T\An21Yu[!_g*hqJSŨhbp^w%%4 bR 8j. b* ~#P"=WBl#~H2&~X-@V/ʸӅ΁.&Zdon w+ G*813R+r˽/yA0: lM#;+?nSئހqAڐQHL)X Cf?*z{CXԙa^9#ͭaaQ\O4a$pb\:*ъV=TQ-q+ϸoҴY-,.:Q/)?d;-w':tRGc=YmV\*űCE,^! [zLWf %MH")łAQ~V'xTVXۗ%0$+% ,bg664Qk?yر?cp)A욌-'fFf6/̪ -=`eO&l:YFd&t_ :R`0~mI}Htv Pp}*ԇb-kDb|b:Rn^$YпJ\e*r!xj5`<8p-r1/bhsBYУ \_@2RƔ"<(EAP2k0=x hby;nݣgǁ%(iZr"Vʜ=}~gDizPy8E>ѭx}~BzBzN2tkb?Ɗ.qY}`0L3L !~!4aJ&JX:`V8@!ҁ;(F̩V ]-@[m*w@ɬť[4PUP<@0  G[j9`ǻkn-~G^bJHQ„`:SeM=L=PIga53H !`-j$ ہ-HbT\(2'/6aURT!UȖζ7֕!dQH+-PaC"qh R` ?`1M d|P_:3 "(@PƐϣ"(䪽jE_e Y]k=cb=V]ck-G0l?UlզBƞei"dTI"|=j-uި2ӽAJ9`!3p8̂LhDq " KKCTݴw''t o.G-9b xI幚{G t`.q 2ty=PI^HӪXyǑ8)$ :t+@-6CdA|Zɽ&L,1<עqS SkSۄC[n ^_̊?߮P,K5r*xHE,޶OFQOT|Z@1G3ޞ"dĤ B5'|f:,hx[B!^ҿ,p(vwMNzHڐ|A$vWRH'nW΁j^6;c5 .`[P x`sr6T*ڼUϛLJ!qu blMI?L.(OJcSVF*$pWf jV<#l$G1 =ڀO( b~l9!EQۓ+SlS;*Ct6 ;XSyQ&D\1-.4)p|pthqsyev FՍ|LLA;`EW+FoYAFFcܶfi+h<,ˍLtgan3|@X˜ֆ̡(B-l[YԦaho[\ٗHzU,Y/_66Lj+No@X0*li=mQGQ(i9\rd xEiX t& ̽]c'{\ ==6-7'$9C#EҎ4AF̆+SKrۅW-H ѣwz?,Z(XT+!\]fR޾f qj(DKT3)LW/a9 ۴FlCtvDo5,1ڸl71g.v $l +9,\ 102wE4tXGYkehHLR.,ÐM0b>絽8Ͳ%l$ʘmZleч+p7cMw:(z' ARϹmtdLxX'!u=+Ab[I Ny@oHǿ%*n4` F M(H𹃎J0Hy|rku][GGFWb=ֽV :-C4~c$_FU sKS wjn`v2ȤE0tG@m"R:hPBX!ռjaE1gZe[ɰtw >c~-*M( `SLFq˲r^n1s ȲR  :=W{Iurn_İA{5y9X:0g$T{E]KzV5=jkbhi?VqLJ$oHY qBaxӀB >%Nƍ%IB`ƹPtG.nU#E>&LW qlq_@Z?;l'q:3 \%o҉t# 71 rI/ȁf_.@Pk [ 嬱!eǰy kP(b(+h=یzkmP:v4Fg %1ΠIHVMDWҼ`-1Kԋ~é(1 YV"~DoaHۄ\"`v-t2gZXjV;2r. d3߄a 6<fԎ= wOW@Q Prf>pYz߂z\C d?isސnuu2Fp`\S`i~X`Yu4 s {/Ps/Ŵ,UI Jg,Z.7YslxEsSst+.Eػ5'Ƿu^uI~ }1H[F (Â-?g줥+koAKb-m e]n`ߑ R4*K3=l c䔉*~fQk&Y,i>ʃ['3hs!oBY~V2f zVA1ͅ5NNj ~eƨ-#DX}ԥ)9ꖺI/VUP9{eҦ腒#֚ԗ: s(*uBC!d/ Cg3K5O%h<` -p@!:I62`Y 93y[,&?mU+뮪05,;خq/ 2?Ez؂CG DB{&Mv`P$c"7ÚHo|H 61-^5丄&;䞱t@SN"H4lo!87ppl+> ҮRަd@ D%?5Y0^#ҝ6O/A|51LqJE;eQG a`36JC٤R~}U72b:߇zFY$&bF R'+wji xdz2,)`@) Spe> [3 =s}MM\1Jm0?Ff_  PP\%&b܈Xk5TSᲯ@-]CdvMH1&`Ij=`wn]g֪=v̯A$hdbpP LpP绵`ԍE2OB] K#i_C(X~A֑6Sx[qzF%7PlӃFR$}# \tIfJ^dt?Mê:ˣoG#SrD5@Ûz-4URQۊ^ >1R {cLॳn@lzF;19i  5K(ոFP]u5/e.r:ٚ@fQ iڵe<{txYtDU1`͒#YPMWN%t]#31EAs5/H3qvex06B_#\Z> xz 繻mF>9sH d'-wEੲSyo.!bPSp%H+Hn D^&})pN&f+YǛ[SCRtXY97Кd ߍ?,行QP L?k$N +=D*i an[XQ\S6Hl L˛x@ Fې)p]&BiYlw煐R j:y{7v1#[&݆[lj3`LE+ː$ #@NDk?_`Qp,_6A@wѵh9QM@w禺3> 6zSyɵ]|E32Ghh *5PA`x->$. ΢^1 Q!%mlS2n{ @},y5H" wGݫ%N'Sr+`T? 6 *1Y *B+r=|r0{d^9V:L N5r~5,AlmyWɘF] `pm^¯$'IxS'{I@WVx8S+ce2Qc 4O zj?U WNsaǵ.OsCkI 5L<xFZ yf2\GE63%(Fq#gjݵ @q7 NZ:b-`8F'R4żGt+ DHwrNUAo kzi ْ4P5!M#4nR]2y@x1o0ꗪnFM-űLzfķ6"2[#x;G RKIԍ 'Eq_L h:ގ?c0-kZ"e13bo>XW ++׈pX.3Jٱ݈mb#;Ex%Lx*5;Ɉ>7NȞ+KZGb)۹'wv0`~j@ rA{Őm/Dp֙||N[ HGŋ$P,H 4ǶE;4]j_u>/B}kTc9p ̀4Ph5MQXAGj\>D67_dg`9 8nT̅EmJ m,:<"$| E!TTƠ&0RCQg; -tb2(qyDh^C)uC MQi7JFC)-"ڨ0lK >G+Fr>>ZbB SC7̣@L dd)8o&@SO gZiYI ĬNS4=,4Ѿ65ݲx)20.WQMaͳ|_Tr&na&-Kiܒnh8'p <3M;%{A}!đmp Б|H6$GI DNjAڊ3"gYדC3TxI )ŝ5%3@\WDq!_ :(QK$3pӝ :qn&f#%;`܏aXJ5\ago0A\AElb]؅Z- ަlߟJ%"`'V$3s!rbqkb9s8`<3zvc3g Ϥ0G QzLסX5ՑëcPcFv2B4%VKۦNyRf<}P)"u̿Xoą VL2x4o"wM frM&#= JPiEj,fAR:<4Ā ^HHnZ9w[hƈcؙ{ 8 ^$ԃ.۵|@:U9 kj h oJNk[49w~ ͏Gh9}ϺS[Y#HDT[XS \9 ^U[ 4g&xh(TG0jcw hP=Du(8QB (烆lp غ|#!*:Z/Iӈ31ɩd^~Gy$TLx.%"7Át\W?XFy/Ar*q<YdQ 2@6l_־bάS?W-jv"rC<渆EԐ4~dD0?+CSL04!Ҟ%?%He(sORߓ8(rSLpPT4;')ˈ}gX4luJWO@y.@SA`r8ł4kڀUpzK~2pdKT.bDX$L"B7ngsoap-2.8.60/gsoap/doc/fonts/inconsolata-webfont.woff0000755000175000017500000006214013227173553022144 0ustar ellertellertwOFFd``FFTM]kZGDEF OS/2Y`mNcmapx@cvt 88 fpgmeS/gasp|glyfW"%8head\16nhhea\ $Ashmtx\niloca^Ηrmaxp`H name`hQA,Uposta7n3prepcE{webfdX*S=Yv|xc`d``b `b`§@1!xc`f~՘u!{y-Ytի֬]n[l۱}RR3V,,~R1!캜@{IMz7v2!3k4;;sΙ3KʑwkS$6NH덌Zlfu є;j=o)M;Z ;4: !qKͺb00.?R4j˰Ѽ34@Skm!qK˦6$tUS]`*́Vy &ҷ$, b 9@HƼIJ;ㆵƑ6O'ӿZxԽ |[Օ?[oOWY-ٖ-ْmYޝKg ξ;! Y!l-@ߓai3Е63mtJ)} $a$s|r0J5 iH?DevCcᒑ9-Z;Ԑ$x?&z"zRLjѳ2dAܹ9LT3Lh2""RnD"=>K?[ VGBU#ZY+t%ªӮqU&:]N^saB6w\5+ zv󖊕+;Tz|eeXYomq̻$ h73L7##RAl@e4|Hʎ**샒"HHrF<8*k͉d%KBʳ -^S]I:fL>n.[})M4tt4o378 LR2!IHҞϔ$+E$Ct&GH?gqb}OJ3"s.A)", \j,.pz$Ijr^l>#}b3,’!2LP79j[Ufki9pxo;~]f>=|znΘww|G>ss̯2ք`^NWv~XXXdܼ|wAv-!dM7~\̄mjboR=w {]:_C9]ƑBqtR_V\3jOe<2cw_~{^f*C_>>UݑKw.u@h& \ƅJZǫ}h.񼩲c: y;gnԮϮs&h?S3L crP=H- -`PȀ4 JXik*E9 M(PzQv##^eKJ/0>˔uRj8R]ꠉ}82m&D@Pw>׷|n}os +{hhu̪NB;n>塇v|1йH-I`矛[KKMfvʳŇ;bB&PS'mzdewdqB-K=ʭf1vAYm2 z0ߧVv"CHZiu%[V$k7uL-ܵv?9J=V& f:Z]NF0S? ~DJS?\QIT- mc{}C6{jooydV$1$a %L%aD괡$ap IwQb6(MjuV oiRhCg^/.$Y{qovr;CaFiv #XbFG鵆/Vq0[^*a Vf6Y,m~S=5hH/}l }v iz@YLq+Q&k˙3 ZuM$-X&YlꠠkIE[6ˡ_ a.fF"Qsp9=7WX2x-*`B$&iA5!UeT PJҪtE fsu@g\bh& qAXeX-ONvHM'wL_8o- j՚ ɍaU{Bɺ :y?[WZ9薻;4n̥xuW0.|cb@kOP[{d=HZjpj.I r (H##`.RRR !XyD7q9櫎JMh+4Wդ 'x8sNmxl߹u]&/NkήtH8sy_cOa~6b~,@[.eZ(`ZH=&3TQH %mTu: K.)(Y7:􂲢dDq&114-O';ɲ\tWA.=:1>f'dxnG9fx# i I=llMRFer>?\~X]**uZKqXCu,W;}vݸe\{n-U oxs]{ׁԽw;Â)d̖4{V1YS*09f:EcxNjIU֨b|l΂wj Jj|RSZSs7 U+pXMOo{b YP{:GΜwyOXSv;P<(糏4ƈ(m pb-XV[qw~|޶SS?M}?u!; N >>O9Eu'8V_8 ;"q`#"Z/1QszTGr92X=%#/L>x*DA|ݳen}a wkV}Żƹ\虹E"[teϾ'=l42L+99mS/@~Axr5#l$G1(@Y SF@| J,OcpO[ɇxpWy _~)+N~o=Yhb z(A.4a~fˊZꨎv}[=5鞲ކ׷m\U<K6^ct0aZ0ζn=:aLL.S^%3^\\<% fQ0AX|z% `=/΢ RK%Z`!.;ڲsg6w 5<,˧rK.^x+vmp$Ps'n=f#  tZӰV IlTW~8.9[ ڟZt(دGa}0iQƽvLdNS7zLN:`~̀N_|j_j{.{>$ ]Rm".(xnTԘ>yn1o0YSnWLW _7!(gz3X QRU 4T4W"u5]9x7Fhٵ'~cAC؍۾~֦bӖg-Ż6M!{R KO irvLU*\!guHi=,IVF6ߢ6QYltT cvYr^1\r㣄5=̚K!aHYFJ]>]`n 5=5aP"Q9樘tȘ*die0mM˚:Ox]D񦾾K G$8ކZa@ H(. r'iq C6`Mf7EUU<8^UbYɪv|wB-yhvU Fk|]b)ε3v\\{ JEK&REti,!IJ$,K$z%>8Y֤fꔛ\ +QԚg:\³sqGaL}zjn0Q6DFMwZ kXd>HsaDGPJO8j]zuߨ SgueTQO F1hjo%Kjط;Τ>|ve%Ƿ73w?ٳzE~z%O숌0ZՃ+"kqPÃ2x,kPb9(`G ]xvQOS%eUx׿XforNnoS^IWV6MG59)($_F/ZY O74T8]%pH0;bo gokl|#]~ݔʻ-E&n-*l֬ {}fIm}.O,Ց !IxNUkNۙ_m9]ouyAG[a-ϧrAzwc,%B*vjRrעIظl2S3u WW \aIuQ *TJKFLxʘiᶦ=p~Z_bL#CҶA)X %- Yhで< ԍiƁRc"nrՏFMДɇ}ޣ6O7nzG$_&xCok|ɝmWiXv-Kltdjd!L‹_i6 @dA_`XtJy%0>u)(Qq~=8ݲoڷL34-7i-HU/ZAz1b7 d2:xFd&YzAb$WHwSb[S7o!T0FmC-Q6J\&e85YN"D u' {&uC`OkR+vUu(穌hWӉN\⭒ F5V{q9V]|Ȯ79Bؓ"NDؐLfC"S6vkJ_PYw7ʼnn@`kT]2#2st|@*2I^ɌG>C^O%؉/ >kW)W1L:QQ!_TCF'_#2X_b[Ru鸼{O,L΋K:Co>vb ZFQMV` v:jL\N7lPIlŔeX򦼜ʠi 1dzݽk\JЁq/L v@-,@*gNЫRctN b[ˢQL@Hd8h/({5R~B2hM/WZi>X|tK \7ܬTs+;oógkMw >]4sϘv ZYthڤU/㖶zjRnŗL9igG^xՃI\Ĝu쨤A9JIzkPg9R_Eڥd2B&-jqy(9usPм['lkpU\.la|eoI]?Ђk{ȷ5%V̶Շr֥lnA n9=msٶ]̡ ˂+f>c:aɔ%8yr08{JaAIEwQV }?,N^Qgѵh{Agk2 FyC4-6XBJ,4F3Ĩ?`~}\VVty6a:k;3n3efUgG ښ|CB3tIPGCЧvfPtĩz$|ZsY ~RfQ7-ROSbslӯΟ5mj}o;g66mڕCyLR`:UUL`*`Z&d`.Ƀ̈́`f |~j -ڑ+Aw YarU9ۃrR_ i '̹"kRW7Mes]XaAԚ~Au{ϳbks%0i JF7NWđe}6-nf% aU"xLqsO/Loʟ]^?=+=9Y3gΩ6|/]׻hy+vH*Bi͵+G&& @0'F]ǟkµۻ 7졙\m ?I3YL -~-rb-y, Xwvэ dD)OmooxjӖϓxk7{}=O|咽av `eyd#(4;8d噭"k4A[NPb12<U+0WԲFݧ+qxø ?rk0no/hTZ8ݱ37{Dܺ/Z_T5{ieRijt]H2UDk&=eeHXm`VLB#hjLZ bY/6Sg tsڶ;wO &*;:ZUkJBug;pyBrqwճbJ?r_rD!C?YGYd@R V4/JWPs4.cKLI^$sx駗cMfKά[7C:ӤK0^D_yv5]6uT|1`-&^ZqB˞'_'ԛVn^-hm\RQҸ6v?bĞm,\:>y4io2LVdI 8VHF{98u.H*Y0\* \uUu<jeKk[wx=ij.zXV;q)59Z]y+7k.3ShD %]]"n1hg̉,$x )NY-OL(\VK^ " :[:8Nt8V#Vſ K0)؟~AVe}(//KJv d}bFo5Zd9CZ?s*FgSfw9 ' L&#jCxհY5KӼZ}|7,Fraɱ<}ɔk/b ۏmn1S'(/a x16K>>Kc[F&^yHb*76nI U* Ru >& 늟^#*KkcS15 yM3!cs-8wVLzܩ牎'*xEeݕa^o4FWy]7 O%uߚO %= 6K>E,ב~re_;j8rau B3 t#b!Po9Nn0^9T oKH(ODKc5.AvNfǛ9^lQIusx(\d[=FiOL;嗗p))#Tvx#dz̡D)p=# 05R ^_یMd:,$y-,G8탧)"qz)q'bMg~-Cn,%$|D huNIp<6s|ݒ%l=]g߷iɼO="ٿMeb *-ߖ?k~J˯z)~C2.ý&~I֠!zIj, 4D8Xn1Y' JQ UB` P~ D|xD||٨faߪ>pR̪/UlZOֻ}dYZǿvfK[6xweT VN/??\0yׄ=;i٬ՂƗM^ԺRmnj^[omɅ˫-A8.\3+9W+cV]?(@=~PTQ81ִ\yavclm8+<& vm-x>`F0i.QqMzH 6;;ˬ`_Qo@C_+-Zf{b5t+D0hJƕ'LFBa+FF'(y͕/z=O??E޻n{ZMWp-9iϗʟ__w?0<|Tjs3K4^8_t{uK?8WA&$s8 뢈hDiB(`(ZD5( bL`靹E!E10Q\2~ф QN였Z1ix,{:fmlNvױ ,޳Ý9mnOښH|F\|GkҪ968ֶqeֶ{Օӏdz^\b c&.5QjFO<$;3ȼ/q4[TdNHeNV) IGi19_b?ȶL0S/őR=Oq)^}y"ˣEbDyVM7 *7c (&x#„ ʮs8ʿ"Q*0fGTl"9CT|7_z_VFkW߱|މޒwTp̬1_fL&Se6Xa:v P*gԒ j֭?` t`aL 24ؔR>'-k;LQdn/diϣ .*<o}< Kr~s_2zKP T3 Q~I%= iK:Mbz5*Ja,AzHyes0Gh V F6`0ΞDG0:UVј}jpꕮjp:3oD']޴=JuFŽmbYU:8m%M]T5MJBh&W-cYYȁ?Yã8PvXnDJyb 춃:z<]H mJ(ۥ8!ZD:C\ꨫ_<%ZzόIF丣8Ǽ`UN̔T~qϬ;{>3%.Yj)T11Z89~eˊckx/g/ g`/xv k 4ha3@l.<>p{ZR>'{ʣԳ_Rd$1Yr)$IĆb5sJBҩȂ@RoQ)Q(X$+^cUc"+WWmQW#9 +ss҂Z1Y\ӲTk}6&2t'ɖΦ lp{[Aqevʖ'Ν:!^#۸LFdZ.S I͚GQ67]N<0RZ2H@b"?LmXB·v?'Cv;W4W>&]傾 3*SS*R9\赌f x&WLHh0*6¨ڜlDeƙ4 iEP?ĝ .ɞGo.q z_,qǭGRL,9M//cYA/!bW fl[?$yz`ձ+x#1n#Qsʏ(EsΑd)djq$YFaQ^Xq|8'V3]='um\fBٟ|fޒ3 "n{ո%Nq E1"|0S/Q^}ғQE#W<>G83d̉I"O|gaИE.3Iz*4fGrb5cK\3ʘ 2 8f̘KTmn ?~v|}}LJUz(c>Wό-:tD0?Ef%;cq@@}i1Umr;KYfa~uVwQMf_r]lkX7cR{E}Em: O2ƠLjj,#Ԙ#R6`QrZ9zz"]t.ň*a3Lej뉅3Bh&er9Bµ衁+W +Y a斑ALIYyP)m83PLCᵊ!kTjb7(!ha^K vWb4t =IUn%ް3kC`do2۰/bKxQl %yJ+GzR?H2?!r 3hd2#3M$)VQhiuB= @fly€ʞk60 YWWfn7nQ4^7ů4Pn1{ajwCB{>rNsO!^c1T#$|</IbF+f:KxO--tz>8RbʤfƏyMy٘\q3Éd3Rg4Szi6cӴ ŠhMSgJ a4!PSqeo%rS]2kde:e Ѝˠe s9]b1sbM `9PycMҶl|̍41]qyZQiZVRl{*ᣝNjyF "6VX hy V!݋ CRr5+VlhJ;XcvLARQLYβF51R\\Ҵnڰ='SrxA}/`? ٵ)*`G{^42%1e=ǸI"L>P,qkqy&yn2@6Y YI{9SR=rjRMw8' 8g#HxN#uHw鷨BԾf#TÑyn6i}vSfSLUUހh-ߥƛ" ,#f|^igvighlUܰU%RWZ4ŝ^Jtx*,PVk/%#T۴\nmP&:}svx:z8z-xT8Jc]GZPX19 tzh FX m[ W \U* 7%Yf*pEH WflZb,S%6Z\&_J]f@ESXL?9Ͻ&^QgQ4Y5J,[Id]:Mh ]TiN;iZ==du)szs6OdҥsW#,b͞ƒ[3j"D6;lwvĔ唫S. "CoLL&nڅ~MᮑQl  |h^7GMyB QS0ʴߟ;#"|[0zصڹh˗43 KV?-܈ G~@S طURDU"PXeL4~8mp3Lj+0gDW+|jR8a'`Vb^7pmHwfyڇ{2#?m.>Gۀ3zNpV)Q.hʔK@ ͸'J{&c=Nuomk'^&ԫf!NشXʟ}K/^7_w^T1Fw܂/"Ed Z.$WR z1Dd **:Ժ1[2lV?\r6U:+8͜>to=Gv.X?uʼnI 4uZXŸs:{n~ܓoԯFNozd%gWcUމ Cž}h3gnԉ&;Ѽ@;~\/^4zno;*Cwt/ǵ!9._rT|<_x%×(_M|i×iԡ-ɵJ9l`m>zO} &'?wәGGu 2|"r)~\D.D3r ֔Z52*τM>-Z]aiUck<9Rèy>~Y({B)Dz|.0|릾 YR(qP=YbI EF3*z񆜗ZiZ23Os7<~Â[0Tos{^fjL cIJ*&s+m1\Z;=: mƐat+gU8;&.NEA!<>=*ŤVBJx$&xcJm+|J+1vb:3𽦙dZR\o7OS3")XrmzEhf~ghO[.o{kœl.5ۑqI|bm+ȡye]b )[g~bYgJ|[=()_S?5ljkb]2/\?kVUݤqݏ86),5 %3BW*[SiOj1\ؘpERed PTi'ٔVR ř_'6Ӧb`MS(q`oh:AbU-D6wq\L)e3J#:[;p;WYcE1F[+035h/'G:5f6^PJsǴ^L^6io}<- -QZ?hZ"MZvѧ>3>Mt <|5U@U@*@I1٫EEI D 8+4+WxPSdWlT9ti [ϖad>?wPn%n 5+ܒ1왞ig-ctygph2&T {,MhMo׌osql+~-[?3m0'oM̉kf@=̈́WP{*3W2]6FoNʊa;mYOˈXʘԘ1vbS)HGik7Vfc2*,,cr2+PMD$H<0ryI Fdepzk5o"hQڋ}}#=%5-$i-:7ooI995uf+=.?rE`a/@v1 zT^PǢ@P`M1nMGܙ7$W)=OgƭKE?Yų~s7+V3{nYӵnZW=qa4AjXXw|$oY~m2qn6<.':nwz}߶~xÞpxh8)'Ώ)WxNqESμ\87nwōƱKqōD$qy?čyFכwy?ݼRip ?Nf_yM=PH &>#rZ<'8Y)@[m4M[a/SHFEǵ(\i(Hܰ{!7c6RR+FZR3V31͡ C)]`J؉y4./2_a]OC`*@ IJdŋٺ''J_Å Bٖ2cc-|\aEW.Pk2z O5K6e#p+yAڬ}R55x:K}>P=,_$E}λqo)b ҘM B;9B_]UT~M!7 VY=40xU4l *ڽ~y3{5: ok]ծuk݃n![Q$M4a"(.&D|H B􃽣F14O_oY:wn|i'V{Uc%,Yal"M6`d``.)!! eк_urh[7lA1WqC]A8ئUX/vJ:f+ BЕх0bVDEo*Û|DPMgPvhLVR+нf]i~J&rI8w oVh#Ɇ-h>kƓ;oSSV~8s??9vT~tnb. q㘅U`XVEg  Bڐ{CH兔uZs-ukZg b4󜛋wfPT\HWz u% !R"*i!aYpV{j,9̮Li4Vt$'u53H~љƦ%{oTV}/Hͼ.oi<wOn;lu57ծ~[lO 1xzas$1rHW?}nYl-sm0:ejƲ4ռb֦V`V*hvd;d)'Y6/z"{ S O  q\{ a,b14UxZI"N6cnp/jS%۴~^*iNW{.#\ ɪBi2Msba)U9·1]Rr^(/b/zlMN[dR+<0BmEDeUq`&.7^Ղ^SUE et*sm?֠Q7܉`%wFdIRڕME] YPXƪrh84E‡ffFG`1~q'GUbq'"Ƨި} ޛJܩd3JNg UQS6:s$ZB+2 !;z$wq VXqW s=t+[3M2-ZJdz^FzQ 3= /^Ƅ<=ƃQn$ChWm1@EIo\xL]ڄȐoBw3<3ls(?b9mU3co;ӳi`1;=O {``mn~]w{̼9.?-|wsF<#)J=!hxLD uF{)[{#+r6poh^-XpL[Yt"u6lu`U^GW?e;forЮ8y=%'Ce#y'sBz )E?;xc`d```dox~  poD, $ !Mxc`d``[/S @ {TxuMGDQTL**iS31mDfdmErTFE"Y ZU0<99Ϲ7)+PM+09ƋЅKXe<#G p=8f]G7aK6d ;:d<c\^̍1w֢׹4kχ0Pf}iɬc]a~UgM[x +Y^{Nws ~>ޛbtmvߣH|#ĽeEG\#ƵR_:xxّ9Ϙwgl&[jC| 4$E1QjIqq;~U}DPo]ǁV[\iz]Ao^cnbxc``Ё:k&11cRIJ + &l^l;YqpLyW w9  [ߌ;Q]$z VN%|IGd(h 19'$$j$H̐!%U&uOZEz~ W)z)RRPrQzEE%MOejj5&4j?3W_XqDF*yng~9-H8$ 'K$HɤJdIٴ=H':Ӆt#'Mҏ @CE.&yS@!`0a Ǎ")J(F3c<$&3Lc:3,ʘM9s<*Q6=[N81`o~6nV8 ~$)泀T*<1O{i}XL %KYr>45 YZֳ|*g85^Z-1+q/ (I,)*i9sV%ܔLbd}5~pj֔Ŗ{\JSYWC44.eT){nK]꺳: *+Vex-M$k;Loo=xE̱P^V"JLn<I &}X$Njp xI9✗ [g -!"$jIӠ؅ԗ Q_rM-b6A)3[f#f ؾ2#f*01cP ]0oF [S*gsoap-2.8.60/gsoap/doc/fonts/inconsolata-webfont.svg0000755000175000017500000017170113227173553022006 0ustar ellertellert gsoap-2.8.60/gsoap/doc/genivia_content.css0000644000175000017500000000617013227173553020040 0ustar ellertellert/* font face requires Genivia Website fonts */ @font-face { font-family: 'inconsolatamedium'; src: url('../../fonts/inconsolata-webfont.eot'); src: url('../../fonts/inconsolata-webfont.eot?#iefix') format('embedded-opentype'), url('../../fonts/inconsolata-webfont.woff') format('woff'), url('../../fonts/inconsolata-webfont.ttf') format('truetype'), url('../../fonts/inconsolata-webfont.svg#inconsolatamedium') format('svg'); font-weight: normal; font-style: normal; } #titlearea { padding: 0px; margin: 0px; width: 100%; border-bottom: 0px; } div.textblock { margin-left: 10%; margin-right: 10%; } a.el { font-weight: normal; } pre { font-family: inconsolatamedium, monospace, serif !important; font-size: 1em !important; } code { display: inline-block; background-color: #ffe; font-family: inconsolatamedium, monospace, serif !important; margin-top: 1px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; padding-left: 2px; padding-right: 2px; border: 1px solid #ddd; border-radius: 3px; } em code { background-color: #FAFAFA; font-style: normal; } td code { border: none; padding: 0px; } div.header { visibility: hidden; } div.toc { padding: 14px 25px; background: #fafafa; border: 1px solid rgba(38, 91, 142, 0.5); border-radius: 7px 7px 7px 7px; float: right; height: auto; margin: 0px 20px 10px 10px; width: 200px; } div.toc h3 { visibility: hidden; } div.alt div.fragment { border: 1px solid rgba(38, 91, 142, 0.5); border-left: 10px solid #000; background-color: #FAFAFA; padding-left: 0px; padding-right: 6px; padding-top: 6px; padding-bottom: 6px; margin-left: 0px; font: 100 1em; line-height: normal; overflow: auto; } div.fragment { border: 1px solid rgba(38, 91, 142, 0.5); border-left: 10px solid #c0504d; background-color: #ffe; padding-left: 10px; padding-right: 6px; padding-top: 6px; padding-bottom: 6px; margin-left: 0px; font: 100 1em; line-height: normal; overflow: auto; } div.line { line-height: normal; } span.lineno { display: none; } pre.fragment { border: 0px; background-color: hsl(0, 0%, 25%); color: hsl(0, 0%, 100%); padding: 6px; margin-left: 0px; font: 100 1em; line-height: normal; overflow: auto; white-space: pre; } table.doxtable { border-collapse: collapse; margin-top: 4px; margin-bottom: 4px; margin-left: 0px; background-color: #ffe; } table.doxtable th { background-color: #c0504d; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; } .navpath ul { font-size: 11px; color: rgba(255, 255, 255, 0.9); background: #c0504d; border: 1px solid #ddd; margin:0px; padding:0px; } .navpath li { list-style-type:none; float:left; padding-left:10px; padding-right:15px; background: #c0504d; color: rgba(255, 255, 255, 0.9); } .navpath li.navelem a { height:32px; display:block; text-decoration: none; outline: none; color: rgba(255, 255, 255, 0.9); text-shadow: none; text-decoration: none; } .navpath li.navelem a:hover { background: #E23232; color: #fff; } gsoap-2.8.60/gsoap/doc/curl/0000755000175000017500000000000013234023226015100 5ustar ellertellertgsoap-2.8.60/gsoap/doc/curl/Doxyfile0000644000175000017500000002321113227173553016620 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "CURL plugin for gSOAP" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/curlapi.h ../../plugin/curlapi.c FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/isapi/0000755000175000017500000000000013234023226015240 5ustar ellertellertgsoap-2.8.60/gsoap/doc/isapi/Doxyfile0000644000175000017500000002314213227173553016763 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "ISAPI Extension" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../mod_gsoap/gsoap_win/isapi/README.md ../../mod_gsoap/gsoap_win/isapi/gsoap/ FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/databinding/0000755000175000017500000000000013234023226016377 5ustar ellertellertgsoap-2.8.60/gsoap/doc/databinding/Doxyfile0000644000175000017500000002363713227173553020133 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Data Bindings" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../samples/databinding/README.md ../../samples/databinding/address.h ../../samples/databinding/address.cpp ../../samples/databinding/graph.h ../../samples/databinding/graph.cpp ../../samples/databinding/addressH.h ../../samples/databinding/graphH.h ../../samples/databinding/addressStub.h ../../samples/databinding/graphStub.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/wsrm/0000755000175000017500000000000013234023226015123 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wsrm/Doxyfile0000644000175000017500000002350513227173554016652 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WS-ReliableMessaging" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/wsrmapi.h ../../plugin/wsrmapi.c ../../plugin/wsaapi.h ../../plugin/wsaapi.c ../../plugin/mq.h ../../plugin/mq.c ../../custom/duration.h ../../custom/duration.c ../../import/wsrm.h ../../import/wsrx.h ../../import/wsa5.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/GeniviaLogo2_trans_noslogan.png0000644000175000017500000002372613227173553022262 0ustar ellertellertPNG  IHDR- 0 DiCCPICC ProfileH wTl/]"e齷.H& KYe7D"V$(bh(+X "J F;'Nw>}w(!a@P"f'0D6p(h@_63u_ -Z[3C+K;?r!YLD)c#c1 ʪ2N|bO h{yIHD.VV>RV:|{ [RF ”"MF1L1[Te'Jx%C%_%RJ#4GcӸu:(G73%Ie%e{SC add1T4UT*TTTUzUUUoScemUkS{Q7UPWߣ~A}b}9Հ5L5"5iјi<9Ъ:5MvhWh~Tfz1U.椎NTgNΌ|ݵͺHz,T NI}mPw ,tӆF -5j4oL50^l\k|g24mr6u0M713fͱBZA EEŰ%2res+}VV(٬Ԗk[c{Îjgʮ=~mCNNb&q'}d]N,:+Uʺuv^|o]5˟[7wM׍mȝ}CǃQSϓY9eu빷ػ{^>*}7l6 8`k`f 7!p2)hEPW0%8*:Qi8# z<ἶ0-AQ#p5#m"GvGѢG.7xt~g|LbLCtOlyPU܊|BLB}&:$%Zh`EꋲJO$O&&N~ rRSvLrgIsKۖ6^>!` /22fLge̜͊j&d'g* 3]9Z99"3Qhh'\(wanLHyy5yoc( z.ٴdloaqu.Yf WB+SVv[UjtCkHk2zmWbuj.Y￾HH\4uލ6W|ĺ})76T}39usocٞ---zl=TX|d[ fEqūI/WWA!1TRվS疝ӫox4صin={j-n`[k k+x\S-ۆzEjpjh8qn6Ik:8w7ޜw[nn?uݼ3V/~ڟM~nr:53(ѽȳ_ry?ZrL{퓓~מ.x:LlfW_w=7~oLM˃_uNO=|zfڛCoYož_Cggg` pHYs  8IDATx=XTs6:*EbƠшԧ(XE F3jĵk'cH5h,o5*"ҤK]ʶ{wYRļ˿L;s̙3gf\qDM!R@ w[7A_߰> uUakBsO(9<޽{}R =0q=qRäE8G|x@Z6}pxr?tk4/P7wu)}ɖh MsΎE!/t'rZw{}37lږ'B)i[q#h##88!ƍ7 "N }tc\kTBXV#qyN#yAĠGs6Wvg+UrSy"M?C 9okk˹WH$'a[l92l(!>,tKn3[/dʅ0Gc8 -xzRB1(0_$GpZN&J(Tqz7BAS|._}t!] ĵx{醃^lH7=Tcf7E/!.土uw=^͘1[#(U>\n%LL'NjQ}=ö,w;2C?_0LYudsQQQANO)0h|X,?xAxqk\k2|ʤ9erMXG0Z3 Qt'Bo(mqjeZC!DvmG~ը0@Pb+!:;}8rfsz jcgm^ ϤV3[fyƒpP :rL]Ouzm 7q`F j'g-|P媚!Xo%imlCtEQ_s~-:v^ "͸.#f۾-α,cYAPk >Y! @ɲ7/wKcX38.KrAPqBU1̝;imhuZTuCZ Ԝ8I셽a}QPuR/Y2ohl|Ar}9͇8~âHnQȷf|$@ r#90q OORsvv{l!mMJo0k[cC2&yyy\rrr|ZZ x ̹8!¶MĩmE"~\BxX:'V;;hjՠˮGiJ-UjjPu}m#Grޱ t#I=8CBI)ZjvZ1¿ZIoe3/ 0$z؅ũS?ynZ:!$ P5>r`Y 0 j ;2NFf)㋙x <NIQ%c(f5/OPBB9%w]bbaBsY=S&z|9qy1s$,,:8Xc7Maov,c?F*`䖪,M2O)ᄋ F~7>.Tq'4>S@l+Yy8W"K'CްkF vԨQӯ\MsM9xx΂׸-i6"-E`=c9ϧyDѵk3ѹdt0 Kp=gnXZæh !ثQkzmINiհr`@/\`u">ImaJ<>ݸ\>u2خ璎ˇ1s*n*RÆtL`P凷ҍisi9vL7`wp:uARFfT2MZ|R!u:Dru|7(ZBҠ..^W@X}y#Lf9to93[)ƆԩSIǎe:OqWhƀ:L-X@4r*8)@nnn༊`n(U_m8-fVǖ 'Ɉ}bۺ}hQn ]ïMP1oC<9Kvۅ`3( ,k 0B`n2˿lwڷZa><6]~;EL%m| ߩO<_x%hUM>Jӡ%Kx>~ =XknqHmp 60@P ?7WҐrb$X.~Q0s`y sv}E`vFGh\Po񧻻(Uio\*a qɅ]-ƌQ 0vz xpG@\k#gUE3pD dΝ98_@S ;ҦM3`iHԘ {c66nOzaWUjeNU#ps|zt0r"[iލM|o8k0Nêg@'eU%0}I3Bu@W'>P@fi sr}ם^\_HN a!tuuϩj_PΑnaUA2H19.*MIHb"GgHtELĕED]^cJ\\'YieK!1ԙieuqp_+h  )B` ;Ǡo~OOOeU9'M {rw䝟e.PQzp|OB0!b'|<8d'o\9{& 3 &4u~8ySvR~n H*RO^{\LgRKʫ4 J18ZRK5]OTԨ#F,?}&| +T?ԡCtNlAF*! f$p.Z `e98OAD)ޱ?_ͺ/& :PcH <E0V r*RGbG apCU$FJ׺pI 9`G /rҥKWn޼FFAjn[?PV X8b/[%r]l*5 zKG;MN΁l(3ZQ:9%d0/ەU wO>֡mKYPgP..[g4Tuou LKtW1''.=и,BCCBux8׭7&͌P=4LS`bH'470{Xkr(ea6΍JDS&K?, ;w(.[5fvtT0;/i,#Rk:7uIlmZ#s@>j{{r*e*5hdIwzjJf;dZNcgDS).1xUj OYCR6%I.?]%*u=#t0 Rʞ=׿Iq "$Ӽ렴A-z:X.8cvihsN8w[H2f9`怙f9`怙f@M>s5l ӦMOL{9jm۶ypPJh\zUFbP@=ZfehmYT* lTCr˜ޖS%˫Ѐ!%47OWj腖_~g ;:tP5bs!xlL 1&0M,󡭮aSuKl0>H(%fOoBKH%h$bAdtħCLC>~GCˣV@CƅEʒs{^p(1QiI S傡C%`h[ 1P)xt8h4 ˋ>y];>vNe>"+&F`/ 41l& tep8ܼ6!}xo1 :`HHH˗'!xQdWXLsرk L0bz|<ƚ%9!r8e6)'tG`<8'ULj.-ɛo^]ğpzS}n'GQTMXͿ nlgR",g#1/ezz} فѐb8NEE]aXurW6;IB5hk;h^p7 /))b $-i YL&1=Hb?IVi,K:;X?xS"(n@q0ּ>>ecƌ{ 80CAD33q޽M+ws7|w0c b_ _ .A Xl-!YP(F1 ju Ӫ"]E qʗ ӑ4OW9VX%GJyk5Ps2:.gܑGݾQH+fm:>C 4*߰0MDOG^L9UE."oZpf"83VczceQ;zrouulkg}zz2g-w<$XxQPPxx wŠAaUg B5| VYձp?et!d `ɍ=:υAn8 c-#?xNHAz!w,وHQ7%HvD+ٍp6_GjBBtg#@^'I_xQLW NdOUC[7FpIX c"R,Yò& VqJ`7~fh@1z4>y?hy? ֎mO4T͈>$G$fmaa'"Ic/++91ܘ^{DL}oONΪ,)^`ʸ>}ߝ6 `w-iZ'4r HS*qARiA*t@^'>'>~VIz޻wovXXXwܹszzz΄oHYG&.֭[_>޻f_ AX:`İM95/he8{۬ofw |3KAޠ34 nY!_z8b-&"շb_ =`i,d%d.s?$*I]"=pZ+?ԍGOxO@ś&-ܓ|7*d/$0/9 KZ5 a)4U 6Ƽecq4],A%grTHO!" 5n#sUKT<çot‚]ӏ@# 2Q AW"]va`2_2???~k+ٳᠽ! z7Rb PWf*bF{KSp:]k |f܉x-d DH?Ti[f/#/x藫6]F;R wttb~TBA!ɑM@g.v*sPC!Hܭ4'߬i[؛ @'Ze%\J$_IZ 9doc%9BeҜ*_!by?_ ;tWk%H`BZqy<_no2,:.#Ws'Vi'TXja|+Zd HS`+Os kwUTV6RA]#s i!]Fy;xsn#eYz`›6`ցCI Gy>)i#&|)zQHn]ryx\\(W}.5 &׼%DȾvk“{)7s30s30s30s3?ͭF" IENDB`gsoap-2.8.60/gsoap/doc/soapdoc2.html0000644000175000017500000376347413227173554016577 0ustar ellertellert gSOAP 2.8.60 User Guide

gSOAP 2.8.60 User Guide

Robert van Engelen
Genivia Inc
www.genivia.com

Jan 15, 2018
 
[This document is also available in PDF format]



Contents

Introduction
    1.1  Getting Started
    1.2  Quick Start: Developing a Web Service Client Application
    1.3  Quick Start: Developing a Web Service
    1.4  Quick Start: XML Data Bindings
    1.5  Feature Overview
Notational Conventions
Differences Between gSOAP Versions 2.4 (and Earlier) and 2.5
Differences Between gSOAP Versions 2.1 (and Earlier) and 2.2
Differences Between gSOAP Versions 1.X and 2.X
Interoperability
Quick User Guide
    7.1  How to Build SOAP/XML Clients
        7.1.1  Example
        7.1.2  XML Namespace Considerations
        7.1.3  Example
        7.1.4  How to Generate C++ Client Proxy Classes
        7.1.5  XSD Type Encoding Considerations
        7.1.6  Example
        7.1.7  How to Change the Response Element Name
        7.1.8  Example
        7.1.9  How to Specify Multiple Output Parameters
        7.1.10  Example
        7.1.11  How to Specify Output Parameters With struct/class Compound Data Types
        7.1.12  Example
        7.1.13  How to Specify Anonymous Parameter Names
        7.1.14  How to Specify a Method with No Input Parameters
        7.1.15  How to Specify a Method with No Output Parameters
    7.2  How to Build SOAP/XML Web Services
        7.2.1  Example
        7.2.2  MSVC++ Builds
        7.2.3  How to Create a Stand-Alone Server
        7.2.4  How to Create a Multi-Threaded Stand-Alone Service
        7.2.5  How to Pass Application Data to Service Methods
        7.2.6  Web Service Implementation Aspects
        7.2.7  How to Generate C++ Server Object Classes
        7.2.8  How to Chain C++ Server Classes to Accept Messages on the Same Port
        7.2.9  How to Generate WSDL Service Descriptions
        7.2.10  Example
        7.2.11  How to Use Client Functionalities Within a Service
    7.3  Asynchronous One-Way Message Passing
    7.4  Implementing Synchronous One-Way Message Passing over HTTP
    7.5  How to Use the SOAP Serializers and Deserializers to Save and Load Application Data using XML Data Bindings
        7.5.1  Mapping XML Schema to C/C++ with wsdl2h
        7.5.2  Mapping C/C++ to XML Schema with soapcpp2
        7.5.3  Serializing C/C++ Data to XML
        7.5.4  Deserializing C/C++ Data from XML
        7.5.5  Example
        7.5.6  Serializing and Deserializing Class Instances to Streams
        7.5.7  How to Specify Default Values for Omitted Data
The wsdl2h WSDL and Schema Importer
    8.1  wsdl2h Options
    8.2  Customizing Data Bindings With The typemap.dat File
Using the soapcpp2 Compiler and Code Generator
    9.1  soapcpp2 Options
    9.2  SOAP 1.1 Versus SOAP 1.2 and Dynamic Switching
    9.3  The soapdefs.h Header File
    9.4  How to Build Modules and Libraries with the #module Directive
    9.5  How to use the #import Directive
    9.6  How to Use #include and #define Directives
    9.7  Compiling a SOAP/XML Client Application with soapcpp2
    9.8  Compiling a SOAP/XML Web Service with soapcpp2
    9.9  Compiling Web Services and Clients in ANSI C
    9.10  Limitations of gSOAP
    9.11  Library Build Flags
    9.12  Run Time Flags
    9.13  Memory Management
        9.13.1  Memory Allocation and Management Policies
        9.13.2  Intra-Class Memory Management
    9.14  Debugging
    9.15  Generating an Auto Test Server for Client Testing
    9.16  Generating Deep Copy and Deletion Code
    9.17  Required Libraries
10  The gSOAP Service Operation Specification Format
    10.1  Service Operation Parameter Passing
    10.2  Error Codes
    10.3  C/C++ Identifier Name to XML Tag Name Mapping
    10.4  Namespace Mapping Table
11  gSOAP Serialization and Deserialization Rules
    11.1  SOAP RPC Encoding Versus Document/Literal and xsi:type Info
    11.2  Primitive Type Encoding
    11.3  How to Represent Primitive C/C++ Types as XSD Types
        11.3.1  How to Use Multiple C/C++ Types for a Single Primitive XSD Type
        11.3.2  How to use C++ Wrapper Classes to Specify Polymorphic Primitive Types
        11.3.3  XSD Schema Type Decoding Rules
        11.3.4  Multi-Reference Strings
        11.3.5  "Smart String" Mixed-Content Decoding
        11.3.6  C++ Strings
        11.3.7  Changing the Encoding Precision of float and double Types
        11.3.8  INF, -INF, and NaN Values of float and double Types
    11.4  Enumeration Serialization
        11.4.1  Serialization of Symbolic Enumeration Constants
        11.4.2  Encoding of Enumeration Constants
        11.4.3  Initialized Enumeration Constants
        11.4.4  How to "Reuse" Symbolic Enumeration Constants
        11.4.5  Boolean Enumeration Serialization for C
        11.4.6  Bitmask Enumeration Serialization
    11.5  Struct Serialization
    11.6  Class Instance Serialization
        11.6.1  Example
        11.6.2  Initialized static const Fields
        11.6.3  Class Methods
        11.6.4  Getter and Setter Methods
        11.6.5  Streaming XML with Getter and Setter Methods
        11.6.6  Polymorphism, Derived Classes, and Dynamic Binding
        11.6.7  XML Attributes
        11.6.8  QName Attributes and Elements
    11.7  Union Serialization
    11.8  Serializing Pointer Types
        11.8.1  Multi-Referenced Data
        11.8.2  NULL Pointers and Nil Elements
    11.9  Void Pointers
    11.10  Fixed-Size Arrays
    11.11  Dynamic Arrays
        11.11.1  SOAP Array Bounds Limits
        11.11.2  One-Dimensional Dynamic SOAP Arrays
        11.11.3  Example
        11.11.4  One-Dimensional Dynamic SOAP Arrays With Non-Zero Offset
        11.11.5  Nested One-Dimensional Dynamic SOAP Arrays
        11.11.6  Multi-Dimensional Dynamic SOAP Arrays
        11.11.7  Encoding XML Generics Containing Dynamic Arrays
        11.11.8  STL Containers
        11.11.9  Polymorphic Dynamic Arrays and Lists
        11.11.10  How to Change the Tag Names of the Elements of a SOAP Array or List
    11.12  Base64Binary XML Schema Type Encoding
    11.13  hexBinary XML Schema Type Encoding
    11.14  Literal XML Encoding Style
        11.14.1  Serializing and Deserializing Mixed Content XML With Strings
12  SOAP Fault Processing
13  SOAP Header Processing
14  MIME Attachments
    14.1  Sending a Collection of MIME Attachments (SwA)
    14.2  Retrieving a Collection of MIME Attachments (SwA)
15  DIME Attachments
    15.1  Sending a Collection of DIME Attachments
    15.2  Retrieving a Collection of DIME Attachments
    15.3  Serializing Binary Data in DIME
    15.4  Streaming DIME
    15.5  Streaming Chunked DIME
    15.6  WSDL Bindings for DIME Attachments
16  MTOM Attachments
    16.1  Generating MultipartRelated MIME Attachment Bindings in WSDL
    16.2  Sending and Receiving MTOM Attachments
    16.3  Streaming MTOM/MIME
    16.4  Redirecting Inbound MTOM/MIME Streams Based on SOAP Body Content
    16.5  Streaming Chunked MTOM/MIME
17  XML Validation
    17.1  Occurrence Constraints
        17.1.1  Default Values
        17.1.2  Elements with minOccurs and maxOccurs Restrictions
        17.1.3  Required and Prohibited Attributes
    17.2  Value Constraints
        17.2.1  Data Length Restrictions
        17.2.2  Value Range Restrictions
        17.2.3  Pattern Restrictions
    17.3  Element and Attribute Qualified/Unqualified Forms
18  SOAP/XML Over UDP
    18.1  Using WS-Addressing with SOAP-over-UDP
    18.2  Client-side One-way Unicast
    18.3  Client-side One-way Multicast
    18.4  Client-side Request-Response Unicast
    18.5  Client-side Request-Response Multicast
    18.6  SOAP-over-UDP Server
    18.7  SOAP-over-UDP Multicast Receiving Server
19  Advanced Features
    19.1  Internationalization
    19.2  Customizing the WSDL and Namespace Mapping Table File Contents With gSOAP Directives
        19.2.1  Example
    19.3  Transient Data Types
    19.4  Serialization "as is" with Volatile Data Types
    19.5  How to Declare User-Defined Serializers and Deserializers
    19.6  How to Serialize Data Without Generating XSD Type Attributes
    19.7  Function Callbacks for Customized I/O and HTTP Handling
    19.8  HTTP 1.0 and 1.1
    19.9  HTTP 307 Temporary Redirect Support
    19.10  HTTP GET Support
    19.11  TCP and HTTP Keep-Alive
    19.12  HTTP Chunked Transfer Encoding
    19.13  HTTP Buffered Sends
    19.14  HTTP Authentication
    19.15  HTTP NTLM Authentication
    19.16  HTTP Proxy NTLM Authentication
    19.17  HTTP Proxy Basic Authentication
    19.18  Messaging Speed and Performance Improvement Tips
    19.19  XML Parsing Options to set Safety Guards
    19.20  Timeout Management for Non-Blocking Operations
    19.21  Socket Options and Flags
    19.22  Overriding the Host and Port to Connect
    19.23  Secure Web Services with HTTPS/SSL
    19.24  Secure Clients with HTTPS/SSL
    19.25  SSL Authentication Callbacks
    19.26  SSL Certificates and Key Files
    19.27  SSL Hardware Acceleration
    19.28  SSL on Windows
    19.29  Zlib Compression
    19.30  Client-Side Cookie Support
    19.31  Server-Side Cookie Support
    19.32  Connecting Clients Through Proxy Servers
    19.33  Bind Before Connect and Setting the Client Interface Address
    19.34  FastCGI Support
    19.35  How to Create gSOAP Applications With a Small Memory Footprint
    19.36  How to Eliminate BSD Socket Library Linkage
    19.37  How to Combine Multiple Client and Server Implementations into one Executable
    19.38  How to Build a Client or Server in a C++ Code Namespace
    19.39  How to Create Client/Server Libraries
        19.39.1  C++ Clients Example
        19.39.2  C Clients Example
        19.39.3  C Services Chaining Example
    19.40  How to Create DLLs
        19.40.1  Create the Base stdsoap2.dll
        19.40.2  Creating Client and Server DLLs
    19.41  gSOAP Plug-ins
        19.41.1  The Message Logging and Statistics Plug-in
        19.41.2  RESTful Client-Side API
        19.41.3  RESTful Server-Side API: The HTTP GET Plug-in
        19.41.4  RESTful Server-Side API: The HTTP POST Plug-in
        19.41.5  The HTTP MD5 Checksum Plug-in
        19.41.6  The HTTP Digest Authentication Plug-in
        19.41.7  The WS-Addressing Plug-in
        19.41.8  The WS-ReliableMessaging Plug-in
        19.41.9  The WS-Security Plug-in
        19.41.10  WS-Discovery

Copyright (C) 2000-2015 Robert A. van Engelen, Genivia Inc, All Rights Reserved.

1  Introduction

The gSOAP tools provide an automated SOAP and XML data binding for C and C++ based on compiler technologies. The tools simplify the development of SOAP/XML Web services and XML application in C and C++ using autocode generation and advanced mapping methods. Most toolkits for Web services adopt a WSDL/SOAP-centric view and offer APIs that require the use of class libraries for XML-specific data structures. This forces a user to adapt the application logic to these libraries because users have to write code to populate XML and extract data from XML using a vendor-specific API. This often leads to fragile solutions with little or no assurances for data consistency, type safety, and XML validation. By contrast, gSOAP provides a type-safe and transparent solution through the use of compiler technology that hides irrelevant WSDL-, SOAP-, REST-, and XML-specific protocol details from the user, while automatically ensuring XML validity checking, memory management, and type-safe serialization. The gSOAP tools automatically map native and user-defined C and C++ data types to semantically equivalent XML data types and vice-versa. As a result, full SOAP/REST XML interoperability is achieved with a simple API relieving the user from the burden of WSDL/SOAP/XML details, thus enabling him or her to concentrate on the application-essential logic.
The gSOAP tools support the integration of (legacy) C/C++ codes (and other programming languages when a C interface is available), embedded systems, and real-time software in SOAP/XML applications that share computational resources and information with other SOAP applications, possibly across different platforms, language environments, and disparate organizations located behind firewalls.
The gSOAP tools are also popular to implement XML data binding in C and C++. This means that application-native data structures can be encoded in XML automatically, without the need to write conversion code. The tools also produce XML schemas for the XML data binding, so external applications can consume the XML data based on the schemas.

1.1  Getting Started

To start building Web services applications or automate XML data bindings with gSOAP, you need: The gSOAP software is self-contained, so there is no need to download any third-party software, except when you want to use OpenSSL for HTTPS and/or Zlib compression.
The gSOAP distribution package includes:
  • The wsdl2h WSDL/schema converter and data binding tool.
  • The soapcpp2 stub/skeleton compiler and code generator.
Binaries of these two tools are included in the gSOAP package in gsoap/bin for Windows and Mac OS plarforms, see also the README files in the package for more details.
Although gSOAP tools are available in binary format for several platforms, the code generated by these tools are all equivalent. This means that the generated source codes can be transferred to other platforms and locally compiled.
If you don't have the binaries or if you want to rebuild them, you need
  • Bison (or Yacc) to build soapcpp2.
  • Flex (or Lex) to build soapcpp2.
  • A C++ compiler to build wsdl2h.
Bison and Flex are preferred. Both are released under open source licenses that are compatible with gSOAP's licenses. You can also build soapcpp2 without Bison and Flex installed, see installation instructions on the gSOAP web site.
The gSOAP engine is built as a library libgsoap.a and libgsoap++.a with separate versions of these two libgsoapssl.a and libgsoapssl++.a that support SSL. See the README.txt instructions on how to build these libraries with the platform-independent gSOAP package's autoconf and automake. Alternatively, you can compile and link the engine's source code stdsoap2.c (or stdsoap2.cpp for C++) directly with your code.
The gSOAP packages contain numerous examples in the samples directory. Run make to build the example applications. The examples are also meant to demonstrate different features of gSOAP. A streaming MTOM attachment server and client application demonstrate efficient file exchanges in samples/mtom-stream. An SSL-secure Web server application demonstrates the generation of dynamic content for Web browsing and Web services functionality at the same time, see samples/webservice. And much more.

1.2  Quick Start: Developing a Web Service Client Application

The gSOAP tools minimize application adaptation efforts for building Web Services by using a XML data binding for C and C++ implemented by advanced XML schema analyzers and source-to-source code generation tools. The gSOAP wsdl2h tool imports one or more WSDLs and XML schemas and generates a gSOAP header file with familiar C/C++ syntax to define the Web service operations and the C/C++ data types. The gSOAP soapcpp2 compiler then takes this header file and generates XML serializers for the data types (soapH.h and soapC.cpp), the client-side stubs (soapClient.cpp), and server-side skeletons (soapServer.cpp).
The gSOAP soapcpp2 compiler can also generate WSDL definitions for implementing a service from scratch, i.e. without defining a WSDL first. This "closes the loop" in that it enables Web services development from WSDL or directly from a set op C/C++ operations in a header file without the need for users to analyze Web service details.
You only need to follow a few steps to execute the tools from the command line or Makefile (see also MSVC++ project examples in the samples directory with tool integration in the MSVC++ IDE). For example, to generate code for the calculator Web service, we run the wsdl2h tool from the command line on the URL of the WSDL and use option -o to specify the output file:

> wsdl2h -o calc.h http://www.genivia.com/calc.wsdl

This generates the calc.h service definition header file with service operation definitions and types for the operation's data. This header file is then to be processed with soapcpp2 to generate the stub and/or skeleton code and XML serialization routines. The calc.h file includes all documentation, so you can use Doxygen (http://www.doxygen.org) to automatically generate the documentation pages for your development.
The wsdl2h-generated service definitions header file also contains information on the use of the service, such as WS-Policy assertions when applicable.
In this example we are developing a C++ API for the calculator service. By default, gSOAP assumes you will use C++ with STL. To build without STL, use option -s:

> wsdl2h -s -o calc.h http://www.genivia.com/calc.wsdl

To build a pure C application, use option -c:

> wsdl2h -c -o calc.h http://www.genivia.com/calc.wsdl

Important: Visual Studio users shopuld make sure to compile all gSOAP source files in C++ compilation mode. If you migrate to a project file .vcproj, please set CompileAs="2" in your .vcproj file. We have not yet generated the stubs for the C/C++ API. To do so, run the soapcpp2 compiler:

> soapcpp2 -i -C -Iimport calc.h

Option -i (and alternatively option -j) indicates that we want C++ proxy and server objects that include the client (and server) code, -C indicates client-side only files (soapcpp2 generates both client and server stubs and skeletons by default). Option -I is needed to import the stlvector.h file from the import directory in the gSOAP package to support serialization of STL vectors.
Suppose we develop a C++ client for the calculator service using wsdl2h -o calc.h http://www.genivia.com/calc.wsdl and soapcpp2 -i -C calc.h.
We use the generated soapcalcProxy class and calc.nsmap XML namespace mapping table to access the Web service. The soapcalcProxy class is a proxy to invoke the service:

#include "soapcalcProxy.h"
#include "calc.nsmap"
int main()
{
   calcProxy service;
   double result;
   if (service.add(1.0, 2.0, result) == SOAP_OK)
      std::cout << "The sum of 1.0 and 2.0 is " << result << std::endl;
   else
      service.soap_stream_fault(std::cerr);
   service.destroy(); // delete data and release memory
}

To complete the build, compile the code above and compile and link this with the generated soapC.cpp, soapcalcProxy.cpp, and the run-time gSOAP engine -lgsoap++ (or use source stdsoap2.cpp in case libgsoap++.a is not installed) with your code.
Suppose we develop a client in C using wsdl2h -c -o calc.h http://www.genivia.com/calc.wsdl and soapcpp2 -C calc.h. In this case our code uses a simple C function call to invoke the service and we also need to explicitly delete data and the context with soap_end and soap_free:


#include "soapH.h"
#include "calc.nsmap"
int main()
{
   struct soap *soap = soap_new();
   double result;
   if (soap_call_ns__add(soap, 1.0, 2.0, &result) == SOAP_OK)
      printf("The sum of 1.0 and 2.0 is %lg\n", result);
   else
      soap_print_fault(soap, stderr);
   soap_end(soap);
   soap_free(soap);
}

The calculator example is fairly simple and used here to illustrate the development process. The development process for large-scale XML applications is similar. More extensive examples can be found in the samples directory in the gSOAP package.

1.3  Quick Start: Developing a Web Service

Developing a service application is easy too. We will use CGI here because it is a simple mechanism. This is not the preferred deployment mechanism. Because CGI is slow and stateless. Faster services can be developed as a stand-alone gSOAP HTTP/HTTPS server (but see comments at the end of this section) or, as preferred and recommended for security reasons, the use of Apache module or IIS with the mod_gsoap ISAPI extension (included in the gSOAP package under gsoap/mod_gsoap with instructions).
Suppose we implement a CGI-based service that returns the time in GMT. The Common Gateway Interface (CGI) is a simple mechanism to publish services on your Web site.
For this example we start with a gSOAP header file, currentTime.h which contains the service definitions. Such a file can be obtained from a WSDL using wsdl2h when a WSDL is available. When a WSDL is not available, you can define the service in C/C++ definitions in a newly created header file and let the gSOAP tools generate the source code and WSDL for you.
Our currentTime service only has an output parameter, which is the current time defined in our currentTime.h gSOAP service specification:

// File: currentTime.h
//gsoap ns service name: currentTime
//gsoap ns service namespace: urn:currentTime
//gsoap ns service location: http://www.yourdomain.com/currentTime.cgi
int ns__currentTime(time_t& response);

Note that we associate an XML namespace prefix ns and namespace name urn:currentTime with the service WSDL and SOAP/XML messages. The gSOAP tools use a special convention for identifier names that are part of a namespace: a namespace prefix (ns in this case) followed by a double underscore __. This convention is used to resolve namespaces and to avoid name clashes. The ns namespace prefix is bound to the urn:currentTime namespace name with the //gsoap directive. The //gsoap directives are used to set the properties of the service, in this case the name, namespace, and location endpoint.
The service implementation for CGI requires a soap_serve call on a soap context created with soap_new. The service operations are implemented as functions, which are called by the RPC dispatcher soap_serve:

// File: currentTime.cpp
#include "soapH.h" // include the generated declarations
#include "currentTime.nsmap" // include the XML namespace mappings
int main()
{
   // create soap context and serve one CGI-based request:
   return soap_serve(soap_new());
}
int ns__currentTime(struct soap *soap, time_t& response)
{
   response = time(0);
   return SOAP_OK;
}

Note that we pass the soap struct with the gSOAP context information to the service routine. This can come in handy to determine properties of the connection and to dynamically allocate data with soap_malloc(soap, num_bytes) that will be automatically deleted when the service is finished.
We run the soapcpp2 compiler on the header file to generate the server-side code:

> soapcpp2 -S currentTime.h

and then compile the CGI binary:

> c++ -o currentTime.cgi currentTime.cpp soapC.cpp soapServer.cpp stdsoap2.cpp

You will find stdsoap2.cpp in the gsoap dir. Or after installation you can link with libgsoap++ instead of using the stdsoap2.cpp source:

> c++ -o currentTime.cgi currentTime.cpp soapC.cpp soapServer.cpp -lgsoap++

To activate the service, copy the currentTime.cgi binary to your bin-cgi directory using the proper file permissions.
The soapcpp2 tool generated the WSDL definitions currentTime.wsdl. You can use the WSDL to advertize your service. You don't need to use this WSDL to develop a gSOAP client. You can use the currentTime.h file with soapcpp2 option -C to generate client-side code.
A convenient aspect of CGI is that it exchanges messages over standard input/output. Therefore, you can run the CGI binary on the auto-generated example request XML file to test your server:

> ./currentTime.cgi < currentTime.currentTime.req.xml

and this displays the server response in SOAP XML.
The above approach works also for C. Just use soapcpp2 option -c in addition to the -S option to generate ANSI C code. Of course, in C we use pointers instead of references and the currentTime.h file should be adjusted to use C-only types.
A more elegant server implementation in C++ can be obtained by using the soapcpp2 option -i (or -j) to generate C++ client-side proxy and server-side service objects as classes that you can use to build clients and services in C++. The option removes the generation of soapClient.cpp and soapServer.cpp, since these are no longer needed when we have classes that implement the client and server logic:

> soapcpp2 -i -S currentTime.h

This generates soapcurrentTimeService.h and soapcurrentTimeService.cpp files, as well as auxiliary files soapStub.h (included by default by all codes) and currentTime.nsmap.
Using the currentTimeService object we rewrite the CGI server as:

// File: currentTime.cpp
#include "soapcurrentTimeService.h" // include the proxy declarations
#include "currentTime.nsmap" // include the XML namespace mappings
int main()
{
   // create server and serve one CGI-based request:
   currentTimeService server;
   server.serve();
   server.destroy();
}
int currentTimeService::currentTime(time_t& response)
{
   response = time(0);
   return SOAP_OK;
}

Compile with

> c++ -o currentTime.cgi currentTime.cpp soapC.cpp soapcurrentTimeService.cpp -lgsoap++

and install the binary as CGI. To install the CGI binary please consult your Web server documentation on how to deploy CGI applications.
To run the server as a stand-alone iterative (non-multithreaded) server on port 8080 until accept() timeout times out or an error occurs:

if (server.run(8080))
   server.soap_stream_fault(std::cerr);

To run the server as a stand-alone iterative server on port 8080 while ignoring common errors until a TCP error occurs:

while (server.run(8080) != SOAP_OK)
{
   if(server.soap->error == SOAP_TCP_ERROR)
      break;
   server.soap_stream_fault(std::cerr);
}

To implement threaded services, please see Section 7.2.4. These stand-alone Web Services that handle multiple SOAP requests by spawning a thread for each request. Thread pooling is also an option. The use of Apache and IIS modules to deploy gSOAP services is preferred and recommended to ensure load balancing, access control, tracing, security, and so on.
For more information on server-side service classes, see Section 7.2.7. For more information on client-side proxy classes, see Section 7.1.4.

1.4  Quick Start: XML Data Bindings

Or in other words, how to map schemas (XSD files) to C/C++ bindings for automatically reading and writing XML data.
The XML C/C++ data binding in gSOAP provides and automated mechanism to encode any C and C++ data type in XML (and decode XML back to C/C++ data). An XML schema (XSD file) can be transformed into a set of C or C++ definitions that can be readily incorporated into your application to manipulate XML with much more ease than DOM or SAX. Essentially, each XML component definition in an XML schema has a C/C++ data type representation that has equivalent type properties. The advantage of this approach is immediately apparent when we look at an XSD complexType that maps to a class:

XSD C++
<complexType name="Address"> class ns__Address
   <sequence> {
      <element name="name" type="string"/>    std::string name;
      <element name="home" type="tns:Location" minOccurs="0"/>    ns__Location *home;
      <element name="phone" type="unsignedLong"/>    ULONG64 phone;
      <element name="dob" type="dateTime"/>    time_t dob;
   </sequence>
   <attribute name="ID" type="int" use="required"/>    @int ID;
</complexType> }

In this way, an automatic mapping between XML elements of the XML schema and members of a class is created. No DOM traversals and SAX events are needed. In addition, the XML C/C++ data binding makes XML manipulation type safe. That is, the type safety of C/C++ ensures that only valid XML documents can be parsed and generated.
The wsdl2h tool performs the mapping of WSDL and XML schemas to C and/or C++ automatically. The output of wsdl2h is an annotated header file that includes comments and documentation on the use of the C/C++ declarations in a SOAP/XML client/server or in a generic application for reading and writing XML using the auto-generated serializers.
We will illustrate this further with an example. Suppose we have an XML document with a book record:

<book isbn="1234567890">
   <title>Farewell John Doe</title>
   <publisher>ABC's is our Name</publisher>
</book>

An example XML schema that defines the book element and type could be

<schema ...>
   <element name="book">
      <complexType>
         <sequence>
            <element name="title" type="string" minOccurs="1"/>
            <element name="publisher" type="string" minOccurs="1"/>
         </sequence>
         <attribute name="isbn" type="unsignedLong" use="required"/>
      </complexType>
   </element>
</schema>

Using wsdl2h we translate the XML schema that defines the book type and root element to a class definition:

class book
{
   @ULONG64 isbn;
   std::string title;
   std::string publisher;
}

Note that annotations such as @ are used to distinguish attributes from elements. These annotations are gSOAP-specific and are handled by the soapcpp2 tool to generate serializers for the data type(s) for reading and writing XML.
The soapcpp2 tool generates all the necessary code to parse and generate XML for book objects. Validation constraints such as minOccurs="1" and use="required" are included in the generated code as checks.
To write the XML representation of a book, we first create a soap engine context and use it with soap_write_book (generated by soapcpp2) to write the object in XML to standard output:

soap *ctx = soap_new1(SOAP_XML_INDENT); // new context with option
book bk;
bk.isbn = 1234567890;
bk.title = "Farewell John Doe";
bk.publisher = "ABC's is our Name";
if (soap_write_book(ctx, &bk) != SOAP_OK)
   ... error ...
soap_destroy(ctx); // clean up allocated class instances
soap_end(ctx); // clean up allocated temporaries
soap_free(ctx); // delete context

The ctx gSOAP engine context (type struct soap) controls settings and holds state, such as XML formatting, (e.g. SOAP_XML_INDENT), serialization options, current state, and I/O settings. Simply set the output stream (std::ostream) ctx->os of the context to redirect the content, e.g. to a file or string. Also, when serializing a graph rather than an XML tree (SOAP_XML_TREE option forces trees) the XML output conforms to SOAP encoding for object graphs based on id-ref, see Section 7.5 for details.
To read the XML representation from standard input into a book object, use:

soap *ctx = soap_new1(SOAP_XML_STRICT); // new context with option
book bk;
if (soap_read_book(ctx, &bk) != SOAP_OK)    ... error ...
else
   cout << bk.isbn << ", " << bk.title << ", " << bk.publisher << endl;
... further use of bk ...
soap_destroy(ctx); // delete deserialized objects
soap_end(ctx); // delete temporaries
soap_free(ctx); // delete context

Automatic built-in strict XML validation (enabled with SOAP_XML_STRICT) ensures that data members are present so we can safely print them in this example, thus ensuring consistency of data with the XML schema. Set the ctx->is input stream to read from a file/string stream instead of stdin.
The soap_destroy and soap_end calls deallocate the deserialized content, so use with care. In general, memory management is automatic in gSOAP to avoid leaks.
The above uses a very simple example schema. The gSOAP toolkit handles all XML schema constructs defined by the XML schema standard. The toolkit is also able to (de)serialize pointer-based C/C++ data structures (including cyclic graphs), structs/classes, unions, enums, STL containers, and even special data types such as struct tm. Therefore, the toolkit works in two directions: from WSDL/schema to C/C++ and from C/C++ to WSDL/schema.
The gSOAP toolkit also handles multiple schemas defined in multiple namespaces. Normally the namespace prefixes of XML namespaces are added to the C/C++ type definitions to ensure type uniqueness. For example, if we would combine two schemas in the same application where both schemas define a book object, we need to resolve this conflict. In gSOAP this is done using namespace prefixes, rather than C++ namespaces (research has pointed out that XML namespaces are not equivalent to C++ namespaces). Thus, the book class might actually be bound to an XML namespace and the class would be named ns__book, where ns is bound to the corresponding namespace.
The following options are available to control serialization:

soap->encodingStyle = NULL; // to remove SOAP 1.1/1.2 encodingStyle
soap_mode(soap, SOAP_XML_TREE); // XML without id-ref (no cycles!)
soap_mode(soap, SOAP_XML_GRAPH); // XML with id-ref (including cycles)
soap_set_namespaces(soap, struct Namespace *nsmap); //to set xmlns bindings

Other flags can be used to format XML, see Section 9.12.
For more details on XML databinding support for C and C++, see Section 7.5.

1.5  Feature Overview

The highlights of gSOAP are:
  • Unique interoperability features: the tools generate type-safe SOAP marshalling routines to (de)serialize native and user-defined C and C++ data structures.
  • Support WSDL 1.1, WSDL 2.0, REST, SOAP 1.1, SOAP 1.2, SOAP RPC encoding style, and document/literal style. gSOAP is one of the few SOAP toolkits that support the full range of SOAP 1.1 RPC encoding features including sparse multi-dimensional arrays and polymorphic types. For example, a service operation with a base class parameter may accept derived class instances from a client. Derived class instances keep their identity through dynamic binding. The toolkit also supports all XSD 1.0 and 1.1 schema type constructs and has been tested against the W3C XML Schema Patterns for Databinding Interoperability working group and of gSOAP release 2.8.x passes all tests.
  • Supports WS-Security, WS-Addressing, WS-ReliableMessaging, C14N exclusive canonicalization. The protocols are implemented using code generation with wsdl2h and soapcpp2. The gSOAP tools can be used to generate messaging protocols for other WS-* protocols.
  • gSOAP supports XML-RPC and RSS protocols. Examples are provided.
  • JSON support is included in the XML-RPC library to switch between XML-RPC and JSON protocols. For more details, see the samples/xml-rpc-json folder in the package.
  • The wsdl2h tool supports WS-Policy. Policy assertions are included in the generated service description header file with recommendations and usage hints.
  • gSOAP supports MIME (SwA), DIME, and MTOM attachments and has streaming capabilities to direct the data stream to/from resources. gSOAP is the only toolkit that supports streaming MIME, DIME, and MTOM attachment transfers, which allows you to exchange binary data of practically unlimited size in the fastest possible way (streaming) while ensuring the usefulness of XML interoperability.
  • gSOAP supports SOAP-over-UDP.
  • gSOAP supports IPv4 and IPv6.
  • gSOAP supports Zlib deflate and gzip compression (for HTTP, TCP/IP, and XML file storage).
  • gSOAP supports SSL (HTTPS) using OpenSSL and optionally using GNUTLS.
  • gSOAP supports HTTP/1.0, HTTP/1.1 keep-alive, chunking, basic authentication, and digest authentication using a plugin.
  • gSOAP supports SOAP one-way messaging.
  • The schema-specific XML pull parser is fast and efficient and does not require intermediate data storage for demarshalling to save space and time.
  • The soapcpp2 compiler includes a WSDL and schema generator for convenient Web Service publishing.
  • The soapcpp2 compiler generates sample input and output messages for verification and testing (before writing any code). An option (-T) can be used to automatically implement echo message services for testing.
  • The wsdl2h tool converts WSDL and XSD files to gSOAP header files for automated client and server development.
  • Generates source code for stand-alone Web Services and client applications.
  • Ideal for small devices such as Palm OS, Symbian, Pocket PC, because the memory footprint is small.
  • Ideal for building web services that are compute-intensive and are therefore best written in C and C++.
  • Platform independent: Windows, Unix, Linux, Mac OS X, Pocket PC, Palm OS, Symbian, VXWorks, etc.
  • Supports serializing of application's native C and C++ data structures, which allows you to save and load XML serialized data structures to and from files.
  • Selective input and output buffering is used to increase efficiency, but full message buffering to determine HTTP message length is not used. Instead, a three-phase serialization method is used to determine message length. As a result, large data sets such as base64-encoded images can be transmitted with or without DIME attachments by small-memory devices such as PDAs.
  • Supports C++ single class inheritance, dynamic binding, overloading, arbitrary pointer structures such as lists, trees, graphs, cyclic graphs, fixed-size arrays, (multi-dimensional) dynamic arrays, enumerations, built-in XSD Schema types including base64Binary encoding, and hexBinary encoding.
  • No need to rewrite existing C/C++ applications for Web service deployment. However, parts of an application that use unions, pointers to sequences of elements in memory, and void* need to be modified, but only if the data structures that adopt them are required to be serialized or deserialized as part of a service operation invocation.
  • Three-phase marshalling: 1) analysis of pointers, single-reference, multi-reference, and cyclic data structures, 2) HTTP message-length determination, and 3) serialization as per SOAP 1.1 encoding style or user-defined encoding styles.
  • Two-phase demarshalling: 1) SOAP parsing and decoding, which involves the reconstruction of multi-reference and cyclic data structures from the payload, and 2) resolution of "forward" pointers (i.e. resolution of the forward href attributes in SOAP).
  • Full and customizable SOAP Fault processing (client receive and service send).
  • Customizable SOAP Header processing (send and receive), which for example enables easy transaction processing for the service to keep state information.

2  Notational Conventions

The typographical conventions used by this document are:
Sans serif or italics font
denotes C and C++ source code, file names, and shell/batch commands.
Bold font
denotes C and C++ keywords.
Courier font
denotes HTTP header content, HTML, XML, XML Schema content and WSDL content.
[Optional]
denotes an optional construct.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119.

3  Differences Between gSOAP Versions 2.4 (and Earlier) and 2.5

To comply with WS-I Basic Profile 1.0a, gSOAP 2.5 and higher adopts SOAP document/literal by default. There is no need for concern, because the WSDL parser wsdl2h automatically takes care of the differences when you provide a WSDL document, because SOAP RPC encoding, literal, and document style are supported. A new soapcpp2 compiler option was added -e for backward compatibility with gSOAP 2.4 and earlier to adopt SOAP RPC encoding by default in case you want to develop a service that uses SOAP encoding. You can also use the gSOAP soapcpp2 compiler directives to specify SOAP encoding for individual operarations, when desired.

4  Differences Between gSOAP Versions 2.1 (and Earlier) and 2.2

You should read this section only if you are upgrading from gSOAP 2.1 to 2.2 and later.
Run-time options and flags have been changed to enable separate recv/send settings for transport, content encodings, and mappings. The flags are divided into four classes: transport (IO), content encoding (ENC), XML marshalling (XML), and C/C++ data mapping (C). The old-style flags soap_disable_X and soap_enable_X, where X is a particular feature, are deprecated. See Section 9.12 for more details.

5  Differences Between gSOAP Versions 1.X and 2.X

You should read this section only if you are upgrading from gSOAP 1.X to 2.X.
gSOAP versions 2.0 and later have been rewritten based on versions 1.X. gSOAP 2.0 and later is thread-safe, while 1.X is not. All files in the gSOAP 2.X distribution are renamed to avoid confusion with gSOAP version 1.X files:

gSOAP 1.X gSOAP 2.X
soapcpp soapcpp2
soapcpp.exe soapcpp2.exe
stdsoap.h stdsoap2.h
stdsoap.c stdsoap2.c
stdsoap.cpp stdsoap2.cpp

Changing the version 1.X application codes to accommodate gSOAP 2.X does not require a significant amount of recoding. The change to gSOAP 2.X affects all functions defined in stdsoap2.c[pp] (the gSOAP runtime context API) and the functions in the sources generated by the gSOAP soapcpp2 compiler (the gSOAP RPC+marshalling API). Therefore, clients and services developed with gSOAP 1.X need to be modified to accommodate a change in the calling convention used in 2.X: In 2.X, all gSOAP functions (including the service operation proxy routines) take an additional parameter which is an instance of the gSOAP runtime context that includes file descriptors, tables, buffers, and flags. This additional parameter is always the first parameter of any gSOAP function.
The gSOAP runtime context is stored in a struct soap type. A struct was chosen to support application development in C without the need for a separate gSOAP implementation. An object-oriented approach with a class for the gSOAP runtime context would have prohibited the implementation of pure C applications. Before a client can invoke service operations or before a service can accept requests, a runtime context needs to be allocated and initialized. Three new functions are added to gSOAP 2.X:

Function Description
soap_init(struct soap *soap) Initializes a context (required only once)
struct soap *soap_new() Allocates, initializes, and returns a pointer to a runtime context
struct soap *soap_copy(struct soap *soap) Allocates a new runtime context and copies contents of the context such that the new environment does not share any data with the original context

A context can be reused as many times as necessary and does not need to be reinitialized in doing so. A dynamically allocated context is deallocated with soap_free.
A new context is only required for each new thread to guarantee exclusive access to a new runtime context by each thread. For example, the following code stack-allocates the runtime context which is used for multiple service operation calls:

int main()
{
   struct soap soap;
   ...
   soap_init(&soap); // initialize runtime context
   ...
   soap_call_ns__method1(&soap, ...); // make a remote call
   ...
   soap_call_ns__method2(&soap, ...); // make another remote call
   ...
   soap_destroy(&soap); // remove deserialized class instances (C++ only)
   soap_end(&soap); // clean up and remove deserialized data
   soap_done(&soap); // detach context (last use and no longer in scope)
   ...
}

The runtime context can also be heap allocated:

int main()
{
   struct soap *soap;
   ...
   soap = soap_new(); // allocate and initialize runtime context
   if (!soap) // couldn't allocate: stop
   ...
   soap_call_ns__method1(soap, ...); // make a remote call
   ...
   soap_call_ns__method2(soap, ...); // make another remote call
   ...
   soap_destroy(soap); // remove deserialized class instances (C++ only)
   soap_end(soap); // clean up and remove deserialized data
   soap_free(soap); // detach and free runtime context
}

A service needs to allocate and initialize an context before calling soap_serve:

int main()
{
   struct soap soap;
   soap_init(&soap);
   soap_serve(&soap);
}

Or alternatively:

int main()
{
   soap_serve(soap_new());
}

The soap_serve dispatcher handles one request or multiple requests when HTTP keep-alive is enabled (with the SOAP_IO_KEEPALIVE flag see Section 19.11).
A service can use multi-threading to handle requests while running some other code that invokes service operations:

int main()
{
   struct soap soap1, soap2;
   pthread_t tid;
   ...
   soap_init(&soap1);
   if (soap_bind(&soap1, host, port, backlog) < 0) exit(1);
   if (soap_accept(&soap1) < 0) exit(1);
   pthread_create(&tid, NULL, (void*(*)(void*))soap_serve, (void*)&soap1);
   ...
   soap_init(&soap2);
   soap_call_ns__method(&soap2, ...); // make a remote call
   ...
   soap_end(&soap2);
   ...
   pthread_join(tid, NULL); // wait for thread to terminate
   soap_end(&soap1); // release its data
}

In the example above, two runtime contexts are required. In comparison, gSOAP 1.X statically allocates the runtime context, which prohibits multi-threading (only one thread can invoke service operations and/or accept requests due to the single runtime context).
Section 7.2.4 presents a multi-threaded stand-alone Web Service that handles multiple SOAP requests by spawning a thread for each request.

6  Interoperability

gSOAP interoperability has been verified with the following SOAP implementations and toolkits:
Apache 2.2
Apache Axis
ASP.NET
Cape Connect
Delphi
easySOAP++
eSOAP
Frontier
GLUE
Iona XMLBus
kSOAP
MS SOAP
Phalanx
SIM
SOAP::Lite
SOAP4R
Spray
SQLData
WCF
White Mesa
xSOAP
ZSI
4S4C

7  Quick User Guide

This user guide offers a quick way to get started with gSOAP. This section requires a basic understanding of the SOAP protocol and some familiarity with C and/or C++. In principle, SOAP clients and SOAP Web services can be developed in C and C++ with the gSOAP soapcpp2 compiler without a detailed understanding of the SOAP protocol when gSOAP client-server applications are built as an ensamble and only communicate within this group (i.e. meaning that you don't have to worry about interoperability with other SOAP implementations). This section is intended to illustrate the implementation of gSOAP Web services and clients that connect to and interoperate with other SOAP implementations such as Apache Axis, SOAP::Lite, and .NET. This requires some details of the SOAP and WSDL protocols to be understood.

7.1  How to Build SOAP/XML Clients

In general, the implementation of a SOAP client application requires a stub (also called service proxy) for each service operation that the client invokes. The primary stub's responsibility is to marshall the parameter data, send the request with the parameters to the designated SOAP service over the wire, to wait for the response, and to demarshall the parameter data of the response when it arrives. The client application invokes the stub routine for a service operation as if it would invoke a local function. To write a stub routine in C or C++ by hand is a tedious task, especially if the input and/or output parameters of a service operation contain elaborate data structures such as objects, structs, containers, arrays, and pointer-linked graph structures. Fortunately, the gSOAP wsdl2h WSDL parser tool and soapcpp2 stub/skeleton and serialization code generator tool automate the development of SOAP/XML Web service client and server applications.
The soapcpp2 tool generates the necessary gluing code (also called stubs and skeletons) to build web service clients and services. The input to the soapcpp2 tool consists of an service definition-annotated C/C++ header file. The header file can be generated from a WSDL (Web Service Description Language) documentation of a service with the gSOAP wsdl2h WSDL parser tool.
Consider the following command (entered at the Linux/Unix/Windows command line prompt):

> wsdl2h -o calc.h http://www.genivia.com/calc.wsdl

This generates the file Web service description calc.h in an annotated C++ header file. The WSDL specification (possibly consisting of multiple imported WSDL files and XSD schema files) is mapped to C++ using C++ databindings for SOAP/XML. The generated header file contains data types and messages to operate the service, and meta information related to WSDL and XML schemas.
To generate a service definition header file to develop a pure C client application, use the -c option:

> wsdl2h -c -o calc.h http://www.genivia.com/calc.wsdl

For more details on the WSDL parser and its options, see 8.
The service definition calc.h header file is further processed by the gSOAP soapcpp2 compiler to generate the gluing code's logic to invoke the Web service from a client.
Looking into the file calc.h we see that the SOAP service methods are specified as function prototypes. For example, the add function to add two double floats:

int ns2__add(double a, double b, double& result);

The ns2__add function uses an XML namespace prefix to distinguish it from operations defined in other namespaces, thus preventing name clashes. The convention to add an XML namespace prefix to the names of operations, types, and struct and class members is universally used by the gSOAP tools and automatically created by wsdl2h, but it is not mandatory when translating existing C/C++ types and operations to web services. Thus, the prefix notation can be omitted from type names defined in an header file with to run soapcpp2 to create clients and services that exchange existing (i.e. application-native) data types.
These function prototypes are translated by the gSOAP soapcpp2 tool to stubs and proxies for remote calls:

soapStub.h annotated copy of the input definitions
soapH.h serializers
soapC.cpp serializers
soapClient.cpp client calling stubs

Thus, the logic of the generated stub routines allow C and C++ client applications to seamlessly interact with existing SOAP Web services as illustrated by the client code example in the next section.
The input and output parameters of a SOAP service operation may be primitive data types or complex compound data types such as containers and pointer-based linked data structures. These are defined in the header file that is either generated by the WSDL parser or specified by hand. The gSOAP soapcpp2 tool automatically generates XML serializers and XML deserializers for the data types to enable the generated stub routines to encode and decode the contents of the parameters of the service operations in SOAP/XML.
Note that the gSOAP soapcpp2 tool also generates skeleton routines soapServer.cpp for each of the service operations specified in the header file. The skeleton routines can be readily used to implement one or more of the service operations in a new SOAP Web service. These skeleton routines are not used for building SOAP clients in C++, although they can be used to build mixed SOAP client/server applications (peer applications).

7.1.1  Example

The add service operation (declared in the calc.h file obtained with the wsdl2h tool in the previous section) adds two float values. The WSDL description of the service provides the endpoint to invoke the service operations and the XML namespace used by the operations:

Endpoint URL: http://websrv.cs.fsu.edu/ engelen/calcserver.cgi
XML namespace: urn:calc

Each service operation has a SOAP action, which is an optional string to identify the operation (mainly used with WS-Addressing), an operation request message and a response message. The request and response messages for SOAP RPC-encoded services are simply represented by C functions with input and output parameters. For the add operation, the SOAP binding details are:

SOAP style: RPC
SOAP encoding: encoded
SOAP action: "" (empty string)

This information is translated to the wsdl2h-generated header file with the service definitions. The calc.h header file for C++ generated by wsdl2h contains the following directives and declarations: (the actual contents may vary depending on the release version and the options used to control the output):

//gsoap ns2 service name: calc //gsoap ns2 service type: calcPortType //gsoap ns2 service port: http://websrv.cs.fsu.edu/ engelen/calcserver.cgi
//gsoap ns2 service namespace: urn:calc

//gsoap ns2 service method-protocol: add SOAP
//gsoap ns2 service method-style: add rpc
//gsoap ns2 service method-encoding: add http://schemas.xmlsoap.org/soap/encoding/
//gsoap ns2 service method-action: add ""
int ns2__add(double a, double b, double& result);

The other calculator operations are similar and elided here for clarity.
The //gsoap directives are required for the soapcpp2 tool to generate code that is compliant to the SOAP protocol. For this service the SOAP protocol with the common "RPC encoding style" is used. For //gsoap directive details, see Section 19.2.
The service operations are declared as function prototypes, with all non-primitive parameter types needed by the operation declared in the header file (all parameter types are primitive in this case).
The calculator add operation takes two double floats a and b, and returns the sum in result. By convention, all parameters are input parameters except the last. The last parameter is always the output parameter. A struct or class is used to wrap multiple output parameters, see also Section 7.1.9. This last parameter must be a pointer or reference. By contrast, the input parameters support pass by value or by pointer, but not pass by C++ reference.
The function prototype associated with a service operation always returns an int. The value indicates success (0 or equivalently SOAP_OK) or failure (any nonzero value). See Section 10.2 for the nonzero error codes.
The role of the namespace prefix (ns2__) in the service operation name in the function prototype declaration is discussed in detail in 7.1.2. Basically, a namespace prefix is added to a function name or type name with a pair of underscores, as in ns2__add, where ns2 is the namespace prefix and add is the service operation name. This mechanism ensures uniqueness of operations and types associated with a service.
It is strongly recommended to set the namespace prefix to a name of your choice. This avoids problems when running wsdl2h on multiple WSDLs where the sequence of prefixes ns1, ns2, and so on are arbitrarily assigned to the services. To choose a prefix name for all the operations and types of a service, say prefix c__ for the calculator service, add the following line to typemap.dat:

c = "urn:calc"

and rerun wsdl2h. The typemap.dat configures wsdl2h to use specific bindings and data types for services. The result is that c__add is used to uniquely identify the operation rather than the more arbitrary name ns2__add.
Note on the use of underscores in names: a single underscore in an identifier name will be translated into a dash in XML, because dashes are more frequently used in XML compared to underscores, see Section 10.3.
Next, the gSOAP soapcpp2 tool is invoked from the command line to process the calc.h service definitions:

> soapcpp2 calc.h

The tool generates the stub routines for the service operations. Stub routines can be invoked by a client program to invoke the remote service operations. The interface of the generated stub routine is identical to the function prototype in the calc.h service defintion file, but with additional parameters to pass the gSOAP engine's runtime context soap, an endpoint URL (or NULL for the default), and a SOAP action (or NULL for the default):

int soap_call_c__add(struct soap *soap, char *URL, char *action, double a, double b, double& result);

This stub routine is saved in soapClient.cpp. The file soapC.cpp contains the serializer and deserializer routines for the data types used by the stub. You can use option -c for the soapcpp2 tool to generate pure C code, when needed.
Note: the soap parameter must be a valid pointer to a gSOAP runtime context. The URL can be set to override the default endpoint address (the endpoint defined by the WSDL). The action parameter can be set to override the default SOAP action.
The following example C/C++ client program uses the stub:

#include "soapH.h" // include all interfaces (library and generated)
#include "calc.nsmap" // import the generated namespace mapping table
int main()
{
   double sum;
   struct soap soap; // the gSOAP runtime context
   soap_init(&soap); // initialize the context (only once!)
   if (soap_call_c__add(&soap, NULL, NULL, 1.0, 2.0, &sum) == SOAP_OK)
      std::cout << "Sum = " << sum << std::endl;
   else // an error occurred
      soap_print_fault(&soap, stderr); // display the SOAP fault message on the stderr stream
   soap_destroy(&soap); // delete deserialized class instances (for C++)
   soap_end(&soap); // remove deserialized data and clean up
   soap_done(&soap); // detach the gSOAP context
   return 0;
}

The call returns SOAP_OK (zero) on success and a nonzero error on failure. When an error occurred the fault is displayed with the soap_print_fault function. Use soap_sprint_fault(struct soap*, char *buf, size_t len) to print the error to a string, and use soap_stream_fault(struct soap*, std::ostream&) to send it to a stream (C++ only).
The following functions can be used to explicitly setup a gSOAP runtime context (struct soap):

Function Description
soap_init(struct soap *soap) Initializes a runtime context
soap_init1(struct soap *soap, soap_mode iomode) Initializes a runtime context and set in/out mode flags
soap_init2(struct soap *soap, soap_mode imode, soap_mode omode) Initializes a runtime context and set in/out mode flags
struct soap *soap_new() Allocates, initializes, and returns a pointer to a runtime context
struct soap *soap_new1(soap_mode iomode) Allocates, initializes, and returns a pointer to a runtime context and set in/out mode flags
struct soap *soap_new2(soap_mode imode, soap_mode omode) Allocates, initializes, and returns a pointer to a runtime context and set in/out mode flags
struct soap *soap_copy(struct soap *soap) Allocates a new runtime context and copies a context (deep copy, i.e. the new context does not share any data with the other context)
soap_done(struct soap *soap) Reset, close communications, and remove callbacks
soap_free(struct soap *soap) Reset and deallocate the context created with soap_new or soap_copy

A runtime context can be reused as many times as necessary for client-side remote calls and does not need to be reinitialized in doing so. A new context is required for each new thread to guarantee exclusive access to runtime context by threads. Also the use of any client calls within an active service method requires a new context.
The soapcpp2 code generator tool also generates a service proxy class for C++ client applications (and service objects for server applications) with the -i (or -j) option:

> soapcpp2 -i calc.h

The proxy is defined in:

soapcalcProxy.h client proxy class
soapcalcProxy.cpp client proxy class

Note: without the -i option only old-style service proxies and objects are generated, which are less flexible and no longer recommended. Use -j as an alternative to -i to generate classes with the same functionality, but that are not inherited from struct soap and use a pointer to a struct soap engine context that can be shared with other proxy and service class instances. This choice is also important when services are chained, see Section 7.2.8.
The generated C++ proxy class initializes the gSOAP runtime context and offers the service interface as a collection of methods:

#include "soapcalcProxy.h" // get proxy
#include "calc.nsmap" // import the generated namespace mapping table
int main()
{
   calcProxy calc(SOAP_XML_INDENT);
   double sum;
   if (calc.add(1.0, 2.0, sum) == SOAP_OK)
      std::cout << "Sum = " << sum << std::endl;
   else
      calc.soap_stream_fault(std::cerr);
   return calc.error; // nonzero when error
}

The proxy class is derived from the gSOAP runtime context structure struct soap and thus inherits (option -i) all state information of the runtime. The proxy constructor takes context mode parameters to initialize the context, e.g. SOAP_XML_INDENT in this example.
The code is compiled and linked with soapcalcProxy.cpp, soapC.cpp, and stdsoap2.cpp (or use libgsoap++.a).
The proxy class name is extracted from the WSDL content and may not always be in a short format. Feel free to change the entry

//gsoap ns2 service name: calc

and rerun soapcpp2 to generate code that uses the new name.
When the example client application is invoked, a SOAP request is performed:

POST / engelen/calcserver.cgi HTTP/1.1
Host: websrv.cs.fsu.edu
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 464
Connection: close
SOAPAction: ""

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:c="urn:calc">
   <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <c:add>
         <a>1</a>
         <b>2</b>
      </c:add>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The SOAP response message:

HTTP/1.1 200 OK
Date: Wed, 05 May 2010 16:02:21 GMT
Server: Apache/2.0.52 (Scientific Linux)
Content-Length: 463
Connection: close
Content-Type: text/xml; charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ns="urn:calc">
   <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <ns:addResponse>
         <result>3</result>
      </ns:addResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

A client can invoke a sequence of service operations:

#include "soapcalcProxy.h" // get proxy
#include "calc.nsmap" // import the generated namespace mapping table
int main()
{
   calcProxy calc(SOAP_IO_KEEPALIVE); // keep-alive improves connection performance
   double sum = 0.0;
   double val[] = 5.0, 3.5, 7.1, 1.2 ;
   for (int i = 0; i < 4; i++)
      if (calc.add(sum, val[i], sum))
         return calc.error;
   std::cout << "Sum = " << sum << std::endl;
   return 0;
}

In the above, no data is deallocated until the proxy is deleted. To deallocate deserialized data between the calls, use:

   for (int i = 0; i < 4; i++)
   {
      if (calc.add(sum, val[i], sum))
         return calc.error;
      calc.destroy();
   }

Deallocation is safe here, since the float values were copied and saved in sum. In other scenarios one must make sure data is copied or removed from the deallocation chain with:

soap_unlink(struct soap *soap, const void *data)

which is to be invoked on each data item to be preserved, before destroying deallocated data. When the proxy is deleted, also all deserialized data is deleted. To delegate deletion to another runtime context for later removal, use:

soap_delegate_deletion(struct soap *soap_from, struct soap *soap_to)

For example

struct soap soap;
soap_init(&soap);
{ // create proxy
   calcProxy calc;
   ... data generated ...
   soap_delegate_deletion(&calc, &soap);
} // proxy deleted
... data used ...
soap_destroy(&soap);
soap_end(&soap);
soap_done(&soap);

In C (use wsdl2h -c) the example program would be written as:

#include "soapH.h"
#include "calc.nsmap"
int main()
{
   struct soap soap;
   double sum = 0.0;
   double val[] = 5.0, 3.5, 7.1, 1.2 ;
   int i;
   for (i = 0; i < 4; i++)
   soap_init1(&soap, SOAP_IO_KEEPALIVE);
      if (soap_call_c__add(&soap, NULL, NULL, sum, val[i], &sum))
         return soap.error;
   printf("Sum = %lg\n", sum);
   soap_end(&soap);
   soap_done(&soap);
   return 0;
}

The code above is compiled and linked with soapClient.c, soapC.c, and stdsoap2.c (or use libgsoap.a).

7.1.2  XML Namespace Considerations

The declaration of the ns2__add function prototype (discussed in the previous section) uses the namespace prefix ns2__ of the service operation namespace, which is distinguished by a pair of underscores in the function name to separate the namespace prefix from the service operation name. The purpose of a namespace prefix is to associate a service operation name with a service in order to prevent naming conflicts, e.g. to distinguish identical service operation names used by different services.
Note that the XML response of the service example uses a namespace prefix that may be different (e.g. ns) as long as it bound to the same namespace name urn:calc through the xmlns:ns="urn:calc binding. The use of namespace prefixes and namespace names is also required to enable SOAP applications to validate the content of SOAP messages. The namespace name in the service response is verified by the stub routine by using the information supplied in a namespace mapping table that is required to be part of gSOAP client and service application codes. The table is accessed at run time to resolve namespace bindings, both by the generated stub's data structure serializer for encoding the client request and by the generated stub's data structure deserializer to decode and validate the service response. The namespace mapping table should not be part of the header file input to the gSOAP soapcpp2 tool. Service details including namespace bindings may be provided with gSOAP directives in a header file, see Section 19.2.
The namespace mapping table is:

struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name"}
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"}, // MUST be first
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"}, // MUST be second
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"}, // MUST be third
   {"xsd", "http://www.w3.org/2001/XMLSchema"}, // 2001 XML Schema
   {"ns2", "urn:calc"}, // given by the service description
   {NULL, NULL} // end of table
};

The first four namespace entries in the table consist of the standard namespaces used by the SOAP 1.1 protocol. In fact, the namespace mapping table is explicitly declared to enable a programmer to specify the SOAP encoding style and to allow the inclusion of namespace-prefix with namespace-name bindings to comply to the namespace requirements of a specific SOAP service. For example, the namespace prefix ns2, which is bound to urn:calc by the namespace mapping table shown above, is used by the generated stub routine to encode the add request. This is performed automatically by the gSOAP soapcpp2 tool by using the ns2 prefix of the ns2__add method name specified in the calc.h header file. In general, if a function name of a service operation, struct name, class name, enum name, or field name of a struct or class has a pair of underscores, the name has a namespace prefix that must be defined in the namespace mapping table.
The namespace mapping table will be output as part of the SOAP Envelope by the stub routine. For example:

...
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ns2="urn:calc"
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
...

The namespace bindings will be used by a SOAP service to validate the SOAP request.

7.1.3  Example

The incorporation of namespace prefixes into C++ identifier names is necessary to distinguish service operations that share the same name but are provided by separate Web services and/or organizations. It avoids potential name clashes, while sticking to the C syntax. The C++ proxy classes generated with soapcpp2 -i (or -j) drop the namespace prefix from the method names
The namespace prefix convention is also be applied to non-primitive types. For example, class names are prefixed to avoid name clashes when the same name is used by multiple XML schemas. This ensures that the XML databinding never suffers from conflicting schema content. For example:

class e__Address // an electronic address from schema 'e'
{
   char *email;
   char *url;
};
class s__Address // a street address from schema 's'
{
   char *street;
   int number;
   char *city;
};

The namespace prefix is separated from the name of a data type by a pair of underscores (__).
An instance of e__Address is encoded by the generated serializer for this type as an Address element with namespace prefix e:

<e:Address xsi:type="e:Address">
   <email xsi:type="string">me@home</email>
   <url xsi:type="string">www.me.com</url>
</e:Address>

While an instance of s__Address is encoded by the generated serializer for this type as an Address element with namespace prefix s:

<s:Address xsi:type="s:Address">
   <street xsi:type="string">Technology Drive</street>
   <number xsi:type="int">5</number>
   <city xsi:type="string">Softcity</city>
</s:Address>

The namespace mapping table of the client program must have entries for e and s that refer to the XML Schemas of the data types:

struct Namespace namespaces[] =
{ ...
   {"e", "http://www.me.com/schemas/electronic-address"},
   {"s", "http://www.me.com/schemas/street-address"},
...

This table is required to be part of the client application to allow access by the serializers and deserializers of the data types at run time.

7.1.4  How to Generate C++ Client Proxy Classes

Proxy classes for C++ client applications are automatically generated by the gSOAP soapcpp2 tool, as was shown in Section 7.1.1.
There is a new and improved code generation capability for proxy classes, which is activated with the soapcpp2 -i (or j) option. These new proxy classes are derived from the soap structure, have a cleaner interface and offer more capabilites.
With C++, you can also use wsdl2h option -qname to generate the proxy in a C++ namespace name. This is very useful if you want to create multiple proxies for services by repeated use of wsdl2h and combine them in one code. Alternatively, you can run wsdl2h just once on all service WSDLs and have soapcpp2 generate multiple proxies for you. The latter approach does not use C++ namespaces and may reduce the overall amount of code.
To illustrate the generation of a "standard" (old-style) proxy class, the calc.h header file example of the previous section is augmented with the appropriate directives to enable the gSOAP soapcpp2 tool to generate the proxy class. Directives are included in the generated header file by the wsdl2h WSDL importer:

// Content of file "calc.h":
//gsoap ns2 service name: calc
//gsoap ns2 service port: http://websrv.cs.fsu.edu/ engelen/calcserver.cgi
//gsoap ns2 service protocol: SOAP1.1
//gsoap ns2 service style: rpc
//gsoap ns2 service encoding: encoded
//gsoap ns2 service namespace: urn:calc

//gsoap ns2 service method-protocol: add SOAP
//gsoap ns2 service method-style: add rpc
//gsoap ns2 service method-encoding: add encoded
//gsoap ns2 service method-action: add ""
int ns2__add(double a, double b, double& result);

//gsoap ns2 service method-protocol: sub SOAP
//gsoap ns2 service method-style: sub rpc
//gsoap ns2 service method-encoding: sub encoded
//gsoap ns2 service method-action: sub ""
int ns2__sub(double a, double b, double& result);

//gsoap ns2 service method-protocol: mul SOAP
//gsoap ns2 service method-style: mul rpc
//gsoap ns2 service method-encoding: mul encoded
//gsoap ns2 service method-action: mul ""
int ns2__mul(double a, double b, double& result);

...

The first three directives provide the service details, which is used to name the proxy class, the service location port (endpoint), and the XML namespace. The subsequent groups of three directives per method define the operation's SOAP style (RPC) and encoding (SOAP encoded), and SOAP action string. These directives can be provided for each service operation when the SOAPAction is required, such as with SOAP1.1 RPC encoded and when WS-Addressing is used. In this example, the service protocol is set by default for all operations to use SOAP 1.1 RPC encoding. For //gsoap directive details, see Section 19.2.
The soapcpp2 tool takes this header file and generates a proxy soapcalcProxy.h with the following contents (not using option -i):

#include "soapH.h"
class calc
{ public:
   struct soap *soap;
   const char *endpoint;
   calc() { ... };
   ~calc() { ... };
   virtual int ns2__add(double a, double b, double& result) { return soap ? soap_call_ns2__add(soap, endpoint, NULL, a, b, result) : SOAP_EOM; };
   virtual int ns2__sub(double a, double b, double& result) { return soap ? soap_call_ns2__sub(soap, endpoint, NULL, a, b, result) : SOAP_EOM; };
   virtual int ns2__mul(double a, double b, double& result) { return soap ? soap_call_ns2__mul(soap, endpoint, NULL, a, b, result) : SOAP_EOM; };
   ...
};

The gSOAP context and endpoint are declared public to enable access.
This generated proxy class can be included into a client application together with the generated namespace table as shown in this example:

#include "soapcalcProxy.h" // get proxy
#include "calc.nsmap" // get namespace bindings
int main()
{
   calc s;
   double r;
   if (s.ns2__add(1.0, 2.0, r) == SOAP_OK)
      std::cout << r << std::endl;
   else
      soap_print_fault(s.soap, stderr);
   return 0;
}

The constructor allocates and initializes a gSOAP context for the instance.
You can use soapcpp2 option -n together with -p to create a local namespaces table to avoid link conflicts when you need multiple namespace tables or need to combine multiple clients, see also Sections 9.1 and 19.39, and you can use a C++ code namespace to create a namespace qualified proxy class, see Section 19.38.
The soapcpp2 -i option to generate proxy classes derived from the base soap structure. In addition, these classes offer more functionality as illustrated in Section 7.1.1.

7.1.5  XSD Type Encoding Considerations

Many SOAP services require the explicit use of XML Schema types in the SOAP payload. The default encoding, which is also adopted by the gSOAP soapcpp2 tool, assumes SOAP RPC encoding which only requires the use of types to handle polymorphic cases. Nevertheless, the use of XSD typed messages is advised to improve interoperability. XSD types are introduced with typedef definitions in the header file input to the gSOAP soapcpp2 tool. The type name defined by a typedef definition corresponds to an XML Schema type (XSD type). For example, the following typedef declarations define various built-in XSD types implemented as primitive C/C++ types:

// Contents of header file:
...
typedef char *xsd__string; // encode xsd__string value as the xsd:string schema type
typedef char *xsd__anyURI; // encode xsd__anyURI value as the xsd:anyURI schema type
typedef float xsd__float; // encode xsd__float value as the xsd:float schema type
typedef long xsd__int; // encode xsd__int value as the xsd:int schema type
typedef bool xsd__boolean; // encode xsd__boolean value as the xsd:boolean schema type
typedef unsigned long long xsd__positiveInteger; // encode xsd__positiveInteger value as the xsd:positiveInteger schema type
...

This easy-to-use mechanism informs the gSOAP soapcpp2 tool to generate serializers and deserializers that explicitly encode and decode the primitive C++ types as built-in primitive XSD types when the typedefed type is used in the parameter signature of a service operation (or when used nested within structs, classes, and arrays). At the same time, the use of typedef does not force any recoding of a C++ client or Web service application as the internal C++ types used by the application are not required to be changed (but still have to be primitive C++ types, see Section 11.3.2 for alternative class implementations of primitive XSD types which allows for the marshalling of polymorphic primitive types).

7.1.6  Example

Reconsider the calculator example, now rewritten with explicit XSD types to illustrate the effect:

// Contents of file "calc.h":
typedef double xsd__double;
int ns2__add(xsd__string a, xsd__double b, xsd__double &Result);

When processed by the gSOAP soapcpp2 tool it generates source code for the function soap_call_ns2__add, which is identical to the C-style SOAP call:

int soap_call_ns2__add(struct soap *soap, char *URL, char *action, double a, double b, double& result);

The client application does not need to be rewritten and can still call the proxy using the "old" C-style function signatures. In contrast to the previous implementation of the stub however, the encoding and decoding of the data types by the stub has been changed to explicitly use the XSD types in the message payload.
For example, when the client application calls the proxy, the proxy produces a SOAP request with an xsd:double (the xsi:type is shown when the soapcpp2 -t option is used):

...
<SOAP-ENV:Body>
   <ns2:add>
      <a xsi:type="xsd:string">1.0</a>
      <b xsi:type="xsd:string">2.0</b>
   </ns2:add>
</SOAP-ENV:Body>
...

The service response is:

...
<soap:Body>
   <n:addResponse xmlns:n="urn:calc">
      <result xsi:type="xsd:double">3.0</result>
   </n:addResponse>
</soap:Body>
...

The validation of this service response by the stub routine takes place by matching the namespace names (URIs) that are bound to the xsd namespace prefix. The stub also expects the addResponse element to be associated with URI urn:calc through the binding of the namespace prefix ns2 in the namespace mapping table. The service response uses namespace prefix n for the addResponse element. This namespace prefix is bound to the same URI urn:calc and therefore the service response is valid. When the XML is not well formed or does not pass validation, the response is rejected and a SOAP fault is generated. The validation level can be increased with the SOAP_XML_STRICT flag, but this is not advised for SOAP RPC encoded messaging.

7.1.7  How to Change the Response Element Name

There is no standardized convention for the response element name in a SOAP RPC encoded response message, although it is recommended that the response element name is the method name ending with "Response". For example, the response element of add is addResponse.
The response element name can be specified explicitly using a struct or class declaration in the header file. This name must be qualified by a namespace prefix, just as the operation name should use a namespace prefix. The struct or class name represents the SOAP response element name used by the service. Consequently, the output parameter of the service operation must be declared as a field of the struct or class. The use of a struct or a class for the service response is fully SOAP 1.1 compliant. In fact, the absence of a struct or class indicates to the soapcpp2 tool to automatically generate a struct for the response which is internally used by a stub.

7.1.8  Example

Reconsider the calculator service operation specification which can be rewritten with an explicit declaration of a SOAP response element as follows:

// Contents of "calc.h":
typedef double xsd__double;
struct ns2__addResponse {xsd__double result;};
int ns2__add(xsd__string a, xsd__double b, struct ns2__addResponse &r);

The SOAP request and response messages are the same as before:

...
<SOAP-ENV:Body>
   <ns2:add>
      <a xsi:type="xsd:string">1.0</a>
      <b xsi:type="xsd:string">2.0</b>
   </ns2:add>
</SOAP-ENV:Body>
...

The difference is that the service response is required to match the specified addResponse name and its namespace URI:

...
<soap:Body>
   <n:addResponse xmlns:n='urn:calc'>
      <result xsi:type="xsd:double">3.0</result>
   </n:addResponse>
</soap:Body>
...

This use of a struct or class enables the adaptation of the default SOAP response element name and/or namespace URI when required.

7.1.9  How to Specify Multiple Output Parameters

The gSOAP soapcpp2 tool compiler uses the convention that the last parameter of the function prototype declaration of a service operation in a header file is also the only single output parameter of the method. All other parameters are considered input parameters of the service operation. To specify a service operation with multiple output parameters, a struct or class must be declared for the service operation response, see also 7.1.7. The name of the struct or class must have a namespace prefix, just as the service method name. The fields of the struct or class are the output parameters of the service operation. Both the order of the input parameters in the function prototype and the order of the output parameters (the fields in the struct or class) is not significant. However, the SOAP 1.1 specification states that input and output parameters may be treated as having anonymous parameter names which requires a particular ordering, see Section 7.1.13.

7.1.10  Example

As an example, consider a hypothetical service operation getNames with a single input parameter SSN and two output parameters first and last. This can be specified as:

// Contents of file "getNames.h":
int ns3__getNames(char *SSN, struct ns3__getNamesResponse {char *first; char *last;} &r);

The gSOAP soapcpp2 tool takes this header file as input and generates source code for the function soap_call_ns3__getNames. When invoked by a client application, the proxy produces the SOAP request:

...
<SOAP-ENV:Envelope ... xmlns:ns3="urn:names" ...>
...
<ns3:getNames>
<SSN>999 99 9999</SSN>
</ns3:getNames>
...

The response by a SOAP service could be:

...
<m:getNamesResponse xmlns:m="urn:names">
<first>John</first>
<last>Doe</last>
</m:getNamesResponse>
...

where first and last are the output parameters of the getNames service operation of the service.
As another example, consider a service operation copy with an input parameter and an output parameter with identical parameter names (this is not prohibited by the SOAP 1.1 protocol). This can be specified as well using a response struct:

// Content of file "copy.h":
int X_rox__copy_name(char *name, struct X_rox__copy_nameResponse {char *name;} &r);

The use of a struct or class for the service operation response enables the declaration of service operations that have parameters that are passed both as input and output parameters.
The gSOAP soapcpp2 compiler takes the copy.h header file as input and generates the soap_call_X_rox__copy_name proxy. When invoked by a client application, the proxy produces the SOAP request:

...
<SOAP-ENV:Envelope ... xmlns:X-rox="urn:copy" ...>
...
<X-rox:copy-name>
<name>SOAP</name>
</X-rox:copy-name>
...

The response by a SOAP copy service could be something like:

...
<m:copy-nameResponse xmlns:m="urn:copy">
<name>SOAP</name>
</m:copy-nameResponse>
...

The name will be parsed and decoded by the proxy and returned in the name field of the struct X_rox__copy_nameResponse &r parameter.

7.1.11  How to Specify Output Parameters With struct/class Compound Data Types

If the single output parameter of a service operation is a complex data type such as a struct or class it is necessary to specify the response element of the service operation as a struct or class at all times. Otherwise, the output parameter will be considered the response element (!), because of the response element specification convention used by gSOAP, as discussed in 7.1.7.

7.1.12  Example

This is best illustrated with an example. The Flighttracker service by ObjectSpace provides real time flight information for flights in the air. It requires an airline code and flight number as parameters. The service operation name is getFlightInfo and the method has two string parameters: the airline code and flight number, both of which must be encoded as xsd:string types. The method returns a getFlightResponse response element with a return output parameter that is of complex type FlightInfo. The type FlightInfo is represented by a class in the header file, whose field names correspond to the FlightInfo accessors:

// Contents of file "flight.h":
typedef char *xsd__string;
class ns2__FlightInfo
{
   public:
   xsd__string airline;
   xsd__string flightNumber;
   xsd__string altitude;
   xsd__string currentLocation;
   xsd__string equipment;
   xsd__string speed;
};
struct ns1__getFlightInfoResponse {ns2__FlightInfo return_;};
int ns1__getFlightInfo(xsd__string param1, xsd__string param2, struct ns1__getFlightInfoResponse &r);

The response element ns1__getFlightInfoResponse is explicitly declared and it has one field: return_ of type ns2__FlightInfo. Note that return_ has a trailing underscore to avoid a name clash with the return keyword, see Section 10.3 for details on the translation of C++ identifiers to XML element names.
The gSOAP soapcpp2 compiler generates the soap_call_ns1__getFlightInfo proxy. Here is an example fragment of a client application that uses this proxy to request flight information:

struct soap soap;
...
soap_init(&soap);
...
soap_call_ns1__getFlightInfo(&soap, "testvger.objectspace.com/soap/servlet/rpcrouter",
   "urn:galdemo:flighttracker", "UAL", "184", r);
...
struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC","http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns1", "urn:galdemo:flighttracker"},
   {"ns2", "http://galdemo.flighttracker.com"},
   {NULL, NULL}
};

When invoked by a client application, the proxy produces the SOAP request:

POST /soap/servlet/rpcrouter HTTP/1.1
Host: testvger.objectspace.com
Content-Type: text/xml
Content-Length: 634
SOAPAction: "urn:galdemo:flighttracker"

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ns1="urn:galdemo:flighttracker"
   xmlns:ns2="http://galdemo.flighttracker.com"
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getFlightInfo xsi:type="ns1:getFlightInfo">
<param1 xsi:type="xsd:string">UAL</param1>
<param2 xsi:type="xsd:string">184</param2>
</ns1:getFlightInfo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The Flighttracker service responds with:

HTTP/1.1 200 ok
Date: Thu, 30 Aug 2001 00:34:17 GMT
Server: IBM_HTTP_Server/1.3.12.3 Apache/1.3.12 (Win32)
Set-Cookie: sesessionid=2GFVTOGC30D0LGRGU2L4HFA;Path=/
Cache-Control: no-cache="set-cookie,set-cookie2"
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Content-Length: 861
Content-Type: text/xml; charset=utf-8
Content-Language: en

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getFlightInfoResponse xmlns:ns1="urn:galdemo:flighttracker"
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xmlns:ns2="http://galdemo.flighttracker.com" xsi:type="ns2:FlightInfo">
<equipment xsi:type="xsd:string">A320</equipment>
<airline xsi:type="xsd:string">UAL</airline>
<currentLocation xsi:type="xsd:string">188 mi W of Lincoln, NE</currentLocation>
<altitude xsi:type="xsd:string">37000</altitude>
<speed xsi:type="xsd:string">497</speed>
<flightNumber xsi:type="xsd:string">184</flightNumber>
</return>
</ns1:getFlightInfoResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The proxy returns the service response in variable r of type struct ns1__getFlightInfoResponse and this information can be displayed by the client application with the following code fragment:

cout << r.return_.equipment << " flight " << r.return_.airline << r.return_.flightNumber
    << " traveling " << r.return_.speed << " mph " << " at " << r.return_.altitude
    << " ft, is located " << r.return_.currentLocation << endl;

This code displays the service response as:

A320 flight UAL184 traveling 497 mph at 37000 ft, is located 188 mi W of Lincoln, NE

Note: the flight tracker service is no longer available since 9/11/2001. It is kept in the documentation as an example to illustrate the use of structs/classes and response types.

7.1.13  How to Specify Anonymous Parameter Names

The SOAP RPC encoding protocol allows parameter names to be anonymous. That is, the name(s) of the output parameters of a service operation are not strictly required to match a client's view of the parameters names. Also, the input parameter names of a service operation are not strictly required to match a service's view of the parameter names. The gSOAP soapcpp2 compiler can generate stub and skeleton routines that support anonymous parameters. Parameter names are implicitly anonymous by omitting the parameter names in the function prototype of the service operation. For example:

// Contents of "calc.h":
typedef double xsd__double;
int ns2__add(xsd__string, xsd__double, xsd__double &);

To make parameter names explicitly anonymous on the receiving side (client or service), the parameter names should start with an underscore (_) in the function prototype in the header file.
For example:

// Contents of "calc.h":
typedef double xsd__double;
int ns2__add(xsd__string _a, xsd__double _b, xsd__double & _return);

In this example, the _a, _b, and _return are anonymous parameters. As a consequence, the service response to a request made by a client created with gSOAP using this header file specification may include any name for the output parameter in the SOAP payload. The input parameters may also be anonymous. This affects the implementation of Web services in gSOAP and the matching of parameter names by the service.
Caution: when anonymous parameter names are used, the order of the parameters in the function prototype of a service operation is significant.

7.1.14  How to Specify a Method with No Input Parameters

To specify a service operation that has no input parameters, just provide a function prototype with one parameter which is the output parameter (some C/C++ compilers will not compile and complain about an empty struct: use compile flag -DWITH_NOEMPTYSTRUCT to compile the generated code for these cases). This struct is generated by gSOAP to contain the SOAP request message. To fix this, provide one input parameter of type void* (gSOAP can not serialize void* data). For example:

struct ns3__SOAPService
{
   public:
   int ID;
   char *name;
   char *owner;
   char *description;
   char *homepageURL;
   char *endpoint;
   char *SOAPAction;
   char *methodNamespaceURI;
   char *serviceStatus;
   char *methodName;
   char *dateCreated;
   char *downloadURL;
   char *wsdlURL;
   char *instructions;
   char *contactEmail;
   char *serverImplementation;
};
struct ArrayOfSOAPService {struct ns3__SOAPService *__ptr; int __size;};
int ns__getAllSOAPServices(void *_, struct ArrayOfSOAPService &_return);

The ns__getAllSOAPServices method has one void* input parameter which is ignored by the serializer to produce the request message.
Most C/C++ compilers allow empty structs and therefore the void* parameter is not required.

7.1.15  How to Specify a Method with No Output Parameters

To specify a service operation that has no output parameters, just define a function prototype with a response struct that is empty. For example:

enum ns__event { off, on, stand_by };
int ns__signal(enum ns__event in, struct ns__signalResponse { } *out);

Since the response struct is empty, no output parameters are specified.
Some SOAP resources refer to SOAP RPC with empty responses as one way SOAP messaging. However, we refer to one-way massaging by asynchronous explicit send and receive operations as described in Section 7.3. The latter view of one-way SOAP messaging is also in line with Basic Profile 1.0.

7.2  How to Build SOAP/XML Web Services

The gSOAP soapcpp2 compiler generates skeleton routines in C++ source form for each of the service operations specified as function prototypes in the header file processed by the gSOAP soapcpp2 compiler. The skeleton routines can be readily used to implement the service operations in a new SOAP Web service. The compound data types used by the input and output parameters of service operations must be declared in the header file, such as structs, classes, arrays, and pointer-based data structures (graphs) that are used as the data types of the parameters of a service operation. The gSOAP soapcpp2 compiler automatically generates serializers and deserializers for the data types to enable the generated skeleton routines to encode and decode the contents of the parameters of the service operations. The gSOAP soapcpp2 compiler also generates a service operation request dispatcher routine that will serve requests by calling the appropriate skeleton when the SOAP service application is installed as a CGI application on a Web server.

7.2.1  Example

The following example specifies three service operations to be implemented by a new SOAP Web service:

// Contents of file "calc.h":
typedef double xsd__double;
int ns__add(xsd__double a, xsd__double b, xsd__double &result);
int ns__sub(xsd__double a, xsd__double b, xsd__double &result);
int ns__sqrt(xsd__double a, xsd__double &result);

The add and sub methods are intended to add and subtract two double floating point numbers stored in input parameters a and b and should return the result of the operation in the result output parameter. The sqrt method is intended to take the square root of input parameter a and to return the result in the output parameter result. The xsd__double type is recognized by the gSOAP soapcpp2 compiler as the xsd:double XSD Schema data type. The use of typedef is a convenient way to associate primitive C types with primitive XML Schema data types.
To generate the skeleton routines, the gSOAP soapcpp2 compiler is invoked from the command line with:

> soapcpp2 calc.h

The compiler generates the skeleton routines for the add, sub, and sqrt service operations specified in the calc.h header file. The skeleton routines are respectively, soap_serve_ns__add, soap_serve_ns__sub, and soap_serve_ns__sqrt and saved in the file soapServer.cpp. The generated file soapC.cpp contains serializers and deserializers for the skeleton. The compiler also generates a service dispatcher: the soap_serve function handles client requests on the standard input stream and dispatches the service operation requests to the appropriate skeletons to serve the requests. The skeleton in turn calls the service operation implementation function. The function prototype of the service operation implementation function is specified in the header file that is input to the gSOAP soapcpp2 compiler.
Here is an example Calculator service application that uses the generated soap_serve routine to handle client requests:

// Contents of file "calc.cpp":
#include "soapH.h"
#include < math.h > // for sqrt()
int main()
{
   return soap_serve(soap_new()); // use the service operation request dispatcher
}
// Implementation of the "add" service operation:
int ns__add(struct soap *soap, double a, double b, double &result)
{
   result = a + b;
   return SOAP_OK;
}
// Implementation of the "sub" service operation:
int ns__sub(struct soap *soap, double a, double b, double &result)
{
   result = a - b;
   return SOAP_OK;
}
// Implementation of the "sqrt" service operation:
int ns__sqrt(struct soap *soap, double a, double &result)
{
   if (a > = 0)
   {
      result = sqrt(a);
      return SOAP_OK;
   }
   else
      return soap_receiver_fault(soap, "Square root of negative number", "I can only take the square root of a non-negative number");
}
// As always, a namespace mapping table is needed:
struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name"}
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns", "urn:simple-calc"}, // bind "ns" namespace prefix
   {NULL, NULL}
};

Note that the service operations have an extra input parameter which is a pointer to the gSOAP runtime context. The implementation of the service operations MUST return a SOAP error code. The code SOAP_OK denotes success, while SOAP_FAULT denotes an exception with details that can be defined by the user. The exception description can be assigned to the soap->fault->faultstring string and details can be assigned to the soap->fault->detail string. This is SOAP 1.1 specific. SOAP 1.2 requires the soap->fault->SOAP_ENV__Reason and the soap->fault->SOAP_ENV__Detail strings to be assigned. Better is to use the soap_receiver_fault function that allocates a fault struct and sets the SOAP Fault string and details regardless of the SOAP 1.1 or SOAP 1.2 version used. The soap_receiver_fault function returns SOAP_FAULT, i.e. an application-specific fault. The fault exception will be passed on to the client of this service.
This service application can be readily installed as a CGI application. The service description would be:

Endpoint URL: the URL of the CGI application
SOAP action: "" (2 quotes)
Remote method namespace: urn:simple-calc
Remote method name: add
   Input parameters: a of type xsd:double and b of type xsd:double
   Output parameter: result of type xsd:double
Remote method name: sub
   Input parameters: a of type xsd:double and b of type xsd:double
   Output parameter: result of type xsd:double
Remote method name: sqrt
   Input parameter: a of type xsd:double
   Output parameter: result of type xsd:double or a SOAP Fault

The soapcpp2 compile generates a WSDL file for this service, see Section 7.2.9.
Unless the CGI application inspects and checks the environment variable SOAPAction which contains the SOAP action request by a client, the SOAP action is ignored by the CGI application. SOAP actions are specific to the SOAP protocol and provide a means for routing requests and for security reasons (e.g. firewall software can inspect SOAP action headers to grant or deny the SOAP request. Note that this requires the SOAP service to check the SOAP action header as well to match it with the service operation.)
The header file input to the gSOAP soapcpp2 compiler does not need to be modified to generate client stubs for accessing this service. Client applications can be developed by using the same header file as for which the service application was developed. For example, the soap_call_ns__add stub routine is available from the soapClient.cpp file after invoking the gSOAP soapcpp2 compiler on the calc.h header file. As a result, client and service applications can be developed without the need to know the details of the SOAP encoding used.

7.2.2  MSVC++ Builds

  • Win32 builds need winsock2 (MS Visual C++ "ws2_32.lib") To do this in Visual C++ 6.0, go to "Project", "settings", select the "Link" tab (the project file needs to be selected in the file view) and add "ws2_32.lib" to the "Object/library modules" entry.
  • Use files with extension .cpp only (don't mix .c with .cpp).
  • Turn pre-compiled headers off.
  • When creating a new project, you can specify a custom build step to automatically invoke the gSOAP soapcpp2 compiler on a gSOAP header file. In this way you can incrementally build a new service by adding new operations and data types to the header file. To specify a custom build step, select the "Project" menu item "Settings" and select the header file in the File view pane. Select the "Custom Build" tab and enter 'soapcpp2.exe "$(inputPath)"' in the "Command" pane. Enter 'soapStub.h soapH.h soapC.cpp soapClient.cpp soapServer.cpp'. Don't forget to add the soapXYZProxy.h soapXYZObject.h files that are generated for C++ class proxies and server objects named XYZ. Click "OK". Run soapcpp2 once to generate these files (you can simply do this by selecting your header file and select "Compile"). Add the files to your project. Each time you make a change to the header file, the project sources are updated automatically.
  • You may want to use the WinInet interface available in the mod_gsoap directory of the gSOAP package to simplify Internet access and deal with encryption, proxies, and authentication. API instructions are included in the source.
  • For the PocketPC, run the wsdl2h WSDL parser with option -s to prevent the generation of STL code. In addition, time_t serialization is not supported, which means that you should add the following line to typemap.dat indicating a mapping of xsd__dateTime to char*: xsd__dateTime = - char* - char*.

7.2.3  How to Create a Stand-Alone Server

The deployment of a Web service as a CGI application is an easy means to provide your service on the Internet. However, the performance of CGI is not great. Also, gSOAP services can be run as stand-alone services on any port by utilizing the built-in HTTP and TCP/IP stacks. However, the preferred mechanism to deploy a service is through an Apache module or IIS module. These servers and modules are designed for server load balancing and access control.
To create a stand-alone service, only the main routine of the service needs to be modified as follows. Instead of just calling the soap_serve routine, the main routine is changed into:

int main()
{
   struct soap soap;
   int m, s; // master and slave sockets
   soap_init(&soap);
   m = soap_bind(&soap, "machine.genivia.com", 18083, 100);
   if (m < 0)
      soap_print_fault(&soap, stderr);
   else
   {
      fprintf(stderr, "Socket connection successful: master socket = %d\n", m);
      for (int i = 1; ; i++)
      {
         s = soap_accept(&soap);
         if (s < 0)
         {
            soap_print_fault(&soap, stderr);
            break;
         }
         fprintf(stderr, "%d: accepted connection from IP=%d.%d.%d.%d socket=%d", i,
            (soap.ip >> 24)&0xFF, (soap.ip >> 16)&0xFF, (soap.ip >> 8)&0xFF, soap.ip&0xFF, s);
         if (soap_serve(&soap) != SOAP_OK) // process RPC request
            soap_print_fault(&soap, stderr); // print error
         fprintf(stderr, "request served\n");
         soap_destroy(&soap); // clean up class instances
         soap_end(&soap); // clean up everything and close socket
      }
   }
   soap_done(&soap); // close master socket and detach context
}

The soap_serve dispatcher handles one request or multiple requests when HTTP keep-alive is enabled (with the SOAP_IO_KEEPALIVE flag see Section 19.11).
The gSOAP functions that are frequently used for server-side coding are:

Function Description
soap_new() Allocates and Initializes gSOAP context
soap_init(struct soap *soap) Initializes a stack-allocated gSOAP context (required once)
soap_bind(struct soap *soap, char *host, int port, int backlog) Returns master socket (backlog = max. queue size for requests). When host==NULL: host is the machine on which the service runs
soap_accept(struct soap *soap) Returns slave socket
soap_end(struct soap *soap) Clean up deserialized data (except class instances) and temporary data
soap_free_temp(struct soap *soap) Clean up temporary data only
soap_destroy(struct soap *soap) Clean up deserialized class instances (note: this function will be renamed with option -n
soap_done(struct soap *soap) Reset and detach context: close master/slave sockets and remove callbacks
soap_free(struct soap *soap) Detach and deallocate context (soap_new())

The host name in soap_bind may be NULL to indicate that the current host should be used.
The soap.accept_timeout context attribute of the gSOAP runtime context specifies the timeout value for a non-blocking soap_accept(&soap) call. See Section 19.20 for more details on timeout management.
See Section 9.13 for more details on memory management.
A client application connects to this stand-alone service with the endpoint machine.genivia.com:18083. A client may use the http:// prefix. When absent, no HTTP header is sent and no HTTP-based information will be communicated to the service.

7.2.4  How to Create a Multi-Threaded Stand-Alone Service

Stand-alone multi-threading a Web Service is essential when the response times for handling requests by the service are (potentially) long or when keep-alive is enabled, see Section 19.11. In case of long response times, the latencies introduced by the unrelated requests may become prohibitive for a successful deployment of a stand-alone service. When HTTP keep-alive is enabled, a client may not close the socket on time, thereby preventing other clients from connecting.
However, the preferred mechanism to deploy a service is through an Apache module or IIS module. These servers and modules are designed for server load balancing and access control.
The following example illustrates the use of threads to improve the quality of service by handling new requests in separate threads:

#include "soapH.h"
#include < pthread.h >
#define BACKLOG (100) // Max. request backlog
int main(int argc, char **argv)
{
   struct soap soap;
   soap_init(&soap);
   if (argc < 2) // no args: assume this is a CGI application
   {
      soap_serve(&soap); // serve request, one thread, CGI style
      soap_destroy(&soap); // dealloc C++ data
      soap_end(&soap); // dealloc data and clean up
   }
   else 
   {
      soap.send_timeout = 10; // 10 seconds max socket delay
      soap.recv_timeout = 10; // 10 seconds max socket delay
      soap.accept_timeout = 3600; // server stops after 1 hour of inactivity
      soap.max_keep_alive = 100; // max keep-alive sequence
      void *process_request(void*);
      struct soap *tsoap;
      pthread_t tid;
      int port = atoi(argv[1]); // first command-line arg is port
      SOAP_SOCKET m, s;
      m = soap_bind(&soap, NULL, port, BACKLOG);
      if (!soap_valid_socket(m))
         exit(1);
      fprintf(stderr, "Socket connection successful %d\n", m);
      for (;;)
      {
         s = soap_accept(&soap);
         if (!soap_valid_socket(s))
         {
            if (soap.errnum)
            {
               soap_print_fault(&soap, stderr);
               exit(1);
            }
            fprintf(stderr, "server timed out\n");
            break;
         }
         fprintf(stderr, "Thread %d accepts socket %d connection from IP %d.%d.%d.%d\n", i, s, (soap.ip >> 24)&0xFF, (soap.ip >> 16)&0xFF, (soap.ip >> 8)&0xFF, soap.ip&0xFF);
         tsoap = soap_copy(&soap); // make a safe copy
         if (!tsoap)
            break;
         pthread_create(&tid, NULL, (void*(*)(void*))process_request, (void*)tsoap);
      }
   }
   soap_done(&soap); // detach soap struct
   return 0;
}
void *process_request(void *soap)
{
   pthread_detach(pthread_self());
   soap_serve((struct soap*)soap);
   soap_destroy((struct soap*)soap); // dealloc C++ data
   soap_end((struct soap*)soap); // dealloc data and clean up
   soap_done((struct soap*)soap); // detach soap struct
   free(soap);
   return NULL;
}

Note: the code does not wait for threads to join the main thread upon program termination.
The soap_serve dispatcher handles one request or multiple requests when HTTP keep-alive is set with SOAP_IO_KEEPALIVE. The soap.max_keep_alive value can be set to the maximum keep-alive calls allowed, which is important to avoid a client from holding a thread indefinitely. The send and receive timeouts are set to avoid (intentionally) slow clients from holding a socket connection too long. The accept timeout is used to let the server terminate automatically after a period of inactivity.
The following example uses a pool of servers to limit the machine's resource utilization:

#include "soapH.h"
#include < pthread.h >
#define BACKLOG (100) // Max. request backlog
#define MAX_THR (10) // Max. threads to serve requests
int main(int argc, char **argv)
{
   struct soap soap;
   soap_init(&soap);
   if (argc < 2) // no args: assume this is a CGI application
   {
      soap_serve(&soap); // serve request, one thread, CGI style
      soap_destroy(&soap); // dealloc C++ data
      soap_end(&soap); // dealloc data and clean up
   }
   else 
   {
      struct soap *soap_thr[MAX_THR]; // each thread needs a runtime context
      pthread_t tid[MAX_THR];
      int port = atoi(argv[1]); // first command-line arg is port
      SOAP_SOCKET m, s;
      int i;
      m = soap_bind(&soap, NULL, port, BACKLOG);
      if (!soap_valid_socket(m))
         exit(1);
      fprintf(stderr, "Socket connection successful %d\n", m);
      for (i = 0; i < MAX_THR; i++)
         soap_thr[i] = NULL;
      for (;;)
      {
         for (i = 0; i < MAX_THR; i++)
         {
            s = soap_accept(&soap);
            if (!soap_valid_socket(s))
            {
               if (soap.errnum)
               {
                  soap_print_fault(&soap, stderr);
                  continue; // retry
               }
               else
               {
                  fprintf(stderr, "Server timed out\n");
                  break;
               }
            }
            fprintf(stderr, "Thread %d accepts socket %d connection from IP %d.%d.%d.%d\n", i, s, (soap.ip >> 24)&0xFF, (soap.ip >> 16)&0xFF, (soap.ip >> 8)&0xFF, soap.ip&0xFF);
            if (!soap_thr[i]) // first time around
            {
               soap_thr[i] = soap_copy(&soap);
               if (!soap_thr[i])
               exit(1); // could not allocate
            }
            else// recycle soap context
            {
               pthread_join(tid[i], NULL);
               fprintf(stderr, "Thread %d completed\n", i);
               soap_destroy(soap_thr[i]); // deallocate C++ data of old thread
               soap_end(soap_thr[i]); // deallocate data of old thread
            }
            soap_thr[i]->socket = s; // new socket fd
            pthread_create(&tid[i], NULL, (void*(*)(void*))soap_serve, (void*)soap_thr[i]);
         }
      }
      for (i = 0; i < MAX_THR; i++)
         if (soap_thr[i])
         {
            soap_done(soap_thr[i]); // detach context
            free(soap_thr[i]); // free up
         }
   }
   return 0;
}

The following functions can be used to setup a gSOAP runtime context (struct soap):

Function Description
soap_init(struct soap *soap) Initializes a runtime context (required only once)
struct soap *soap_new() Allocates, initializes, and returns a pointer to a runtime context
struct soap *soap_copy(struct soap *soap) Allocates a new runtime context and copies a context (deep copy, i.e. the new context does not share any data with the other context)
the argument context such that the new context does not share data with the argument context
soap_done(struct soap *soap) Reset, close communications, and remove callbacks

A new context is initiated for each thread to guarantee exclusive access to runtime contexts.
For clean termination of the server, the master socket can be closed and callbacks removed with soap_done(struct soap *soap).
The advantage of the code shown above is that the machine cannot be overloaded with requests, since the number of active services is limited. However, threads are still started and terminated. This overhead can be eliminated using a queue of requests (open sockets) as is shown in the code below.


#include "soapH.h"
#include < pthread.h >
#define BACKLOG (100) // Max. request backlog
#define MAX_THR (10) // Size of thread pool
#define MAX_QUEUE (1000) // Max. size of request queue
SOAP_SOCKET queue[MAX_QUEUE]; // The global request queue of sockets
int head = 0, tail = 0; // Queue head and tail
void *process_queue(void*);
int enqueue(SOAP_SOCKET);
SOAP_SOCKET dequeue();
pthread_mutex_t queue_cs;
pthread_cond_t queue_cv;
int main(int argc, char **argv)
{
   struct soap soap;
   soap_init(&soap);
   if (argc < 2) // no args: assume this is a CGI application
   {
      soap_serve(&soap); // serve request, one thread, CGI style
      soap_destroy(&soap); // dealloc C++ data
      soap_end(&soap); // dealloc data and clean up
   }
   else
   {
      struct soap *soap_thr[MAX_THR]; // each thread needs a runtime context
      pthread_t tid[MAX_THR];
      int port = atoi(argv[1]); // first command-line arg is port
      SOAP_SOCKET m, s;
      int i;
      m = soap_bind(&soap, NULL, port, BACKLOG);
      if (!soap_valid_socket(m))
         exit(1);
      fprintf(stderr, "Socket connection successful %d\n", m);
      pthread_mutex_init(&queue_cs, NULL);
      pthread_cond_init(&queue_cv, NULL);
      for (i = 0; i < MAX_THR; i++)
      {
         soap_thr[i] = soap_copy(&soap);
         fprintf(stderr, "Starting thread %d\n", i);
         pthread_create(&tid[i], NULL, (void*(*)(void*))process_queue, (void*)soap_thr[i]);
      }
      for (;;)
      {
         s = soap_accept(&soap);
         if (!soap_valid_socket(s))
         {
            if (soap.errnum)
            {
               soap_print_fault(&soap, stderr);
               continue; // retry
            }
            else
            {
               fprintf(stderr, "Server timed out\n");
               break;
            }
         }
         fprintf(stderr, "Thread %d accepts socket %d connection from IP %d.%d.%d.%d\n", i, s, (soap.ip >> 24)&0xFF, (soap.ip >> 16)&0xFF, (soap.ip >> 8)&0xFF, soap.ip&0xFF);
         while (enqueue(s) == SOAP_EOM)
            sleep(1);
      }
      for (i = 0; i < MAX_THR; i++)
      {
         while (enqueue(SOAP_INVALID_SOCKET) == SOAP_EOM)
            sleep(1);
      }
      for (i = 0; i < MAX_THR; i++)
      {
         fprintf(stderr, "Waiting for thread %d to terminate... ", i);
         pthread_join(tid[i], NULL);
         fprintf(stderr, "terminated\n");
         soap_done(soap_thr[i]);
         free(soap_thr[i]);
      }
      pthread_mutex_destroy(&queue_cs);
      pthread_cond_destroy(&queue_cv);
   }
   soap_done(&soap);
   return 0;
}
void *process_queue(void *soap)
{
   struct soap *tsoap = (struct soap*)soap;
   for (;;)
   {
      tsoap->socket = dequeue();
      if (!soap_valid_socket(tsoap->socket))
         break;
      soap_serve(tsoap);
      soap_destroy(tsoap);
      soap_end(tsoap);
      fprintf(stderr, "served\n");
   }
   return NULL;
}
int enqueue(SOAP_SOCKET sock)
{
   int status = SOAP_OK;
   int next;
   pthread_mutex_lock(&queue_cs);
   next = tail + 1;
   if (next >= MAX_QUEUE)
      next = 0;
   if (next == head)
      status = SOAP_EOM;
   else
   {
      queue[tail] = sock;
      tail = next;
      pthread_cond_signal(&queue_cv);
   }
   pthread_mutex_unlock(&queue_cs);
   return status;
}
SOAP_SOCKET dequeue()
{
   SOAP_SOCKET sock;
   pthread_mutex_lock(&queue_cs);
   while (head == tail)
      pthread_cond_wait(&queue_cv, &queue_cs);
   sock = queue[head++];
   if (head >= MAX_QUEUE)
      head = 0;
   pthread_mutex_unlock(&queue_cs);
   return sock;
}

Note: the plugin/threads.h and plugin/threads.c code can be used for a portable implementation. Instead of POSIX calls, use MUTEX_LOCK, MUTEX_UNLOCK, and COND_WAIT. These are wrappers for Win API calls or POSIX calls.

7.2.5  How to Pass Application Data to Service Methods

The void *soap.user field can be used to pass application data to service methods. This field should be set before the soap_serve() call. The service method can access this field to use the application-dependent data. The following example shows how a non-static database handle is initialized and passed to the service methods:


{ ...
   struct soap soap;
   database_handle_type database_handle;
   soap_init(&soap);    soap.user = (void*)database_handle;
   ...
   soap_serve(&soap); // call the service operation dispatcher to handle request
   ...
}
int ns__myMethod(struct soap *soap, ...)
{ ...
   fetch((database_handle_type*)soap->user);
// get data    ...
   return SOAP_OK;
}

Another way to pass application data around in a more organized way is accomplished with plugins, see Section 19.41.

7.2.6  Web Service Implementation Aspects

The same client header file specification issues apply to the specification and implementation of a SOAP Web service. Refer to
  • 7.1.2 for namespace considerations.
  • 7.1.5 for an explanation on how to change the encoding of the primitive types.
  • 7.1.7 for a discussion on how the response element format can be controlled.
  • 7.1.9 for details on how to pass multiple output parameters from a service operation.
  • 7.1.11 for passing complex data types as output parameters.
  • 7.1.13 for anonymizing the input and output parameter names.

7.2.7  How to Generate C++ Server Object Classes

Server object classes for C++ server applications are automatically generated by the gSOAP soapcpp2 compiler.
There are two modes for generating classes. Use soapcpp2 option -i (or -j) to generate improved class definitions where the class' member functions are the service methods.
The older examples (without the use of soapcpp2 option -i and -j) use a C-like approach with globally defined service methods, which is illustated here with a calculator example:


// Content of file "calc.h":
//gsoap ns service name: Calculator
//gsoap ns service protocol: SOAP
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service location: http://www.cs.fsu.edu/~engelen/calc.cgi
//gsoap ns schema namespace: urn:calc
//gsoap ns service method-action: add ""
int ns__add(double a, double b, double &result);
int ns__sub(double a, double b, double &result);
int ns__mul(double a, double b, double &result);
int ns__div(double a, double b, double &result);

The first three directives provide the service name which is used to name the service class, the service location (endpoint), and the schema. The fourth directive defines the optional SOAPAction for the method, which is a string associated with SOAP 1.1 operations. Compilation of this header file with soapcpp2 -i creates a new file soapCalculatorObject.h with the following contents:

#include "soapH.h"
class CalculatorObject : public soap
{ public:
   Calculator() { ... };
   ~Calculator() { ... };
   int serve() { return soap_serve(this); };
};

This generated server object class can be included into a server application together with the generated namespace table as shown in this example:

#include "soapCalculatorObject.h" // get server object
#include "Calculator.nsmap" // get namespace bindings
int main()
{
   CalculatorObject c;
   return c.serve(); // calls soap_serve to serve as CGI application (using stdin/out)
}
// C-style global functions implement server operations (soapcpp2 w/o option -i)
int ns__add(struct soap *soap, double a, double b, double &result)
{
   result = a + b;
   return SOAP_OK;
}
... sub(), mul(), and div() implementations ...

You can use soapcpp2 option -n together with -p to create a local namespace table to avoid link conflict when you need to combine multiple tables and/or multiple servers, see also Sections 9.1 and 19.39, and you can use a C++ code namespace to create a namespace qualified server object class, see Section 19.38.
The example above serves requests over stdin/out. Use the bind and accept calls to create a stand-alone server to service inbound requests over sockets, see also 7.2.3.
A better alternative is to use the soapcpp2 option -i. The C++ proxy and server objects are derived from the soap context struct, which simplifies the proxy invocation and service operation implementations.
Compilation of the above header file with the gSOAP compiler soapcpp2 option -i creates new files soapCalculatorService.h and soapCalculatorService.cpp (rather than the C-style soapServer.cpp).
This generated server object class can be included into a server application together with the generated namespace table as shown in this example:

#include "soapCalculatorService.h" // get server object
#include "Calculator.nsmap" // get namespace bindings
int main()
{
   soapCalculatorService c;
   return c.serve(); // calls soap_serve to serve as CGI application (using stdin/out)
}
// The 'add' service method (soapcpp2 w/ option -i)
int soapCalculatorService::add(double a, double b, double &result)
{
   result = a + b;
   return SOAP_OK;
}
... sub(), mul(), and div() implementations ...

Note that the service operation does not need a prefix (ns__) and there is no soap context struct passed to the service operation since the service object itself is the context (it is derived from the soap struct).

7.2.8  How to Chain C++ Server Classes to Accept Messages on the Same Port

When combining multiple services into one application, you can run wsdl2h on multiple WSDLs to generate the single all-inclusive service definitions header file. This header file is then processed with soapcpp2, for example to generate server class objects with option -i and -q to separate the service codes with C++ namespaces, see Section 19.38.
This works well, but the problem is that we end up with multiple classes, each for a collection of service operations the class is supposed to implement. But what if we need to provide one endpoint port for all services and operations? In this case invoking the server object's serve method is not sufficient, since only one service can accept requests while we want multiple services to listen to the same port.
The approach is to chain the service dispatchers, as shown below:

#include "AbcABCService.h"
#include "UvwUVWService.h"
#include "XyzXYZService.h"
#include "envH.h" // include this file last, if this file is needed

Abc::soapABCService abc; // generated with soapcpp2 -i -S -qAbc
Uvw::soapUVWService uvw; // generated with soapcpp2 -i -S -qUvw
Xyz::soapXYZService xyz; // generated with soapcpp2 -i -S -qXyz
...
abc.bind(NULL, 8080, 100);
...
abc.accept();
// when using SSL: ssl_accept(&abc);
...
if (soap_begin_serve(&abc)) // available in 2.8.2 and later
   abc.soap_stream_fault(std::cerr);
else if (abc.dispatch() == SOAP_NO_METHOD)
{
   soap_copy_stream(&uvw, &abc);
   soap_free_stream(&abc); // abc no longer uses this stream
   if (uvw.dispatch() == SOAP_NO_METHOD)
   {
      soap_copy_stream(&xyz, &uvw);
      soap_free_stream(&uvw); // uvw no longer uses this stream
      if (xyz.dispatch())
      {
         soap_send_fault(&xyz); // send fault to client
         xyz.soap_stream_fault(std::cerr);
      }
      xyz.destroy();
   }
   else
   {
      soap_send_fault(&uvw); // send fault to client
      uvw.soap_stream_fault(std::cerr);
   }
   uvw.destroy();
}
else
   abc.soap_stream_fault(std::cerr);
abc.destroy();
...

The dispatch method parses the SOAP/XML request and invokes the service operations, unless there is no matching operation and SOAP_NO_METHOD is returned. The soap_copy_stream ensures that the service object uses the currently open socket. The copied streams are freed with soap_free_stream. Do not enable keep-alive support, as the socket may stay open indefinitely afterwards as a consequence. Also, the dispatch method does not send a fault to the client, which has to be explicitly done with the soap_send_fault operation when an error occurs.
In this way, multiple services can be chained to accept messages on the same port. This approach also works with SSL for HTTPS services.
However, this approach is not recommended for certain plugins, because plugins must be registered with all service objects and some plugins require state information to be used across the service objects, which will add significantly to the complexity.
When plugin complications arise, it is best to have all services share the same context. This means that soapcpp2 option -j should be used instead of option -i. Each service class has a pointer member to a soap struct context. This member pointer should point to the same soap context.
With option -j and -q the code to chain the services is as follows, based on a single struct soap engine context:

#include "AbcABCService.h"
#include "UvwUVWService.h"
#include "XyzXYZService.h"
#include "envH.h" // include this file last, if it is needed

struct soap *soap = soap_new();
Abc::soapABCService abc(soap); // generated with soapcpp2 -j -S -qAbc
Uvw::soapUVWService uvw(soap); // generated with soapcpp2 -j -S -qUvw
Xyz::soapXYZService xyz(soap); // generated with soapcpp2 -j -S -qXyz

soap_bind(soap, NULL, 8080, 100);
soap_accept(soap);
if (soap_begin_serve(soap))
   ... error
else if (abc.dispatch() == SOAP_NO_METHOD)
{
   if (uvw.dispatch() == SOAP_NO_METHOD)
   {
      if (xyz.dispatch() == SOAP_NO_METHOD)
         ... error
   }
}
soap_destroy(soap);
soap_end(soap);
soap_free(soap); // only safe when abc, uvw, xyz are also deleted

7.2.9  How to Generate WSDL Service Descriptions

The gSOAP stub and skeleton compiler soapcpp2 generates WSDL (Web Service Description Language) service descriptions and XML Schema files when processing a header file. The tool produces one WSDL file for a set of service operations, which must be provided. The names of the function prototypes of the service operations must use the same namespace prefix and the namespace prefix is used to name the WSDL file. If multiple namespace prefixes are used to define service operations, multiple WSDL files will be created and each file describes the set of service operations belonging to a namespace prefix.
In addition to the generation of the ns.wsdl file, a file with a namespace mapping table is generated by the gSOAP compiler. An example mapping table is shown below:

struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance", \"http://www.w3.org/*/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema", \"http://www.w3.org/*/XMLSchema"},
   {"ns", "http://tempuri.org"},
   {NULL, NULL}
};

This file can be incorporated in the client/service application, see Section 10.4 for details on namespace mapping tables.
To deploy a Web service, copy the compiled CGI service application to the designated CGI directory of your Web server. Make sure the proper file permissions are set (chmod 755 calc.cgi for Unix/Linux). You can then publish the WSDL file on the Web by placing it in the appropriate Web server directory.
The gSOAP soapcpp2 compiler also generates XML Schema files for all C/C++ complex types (e.g. structs and classes) when declared with a namespace prefix. These files are named ns.xsd, where ns is the namespace prefix used in the declaration of the complex type. The XML Schema files do not have to be published as the WSDL file already contains the appropriate XML Schema definitions.
To customize the WSDL output, it is essential to use //gsoap directives to declare the service name, the endpoint port, and namespace:

//gsoap ns service name: example
//gsoap ns servire port: http://www.mydomain.com/example
//gsoap ns service namespace: urn:example

These are minimal settings. More details and settings for the service operations should be declared as well. See Section 19.2 for more details.

7.2.10  Example

For example, suppose the following methods are defined in the header file:

typedef double xsd__double;
int ns__add(xsd__double a, xsd__double b, xsd__double &result);
int ns__sub(xsd__double a, xsd__double b, xsd__double &result);
int ns__sqrt(xsd__double a, xsd__double &result);

Then, one WSDL file will be created with the file name ns.wsdl that describes all three service operations:

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="Service"
   xmlns="http://schemas.xmlsoap.org/wsdl/"
   targetNamespace="http://location/Service.wsdl"
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/"
   xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
   xmlns:tns="http://location/Service.wsdl"
   xmlns:ns="http://tempuri.org">
<types>
   <schema
      xmlns="http://www.w3.org/2000/10/XMLSchema"
      targetNamespace="http://tempuri.org"
      xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
      <complexType name="addResponse">
         <all>
            <element name="result" type="double" minOccurs="0" maxOccurs="1"/>
         </all>
         <anyAttribute namespace="##other"/>
      </complexType>
      <complexType name="subResponse">
         <all>
            <element name="result" type="double" minOccurs="0" maxOccurs="1"/>
         </all>
         <anyAttribute namespace="##other"/>
      </complexType>
      <complexType name="sqrtResponse">
         <all>
            <element name="result" type="double" minOccurs="0" maxOccurs="1"/>
         </all>
         <anyAttribute namespace="##other"/>
      </complexType>
   </schema>
</types>
<message name="addRequest">
   <part name="a" type="xsd:double"/>
   <part name="b" type="xsd:double"/>
</message>
<message name="addResponse">
   <part name="result" type="xsd:double"/>
</message>
<message name="subRequest">
   <part name="a" type="xsd:double"/>
   <part name="b" type="xsd:double"/>
</message>
<message name="subResponse">
   <part name="result" type="xsd:double"/>
</message>
<message name="sqrtRequest">
   <part name="a" type="xsd:double"/>
</message>
<message name="sqrtResponse">
   <part name="result" type="xsd:double"/>
</message>
<portType name="ServicePortType">
   <operation name="add">
      <input message="tns:addRequest"/>
      <output message="tns:addResponse"/>
   </operation>
   <operation name="sub">
      <input message="tns:subRequest"/>
      <output message="tns:subResponse"/>
   </operation>
   <operation name="sqrt">
      <input message="tns:sqrtRequest"/>
      <output message="tns:sqrtResponse"/>
   </operation>
</portType>
<binding name="ServiceBinding" type="tns:ServicePortType">
   <SOAP:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
   <operation name="add">
      <SOAP:operation soapAction="http://tempuri.org#add"/>
      <input>
         <SOAP:body use="encoded" namespace="http://tempuri.org"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
         <SOAP:body use="encoded" namespace="http://tempuri.org"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
   </operation>
   <operation name="sub">
      <SOAP:operation soapAction="http://tempuri.org#sub"/>
      <input>
         <SOAP:body use="encoded" namespace="http://tempuri.org"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
         <SOAP:body use="encoded" namespace="http://tempuri.org"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
   </operation>
   <operation name="sqrt">
      <SOAP:operation soapAction="http://tempuri.org#sqrt"/>
      <input>
         <SOAP:body use="encoded" namespace="http://tempuri.org"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
         <SOAP:body use="encoded" namespace="http://tempuri.org"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
   </operation>
</binding>
<service name="Service">
   <port name="ServicePort" binding="tns:ServiceBinding">
      <SOAP:address location="http://location/Service.cgi"/>
   </port>
</service>
</definitions>

The above uses all default settings for the service name, port, and namespace which should be set in the header file with //gsoap directives (Section 19.2).

7.2.11  How to Use Client Functionalities Within a Service

A gSOAP service implemented with CGI may make direct client calls to other services from within its service operations, without setting up a new context. A stand-alone service application must setup a new soap struct context, e.g. using soap_copy and delete it after the call.
The server-side client call is best illustrated with an example. The following example is a more sophisticated example that combines the functionality of two Web services into one new SOAP Web service. The service provides a currency-converted stock quote. To serve a request, the service in turn requests the stock quote and the currency-exchange rate from two XMethods services (these services are no longer available by XMethods, but are used here as an example).
In addition to being a client of two XMethods services, this service application can also be used as a client of itself to test the implementation. As a client invoked from the command-line, it will return a currency-converted stock quote by connecting to a copy of itself installed as a CGI application on the Web to retrieve the quote after which it will print the quote on the terminal.
The header file input to the gSOAP soapcpp2 compiler is given below. The example is for illustrative purposes only (the XMethods services are not operational):

// Contents of file "quotex.h":
int ns1__getQuote(char *symbol, float &result); // XMethods delayed stock quote service service operation
int ns2__getRate(char *country1, char *country2, float &result); // XMethods currency-exchange service service operation
int ns3__getQuote(char *symbol, char *country, float &result); // the new currency-converted stock quote service

The quotex.cpp client/service application source is:

// Contents of file "quotex.cpp":
#include "soapH.h" // include generated proxy and SOAP support
int main(int argc, char **argv)
{
   struct soap soap;
   float q;
   soap_init(&soap);
   if (argc < = 2)
      soap_serve(&soap);
   else if (soap_call_ns3__getQuote(&soap, "http://www.cs.fsu.edu/\symbol{126}engelen/quotex.cgi", "", argv[1], argv[2], q))
      soap_print_fault(&soap, stderr);
   else 
      printf("\nCompany %s: %f (%s)\n", argv[1], q, argv[2]);
   return 0;
}
int ns3__getQuote(struct soap *soap, char *symbol, char *country, float &result)
{
   float q, r;
   int socket = soap->socket; // save socket (stand-alone service only, does not support keep-alive)
   if (soap_call_ns1__getQuote(soap, "http://services.xmethods.net/soap", "", symbol, &q) == 0 &&
      soap_call_ns2__getRate(soap, "http://services.xmethods.net/soap", NULL, "us", country, &r) == 0)
   {
      result = q*r;
      soap->socket = socket;
      return SOAP_OK;
   }
   soap->socket = socket;
   return SOAP_FAULT; // pass soap fault messages on to the client of this app
}
/* Since this app is a combined client-server, it is put together with
* one header file that describes all service operations. However, as a consequence we
* have to implement the methods that are not ours. Since these implementations are
* never called (this code is client-side), we can make them dummies as below.
*/
int ns1__getQuote(struct soap *soap, char *symbol, float &result)
{ return SOAP_NO_METHOD; } // dummy: will never be called
int ns2__getRate(struct soap *soap, char *country1, char *country2, float &result)
{ return SOAP_NO_METHOD; } // dummy: will never be called

struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"},
   {"ns1", "urn:xmethods-delayed-quotes"},
   {"ns2", "urn:xmethods-CurrencyExchange"},
   {"ns3", "urn:quotex"},
   {NULL, NULL}
};

To compile:

> soapcpp2 quotex.h
> c++ -o quotex.cgi quotex.cpp soapC.cpp soapClient.cpp soapServer.cpp stdsoap2.cpp -lsocket -lxnet -lnsl

Note: under Linux and Mac OS X you can often omit the -l libraries.
The quotex.cgi executable is installed as a CGI application on the Web by copying it in the designated directory specific to your Web server. After this, the executable can also serve to test the service. For example

> quotex.cgi IBM uk

returns the quote of IBM in uk pounds by communicating the request and response quote from the CGI application. See http://xmethods.com/detail.html?id=5 for details on the currency abbreviations.
When combining clients and service functionalities, it is required to use one header file input to the compiler. As a consequence, however, stubs and skeletons are available for all service operations, while the client part will only use the stubs and the service part will use the skeletons. Thus, dummy implementations of the unused service operations need to be given which are never called.
Three WSDL files are created by gSOAP: ns1.wsdl, ns2.wsdl, and ns3.wsdl. Only the ns3.wsdl file is required to be published as it contains the description of the combined service, while the others are generated as a side-effect (and in case you want to develop these separate services).

7.3  Asynchronous One-Way Message Passing

SOAP RPC client-server interaction is synchronous: the client blocks until the server responds to the request. gSOAP also supports asynchronous one-way message passing and the interoperable synchronous one-way message passing over HTTP. The two styles are similar, but only the latter is interoperable and is compliant to Basic Profile 1.0. The interoperable synchronous one-way message passing style over HTTP is discussed in Section 7.4 below.
SOAP messaging routines are declared as function prototypes, just like service operations for SOAP RPC. However, the output parameter is a void type to indicate the absence of a return value.
For example, the following header file specifies an event message for SOAP messaging:

int ns__event(int eventNo, void);

The gSOAP soapcpp2 tool generates the following functions in soapClient.cpp:

int soap_send_ns__event(struct soap *soap, const char URL, const char action, int event);
int soap_recv_ns__event(struct soap *soap, struct ns__event *dummy);

The soap_send_ns__event function transmits the message to the destination URL by opening a socket and sending the SOAP encoded message. The socket will remain open after the send and has to be closed with soap_closesock(). The open socket connection can also be used to obtain a service response, e.g. with a soap_recv function call.
The soap_recv_ns__event function waits for a SOAP message on the currently open socket (soap.socket) and fills the struct ns__event with the ns__event parameters (e.g. int eventNo). The struct ns__event is automatically created by gSOAP and is a mirror image of the ns__event parameters:

struct ns__event
{ int eventNo;
}

The gSOAP generated soapServer.cpp code includes a skeleton routine to accept the message. (The skeleton routine does not respond with a SOAP response message.)

int soap_serve_ns__event(struct soap *soap);

The skeleton routine calls the user-implemented ns__event(struct soap *soap, int eventNo) routine (note the absence of the void parameter!).
As usual, the skeleton will be automatically called by the service operation request dispatcher that handles both the service operation requests (RPCs) and messages:

int main()
{ soap_serve(soap_new());
}
int ns__event(struct soap *soap, int eventNo)
{
   ... // handle event
   return SOAP_OK;
}

7.4  Implementing Synchronous One-Way Message Passing over HTTP

One-way SOAP message passing over HTTP as defined by the SOAP specification and Basic Profile 1.0 is synchrounous, meaning that the server must respond with an HTTP OK header (or HTTP 202 Accepted) and an empty body. To implement synchrounous one-way messaging, the same setup for asynchrounous one-way messaing discussed in Section 7.3 is used, but with one simple addition at the client and server side for HTTP transfer.
At the server side, we have to return an empty HTTP OK response. Normally with one-way messaging the gSOAP engine closes the socket when the service operation is finished, which is not desirable for synchronous one-way message exchanges over HTTP: an HTTP response should be send. This is accomplished as follows. For each one-way operation implemented in C/C++, we replace the return SOAP_OK with:

int ns__event(struct soap *soap, int eventNo)
{
   ... // handle event
   return soap_send_empty_response(soap, SOAP_OK); // SOAP_OK: return HTTP 202 ACCEPTED
}

At the client side, the empty response header must be parsed as follows:

if (soap_send_ns__event(soap, eventNo) != SOAP_OK
   || soap_recv_empty_response(soap) != SOAP_OK)
   soap_print_fault(soap, stderr);
...

The synchronous (and asynchronous) one-way messaging supports HTTP keep-alive and chunking.
Note: soap_send_empty_response returns the error code SOAP_STOP to force the engine to stop producing a response message after the service operation completed, which allows soap_send_empty_response to be used with any service operation that should return HTTP 202.

7.5  How to Use the SOAP Serializers and Deserializers to Save and Load Application Data using XML Data Bindings

The gSOAP XML databindings for C and C++ allow a seamless integration of XML in C and C++ applications. Data can be serialized in XML and vice versa. WSDL and XML schema files can be converted to C or C++ definitions. C and C++ definitions can be translated to WSDL and schemas to support legacy ANSI C applications for example.
Learn more about XML data binding for C and C++ with gSOAP by visiting the Developer Center https://www.genivia.com/dev.html and the new and most up-to-date XML data binding documentation https://www.genivia.com/doc/databinding/html.

7.5.1  Mapping XML Schema to C/C++ with wsdl2h

Command:

> wsdl2h [options] XSD and WSDL files ...

The WSDL 1.1 and 2.0 standards are supported. If you have trouble with WSDL 2.0 please contact the author. The entire XML schema 1.1 standard is supported, except XPath expressions and assertions. This covers all of the following schema components with their optional [ attributes ] shown:

<xs:any [minOccurs, maxOccurs] >
<xs:anyAttribute>
<xs:all>
<xs:choice [minOccurs, maxOccurs] >
<xs:sequence [minOccurs, maxOccurs] >
<xs:group [name, ref] >
<xs:attributeGroup [name, ref] >
<xs:attribute [name, ref, type, use, default, fixed, form, wsdl:arrayType] >
<xs:element [name, ref, type, default, fixed, form, nillable, abstract,
substitutionGroup, minOccurs, maxOccurs] >
<xs:simpleType [name] >
<xs:complexType [name, abstract, mixed] >

The supported facets are:

<xs:enumeration>
<xs:simpleContent>
<xs:complexContent>
<xs:list>
<xs:extension>
<xs:restriction>
<xs:length>
<xs:minLength>
<xs:maxLength>
<xs:minInclusive>    validated only for integer types
<xs:maxInclusive>    validated only for integer types
<xs:minExclusive>    validated only for integer types
<xs:maxExclusive>    validated only for integer types
<xs:precision>    maps to float/double with C formatted output
<xs:scale>    maps to float/double with C formatted output
<xs:totalDigits>    maps to float/double with C formatted output
<xs:fractionDigits>    maps to float/double with C formatted output
<xs:pattern>    not automatically validated, see note below
<xs:union>    maps to string, content not validated

Other:

<xs:import>
<xs:include>
<xs:redefine>
<xs:override>
<xs:annotation>

All primitive XSD types are supported. A subset of the default type mappings is shown below. User-defined mappings can be added to typemap.dat to let wsdl2h (re)map XSD types to C/C++ types.

xsd:string    maps to string (char*,wchar_t*,std::string,std::wstring)
xsd:boolean    maps to bool (C++) or enum xsd__boolean (C)
xsd:float    maps to float
xsd:double    maps to double
xsd:decimal    maps to string, or use "#import "custom/decimal.h"
xsd:precisionDecimal    maps to string
xsd:duration    maps to string, or use "#import "custom/duration.h"
xsd:dateTime    maps to time_t, or use "#import "custom/struct_tm.h"
xsd:time    maps to string
xsd:date    maps to string
xsd:gYearMonth    maps to string
xsd:gYear    maps to string
xsd:gMonth    maps to string
xsd:hexBinary    maps to struct xsd__hexBinary
xsd:base64Bianry    maps to struct xsd__base64Binary
xsd:anyURI    maps to string
xsd:anyType    maps to an XML string or DOM with wsdl2h -d
xsd:anyAtomicType    maps to string
xsd:anySimpleType    maps to string
xsd:QName    maps to _QName (string normalization rules apply)
xsd:NOTATION    maps to string

Note: automatic validation of xs:pattern restricted content is possible with a hook to a regex pattern matching engine, see the fsvalidate and fwvalidate callbacks in Section 19.7.
Note: string targets are defined in the typemap.dat file used by wsdl2h to map XSD types. This allows the use of char*, wsha_t*, std::string, and std::wstring string types for all XSD types mapped to strings.
All non-primitive XSD types are supported (with the default mapping shown):

xsd:normalizedString    maps to string
xsd:token    maps to string
xsd:language    maps to string
xsd:IDREFS    maps to string
xsd:ENTITIES    maps to string
xsd:NMTOKEN    maps to string
xsd:NMTOKENS    maps to string
xsd:Name    maps to string
xsd:NCName    maps to string
xsd:ID    maps to string
xsd:IDREF    maps to string
xsd:ENTITY    maps to string
xsd:integer    maps to string
xsd:nonPositiveInteger    maps to string
xsd:negativeInteger    maps to string
xsd:long    maps to LONG64
xsd:int    maps to int
xsd:short    maps to short
xsd:byte    maps to byte
xsd:nonNegativeInteger    maps to string
xsd:unsignedLong    maps to ULONG64
xsd:unsignedInt    maps to unsigned int
xsd:unsignedShort    maps to unsigned short
xsd:unsignedByte    maps to unsigned byte
xsd:positiveInteger    maps to string
xsd:yearMonthDuration    maps to string
xsd:dayTimeDuration    maps to string
xsd:dateTimeStamp    maps to string

There are several initialization flags to control XML serialization at runtime:
  • XML validation is more stricly enforced with SOAP_XML_STRICT.
  • XML namespaces are supported, unless disabled with SOAP_XML_IGNORENS.
  • XML exclusive canonicalization is enabled with SOAP_XML_CANONICAL.
  • XML default xmlns="..." namespace bindings are enforced with SOAP_XML_DEFAULTNS.
  • XML is indented for enhanced readability with SOAP_XML_INDENT.
  • XML xsi:nil for NULL elements is serialized with SOAP_XML_NIL.
Strict validation catches all structural XML validation violations. For primitive type values, it depends on the C/C++ target type that XSD types are mapped to, to catch primitive value content pattern violations. Primitive value content validation is performed on non-string types such as numerical and time values. String values are not automatocally validated, unless a xs:pattern is given and the fsvalidate and fwvalidate callbacks are implemented by the user. Alternatively, deserialized string content can be checked at the application level.
To obtain C and/or C++ type definitions for XML schema components, run wsdl2h on the schemas to generate a header file. This header file defines the C/C++ type representations of the XML schema components. The header file is then processed by the soapcpp2 tool to generate the serializers for these types. See Section 1.4 for an overview to use wsdl2h and soapcpp2 to map schemas to C/C++ types to obtain XML data bindings.

7.5.2  Mapping C/C++ to XML Schema with soapcpp2

To generate serialization code, execute:

> soapcpp2 [options] header_file.h

The following C/C++ types are supported in the header file:

bool 
enum, enum* ('enum*' indicates serialized as a bitmask)
(unsigned) char, short, int, long, long long (also LONG64), size_t
float, double, longdouble(#import "custom/long_double.h")
std::string, std::wstring, char[], char*, wchar_t*
_XML (a char* type to hold literal XML string content)
_QName (a char* type with normalized QName content of the form prefix:name)
struct, class (with single inheritance)
std::vector, std::list, std::deque, std::set (#import "import/stl.h")
union (requires preceding discriminant member field)
typedef
time_t
template < > class(requires begin(), end(), size(), and insert() methods)
void* (requires a preceding __type field to indicate the object pointed to)
struct xsd__hexBinary (special pre-defined type to hold binary content)
struct xsd__base64Binary (special pre-defined type to hold binary content)
struct tm (#import "custom/struct_tm.h")
struct timeval (#import "custom/struct_timeval.h")
pointers to any of the above (any pointer-linked structures are serializable, including cyclic graphs)
fixed-size arrays of all of the above

Additional features and C/C++ syntax requirements:
  • A header file should not include any code statements, only data type declarations.
  • Nested classes and nested types are unnested.
  • Use #import "file.h" instead of #include to import other header files. The #include and #define directives are accepted, but deferred to the generated code.
  • C++ namespaces are supported (must cover entire header file content)
  • Optional DOM support can be used to store mixed content or literal XML content. Otherwise, mixed content may be lost. Use soapcpp2 option -d for DOM support. Learn more about the DOM API for C and C++ by visiting the Developer Center https://www.genivia.com/doc/dom/html.
  • Types are denoted transient using the 'extern' qualifier, which prevents serialization as desired:

    extern class name; // class 'name' is not serialized
    struct name { extern char *name; int num; }; // 'name' is not serialized

  • Only public members of a class can be serialized:

    class name { private: char *secret; }; // 'secret' is not serialized

  • Types declared "volatile" means that they are declared elsewhere in the project's code base and should not be redefined in the soapcpp2-generated code nor changed/augmented by the soapcpp2 tool:

    volatile class name { ... }; // defined here just to generate the serializers

  • Classes and structs declared "mutable" means that they can be augmented with additional members, rather than leading to a redefinition error:

    mutable class name { int n; }; // class has a member 'n'
    mutable class name { float x; }; // and also a member 'x'

    The SOAP_ENV__Header struct is mutable as well as the SOAP_ENV__Fault, SOAP_ENV__Detail, SOAP_ENV__Reason, and SOAP_ENV__Code structs.
  • struct/class members are serialized as attributes when qualified with '@':

    struct record { @char *name; int num; }; // attribute name, element num

  • Strings with 8-bit content can hold ASCII (default) or UTF8. The latter is possible by enabling the SOAP_C_UTFSTRING flag. When enabled, all std::string and char* strings MUST contain UTF8.
The soapcpp2 tool generates serializers and deserializers for all wsdl2h-generated or user-defined data structures that are specified in the header file input to the compiler. The serializers and deserializers can be found in the generated soapC.cpp file. These serializers and deserializers can be used separately by an application without the need to build a full client or service application. This is useful for applications that need to save or export their data in XML or need to import or load data stored in XML format.

7.5.3  Serializing C/C++ Data to XML

We assume that the wsdl2h tool was used to map XML schema types to C/C++ data types. The soapcpp2 tool then generates the (de)serializers for the C/C++ types. You can also use soapcpp2 directly on a header file that declares annotated C/C++ data types to serialize.
The following context attributes can be set to control the destination and source for serialization and deserialization:

Variable Description
int soap.socket socket file descriptor for input and output (or set to SOAP_INVALID_SOCKET)
ostream *soap.os C++ only: output stream used for send operations
constchar**soap.os C only: points to a string pointer to be set with the managed string content
istream *soap.is C++ only: input stream used for receive operations
constchar*soap.is C only: string with input to parse (this pointer advances)
int soap.sendfd when soap.socket=SOAP_INVALID_SOCKET, this fd is used for send operations
int soap.recvfd when soap.socket=SOAP_INVALID_SOCKET, this fd is used for receive operations

The following initializing and finalizing functions can be used:

Function Description
void soap_begin_send(struct soap*) start a send/write phase
int soap_end_send(struct soap*) flush the buffer
int soap_begin_recv(struct soap*) start a rec/read phase (if an HTTP header is present, parse it first)
int soap_end_recv(struct soap*) perform a id/href consistency check on deserialized data

These operations do not open or close the connections. The application should open and close connections or files and set the soap.socket, soap.os or soap.sendfd, soap.is or soap.recvfd streams or descriptors. When soap.socket < 0 and none of the streams and descriptors are set, then the standard input and output will be used.
The following options are available to control serialization:

soap->encodingStyle = NULL; // to remove SOAP 1.1/1.2 encodingStyle
soap_mode(soap, SOAP_XML_TREE); // XML without id-ref (no cycles!)
soap_mode(soap, SOAP_XML_GRAPH); // XML with id-ref (including cycles)
soap_set_namespaces(soap, struct Namespace *nsmap); //to set xmlns bindings

See also Section 9.12 to control the I/O buffering and content encoding such as compression and DIME encoding.
We assume that the wsdl2h tool was used to map XML schema types to C/C++ data types. The soapcpp2 tool then generates the (de)serializers for the C/C++ types.
To serialize data to an XML stream, two functions should be called to prepare for serialization of the data and to send the data, respectively. The first function, soap_serialize, analyzes pointers and determines if multi-references are required to encode the data and if cycles are present the object graph. The second function, soap_put, produces the XML output on a stream.
The soap_serialize and soap_put (and both combined by soap_write) functions are statically generated specific to a data type. For example, soap_serialize_float(&soap, &d) is called to serialize an float value and soap_put_float(&soap, &d, "number", NULL) is called to output the floating point value in SOAP tagged with the name <number>. The soap_write_float(&soap, &d) conveniently combines the initialization of output, writing the data, and finalizing the output.
To initialize data, the soap_default function of a data type can be used. For example, soap_default_float(&soap, &d) initializes the float to 0.0. The soap_default functions are useful to initialize complex data types such as arrays, structs, and class instances. Note that the soap_default functions do not need the gSOAP runtime context as a first parameter.
The following table lists the type naming conventions used by gSOAP:

Type Type Name
char* string
wchar_t* wstring
char byte
bool bool
double double
int int
float float
long long
LONG64 LONG64 (Win32)
long long LONG64 (Unix/Linux)
short short
time_t time
unsigned char unsignedByte
unsigned int unsignedInt
unsigned long unsignedLong
ULONG64 unsignedLONG64 (Win32)
unsigned long long unsignedLONG64 (Unix/Linux)
unsigned short unsignedShort
T[N] ArrayNOfType where Type is the type name of T
T* PointerToType where Type is the type name of T
struct Name Name
class Name Name
enum Name Name

Consider for example the following C code with a declaration of p as a pointer to a struct ns__Person:

struct ns__Person { char *name; } *p;

To serialize p, its address is passed to the function soap_serialize_PointerTons__Person generated for this type by the gSOAP soapcpp2 compiler:

soap_serialize_PointerTons__Person(&soap, &p);

The address of p is passed, so the serializer can determine whether p was already serialized and to discover co-referenced objects and cycles in graph data structures that require SOAP encoding with id-ref serialization. To generate the output, the address of p is passed to the function soap_put_PointerTons__Person together with the name of an XML element and an optional type string (to omit a type, use NULL):

soap_begin_send(&soap);
soap_put_PointerTons__Person(&soap, &p, "ns:element-name", "ns:type-name");
soap_end_send(&soap);

or the shorthand for the above (without the xsi type):

soap_write_PointerTons__Person(&soap, &p);

This produces:

<ns:element-name xmlns:SOAP-ENV="..." xmlns:SOAP-ENC="..." xmlns:ns="..."
   ... xsi:type="ns:type-name">
<name xsi:type="xsd:string">...</name>
</ns:element-name>

The serializer is initialized with the soap_begin_send(soap) function and closed with soap_end_send(soap). All temporary data structures and data structures deserialized on the heap are destroyed with the soap_destroy and soap_end functions (in this order).
The soap_done function should be used to reset the context, i.e. the last use of the context. To detach and deallocate the context, use soap_free.
To remove the temporary data only and keep the deserialized data on the heap, use soap_free_temp. Temporary data structures are only created if the encoded data uses pointers. Each pointer in the encoded data has an internal hash table entry to determine all multi-reference parts and cyclic parts of the complete data structure.
You can assign an output stream in C++ to soap.os and in C an output string soap.os, or a file descriptor to soap.sendfd.
For example, to assign a file descriptor:

soap.sendfd = open(file, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR);
soap_serialize_PointerTons__Person(&soap, &p);
soap_begin_send(&soap);
soap_put_PointerTons__Person(&soap, &p, "ns:element-name", "ns:type-name");
soap_end_send(&soap);

The above can be abbreviated to

soap.sendfd = open(file, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR);
soap_write_PointerTons__Person(&soap, &p);

The soap_serialize function is optional. It MUST be used when the object graph contains cycles. It MUST be called to preserve the logical coherence of pointer-based data structures, where pointers may refer to co-referenced objects. By calling soap_serialize, data structures shared through pointers are serialized only once and referenced in XML using id-refs attributes. The actual id-refs used depend on the SOAP encoding. To turn off SOAP encoding, remove or avoid using the SOAP-ENV and SOAP-ENC namespace bindings in the namespace table. In addition, the SOAP_XML_TREE and SOAP_XML_GRAPH flags can be used to control the output by restricting serialization to XML trees or by enabling multi-ref graph serialization with id-ref attribuation.
To save the data as an XML tree (with one root) without any id-ref attributes, use the SOAP_XML_TREE flag. The data structure MUST NOT contain pointer-based cycles.
To preserve the exact structure of the data object graph and create XML with one root, use the SOAP_XML_GRAPH output-mode flag (see Section 9.12). Use this flag and the soap_serialize function to prepare the serialization of data with in-line id-ref attributes. Using the SOAP_XML_GRAPH flag assures the preservation of the logical structure of the data
For example, to encode the contents of two variables var1 and var2 that may share data through pointer structures, the serializers are called before the output routines:

T1 var1;
T2 var2;
struct soap soap;
...
soap_init(&soap); // initialize
[soap_omode(&soap, flags);] // set output-mode flags (e.g. SOAP_ENC_PLAIN|SOAP_ENC_ZLIB)
soap_begin(&soap); // start new (de)serialization phase
soap_set_omode(&soap, SOAP_XML_GRAPH);
soap_serialize_Type1(&soap, &var1);
soap_serialize_Type2(&soap, &var2);
...
[soap.socket = a_socket_file_descriptor;] // when using sockets
[soap.os = an_output_stream;] // C++
[soap.sendfd = an_output_file_descriptor;] // C
soap_begin_send(&soap);
soap_put_Type1(&soap, &var1, "[namespace-prefix:]element-name1", "[namespace-prefix:]type-name1");
soap_put_Type2(&soap, &var2, "[namespace-prefix:]element-name2", "[namespace-prefix:]type-name2");
...
soap_end_send(&soap); // flush
soap_destroy(&soap); // remove deserialized C++ objects
soap_end(&soap); // remove deserialized data structures
soap_done(&soap); // finalize last use of this context
...

where Type1 is the type name of T1 and Type2 is the type name of T2 (see table above). The strings [namespace-prefix:]type-name1 and [namespace-prefix:]type-name2 describe the schema types of the elements. Use NULL to omit this type information.
For serializing class instances, method invocations MUST be used instead of function calls, for example obj.soap_serialize(&soap) and obj.soap_put(&soap, "elt", "type"). This ensures that the proper serializers are used for serializing instances of derived classes.
You can serialize a class instance to a stream as follows:

struct soap soap;
myClass obj;
... populate obj
soap_init(&soap); // initialize
soap_begin(&soap); // start new (de)serialization phase
soap_set_omode(&soap, SOAP_XML_GRAPH);
obj.serialize(&soap);
soap.os = &cout; // send to cout
soap_begin_send(&soap);
obj.put(&soap, "[namespace-prefix:]element-name1", "[namespace-prefix:]type-name1");
soap_end_send(&soap); // flush
...
soap_destroy(&soap); // remove deserialized C++ objects
soap_end(&soap); // remove deserialized data
soap_done(&soap); // finalize last use of this context

For gSOAP 2.8.28 and later, in C we use soap\.os to obtain a string with the XML serialized data:

struct soap soap;
struct myClass obj;
constchar*out;
... populate obj
soap_init(&soap); // initialize
soap_begin(&soap); // start new (de)serialization phase
soap_set_omode(&soap, SOAP_XML_GRAPH);
soap_serialize(&soap, &obj);
soap.os = &out; // string to set
soap_begin_send(&soap);
soap_put(&soap, &obj, "[namespace-prefix:]element-name1", "[namespace-prefix:]type-name1");
soap_end_send(&soap); // flush
... // out has XML content string managed by context
soap.os = NULL; // stop sending to string
...
soap_end(&soap); // remove deserialized data
soap_done(&soap); // finalize last use of this context

When you declare a soap struct pointer as a data member in a class, you can overload the << operator to serialize the class to streams:

ostream &operator<<(ostream &o, const myClass &e)
{
   if (!e.soap)
   ... error: need a soap struct to serialize (could use global struct) ...
   else 
   {
      ostream *os = e.soap->os;
      e.soap->os = &o;
      soap_set_omode(e.soap, SOAP_XML_GRAPH);       e.serialize(e.soap);
      soap_begin_send(e.soap);
      e.put(e.soap, "myClass", NULL);
      soap_end_send(e.soap);
      e.soap->os = os;
      soap_clr_omode(e.soap, SOAP_XML_GRAPH);
   }
   return o;
}

Of course, when you construct an instance you must set its soap struct to a valid context. Deserialized class instances with a soap struct data member will have their soap structs set automatically, see Section 9.13.2.
In principle, XML output for a data structure can be produced with soap_put without calling the soap_serialize function first. In this case, the result is similar to SOAP_XML_TREE which means that no id-refs are output. Cycles in the data structure will crash the serialization algorithm, even when the SOAP_XML_GRAPH is set.
Consider the following struct:

// Contents of file "tricky.h":
struct Tricky
{
   int *p;
   int n;
   int *q;
};

The following fragment initializes the pointer fields p and q to the value of field n:

struct soap soap;
struct Tricky X;
X.n = 1;
X.p = &X.n;
X.q = &X.n;
soap_init(&soap);
soap_begin(&soap);
soap_serialize_Tricky(&soap, &X);
soap_put_Tricky(&soap, &X, "Tricky", NULL);
soap_end(&soap); // Clean up temporary data used by the serializer

What is special about this data structure is that n is 'fixed' in the Tricky structure, and p and q both point to n. The gSOAP serializers strategically place the id-ref attributes such that n will be identified as the primary data source, while p and q are serialized with ref/href attributes.
The resulting output is:

<Tricky xsi:type="Tricky">
<p href="#2"/> <n xsi:type="int">1</n> <q href="#2"/> <r xsi:type="int">2</r> </Tricky> <id id="2" xsi:type="int">1</id>

which uses an independent element at the end to represent the multi-referenced integer, assuming the SOAP-ENV and SOAP-ENC namespaces indicate SOAP 1.1 encoding.
With the SOAP_XML_GRAPH flag the output is:

<Tricky xsi:type="Tricky">
<p href="#2"/> <n id="2" xsi:type="int">1</n> <q href="#2"/> </Tricky>

In this case, the XML is self-contained and multi-referenced data is accurately serialized. The gSOAP generated deserializer for this data type will be able to accurately reconstruct the data from the XML (on the heap).

7.5.4  Deserializing C/C++ Data from XML

We assume that the wsdl2h tool was used to map XML schema types to C/C++ data types. The soapcpp2 tool then generates the (de)serializers for the C/C++ types. You can also use soapcpp2 directly on a header file that declares annotated C/C++ data types to serialize.
To deserialize a data type from XML, the soap_get (or the simpler soap_read) function for the data type to be deserialized is used. The outline of a program that deserializes two variables var1 and var2 is for example:

T1 var1;
T2 var2;
struct soap soap;
...
soap_init(&soap); // initialize at least once
[soap_imode(&soap, flags);] // set input-mode flags
soap_begin(&soap); // begin new decoding phase
[soap.is = an_input_stream;] // C++
[soap.recvfd = an_input_file_desriptpr;] // C
soap_begin_recv(&soap); // if HTTP/MIME/DIME/GZIP headers are present, parse them
if (!soap_get_Type1(&soap, &var1, "[namespace-prefix:]element-name1", "[namespace-prefix:]type-name1"))
   ... error ...
if (!soap_get_Type2(&soap, &var2, "[namespace-prefix:]element-name2", "[namespace-prefix:]type-name1"))
   ... error ...
...
soap_end_recv(&soap); // check consistency of id/hrefs
soap_destroy(&soap); // remove deserialized C++ objects
soap_end(&soap); // remove deserialized data
soap_done(&soap); // finalize last use of the context

The strings [namespace-prefix:]type-name1 and [namespace-prefix:]type-name2 are the schema types of the elements and should match the xsi:type attribute of the receiving message. To omit the match, use NULL as the type. For class instances, method invocation can be used instead of a function call if the object is already instantiated, i.e. obj.soap_get(&soap, "...", "...").
The soap_begin call resets the deserializers. The soap_destroy and soap_end calls remove the temporary data structures and the decoded data that was placed on the heap.
To remove temporary data while retaining the deserialized data on the heap, the function soap_free_temp should be called instead of soap_destroy and soap_end.
One call to the soap_get_Type function of a type Type scans the entire input to process its XML content and to capture SOAP 1.1 independent elements (which contain multi-referenced objects). As a result, soap.error will set to SOAP_EOF. Also storing multiple objects into one file will fail to decode them properly with multiple soap_get calls. A well-formed XML document should only have one root anyway, so don't save multiple objects into one file. If you must save multiple objects, create a linked list or an array of objects and save the linked list or array. You could use the soap_in_Type function instead of the soap_get_Type function. The soap_in_Type function parses one XML element at a time.
You can deserialize class instances from a stream as follows:

myClass obj;
struct soap soap;
soap_init(&soap); // initialize
soap.is = &cin; // read from cin
soap_begin_recv(&soap); // if HTTP header is present, parse it
if (soap_get_myClass(&soap, &obj, "myClass", NULL) == NULL)
   ... error ...
soap_end_recv(&soap); // check consistency of id/hrefs
...
soap_destroy(&soap); // remove deserialized C++ objects
soap_end(&soap); // remove deserialized data
soap_done(&soap); // finalize last use of the context

This can be abbreviated to:

myClass obj;
struct soap soap;
soap_init(&soap); // initialize
soap.is = &cin; // read from cin
if (soap_read_myClass(&soap, &obj, NULL) != SOAP_OK)
   ... error ...
...
soap_destroy(&soap); // remove deserialized C++ objects
soap_end(&soap); // remove deserialized data
soap_done(&soap); // finalize last use of the context

When declaring a soap struct pointer as a data member in a class, you can overload the >> operator to parse and deserialize a class instance from a stream:

istream &operator>>(istream &i, myClass &e)
{
   if (!e.soap)
   ... error: need soap struct to deserialize (could use global struct)...
   istream *is = e.soap->is;
   e.soap->is = &i;
   if (soap_read_myClass(e.soap, &e) != SOAP_OK)
      ... error ...
   e.soap->is = is;
   return i;
}

For gSOAP 2.8.28 and later, you can parse XML from strings as follows:

struct myClass obj;
struct soap soap;
soap_init(&soap); // initialize
soap.is = "..."; // this is the string with XML to parse
if (soap_read_myClass(&soap, &obj, NULL) != SOAP_OK)
   ... error ...
soap.is = NULL; // stop parsing from strings
...
soap_end(&soap); // remove deserialized data
soap_done(&soap); // finalize last use of the context

When declaring a soap struct pointer as a data member in a class, you can overload the >> operator to parse and deserialize a class instance from a stream or string stream:

istream &operator>>(istream &i, myClass &e)
{
   if (!e.soap)
   ... error: need soap struct to deserialize (could use global struct)...
   istream *is = e.soap->is;
   e.soap->is = &i;
   if (soap_read_myClass(e.soap, &e) != SOAP_OK)
      ... error ...
   e.soap->is = is;
   return i;
}

7.5.5  Example

As an example, consider the following data type declarations:

// Contents of file "person.h":
typedef char *xsd__string;
typedef char *xsd__Name;
typedef unsigned int xsd__unsignedInt;
enum ns__Gender {male, female};
class ns__Address
{
   public:
   xsd__string street;
   xsd__unsignedInt number;
   xsd__string city;
};
class ns__Person
{
   public:
   xsd__Name name;
   enum ns__Gender gender;
   ns__Address address;
   ns__Person *mother;
   ns__Person *father;
};

The following program uses these data types to write to standard output a data structure that contains the data of a person named "John" living at Downing st. 10 in Londen. He has a mother "Mary" and a father "Stuart". After initialization, the class instance for "John" is serialized and encoded in XML to the standard output stream using gzip compression (requires the Zlib library, compile sources with -DWITH_GZIP):

// Contents of file "person.cpp":
#include "soapH.h"
int main()
{
   struct soap soap;
   ns__Person mother, father, john;
   mother.name = "Mary";
   mother.gender = female;
   mother.address.street = "Downing st.";
   mother.address.number = 10;
   mother.address.city = "London";
   mother.mother = NULL;
   mother.father = NULL;
   father.name = "Stuart";
   father.gender = male;
   father.address.street = "Main st.";
   father.address.number = 5;
   father.address.city = "London";
   father.mother = NULL;
   father.father = NULL;
   john.name = "John";
   john.gender = male;
   john.address = mother.address;
   john.mother = &mother;
   john.father = &father;
   soap_init(&soap);
   soap_omode(&soap, SOAP_ENC_ZLIB | SOAP_XML_GRAPH); // see 9.12
   soap_begin(&soap);
   soap_begin_send(&soap);
   john.soap_serialize(&soap);
   john.soap_put(&soap, "johnnie", NULL);
   soap_end_send(&soap);
   soap_destroy(&soap);
   soap_end(&soap);
   soap_done(&soap);
}
struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC","http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns", "urn:person"}, // Namespace URI of the "Person" data type
   {NULL, NULL}
};

The header file is processed and the application compiled on Linux/Unix with:

> soapcpp2 person.h
> c++ -DWITH_GZIP -o person person.cpp soapC.cpp stdsoap2.cpp -lsocket -lxnet -lnsl -lz

(Depending on your system configuration, the libraries libsocket.a, libxnet.a, libnsl.a are required. Compiling on Linux typically does not require the inclusion of those libraries.) See 19.29 for details on compression with gSOAP.
Running the person application results in the compressed XML output:

<johnnie xsi:type="ns:Person" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ns="urn:person"
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<name xsi:type="xsd:Name">John</name>
<gender xsi:type="ns:Gender">male</gender>
<address xsi:type="ns:Address">
<street id="3" xsi:type="xsd:string">Dowling st.</street>
<number xsi:type="unsignedInt">10</number>
<city id="4" xsi:type="xsd:string">London</city>
</address>
<mother xsi:type="ns:Person">
<name xsi:type="xsd:Name">Mary</name>
<gender xsi:type="ns:Gender">female</gender>
<address xsi:type="ns:Address">
<street href="#3"/>
<number xsi:type="unsignedInt">5</number>
<city href="#4"/>
</address>
</mother>
<father xsi:type="ns:Person">
<name xsi:type="xsd:Name">Stuart</name>
<gender xsi:type="ns:Gender">male</gender>
<address xsi:type="ns:Address">
<street xsi:type="xsd:string">Main st.</street>
<number xsi:type="unsignedInt">13</number>
<city href="#4"/>
</address>
</father>
</johnnie>

The following program fragment decodes this content from standard input and reconstructs the original data structure on the heap:

#include "soapH.h"
int main()
{
   struct soap soap;
   ns__Person *mother, *father, *john = NULL;
   soap_init(&soap);
   soap_imode(&soap, SOAP_ENC_ZLIB); // optional: gzip is detected automatically
   soap_begin(&soap);
   if ((john = soap_get_ns__Person(&soap, NULL, NULL, NULL)) == NULL)
      ... error ...
   mother = john->mother;
   father = john->father;
   ...
   soap_end_recv(&soap);
   soap_free_temp(&soap); // Clean up temporary data but keep deserialized data
}
struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC","http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns", "urn:person"}, // Namespace URI of the "Person" data type
   {NULL, NULL}
};

It is REQUIRED to either pass NULL to the soap_get routine, or a valid pointer to a data structure that can hold the decoded content. If the data john was already allocated then it does not need to be allocated again as the following demonstrates. The following program fragment decodes the SOAP content in a struct ns__Person allocated on the stack:

#include "soapH.h"
int main()
{
   struct soap soap;
   ns__Person *mother, *father, john;
   soap_init(&soap);
   soap_default_ns__Person(&soap, &john);
   soap_imode(&soap, SOAP_ENC_ZLIB); // optional
   soap_begin(&soap);
   soap_begin_recv(&soap);
   if (soap_get_ns__Person(&soap, &john, "johnnie", NULL) == NULL)
      ... error ...
   ...
}
struct Namespace namespaces[] =
   ...

Note the use of soap_default_ns__Person. This routine is generated by the gSOAP soapcpp2 tool and assigns default values to the fields of john.

7.5.6  Serializing and Deserializing Class Instances to Streams

C++ applications can define appropriate stream operations on objects for (de)serialization of objects on streams. This is best illustrated with an example. Section 7.5.3 gives details on serializing types in general. Consider the class

class ns__person
{ public:
   char *name;
   struct soap *soap; // we need this, see below
   ns__person();
   ~ns__person();
};

The struct soap member is used to bind the instances to a gSOAP context for (de)serialization. We use the gSOAP soapcpp2 compiler from the command prompt to generate the class (de)serializers (assuming that person.h contains the class declaration):

> soapcpp2 person.h

gSOAP generates the (de)serializers and an instantiation function for the class soap_new_ns__person(struct soap *soap, int num) to instantiate one or more objects and associate them with a gSOAP context for deallocation with soap_destroy(soap). To instantiate a single object, omit the num parameter or set to -1. To instantiate an array of objects, set num ≥ 0.

#include "soapH.h"
#include "ns.nsmap"
...
struct soap *soap = soap_new();
ns__person *p = soap_new_ns__person(soap);
...
cout << p; // serialize p in XML
...
in >> p; // parse XML and deserialize p
...
soap_destroy(soap); // deletes p too
soap_end(soap);
soap_done(soap);

The stream operations are implemented as follows

ostream &operator<<(ostream &o, const ns__person &p)
{
   if (!p.soap)
      return o; // need a gSOAP context to serialize
   p.soap->os = &o;
   soap_omode(p.soap, SOAP_XML_TREE); // XML tree or graph
   p.soap_serialize(p.soap);
   soap_begin_send(p.soap);
   if (p.soap_put(p.soap, "person", NULL)
       | | soap_end_send(p.soap))
      ; // handle I/O error
   return o;
}
istream &operator>>(istream &i, ns__person &p)
{
   if (!p.soap)
      return o; // need a gSOAP context to parse XML and deserialize
   p.soap->is = &i;
   if (soap_begin_recv(p.soap)
       | | p.soap_in(p.soap, NULL, NULL)
       | | soap_end_recv(p.soap))
      ; // handle I/O error
   return i;
}

7.5.7  How to Specify Default Values for Omitted Data

The gSOAP soapcpp2 compiler generates soap_default functions for all data types. The default values of the primitive types can be easily changed by defining any of the following macros in the stdsoap2.h file:

#define SOAP_DEFAULT_bool
#define SOAP_DEFAULT_byte
#define SOAP_DEFAULT_double
#define SOAP_DEFAULT_float
#define SOAP_DEFAULT_int
#define SOAP_DEFAULT_long
#define SOAP_DEFAULT_LONG64
#define SOAP_DEFAULT_short
#define SOAP_DEFAULT_string
#define SOAP_DEFAULT_time
#define SOAP_DEFAULT_unsignedByte
#define SOAP_DEFAULT_unsignedInt
#define SOAP_DEFAULT_unsignedLong
#define SOAP_DEFAULT_unsignedLONG64
#define SOAP_DEFAULT_unsignedShort
#define SOAP_DEFAULT_wstring

Instead of adding these to stdsoap2.h, you can also compile with option -DWITH_SOAPDEFS_H and include your definitions in file soapdefs.h. The absence of a data value in a receiving SOAP message will result in the assignment of a default value to a primitive type upon deserialization.
Default values can also be assigned to individual struct and class fields of primitive type. For example,

struct MyRecord
{
   char *name = "Unknown";
   int value = 9999;
   enum Status { active, passive } status = passive;
}

Default values are assigned to the fields on receiving a SOAP/XML message in which the data values are absent.
Because method requests and responses are essentially structs, default values can also be assigned to method parameters. The default parameter values do not control the parameterization of C/C++ function calls, i.e. all actual parameters must be present when calling a function. The default parameter values are used in case an inbound request or response message lacks the XML elements with parameter values. For example, a Web service can use default values to fill-in absent parameters in a SOAP/XML request:

int ns__login(char *uid = "anonymous", char *pwd = "guest", bool granted);

When the request message lacks uid and pwd parameters, e.g.:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ns="http://tempuri.org">
   <SOAP-ENV:Body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <ns:login>
      </ns:login>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

then the service uses the default values. In addition, the default values will show up in the SOAP/XML request and response message examples generated by the gSOAP compiler.

8  The wsdl2h WSDL and Schema Importer

The wsdl2h tool is an advanced application that converts one or more WSDLs to C/C++. It can also be used without WSDLs to convert XML schemas (XSD files) to C/C++ to implement XML data bindings in C and C++.
The creation of C and C++ applications from one of more WSDL service descriptions is a two-step process.
To convert a WSDL to C++, use:

> wsdl2h file.wsdl

to generate a C++ header file file.h. This generated header file is a Web service specification that contains the parameter types and service function definitions in an understandable format in C++ (or ANSI C as shown below). Web service operations are represented as function prototypes. Schema types are represented by semantically equivalent C/C++ types that are convenient and natural to use in a C/C++ application. The generated header file also contains various annotations related to the Web service properties defined in the WSDL.
To generate ANSI C, use option -c:

> wsdl2h -c file.wsdl

Multiple WSDL specifications can be processed at once and saved to one file with the -o option:

> wsdl2h -o file.h file1.wsdl file2.wsdl file3.wsdl

You can retrieve WSDLs from one of more URLs:

> wsdl2h -o file.h http://www.example.com/example.wsdl

To convert XML schemas to C or C++ XML data binding code, use:

> wsdl2h -o file.h file1.xsd file2.xsd file3.xsd

The wsdl2h-generated header file file.h is processed by the soapcpp2 tool to auto-generate the advanced data binding logic to convert the C/C++ data to XML and vice versa at runtime for your SOAP/XML application.
To process a gSOAP header file file.h (generated by wsdl2h) to generate advanced XML data bindings for C++, use:

> soapcpp2 -i -Iimport file.h

When the header file file.h was generated for C++, then this command generates a couple of C++ source files (more details will follow in Section 9) that implement XML encoders for the data binding. Option -i generates a client proxy objects and service objects to invoke and serve SOAP/XML operations, respectively. Option -Iimport sets the import directory for imported files from the package's import, such as stlvector.h for STL vector serialization support.
When the header file file.h was generated for ANSI C, then the above command generates a couple of C files that implement XML encoders, client stubs for remote invocation, and service skeletons for service operations.
Consider for example the following commands to implement a c++ client of a service:

> wsdl2h -o calc.h http://www.genivia.com/calc.wsdl
...
> soapcpp2 -i -Iimport calc.h

The first command generates calc.h from the WSDL at the specified URL. The header file is then processed by the soapcpp2 tool to generate the proxies (and service objects that we will not use) for the client application.
The C++ client application uses the auto-generated soapcalcProxy.h class and calc.nsmap XML namespace table to access the Web service. Both need to be #include-d in your source. Then compile and link the soapcalcProxy.cpp, soapC.cpp and stdsoap2.cpp sources to complete the build.

8.1  wsdl2h Options

The wsdl2h tool is an advanced XML data binding tool for converting WSDLs and XML schemas (XSD files) to C or C++. The tool takes WSDL and/or XSD files or URLs and converts these to a C or C++ specification in one easy-to-read C/C++ header file. The header file is not intended to be included in your code directly!. It should be converted by soapcpp2 to generate the logic for the data bindings. It can however be safely converted by a documentation tool such as Doxygen to analyze and represent the service operations and data in a convenient layout. To this end, the header file is self-explanatory.
The wsdl2h tool generates only one file, the header file that includes all of the information obtained from all WSDL and schema files provided to the tool at the command-line prompt. The default output file name of wsdl2h is the first WSDL/schema input file name but with extension .h instead of .wsdl (or .xsd). When an input file is absent or a WSDL file from a Web location is accessed, the header output will be produced on the standard output unless option -o is used to direct the output to a file.
The wsdl2h command-line options are:

Option Description
-a generate indexed struct names for local elements with anonymous types
-b bi-directional operations to serve one-way response messages (duplex)
-c generate C source code
-c++ generate C++ source code
-c++11 generate C++11 source code
-d use DOM to populate xs:any and xsd:anyType elements
-D make attribute members with default values optional with pointers
-e don't qualify enum names
This option is for backward compatibility with gSOAP 2.4.1 and earlier.
The option does not produce code that conforms to WS-I Basic Profile 1.0a.
-f generate flat C++ class hierarchy for schema extensions
-g generate global top-level element declarations
-h print help information
-I path use path to locate source files for #import
-i don't import (advanced option)
-j don't generate SOAP_ENV__Header and SOAP_ENV__Detail definitions
-k don't generate SOAP_ENV__Header mustUnderstand qualifiers
-l include license information in output
-m use xsd.h module to import primitive types
-N name use name for service prefixes to produce a service for each binding
-n name use name as the base namespace prefix name instead of ns
-O1 optimize by omitting duplicate choice/sequence members
-O2 optimize -O1 and omit unused schema types (unreachable from roots)
-o file output to file
-P don't create polymorphic types inherited from xsd__anyType
-p create polymorphic types inherited from base xsd__anyType
This is automatically performed when WSDL contains polymorphic definitions
-q name use name for the C++ namespace of all declarations
-R generate REST operations for REST bindings in the WSDL
-r host[:port[:uid:pwd]] connect via proxy host, port, and proxy credentials
-r:uid:pwd connect with authentication credentials (digest auth requires SSL)
-s don't generate STL code (no std::string and no std::vector)
-t file use type map file instead of the default file typemap.dat
-U map Unicode XML names to UTF8-encoded Unicode C/C++ identifiers
-u don't generate unions
-V display the current version and exit
-v verbose output
-W suppress warnings
-w always wrap response parameters in a response struct
-x don't generate _XML any/anyAttribute extensibility elements
-y generate typedef synonyms for structs and enums
-z1 compatibility with 2.7.6e: generate pointer-based arrays
-z2 compatibility with 2.7.15: qualify element/attribute referenced members
-z3 compatibility with 2.7.16 to 2.8.7: qualify element/attribute references
-z4 compatibility up to 2.8.11: don't generate union structs in std::vector
-z5 compatibility up to 2.8.15: don't include minor improvements
-z6 compatibility up to 2.8.17: don't include minor improvements
-z7 compatibility up to 2.8.59: don't generate std::vector of class of union
-_ don't generate _USCORE (replace with Unicode _x005f)

Note: see README.txt in the wsdl directory for the latest information on installation and options to of the wsdl2h WSDL/schema importer.

8.2  Customizing Data Bindings With The typemap.dat File

The typemap.dat file for the wsdl2h tool is intended to customize or optimize the type bindings by mapping schema types to C/C++ types. It contains custom XML Schema to C/C++ type bindings and a few bindings are defined for convenience.
Here is an example typemap file's content:

# This file contains custom definitions of the XML Schema types and
# C/C++ types for your project, and XML namespace prefix definitions.
# The wsdl2h WSDL importer consults this file to determine bindings.

[
// This comment will be included in the generated .h file
// You can include any additional declarations, includes, imports, etc.
// within [ ] sections. The brackets MUST appear at the start of a line
]
# XML namespace prefix definitions can be provided to override the
# default choice of ns1, ns2, ... prefixes. For example:

i = "http://www.soapinterop.org/"
s = "http://www.soapinterop.org/xsd"

Type bindings can be provided to bind XML schema types to C/C++ types for your project. Type bindings have four parts:

prefix__type = declaration | use | ptr-use

where 'prefix__type' is the C/C++-translation of the schema type, 'declaration' introduces the C/C++ type in the header file, the optional 'use' specifies how the type is used directly, and the optional 'ptr-use' specifies how the type is used as a pointer type.


# Example XML Schema and C/C++ type bindings:

xsd__int = | int
xsd__string = | char* | char*
xsd__boolean = enum xsd__boolean false_, true_ ; | enum xsd__boolean
xsd__base64Binary = class xsd__base64Binary unsigned char *__ptr; int __size; ; | xsd__base64Binary | xsd__base64Binary
# You can extend structs and classes with member data and functions.
# For example, adding a constructor to ns__myClass: ns__myClass = $ ns__myClass();
# The general form is # class_name = $ member;

The i and s prefixes are declared such that the header file output by the WSDL parser will use these to produce C/C++ code. XML Schema types are associated with an optional C/C++ type declaration, a use reference, and a pointer-use reference. The pointer-use reference of the xsd__byte type for example, is int* because char* is reserved for strings.
When a type binding requires only the usage to be changed, the declaration part can be given by an elipsis ..., as in:

prefix__type = ... | use | ptr-use

This ensures that the wsdl2h-generated type definition is preserved, while the use and ptr-use are remapped.
This method is useful to serialize dynamic types in C, where elements types int XML carry the xsi:type attribute.
The following example illustrates an "any" type mapping for the ns:sometype XSD type in a schema. This type will be replaced with a "any" type wrapper that supports dynamic serialization with xsi:type:

[
struct __any
{
   int __type;
   void *__item;
}
]
xsd__anyType = ... | struct __any | struct __any

where __type and __item are used to (de)serialize any data type in the wrapper, including base and its derived types based on xsi:type attribuation.
To support complexType extensions that are dynamically bound in C code, i.e. polymorphic types based on inheritance hierarchies, we can redeclare the base type of a hierarchy as a wrapper type and use the __type to serialize base or derived types. One addition is needed to support base type serialization without the use of xsi:type attributes. The absence of this attribute requires the serialization of the base type.
Basically, we need to be able to both handle a base type and its extensions as per schema extensibility. Say base type ns:base is a complexType that is extended by several other complexTypes. To implement dynamic binding in C to serialize the base type and derived types, we define:

[
struct __ns__base
{
   int __type;
   void *__item;
   struct ns__base *__self;
}
]
ns__base = ... | struct __ns__base | struct __ns__base

The __self field refers to the element tag (basically a struct member name) to which the ns:base type is associated. So for example, we see in the soapcpp2-generated output:

struct ns__data
{
   ...
   struct __ns__base name;
   ...
};

where __item represents name when the __ns__base is serialized with an xsi:type attribute, and __self represents name when the __ns__base is serialized wwithout an xsi:type attribute. Therefore, the dynamic binding defaults to struct ns__base *__self when no dynamic type information in XML is available.
Additional data and function members can be provided to extend a generated struct or class. Class and struct extensions are of the form:

prefix__type = $ member-declaration

For example, to add a constructor and destructor to class myns__record:

myns__record = $ myns__record(); myns__record = $ ~myns__record();

Type remappings can be given to map a type to another type:

prefix__type1 == prefix__type2

which replaces prefix__type1 by prefix__type2 in the wsdl2h output. For example:

SOAP_ENC__boolean == xsd__boolean

where SOAP_ENC__boolean is mapped to xsd__boolean, which in turn may be mapped to a C enum xsd__boolean type or C++ bool type.

9  Using the soapcpp2 Compiler and Code Generator

The soapcpp2 compiler and code generator is invoked from the command line and optionally takes the name of a header file as an argument or, when the file name is absent, parses the standard input:

> soapcpp2 [aheaderfile.h]

where aheaderfile.h is a C/C++ header file generated by wsdl2h or developed manually to specify the SOAP/XML service operations as function prototypes and the C/C++ data types to be auto-mapped to XML.
The soapcpp2 tool produces C/C++ source files. These files are used to implement SOAP/XML clients and services, and to implement the advanced XML data binding logic to convert C/C++ data into XML and vice versa.
The type of files generated by soapcpp2 are:

File Name Description
soapStub.h A modified and annotated header file produced from the input header file
soapH.h Main header file to be included by all client and service sources
soapC.cpp Serializers and deserializers for the specified data structures
soapClient.cpp Client stub routines for remote operations
soapServer.cpp Service skeleton routines
soapClientLib.cpp Client stubs combined with local static (de)serializers
soapServerLib.cpp Service skeletons combined with local static (de)serializers
soapXYZProxy.h A C++ proxy object (link with soapC.cpp soapClient.cpp)
soapXYZProxy.h With option -i: proxy object (link with soapC.cpp and soapXYZProxy.cpp)
soapXYZProxy.cpp With option -i: proxy code
soapXYZObject.h A C++ server object (link with soapC.cpp and soapServer.cpp)
soapXYZService.h With option -i: server object (link with soapC.cpp and soapXYZService.cpp)
soapXYZService.cpp With option -i: server code
.xsd An ns.xsd file is generated with an XML Schema for each namespace prefix ns used by a data structure in the header file input to the compiler, see Section 7.2.9
.wsdl A ns.wsdl file is generated with an WSDL description for each namespace prefix ns used by a service operation in the header file input to the compiler, see Section 7.2.9
.xml Several SOAP/XML request and response files are generated. These are example message files are valid provided that sufficient schema namespace directives are added to the header file or the generated .nsmap namespace table for the client/service is not modified by hand
.nsmap A ns.nsmap file is generated for each namespace prefix ns used by a service operation in the header file input to the compiler, see Section 7.2.9. The file contains a namespace mapping table that can be used in the client/service sources

Both client and service applications are developed from a header file that specifies the service operations. If client and service applications are developed with the same header file, the applications are guaranteed to be compatible because the stub and skeleton routines use the same serializers and deserializers to encode and decode the parameters. Note that when client and service applications are developed together, an application developer does not need to know the details of the internal SOAP encoding used by the client and service.
The soapClientLib.cpp and soapServerLib.cpp can be used to build (dynamic) client and server libraries. The serialization routines are local (static) to avoid link symbol conflicts. You must create a separate library for SOAP Header and Fault handling, as described in Section 19.39.
The following files are part of the gSOAP package and are required to build client and service applications:

File Name Description
stdsoap2.h Header file of stdsoap2.cpp runtime library
stdsoap2.c Runtime C library with XML parser and run-time support routines
stdsoap2.cpp Runtime C++ library identical to stdsoap2.c

9.1  soapcpp2 Options

The soapcpp2 source-to-source compiler supports the following command-line options:

Option Description
-1 generate SOAP 1.1 bindings
-2 generate SOAP 1.2 bindings
-0 no SOAP bindings, use REST
-C generate client-side code only
-S generate server-side code only
-T generate server auto-test code
-Ec generate extra routines for deep data copying
-Ed generate extra routines for deep data deletion
-Et generate extra routines for data traversals with walker functions
-L do not generate soapClientLib/soapServerLib
-a use SOAPAction with WS-Addressing to invoke server-side operations
-A require SOAPAction to invoke server-side operations
-b serialize byte arrays char[N] as string
-c generate pure C code
-d < path > save sources in directory specified by < path >
-e generate SOAP RPC encoding style bindings
-f N multiple soapC files, with N serializer definitions per file (N ≥ 10)
-h print a brief usage message
-i generate service proxies and objects inherited from soap struct
-j generate C++ service proxies and objects that can share a soap struct
-I < path > use < path > for #import (paths separated with ':' or ';' for windows)
-l generate linkable modules (experimental)
-m generate Matlabtm code for MEX compiler
-n when used with -p, enables multi-client and multi-server builds:
sets compiler option WITH_NONAMESPACES, see Section 9.11
saves the namespace mapping table with name < name > _namespaces instead of namespaces
renames soap_serve() into < name > _serve() and soap_destroy() into < name > _destroy()
-p < name > save sources with file name prefix < name > instead of "soap"
-q < name > use name for the C++ namespace of all declarations
-r generate soapReadme.md report
-s generates deserialization code with strict XML validation checks
-t generates code to send typed messages (with the xsi:type attribute)
-u uncomment comments in WSDL/schema output by suppressing XML comments
-V display the current version and exit
-v verbose output
-w do not generate WSDL and schema files
-x do not generate sample XML message files
-y include C/C++ type access information in sample XML messages
-z1 compatibility: generate old-style C++ service proxies and objects
-z2 compatibility with 2.7.x: omit XML output for NULL pointers
-z3 compatibility with <= 2.8.30: _param_N indexing; nillable pointers

For example

> soapcpp2 -cd '../projects' -pmy file.h

Saves the sources:

../projects/myH.h
../projects/myC.c
../projects/myClient.c
../projects/myServer.c
../projects/myStub.h

MS Windows users can use the usual "/" for options, for example:

soapcpp2 /cd '..\projects' /pmy file.h

Compiler options c, i, n, l, w can be set in the gSOAP header file using the //gsoapopt directive. For example,

// Generate pure C and do not produce WSDL output:
//gsoapopt cw
int ns__myMethod(char*,char**); // takes a string and returns a string

9.2  SOAP 1.1 Versus SOAP 1.2 and Dynamic Switching

gSOAP supports SOAP 1.1 by default. SOAP 1.2 support is automatically turned on when the appropriate SOAP 1.2 namespace is used, which shows up in the namespace mapping table:

struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://www.w3.org/2003/05/soap-envelope", ... },
   {"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding, ... "},
   ...
}

Normally the soapcpp2-generated namespace table allows dynamic switching between SOAP 1.1 to SOAP 1.2 by providing the SOAP 1.2 namespace as a pattern in the third column of a namespace table:

struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-encoding"},
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-envelope"},
   ...
}

where the "*" in the third column of the namespace URI pattern is a meta wildcard. This is used to match and accept inbound namespaces.
This way, gSOAP Web services can respond to either SOAP 1.1 or SOAP 1.2 requests. gSOAP will automatically return SOAP 1.2 responses for SOAP 1.2 requests.
The gSOAP soapcpp2 tool generates a .nsmap file with SOAP-ENV and SOAP-ENC namespace patterns similar to the above. Since clients issue a send first, they will always use SOAP 1.1 for requests when the namespace table is similar as shown above. Clients can accept SOAP 1.2 responses by inspecting the response message.
To use SOAP 1.2 by default and allow SOAP 1.1 messages to be received, use the soapcpp2 -2 option to generate SOAP 1.2 conformant .nsmap and .wsdl files. Alternatively, add the following line to your service definitions header file (generated by wsdl2h) for soapcpp2:

#import "import/soap12.h"

Caution: SOAP 1.2 does not support partially transmitted arrays. So the __offset field of a dynamic array is meaningless.
Caution: SOAP 1.2 requires the use of SOAP_ENV__Code, SOAP_ENV__Reason, and SOAP_ENV__Detail fields in a SOAP_ENV__Fault fault struct, while SOAP 1.1 uses faultcode, faultstring, and detail fields. Use soap_receiver_fault_subcode(struct soap *soap, const char *subcode, const char *faultstring, const char *detail) to set a SOAP 1.1/1.2 fault at the server-side with a fault subcode (SOAP 1.2). Use soap_sender_fault_subcode(struct soap *soap, const char *subcode, const char *faultstring, const char *detail) to set a SOAP 1.1/1.2 unrecoverable Bad Request fault at the server-side with a fault subcode (SOAP 1.2).

9.3  The soapdefs.h Header File

The soapdefs.h header file is included in stdsoap2.h when compiling with option -DWITH_SOAPDEFS_H:

> c++ -DWITH_SOAPDEFS_H -c stdsoap2.cpp

The soapdefs.h file allows users to include definitions and add includes without requiring changes to stdsoap2.h. You can also specify the header file name to include as a macro SOAPDEFS_h to override the name soapdefs.h:

> c++ -DSOAPDEFS_H=mydefs.h -c stdsoap2.cpp

For example,

// Contents of soapdefs.h
#include < ostream >
#define SOAP_BUFLEN 65536 // use large send/recv buffer

The following header file can now refer to ostream:

extern class ostream; // ostream can't be (de)serialized, but need to be declared to make it visible to gSOAP
class ns__myClass
{ ...
   virtual void print(ostream &s) const; // need ostream here
   ...
};

See also Section 19.3.

9.4  How to Build Modules and Libraries with the #module Directive

The #module directive is used to build modules. A library can be built from a module and linked with multiple Web services applications. The directive should appear at the top of the header file and has the following formats:

#module "name"

and

#module "name" "fullname"

where name must be a unique short name for the module. The name is case insensitive and MUST not exceed 4 characters in length. The fullname, when present, represents the full name of the module.
The rest of the content of the header file includes type declarations and optionally the declarations of service operations and SOAP Headers/Faults. When the gSOAP soapcpp2 compiler processes the header file module, it will generate the source codes for a library. The Web services application that uses the library should use a header file that imports the module with the #import directive.
For example:

/* Contents of module.h */
#module "test"
long;
char*;
struct ns__S
{ ... }

The module.h header file declares a long, char*, and a struct ns__X. The module name is "test", so the gSOAP soapcpp2 compiler produces a testC.cpp file with the (de)serializers for these types. The testC.cpp library can be separately compiled and linked with an application that is built from a header file that imports "module.h" using #import "module.h". You should also compile testClient.cpp when you want to build a library that includes the service operations that you defined in the module header file.
There are some limitations on a sequence of module imports. A module MUST be imported into another header to use the module content and you MUST place this import statement before all other statements in the file, including other imports (except when these are also modules). It is also advised to put all basic data type definitions in the root module of a module import hierarchy, e.g. using typedef to declare XSD types (see also Section 11.3).
You cannot use a module alone to build a SOAP or XML application. That is, the final gSOAP header file in the import chain SHOULD NOT be a module.
When multiple modules are linked, the types that they declare MUST be declared in one module only to avoid name clashes and link errors. You cannot create two modules that share the same type declaration and link the modules. When necessary, you should consider creating a module hierarchy such that types are declared only once and by only one module when these modules must be linked.

9.5  How to use the #import Directive

The #import directive is used to include gSOAP header files into other gSOAP header files for processing with the gSOAP compiler soapcpp2. The C #include directive cannot be used to include gSOAP header files. The #include directive is reserved to control the post-gSOAP compilation process, see 9.6.
The #import directive is used for two purposes: you can use it to include the contents of a header file into another header file and you can use it to import a module, see 9.4.
An example of the #import directive:

#import "mydefs.gsoap"
int ns__mymethod(xsd__string in, xsd__int *out);

where "mydefs.gsoap" is a gSOAP header file that defines xsd__string and xsd__int:

typedef char *xsd__string;
typedef int xsd__int;

When importing a module, where the module content is declared with #module, then note that this module MUST place the import statement before all other statements in the header file, including other imports (except when these are also modules).

9.6  How to Use #include and #define Directives

The #include and #define directives are normally ignored by the gSOAP soapcpp2 compiler and just passed on to the generated code. Thus, the gSOAP compiler will not actually parse the contents of the header files provided by the #include directives in a header file. Instead, the #include and #define directives will be added to the generated soapH.h header file before any other header file is included. Therefore, #include and #define directives can be used to control the C/C++ compilation process of the sources of an application. However, they have no effect on soapcpp2.
The following example header file refers to ostream by including < ostream > :

#include < ostream >
#define WITH_COOKIES // use HTTP cookie support (you must compile stdsoap2.cpp with -DWITH_COOKIES)
#define WITH_OPENSSL // enable HTTPS/SSL support (you must compile stdsoap2.cpp with -DWITH_OPENSSL)
#define WITH_GNUTLS // enable HTTPS/SSL support (you must compile stdsoap2.cpp with -DWITH_GNUTLS)
#define SOAP_DEFAULT_float FLT_NAN // use NaN instead of 0.0
extern class ostream; // ostream can't be (de)serialized, but need to be declared to make it visible to gSOAP
class ns__myClass
{ ...
   virtual void print(ostream &s) const; // need ostream here
   ...
};

This example also uses #define directives for various settings in the target source code.
Caution: Note that the use of #define in the header file does not automatically result in compiling stdsoap2.cpp with these directives. You MUST use the -DWITH_COOKIES and -DWITH_OPENSSL (or -DWITH_GNUTLS options when compiling stdsoap2.cpp before linking the object file with your codes. As an alternative, you can use #define WITH_SOAPDEFS_H and put the #define directives in the soapdefs.h file.

9.7  Compiling a SOAP/XML Client Application with soapcpp2

After invoking the gSOAP soapcpp2 tool on a header file description of a service, the client application can be compiled on a Linux machine as follows:

> c++ -o myclient myclient.cpp stdsoap2.cpp soapC.cpp soapClient.cpp

Or on a Unix machine:

> c++ -o myclient myclient.cpp stdsoap2.cpp soapC.cpp soapClient.cpp -lsocket -lxnet -lnsl

(Depending on your system configuration, the libraries libsocket.a, libxnet.a, libnsl.a or dynamic *.so versions of those libraries are required.)
The myclient.cpp file must include soapH.h and must define a global namespace mapping table. A typical client program layout with namespace mapping table is shown below:

// Contents of file "myclient.cpp"
#include "soapH.h";
...
// A service operation invocation:
   soap_call_some_remote_method(...);
...
struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name"}
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns1", "urn:my-remote-method"},
   {NULL, NULL}
};
...

A mapping table is generated by the gSOAP soapcpp2 compiler that can be used in the source, see Section 7.2.9.

9.8  Compiling a SOAP/XML Web Service with soapcpp2

After invoking the gSOAP soapcpp2 tool on a header file description of the service, the server application can be compiled on a Linux machine as follows:

> c++ -o myserver myserver.cpp stdsoap2.cpp soapC.cpp soapServer.cpp

Or on a Unix machine:

> c++ -o myserver myserver.cpp stdsoap2.cpp soapC.cpp soapServer.cpp -lsocket -lxnet -lnsl

(Depending on your system configuration, the libraries libsocket.a, libxnet.a, libnsl.a or dynamic *.so versions of those libraries are required.)
The myserver.cpp file must include soapH.h and must define a global namespace mapping table. A typical service program layout with namespace mapping table is shown below:

// Contents of file "myserver.cpp"
#include "soapH.h";
int main()
{
   soap_serve(soap_new());
}
...
// Implementations of the service operations as C++ functions
...
struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name"}
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns1", "urn:my-remote-method"},
   {NULL, NULL}
};
...

When the gSOAP service is compiled and installed as a CGI application, the soap_serve function acts as a service dispatcher. It listens to standard input and invokes the method via a skeleton routine to serve a SOAP client request. After the request is served, the response is encoded in SOAP and send to standard output. The method must be implemented in the server application and the type signature of the method must be identical to the service operations specified in the header file. That is, the function prototype in the header file must be a valid prototype of the method implemented as a C/C++ function.

9.9  Compiling Web Services and Clients in ANSI C

The gSOAP soapcpp2 compiler can be used to create pure C Web services and clients. The gSOAP stub and skeleton compiler soapcpp2 generates .cpp files by default. The compiler generates .c files with the -c option. However, these files only use C syntax and data types if the header file input to soapcpp2 uses C syntax and data types. For example:

> soapcpp2 -c quote.h
> cc -o quote quote.c stdsoap2.c soapC.c soapClient.c

Warnings will be issued by the compiler when C++ class declarations occur in the header file.

9.10  Limitations of gSOAP

gSOAP is SOAP 1.1 and SOAP 1.2 compliant and supports SOAP RPC and document/literal operations.
From the perspective of the C/C++ language, a few C++ language features are not supported by gSOAP and these features cannot be used in the specification of SOAP service operations.
There are certain limitations for the following C++ language constructs:
STL and STL templates
The gSOAP soapcpp2 compiler supports C++ strings std::string and std::wstring (see Section 11.3.6) and the STL containers std::deque, std::list, std::vector, and std::set, (see Section 11.11.8).
Templates
The gSOAP soapcpp2 compiler is a preprocessor that cannot determine the template instantiations used by the main program, nor can it generate templated code. You can however implement containers similar to the STL containers.
Multiple inheritance
Single class inheritance is supported. Multiple inheritance cannot be supported due to limitations of the SOAP protocol.
Abstract methods
A class must be instantiatable to allow decoding of instances of the class.
Directives
Directives and pragmas such as #include and #define are interpreted by the gSOAP soapcpp2 compiler. However, the interpretation is different compared to the usual handling of directives, see Section 9.6. If necessary, a traditional C++ preprocessor can be used for the interpretation of directives. For example, Unix and Linux users can use "cpp -B" to expand the header file, e.g. cpp -B myfile.h - soapcpp2. Use the gSOAP #import directive to import gSOAP header files, see 9.5.
C and C++ programming statements
All class methods of a class should be declared within the class declaration in the header file, but the methods should not be implemented in code. All class method implementations must be defined within another C++ source file and linked to the application.
The following data types require some attention to ensure they are serialized:
union types
A union data type can not be serialized unless run-time information is associated with a union in a struct/class as discussed in Section 11.7. An alternative is to use a struct with a pointer type for each field. Because NULL pointers are not encoded, the resulting encoding will appear as a union type if only one pointer field is valid (i.e. non-NULL) at the time that the data type is encoded.
void and void* types
The void data type cannot be serialized unless run-time type information is associated with the pointer using a int __type field in the struct/class that contains the void*. The void* data type is typically used to point to some object or to some array of some type of objects at run-time. The compiler cannot determine the type of data pointed to and the size of the array pointed to. A struct or class with a void* field can be augmented to support the (de)serialization of the void* using a int __type field as described in Section 11.9.
Pointers to sequences of elements in memory
Any pointer, except for C strings which are pointers to a sequence of characters, are treated by the compiler as if the pointer points to only one element in memory at run-time. Consequently, the encoding and decoding routines will ignore any subsequent elements that follow the first in memory. For the same reason, arrays of undetermined length, e.g. float a[] cannot be used. gSOAP supports dynamic arrays using a special type convention, see Section 11.11.
Uninitialized pointers
Obviously, all pointers that are part of a data structure must be valid or NULL to enable serialization of the data structure at run time.
There are a number of programming solutions that can be adopted to circumvent these limitations. Instead of using void*, a program can in some cases be modified to use a pointer to a known type. If the pointer is intended to point to different types of objects, a generic base class can be declared and the pointer is declared to point to the base class. All the other types are declared to be derived classes of this base class. For pointers that point to a sequence of elements in memory dynamic arrays should be used instead, see 11.11.

9.11  Library Build Flags

The following macros (#defines) can be used to enable certain optional features when building the libgsoap library or when compiling and linking stdsoap2.c and stdsoap2.cpp:

Macro Description
WITH_SOAPDEFS_H includes the soapdefs.h file for custom settings, see Section 9.3
SOAPDEFS_H the header file to include, if different from soapdefs.h (see above)
WITH_COOKIES enables HTTP cookies, see Sections 19.30 19.31
WITH_OPENSSL enables OpenSSL, see Sections 19.24 19.23
WITH_GNUTLS enables GNUTLS, see Sections 19.24 19.23
WITH_IPV6 enables IPv6 support (compile ALL sources with this macro set)
WITH_IPV6_V6ONLY(deprecated, this is the default) IPv6-only server option
WITH_NO_IPV6_V6ONLY(deprecated, use soap->bind_v6only = 1) permits IPv4 and IPv6
WITH_TCPFIN use TCP FIN after sends when socket is ready to close
WITH_FASTCGI enables FastCGI, see Sections 19.34
WITH_GZIP enables gzip and deflate compression, see Section 19.29
WITH_ZLIB enables deflate compression only, see Section 19.29
WITH_NOIO eliminates need for file IO and BSD socket library, see Section 19.36
WITH_NOIDREF eliminates href/ref and id attributes to (de)serialize multi-ref data,
or alternatively use the SOAP_XML_TREE runtime flag
WITH_NOHTTP eliminates HTTP stack to reduce code size
WITH_NOZONE removes and ignores the timezone in xsd:dateTime
WITH_LEAN creates a small-footprint executable, see Section 19.35
WITH_LEANER creates an even smaller footprint executable, see Section 19.35
WITH_FAST use faster memory allocation when used with WITH_LEAN/WITH_LEANER
WITH_COMPAT removes dependency on C++ stream libraries, eliminating C++ exceptions
WITH_NONAMESPACESremoves dependence on global namespaces table, MUST set it
explicitly with soap_set_.namespaces()
see also Section 10.4
WITH_PURE_VIRTUAL for C++ abstract service classes with pure virtual methods
WITH_NOEMPTYSTRUCT inserts a dummy member in empty structs to allow compilation
WITH_NOGLOBAL omit SOAP Header and Fault serialization code,
prevents duplicate definitions with generated soapXYZLib code
WITH_CDATA retain the parsed CDATA sections in literal XML strings (no conversion, default)
WITH_C_LOCALE use locale functions when available to ensure locale-independent
number conversions (force the use of C locale)
WITH_CASEINSENSITIVETAGS enable case insensitive XML parsing
WITH_REPLACE_ILLEGAL_UTF8 strict UTF-8: replaces UTF8 content that is outside the allowed range, with U+FFFD

Other compile-time flags:

Macro Description
SOCKET_CLOSE_ON_EXIT prevents a server port from staying in listening mode after exit
by internally setting fcntl(sock, F_SETFD, FD_CLOEXEC)

Compile-time flags to change the default engine settings:

Macro Description
SOAP_BUFLEN the length of the internal message buffer (affects socket comms)
SOAP_TAGLEN maximum length of XML tags and URL domain names (buffering)
SOAP_SSL_RSA_BITS the length of the RSA key (2048 by default)
SOAP_UNKNOWN_CHAR an 8 bit code that represents a character that could not be converted
to an ASCII char (e.g. from Unicode, applicable when SOAP_C_UTFSTRING is off)

Caution: it is important that all of these macros MUST be consistently defined to compile all sources, such as stdsoap2.cpp, soapC.cpp, soapClient.cpp, soapServer.cpp, and all application sources that include stdsoap2.h or soapH.h. If the macros are not consistently used, the application will crash due to a mismatches in the declaration and access of the gSOAP context.

9.12  Run Time Flags

gSOAP provides flags to control the input and output mode settings at runtime. These flags are divided into four categories: transport (IO), content encoding (ENC), XML marshalling (XML), and C/C++ data mapping (C).
Although gSOAP is fully SOAP 1.1 compliant, some SOAP implementations may have trouble accepting multi-reference data and/or require explicit nil data so these flags can be used to put gSOAP in "safe mode". In addition, the embedding (or inlining) of multi-reference data is adopted in the SOAP 1.2 specification, which gSOAP automatically supports when handling with SOAP 1.2 messages.
To set and clear flags for inbound message processing use:

soap_set_imode(soap, inflag);
soap_clr_imode(soap, inflag);

To set and clear the flags for outbound message processing use:

soap_set_omode(soap, outflag);
soap_clr_imode(soap, outflag);

To allocate and initialize a gSOAP context with inbound and outbound flags use:

soap_new2(soap, inflag, outflag);

To initialize an unitialized gSOAP context with inbound and outbound flags use:

soap_init2(soap, inflag, outflag);

The input-mode and output-mode flags for inbound and outbound message processing are:

Flag Description
SOAP_IO_FLUSH in: disable buffering and flush output (default for all file-based output)
SOAP_IO_BUFFER in: enable buffering (default for all socket-oriented connections)
SOAP_IO_STORE in: store entire message to calculate HTTP content length
SOAP_IO_CHUNK out: use HTTP chunking
SOAP_IO_LENGTH out: (internal flag) require apriori calculation of content length
SOAP_IO_KEEPALIVE in&out: attempt to keep socket connections alive (open)
SOAP_IO_UDP in&out: use UDP (datagram) transport, maximum message length is SOAP_BUFLEN
SOAP_ENC_PLAIN in&out: use plain messages without parsing or emitting HTTP headers
SOAP_ENC_XML deprecated, alias for SOAP_ENC_PLAIN
SOAP_ENC_DIME out: use DIME encoding (automatic when DIME attachments are used)
SOAP_ENC_MIME out: use MIME encoding (activate using soap_set_mime)
SOAP_ENC_MTOM out: use MTOM XOP attachments (instead of DIME)
SOAP_ENC_ZLIB out: compress encoding with Zlib (deflate or gzip format)
SOAP_ENC_SSL in&out: encrypt with SSL (automatic with "https:" endpoints)
SOAP_XML_INDENT out: produces indented XML output
SOAP_XML_CANONICAL out: produces canonical XML output
SOAP_XML_DEFAULTNS out: forces output of xmlns="..." default namespace declarations
SOAP_XML_IGNORENS in: ignores the use of XML namespaces in input
SOAP_XML_STRICT in: XML strict validation
SOAP_XML_TREE out: serialize data as XML trees (no multi-ref, duplicate data when necessary)
in: ignore id attributes (do not resolve id-ref)
SOAP_XML_GRAPH out: serialize data as an XML graph with inline multi-ref (SOAP 1.2 default)
SOAP_XML_NIL out: serialize NULL data as xsi:nil attributed elements
SOAP_XML_NOTYPE out: disable xsi:type attributes
SOAP_C_NOIOB in: do not fault with SOAP_IOB
SOAP_C_UTFSTRING in&out: (de)serialize 8-bit strings "as is" (strings MUST have UTF-8 encoded content)
SOAP_C_MBSTRING in&out: enable multibyte character support (depends on locale)
SOAP_C_NILSTRING out: serialize empty strings as nil (ommited element)

The flags can be selectively turned on/off at any time, for example when multiple Web services are accessed by a client that require special treatment.
All flags are orthogonal, except SOAP_IO_FLUSH, SOAP_IO_BUFFER, SOAP_IO_STORE, and SOAP_IO_CHUNK which are enumerations and only one of these I/O flags can be used. Also the XML serialization flags SOAP_XML_TREE and SOAP_XML_GRAPH should not be mixed.
The flags control the inbound and outbound message transport, encoding, and (de)serialization. The following functions are used to set and reset the flags for input and output modes:

Function Description
soap_init2(struct soap *soap, int imode, int omode) Initialize the runtime and set flags
soap_imode(struct soap *soap, int imode) Set all input mode flags
soap_omode(struct soap *soap, int omode) Set all output mode flags
soap_set_imode(struct soap *soap, int imode) Enable input mode flags
soap_set_omode(struct soap *soap, int omode) Enable output mode flags
soap_clr_imode(struct soap *soap, int omode) Disable input mode flags
soap_clr_omode(struct soap *soap, int omode) Disable output mode flags

The default setting is SOAP_IO_DEFAULT for both input and output modes.
For example

struct soap soap;
soap_init2(&soap, SOAP_IO_KEEPALIVE,
   SOAP_IO_KEEPALIVE | SOAP_ENC_ZLIB | SOAP_XML_TREE | SOAP_XML_CANONICAL);
if (soap_call_ns__myMethod(&soap, ...))
...

sends a compressed client request with keep-alive enabled and all data serialized as canonical XML trees.
In many cases, setting the input mode will have no effect, especially with HTTP transport because gSOAP will determine the optimal input buffering and the encoding used for an inbound message. The flags that have an effect on handling inbound messages are SOAP_IO_KEEPALIVE, SOAP_ENC_SSL (but automatic when "https:" endpoints are used or soap_ssl_accept), SOAP_C_NOIOB, SOAP_C_UTFSTRING, and SOAP_C_MBSTRING.
Caution: The SOAP_XML_TREE serialization flag can be used to improve interoperability with SOAP implementations that are not fully SOAP 1.1 compliant. However, a tree serialization will duplicate data when necessary and will crash the serializer for cyclic data structures.
Additional run-time flags to control sockets.
Use the following selection of flags that are OS dependent to control sockets for send/sendto/recv/recvfrom operations:


socket_flags Description
MSG_NOSIGNAL disables sigpipe (check your OS, this is not portable)
MSG_DONTROUTE bypass routing, use direct interface

Use the following selection of flags to set client-side socket connection flags (setsockopt):


connect_flags Description
SO_NOSIGPIPE disables sigpipe (check your OS, this is not portable)
SO_DEBUG turns on recording of debugging information in the underlying protocol modules
SO_BROADCAST permits sending of broadcast messages (e.g. with UDP) when permitted
SO_LINGER set soap.linger_time (set this value as needed)

Use the following selection of flags to set server-side socket connection accept flags (setsockopt):


accept_flags Description
SO_NOSIGPIPE disables sigpipe (check your OS, this is not portable)
SO_DEBUG turns on recording of debugging information in the underlying protocol modules
SO_REUSEADDR reuse bind address immediately (prevents bind reject)
SO_LINGER set soap.linger_time (set this value as needed)

For example, soap.accept_flags = (SO_NOSIGPIPE - SO_LINGER) disables sigpipe signals and set linger time value given by soap.linger_time (zero by default).
The SO_SNDBUF and SO_RCVBUF socket options can be set by assigning soap.sndbuf and soap.rcvbuf after the context initialization, respectively. The default value is SOAP_BUFLEN, which is the same as the size of the internal buffer. A zero value omits the internal setsockopt call to set these options. Setting these values to zero enables autotuning with Linux 2.4 and up.

9.13  Memory Management

Understanding gSOAP's run-time memory management is important to optimize client and service applications by eliminating memory leaks and/or dangling references.
There are two forms of dynamic (heap) allocations made by gSOAP's runtime for serialization and deserialization of data. Temporary data is created by the runtime such as hash tables to keep pointer reference information for serialization and hash tables to keep XML id/href information for multi-reference object deserialization. Deserialized data is created upon receiving SOAP messages. This data is stored on the heap and requires several calls to the malloc library function to allocate space for the data and new to create class instances. All such allocations are tracked by gSOAP's runtime by linked lists for later deallocation. The linked list for malloc allocations uses some extra space in each malloced block to form a chain of pointers through the malloced blocks. A separate malloced linked list is used to keep track of class instance allocations.
If you want to preserve the deserialized data before deleting a soap context, you can assign management of the data and delegate responsibility of deletion to another soap context using soap_delegate_deletion(struct soap *soap_from, struct soap *soap_to). This moves all deserialized and temporary data to the other soap context soap_to, which will delete its data and all the delegated data it is responsible for when you call soap_destroy and soap_end. This can be particularly useful for making client calls inside a server operation, i.e. a mixed server/client. The client call inside the server operation requires a new soap context, e.g. copied from the server's with soap_copy. Before destroying the client context with soap_free, the data can be delegated to the server's context with soap_delegate_deletion. See samples/mashup/machupserver.c code for an example.
Note that gSOAP does not per se enforce a deallocation policy and the user can adopt a deallocation policy that works best for a particular application. As a consequence, deserialized data is never deallocated by the gSOAP runtime unless the user explicitly forces deallocation by calling functions to deallocate data collectively or individually.
The deallocation functions are:

Function Call Description
soap_destroy(struct soap *soap) Remove all dynamically allocated C++ objects.
must be called before soap_end()
soap_end(struct soap *soap) Remove temporary data and deserialized data except
class instances
soap_free_temp(struct soap *soap) Instead of soap_destroy and soap_end:
remove temporary data only
soap_dealloc(struct soap *soap, void *p) Remove malloced data at p. When p==NULL: remove all
dynamically allocated (deserialized) data except class instances
soap_delete(struct soap *soap, void *p) Remove class instance at p. When p==NULL: remove all
dynamically allocated (deserialized) class instances
(this is identical to calling soap_destroy(struct soap *soap))
soap_unlink(struct soap *soap, void *p) Unlink data/object at p from gSOAP's deallocation chain
so gSOAP won't deallocate it
soap_done(struct soap *soap) Detach context (reset runtime context)
soap_free(struct soap *soap) Detach and free context (allocated with soap_new)

Temporary data (i.e. the hash tables) are automatically removed with calls to the soap_free_temp function which is also made by soap_end and soap_done or when the next call to a stub or skeleton routine is made to send a message or receive a message. Deallocation of non-class based data is straightforward: soap_end removes all dynamically allocated deserialized data (data allocated with soap_malloc. That is, when the client/service application does not use any class instances that are (de)marshalled, but uses structs, arrays, etc., then calling the soap_end function is safe to remove all deserialized data. The function can be called after processing the deserialized data of a service operation call or after a number of service operation calls have been made. The function is also typically called after soap_serve, when the service finished sending the response to a client and the deserialized client request data can be removed.
Individual data objects can be unlinked from the deallocation chain if necessary, to prevent deallocation by the collective soap_end or soap_destroy functions.

9.13.1  Memory Allocation and Management Policies

There are three situations to consider for memory deallocation policies for class instances:
  1. the program code deletes the class instances and the class destructors in turn SHOULD delete and free any dynamically allocated data (deep deallocation) without calling the soap_end and soap_destroy functions,
  2. or the class destructors SHOULD NOT deallocate any data and the soap_end and soap_destroy functions can be called to remove the data.
  3. or the class destructors SHOULD mark their own deallocation and mark the deallocation of any other data deallocated by it's destructors by calling the soap_unlink function. This allows soap_destroy and soap_end to remove the remaining instances and data without causing duplicate deallocations.
It is advised to use pointers to class instances that are used within other structs and classes to avoid the creation of temporary class instances during deserialization. The problem with temporary class instances is that the destructor of the temporary may affect data used by other instances through the sharing of data parts accessed with pointers. Temporaries and even whole copies of class instances can be created when deserializing SOAP multi-referenced objects. A dynamic array of class instances is similar: temporaries may be created to fill the array upon deserialization. To avoid problems, use dynamic arrays of pointers to class instances. This also enables the exchange of polymorphic arrays when the elements are instances of classes in an inheritance hierarchy. In addition, allocate data and class instances with soap_malloc and soap_new_X functions (more details below).
To summarize, it is advised to pass class data types by pointer to a service operation. For example:

class X { ... };
ns__remoteMethod(X *in, ...);

Response elements that are class data types can be passed by reference, as in:

class X { ... };
class ns__remoteMethodResponse { ... };
ns__remoteMethod(X *in, ns__remoteMethodResponse &out);

But dynamic arrays declared as class data types should use a pointer to a valid object that will be overwritten when the function is called, as in:

typedef int xsd__int;
class X { ... };
class ArrayOfint { xsd__int *__ptr; int __size; };
ns__remoteMethod(X *in, ArrayOfint *out);

Or a reference to a valid or NULL pointer, as in:

typedef int xsd__int;
class X { ... };
class ArrayOfint { xsd__int *__ptr; int __size; };
ns__remoteMethod(X *in, ArrayOfint *&out);

The gSOAP memory allocation functions can be used in client and/or service code to allocate temporary data that will be automatically deallocated. These functions are:

Function Call Description
void *soap_malloc(struct soap *soap, size_t n) return pointer to n bytes
Class *soap_new_Class(struct soap *soap) instantiate Class
Class *soap_new_Class(struct soap *soap, int n) instantiate array of n objects
Class *soap_new_set_Class(struct soap *soap, m1, ..., mn) instantiate and set members mi
Class *soap_new_req_Class(struct soap *soap, m1, ..., mn) instantiate and set required-only mi

The soap_new_X functions are generated by the gSOAP soapcpp2 compiler for every class X in the header file.
Space allocated with soap_malloc will be released with the soap_end and soap_dealloc functions. All objects instantiated with soap_new_X(struct soap*) are removed altogether with soap_destroy(struct soap*). To remove just a single object, use soap_delete_X(struct soap*, X*).
For example, the following service uses temporary data in the service operation implementation:

int main()
{ ...
   struct soap soap;
   soap_init(&soap);
   soap_serve(&soap);
   soap_end(&soap);
   ...
}

An example service operation that allocates a temporary string is:

int ns__itoa(struct soap *soap, int i, char **a)
{
   *a = (char*)soap_malloc(soap, 11);
   sprintf(*a, "%d", i);
   return SOAP_OK;
}

This temporary allocation can also be used to allocate strings for the SOAP Fault data structure. For example:

int ns__mymethod(...)
{ ...
   if (exception)
   {
      char *msg = (char*)soap_malloc(soap, 1024); // allocate temporary space for detailed message
      sprintf(msg, "...", ...); // produce the detailed message
      return soap_receiver_fault(soap, "An exception occurred", msg); // return the server-side fault
   }
   ...
}

Use soap_receiver_fault(struct soap *soap, const char *faultstring, const char *detail) to set a SOAP 1.1/1.2 fault at the server-side. Use soap_sender_fault(struct soap *soap, const char *faultstring, const char *detail) to set a SOAP 1.1/1.2 unrecoverable Bad Request fault at the server-side. Sending clients are not supposed to retry messages after a Bad Request, while errors at the receiver-side indicate temporary problems.
The above functions do not include a SOAP 1.2 Subcode element. To include Subcode element, use soap_receiver_fault_subcode(struct soap *soap, const char *subcode, const char *faultstring, const char *detail) to set a SOAP 1.1/1.2 fault with Subcode at the server-side. Use soap_sender_fault_subcode(struct soap *soap, const char *subcode, const char *faultstring, const char *detail) to set a SOAP 1.1/1.2 unrecoverable Bad Request fault with Subcode at the server-side.
gSOAP provides a function to duplicate a string into gSOAP's memory space:

char *soap_strdup(struct soap *soap, const char *s)

The function allocates space for s with soap_malloc, copies the string, and returns a pointer to the duplicated string. When s is NULL, the function does not allocate and copy the string and returns NULL.

9.13.2  Intra-Class Memory Management

When a class declaration has a struct soap * field, this field will be set to point to the current gSOAP runtime context by gSOAP's deserializers and by the soap_new_Class functions. This simplifies memory management for class instances. The struct soap* pointer is implicitly set by the gSOAP deserializer for the class or explicitly by calling the soap_new_X function for class X. For example:

class Sample
{ public:
   struct soap *soap; // reference to gSOAP's run-time
   ...
   Sample();
   ~Sample();
};

The constructor and destructor for class Sample are:

Sample::Sample()
{ this->soap = NULL;
}
Sample::~Sample()
{ soap_unlink(this->soap, this);
}

The soap_unlink() call removes the object from gSOAP's deallocation chain. In that way, soap_destroy can be safely called to remove all class instances. The following code illustrates the explicit creation of a Sample object and cleanup:

struct soap *soap = soap_new(); // new gSOAP runtime
Sample *obj = soap_new_Sample(soap); // new Sample object with obj->soap set to runtime
...
delete obj; // also calls soap_unlink to remove obj from the deallocation chain
soap_destroy(soap); // deallocate all (other) class instances
soap_end(soap); // clean up

Here is another example:

class ns__myClass
{ ...
   struct soap *soap; // set by soap_new_ns__myClass()
   char *name;
   void setName(const char *s);
   ...
};

Calls to soap_new_ns__myClass(soap) will set the soap field in the class instance to the current gSOAP context. Because the deserializers invoke the soap_new functions, the soap field of the ns__myClass instances are set as well. This mechanism is convenient when Web Service methods need to return objects that are instantiated in the methods. For example

int ns__myMethod(struct soap *soap, ...)
{
   ns__myClass *p = soap_new_ns__myClass(soap);
   p->setName("SOAP");
   return SOAP_OK;
}
void ns__myClass::ns__setName(const char *s)
{
   if (soap)
      name = (char*)soap_malloc(soap, strlen(s)+1);
   else 
      name = (char*)malloc(strlen(s)+1);
   strcpy(name, s);
}
ns__myClass::ns__myClass()
{
   soap = NULL;
   name = NULL;
}
ns__myClass::~ns__myClass()
{
   if (!soap && name) free(name);
   soap_unlink(soap, this);
}

Calling soap_destroy right after soap_serve in the Web Service will destroy all dynamically allocated class instances.

9.14  Debugging

To activate debugging and message logging, set the #define DEBUG macro on the compiler's command line (typically as a compiler option -DDEBUG) or in stdsoap2.h, and recompile your code together with stdsoap2.c or stdsoap2.cpp (instead of libgsoap). When using libgsoap and libgsoap++, reinstall the software with \.configure using option -enable-debug.
When your client and server applications run, they will log their activity in three separate files:

File Description
SENT.log The SOAP content transmitted by the application
RECV.log The SOAP content received by the application
TEST.log A log containing various activities performed by the application

Caution: The client and server applications may run slow due to the logging activity.
Hint: Set macro DEBUG_STAMP instead of DEBUG to add time stamps to TEST.log. This works on platforms supporting the gettimeofday function.
Caution: When installing a CGI application on the Web with debugging activated, the log files may sometimes not be created due to file access permission restrictions imposed on CGI applications. To get around this, create empty log files with universal write permissions. Be careful about the security implication of this.
You can test a service CGI application without deploying it on the Web. To do this, create a client application for the service and activate message logging by this client. Remove any old SENT.log file and run the client (which connects to the Web service or to another dummy, but valid address) and copy the SENT.log file to another file, e.g. SENT.tst. Then redirect the SENT.tst file to the service CGI application. For example,

> ./myservice.cgi < SENT.tst

This should display the service response on the terminal.
The file names of the log files and the logging activity can be controlled at the application level. This allows the creation of separate log files by separate services, clients, and threads. For example, the following service logs all SOAP messages (but no debug messages) in separate directories:

struct soap soap;
soap_init(&soap);
...
soap_set_recv_logfile(&soap, "logs/recv/service12.log"); // append all messages received in /logs/recv/service12.log
soap_set_sent_logfile(&soap, "logs/sent/service12.log"); // append all messages sent in /logs/sent/service12.log
soap_set_test_logfile(&soap, NULL); // no file name: do not save debug messages
...
soap_serve(&soap);
...

Likewise, messages can be logged for individual client-side service operation calls.

9.15  Generating an Auto Test Server for Client Testing

The soapcpp2 -T option generates an auto-test server application in soapTester.cpp, which is to be compiled and linked with the code generated for a server implementation, i.e. soapServer.cpp (or with the generated server object class) and soapC.cpp. The feature also supports C, so use the soapcpp2 -c option to generate C.
The auto-test server can be used to test a client application. Suppose the generated code is compiled into the executable named tester (compile soapServer.cpp, soapC.cpp, and stdsoap2.cpp or link libgsoap++). We can use the IO redirect to "send" it a message saved in a file, for example one of the sample request messages generated by soapcpp2:

> ./tester < example.req.xml

which then returns the response with default XML values displayed on the terminal.
To run the auto test service on a port to test a client against, use two command-line arguments. The first argument is the OR-ed values of the gSOAP runtime context flags such as SOAP_IO_KEEPALIVE (0x10 = 16) and the second argument is the port number:

> ./tester 16 8080

This starts an iterative stand-alone server on port 8080. This way, messages can be sent to http://localhost:8080 to test the client. The data in the response messages are copied from the request messages when possible, or XML default values, or empty otherwise.

9.16  Generating Deep Copy and Deletion Code

The soapcpp2 -Ec option generates deep copy code for each type T:
T * soap_dup_T(struct soap*, T *dst, const T *src) deep copy src into dst, replicating all deep cycles and shared pointers when a managing soap context is provided as argument. When dst is NULL, allocates space for dst. Deep copy is a tree when argument is NULL, but the presence of deep cycles will lead to non-termination. Use flag SOAP_XML_TREE with managing context to copy into a tree without cycles and pointers to shared objects. Returns dst (or allocated space when dst is NULL).
For classes T, also a deep copy method is generated with option -Ec:
virtual T * T::soap_dup(struct soap*) const returns a duplicate of this object by deep copying, replicating all deep cycles and shared pointers when a managing soap context is provided as argument. Deep copy is a tree when argument is NULL, but the presence of deep cycles will lead to non-termination. Use flag SOAP_XML_TREE with managing context to copy into a tree without cycles and pointers to shared objects.
The soapcpp2 -Ed option generates deep deletion code for each type T:
void soap_del_T(const T*) deletes all heap-allocated members of this object by deep deletion ONLY IF this object and all of its (deep) members are not managed by a soap context AND the deep structure is a tree (no cycles and co-referenced objects by way of multiple (non-smart) pointers pointing to the same data). Can be safely used after soap_dup(NULL) to delete the deep copy. Does not delete the object itself.
For classes T, also a deep deletion method is generated with option -Ed:
virtual void T::soap_del() const deletes all heap-allocated members of this object by deep deletion ONLY IF this object and all of its (deep) members are not managed by a soap context AND the deep structure is a tree (no cycles and co-referenced objects by way of multiple (non-smart) pointers pointing to the same data).Can be safely used after soap_dup(NULL) to delete the deep copy. Does not delete the object itself.

9.17  Required Libraries

  • The socket library is essential and requires the inclusion of the appropriate libraries with the compile command for Sun Solaris systems:

    > c++ -o myclient myclient.cpp stdsoap2.cpp soapC.cpp soapClient.cpp -lsocket -lxnet -lnsl

    These library loading options are not required with Linux.
  • The gSOAP runtime uses the math library for the NaN, INF, and -INF floating point representations. The library is not strictly necessary and the < math.h > header file import can be commented out from the stdsoap2.h header file. The application can be linked without the -lm math library e.g. under Sun Solaris:

    > c++ -o myclient myclient.cpp stdsoap2.cpp soapC.cpp soapClient.cpp -lsocket -lxnet -lnsl

10  The gSOAP Service Operation Specification Format

A service operation is specified as a C/C++ function prototype in a header file. The function is REQUIRED to return int, which is used to represent a SOAP error code, see Section 10.2. Multiple service operations MAY be declared together in one header file.
The general format of a service operation specification is:

[int] [namespace_prefix__]method_name([inparam1, inparam2, ...,] outparam);

where
namespace_prefix__
is the optional namespace prefix of the method (see identifier translation rules 10.3)
method_name
it the service operation name (see identifier translation rules 10.3)
inparam
is the declaration of an input parameter of the service operation
outparam
is the declaration of the output parameter of the service operation
This simple form can only pass a single, non-struct and non-class type output parameter. See 10.1 for passing multiple output parameters. The name of the declared function namespace_prefix__ method_name must be unique and cannot match the name of a struct, class, or enum declared in the same header file.
The method request is encoded in SOAP as an XML element and the namespace prefix, method name, and input parameters are encoded using the format:

<[namespace-prefix:]method_name xsi:type="[namespace-prefix:]method_name>
<inparam-name1 xsi:type="...">...</inparam-name1>
<inparam-name2 xsi:type="...">...</inparam-name2>
...
</[namespace-prefix:]method_name>

where the inparam-name accessors are the element-name representations of the inparam parameter name declarations, see Section 10.3. (The optional parts are shown enclosed in [].)
The XML response by the Web service is of the form:

<[namespace-prefix:]method-nameResponse xsi:type="[namespace-prefix:]method-nameResponse>
<outparam-name xsi:type="...">...</outparam-name>
</[namespace-prefix:]method-nameResponse>

where the outparam-name accessor is the element-name representation of the outparam parameter name declaration, see Section 10.3. By convention, the response element name is the method name ending in Response. See 10.1 on how to change the declaration if the service response element name is different.
The gSOAP soapcpp2 tool generates a stub routine for the service operation. This stub is of the form:

int soap_call_[namespace_prefix__]method_name(struct soap *soap, char *URL, char *action, [inparam1, inparam2, ...,] outparam);

This proxy can be called by a client application to perform the service operation call.
The gSOAP soapcpp2 tool generates a skeleton routine for the service operation. The skeleton function is:

int soap_serve_[namespace_prefix__]method_name(struct soap *soap);

The skeleton routine, when called by a service application, will attempt to serve a request on the standard input. If no request is present or if the request does not match the method name, SOAP_NO_METHOD is returned. The skeleton routines are automatically called by the generated soap_serve routine that handles all requests.

10.1  Service Operation Parameter Passing

The input parameters of a service operation MUST be passed by value. Input parameters cannot be passed by reference with the & reference operator, but an input parameter value MAY be passed by a pointer to the data. Of course, passing a pointer to the data is preferred when the size of the data of the parameter is large. Also, to pass instances of (derived) classes, pointers to the instance need to be used to avoid passing the instance by value which requires a temporary and prohibits passing derived class instances. When two input parameter values are identical, passing them using a pointer has the advantage that the value will be encoded only once as multi-reference (hence, the parameters are aliases). When input parameters are passed using a pointer, the data pointed to will not be modified by the service operation and returned to the caller.
The output parameter MUST be passed by reference using & or by using a pointer. Arrays are passed by reference by default and do not require the use of the reference operator &.
The input and output parameter types have certain limitations, see Section 9.10
If the output parameter is a struct or class type, it is considered a service operation response element instead of a simple output parameter value. That is, the name of the struct or class is the name of the response element and the struct or class fields are the output parameters of the service operation, see also 7.1.7. Hence, if the output parameter has to be a struct or class, a response struct or class MUST be declared as well. In addition, if a service operation returns multiple output parameters, a response struct or class MUST be declared. By convention, the response element is the service operation name ending with "Response".
The general form of a response element declaration is:

struct [namespace_prefix__]response_element_name
{
   outparam1;
   outparam2;
   ...
};

where
namespace_prefix__
is the optional namespace prefix of the response element (see identifier translation rules 10.3)
response_element_name
it the name of the response element (see identifier translation rules 10.3)
outparam
is the declaration of an output parameter of the service operation
The general form of a service operation specification with a response element declaration for (multiple) output parameters is:

[int] [namespace_prefix__]method_name([inparam1, inparam2, ...,] struct [namespace_prefix__]response_element_name {outparam1[, outparam2, ...]} &anyparam);

The choice of name for anyparam has no effect on the SOAP encoding and decoding and is only used as a place holder for the response.
The method request is encoded in SOAP as an independent element and the namespace prefix, method name, and input parameters are encoded using the format:

<[namespace-prefix:]method-name xsi:type="[namespace-prefix:]method-name>
<inparam-name1 xsi:type="...">...</inparam-name1>
<inparam-name2 xsi:type="...">...</inparam-name2>
...
</[namespace-prefix:]method-name>

where the inparam-name accessors are the element-name representations of the inparam parameter name declarations, see Section 10.3. (The optional parts resulting from the specification are shown enclosed in [].)
The method response is expected to be of the form:

<[namespace-prefix:]response-element-name xsi:type="[namespace-prefix:]response-element-name>
<outparam-name1 xsi:type="...">...</outparam-name1>
<outparam-name2 xsi:type="...">...</outparam-name2>
...
</[namespace-prefix:]response-element-name>

where the outparam-name accessors are the element-name representations of the outparam parameter name declarations, see Section 10.3. (The optional parts resulting from the specification are shown enclosed in [].)
The input and/or output parameters can be made anonymous, which allows the deserialization of requests/responses with different parameter names as is endorsed by the SOAP 1.1 specification, see Section 7.1.13.

10.2  Error Codes

The error codes returned by the stub and skeleton routines are listed below.

Code Description
SOAP_OK No error
SOAP_CLI_FAULT* The service returned a client fault (SOAP 1.2 Sender fault)
SOAP_SVR_FAULT* The service returned a server fault (SOAP 1.2 Receiver fault)
SOAP_TAG_MISMATCH An XML element didn't correspond to anything expected
SOAP_TYPE An XML Schema type mismatch
SOAP_SYNTAX_ERROR An XML syntax error occurred on the input
SOAP_NO_TAG Begin of an element expected, but not found
SOAP_IOB Array index out of bounds
SOAP_MUSTUNDERSTAND* An element needs to be ignored that need to be understood
SOAP_NAMESPACE Namespace name mismatch (validation error)
SOAP_FATAL_ERROR Internal error
SOAP_USER_ERROR User error (reserved for soap.user usage
SOAP_FAULT An exception raised by the service
SOAP_NO_METHOD The dispatcher did not find a matching operation for a request
SOAP_NO_DATA No data in HTTP message
SOAP_GET_METHOD HTTP GET operation not handled, see Section 19.10
SOAP_EOM Out of memory
SOAP_MOE Memory overflow/corruption error (DEBUG mode)
SOAP_NULL An element was null, while it is not supposed to be null
SOAP_DUPLICATE_ID Element's ID duplicated (multi-ref encoding)
SOAP_MISSING_ID Element ID missing for an href/ref (multi-ref encoding)
SOAP_HREF Reference to object is incompatible with the object refered to
SOAP_UTF_ERROR An UTF-encoded message decoding error occured
SOAP_UDP_ERROR Message too large to store in UDP packet
SOAP_TCP_ERROR A connection error occured
SOAP_HTTP_ERROR An HTTP error occured
SOAP_NTLM_ERROR An NTLM authentication handshake error occured
SOAP_SSL_ERROR An SSL error occured
SOAP_ZLIB_ERROR A Zlib error occured
SOAP_PLUGIN_ERROR Failed to register plugin
SOAP_MIME_ERROR MIME parsing error
SOAP_MIME_HREF MIME attachment has no href from SOAP body error
SOAP_MIME_END End of MIME attachments protocol error
SOAP_DIME_ERROR DIME formatting error or DIME size exceeds SOAP_MAXDIMESIZE
SOAP_DIME_END End of DIME attachments protocol error
SOAP_DIME_HREF DIME attachment has no href from SOAP body
(and no DIME callbacks were defined to save the attachment)
SOAP_DIME_MISMATCH DIME version/transmission error
SOAP_VERSIONMISMATCH* SOAP version mismatch or no SOAP message
SOAP_DATAENCODINGUNKNOWN SOAP 1.2 DataEncodingUnknown fault
SOAP_REQUIRED Attributed required validation error
SOAP_PROHIBITED Attributed prohibited validation error
SOAP_LEVEL XML nesting depth level exceeds SOAP_MAXLEVEL
SOAP_OCCURS Element minOccurs/maxOccurs validation error or SOAP_MAXOCCURS exceeded
SOAP_LENGTH Element length validation error or SOAP_MAXLENGTH exceeded
SOAP_FD_EXCEEDED Too many open sockets
(for non-win32 systems not supporting poll())
SOAP_EOF Unexpected end of file, no input, or timeout receiving data
SOAP_ERR Error (for internal use)

The error codes that are returned by a stub routine (proxy) upon receiving a SOAP Fault from the server are marked (*). The remaining error codes are generated by the proxy itself as a result of problems with a SOAP payload. The error code is SOAP_OK when the service operation call was successful (the SOAP_OK predefined constant is guaranteed to be 0). The error code is also stored in soap.error, where soap is a variable that contains the current runtime context. The function soap_print_fault(struct soap *soap, FILE *fd) can be called to display an error message on fd where current value of the soap.error variable is used by the function to display the error. Use soap_stream_fault(struct soap *soap, std::ostream& os) in C++. The function soap_print_fault_location(struct soap *soap, FILE *fd) prints the location of the error if the error is a result from parsing XML. Use soap_print_stream_location(struct soap *soap, std::ostream& os) in C++. Use soap_sprint_fault(struct soap*, char *buf, size_t len) to print the error to a string.
A service operation implemented in a SOAP service MUST return an error code as the function's return value. SOAP_OK denotes success and SOAP_FAULT denotes an exception. The exception details can be assigned with the soap_receiver_fault(struct soap *soap, const char *faultstring, const char *detail) which sets the strings soap.fault->faultstring and soap.fault->detail for SOAP 1.1, and soap.fault->SOAP_ENV__Reason and soap.fault->SOAP_ENV__Detail for SOAP 1.2, where soap is a variable that contains the current runtime context, see Section 12. A receiver error indicates that the service can't handle the request, but can possibly recover from the error. To return an unrecoverable SOAP 1.1/1.2 error, use soap_sender_fault(struct soap *soap, const char *faultstring, const char *detail).
To return a HTTP error code a service method can simply return the HTTP error code number. For example, return 404; returns a "404 Not Found" HTTP error back to the client. The soap.error is set to the HTTP error code at the client side. The HTTP 1.1 error codes are:

# Error
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported

The error codes are given for informational purposes only. The HTTP protocol requires the proper actions after an error is issued. gSOAP's HTTP 1.0/1.1 handling is automatic.

10.3  C/C++ Identifier Name to XML Tag Name Mapping

One of the "secrets" behind the power and flexibility of gSOAP's encoding and decoding of service operation names, class names, type identifiers, and struct or class fields is the ability to specify namespace prefixes with these names that are used to denote their encoding style. More specifically, a C/C++ identifier name of the form

[namespace_prefix__]element_name

where the prefix and the element name are separated by double underscores will be encoded in XML as

<[namespace-prefix:]element-name ...>

The underscore pair (__) separates the namespace prefix from the element name. Each namespace prefix has a namespace URI specified by a namespace mapping table 10.4, see also Section 7.1.2. The namespace URI is a unique identification that can be associated with the service operations and data types. The namespace URI disambiguates potentially identical service operation names and data type names used by disparate organizations.
XML element names are NCNames (restricted strings) that MAY contain hyphens, dots, and underscores. The special characters in the XML element names of service operations, structs, classes, typedefs, and fields can be controlled using the following conventions: A single underscore in a namespace prefix or identifier name is replaced by a hyphen (-) in the XML element name. For example, the identifier name SOAP_ENC__ur_type is represented in XML as SOAP-ENC:ur-type. The sequence _DOT is replaced by a dot (.), and the sequence _USCORE is replaced by an underscore (_) in the corresponding XML element name. For example:

class n_s__biz_DOTcom
{
   char *n_s__biz_USCOREname;
};

is encoded in XML as:

<n-s:biz.com xsi:type="n-s:biz.com">
   <n-s:biz_name xsi:type="string">Bizybiz</n-s:biz_name>
</n-s:biz.com>

Trailing underscores of an identifier name are not translated into the XML representation. This is useful when an identifier name clashes with a C++ keyword. For example, return is often used as an accessor name in a SOAP response element. The return element can be specified as return_ in the C++ source code. Note that XML should be treated as case sensitive, so the use of e.g. Return may not always work to avoid a name clash with the return keyword. The use of trailing underscores also allows for defining structs and classes with essentially the same XML Schema type name, but that have to be distinguished as seperate C/C++ types.
For decoding, the underscores in identifier names act as wildcards. An XML element is parsed and matches the name of an identifier if the name is identical to the element name (case insensitive) and the underscores in the identifier name are allowed to match any character in the element name. For example, the identifier name I_want__soap_fun_the_bea___DOTcom matches the element name I-want:SOAP4fun@the-beach.com.
By default, soapcpp2 generates data bindings in which all XML elements are and attributes are unqualified:

//gsoap x schema namespace: urn:x
struct x__record
{
   @char * type;
   char * name;
};

where the name element and the type attribute are unqualified in the XML content (for example to facilitate SOAP RPC encoding).
To force qualification of elements and attributes, use the "form" directive:

//gsoap x schema namespace: urn:x
//gsoap x schema form: qualified
struct x__record
{
   @char * type;
   char * name;
};

You can also use "elementForm" and "attributeForm" directives to (un)qualify local element and attributes, respectively.
Because the soapcpp2-generated serializers follow the qualified/unqualified forms of the schemas, there is normally no need to explicitly qualify struct/class members because automatic encoding rules will be used.
If explicit qualification is needed, this can be done using the prefix convention:

//gsoap x schema namespace: urn:x
//gsoap y schema namespace: urn:y
struct x__record
{
   @char * xsi__type;
   char * y__name;
};

which ensures that there cannot be any name clashes between members of the same name defined in different schemas (consider for example name and y__name), but this can clutter the representation when clashes do not occur.
An alternative to the prefix convention is the use of "colon notation" in the gSOAP header file. This deviation from the C/C++ syntax allows you to bind type names and struct and class members to qualified and unqualified XML tag names explicitly, thus bypassing the default mechanism that automatically qualifies or unqualifies element and attribute tag names based on the schema element/attribute form.
The colon notation for type names, struct/class names and members overrides the prefix qualification rules explicitly:

//gsoap x schema namespace: urn:x
//gsoap y schema namespace: urn:y
struct x:record
{
   @char * xsi:type;
   char * y:name;
};

where x and y are namespace prefixes that MUST be declared with a directive. The xsi:type member is an XML attribute in the xsi namespace. The soapcpp2 tool maps this to the following struct without the annotations:

// This code is generated from the above by soapcpp2 in soapStub.h:
struct record
{
   char *type; /* optional attribute of type xsd:string */
   char *name; /* optional element of type xsd:string */
};

The soapcpp2 tool also generates XML schemas with element and attribute references. That is, y:name is referenced from the y schema by the x:record complexType defined in the x schema.
The colon notation also allows you to override the element/attribute form to unqualified for qualified schemas:

//gsoap x schema namespace: urn:x
//gsoap x schema form: qualified
struct x:record
{
   @char * :type;
   char * :name;
};

where the colon notation ensures that both type and name are unqualified in the XML content, which overrides the default qualified forms of the x schema.
Note that the use of colon notation to bind namespace prefixes to type names (typedef, enum, struct, and class names) translates to code without the prefixes. This means that name clashes can occur between types with identical unquaified names:

enum x:color { RED, WHITE, BLUE };
enum y:color { YELLOW, ORANGE }; // illegal enum name: name clash with x:color

while prefixing with double underscores never lead to clashes:

enum x__color { RED, WHITE, BLUE };
enum y__color { YELLOW, ORANGE }; // no name clash

Also note that colon notation has a very different role than the C++ scope operator ::. The scope operator cannot be used in places where we need colon notation, such as struct/class member fields.
The default mechanism that associates XML tag names with the names of struct and class member fields can be overriden by "retagging" names with the annotation of `tag` placed next to the member field name. This is particularly useful to support legacy code for which the fixed naming of member fields cannot be easily changed. For example:

//gsoap x schema namespace: urn:x
//gsoap x schema form: qualified
struct x:record
{
   @char * t `type`;
   char * s `full-name`;
};

This maps the t member to the x:type XML attribute tag and s member to the x:full-name XML element tag. Note that both tags are namespace qualified as per schema declaration.
As of gSOAP 2.8.23, Unicode characters in C/C++ identifiers are accepted by soapcpp2 when the source file is encoded in UTF8. C/C++ Unicode names are mapped to Unicode XML tags. For C/C++ source code portability reasons, the wsdl2h tool still converts Unicode XML tag names to ASCII C/C++ identifiers using the _xHHHH naming convention for HHHH character code points. Option wsdl2h -U maps Unicode letters in XML tag names to UTF8-encoded Unicode letters in C/C++ identifiers.

10.4  Namespace Mapping Table

A namespace mapping table MUST be defined by clients and service applications. The mapping table is used by the serializers and deserializers of the stub and skeleton routines to produce a valid SOAP payload and to validate an incoming SOAP payload. A typical mapping table is shown below:

struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name"}
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"}, // MUST be first
   {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"}, // MUST be second
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"}, // MUST be third
   {"xsd", "http://www.w3.org/2001/XMLSchema"}, // Required for XML Schema types
   {"ns1", "urn:my-service-URI"}, // The namespace URI of the service operations
   {NULL, NULL} // end of table
};

Each namespace prefix used by a identifier name in the header file specification (see Section 10.3) MUST have a binding to a namespace URI in the mapping table. The end of the namespace mapping table MUST be indicated by the NULL pair. The namespace URI matching is case insensitive. A namespace prefix is distinguished by the occurrence of a pair of underscores (__) in an identifier.
An optional namespace pattern MAY be provided with each namespace mapping table entry. The patterns provide an alternative namespace matching for the validation of decoded SOAP messages. In this pattern, dashes (-) are single-character wildcards and asterisks (*) are multi-character wildcards. For example, to decode different versions of XML Schema type with different authoring dates, four dashes can be used in place of the specific dates in the namespace mapping table pattern:

struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name", "ns-name validation pattern"}
...
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/----/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/----/XMLSchema"},
...

Or alternatively, asterisks can be used as wildcards for multiple characters:

struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name", "ns-name validation pattern"}
...
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"},
...

A namespace mapping table is automatically generated together with a WSDL file for each namespace prefix that is used for a service operation specified in the header file. This namespace mapping table has entries for all namespace prefixes. The namespace URIs need to be filled in. These appear as http://tempuri.org in the table. See Section 19.2 on how to specify the namespace URIs in the header file.
For decoding elements with namespace prefixes, the namespace URI associated with the namespace prefix (through the xmlns attribute of an XML element) is searched from the beginning to the end in a namespace mapping table, and for every row the following tests are performed as part of the validation process:
  1. the string in the second column matches the namespace URI (case insensitive)
  2. the string in the optional third column matches the namespace URI (case insensitive), where - is a one-character wildcard and * is a multi-character wildcard
When a match is found, the namespace prefix in the first column of the table is considered semantically identical to the namespace prefix used by the XML element to be decoded, though the prefix names may differ. A service will respond with the namespace that it received from a client in case it matches a pattern in the third column.
For example, let's say we have the following structs:

struct a__elt { ... };
struct b__elt { ... };
struct k__elt { ... };

and a namespace mapping table in the program:

struct Namespace namespaces[] =
{   // {"ns-prefix", "ns-name", "ns-name validation pattern"}
...
   {"a", "some uri"},
   {"b", "other uri"},
   {"c", "his uri", "* uri"},
...

Then, the following XML elements will match the structs:

<n:elt xmlns:n="some URI">       matches the struct name a__elt
...
<m:elt xmlns:m="other URI">       matches the struct name b__elt
...
<k:elt xmlns:k="my URI">       matches the struct name c__elt
...

The response of a service to a client request that uses the namespaces listed above, will include my URI for the name space of element k.
It is possible to use a number of different namespace tables and select the one that is appropriate. For example, an application might contact many different Web services all using different namespace URIs. If all the URIs are stored in one table, each service operation invocation will dump the whole namespace table in the SOAP payload. There is no technical problem with that, but it can be ugly when the table is large. To use different namespace tables, declare a pointer to a table and set the pointer to a particular table before service operation invocation. For example:

struct Namespace namespacesTable1[] = { ... };
struct Namespace namespacesTable2[] = { ... };
struct Namespace namespacesTable3[] = { ... };
struct Namespace *namespaces;
...
struct soap soap;
...
soap_init(&soap);
soap_set_namespaces(&soap, namespaceTable1);
soap_call_remote_method(&soap, URL, Action, ...);
...

11  gSOAP Serialization and Deserialization Rules

This section describes the serialization and deserialization of C and C++ data types for SOAP 1.1 and 1.2 compliant encoding and decoding.

11.1  SOAP RPC Encoding Versus Document/Literal and xsi:type Info

The wsdl2h tool automatically generates a header file specialized for SOAP RPC encoding or document/literal style. The serialization and deserialization rules for C/C++ objects is almost identical for these styles, except for the following important issues.
With SOAP RPC encoding style, care must be taken to ensure typed messages are produced for interoperability and compatibility reasons. To ensure that the gSOAP engine automatically generates typed (xsi:type attributed) messages, use soapcpp2 option -t, see also Section 9.1. While gSOAP can handle untyped messages, some toolkits fail to find deserializers when the xsi:type information is absent.
When starting the development of a gSOAP application from a header file, the soapcpp2 compiler will generate WSDL and schema files for SOAP 1.1 document/literal style by default (use the //gsoap directives to control this, see Section 19.2). Use soapcpp2 options -2, -e, and -t to generate code for SOAP 1.2, RPC encoding, and typed messages.
With SOAP RPC encoding, generic complexTypes with maxOccurs="unbounded" are not allowed and SOAP encoded arrays must be used. Also XML attributes and unions (XML schema choice) are not allowed with SOAP RPC encoding.
Also with SOAP RPC encoding, multi-reference accessors are common to encode co-referenced objects and object digraphs. Multi-reference encoding is not supported in document/literal style, which means that cyclic object digraphs cannot be serialized (the engine will crash). Also DAGs are represented as XML trees in document/literal style messaging.

11.2  Primitive Type Encoding

The default encoding rules for the primitive C and C++ data types are given in the table below:

Type XSD Type
bool boolean
char* (C string) string
char byte
long double decimal (with #import "custom/long_double.h")
double double
float float
int int
long long
LONG64 long
long long long
short short
time_t dateTime
struct tm dateTime (with #import "custom/struct_tm.h")
unsigned char unsignedByte
unsigned int unsignedInt
unsigned long unsignedLong
ULONG64 unsignedLong
unsigned long long unsignedLong
unsigned short unsignedShort
wchar_t* string

Objects of type void and void* cannot be encoded. Enumerations and bit masks are supported as well, see 11.4.

11.3  How to Represent Primitive C/C++ Types as XSD Types

By default, encoding of the primitive types will take place as per SOAP encoding style. The encoding can be changed to any XML Schema type (XSD type) with an optional namespace prefix by using a typedef in the header file input to the gSOAP soapcpp2 tool. The declaration enables the implementation of built-in XML Schema types (also known as XSD types) such as positiveInteger, xsd:anyURI, and xsd:date for which no built-in data structures in C and C++ exist but which can be represented using standard data structures such as strings, integers, and floats.
The typedef declaration is frequently used for convenience in C. A typedef declares a type name for a (complex) type expression. The type name can then be used in other declarations in place of the more complex type expression, which often improves the readability of the program code.
The gSOAP soapcpp2 compiler interprets typedef declarations the same way as a regular C compiler interprets them, i.e. as types in declarations. In addition however, the gSOAP soapcpp2 compiler will also use the type name in the encoding of the data in SOAP. The typedef name will appear as the XML element name of an independent element and as the value of the xsi:type attribute in the SOAP payload.
Many built-in primitive and derived XSD types such as xsd:anyURI, positiveInteger, and decimal can be stored by standard primitive data structures in C++, such as strings, integers, floats, and doubles. To serialize strings, integers, floats, and doubles as built-in primitive and derived XSD types, a typedef declaration can be used to declare an XSD type.
For example, the declaration

typedef unsigned int xsd__positiveInteger;

creates a named type positiveInteger which is represented by unsigned int in C++. For example, the encoding of a positiveInteger value 3 is

<positiveInteger xsi:type="xsd:positiveInteger">3</positiveInteger>

The built-in XML Schema datatype hierarchy from the XML Schema Part 2 documentation http://www.w3.org/TR/xmlschema-2 is depicted below.
Figure 1: Built-in Datatype Hierarchy
The built-in primitive and derived numerical XML Schema types are listed below together with their recommended typedef declarations. Note that the SOAP encoding schemas for primitive types are derived from the built-in XML Schema types, so SOAP_ENC__ can be used as a namespace prefix instead of xsd__.
xsd:anyURI
Represents a Uniform Resource Identifier Reference (URI). Each URI scheme imposes specialized syntax rules for URIs in that scheme, including restrictions on the syntax of allowed fragment identifiers. It is recommended to use strings to store xsd:anyURI XML Schema types. The recommended type declaration is:

typedef char *xsd__anyURI;

xsd:base64Binary
Represents Base64-encoded arbitrary binary data. For using the xsd:base64Binary XSD Schema type, the use of the base64Binary representation of a dynamic array is strongly recommended, see Section 11.12. However, the type can also be declared as a string and the encoding will be string-based:

typedef char *xsd__base64Binary;

With this approach, it is the responsibility of the application to make sure the string content is according to the Base64 Content-Transfer-Encoding defined in Section 6.8 of RFC 2045.
xsd:boolean
For declaring an xsd:boolean XSD Schema type, the use of a bool is strongly recommended. If a pure C compiler is used that does not support the bool type, see Section 11.4.5. The corresponding type declaration is:

typedef bool xsd__boolean;

Type xsd__boolean declares a Boolean (0 or 1), which is encoded as

<xsd:boolean xsi:type="xsd:boolean">...</xsd:boolean>

xsd:byte
Represents a byte (-128...127). The corresponding type declaration is:

typedef char xsd__byte;

Type xsd__byte declares a byte which is encoded as

<xsd:byte xsi:type="xsd:byte">...</xsd:byte>

xsd:dateTime
Represents a date and time. The lexical representation is according to the ISO 8601 extended format CCYY-MM-DDThh:mm:ss where "CC" represents the century, "YY" the year, "MM" the month and "DD" the day, preceded by an optional leading "-" sign to indicate a negative number. If the sign is omitted, "+" is assumed. The letter "T" is the date/time separator and "hh", "mm", "ss" represent hour, minute and second respectively. It is recommended to use the time_t type to store xsd:dateTime XSD Schema types and the type declaration is:

typedef time_t xsd__dateTime;

However, note that calendar times before the year 1902 or after the year 2037 cannot be represented. Upon receiving a date outside this range, the time_t value will be set to -1.
Strings (char*) can be used to store xsd:dateTime XSD Schema types. The type declaration is:

typedef char *xsd__dateTime;

In this case, it is up to the application to read and set the dateTime representation.
xsd:date
Represents a date. The lexical representation for date is the reduced (right truncated) lexical representation for dateTime: CCYY-MM-DD. It is recommended to use strings (char*) to store xsd:date XSD Schema types. The type declaration is:

typedef char *xsd__date;

xsd:decimal
Represents arbitrary precision decimal numbers. It is recommended to use the double type to store xsd:decimal XSD Schema types and the type declaration is:

typedef double xsd__decimal;

Type xsd__decimal declares a double floating point number which is encoded as

<xsd:double xsi:type="xsd:decimal">...</xsd:double>

xsd:double
Corresponds to the IEEE double-precision 64-bit floating point type. The type declaration is:

typedef double xsd__double;

Type xsd__double declares a double floating point number which is encoded as

<xsd:double xsi:type="xsd:double">...</xsd:double>

xsd:duration
Represents a duration of time. The lexical representation for duration is the ISO 8601 extended format PnYn MnDTnH nMnS, where nY represents the number of years, nM the number of months, nD the number of days, T is the date/time separator, nH the number of hours, nM the number of minutes and nS the number of seconds. The number of seconds can include decimal digits to arbitrary precision. It is recommended to use strings (char*) to store xsd:duration XSD Schema types. The type declaration is:

typedef char *xsd__duration;

xsd:float
Corresponds to the IEEE single-precision 32-bit floating point type. The type declaration is:

typedef float xsd__float;

Type xsd__float declares a floating point number which is encoded as

<xsd:float xsi:type="xsd:float">...</xsd:float>

xsd:hexBinary
Represents arbitrary hex-encoded binary data. It has a lexical representation where each binary octet is encoded as a character tuple, consisting of two hexadecimal digits ([0-9a-fA-F]) representing the octet code. For example, "0FB7" is a hex encoding for the 16-bit integer 4023 (binary representation is 111110110111. For using the xsd:hexBinary XSD Schema type, the use of the hexBinary representation of a dynamic array is strongly recommended, see Section 11.13. However, the type can also be declared as a string and the encoding will be string-based:

typedef char *xsd__hexBinary;

With this approach, it is solely the responsibility of the application to make sure the string content consists of a sequence of octets.
xsd:int
Corresponds to a 32-bit integer in the range -2147483648 to 2147483647. If the C++ compiler supports 32-bit int types, the type declaration can use the int type:

typedef int xsd__int;

Otherwise, the C++ compiler supports 16-bit int types and the type declaration should use the long type:

typedef long xsd__int;

Type xsd__int declares a 32-bit integer which is encoded as

<xsd:int xsi:type="xsd:int">...</xsd:int>

xsd:integer
Corresponds to an unbounded integer. Since C++ does not support unbounded integers as a standard feature, the recommended type declaration is:

typedef long long xsd__integer;

Type xsd__integer declares a 64-bit integer which is encoded as an unbounded xsd:integer:

<xsd:integer xsi:type="xsd:integer">...</xsd:integer>

Another possibility is to use strings to represent unbounded integers and do the translation in code.
xsd:long
Corresponds to a 64-bit integer in the range -9223372036854775808 to 9223372036854775807. The type declaration is:

typedef long long xsd__long;

Or in Visual C++:

typedef LONG64 xsd__long;

Type xsd__long declares a 64-bit integer which is encoded as

<xsd:long xsi:type="xsd:long">...</xsd:long>

xsd:negativeInteger
Corresponds to a negative unbounded integer ( < 0). Since C++ does not support unbounded integers as a standard feature, the recommended type declaration is:

typedef long long xsd__negativeInteger;

Type xsd__negativeInteger declares a 64-bit integer which is encoded as a xsd:negativeInteger:

<xsd:negativeInteger xsi:type="xsd:negativeInteger">...</xsd:negativeInteger>

Another possibility is to use strings to represent unbounded integers and do the translation in code.
xsd:nonNegativeInteger
Corresponds to a non-negative unbounded integer ( > 0). Since C++ does not support unbounded integers as a standard feature, the recommended type declaration is:

typedef unsigned long long xsd__nonNegativeInteger;

Type xsd__nonNegativeInteger declares a 64-bit unsigned integer which is encoded as a non-negative unbounded xsd:nonNegativeInteger:

<xsd:nonNegativeInteger xsi:type="xsd:nonNegativeInteger">...</xsd:nonNegativeInteger>

Another possibility is to use strings to represent unbounded integers and do the translation in code.
xsd:nonPositiveInteger
Corresponds to a non-positive unbounded integer ( ≤ 0). Since C++ does not support unbounded integers as a standard feature, the recommended type declaration is:

typedef long long xsd__nonPositiveInteger;

Type xsd__nonPositiveInteger declares a 64-bit integer which is encoded as a xsd:nonPositiveInteger:

<xsd:nonPositiveInteger xsi:type="xsd:nonPositiveInteger">...</xsd:nonPositiveInteger>

Another possibility is to use strings to represent unbounded integers and do the translation in code.
xsd:normalizedString
Represents normalized character strings. Normalized character strings do not contain the carriage return (#xD), line feed (#xA) nor tab (#x9) characters. It is recommended to use strings to store xsd:normalizeString XSD Schema types. The type declaration is:

typedef char *xsd__normalizedString;

Type xsd__normalizedString declares a string type which is encoded as

<xsd:normalizedString xsi:type="xsd:normalizedString">...</xsd:normalizedString>

It is solely the responsibility of the application to make sure the strings do not contain carriage return (#xD), line feed (#xA) and tab (#x9) characters.
xsd:positiveInteger
Corresponds to a positive unbounded integer ( ≥ 0). Since C++ does not support unbounded integers as a standard feature, the recommended type declaration is:

typedef unsigned long long xsd__positiveInteger;

Type xsd__positiveInteger declares a 64-bit unsigned integer which is encoded as a xsd:positiveInteger:

<xsd:positiveInteger xsi:type="xsd:positiveInteger">...</xsd:positiveInteger>

Another possibility is to use strings to represent unbounded integers and do the translation in code.
xsd:short
Corresponds to a 16-bit integer in the range -32768 to 32767. The type declaration is:

typedef short xsd__short;

Type xsd__short declares a short 16-bit integer which is encoded as

<xsd:short xsi:type="xsd:short">...</xsd:short>

xsd:string
Represents character strings. The type declaration is:

typedef char *xsd__string;

Type xsd__string declares a string type which is encoded as

<xsd:string xsi:type="xsd:string">...</xsd:string>

The type declaration for wide character strings is:

typedef wchar_t *xsd__string;

Both type of strings can be used at the same time, but requires one typedef name to be changed by appending an underscore which is invisible in XML. For example:

typedef wchar_t *xsd__string_;

xsd:time
Represents a time. The lexical representation for time is the left truncated lexical representation for dateTime: hh:mm:ss.sss with optional following time zone indicator. It is recommended to use strings (char*) to store xsd:time XSD Schema types. The type declaration is:

typedef char *xsd__time;

xsd:token
Represents tokenized strings. Tokens are strings that do not contain the line feed (#xA) nor tab (#x9) characters, that have no leading or trailing spaces (#x20) and that have no internal sequences of two or more spaces. It is recommended to use strings to store xsd:token XSD Schema types. The type declaration is:

typedef char *xsd__token;

Type xsd__token declares a string type which is encoded as

<xsd:token xsi:type="xsd:token">...</xsd:token>

It is solely the responsibility of the application to make sure the strings do not contain the line feed (#xA) nor tab (#x9) characters, that have no leading or trailing spaces (#x20) and that have no internal sequences of two or more spaces.
xsd:unsignedByte
Corresponds to an 8-bit unsigned integer in the range 0 to 255. The type declaration is:

typedef unsigned char xsd__unsignedByte;

Type xsd__unsignedByte declares a unsigned 8-bit integer which is encoded as

<xsd:unsignedByte xsi:type="xsd:unsignedByte">...</xsd:unsignedByte>

xsd:unsignedInt
Corresponds to a 32-bit unsigned integer in the range 0 to 4294967295. If the C++ compiler supports 32-bit int types, the type declaration can use the int type:

typedef unsigned int xsd__unsignedInt;

Otherwise, the C++ compiler supports 16-bit int types and the type declaration should use the long type:

typedef unsigned long xsd__unsignedInt;

Type xsd__unsignedInt declares an unsigned 32-bit integer which is encoded as

<xsd:unsignedInt xsi:type="xsd:unsignedInt">...</xsd:unsignedInt>

xsd:unsignedLong
Corresponds to a 64-bit unsigned integer in the range 0 to 18446744073709551615. The type declaration is:

typedef unsigned long long xsd__unsignedLong;

Or in Visual C++:

typedef ULONG64 xsd__unsignedLong;

Type xsd__unsignedLong declares an unsigned 64-bit integer which is encoded as

<xsd:unsignedLong xsi:type="xsd:unsignedLong">...</xsd:unsignedLong>

xsd:unsignedShort
Corresponds to a 16-bit unsigned integer in the range 0 to 65535. The type declaration is:

typedef unsigned short xsd__unsignedShort;

Type xsd__unsginedShort declares an unsigned short 16-bit integer which is encoded as

<xsd:unsignedShort xsi:type="xsd:unsignedShort">...</xsd:unsignedShort>

Other XSD Schema types such as gYearMonth, gYear, gMonthDay, gDay, xsd:gMonth, QName, NOTATION, etc., can be encoded similarly using a typedef declaration.

11.3.1  How to Use Multiple C/C++ Types for a Single Primitive XSD Type

Trailing underscores (see Section 10.3) can be used in the type name in a typedef to enable the declaration of multiple storage formats for a single XML Schema type. For example, one part of a C/C++ application's data structure may use plain strings while another part may use wide character strings. To enable this simultaneous use, declare:

typedef char *xsd__string;
typedef wchar_t *xsd__string_;

Now, the xsd__string and xsd__string_ types will both be encoded and decoded as XML string types and the use of trailing underscores allows multiple declarations for a single XML Schema type.

11.3.2  How to use C++ Wrapper Classes to Specify Polymorphic Primitive Types

SOAP 1.1 supports polymorphic types, because XSD Schema types form a hierarchy. The root of the hierarchy is called xsd:anyType (xsd:ur-type in the older 1999 schema). So, for example, an array of xsd:anyType in SOAP may actually contain any mix of element types that are the derived types of the root type. The use of polymorphic types is indicated by the WSDL and schema descriptions of a Web service and can therefore be predicted/expected for each particular case.
On the one hand, the typedef construct provides a convenient way to associate C/C++ types with XML Schema types and makes it easy to incorporate these types in a (legacy) C/C++ application. However, on the other hand the typedef declarations cannot be used to support polymorphic XML Schema types. Most SOAP clients and services do not use polymorphic types. In case they do, the primitive polymorphic types can be declared as a hierarchy of C++ classes that can be used simultaneously with the typedef declarations.
The general form of a primitive type declaration that is derived from a super type is:

class xsd__type_name: [public xsd__super_type_name]
{ public: Type __item;
   [public:] [private] [protected:]
   method1;
   method2;
   ...
};

where Type is a primitive C type. The __item field MUST be the first field in this wrapper class.
For example, the XML Schema type hierarchy can be copied to C++ with the following declarations:

class xsd__anyType { };
class xsd__anySimpleType: public xsd__anyType { };
typedef char *xsd__anyURI;
class xsd__anyURI_: public xsd__anySimpleType { public: xsd__anyURI __item; };
typedef bool xsd__boolean;
class xsd__boolean_: public xsd__anySimpleType { public: xsd__boolean __item; };
typedef char *xsd__date;
class xsd__date_: public xsd__anySimpleType { public: xsd__date __item; };
typedef time_t xsd__dateTime;
class xsd__dateTime_: public xsd__anySimpleType { public: xsd__dateTime __item; };
typedef double xsd__double;
class xsd__double_: public xsd__anySimpleType { public: xsd__double __item; };
typedef char *xsd__duration;
class xsd__duration_: public xsd__anySimpleType { public: xsd__duration __item; };
typedef float xsd__float;
class xsd__float_: public xsd__anySimpleType { public: xsd__float __item; };
typedef char *xsd__time;
class xsd__time_: public xsd__anySimpleType { public: xsd__time __item; };
typedef char *xsd__decimal;
class xsd__decimal_: public xsd__anySimpleType { public: xsd__decimal __item; };
typedef char *xsd__integer;
class xsd__integer_: public xsd__decimal_ { public: xsd__integer __item; };
typedef LONG64 xsd__long;
class xsd__long_: public xsd__integer_ { public: xsd__long __item; };
typedef long xsd__int;
class xsd__int_: public xsd__long_ { public: xsd__int __item; };
typedef short xsd__short;
class xsd__short_: public xsd__int_ { public: xsd__short __item; };
typedef char xsd__byte;
class xsd__byte_: public xsd__short_ { public: xsd__byte __item; };
typedef char *xsd__nonPositiveInteger;
class xsd__nonPositiveInteger_: public xsd__integer_ { public: xsd__nonPositiveInteger __item; };
typedef char *xsd__negativeInteger;
class xsd__negativeInteger_: public xsd__nonPositiveInteger_ { public: xsd__negativeInteger __item; };
typedef char *xsd__nonNegativeInteger;
class xsd__nonNegativeInteger_: public xsd__integer_ { public: xsd__nonNegativeInteger __item; };
typedef char *xsd__positiveInteger;
class xsd__positiveInteger_: public xsd__nonNegativeInteger_ { public: xsd__positiveInteger __item; };
typedef ULONG64 xsd__unsignedLong;
class xsd__unsignedLong_: public xsd__nonNegativeInteger_ { public: xsd__unsignedLong __item; };
typedef unsigned long xsd__unsignedInt;
class xsd__unsignedInt_: public xsd__unsginedLong_ { public: xsd__unsignedInt __item; };
typedef unsigned short xsd__unsignedShort;
class xsd__unsignedShort_: public xsd__unsignedInt_ { public: xsd__unsignedShort __item; };
typedef unsigned char xsd__unsignedByte;
class xsd__unsignedByte_: public xsd__unsignedShort_ { public: xsd__unsignedByte __item; };
typedef char *xsd__string;
class xsd__string_: public xsd__anySimpleType { public: xsd__string __item; };
typedef char *xsd__normalizedString;
class xsd__normalizedString_: public xsd__string_ { public: xsd__normalizedString __item; };
typedef char *xsd__token;
class xsd__token_: public xsd__normalizedString_ { public: xsd__token __item; };

Note the use of the trailing underscores for the class names to distinguish the typedef type names from the class names. Only the most frequently used built-in schema types are shown. It is also allowed to include the xsd:base64Binary and xsd:hexBinary types in the hierarchy:

class xsd__base64Binary: public xsd__anySimpleType { public: unsigned char *__ptr; int __size; };
class xsd__hexBinary: public xsd__anySimpleType { public: unsigned char *__ptr; int __size; };

See Sections 11.12 and 11.13.
Methods are allowed to be added to the classes above, such as constructors and getter/setter methods, see Section 11.6.4.
Wrapper structs are supported as well, similar to wrapper classes. But they cannot be used to implement polymorphism. Rather, the wrapper structs facilitate the use of XML attributes with a primitive typed object, see 11.6.7.

11.3.3  XSD Schema Type Decoding Rules

The decoding rules for the primitive C and C++ data types is given in the table below:

Type Allows Decoding of Precision Lost?
bool [xsd:]boolean no
char* (C string) any type, see 11.3.5 no
wchar_t * (wide string) any type, see 11.3.5 no
double [xsd:]double no
[xsd:]float no
[xsd:]long no
[xsd:]int no
[xsd:]short no
[xsd:]byte no
[xsd:]unsignedLong no
[xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
[xsd:]decimal possibly
[xsd:]integer possibly
[xsd:]positiveInteger possibly
[xsd:]negativeInteger possibly
[xsd:]nonPositiveInteger possibly
[xsd:]nonNegativeInteger possibly
float [xsd:]float no
[xsd:]long no
[xsd:]int no
[xsd:]short no
[xsd:]byte no
[xsd:]unsignedLong no
[xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
[xsd:]decimal possibly
[xsd:]integer possibly
[xsd:]positiveInteger possibly
[xsd:]negativeInteger possibly
[xsd:]nonPositiveInteger possibly
[xsd:]nonNegativeInteger possibly
long long [xsd:]long no
[xsd:]int no
[xsd:]short no
[xsd:]byte no
[xsd:]unsignedLong possibly
[xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
[xsd:]integer possibly
[xsd:]positiveInteger possibly
[xsd:]negativeInteger possibly
[xsd:]nonPositiveInteger possibly
[xsd:]nonNegativeInteger possibly



Type Allows Decoding of Precision Lost?
long [xsd:]long possibly, if long is 32 bit
[xsd:]int no
[xsd:]short no
[xsd:]byte no
[xsd:]unsignedLong possibly
[xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
int [xsd:]int no
[xsd:]short no
[xsd:]byte no
[xsd:]unsignedInt possibly
[xsd:]unsignedShort no
[xsd:]unsignedByte no
short [xsd:]short no
[xsd:]byte no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
char [xsd:]byte no
[xsd:]unsignedByte possibly
unsigned long long [xsd:]unsignedLong no
[xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
[xsd:]positiveInteger possibly
[xsd:]nonNegativeInteger possibly
unsigned long [xsd:]unsignedLong possibly, if long is 32 bit
[xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
unsigned int [xsd:]unsignedInt no
[xsd:]unsignedShort no
[xsd:]unsignedByte no
unsigned short [xsd:]unsignedShort no
[xsd:]unsignedByte no
unsigned char [xsd:]unsignedByte no
time_t [xsd:]dateTime no(?)

Due to limitations in representation of certain primitive C++ types, a possible loss of accuracy may occur with the decoding of certain XSD Schema types as is indicated in the table. The table does not indicate the possible loss of precision of floating point values due to the textual representation of floating point values in SOAP.
All explicitly declared XSD Schema encoded primitive types adhere to the same decoding rules. For example, the following declaration:

typedef unsigned long long xsd__nonNegativeInteger;

enables the encoding and decoding of xsd:nonNegativeInteger XSD Schema types (although decoding takes place with a possible loss of precision). The declaration also allows decoding of xsd:positiveInteger XSD Schema types, because of the storage as a unsigned long long data type.

11.3.4  Multi-Reference Strings

If more than one char pointer points to the same string, the string is encoded as a multi-reference value. Consider for example

char *s = "hello", *t = s;

The s and t variables are assigned the same string, and when serialized, t refers to the content of s:

<string id="123" xsi:type="string">hello</string>
...
<string href="#123"/>

The example assumed that s and t are encoded as independent elements.
Note: the use of typedef to declare a string type such as xsd__string will not affect the multi-reference string encoding. However, strings declared with different typedefs will never be considered multi-reference even when they point to the same string. For example

typedef char *xsd__string;
typedef char *xsd__anyURI;
xsd__anyURI *s = "http://www.myservice.com";
xsd__string *t = s;

The variables s and t point to the same string, but since they are considered different types their content will not be shared in the SOAP payload through a multi-referenced string.

11.3.5  "Smart String" Mixed-Content Decoding

The implementation of string decoding in gSOAP allows for mixed content decoding. If the SOAP payload contains a complex data type in place of a string, the complex data type is decoded in the string as plain XML text.
For example, suppose the getInfo service operation returns some detailed information. The service operation is declared as:

// Contents of header file "getInfo.h":
getInfo(char *detail);

The proxy of the service is used by a client to request a piece of information and the service responds with:

HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnn

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
<SOAP-ENV:Body>
<getInfoResponse>
<detail>
<picture>Mona Lisa by <i>Leonardo da Vinci</i></picture>
</detail>
</getInfoResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

As a result of the mixed content decoding, the detail string contains "<picture>Mona Lisa by <i>Leonardo da Vinci</i></picture>".

11.3.6  C++ Strings

gSOAP supports C++ strings std::string and std::wstring wide character strings. For example:

typedef std::string xsd__string;
class ns__myClass
{ public:
   xsd__string s; // serialized with xsi:type="xsd:string"
   std::string t; // serialized without xsi:type
...
};

Caution: Please avoid mixing std::string and C strings (char*) in the header file when using SOAP 1.1 encoding. The problem is that multi-referenced strings in SOAP encoded messages cannot be assigned simultaneously to a std::string and a char* string.

11.3.7  Changing the Encoding Precision of float and double Types

The double encoding format is by default set to "%.18G" (see a manual on printf text formatting in C), i.e. at most 18 digits of precision to limit a loss in accuracy. The float encoding format is by default "%.9G", i.e. at most 9 digits of precision.
The encoding format of a double type can be set by assigning a format string to soap.double_format, where soap is a variable that contains the current runtime context. For example:

struct soap soap;
soap_init(&soap); // sets double_format = "%.18G"
soap.double_format = "%e"; // redefine

which causes all doubles to be encoded in scientific notation. Likewise, the encoding format of a float type can be set by assigning a format string to the static soap_float_format string variable. For example:

struct soap soap;
soap_init(&soap); // sets float_format = "%.9G"
soap.float_format = "%.4f"; // redefine

which causes all floats to be encoded with four digits precision.
Caution: The format strings are not automatically reset before or after SOAP communications. An error in the format string may result in the incorrect encoding of floating point values.
A special case for C format string patterns is introduced in gSOAP 2.8.18. A C format string that is used as a pattern for a typedef float or double in the gSOAP header file is used to format the output of the floating point value in XML. For example:

typedef float time__ratio "%5.2f";

This will output the float with 5 digits total and 2 digits after the decimal point.
When xs:totalDigits and xs:fractionDigits are given in a XSD file, then also a C format string is produced to output floating point values with the proper precision and scale. For example:

<simpleType name="ratio">
   <restriction base="xsd:float">
      <totalDigits value="5"/>
      <fractionDigits value="2"/>
   </restriction>
</simpleType>

11.3.8  INF, -INF, and NaN Values of float and double Types

The gSOAP runtime stdsoap2.cpp and header file stdsoap2.h support the marshalling of IEEE INF, -INF, and NaN representations. Under certain circumstances this may break if the hardware and/or C/C++ compiler does not support these representations. To remove the representations, remove the inclusion of the < math.h > header file from the stdsoap2.h file. You can control the representations as well, which are defined by the macros:

#define FLT_NAN
#define FLT_PINFTY
#define FLT_NINFTY
#define DBL_NAN
#define DBL_PINFTY
#define DBL_NINFTY

11.4  Enumeration Serialization

Enumerations are generally useful for the declaration of named integer-valued constants, also called enumeration constants.

11.4.1  Serialization of Symbolic Enumeration Constants

The gSOAP soapcpp2 tool encodes the constants of enumeration-typed variables in symbolic form using the names of the constants when possible to comply to SOAP's enumeration encoding style. Consider for example the following enumeration of weekdays:

enum weekday {Mon, Tue, Wed, Thu, Fri, Sat, Sun};

The enumeration-constant Mon, for example, is encoded as

<weekday xsi:type="weekday">Mon</weekday>

The value of the xsi:type attribute is the enumeration-type identifier's name. If the element is independent as in the example above, the element name is the enumeration-type identifier's name.
The encoding of complex types such as enumerations requires a reference to an XML Schema through the use of a namespace prefix. The namespace prefix can be specified as part of the enumeration-type identifier's name, with the usual namespace prefix conventions for identifiers. This can be used to explicitly specify the encoding style. For example:

enum ns1__weekday {Mon, Tue, Wed, Thu, Fri, Sat, Sun};

The enumeration-constant Sat, for example, is encoded as:

<ns1:weekday xsi:type="ns1:weekday">Sat</ns1:weekday>

The corresponding XML Schema for this enumeration data type would be:

<xsd:element name="weekday" type="tns:weekday"/>
<xsd:simpleType name="weekday">
   <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Mon"/>
      <xsd:enumeration value="Tue"/>
      <xsd:enumeration value="Wed"/>
      <xsd:enumeration value="Thu"/>
      <xsd:enumeration value="Fri"/>
      <xsd:enumeration value="Sat"/>
      <xsd:enumeration value="Sun"/>
   </xsd:restriction>
</xsd:simpleType>

11.4.2  Encoding of Enumeration Constants

If the value of an enumeration-typed variable has no corresponding named constant, the value is encoded as a signed integer literal. For example, the following declaration of a workday enumeration type lacks named constants for Saturday and Sunday:

enum ns1__workday {Mon, Tue, Wed, Thu, Fri};

If the constant 5 (Saturday) or 6 (Sunday) is assigned to a variable of the workday enumeration type, the variable will be encoded with the integer literals 5 and 6, respectively. For example:

<ns1:workday xsi:type="ns1:workday">5</ns1:workday>

Since this is legal in C++ and SOAP allows enumeration constants to be integer literals, this method ensures that non-symbolic enumeration constants are correctly communicated to another party if the other party accepts literal enumeration constants (as with the gSOAP soapcpp2 tool).
Both symbolic and literal enumeration constants can be decoded.
To enforce the literal enumeration constant encoding and to get the literal constants in the WSDL file, use the following trick:

enum ns1__nums { _1 = 1, _2 = 2, _3 = 3 };

The difference with an enumeration type without a list of values and the enumeration type above is that the enumeration constants will appear in the WSDL service description.

11.4.3  Initialized Enumeration Constants

The gSOAP soapcpp2 compiler supports the initialization of enumeration constants, as in:

enum ns1__relation {LESS = -1, EQUAL = 0, GREATER = 1};

The symbolic names LESS, EQUAL, and GREATER will appear in the SOAP payload for the encoding of the ns1__relation enumeration values -1, 0, and 1, respectively.

11.4.4  How to "Reuse" Symbolic Enumeration Constants

A well-known deficiency of C and C++ enumeration types is the lack of support for the reuse of symbolic names by multiple enumerations. That is, the names of all the symbolic constants defined by an enumeration cannot be reused by another enumeration. To force encoding of the same symbolic name by different enumerations, the identifier of the symbolic name can end in an underscore (_) or any number of underscores to distinguish it from other symbolic names in C++. This guarantees that the SOAP encoding will use the same name, while the symbolic names can be distinguished in C++. Effectively, the underscores are removed from a symbolic name prior to encoding.
Consider for example:

enum ns1__workday {Mon, Tue, Wed, Thu, Fri};
enum ns1__weekday {Mon_, Tue_, Wed_, Thu_, Fri_, Sat_, Sun_};

which will result in the encoding of the constants of enum ns1__weekday without the underscore, for example as Mon.
As an alternative to the trailing underscores that can get quite long for commonly used symbolic enum names, you can use the following convention with double underscores to add the enum name to the enum constants:

enum prefixedname { prefixedname__enumconst1, prefixedname__enumconst2, ... };

where the type name of the enumeration prefixedname is a prefixed name, such as:

enum ns1__workday { ns1__workday__Mon, ns1__workday__Tue, ns1__workday__Wed, ns1__workday__Thu, ns1__workday__Fri };
enum ns1__weekday { ns1__workday__Mon, ns1__workday__Tue, ns1__workday__Wed, ns1__workday__Thu, ns1__workday__Fri, ns1__workday__Sat, ns1__workday__Sun };

This ensures that the XML schema enumeration values are still simply Mon, Tue, Wed, Thu, Fri, Sat, and Sun.
Caution: The following declaration:

enum ns1__workday {Mon, Tue, Wed, Thu, Fri};
enum ns1__weekday {Sat = 5, Sun = 6};

will not properly encode the weekday enumeration when you assume that workdays are part of weekdays, because it lacks the named constants for workday in its enumeration list. All enumerations must be self-contained and cannot use enum constants of other enumerations.

11.4.5  Boolean Enumeration Serialization for C

When developing a C Web service application, the C++ bool type should not be used since it is not usually supported by the C compiler. Instead, an enumeration type should be used to serialize true/false values as xsd:boolean Schema type enumeration values. The xsd:boolean XML Schema type is defined as:

enum xsd__boolean {false_, true_};

The value false_, for example, is encoded as:

<xsd:boolean xsi:type="xsd:boolean">false</xsd:boolean>

Peculiar of the SOAP boolean type encoding is that it only defines the values 0 and 1, while the built-in XML Schema boolean type also defines the false and true symbolic constants as valid values. The following example declaration of an enumeration type lacks named constants altogether to force encoding of the enumeration values as literal constants:

enum SOAP_ENC__boolean {};

The value 0, for example, is encoded with an integer literal:

<SOAP-ENC:boolean xsi:type="SOAP-ENC:boolean">0<SOAP-ENC:boolean>

11.4.6  Bitmask Enumeration Serialization

A bitmask is an enumeration of flags such as declared with C#'s [Flags] enum annotation. gSOAP supports bitmask encoding and decoding for interoperability. However, bitmask types are not standardized with SOAP RPC.
A special syntactic convention is used in the header file input to the gSOAP soapcpp2 compiler to indicate the use of bitmasks with an asterisk:

enum * name { enum-constant, enum-constant, ... };

The gSOAP soapcpp2 compiler will encode the enumeration constants as flags, i.e. as a series of powers of 2 starting with 1. The enumeration constants can be or-ed to form a bitvector (bitmask) which is encoded and decoded as a list of symbolic values in SOAP. For example:

enum * ns__machineStatus { ON, BELT, VALVE, HATCH};
int ns__getMachineStatus(char *name, char *enum ns__machineStatus result);

Note that the use of the enum does not require the asterisk, only the definition. The gSOAP soapcpp2 compiler generates the enumeration:

enum ns__machineStatus { ON=1, BELT=2, VALVE=4, HATCH=8};

A service operation implementation in a Web service can return:

int ns__getMachineStatus(struct soap *soap, char *name, enum ns__machineStatus result)
{ ...
   *result = BELT - HATCH;
   return SOAP_OK;
}

11.5  Struct Serialization

A struct data type is encoded as an XML Schema complexType (SOAP-encoded compound data type) such that the struct name forms the data type's element name and schema type and the fields of the struct are the data type's accessors. This encoding is identical to the class instance encoding without inheritance and method declarations, see Section 11.6 for further details. However, the encoding and decoding of structs is more efficient compared to class instances due to the lack of inheritance and the requirement by the serialization routines to check inheritance properties at run time.
Certain type of fields of a struct can be (de)serialized as XML attributes using the @ type qualifier. See Section 11.6.7 for more details.
See Section 10.3 for more details on the struct/class member field serialization and the resulting element and attribute qualified forms.

11.6  Class Instance Serialization

A class instance is serialized as an XML Schema complexType (SOAP-encoded compound data type) such that the class name forms the data type's element name and schema type and the data member fields are the data type's accessors. Only the data member fields are encoded in the SOAP payload. Class methods are not encoded.
The general form of a class declaration is:

class [namespace_prefix__]class_name1 [:[public:] [private:] [protected:] [namespace_prefix__]class_name2]
{
   [public:] [private:] [protected:]
   field1;
   field2;
   ...
   [public:] [private:] [protected:]
   method1;
   method2;
   ...
};

where
namespace_prefix__
is the optional namespace prefix of the compound data type (see identifier translation rules 10.3)
class_name1
is the element name of the compound data type (see identifier translation rules 10.3).
class_name2
is an optional base class.
field
is a field declaration (data member). A field MAY be declared static and const and MAY be initialized.
method
is a method declaration. A method MAY be declared virtual, but abstract methods are not allowed. The method parameter declarations are REQUIRED to have parameter identifier names.
[public:] [private:] [protected:]
are OPTIONAL. Only members with public acces permission can be serialized.
A class name is REQUIRED to be unique and cannot have the same name as a struct, enum, or service operation name specified in the header file input to the gSOAP soapcpp2 compiler. The reason is that service operation requests are encoded similarly to class instances in SOAP and they are in principle undistinguishable (the method parameters are encoded just as the fields of a class).
Only single inheritance is supported by the gSOAP soapcpp2 compiler. Multiple inheritance is not supported, because of the limitations of the SOAP protocol.
If a constructor method is present, there MUST also be a constructor declaration with empty parameter list.
Classes should be declared "volatile" if you don't want gSOAP to add serialization methods to these classes, see Section 19.4 for more details.
Class templates are not supported by the gSOAP soapcpp2 compiler, but you can use STL containers, see Section 11.11.8. You can also define your own containers similar to STL containers.
Certain type of fields of a struct can be (de)serialized as XML attributes using the @ type qualifier. See Section 11.6.7 for more details.
See Section 10.3 for more details on the struct/class member field serialization and the resulting element and attribute qualified forms.
Arrays may be embedded within a class (and struct) using a pointer field and size information, see Section 11.11.7. This defines what is sometimes referred to in SOAP as "generics".
Void pointers may be used in a class (or struct), but you have to add a type field so the gSOAP runtime can determine the type of object pointed to, see Section 11.9.
A class instance is encoded as:

<[namespace-prefix:]class-name xsi:type="[namespace-prefix:]class-name">
<basefield-name1 xsi:type="...">...</basefield-name1>
<basefield-name2 xsi:type="...">...</basefield-name2>
...
<field-name1 xsi:type="...">...</field-name1>
<field-name2 xsi:type="...">...</field-name2>
...
</[namespace-prefix:]class-name>

where the field-name accessors have element-name representations of the class fields and the basefield-name accessors have element-name representations of the base class fields. (The optional parts resulting from the specification are shown enclosed in [].)
The decoding of a class instance allows any ordering of the accessors in the SOAP payload. However, if a base class field name is identical to a derived class field name because the field is overloaded, the base class field name MUST precede the derived class field name in the SOAP payload for decoding. gSOAP guarantees this, but interoperability with other SOAP implementations is cannot be guaranteed.

11.6.1  Example

The following example declares a base class ns__Object and a derived class ns__Shape:

// Contents of file "shape.h":
class ns__Object
{
   public:
   char *name;
};
class ns__Shape : public ns__Object
{
   public:
   int sides;
   enum ns__Color {Red, Green, Blue} color;
   ns__Shape();
   ns__Shape(int sides, enum ns__Green color);
   ~ns__Shape();
};

The implementation of the methods of class ns__Shape must not be part of the header file and need to be defined elsewhere.
An instance of class ns__Shape with name Triangle, 3 sides, and color Green is encoded as:

<ns:Shape xsi:type="ns:Shape">
<name xsi:type="string">Triangle</name>
<sides xsi:type="int">3</sides>
<color xsi:type="ns:Color">Green</color>
</ns:shape>

The namespace URI of the namespace prefix ns must be defined by a namespace mapping table, see Section 10.4.

11.6.2  Initialized static const Fields

A data member field of a class declared as static const is initialized with a constant value at compile time. This field is encoded in the serialization process, but is not decoded in the deserialization process. For example:

// Contents of file "triangle.h":
class ns__Triangle : public ns__Object
{
   public:
   int size;
   static const int sides = 3;
};

An instance of class ns__Triangle is encoded in SOAP as:

<ns:Triangle xsi:type="ns:Triangle">
<name xsi:type="string">Triangle</name>
<size xsi:type="int">15</size>
<sides xsi:type="int">3>/sides>
</ns:Triangle>

Decoding will ignore the sides field's value.
Caution: The current gSOAP implementation does not support encoding static const fields, due to C++ compiler compatibility differences. This feature may be provided the future.

11.6.3  Class Methods

A class declaration in the header file input to the gSOAP soapcpp2 compiler MAY include method declarations. The method implementations MUST NOT be part of the header file but are required to be defined in another C++ source that is externally linked with the application. This convention is also used for the constructors and destructors of the class.
Dynamic binding is supported, so a method MAY be declared virtual.

11.6.4  Getter and Setter Methods

Setter and getter methods are invoked at run time upon serialization and deserialization of class instances, respectively. The use of setter and getter methods adds more flexibility to the serialization and deserialization process.
A setter method is called in the serialization phase from the virtual soap_serialization method generated by the gSOAP soapcpp2 compiler. You can use setter methods to process a class instance just before it is serialized. A setter method can be used to convert application data, such as translating transient application data into serializable data, for example. You can also use setter methods to retrieve dynamic content and use it to update a class instance right before serialization. Remember setters as "set to serialize" operations.
Getter methods are invoked after deserialization of the instance. You can use them to adjust the contents of class instances after all their members have been deserialized. Getters can be used to convert deserialized members into transient members and even invoke methods to process the deserialized data on the fly.
Getter and setter methods have the following signature:

[virtual] int get(struct soap *soap) [const];
[virtual] int set(struct soap *soap);

The active soap struct will be passed to the get and set methods. The methods should return SOAP_OK when successful. A setter method should prepare the contents of the class instance for serialization. A getter method should process the instance after deserialization.
Here is an example of a base64 binary class:

class xsd__base64Binary
{ public:
   unsignedchar *__ptr;
   int__size;
   int get(struct soap *soap);
   int set(struct soap *soap);
};

Suppose that the type and options members of the attachment should be set when the class is about to be serialized. This can be accomplished with the set method from the information provided by the __ptr to the data and the soap struct passed to the set method (you can pass data via the void*soap.user field).
The get method is invoked after the base64 data has been processed. You can use it for post-processing purposes.
Here is another example. It defines a primitive update type. The class is a wrapper for the time_t type, see Section 11.3.2. Therefore, elements of this type contain xsd:dateType data.

class update
{ public:
   time_t __item;
   int set(struct soap *soap);
};

The setter method assigns the current time:

int update::set(struct soap *soap)
{
   this->__item = time(NULL);
   return SOAP_OK;
}

Therefore, serialization results in the inclusion of a time stamp in XML.
Caution: a get method is invoked only when the XML element with its data was completely parsed. The method is not invoked when the element is an xsi:nil element or has an href attribute.
Caution: The soap_out method of a class calls the setter (when provided). However, the soap_out method is declared const while the setter should be allowed to modify the contents of the class instance. Therefore, the gSOAP-generated code recasts the instance and the const is removed when invoking the setter.

11.6.5  Streaming XML with Getter and Setter Methods

Getter methods enable streaming XML operations. A getter method is invoked when the object is deserialized and the rest of the SOAP/XML message has not been processed yet. For example, you can add a getter method to the SOAP Header class to implement header processing logic that is activated as soon as the SOAP Header is received. An example code is shown below:

class h__Authentication
{ public:
   char *id;
   int get(struct soap *soap);
};
class SOAP_ENV__Header
{ public:
   h__Authentication *h__authentication;
};

The Authentication SOAP Header field is instantiated and decoded. After decoding, the getter method is invoked, which can be used to check the id before the rest of the SOAP message is processed.

11.6.6  Polymorphism, Derived Classes, and Dynamic Binding

Interoperability between client and service applications developed with gSOAP is established even when clients and/or services use derived classes instead of the base classes used in the declaration of the service operation parameters. A client application MAY use pointers to instances of derived classes for the input parameters of a service operation. If the service was compiled with a declaration and implementation of the derived class, the service operation base class input parameters are demarshalled and a derived class instance is created instead of a base class instance. If the service did not include a declaration of the derived class, the derived class fields are ignored and a base class instance is created. Therefore, interoperability is guaranteed even when the client sends an instance of a derived classes and when a service returns an instance of a derived class.
The following example declares Base and Derived classes and a service operation that takes a pointer to a Base class instance and returns a Base class instance:

// Contents of file "derived.h"
class Base
{
   public:
   char *name;
   Base();
   virtual void print();
};
class Derived : public Base
{
   public:
   int num;
   Derived();
   virtual void print();
};
int method(Base *in, struct methodResponse { Base *out; } &result);

This header file specification is processed by the gSOAP soapcpp2 compiler to produce the stub and skeleton routines which are used to implement a client and service. The pointer of the service operation is also allowed to point to Derived class instances and these instances will be marshalled as Derived class instances and send to a service, which is in accord to the usual semantics of parameter passing in C++ with dynamic binding.
The Base and Derived class method implementations are:

// Method implementations of the Base and Derived classes:
#include "soapH.h"
...
Base::Base()
{
   cout << "created a Base class instance" << endl;
}
Derived::Derived()
{
   cout << "created a Derived class instance" << endl;
}
Base::print()
{
   cout << "print(): Base class instance " << name << endl;
}
Derived::print()
{
   cout << "print(): Derived class instance " << name << " " << num << endl;
}

Below is an example CLIENT application that creates a Derived class instance that is passed as the input parameter of the service operation:

// CLIENT
#include "soapH.h"
int main()
{
   struct soap soap;
   soap_init(&soap);
   Derived obj1;
   Base *obj2;
   struct methodResponse r;
   obj1.name = "X";
   obj1.num = 3;
   soap_call_method(&soap, url, action, &obj1, r);
   r.obj2->print();
}
...

The following example SERVER1 application copies a class instance (Base or Derived class) from the input to the output parameter:

// SERVER1
#include "soapH.h"
int main()
{
   soap_serve(soap_new());
}
int method(struct soap *soap, Base *obj1, struct methodResponse &result)
{
   obj1->print();
   result.obj2 = obj1;
   return SOAP_OK;
}
...

The following messages are produced by the CLIENT and SERVER1 applications:

CLIENT: created a Derived class instance
SERVER1: created a Derived class instance
SERVER1: print(): Derived class instance X 3
CLIENT: created a Derived class instance
CLIENT: print(): Derived class instance X 3

Which indicates that the derived class kept its identity when it passed through SERVER1. Note that instances are created both by the CLIENT and SERVER1 by the demarshalling process.
Now suppose a service application is developed that only accepts Base class instances. The header file is:

// Contents of file "base.h":
class Base
{
   public:
   char *name;
   Base();
   virtual void print();
};
int method(Base *in, Base *out);

This header file specification is processed by the gSOAP soapcpp2 tool to produce skeleton routine which is used to implement a service (so the client will still use the derived classes).
The method implementation of the Base class are:

// Method implementations of the Base class:
#include "soapH.h"
...
Base::Base()
{
   cout << "created a Base class instance" << endl;
}
Base::print()
{
   cout << "print(): Base class instance " << name << endl;
}

And the SERVER2 application is that uses the Base class is:

// SERVER2
#include "soapH.h"
int main()
{
   soap_serve(soap_new());
}
int method(struct soap *soap, Base *obj1, struct methodResponse &result)
{
   obj1->print();
   result.obj2 = obj1;
   return SOAP_OK;
}
...

Here are the messages produced by the CLIENT and SERVER2 applications:

CLIENT: created a Derived class instance
SERVER2: created a Base class instance
SERVER2: print(): Base class instance X
CLIENT: created a Base class instance
CLIENT: print(): Base class instance X

In this example, the object was passed as a Derived class instance to SERVER2. Since SERVER2 only implements the Base class, this object is converted to a Base class instance and send back to CLIENT.

11.6.7  XML Attributes

The SOAP RPC/LIT and SOAP DOC/LIT encoding styles support XML attributes in SOAP messages while SOAP RPC with "Section 5" encoding does not support XML attributes other than the SOAP and XSD specific attributes. SOAP RPC "Section 5" encoding has advantages for cross-language interoperability and data encodings such as graph serialization. However, RPC/LIT and DOC/LIT enables direct exchange of XML documents, which may include encoded application data structures. Language interoperability is compromised, because no mapping between XML and the typical language data types is defined. The meaning of the RPC/LIT and DOC/LIT XML content is Schema driven rather than application/language driven.
gSOAP supports XML attribute (de)serialization of members in structs and classes. Attributes are primitive XSD types, such as strings, enumerations, boolean, and numeric types. To declare an XML attribute in a struct/class, the qualifier @ is used with the type of the attribute. The type must be primitive type (including enumerations and strings), which can be declared with or without a typedef to associate a XSD type with the C/C+ type. For example

typedef char *xsd__string;
typedef bool *xsd__boolean;
enum ns__state { _0, _1, _2 };
struct ns__myStruct
{
   @xsd__string ns__type; // encode as XML attribute 'ns:type' of type 'xsd:string'
   @xsd__boolean ns__flag = false; // encode as XML attribute 'ns:flag' of type 'xsd:boolean'
   @enum ns__state ns__state = _2; // encode as XML attribute 'ns:state' of type 'ns:state'
   struct ns__myStruct *next;
};

The @ qualifier indicates XML attribute encoding for the ns__type, ns__flag, and ns__state fields. Note that the namespace prefix ns is used to distinguish these attributes from any other attributes such as xsi:type (ns:type is not to be confused with xsi:type).
Default values can be associated with any field that has a primitive type in a struct/class, as is illustrated in this example. The default values are used when the receiving message does not contain the corresponding values.
String attributes are optional. Other type of attributes should be declared as pointers to make them optional:

struct ns__myStruct
{
   @int *a; // omitted when NULL
};

Because a service operation request and response is essentially a struct, XML attributes can also be associated with method requests and responses. For example

int ns__myMethod(@char *ns__name, ...);

Attributes can also be attached to the dynamic arrays, binary types, and wrapper classes/structs of primitive types. Wrapper classes are described in Section 11.3.2. For example

struct xsd__string
{
   char *__item;
   @xsd__boolean flag;
};

and

struct xsd__base64Binary
{
   unsigned char *__ptr;
   int __size;
   @xsd__boolean flag;
};

The attribute declarations MUST follow the __item, __ptr, and __size fields which define the characteristics of wrapper structs/classes and dynamic arrays.
Caution: Do not use XML attributes with SOAP RPC encoding. You can only use attributes with RPC literal encoding.

11.6.8  QName Attributes and Elements

gSOAP ensures the proper decoding of XSD QNames. An element or attribute with type QName (Qualified Name) contains a namespace prefix and a local name. You can declare a QName type as a typedef char *xsd__QName. Values of type QName are internally handled as regular strings. gSOAP takes care of the proper namespace prefix mappings when deserializing QName values. For example

typedef char *xsd__QName;
struct ns__myStruct
{
   xsd__QName elt = "ns:xyz"; // QName element with default value "ns:xyz"
   @xsd__QName att = "ns:abc"; // QName attribute with default value "ns:abc"
};

When the elt and att fields are serialized, their string contents are just transmitted (which means that the application is responsible to ensure proper formatting of the QName strings prior to transmission). When the fields are deserialized however, gSOAP takes care mapping the qualifiers to the appropriate namespace prefixes. Suppose that the inbound value for the elt is x:def, where the namespace name associated with the prefix x matches the namespace name of the prefix ns (as defined in the namespace mapping table). Then, the value is automatically converted into ns:def. If the namespace name is not in the table, then x:def is converted to "URI":def where "URI" is the namespace URI bound to x in the message received. This enables an application to retrieve the namespace information, whether it is in the namespace mapping table or not.
Note: QName is a pre-defined typedef type and used by gSOAP to (de)serialize SOAP Fault codes which are QName elements.

11.7  Union Serialization

A union is only serialized if the union is used within a struct or class declaration that includes a int __union field that acts as a discriminant or selector for the union fields. The selector stores run-time usage information about the union fields. That is, the selector is used to enumerate the union fields such that the gSOAP engine is able to select the correct union field to serialize.
A union within a struct or class with a selector field represents xs:choice within a Schema complexType component. For example:

struct ns__PO
{ ... };
struct ns__Invoice
{ ... };
union ns__PO_or_Invoice
{
   struct ns__PO po;
   struct ns__Invoice invoice;
};
struct ns__composite
{
   char *name;
   int __union;
   union ns__PO_or_Invoice value;
};

The union ns__PO_or_Invoice is expanded as a xs:choice:

<complexType name="composite">
   <sequence>
      <element name="name" type="xsd:string"/>
      <choice>
         <element name="po" type="ns:PO"/>
         <element name="invoice" type="ns:Invoice"/>
      </choice>
   </sequence>
</complexType>

Therefore, the name of the union and field can be freely chosen. However, the union name should be qualified (as shown in the example) to ensure instances of XML Schemas with elementFormDefault="qualified" are correctly serialized (po and invoice are ns: qualified).
The int __union field selector's values are determined by the soapcpp2 compiler. Each union field name has a selector value formed by:

SOAP_UNION_union-name_field-name

These selector values enumerate the union fields starting with 1. The value 0 (or any negative value) can be assigned to omit the serialization of the union, but only if explicitly allowed by validation rules, which requires minOccurs="0" for the xs:choice as follows:

struct ns__composite
{
   char *name;
   int __union 0; // <choice minOccurs="0">
   union ns__PO_or_Invoice value;
};

This way we can treat the union as an optional data item by setting __union=0.
Since 2.7.16 it is also possible to use a '$' as a special marker to annotate a selector field that must be of type int and the field name is no longer relevant:

struct ns__composite
{
   char *name;
   $int select 0; // <choice minOccurs="0">
   union ns__PO_or_Invoice value;
};

The following example shows how the struct ns__composite instance is initialized for serialization using the above declaration:

struct ns__composite data;
data.name = "...";
data.select = SOAP_UNION_ns__PO_or_Invoice_po; // select PO
data.value.po.number = ...; // populate the PO

Note that failing to set the selector to a valid union field can lead to a crash of the gSOAP serializer because it will attempt to serialize an invalid union field.
For deserialization of union types, the selector will be set to one of the union field selector values, as determined by the XML payload. The selector will be set to 0 or -1 when no union member was deserialized, where a negative value indicates that a member was required by validation rules. Strict validation enabled with SOAP_XML_STRICT results in a validation fault.
When more than one union is used in a struct or class, the __union selectors must be renamed to avoid name clashes by using suffixes as in:

struct ns__composite
{
   char *name;
   $int sel_value; // = SOAP_UNION_ns__PO_or_Invoice_[po - invoice]
   union ns__PO_or_Invoice value;
   $int sel_data; // = SOAP_UNIO_ns__Email_or_Fax_[email - fax]
   union ns__Email_or_Fax data;
};

11.8  Serializing Pointer Types

The serialization of a pointer to a data type amounts to the serialization of the data type in SOAP and the SOAP encoded representation of a pointer to the data type is indistinguishable from the encoded representation of the data type pointed to.

11.8.1  Multi-Referenced Data

A data structure pointed to by more than one pointer is serialized as SOAP multi-reference data. This means that the data will be serialized only once and identified with a unique id attribute. The encoding of the pointers to the shared data is done through the use of href or ref attributes to refer to the multi-reference data. See Section 9.12 on options to control the serialization of multi-reference data. To turn multi-ref off, use SOAP_XML_TREE to process plain tree-based XML. To completely eliminate multi-ref (de)serialization use the WITH_NOIDREF compile-time flag with all source code (including stdsoap2.c and stdsoap2.cpp) to permanently disable id-href processing. Cyclic C/C++ data structures are encoded with multi-reference SOAP encoding. Consider for example the following a linked list data structure:

typedef char *xsd__string;
struct ns__list
{
   xsd__string value;
   struct ns__list *next;
};

Suppose a cyclic linked list is created. The first node contains the value "abc" and points to a node with value "def" which in turn points to the first node. This is encoded as:

<ns:list id="1" xsi:type="ns:list">
   <value xsi:type="xsd:string">abc</value>
   <next xsi:type="ns:list">
      <value xsi:type="xsd:string">def</value>
      <next href="#1"/>
   </next>
</ns:list>

In case multi-referenced data is received that "does not fit in a pointer-based structure", the data is copied. For example, the following two structs are similar, except that the first uses pointer-based fields while the other uses non-pointer-based fields:

typedef long xsd__int;
struct ns__record
{
   xsd__int *a;
   xsd__int *b;
} P;
struct ns__record
{
   xsd__int a;
   xsd__int b;
} R;
...
   P.a = &n;
   P.b = &n;
...

Since both a and b fields of P point to the same integer, the encoding of P is multi-reference:

<ns:record xsi:type="ns:record">
   <a href="#1"/>
   <b href="#1"/>
</ns:record>
<id id="1" xsi:type="xsd:int">123</id>

Now, the decoding of the content in the R data structure that does not use pointers to integers results in a copy of each multi-reference integer. Note that the two structs resemble the same XML data type because the trailing underscore will be ignored in XML encoding and decoding.

11.8.2  NULL Pointers and Nil Elements

A NULL pointer is not serialized, unless the pointer itself is pointed to by another pointer (but see Section 9.12 to control the serialization of NULLs). For example:

struct X
{
   int *p;
   int **q;
}

Suppose pointer q points to pointer p and suppose p=NULL. In that case the p pointer is serialized as

<... id="123" xsi:nil="true"/>

and the serialization of q refers to href="#123". Note that SOAP 1.1 does not support pointer to pointer types (!), so this encoding is specific to gSOAP. The pointer to pointer encoding is rarely used in codes anyway. More common is a pointer to a data type such as a struct with pointer fields.
Caution: When the deserializer encounters an XML element that has a xsi:nil="true" attribute but the corresponding C++ data is not a pointer or reference, the deserializer will terminate with a SOAP_NULL fault when the SOAP_XML_STRICT flag is set. The types section of a WSDL description contains information on the "nilability" of data.

11.9  Void Pointers

In general, void pointers (void*) cannot be (de)serialized because the type of data referred to is untyped. To enable the (de)serialization of the void pointers that are members of structs or classes, you can insert a int __type field right before the void pointer field. The int __ type field contains run time information on the type of the data pointed to by void* member in a struct/class to enable the (de)serialization of this data. The int __type field is set to a SOAP_TYPE_X value, where X is the name of a type. gSOAP generates the SOAP_TYPE_X definitions in soapH.h and uses them internally to uniquely identify the type of each object. The type naming conventions outlined in Section 7.5.3 are used to determine the type name for X.
Here is an example to illustrate the (de)serialization of a void* field in a struct:

struct myStruct
{
   int __type; // the SOAP_TYPE pointed to by p
   void *p;
};

The __type integer can be set to 0 at run time to omit the serialization of the void pointer field.
The following example illustrates the initialization of myStruct with a void pointer to an int:

struct myStruct S;
int n;
S.p = &n;
S.__type = SOAP_TYPE_int;

The serialized output of S contains the integer.
The deserializer for myStruct will automatically set the __type field and void pointer to the deserialized data, provided that the XML content for p carries the xsi:type attribute from which gSOAP can determine the type.
Important: when (de)serializing strings via a void* field, the void* pointer MUST directly point to the string value rather than indirectly as with all other types. For example:

struct myStruct S;
S.p = (void*)"Hello";
S.__type = SOAP_TYPE_string;

This is the case for all string-based types, including types defined with typedef char*.
You may use an arbitrary suffix with the __type fields to handle multiple void pointers in structs/classes. For example

struct myStruct
{
   int __typeOfp; // the SOAP_TYPE pointed to by p
   void *p;
   int __typeOfq; // the SOAP_TYPE pointed to by q
   void *q;
};

Because service method parameters are stored within structs, you can use __type and void* parameters to pass polymorphic arguments without having to define a C++ class hierarchy (Section 11.6.6). For example:

typedef char *xsd__string;
typedef int xsd__int;
typedef float xsd__float;
enum ns__status { on, off };
struct ns__widget { xsd__string name; xsd__int part; }; int ns__myMethod(int __type, void *data, struct ns__myMethodResponse { int __type; void *return_; } *out);

This method has a polymorphic input parameter data and a polymorphic output parameter return_. The __type parameters can be one of SOAP_TYPE_xsd__string, SOAP_TYPE_xsd__int, SOAP_TYPE_xsd__float, SOAP_TYPE_ns__status, or SOAP_TYPE_ns__widget. The WSDL produced by the gSOAP soapcpp2 compiler declares the polymorphic parameters of type xsd:anyType which is "too loose" and doesn't allow the gSOAP importer to handle the WSDL accurately. Future gSOAP releases might replace xsd:anyType with a choice schema type that limits the choice of types to the types declared in the header file.

11.10  Fixed-Size Arrays

Fixed size arrays are encoded as per SOAP 1.1 one-dimensional array types. Multi-dimensional fixed size arrays are encoded by gSOAP as nested one-dimensional arrays in SOAP. Encoding of fixed size arrays supports partially transmitted and sparse array SOAP formats.
The decoding of (multi-dimensional) fixed-size arrays supports the SOAP multi-dimensional array format as well as partially transmitted and sparse array formats.
An example:

// Contents of header file "fixed.h":
struct Example
{
   float a[2][3];
};

This specifies a fixed-size array part of the struct Example. The encoding of array a is:

<a xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="float[][2]">
<SOAP-ENC:Array xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="float[3]"
<float xsi:type="float">...</float>
<float xsi:type="float">...</float>
<float xsi:type="float">...</float>
</SOAP-ENC:Array>
<SOAP-ENC:Array xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="float[3]"
<float xsi:type="float">...</float>
<float xsi:type="float">...</float>
<float xsi:type="float">...</float>
</SOAP-ENC:Array>
</a>

Caution: Any decoded parts of a (multi-dimensional) array that do not "fit" in the fixed size array are ignored by the deserializer.

11.11  Dynamic Arrays

As the name suggests, dynamic arrays are much more flexible than fixed-size arrays and dynamic arrays are better adaptable to the SOAP encoding and decoding rules for arrays. In addition, a typical C application allocates a dynamic array using malloc, assigns the location to a pointer variable, and deallocates the array later with free. A typical C++ application allocates a dynamic array using new, assigns the location to a pointer variable, and deallocates the array later with delete. Such dynamic allocations are flexible, but pose a problem for the serialization of data: how does the array serializer know the length of the array to be serialized given only a pointer to the sequence of elements? The application stores the size information somewhere. This information is crucial for the array serializer and has to be made explicitly known to the array serializer by packaging the pointer and array size information within a struct or class.

11.11.1  SOAP Array Bounds Limits

SOAP encoded arrays use the SOAP-ENC:Array type and the SOAP-ENC:arrayType attribute to define the array dimensionality and size. As a security measure to avoid denial of service attacks based on sending a huge array size value requiring the allocation of large chunks of memory, the total number of array elements set by the SOAP-ENC:arrayType attribute cannot exceed SOAP_MAXARRAYSIZE, which is set to 100,000 by default. This constant is defined in stdsoap2.h. This constant only affects multi-dimensional arrays and the dimensionality of the receiving array will be lost when the number of elements exceeds 100,000. One-dimensional arrays will be populated in sequential order as expected.

11.11.2  One-Dimensional Dynamic SOAP Arrays

A special form of struct or class is used to define one-dimensional dynamic SOAP-encoded arrays. Each array has a pointer variable and a field that records the number of elements the pointer points to in memory.
The general form of the struct declaration that contains a one-dimensional dynamic SOAP-encoded array is:

struct some_name
{
   Type *__ptr; // pointer to array of elements in memory
   int __size; // number of elements pointed to
   [[static const] int __offset [= ...];] // optional SOAP 1.1 array offset
   ... // anything that follows here will be ignored
};

where Type MUST be a type associated with an XML Schema or MUST be a primitive type. If these conditions are not met, a vector-like XML (de)serialization is used (see Section 11.11.7). A primitive type can be used with or without a typedef. If the array elements are structs or classes, then the struct/class type names should have a namespace prefix for schema association, or they should be other (nested) dynamic arrays.
An alternative to a struct is to use a class with optional methods that MUST appear after the __ptr and __size fields:

class some_name
{
   public:
   Type *__ptr;
   int __size;
   [[static const] int __offset [= ...];]
   method1;
   method2;
   ... // any fields that follow will be ignored
};

To encode the data type as an array, the name of the struct or class SHOULD NOT have a namespace prefix, otherwise the data type will be encoded and decoded as a generic vector, see Section 11.11.7.
The deserializer of a dynamic array can decode partially transmitted and/or SOAP sparse arrays, and even multi-dimensional arrays which will be collapsed into a one-dimensional array with row-major ordering.
Caution: SOAP 1.2 does not support partially transmitted arrays. So the __offset field of a dynamic array is ignored.

11.11.3  Example

The following example header file specifies the XMethods Service Listing service getAllSOAPServices service operation and an array of SOAPService data structures:

// Contents of file "listing.h":
class ns3__SOAPService
{
   public:
   int ID;
   char *name;
   char *owner;
   char *description;
   char *homepageURL;
   char *endpoint;
   char *SOAPAction;
   char *methodNamespaceURI;
   char *serviceStatus;
   char *methodName;
   char *dateCreated;
   char *downloadURL;
   char *wsdlURL;
   char *instructions;
   char *contactEmail;
   char *serverImplementation;
};
class ServiceArray
{
   public:
   ns3__SOAPService *__ptr; // points to array elements
   int __size; // number of elements pointed to
   ServiceArray();
   ~ServiceArray();
   void print();
};
int ns__getAllSOAPServices(ServiceArray &return_);

An example client application:

#include "soapH.h" ...
// ServiceArray class method implementations:
ServiceArray::ServiceArray()
{
   __ptr = NULL;
   __size = 0;
}
ServiceArray::~ServiceArray()
{ // destruction handled by gSOAP
}
void ServiceArray::print()
{
   for (int i = 0; i < __size; i++)
      cout << __ptr[i].name << ": " << __ptr[i].homepage << endl;
}
...
// Request a service listing and display results:
{
   struct soap soap;
   ServiceArray result;
   const char *endpoint = "www.xmethods.net:80/soap/servlet/rpcrouter";
   const char *action = "urn:xmethodsServicesManager#getAllSOAPServices";
   ...
   soap_init(&soap);
   soap_call_ns__getAllSOAPServices(&soap, endpoint, action, result);
   result.print();
   ...
   soap_destroy(&soap); // dealloc class instances
   soap_end(&soap); // dealloc deserialized data
   soap_done(&soap); // cleanup and detach soap struct
}

11.11.4  One-Dimensional Dynamic SOAP Arrays With Non-Zero Offset

The declaration of a dynamic array as described in 11.11 MAY include an int __offset field. When set to an integer value, the serializer of the dynamic array will use this field as the start index of the array and the SOAP array offset attribute will be used in the SOAP payload. Note that array offsets is a SOAP 1.1 specific feature which is not supported in SOAP 1.2.
For example, the following header file declares a mathematical Vector class, which is a dynamic array of floating point values with an index that starts at 1:

// Contents of file "vector.h":
typedef float xsd__float;
class Vector
{
   xsd__float *__ptr;
   int __size;
   int __offset;
   Vector();
   Vector(int n);
   float& operator[](int i);
}

The implementations of the Vector methods are:

Vector::Vector()
{
   __ptr = NULL;
   __size = 0;
   __offset = 1;
}
Vector::Vector(int n)
{
   __ptr = (float*)malloc(n*sizeof(float));
   __size = n;
   __offset = 1;
}
Vector::~Vector()
{
   if (__ptr)
      free(__ptr);
}
float& Vector::operator[](int i)
{
   return __ptr[i-__offset];
}

An example program fragment that serializes a vector of 3 elements:

struct soap soap;
soap_init(&soap);
Vector v(3);
v[1] = 1.0;
v[2] = 2.0;
v[3] = 3.0;
soap_begin(&soap);
v.serialize(&soap);
v.put("vec");
soap_end(&soap);

The output is a partially transmitted array:

<vec xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:float[4]" SOAP-ENC:offset="[1]">
<item xsi:type="xsd:float">1.0</item>
<item xsi:type="xsd:float">2.0</item>
<item xsi:type="xsd:float">3.0</item>
</vec>

Note that the size of the encoded array is necessarily set to 4 and that the encoding omits the non-existent element at index 0.
The decoding of a dynamic array with an __offset field is more efficient than decoding a dynamic array without an __offset field, because the __offset field will be assigned the value of the SOAP-ENC:offset attribute instead of padding the initial part of the array with default values.

11.11.5  Nested One-Dimensional Dynamic SOAP Arrays

One-dimensional dynamic arrays MAY be nested. For example, using class Vector declared in the previous section, class Matrix is declared:

// Contents of file "matrix.h":
class Matrix
{
   public:
   Vector *__ptr;
   int __size;
   int __offset;
   Matrix();
   Matrix(int n, int m);
   ~Matrix();
   Vector& operator[](int i);
};

The Matrix type is essentially an array of pointers to arrays which make up the rows of a matrix. The encoding of the two-dimensional dynamic array in SOAP will be in nested form.

11.11.6  Multi-Dimensional Dynamic SOAP Arrays

The general form of the struct declaration for K-dimensional (K > 1) dynamic arrays is:

struct some_name
{
   Type *__ptr;
   int __size[K];
   int __offset[K];
   ... // anything that follows here will be ignored
};

where Type MUST be a type associated with an XML Schema, which means that it must be a typedefed type in case of a primitive type, or a struct/class name with a namespace prefix for schema association, or another dynamic array. If these conditions are not met, a generic vector XML (de)serialization is used (see Section 11.11.7).
An alternative is to use a class with optional methods:

class some_name
{
   public:
   Type *__ptr;
   int __size[K];
   int __offset[K];
   method1;
   method2;
   ... // any fields that follow will be ignored
};

In the above, K is a constant denoting the number of dimensions of the multi-dimensional array.
To encode the data type as an array, the name of the struct or class SHOULD NOT have a namespace prefix, otherwise the data type will be encoded and decoded as a generic vector, see Section 11.11.7.
The deserializer of a dynamic array can decode partially transmitted multi-dimensional arrays.
For example, the following declaration specifies a matrix class:

typedef double xsd__double;
class Matrix
{
   public:
   xsd__double *__ptr;
   int __size[2];
   int __offset[2];
};

In contrast to the matrix class of Section 11.11.5 that defined a matrix as an array of pointers to matrix rows, this class has one pointer to a matrix stored in row-major order. The size of the matrix is determined by the __size field: __size[0] holds the number of rows and __size[1] holds the number of columns of the matrix. Likewise, __ offset[0] is the row offset and __offset[1] is the columns offset.

11.11.7  Encoding XML Generics Containing Dynamic Arrays

The XML "generics" concept discussed in the SOAP encoding protocols extends the concept of a SOAP struct by allowing repetitions of elements within the struct. This is just a form of a repetition of XML elements without the SOAP-encoded array requirements. While SOAP-encoded arrays are more expressive (offset information to encode sparse arrays for example), simple repetitions of values are used more frequently.
A simple generic reperition is an array-like data structure with a repetition of an element. To achieve this, declare a dynamic array as a struct or class with a name that is qualified with a namespace prefix. SOAP arrays are declared without prefix.
For example, we define a Map structure that contains a sequence of pairs of key-val:

struct ns__Map
{
   int __size; // number of pairs
   struct ns__Binding {char *key; char *val;} *pair;
};

Since 2.7.16 it is also possible to use a '$' as a special marker to annotate a size field that must be of type int or size_t and the field name is no longer relevant:

struct ns__Map
{
   $int length; // number of pairs
   struct ns__Binding {char *key; char *val;} *pair;
};

This declares a dynamic array pointed to by pair and size __size. The array will be serialized and deserialized as a sequence of pairs:

<ns:Map xsi:type="ns:Map">
<pair xsi:type="ns:Binding">
<key>Joe</key>
<val>555 77 1234</val>
</pair>
<pair xsi:type="ns:Binding">
<key>Susan</key>
<val>555 12 6725</val>
</pair>
<pair xsi:type="ns:Binding">
<key>Pete</key>
<val>555 99 4321</val>
</pair>
</ns:Map>

Deserialization is less efficient compared to a SOAP-encoded array, because the size of the sequence is not part of the SOAP encoding. Internal buffering is used by the deserializer to collect the elements. When the end of the list is reached, the buffered elements are copied to a newly allocated space on the heap for the dynamic array.
Multiple arrays can be used in a struct/class to support the concept of "generics". Each array results in a repetition of elements in the struct/class. This is achieved with a int __size (or $int) field in the struct/class where the next field (i.e. below the __size field) is a pointer type. The pointer type is assumed to point to an array of values at run time. The __size field holds the number of values at run time. Multiple arrays can be embedded in a struct/class with __size fields that have a distinct names. To make the __size fields distinct, you can end them with a unique name suffix such as __sizeOfstrings, for example.
The general convention for embedding arrays is:

struct ns__SomeStruct
{
   ...
   int __sizename1; // number of elements pointed to
   Type1 *field1; // by this field
   ...
   int __sizename2; // number of elements pointed to
   Type2 *field2; // by this field
   ...
};

where name1 and name2 are identifiers used as a suffix to distinguish the __size field. These names can be arbitrary and are not visible in XML.
In 2.7.16 and higher this is simplified with a '$' marker:

struct ns__SomeStruct
{
   ...
   $int name1; // number of elements pointed to
   Type1 *field1; // by this field
   ...
   $int name2; // number of elements pointed to
   Type2 *field2; // by this field
   ...
};

For example, the following struct has two embedded arrays:

struct ns__Contact
{
   char *firstName;
   char *lastName;
   $intnPhones; // number of Phones
   ULONG64 *phoneNumber; // array of phone numbers
   $intnEmails; // number of emails
   char **emailAddress; // array of email addresses
   char *socSecNumber;
};

The XML serialization of an example ns__Contact is:

<mycontact xsi:type="ns:Contact">
   <firstName>Joe</firstName>
   <lastName>Smith</lastName>
   <phoneNumber>5551112222</phoneNumber>
   <phoneNumber>5551234567</phoneNumber>
   <phoneNumber>5552348901</phoneNumber>
   <emailAddress>Joe.Smith@mail.com</emailAddress>
   <emailAddress>Joe@Smith.com</emailAddress>
   <socSecNumber>999999999</socSecNumber>
</mycontact>

11.11.8  STL Containers

gSOAP supports the STL containers std::deque, std::list, std::set, and std::vector.
STL containers can only be used within classes to declare members that contain multiple values. This is somewhat similar to the embedding of arrays in structs in C as explained in Section 11.11.7, but the STL container approach is more flexible.
You need to import stldeque.h, stllist.h, stlset.h, or stlvector.h to enable std::deque, std::list, std::set, and std::vector (de)serialization. Here is an example:

#import "stlvector.h"
class ns__myClass
{ public:
   std::vector < int > *number;
   std::vector < xsd__string > *name;
   ...
};

The use of pointer members is not required but advised. The reason is that interoperability with other SOAP toolkits may lead to copying of ns__ myClass instances at run time when (de)serializing multi-referenced data. When a copy is made, certain parts of the containers will be shared between the copies which could lead to disaster when the classes with their containers are deallocated. Another way to avoid this is to declare class ns__myClass within other data types via a pointer. (Interoperability between gSOAP clients and services does not lead to copying.)
The XML Schema that corresponds to the ns__myClass type is

<complexType name="myClass">
   <sequence>
      <element name="number" type="xsd:int" minOccurs="1" maxOccurs="unbounded"/>
      <element name="name" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
      ...
   </sequence>
</complexType>

You can specify the minOccurs and maxOccurs values as explained in Section 19.2.
You can also implement your own containers similar to STL containers. The containers must be class templates and should define a forward iterator type, and provide the following methods:
  • void clear() empty the container;
  • iterator begin() return iterator to beginning;
  • const_iterator begin() const return const iterator to beginning;
  • iterator end() return iterator to end;
  • const_iterator end() const return const iterator to end;
  • size_t size() return size;
  • iterator insert(iterator pos, const_reference val) insert element.
The iterator should be a forward iterator with a dereference operator to access the container's elements, it must be comparable (equal/unequal), and be pre-incrementable (++it). The const iterator is used by gSOAP to send a sequence of XML element values. The insert method is used to populate a container with Container::iterator i = container.insert(container.end(), val).
Here is in example user-defined container template class:

// simple_vector.h
template <class T>
class simple_vector
{
public:
   typedef T value_type;
   typedef value_type * pointer;
   typedef const value_type * const_pointer;
   typedef value_type & reference;
   typedef const value_type & const_reference;
   typedef pointer iterator;
   typedef const_pointer const_iterator;
protected:
   iterator head;
   iterator tail;
   size_t capacity;
public:
   simple_vector() { head = tail = NULL; }
   simple_vector(const simple_vector& v)
   { operator=(v); }
   ~simple_vector() { if (head) delete[] head; }
   void clear() { tail = head; }
/* the member functions below are required for (de)serialization of templates */
   iterator begin() { return head; }
   const_iterator begin() const { return head; }
   iterator end() { return tail; }
   const_iterator end() const { return tail; }
   size_t size() const { return tail - head; }
   iterator insert(iterator pos, const_reference val)
   {
      if (!head)
         head = tail = new value_type[capacity = 1];
      else if (tail >= head + capacity)
      {
         iterator i = head;
         iterator j = new value_type[capacity *= 2];
         iterator k = j;
         while (i < tail)
            *k++ = *i++;
         if (pos)
            pos = j + (pos - head);
         tail = j + (tail - head);
         delete[] head;
         head = j;
      }
      if (pos && pos >= head && pos < tail)
      {
         iterator i = tail;
         iterator j = i - 1;
         while (j != pos)
            *i- = *j-;
         *pos = val;
      }
      else 
      {
         pos = tail;
         *tail++ = val;
      }
      return pos;
   }
   simple_vector& operator=(const simple_vector& v)
   {
      head = tail = NULL;
      capacity = v.capacity;
      if (v.head)
      {
         head = tail = new value_type[capacity];
         iterator i = v.head;
         while (i != v.tail)
            *tail++ = *i++;
      }
      return *this;
   }
};

To enable the container, we add the following two lines to our gSOAP header file:

#include "simpleVector.h"
template  < class T > class simpleVector;

The container class should not be defined in the gSOAP header file. It must be defined in a separate header file (e.g. "simpleVector.h"). The template  < class T > class simpleVector declaration ensures that gSOAP will recognize simpleVector as a container class.
Caution: when parsing XML content the container elements may not be stored in the same order given in the XML content. When gSOAP parses XML it uses the insert container methods to store elements one by one. However, element content that is "forwarded" with href attributes will be appended to the container. Forwarding can take place with multi-referenced data that is referred to from the main part of the SOAP 1.1 XML message to the independent elements that carry ids. Therefore, your application should not rely on the preservation of the order of elements in a container.

11.11.9  Polymorphic Dynamic Arrays and Lists

Polymorphic arrays (arrays of polymorphic element types) can be encoded when declared as an array of pointers to class instances. For example:

class ns__Object
{
   public:
   ...
};
class ns__Data: public ns__Object
{
   public:
   ...
};
class ArrayOfObject
{
   public:
   ns__Object **__ptr; // pointer to array of pointers to Objects
   int __size; // number of Objects pointed to
   int __offset; // optional SOAP 1.1 array offset
};
class ns__Objects
{
   public:
   std::vector < ns__Object* > objects; // vector of pointers to objects
};

The pointers in the array can point to the ns__Object base class or ns__Data derived class instances which will be serialized and deserialized accordingly in SOAP. That is, the array elements are polymorphic.
Since we can't use dynamic binding to support polymorphism in C, another mechanism is available based on the serialization of void pointers, that is, dynamic serialization of data referenced by void pointers, see Section 11.9.

struct __wrapper
{
   int __type; // type T represented by SOAP_TYPE_T
   void *__item; // pointer to data of type T
};
struct ArrayOfObject
{
   struct __wrapper __ptr; // pointer to array of pointers to Objects
   int __size; // number of Objects pointed to
   int __offset; // optional SOAP 1.1 array offset
};
struct ns__Objects
{
   int __size;
   struct __wrapper *objects; // array of pointers to wrapped types
};

11.11.10  How to Change the Tag Names of the Elements of a SOAP Array or List

The __ptr field in a struct or class declaration of a dynamic array may have an optional suffix part that describes the name of the tags of the SOAP array XML elements. The suffix is part of the field name:

Type *__ptrarray_elt_name

The suffix describes the tag name to be used for all array elements. The usual identifier to XML translations apply, see Section 10.3. The default XML element tag name for array elements is item (which corresponds to the use of field name __ptritem).
Consider for example:

struct ArrayOfstring
{
   xsd__string *__ptrstring;    int __size; };

The array is serialized as:

<array xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]">
<string xsi:type="xsd:string">Hello</string>
<string xsi:type="xsd:string">World</string>
</array>

SOAP 1.1 and 1.2 do not require the use of a specific tag name for array elements. gSOAP will deserialize a SOAP array while ignoring the tag names. Certain XML Schemas used in doc/literal encoding may require the declaration of array element tag names.

11.12  Base64Binary XML Schema Type Encoding

The base64Binary XML Schema type is a special form of dynamic array declared with a pointer (__ptr) to an unsigned char array.
For example using a struct:

struct xsd__base64Binary
{
   unsigned char *__ptr;
   int __size;
};

Or with a class:

class xsd__base64Binary
{
   public:
   unsigned char *__ptr;
   int __size;
};

When compiled by the gSOAP soapcpp2 tool, this header file specification will generate base64Binary serializers and deserializers.
The SOAP_ENC:base64 encoding is another type for base 64 binary encoding specified by the SOAP data type schema and some SOAP applications may use this form (as indicated by their WSDL descriptions). It is declared by:

struct SOAP_ENC__base64
{
   unsigned char *__ptr;
   int __size;
};

Or with a class:

class SOAP_ENC__base64
{
   unsigned char *__ptr;
   int __size;
};

When compiled by the gSOAP soapcpp2 tool, this header file specification will generate SOAP-ENC:base64 serializers and deserializers.
The advantage of using a class is that methods can be used to initialize and manipulate the __ptr and __size fields. The user can add methods to this class to do this. For example:

class xsd__base64Binary
{
   public:
   unsigned char *__ptr;
   int __size;
   xsd__base64Binary(); // Constructor
   xsd__base64Binary(struct soap *soap, int n); // Constructor
   ~xsd__base64Binary(); // Destructor
   unsigned char *location(); // returns the memory location
   int size(); // returns the number of bytes
};

Here are example method implementations:

xsd__base64Binary::xsd__base64Binary()
{
   __ptr = NULL;
   __size = 0;
}
xsd__base64Binary::xsd__base64Binary(struct soap *soap, int n)
{
   __ptr = (unsigned char*)soap_malloc(soap, n);
   __size = n;
}
xsd__base64Binary::~xsd__base64Binary()
{ }
unsigned char *xsd__base64Binary::location()
{
   return __ptr;
}
int xsd__base64Binary::size()
{
   return __size;
}

The following example in C/C++ reads from a raw image file and encodes the image in SOAP using the base64Binary type:

...
FILE *fd = fopen("image.jpg", "rb");
xsd__base64Binary image(&soap, filesize(fd));
fread(image.location(), image.size(), 1, fd);
fclose(fd);
soap_begin_send(&soap);
image.soap_serialize(&soap);
image.soap_put(&soap, "jpegimage", NULL);
soap_end_send(&soap);
...

where filesize is a function that returns the size of a file given a file descriptor.
Reading the xsd:base64Binary encoded image.

...
xsd__base64Binary image;
soap_begin_recv(&soap);
image.get(&soap, "jpegimage");
soap_end_recv(&soap);
...

The struct or class name soap_enc__base64 should be used for SOAP-ENC:base64 schema type instead of xsd__base64Binary.

11.13  hexBinary XML Schema Type Encoding

The hexBinary XML Schema type is a special form of dynamic array declared with the name xsd__hexBinary and a pointer (__ptr) to an unsigned char array, similar to the base64Binary type described in the previous section. The only difference with the base64Binary type is the hexadecimal content instead of base64 content. Both types are declared identically, with the exception that the word "hex" occurs in the struct/class name.
For example, using a struct:

struct xsd__hexBinary
{
   unsigned char *__ptr;
   int __size;
};

Or using a class:

class xsd__hexBinary
{
   public:
   unsigned char *__ptr;
   int __size;
};

or if a binary type such as xsd__base64Binary is defined, then we can simply use a typedef to introduce the hex variant:

class xsd__base64Binary // serializes into base64 content
{
   public:
   unsigned char *__ptr;
   int __size;
};
typedef xsd__base64Binary xsd__hexBinary; // serializes into hex content

When compiled by the gSOAP soapcpp2 tool, this header file specification will generate hexBinary serializers and deserializers.

11.14  Literal XML Encoding Style

gSOAP supports document/literal encoding by default. Just as with SOAP RPC encoding, literal encoding requires the XML Schema of the message data to be provided e.g. in WSDL in order for the gSOAP soapcpp2 compiler to generate the (de)serialization routines.
The //gsoap service encoding, //gsoap service method-encoding, and //gsoap service method-response-encoding directives explicitly enable SOAP encoded or literal encoded messages. For example, to enable RPC encoding style for the entire service, use:

//gsoap ns service encoding: encoded

To enable encoding for particular service methods, use:

//gsoap ns service method-encoding: myMethod encoded
int ns__myMethod(...)

To enable encoding for particular service methods responses when the method request is literal, use:

//gsoap ns service method-response-encoding: myMethod encoded
int ns__myMethod(...)

Instead of the encoded value, you can use literal, or a specific encoding style value.
Consider the following example that uses the directive to make the literal encoding explicit. The LocalTimeByZipCode service operation of the LocalTime service provides the local time given a zip code and uses literal encoding (with MS .NET). The following header file declares the method:

int LocalTimeByZipCode(char *ZipCode, char **LocalTimeByZipCodeResult);

Note that none of the data types need to be namespace qualified using namespace prefixes.

//gsoap ns service name: localtime
//gsoap ns service encoding: literal
//gsoap ns service namespace: http://alethea.net/webservices/
int ns__LocalTimeByZipCode(char *ZipCode, char **LocalTimeByZipCodeResult);

In this case, the method name requires to be associated with a schema through a namespace prefix, e.g. ns is used in this example. See Section 19.2 for more details on gSOAP directives. With these directives, the gSOAP soapcpp2 compiler generates client and server sources with the specified settings.
The example client program is:

#include "soapH.h"
#include "localtime.nsmap" // include generated map file
int main()
{
   struct soap soap;
   char *t;
   soap_init(&soap);
   if (soap_call_ns__LocalTimeByZipCode(&soap, "http://alethea.net/webservices/LocalTime.asmx", "http://alethea.net/webservices/LocalTimeByZipCode", "32306", &t))
      soap_print_fault(&soap, stderr);
   else
      printf("Time = %s\n", t);
   return 0;
}

To illustrate the manual doc/literal setting, the following client program sets the required properties before the call:

#include "soapH.h"
#include "localtime.nsmap" // include generated map file
int main()
{
   struct soap soap;
   char *t;
   soap_init(&soap);
   soap.encodingStyle = NULL; // don't use SOAP encoding
   soap_set_omode(&soap, SOAP_XML_TREE);" // don't produce multi-ref data (but can accept)
   if (soap_call_ns__LocalTimeByZipCode(&soap, "http://alethea.net/webservices/LocalTime.asmx", "http://alethea.net/webservices/LocalTimeByZipCode", "32306", &t))
      soap_print_fault(&soap, stderr);
   else
      printf("Time = %s\n", t);
   return 0;
}

The SOAP request is:

POST /webservices/LocalTime.asmx HTTP/1.0
Host: alethea.net
Content-Type: text/xml; charset=utf-8
Content-Length: 479
SOAPAction: "http://alethea.net/webservices/LocalTimeByZipCode"

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   <SOAP-ENV:Body>
      <LocalTimeByZipCode xmlns="http://alethea.net/webservices/">
<ZipCode>32306</ZipCode></LocalTimeByZipCode>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

11.14.1  Serializing and Deserializing Mixed Content XML With Strings

To declare a literal XML "type" to hold XML documents in regular strings, use:

typedef char *XML;

To declare a literal XML "type" to hold XML documents in wide character strings, use:

typedef wchar_t *XML;

Note: only one of the two storage formats can be used. The differences between the use of regular strings versus wide character strings for XML documents are:
  • Regular strings for XML documents MUST hold UTF-8 encoded XML documents. That is, the string MUST contain the proper UTF-8 encoding to exchange the XML document in SOAP messages.
  • Wide character strings for XML documents SHOULD NOT hold UTF-8 encoded XML documents. Instead, the UTF-8 translation is done automatically by the gSOAP runtime marshalling routines.
Here is a C++ example of a service operation specification in which the parameters of the service operation uses literal XML encoding to pass an XML document to a service and back:

typedef char *XML;
ns__GetDocument(XML m__XMLDoc, XML &m__XMLDoc_);

and in C:

typedef char *XML;
ns__GetDocument(XML m__XMLDoc, XML *m__XMLDoc_);

The ns__Document is essentially a struct that forms the root of the XML document. The use of the underscore in the ns__Document response part of the message avoids the name clash between the structs. Assuming that the namespace mapping table contains the binding of ns to http://my.org/ and the binding of m to http://my.org/mydoc.xsd, the XML message is:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:ns="http://my.org/"
   xmlns:m="http://my.org/mydoc.xsd"
   SOAP-ENV:encodingStyle="">
   <SOAP-ENV:Body>
      <ns:GetDocument>
         <XMLDoc xmlns="http://my.org/mydoc.xsd">
            ...
         </XMLDoc>
      </ns:Document>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

When using literal encoding of method parameters and response as shown in the example above, the literal XML encoding style MUST be specified by setting soap.encodingStyle. For example, to specify no constraints on the encoding style (which is typical) use NULL:

struct soap soap;
soap_init(&soap);
soap.encodingStyle = NULL;

As a result, the SOAP-ENV:encodingStyle attribute will not appear in the SOAP payload.
For interoperability with Apache SOAP, use

struct soap soap;
soap_init(&soap);
soap.encodingStyle = "http://xml.apache.org/xml-soap/literalxml";

When the response parameter is an XML type, it will store the entire XML response content but without the enveloping response element.
The XML type can be used as part of any data structure to enable the rendering and parsing of custom XML documents. For example:

typedef char *XML;
struct ns__Data /* data in namespace 'ns' */
{
   int number;
   char *name;
   XML m__document; /* XML document in default namespace 'm' */
};
ns__Example(struct ns__Data data, struct ns__ExampleResponse { struct ns__Data data; } *out);

12  SOAP Fault Processing

A predeclared standard SOAP Fault data structure is generated by the gSOAP soapcpp2 tool for exchanging exception messages. The built-in struct SOAP_ENV__Fault data structure is defined as:

struct SOAP_ENV__Fault
{
   _QName faultcode; // _QName is builtin
   char *faultstring;
   char *faultactor;
   struct SOAP_ENV__Detail *detail;
   struct SOAP_ENV__Code *SOAP_ENV__Code; // MUST be a SOAP_ENV__Code struct defined below
   char *SOAP_ENV__Reason;
   char *SOAP_ENV__Node;
   char *SOAP_ENV__Role;
   struct SOAP_ENV__Detail *SOAP_ENV__Detail; // SOAP 1.2 detail field
};
struct SOAP_ENV__Code
{
   _QName SOAP_ENV__Value;
   struct SOAP_ENV__Code *SOAP_ENV__Subcode;
};
struct SOAP_ENV__Detail
{
   int __type; // The SOAP_TYPE_ of the object serialized as Fault detail
   void *fault; // pointer to the fault object, or NULL
   char *__any; // any other detail element content (stored in XML format)
};

The first four fields in SOAP_ENV__Fault are SOAP 1.1 specific. The last five fields are SOAP 1.2 specific. You can redefine these structures in the header file. For example, you can use a class for the SOAP_ENV__Fault and add methods for convenience.
The data structure content can be changed to the need of an application, but this is generally not necessary because the application-specific SOAP Fault details can be serialized via the __type and fault fields in the SOAP_ENV__Detail field, see Section 11.9 on the serialization of data refered to by __type and fault.
The __type field allows application data to be serialized as part of the SOAP Fault. The application data SHOULD be defined as XML elements, which requires you to declare the type names with a leading underscore to ensure that the types are compatible with XML elements and not just simpleTypes and complexTypes.
When the skeleton of a service operation returns an error (see Section 10.2), then soap.fault contains the SOAP Fault data at the receiving side (client).
Server-side faults are raised with soap_sender_fault or soap_receiver_fault. The soap_sender_fault call should be used to inform that the sender is at fault and the sender (client) should not resend the request. The soap_receiver_fault call should be used to indicate a temporary server-side problem, so a sender (client) can resend the request later. For example:

int ns1__myMethod(struct soap *soap, ...)
{
   ...
   return soap_receiver_fault(soap, "Resource temporarily unavailable", NULL); // return fault to sender
}

In the example, the SOAP Fault details were empty (NULL). You may pass an XML fragment, which will be literally included in the SOAP Fault message. For WS-I Basic Profile compliance, you must pass an XML string with one or more namespace qualified elements, such as:

return soap_receiver_fault(soap, "Resource temporarily unavailable", " < errorcode xmlns='http://tempuri.org' > 123 < /errorcode > < errorinfo xmlns='http://tempuri.org' > abc < /errorinfo > ");

When a service operation must raise an exception with application SOAP Fault details, it does so by assigning the soap.fault field of the current reference to the runtime context with appropriate data associated with the exception and by returning the error SOAP_FAULT. For example:

   soap_receiver_fault(soap, "Stack dump", NULL);
   if (soap->version == 2) // SOAP 1.2 is used
   {
      soap->fault->SOAP_ENV__Detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail);
      soap->fault->SOAP_ENV__Detail->__type = SOAP_TYPE_ns1__myStackDataType; // stack type
      soap->fault->SOAP_ENV__Detail->fault = sp; // point to stack
      soap->fault->SOAP_ENV__Detail->__any = NULL; // no other XML data
   }
   else 
   {
      soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail);
      soap->fault->detail->__type = SOAP_TYPE_ns1__myStackDataType; // stack type
      soap->fault->detail->fault = sp; // point to stack
      soap->fault->detail->__any = NULL; // no other XML data
   }
   return SOAP_FAULT; // return from service operation call

When soap_receiver_fault allocates a fault struct, this data is removed with the soap_end call (or soap_dealloc). Note that the soap_receiver_fault function is called to allocate the fault struct and set the fault string and detail fields, i.e. soap_receiver_fault(soap, "Stack dump", NULL). The advantage is that this is independent of SOAP 1.1 and SOAP 1.2. However, setting the custom detail fields requires inspecting the SOAP version used, using the soap->version attribute which is 1 for SOAP 1.1 and 2 for SOAP 1.2.
Each service operation implementation in a service application can return a SOAP Fault upon an exception by returning an error code, see Section 7.2.1 for details and an example. In addition, a SOAP Fault can be returned by a service application through calling the soap_send_fault function. This is useful in case the initialization of the application fails, as illustrated in the example below:

int main()
{
   struct soap soap;
   soap_init(&soap);
   some initialization code
   if (initialization failed)
   {
      soap.error = soap_receiver_fault(&soap, "Init failed", NULL); // set the error condition (SOAP_FAULT)
      soap_send_fault(&soap); // Send SOAP Fault to client
      return 0; // Terminate
   }
}

13  SOAP Header Processing

A predeclared standard SOAP Header data structure is generated by the gSOAP soapcpp2 tool for exchanging SOAP messages with SOAP Headers. This predeclared data structure is:

struct SOAP_ENV__Header { };

which declares and empty header (some C and C++ compilers don't accept empty structs, use compile flag -DWITH_NOEMPTYSTRUCT to avoid these errors).
To adapt the data structure to a specific need for SOAP Header processing, a new struct SOAP_ENV__Header can be added to the header file input to the gSOAP compiler. A class for the SOAP Header data structure can be used instead of a struct.
For example, the following header can be used for transaction control:

struct SOAP_ENV__Header
{ char *t__transaction;
};

with client-side code:

   struct soap soap;
   soap_init(&soap);
...
soap.header = NULL; // do not use a SOAP Header for the request (as set with soap_init)
soap.actor = NULL; // do not use an actor (receiver is actor)
soap_call_method(&soap, ...);
if (soap.header) // a SOAP Header was received
   cout << soap.header->t__transaction;
// Can reset, modify, or set soap.header here before next call
soap_call_method(&soap, ...); // reuse the SOAP Header of the service response for the request
...

The SOAP Web service response can include a SOAP Header with a transaction number that the client is supposed to use for the next service operation invocation to the service. Therefore, the next request includes a transaction number:

...
<SOAP-ENV:Envelope ...>
<SOAP-ENV:Header>
<transaction xmlns="..." xsi:type="int">12345</transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

This is just an example and the transaction control is not a feature of SOAP but can be added on by the application layer to implement stateful transactions between clients and services. At the client side, the soap.actor attribute can be set to indicate the recipient of the header (the SOAP SOAP-ENV:actor attribute).
A Web service can read and set the SOAP Header as follows:

int main()
{
   struct soap soap;
   soap.actor = NULL; // use this to accept all headers (default)
   soap.actor = "http://some/actor"; // accept headers destined for "http://some/actor" only
   soap_serve(&soap);
}
...
int method(struct soap *soap, ...)
{
   if (soap->header) // a Header was received
      ... = soap->header->t__transaction;
   else 
      soap->header = soap_malloc(sizeof(struct SOAP_ENV__Header)); // alloc new header
...       soap->header->t__transaction = ...;
   return SOAP_OK;
}

See Section 19.2 on how to generate WSDL with the proper method-to-header-part bindings.
The SOAP-ENV:mustUnderstand attribute indicates the requirement that the recipient of the SOAP Header (who must correspond to the SOAP-ENV:actor attribute when present or when the attribute has the value SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next") MUST handle the Header part that carries the attribute. gSOAP handles this automatically on the background. However, an application still needs to inspect the header part's value and handle it appropriately. If a service operation in a Web service is not able to do this, it should return SOAP_MUSTUNDERSTAND to indicate this failure.
The syntax for the header file input to the gSOAP soapcpp2 compiler is extended with a special storage qualifier mustUnderstand. This qualifier can be used in the SOAP Header declaration to indicate which parts should carry a SOAP-ENV:mustUnderstand="1" attribute. For example:

struct SOAP_ENV__Header
{
   char *t__transaction;
   mustUnderstand char *t__authentication;
};

When both fields are set and soap.actor="http://some/actor" then the message contains:

<SOAP-ENV:Envelope ...>
<SOAP-ENV:Header>
<transaction xmlns="...">5</transaction>
<authentication xmlns="..."
   SOAP-ENV:actor="http://some/actor" SOAP-ENV:mustUnderstand="1">XX
</authentication>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

14  MIME Attachments

The gSOAP toolkit supports MIME attachments as per SOAP with Attachments (SwA) specification (http://www.w3.org/TR/SOAP-attachments). In the following discussion, MIME attachment data is assumed to be resident in memory for sending operations and MIME attachments received will be stored in memory. MTOM and DIME attachments on the other hand can be streamed and therefore MTOM/DIME attachment data does not need to be stored in memory, see Section 15 and 16.
Transmitting multipart/related MIME attachments with a SOAP/XML message is accomplished with two functions, soap_set_mime and soap_set_mime_attachment. The first function is for initialization purposes and the latter function is used to specify meta data and content data for each attachment.

14.1  Sending a Collection of MIME Attachments (SwA)

The following functions should be used to set up a collection of multipart/related MIME attachments for transmission with a SOAP/XML message.

Function
void soap_set_mime(struct soap *soap, const char *boundary, const char *start)
This function must be called first to initialize MIME attachment send operations (receives are automatic). The function specifies a MIME boundary and start content ID used for the SOAP message body. When boundary is NULL, an appropriate MIME boundary will be choosen (important: boundaries cannot occur in the SOAP/XML message and cannot occur in any of the MIME attachments content). When a specific boundary value is provided, gSOAP will NOT verify that the boundary is valid. When start is NULL, the start ID of the SOAP message is <SOAP-ENV:Envelope>.
int soap_set_mime_attachment(struct soap *soap, char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description)
This function adds a new attachment to the list of attachments, where ptr and size refer to the block of memory that holds the attachment data. The encoding parameter specifies the content encoding of this block, where the value of encoding is one of SOAP_MIME_7BIT, SOAP_MIME_8BIT, SOAP_MIME_BINARY, SOAP_MIME_QUOTED_PRINTABLE, SOAP_MIME_BASE64, SOAP_MIME_IETF_TOKEN, or SOAP_MIME_X_TOKEN. These constants reflect the content encoding defined in RFC2045 and you MUST adhere to the content encoding rules defined by RFC2045. When in doubt, use SOAP_MIME_BINARY, since this encoding type covers any content. The mandatory type string parameter is the MIME type of the data. The id string parameter is the content ID of the MIME attachment. The optional location string parameter is the content location of the attachment. The optional description string parameter holds a textual description of the attachment (it may not contain any control characters). All parameter values are copied, except ptr which must point to a valid location of the attachment data during the transfer. The value SOAP_OK is returned when the attachment was added. Otherwise a gSOAP error code is returned.
void soap_clr_mime(struct soap *soap)
Disables MIME attachments, e.g. to avoid MIME attachments to be part of a SOAP Fault response message.

When providing a MIME boundary with soap_set_mime, you have to make sure the boundary cannot match any SOAP/XML message content. Or you can simply pass NULL and let gSOAP select a safe boundary for you.
The internal list of attachments is destroyed with soap_end, you should call this function sometime after the message exchange was completed (the content of the block of memory referred to by the ptr parameter is unaffected).
The following example shows how a multipart/related HTTP message with three MIME attachments is set up and transmitted to a server. The first attachment contains the SOAP message. The second and third attachments contain image data. In this example we let the SOAP message body refer to the attachments using href attributes. The struct claim__form data type includes a definition of a href attribute for this purpose.

struct claim__form form1, form2;
form1.href = "cid:claim061400a.tiff@claiming-it.com";
form2.href = "cid:claim061400a.jpeg@claiming-it.com";
/* initialize and enable MIME */
soap_set_mime(soap, "MIME_boundary", "<claim061400a.xml@claiming-it.com>");
/* add a base64 encoded tiff image (tiffImage points to base64 data) */
soap_set_mime_attachment(soap, tiffImage, tiffLen, SOAP_MIME_BASE64, "image/tiff",
         "<claim061400a.tiff@claiming-it.com>", NULL, NULL);
/* add a raw binary jpeg image (jpegImage points to raw data) */
soap_set_mime_attachment(soap, jpegImage, jpegLen, SOAP_MIME_BINARY, "image/jpeg",
         "<claim061400a.jpeg@claiming-it.com>", NULL, NULL);
/* send the forms as MIME attachments with this invocation */
if (soap_call_claim__insurance_claim_auto(soap, form1, form2, ...))
   // an error occurred
else
   // process response

Note: the above example assumes that the boundary MIME_boundary does not match any part of the SOAP/XML message.
The claim__form struct is declared in the gSOAP header file as:

struct claim__form
{ @char *href;
};

This data type defines the parameter data of the operation. The claim forms in the SOAP/XML message consist of hrefs to the claim forms attached. The produced message is similar to the last example shown in the SOAP with Attachments specification (http://www.w3.org/TR/SOAP-attachments). Note that the use of href or other attributes for referring to the MIME attachments is optional according to the SwA standard.
To associate MIME attachments with the request and response of a service operation in the generated WSDL, please see Section 16.1.
The server-side code to transmit MIME attachments back to a client is similar:

int claim__insurance_claim_auto(struct soap *soap, ...)
{
   soap_set_mime(soap, NULL, NULL); // enable MIME
   // add a HTML document (htmlDoc points to data, where the HTML doc is stored in compliance with 7bit encoding RFC2045)
   if (soap_set_mime_attachment(soap, htmlDoc, strlen(htmlDoc), SOAP_MIME_7BIT, "text/html",
         "<claim061400a.html@claiming-it.com>", NULL, NULL))
   {
      soap_clr_mime(soap); // don't want fault with attachments
      return soap->error;
   }
   return SOAP_OK;
}

It is also possible to attach data to a SOAP fault message.
Caution: DIME in MIME is supported. However, gSOAP will not verify whether the MIME boundary is present in the DIME attachments and therefore will not select a boundary that is guaranteed to be unique. Therefore, you must provide a MIME boundary with soap_set_mime that is unique when using DIME in MIME.

14.2  Retrieving a Collection of MIME Attachments (SwA)

MIME attachments are automatically parsed and stored in memory. After receiving a set of MIME attachments, either at the client-side or the server-side, the list of MIME attachments can be traversed to extract meta data and the attachment content. The first attachment in the collection of MIME attachments always contains meta data about the SOAP message itself (because the SOAP message was processed the attachment does not contain any useful data).
To traverse the list of MIME attachments in C, you use a loop similar to:

struct soap_multipart *attachment;
for (attachment = soap.mime.list; attachment; attachment = attachment->next)
{
   printf("MIME attachment:\n");
   printf("Memory=%p\n", (*attachment).ptr);
   printf("Size=%ul\n", (*attachment).size);
   printf("Encoding=%d\n", (int)(*attachment).encoding);
   printf("Type=%s\n", (*attachment).type?(*attachment).type:"null");
   printf("ID=%s\n", (*attachment).id?(*attachment).id:"null");
   printf("Location=%s\n", (*attachment).location?(*attachment).location:"null");
   printf("Description=%s\n", (*attachment).description?(*attachment).description:"null");
}

C++ programmers can use an iterator instead, as in:

for (soap_multipart::iterator attachment = soap.mime.begin(); attachment != soap.mime.end(); ++attachment)
{
   cout << "MIME attachment:" << endl;
   cout << "Memory=" << (void*)(*attachment).ptr << endl;
   cout << "Size=" << (*attachment).size << endl;
   cout << "Encoding=" << (*attachment).encoding << endl;
   cout << "Type=" << ((*attachment).type?(*attachment).type:"null") << endl;
   cout << "ID=" << ((*attachment).id?(*attachment).id:"null") << endl;
   cout << "Location=" << ((*attachment).location?(*attachment).location:"null") << endl;
   cout << "Description=" << ((*attachment).description?(*attachment).description:"null") << endl;
}

Note: keep in mind that the first attachment is associated with the SOAP message and you may want to ignore it if the message has the attachment data already embedded through its hrefs.
A call to soap_end removes all of the received MIME data. To preserve an attachment in memory, use soap_unlink on the ptr field of the soap_multipart struct. Recall that the soap_unlink function is commonly used to prevent deallocation of deserialized data.

15  DIME Attachments

The gSOAP toolkit supports DIME attachments as per DIME specification, see https://msdn.microsoft.com/en-us/library/aa480488.aspx
Applications developed with gSOAP can transmit binary DIME attachments with or without streaming messages. Without streaming, all data is stored and retrieved in memory, which can be prohibitive when transmitting large files on small devices. The maximum DIME attachment size is limited to 8 MB by default as set with SOAP_MAXDIMESIZE in stdsoap2.h. This limit can be changed as needed by recompiling stdsoap2.c and stdsoap2.cpp with -DSOAP_MAXDIMESIZE=100000000 for example. In contrast, with DIME streaming, data handlers are used to pass the data to and from a resource, such as a file or device. With DIME output streaming, raw binary data is send from a data source in chunks on the fly without buffering the entire content to save memory. With DIME input streaming, raw binary data will be passed to data handlers (callbacks).

15.1  Sending a Collection of DIME Attachments

The following functions can be used to explicitly set up a collection of DIME attachments for transmission with a SOAP/XML message body. The attachments can be streamed, as described in Section 15.4. Without streaming, each attachment must refer to a block of data in memory.

Function
void soap_set_dime(struct soap *soap)
This function must be called first to initialize DIME attachment send operations (receives are automatic).
int soap_set_dime_attachment(struct soap *soap, char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option)
This function adds a new attachment to the list of attachments, where ptr and size refer to the block of memory that holds the attachment data (except when DIME streaming callback handlers are used as described in Section 15.4. The type string parameter is the MIME type of the data. The id string parameter is the content ID of the DIME attachment. The option string parameter holds optional text (gSOAP supports DIME options, but it can send only one) and optype is a user-defined option type (as per DIME option specification format). All parameter values are copied, except ptr. The value SOAP_OK is returned when the attachment was added. Otherwise a gSOAP error code is returned.
void soap_clr_dime(struct soap *soap)
Disables DIME attachments, unless the serialized SOAP message contains attachments for transmission.

These functions allow DIME attachments to be added without requiring message body references. This is also referred to as the open DIME attachment style. The closed attachment style requires all DIME attachments to be referenced from the SOAP message body with href (or similar) references. For the closed style, gSOAP supports an automatic binary data serialization method, see Section 15.3.

15.2  Retrieving a Collection of DIME Attachments

DIME attachments are automatically parsed and stored in memory (or passed to the streaming handlers, when applicable). After receiving a set of DIME attachments, either at the client-side or the server-side, the list of DIME attachments can be traversed to extract meta data and the attachment content.
To traverse the list of DIME attachments in C, you use a loop similar to:

struct soap_multipart *attachment;
for (attachment = soap.dime.list; attachment; attachment = attachment->next)
{
   printf("DIME attachment:\n");
   printf("Memory=%p\n", (*attachment).ptr);
   printf("Size=%ul\n", (*attachment).size);
   printf("Type=%s\n", (*attachment).type?(*attachment).type:"null");
   printf("ID=%s\n", (*attachment).id?(*attachment).id:"null");
}

C++ programmers can use an iterator instead, as in:

for (soap_multipart::iterator attachment = soap.dime.begin(); attachment != soap.dime.end(); ++attachment)
{
   cout << "DIME attachment:" << endl;
   cout << "Memory=" << (void*)(*attachment).ptr << endl;
   cout << "Size=" << (*attachment).size << endl;
   cout << "Type=" << ((*attachment).type?(*attachment).type:"null") << endl;
   cout << "ID=" << ((*attachment).id?(*attachment).id:"null") << endl;
}

The options field is available as well. The options content is formatted according to the DIME specification: the first two bytes are reserved for the option type, the next two bytes store the size of the option data, followed by the (binary) option data.
A call to soap_end removes all of the received DIME data. To preserve an attachment in memory, use soap_unlink on the ptr field of the soap_multipart struct. Recall that the soap_unlink function is commonly used to prevent deallocation of deserialized data.

15.3  Serializing Binary Data in DIME

Binary data stored in extended xsd:base64Binary and xsd:hexBinary types can be serialized and deserialized as DIME attachments. These attachments will be transmitted prior to the sequence of secondary DIME attachments defined by the user with soap_set_dime_attachment as explained in the previous section. The serialization process is automated for SOAP encoded messages and DIME attachments will be send even when soap_set_dime or soap_set_dime_attachment are not used. For non-SOAP-encoded messages such as document/literal messages you must still call soap_set_dime to enable sending messages with attachments.
The xsd:base64Binary XSD type is defined in gSOAP as a struct or class by

struct xsd__base64Binary
{
   unsigned char *__ptr; // pointer to raw binary data
   int __size; // size of the block of data
};

To enable serialization of the data in DIME, we extend this type with three additional fields:

struct xsd__base64Binary
{
   unsigned char *__ptr;
   int __size;
   char *id;
   char *type;
   char *options;
};

The three additional fields consist of an id field for attachment referencing (typically a content id (CID) or UUID), a type field to specify the MIME type of the binary data, and an options field to piggy-back additional information with a DIME attachment. The order of the declaration of the fields is significant. In addition, no other fields or methods may be declared before any of these fields in the struct/class, but additional fields and methods may appear after the field declarations. An extended xsd__hexBinary declaration is similar.
The id and type fields contain text. The set the DIME-specific options field, you can use the soap_dime_option function:

char *soap_dime_option(struct soap *soap, unsigned short type, const char *option)

returns a string with this encoding. For example

struct xsd__base64Binary image;
image.__ptr = ...;
image.__size = ...;
image.id = "uuid:09233523-345b-4351-b623-5dsf35sgs5d6";
image.type = "image/jpeg";
image.options = soap_dime_option(soap, 0, "My wedding picture");

When either the id or type field values are non-NULL at run time, the data will be serialized as a DIME attachment. The SOAP/XML message refers to the attachments using href attributes. This generally works will with SOAP RPC, because href attributes are permitted. However, with document/literal style the referencing mechanism must be explicitly defined in the schema of the binary type. The gSOAP declaration of an extended binary type is

struct ns__myBinaryDataType
{
   unsigned char *__ptr;
   int __size;
   char *id;
   char *type;
   char *options;
};

C++ programmers can use inheritance instead of textual extension required in C, as in

class xsd__base64Binary
{
   unsigned char *__ptr;
   int __size;
};
class ns__myBinaryDataType : xsd__base64Binary
{
   char *id;
   char *type;
   char *options;
};

This defines an extension of xsd:base64Binary, such that the data can be serialized as DIME attachments using href attributes for referencing. When a different attribute name is in fact used, it must be explicitly defined:

//gsoap WSref schema import: http://schemas.xmlsoap.org/ws/2002/04/reference/
struct ns__myBinaryDataType
{
   unsigned char *__ptr;
   int __size;
   char *id;
   char *type;
   char *options;
   @char *WSref__location;
};

The example above uses the location attribute defined in the content reference schema, as defined in one of the vendor's specific WSDL extensions for DIME (http://www.gotdotnet.com/team/xml_wsspecs/dime/WSDL-Extension-for-DIME.htm).
When receiving DIME attachments, the DIME meta data and binary data content is stored in binary data types only when the XML parts of the message uses href attributes to refer to these attachments. The gSOAP toolkit may support automatic (de)serialization with other user-defined (or WSDL-defined) attributes in future releases.
Messages may contain binary data that references external resources not provided as attachments. In that case, the __ptr field is NULL and the id field refers to the external data source.
The dime_id_format attribute of the current gSOAP run-time context can be set to the default format of DIME id fields. The format string MUST contain a %d format specifier (or any other int-based format specifier). The value of this specifier is a non-negative integer, with zero being the value of the DIME attachment id for the SOAP message. For example,

struct soap soap;
soap_init(&soap);
soap.dime_id_format = "uuid:09233523-345b-4351-b623-5dsf35sgs5d6-%x";

As a result, all attachments with a NULL id field will use a gSOAP-generated id value based on the format string.
Caution: Care must be taken not to introduce duplicate content id values, when assigning content id values to the id fields of DIME extended binary data types. Content ids must be unique.

15.4  Streaming DIME

Streaming DIME is achieved with callback functions to fetch and store data during transmission. Three function callbacks for streaming DIME output and three callbacks for streaming DIME input are available.


Callback (function pointer)
void *(*soap.fdimereadopen)(struct soap *soap, void *handle, const char *id, const char *type, const char *options)
Called by the gSOAP run-time DIME attachment sender to start reading from a (binary) data source for outbound transmission. The content will be read from the application's data source in chunks using the fdimeread callback and streamed into the SOAP/XML/DIME output stream. The handle contains the value of the __ptr field of an attachment struct/class, which could be a pointer to specific information such as a file descriptor or a pointer to a string to be passed to this callback. Both __ptr and __size fields should have been set by the application prior to the serialization of the content. The id, type, and options arguments are the DIME id, type, and options, respectively. The callback should return handle, or another pointer value which will be passed as a handle to fdimeread and fdimereadclose. The callback should return NULL and set soap->error when an error occurred. The callback should return NULL (and not set soap->error) when this particular DIME attachment is not to be streamed.
size_t (*soap.fdimeread)(struct soap *soap, void *handle, char *buf, size_t len)
Called by the gSOAP run-time DIME attachment sender to read more data from a (binary) data source for streaming into the output stream. The handle contains the value returned by the fdimereadopen callback. The buf argument is the buffer of length len into which a chunk of data should be stored. The actual amount of data stored in the buffer may be less than len and this amount should be returned by the application. A return value of 0 indicates an error (the callback may set soap->errnum to errno). The __size field of the attachment struct/class should have been set by the application prior to the serialization of the content. The value of __size indicates the total size of the content to be transmitted. When the __size is zero then DIME chunked transfers can be used under certain circumstances to stream content without prior determination of attachment size, see Section 15.5 below.
void(*soap.fdimereadclose)(struct soap *soap, void *handle)
Called by the gSOAP run-time DIME attachment sender at the end of the streaming process to close the data source. The handle contains the value returned by the fdimereadopen callback. The fdimewriteclose callback is called after successfully transmitting the data or when an error occurred.
void *(*soap.fdimewriteopen)(struct soap *soap, const char *id, const char *type, const char *options)
Called by the gSOAP run-time DIME attachment receiver to start writing an inbound DIME attachment to an application's data store. The content is streamed into an application data store through multiple fdimewrite calls from the gSOAP attachment receiver. The id, type, and options arguments are the DIME id, type, and options respectively. The callback should return a handle which is passed to the fdimewrite and fdimewriteclose callbacks. The __ptr field of the attachment struct/class is set to the value of this handle. The __size field is set to the total size of the attachment after receiving the entire content. The size is unknown in advance because DIME attachments may be chunked.
int (*soap.fdimewrite)(struct soap *soap, void *handle, const char *buf, size_t len)
Called by the gSOAP run-time DIME attachment receiver to write part of an inbound DIME attachment to an application's data store. The handle contains the value returned by the fdimewriteopen callback. The buf argument contains the data of length len. The callback should return a gSOAP error code (e.g. SOAP_OK when no error occurred).
void(*soap.fdimewriteclose)(struct soap *soap, void *handle)
Called by the gSOAP run-time DIME attachment receiver at the end of the streaming process to close the data store. The fdimewriteclose callback is called after successfully receiving the data or when an error occurred. The handle contains the value returned by the fdimewriteopen callback.

In addition, a void*user field in the struct soap data structure is available to pass user-defined data to the callbacks. This way, you can set soap.user to point to application data that the callbacks need such as a file name for example.
The following example illustrates the client-side initialization of an image attachment struct to stream a file into a DIME attachment:

int main()
{
   struct soap soap;
   struct xsd__base64Binary image;
   FILE *fd;
   struct stat sb;
   soap_init(&soap);
   if (!fstat(fileno(fd), &sb) && sb.st_size > 0)
   { // because we can get the length of the file, we can stream it
      soap.fdimereadopen = dime_read_open;
      soap.fdimereadclose = dime_read_close;
      soap.fdimeread = dime_read;
      image.__ptr = (unsigned char*)fd; // must set to non-NULL (this is our fd handle which we need in the callbacks)
      image.__size = sb.st_size; // must set size
   }
   else
   { // don't know the size, so buffer it
      size_t i;
      int c;
      image.__ptr = (unsigned char*)soap_malloc(&soap, MAX_FILE_SIZE);
      for (i = 0; i < MAX_FILE_SIZE; i++)
      {
         if ((c = fgetc(fd)) == EOF)
            break;
         image.__ptr[i] = c;
      }
      fclose(fd);
      image.__size = i;
   }
   image.type = "image/jpeg";
   image.options = soap_dime_option(&soap, 0, "My picture");
   soap_call_ns__method(&soap, ...);
   ...
}
void *dime_read_open(struct soap *soap, void *handle, const char *id, const char *type, const char *options)
{ return handle;
}
void dime_read_close(struct soap *soap, void *handle)
{ fclose((FILE*)handle);
}
size_t dime_read(struct soap *soap, void *handle, char *buf, size_t len)
{ return fread(buf, 1, len, (FILE*)handle);
}

The following example illustrates the streaming of a DIME attachment into a file by a client:

int main()
{ struct soap soap;
   soap_init(&soap);
   soap.fdimewriteopen = dime_write_open;
   soap.fdimewriteclose = dime_write_close;
   soap.fdimewrite = dime_write;
   soap_call_ns__method(&soap, ...);
   ...
}
void *dime_write_open(struct soap *soap, const char *id, const char *type, const char *options)
{
   FILE *handle = fopen("somefile", "wb");
   if (!handle)
   {
      soap->error = SOAP_EOF;
      soap->errnum = errno; // get reason
   }
   return (void*)handle;
}
void dime_write_close(struct soap *soap, void *handle)
{ fclose((FILE*)handle);
}
int dime_write(struct soap *soap, void *handle, const char *buf, size_t len)
{
   size_t nwritten;
   while (len)
   {
      nwritten = fwrite(buf, 1, len, (FILE*)handle);
      if (!nwritten)
      {
         soap->errnum = errno; // get reason
         return SOAP_EOF;
      }
      len -= nwritten;
      buf += nwritten;
   }
   return SOAP_OK;
}

Note that compression can be used with DIME to compress the entire message. However, compression requires buffering to determine the HTTP content length header, which cancels the benefits of streaming DIME. To avoid this, you should use chunked HTTP (with the output-mode SOAP_IO_CHUNK flag) with compression and streaming DIME. At the server side, when you set SOAP_IO_CHUNK before calling soap_serve, gSOAP will automatically revert to buffering (SOAP_IO_STORE flag is set). You can check this flag with (soap->omode & SOAP_IO) == SOAP_IO_CHUNK to see if the client accepts chunking. More information about streaming chunked DIME can be found in Section 15.5.
Caution: The options field is a DIME-specific data structure, consisting of a 4 byte header containing the option type info (hi byte, lo byte), option string length (hi byte, lo byte), followed by a non-'\0' terminated string. The gSOAP DIME handler recognizes one option at most.

15.5  Streaming Chunked DIME

gSOAP automatically handles inbound chunked DIME attachments (streaming or non-streaming). To transmit outbound DIME attachments, the attachment sizes MUST be determined in advance to calculate HTTP message length required to stream DIME over HTTP. However, gSOAP also supports the transmission of outbound chunked DIME attachments without prior determination of DIME attachment sizes when certain conditions are met. These conditions require either non-HTTP transport (use the output-mode SOAP_ENC_PLAIN flag), or chunked HTTP transport (use the output-mode SOAP_IO_CHUNK flag). You can also use the SOAP_IO_STORE flag (which is also used automatically with compression to determine the HTTP content length header) but that cancels the benefits of streaming DIME.
To stream chunked DIME, set the __size field of an attachment to zero and enable HTTP chunking. The DIME fdimeread callback then fetches data in chunks and it is important to fill the entire buffer unless the end of the data has been reached and the last chunk is to be send. That is, fdimeread should return the value of the last len parameter and fill the entire buffer buf for all chunks except the last.

15.6  WSDL Bindings for DIME Attachments

The wsdl2h WSDL parser recognizes DIME attachments and produces an annotated header file. Both open and closed layouts are supported for transmitting DIME attachments. For closed formats, all DIME attachments must be referenced from the SOAP message, e.g. using hrefs with SOAP encoding and using the application-specific reference attribute included in the base64Binary struct/class for doc/lit.
The gSOAP compiler soapcpp2 does not produce a WSDL with DIME extensions. DIME is an older binary format that has no WSDL protocol support, unlike MIME and MTOM.

16  MTOM Attachments

MTOM (Message Transmission Optimization Mechanism) is a relatively new format for transmitting attachments with SOAP messages (see http://www.w3.org/TR/soap12-mtom). MTOM is a W3C working draft as of this writing. MTOM attachments are essentially MIME attachments with standardized mechanisms for cross referencing attachments from the SOAP body, which is absent in (plain) MIME attachments and optional with DIME attachments.
Unlike the name suggests, the speed by which attached data is transmitted is not increased compared to MIME, DIME, or even XML encoded base64 data (at least the performance differences in gSOAP will be small). The advantage of the format is the standardized attachment reference mechanism, which should improve interoperability.
The MTOM specification mandates SOAP 1.2 and the use of the XOP namespace. The XOP Include element xop:Include is used to reference attachment(s) from the SOAP message body.
Because references from within the SOAP message body to attachments are mandatory with MTOM, the implementation of the serialization and deserialization of MTOM MIME attachments in gSOAP uses the extended binary type comparable to DIME support in gSOAP. This binary type is predefined in the import/xop.h file:

//gsoap xop schema import: http://www.w3.org/2004/08/xop/include
struct _xop__Include
{
   unsigned char *__ptr;
   int __size;
   char *id;
   char *type;
   char *options;
};
typedef struct _xop__Include _xop__Include;

The additional id, type, and option fields enable MTOM attachments for the data pointed to by __ptr of size __size. The process for sending and receiving MTOM XOP attachments is fully automated. The id field references the attachment (typically a content id CID or UUID). When set to NULL, gSOAP assigns a unique CID. The type field specifies the required MIME type of the binary data, and the optional options field can be used to piggy-back descriptive text with an attachment. The order of the declaration of the fields is significant.
You can explicitly import the xop.h in your header file to use the MTOM attachments in your service, for example:

#import "import/soap12.h"
/* alternatively, without the import above, use:
//gsoap SOAP-ENV schema namespace: http://www.w3.org/2003/05/soap-envelope
//gsoap SOAP-ENC schema namespace: http://www.w3.org/2003/05/soap-encoding
*/
#import "import/xop.h"
#import "import/xmime5.h"

//gsoap x schema namespace: http://my.first.mtom.net
struct x__myData
{
   _xop__Include xop__Include; // attachment
   @char *xmime5__contentType; // and its contentType
};
int x__myMTOMtest(struct x__myData *in, struct x__myData *out);

As you can see, there is really no difference between the specification of MTOM and DIME attachments in a gSOAP header file. Except that you MUST use SOAP 1.2 and the xop__Include element.
When an instance of x__myDataType is serialized and either or both the id and type fields are non-NULL, the data is transmitted as MTOM MIME attachment if the SOAP_ENC_MTOM flag is set in the gSOAP's soap struct context:

struct soap *soap = soap_new1(SOAP_ENC_MTOM);

Without this flag, the attachments will be transmitted in DIME format (Section 15). If your current clients and services are based on non-streaming DIME attachments using the SOAP body reference mechanism (thus, without using the soap_set_dime_attachment function) or plain base64 binary XML data elements, it is very easy to adopt MTOM by renaming the binary types to xop__Include and using the SOAP_ENC_MTOM flag with the SOAP 1.2 namespace.

16.1  Generating MultipartRelated MIME Attachment Bindings in WSDL

To generate multipartRelated bindings in the WSDL file, use the //gsoap ... service method-mime-type directive (see also Section 19.2. The directive can be repeated for each attachment you want to associate with a method's request and response messages.
For example:

#import "import/soap12.h"
#import "import/xop.h"
#import "import/xmime5.h"

//gsoap x schema namespace: http://my.first.mtom.net
struct x__myData
{
   _xop__Include xop__Include; // attachment
   @char *xmime5__contentType; // and its contentType
};
//gsoap x service method-mime-type: myMTOMtest text/xml
int x__myMTOMtest(struct x__myData *in, struct x__myData *out);

The //gsoap x service method-mime-type directive indicates that this operation accepts text/xml MIME attachments. See the SOAP-with-Attachment specification for the MIME types to use (for example, */* is a wildcard). If the operation has more than one attachment, just repeat this directive for each attachment you want to bind to the operation.
To bind attachments only to the request message of an operation, use //gsoap x service method-input-mime-type. Similarly, to bind attachments only to the response message of an operation, use //gsoap x service method-ouput-mime-type.
The wsdl2h WSDL parser recognizes MIME attachments and produces an annotated header file. However, the ordering of MIME parts in the multipartRelated elements is not reflected in the header file. Application developers should adhere the standards and ensure that multipart/related attachments are transmitted in compliance with the WSDL operation declarations.

16.2  Sending and Receiving MTOM Attachments

A receiver must be informed to recognize MTOM attachments by setting the SOAP_ENC_MTOM flag of the gSOAP context. Otherwise, the regular MIME attachment mechanism (SwA) will be used to store attachments.
When using wsdl2h to build clients and/or services, you should use the typemap.dat file included in the distribution package. The typemap.dat file defines the XOP namespace and XML MIME namespaces as imported namespaces:

xop = < http://www.w3.org/2004/08/xop/include >
xmime5 = < http://www.w3.org/2005/05/xmlmime >
xmime4 = < http://www.w3.org/2004/11/xmlmime >

The wsdl2h tool uses the typemap.dat file (see also option -t) to convert WSDL into a gSOAP header file. In this case we don't want the wsdl2h tool to read the XOP schema and translate it, since we have a pre-defined _xop__Include element to handle XOP for MTOM. This _xop__Include element is defined in xop.h. Therefore, the bindings shown above will not translate the XOP and XML MIME schemas to code, but generates #import statements instead:

#import "xop.h"
#import "xmime5.h"

The #import statements are only added for those namespaces that are actually used by the service.
Let's take a look at an example. The wsdl2h importer generates a header file with #import "xop.h" from a WSDL that references XOP, for example:

#import "xop.h"
#import "xmime5.h"
struct ns__Data
{
   _xop__Include xop__Include;
   @char *xmime5__contentType;
};

Suppose the WSDL defines an operation:

int ns__echoData(struct ns__Data *in, struct ns__Data *out);

After generating the stubs/proxies with the soapcpp2 compiler, we can invoke the stub at the client side with:

struct soap *soap = soap_new1(SOAP_ENC_MTOM);
struct ns__Data data;
data.xop__Include.__ptr = (unsigned char*)"<b>Hello world!</b>";
data.xop__Include.__size = 20;
data.xop__Include.id = NULL; // CID automatically generated by gSOAP engine
data.xop__Include.type = "text/html"; // MIME type
data.xop__Include.options = NULL; // no descriptive info added
data.xmime5__contentType = "text/html"; // MIME type
if (soap_call_ns__echoData(soap, endpoint, action, &data, &data))    soap_print_fault(soap, stderr); else
   printf("Got data\n");
soap_destroy(soap); // remove deserialized class instances
soap_end(soap); // remove temporary and deserialized data
soap_free(soap); // detach and free context

Note that the xop__Include.type field must be set to transmit MTOM attachments, otherwise plain base64 XML will be used.
At the server side, we show an example of an operation handler that just copies the input data to output:

int ns__echoData(struct soap *soap, struct ns__Data *in, struct ns__data *out)
{
   *out = *in;
   return SOAP_OK;
}

The server must use the SOAP_ENC_MTOM flag to initialize the soap struct to receive and send MTOM attachments.

16.3  Streaming MTOM/MIME

Streaming MTOM/MIME is achieved with callback functions to fetch and store data during transmission. Three function callbacks for streaming MTOM/MIME output and three callbacks for streaming MTOM/MIME input are available.


Callback (function pointer)
void *(*soap.fmimereadopen)(struct soap *soap, void *handle, const char *id, const char *type, const char *description)
Called by the gSOAP run-time MTOM/MIME attachment sender to start reading from a (binary) data source for outbound transmission. The content will be read from the application's data source in chunks using the fmimeread callback and streamed into the SOAP/XML/MTOM/MIME output stream. The handle contains the value of the __ptr field of an attachment struct/class, which could be a pointer to specific information such as a file descriptor or a pointer to a string to be passed to this callback. Both __ptr and __size fields should have been set by the application prior to the serialization of the content. The id, type, and description arguments are the MTOM/MIME id, type, and description, respectively. The callback should return handle, or another pointer value which will be passed as a handle to fmimeread and fmimereadclose. The callback should return NULL and set soap->error when an error occurred. The callback should return NULL (and not set soap->error) when this particular MTOM/MIME attachment is not to be streamed.
size_t (*soap.fmimeread)(struct soap *soap, void *handle, char *buf, size_t len)
Called by the gSOAP run-time MTOM/MIME attachment sender to read more data from a (binary) data source for streaming into the output stream. The handle contains the value returned by the fmimereadopen callback. The buf argument is the buffer of length len into which a chunk of data should be stored. The actual amount of data stored in the buffer may be less than len and this amount should be returned by the application. A return value of 0 indicates an error (the callback may set soap->errnum to errno). The __size field of the attachment struct/class should have been set by the application prior to the serialization of the content. The value of __size indicates the total size of the content to be transmitted. When the __size is zero then MTOM/MIME chunked transfers can be used under certain circumstances to stream content without prior determination of attachment size, see Section 16.5 below.
void(*soap.fmimereadclose)(struct soap *soap, void *handle)
Called by the gSOAP run-time MTOM/MIME attachment sender at the end of the streaming process to close the data source. The handle contains the value returned by the fmimereadopen callback. The fmimewriteclose callback is called after successfully transmitting the data or when an error occurred.
void *(*soap.fmimewriteopen)(struct soap *soap, void *handle, const char *id, const char *type, const char *description, enum soap_mime_encoding encoding)
Called by the gSOAP run-time MTOM/MIME attachment receiver to start writing an inbound MTOM/MIME attachment to an application's data store. The content is streamed into an application data store through multiple fmimewrite calls from the gSOAP attachment receiver. The handle argument is normally NULL, unless soap_get_mime_attachment is used that passes the handle to the callback, see Section 16.4. The id, type, and description arguments are the MTOM/MIME id, type, and description respectively. The encoding enumeration value indicates the MIME content transfer encoding, which is one of SOAP_MIME_NONE, SOAP_MIME_7BIT, SOAP_MIME_8BIT, SOAP_MIME_BINARY, SOAP_MIME_QUOTED_PRINTABLE, SOAP_MIME_BASE64, SOAP_MIME_IETF_TOKEN, SOAP_MIME_X_TOKEN. Content decoding may have to be considered by the application based on this value. The callback should return a non-NULL handle which is passed to the fmimewrite and fmimewriteclose callbacks. The __ptr field of the attachment struct/class is set to the value of this handle. The __size field is set to the total size of the attachment after receiving the entire content. The size is unknown in advance because MTOM/MIME attachments may be chunked.
int (*soap.fmimewrite)(struct soap *soap, void *handle, const char *buf, size_t len)
Called by the gSOAP run-time MTOM/MIME attachment receiver to write part of an inbound MTOM/MIME attachment to an application's data store. The handle contains the value returned by the fmimewriteopen callback. The buf argument contains the data of length len. The callback should return a gSOAP error code (e.g. SOAP_OK when no error occurred).
void(*soap.fmimewriteclose)(struct soap *soap, void *handle)
Called by the gSOAP run-time MTOM/MIME attachment receiver at the end of the streaming process to close the data store. The fmimewriteclose callback is called after successfully receiving the data or when an error occurred. The handle contains the value returned by the fmimewriteopen callback.

In addition, a void*user field in the struct soap data structure is available to pass user-defined data to the callbacks. This way, you can set soap.user to point to application data that the callbacks need such as a file name for example.
The following example illustrates the client-side initialization of an image attachment struct to stream a file into a MTOM attachment without HTTP chunking (HTTP streaming chunked MTOM transfer is presented in Section 16.5):

int main()
{
   struct soap soap;
   struct xsd__base64Binary image;
   FILE *fd;
   struct stat sb;
   soap_init1(&soap, SOAP_ENC_MTOM); // mandatory to enable MTOM
   if (!fstat(fileno(fd), &sb) && sb.st_size > 0)
   { // because we can get the length of the file, we can stream it without chunking
      soap.fmimereadopen = mime_read_open;
      soap.fmimereadclose = mime_read_close;
      soap.fmimeread = mime_read;
      image.__ptr = (unsigned char*)fd; // must set to non-NULL (this is our fd handle which we need in the callbacks)
      image.__size = sb.st_size; // must set size
   }
   else
   { // don't know the size, so buffer it
      size_t i;
      int c;
      image.__ptr = (unsigned char*)soap_malloc(&soap, MAX_FILE_SIZE);
      for (i = 0; i < MAX_FILE_SIZE; i++)
      {
         if ((c = fgetc(fd)) == EOF)
            break;
         image.__ptr[i] = c;
      }
      fclose(fd);
      image.__size = i;
   }
   image.type = "image/jpeg"; // MIME type
   image.options = "This is my picture"; // description of object
   soap_call_ns__method(&soap, ...);
   ...
}
void *mime_read_open(struct soap *soap, void *handle, const char *id, const char *type, const char *description)
{ return handle;
}
void mime_read_close(struct soap *soap, void *handle)
{ fclose((FILE*)handle);
}
size_t mime_read(struct soap *soap, void *handle, char *buf, size_t len)
{ return fread(buf, 1, len, (FILE*)handle);
}

The following example illustrates the streaming of a MTOM/MIME attachment into a file by a client:

int main()
{ struct soap soap;
   soap_init(&soap);
   soap.fmimewriteopen = mime_write_open;
   soap.fmimewriteclose = mime_write_close;
   soap.fmimewrite = mime_write;
   soap_call_ns__method(&soap, ...);
   ...
}
void *mime_write_open(struct soap *soap, const char *id, const char *type, const char *description, enum soap_mime_encoding encoding)
{
   FILE *handle = fopen("somefile", "wb");
   // We ignore the MIME content transfer encoding here, but should check
   if (!handle)
   {
      soap->error = SOAP_EOF;
      soap->errnum = errno; // get reason
   }
   return (void*)handle;
}
void mime_write_close(struct soap *soap, void *handle)
{ fclose((FILE*)handle);
}
int mime_write(struct soap *soap, void *handle, const char *buf, size_t len)
{
   size_t nwritten;
   while (len)
   {
      nwritten = fwrite(buf, 1, len, (FILE*)handle);
      if (!nwritten)
      {
         soap->errnum = errno; // get reason
         return SOAP_EOF;
      }
      len -= nwritten;
      buf += nwritten;
   }
   return SOAP_OK;
}

Note that compression can be used with MTOM/MIME to compress the entire message. However, compression requires buffering to determine the HTTP content length header, which cancels the benefits of streaming MTOM/MIME. To avoid this, you should use chunked HTTP (with the output-mode SOAP_IO_CHUNK flag) with compression and streaming MTOM/MIME. At the server side, when you set SOAP_IO_CHUNK before calling soap_serve, gSOAP will automatically revert to buffering (SOAP_IO_STORE flag is set). You can check this flag with (soap->omode & SOAP_IO) == SOAP_IO_CHUNK to see if the client accepts chunking. More information about streaming chunked MTOM/MIME can be found in Section 16.5.
Note that the example above for mime_read uses a handle that points to the open file FILE*. The simple example above is not recommended when the platform imposes a limit on the number of open file descriptors. You can use the handle to pass along more information than just the file descriptor. So for example, when the number of open file descriptors is limited on your platform, you should let the handle point to a structure with file-related information. The C++ example below illustrates this:

file.xop__Include = soap_new__xop__Include(soap);
file.xop__Include->id = NULL;
file.xop__Include->type = type;
file.xop__Include->options = NULL;

file.xmime5__contentType = type;
file.filename = filename;

// The object holding all information to read data
FileStreamIn *ins = new FileStreamIn(errorhandler);
ins->setFilePath(path);
ins->setFileName(filename);

file.xop__Include->__size = size;
file.xop__Include->__ptr = (unsigned char*)ins;

To read the MTOM data for transmission:

void *mime_read_open(struct soap *soap, void *handle, const char *id, const char *type, const char *description)
{
   if (!handle)
      return NULL;
   FileStreamIn *ins = (FileStreamIn*)handle;
   if (!ins->open())
   {
      soap->error = SOAP_ERR;
      return NULL;
   }
   return handle;
}
void mime_read_close(struct soap *soap, void *handle)
{
   if (!handle)
      return;
   FileStreamIn *ins = (FileStreamIn*)handle;
   delete ins;
}
size_t mime_read(struct soap *soap, void *handle, char *buf, size_t len)
{
   if (!handle)
      return 0;
   FileStreamIn *ins = (FileStreamIn*)handle;
   size_t nread = ins->read(buf, len);
   if (ins->streamError())
   {
      soap->error = ins->streamError();
      return 0;
   }
   return nread;
}

16.4  Redirecting Inbound MTOM/MIME Streams Based on SOAP Body Content

When it is preferable or required to redirect inbound MTOM/MIME attachment streams based on SOAP message body content, where for example the names of the resources are listed in the SOAP message body, an alternative mechanism must be used. This mechanism can be used both at the client and server side.
Because the routing of the streams is accomplished with explicit function calls, this method should only be used when required and should not be considered optional. That is, when you enable this method, you MUST check for pending MTOM/MIME attachments and handle them appropriately. This is true even when you don't expect MTOM/MIME attachments in the payload, because the peer may trick you by sending attachments anyway and you should be prepared to accept or reject them.
The explicit MTOM/MIME streaming mechanism consists of three API functions:

Function
void soap_post_check_mime_attachments(struct soap *soap)
Enables post-message body inbound streaming MTOM/MIME attachments. The presence of attachments must be explicitly checked using the function below.
int soap_check_mime_attachments(struct soap *soap)
Should be called after a client-side call (e.g. soap_call_ns__method) to check the presence of attachments. Returns 1 (true) when attachments are present. If present, each attachment MUST be processed with the function below.
struct soap_multipart *soap_get_mime_attachment(struct soap *soap, void *handle)
Parses an attachment and invokes the MIME callbacks (when set). The handle parameter is passed to fmimewriteopen. The handle may contain any data that is extracted from the SOAP message body to guide the redirection of the stream in the callbacks. The return value is a struct with a char *ptr field that contains the handle value returned by the fmimewriteopen callback, and char *id, char *type, and char *description fields with the optional MIME id, type, and description info.

Example client-side code in C:

struct soap *soap = soap_new1(SOAP_ENC_MTOM);
soap_post_check_mime_attachments(soap);
...
if (soap_call_ns__myMethod(soap, ...))
   soap_print_fault(soap, stderr); // an error occurred
else
{
   if (soap_check_mime_attachments(soap))    { // attachments are present, channel is still open
      {
         do
         {
            ... // get data 'handle' from SOAP response and pass to callbacks
            ... // set the fmime callbacks, if needed
            struct soap_multipart *content = soap_get_mime_attachment(soap, (void*)handle);
            printf("Received attachment with id=%s and type=%s\n", content->id?content->id:"", content->type?content->type:"");
         } while (content);
         if (soap->error)
            soap_print_fault(soap, stderr);
      }
   }
}
...
soap_destroy(soap);
soap_end(soap);
soap_free(soap); // detach and free context

The server-side service operations are implemented as usual, but with additional checks for MTOM/MIME attachments:

struct soap *soap = soap_new1(SOAP_ENC_MTOM);
soap_post_check_mime_attachments(soap);
...
soap_serve(soap);
...
int ns__myMethod(struct soap *soap, ...)
{    ... // server-side processing logic
   if (soap_check_mime_attachments(soap))    { // attachments are present, channel is still open
      {
         do
         {
            ... // get data 'handle' from SOAP request and pass to callbacks
            ... // set the fmime callbacks, if needed
            struct soap_multipart *content = soap_get_mime_attachment(soap, (void*)handle);
            printf("Received attachment with id=%s and type=%s\n", content->id?content->id:"", content->type?content->type:"");
         } while (content);
         if (soap->error)
            return soap->error;
      }
   }
   ... // server-side processing logic
   return SOAP_OK;
}

16.5  Streaming Chunked MTOM/MIME

gSOAP automatically handles inbound chunked MTOM/MIME attachments (streaming or non-streaming). To transmit outbound MTOM/MIME attachments, the attachment sizes MUST be determined in advance to calculate HTTP message length required to stream MTOM/MIME over HTTP. However, gSOAP also supports the transmission of outbound chunked MTOM/MIME attachments without prior determination of MTOM/MIME attachment sizes when certain conditions are met. These conditions require either non-HTTP transport (use the output-mode SOAP_ENC_PLAIN flag), or chunked HTTP transport (use the output-mode SOAP_IO_CHUNK flag). You can also use the SOAP_IO_STORE flag (which is also used automatically with compression to determine the HTTP content length header) but that cancels the benefits of streaming MTOM/MIME.
To stream chunked MTOM/MIME, set the __size field of an attachment to zero and enable HTTP chunking. The MTOM/MIME fmimeread callback then fetches data in chunks of any size between 1 and the value of the len argument. The fmimeread callback should return 0 upon reaching the end of the data stream.

17  XML Validation

The gSOAP XML parser applies basic rules to validate content. Constraints are not automatically verified unless explicitly set using flags. This helps to avoid interoperability problems with toolkits that do not strictly enforce validation rules. In addition, we cannot always use strict validation for SOAP RPC encoded messages, since SOAP RPC encoding adopts a very loose serialization format.
Validation constraints are enabled with the SOAP_XML_STRICT input mode flag set, e.g. with soap_set_imode(soap, SOAP_XML_STRICT) or soap_new(SOAP_XML_STRICT), see Section 9.12 for the complete list of flags.

17.1  Occurrence Constraints

17.1.1  Default Values

Default values can be defined for optional elements and attributes, which means that the default value will be used when the element or attribute value is not present in the parsed XML. See also Section 7.5.7 and examples in subsequent subsections below.
Default values must be primitive types, integer, float, string, etc. Default values can be specified for struct and class members, as shown in the example below:

struct ns__MyRecord
{
   int n = 5; // optional element with default value 5
   char *name = "none"; // optional element with default value "none"
   @enum ns__color { RED, WHITE, BLUE } color = RED; // optional attribute with default value RED
};

Upon deserialization of absent data, these members will be set accordingly. When classes are instantiated with soap_new_ClassName the instance will be initialized with default values.

17.1.2  Elements with minOccurs and maxOccurs Restrictions

To force the validation of minOccurs and maxOccurs contraints the SOAP_XML_STRICT input mode flag must be set. The minOccurs and maxOccurs constraints are specified for fields of a struct and members of a class in a header file using the following syntax:

Type fieldname [nullptr] [minOccurs[:maxOccurs]] [= value]

The minOccurs and maxOccurs values must be integer literals. Also a default initialization value can be provided. When minOccurs is not specified it is assumed to be one (1) for non-pointer fieldname members that are elements and zero (0) for fieldname members that are pointers or are attributes (i.e. have a @ qualifier).
The nillable property can by specified by adding a nullptr before the minOccurs (version 2.8.24 or greater).
A fixed initialization value can be specified with (version 2.8.48 or greater).
For example

struct ns__MyRecord
{
   int n 0 = 5; // element with default value 5, minOccurs=0, maxOccurs=1
   int m; // element with minOccurs=1
   int *k nullptr 1; // element with minOccurs=1 and nillable=true
   int v == 2; // element with minOccurs=1 and fixed value 2
   int __size 0:10; // sequence <item> with minOccurs=0, maxOccurs=10
   int *item;
   std::vector<double> nums 2; // sequence <nums> with minOccurs=2, maxOccurs=unbounded
};
struct arrayOfint
{
   int *__ptr 1:100; // minOccurs=1, maxOccurs=100
   int size;
};

17.1.3  Required and Prohibited Attributes

Similar to the minOccurs and maxOccurs annotations defined in the previous section, attributes in a struct or class can be annotated with occurrence constraints to make them optional (0), required (1), or prohibited (0:0). Default values can be assigned to optional attributes.
For example

struct ns__MyRecord
{
   @int m 1; // required attribute (occurs at least once)
   @int n = 5; // optional attribute with default value 5
   @int o 0; // optional attribute (may or may not occur)
   @int p 0:0; // prohibited attribute
};

Remember to set the SOAP_XML_STRICT input mode flag to enable the validation of attribute occurrence constraints.

17.2  Value Constraints

17.2.1  Data Length Restrictions

A schema simpleType is defined with a typedef by taking a base primitive to defined a derived simpleType. For example:

typedef int time__seconds;

This defines the following schema type in time.xsd:

<simpleType name="seconds">
   <restriction base="xsd:int"/>
</simpleType>

A complexType with simpleContent is defined with a wrapper struct/class:

struct time__date
{
   char *__item; // some custom format date (restriction of string)
   @enum time__zone { EST, GMT, ... } zone;
}

This defines the following schema type in time.xsd:

<complexType name="date">
   <simpleContent>
      <extension base="xsd:string"/>
   </simpleContent>
   <attribute name="zone" type="time:zone" use="optional"/>
</complexType> <simpleType name="zone">
   <restriction base="xsd:string">
      <enumeration value="EST"/>
      <enumeration value="GMT"/>
      ...
   </restriction>
</simpleType>

Data value length constraints of simpleTypes and complexTypes with simpleContent are defined as follows.

typedef char *ns__string256 0:256; // simpleType restriction of string with max length 256 characters
typedef char *ns__string10 10:10; // simpleType restriction of string with length of 10 characters
typedef std::string *ns__string8 8; // simpleType restriction of string with at least 8 characters
struct ns__data // simpleContent wrapper
{
   char *__item :256; // simpleContent with at most 256 characters
   @char *name 1; // required name attribute
};
struct time__date // simpleContent wrapper
{
   char *__item :100;
   @enum time__zone { EST, GMT, ... } zone = GMT;
}

Remember to set the SOAP_XML_STRICT input mode flag to enable the validation of value length constraints.
Use compiler flag WITH_REPLACE_ILLEGAL_UTF8 to force strict UTF-8 text conversions, which replaces invalid UTF-8 with U+FFFD. Compile stdsoap2.c and stdsoap2.cpp with this flag.

17.2.2  Value Range Restrictions

Similar to data length constraints for string-based data, integer and floatig point value range constraints on numeric simpleTypes and complexTypes with simpleContent are declared with low : high, where low and high are optional.
As of gSOAP 2.8.26, floating point value ranges and integer ranges can be exclusive by adding < on either side of the ':' range operator:
Range Validitation check
1 1 ≤ x
1 : 1 ≤ x
  : 10 x ≤ 10
1 : 10 1 ≤ x ≤ 10
1 < : < 10 1 < x < 10 (shorthand form: 1 < 10)
1 : < 10 1 ≤ x < 10
  : < 10 x < 10 (shorhand form: < 10)
1 < : 1 < x (shorthand form: 1 < )
1 < : 10 1 < x ≤ 10
Example:


typedef int ns__int10 0:10; // simpleType restriction of int 0..10
typedef LONG64 ns__long -1000000:1000000; // simpleType restriction of long64 -1000000..1000000
typedef float ns__float -1.0 < : < 10.5; // simpleType restriction of float in (-1,10.5)
struct ns__data // simpleContent wrapper
{
   int __item 0:10; // simpleContent range 0..10
   @char *name 1; // required name attribute
};

Remember to set the SOAP_XML_STRICT input mode flag to enable the validation of value range constraints.
Use compiler flag WITH_REPLACE_ILLEGAL_UTF8 to force strict UTF-8 text conversions, which replaces invalid UTF-8 with U+FFFD. Compile stdsoap2.c and stdsoap2.cpp with this flag.

17.2.3  Pattern Restrictions

Patterns can be defined for simpleType content. However, patterns are currently not enforced in the validation process though possibly in future releases.
To associate a pattern with a simpleType, you can define a simpleType with a typedef and a pattern string:

typedef int time__second "[1-5]?[0-9] - 60";

This defines the following schema type in time.xsd:

<simpleType name="second">
   <restriction base="xsd:int">
      <pattern value="[1-5]?[0-9] - 60"/>
   </restriction>
</simpleType>

The pattern string MUST contain a valid regular expression.
A special case for C format string patterns is introduced in gSOAP 2.8.18. When xs:totalDigits and xs:fractionDigits are given in a XSD file, then a C format string is produced to output floating point values with the proper precision and scale. For example:

<simpleType name="ratio">
   <restriction base="xsd:float">
      <totalDigits value="5"/>
      <fractionDigits value="2"/>
   </restriction>
</simpleType>

produces:

typedef float time__ratio "%5.2f";

The format string is used to format the output the floating point value in XML.

17.3  Element and Attribute Qualified/Unqualified Forms

Struct, class, and union members represent elements and attributes that are automatically qualified or unqualified depending on the schema element and attribute default forms specified. The gSOAP engine always validates the prefixes of elements and attributes. When a namespace mismatch occurs, the element or attribute is not consumed which can lead to a validation error (unless the complexType is extensible or when SOAP_XML_STRICT is turned off).
See Section 10.3 for details on the the struct/class/union member identifier translation rules. Consider for example:

//gsoap ns schema elementForm: qualified
//gsoap ns schema attributeForm: unqualified
struct ns__record
{
   @char * type;
   char * name;
};

Here, the ns__record struct is serialized with qualified element name and unqualified attribute type:

<ns:record type="...">
   <ns:name>...</ns:name>
</ns:record>

The "colon notation" for struct/class/union member field names is used to override element and attribute qualified or unqualified forms. To override the form for individual members that represent elements and attributes, use a namespace prefix and colon with the member name:

//gsoap ns schema elementForm: qualified
//gsoap ns schema attributeForm: unqualified
struct ns__record
{
   @char * ns:type;
   char * :name;
};

where name is unqualified and type is qualified:

<ns:record ns:type="...">
   <name>...</name>
</ns:record>

The colon notation is a syntactic notation used only in the gSOAP header file syntax, it is not translated to the C/C++ output.
The colon notation does not avoid name clashes between members. For example:

struct x__record
{
   @char * name;
   char * x:name;
};

results in a redefinition error, since both members have the same name. To avoid name clashes, use a underscore suffix:

struct x__record
{
   @char * name;
   char * x:name_;
};

Not that the namespace prefix convention can be used instead:

struct x__record
{
   @char * name;
   char * x__name;
};

which avoids the name clash. However, the resulting schema is different since the last example generates a global name element definition that is referenced by the local element.
More specifically, the difference between the namespace prefix convention with double underscores and colon notation is that the namespace prefix convention generates schema element/attribute references to elements/attributes at the top level, while the colon notation only affects the local element/attribute namespace qualification by form overriding. This is best illustrated by an example:

struct x__record
{
   char * :name;
   char * x:phone;
   char * x__fax;
   char * y__zip;
};

which generates the following x.xsdschema:

<complexType name="record">
   <sequence>
      <element name="name" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true" form="unqualified"/>
      <element name="phone" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true" form="qualified"/>
      <element ref="x:fax" minOccurs="0" maxOccurs="1"/>
      <element ref="y:zip" minOccurs="0" maxOccurs="1"/>
   </sequence>
</complexType>
<element name="fax" type="xsd:string"/>

and the y.xsd schema defines contains:

<element name="zip" type="xsd:string"/>

18  SOAP/XML Over UDP

UDP is a simple, unreliable datagram protocol: UDP sockets are connectionless. UDP address formats are identical to those used by TCP. In particular UDP provides a port identifier in addition to the normal Internet address format. The UDP port space is separate from the TCP port space (i.e. a UDP port may not be "connected" to a TCP port). In addition broadcast packets may be sent (assuming the underlying network supports this) by using a reserved "broadcast address"; this address is network interface dependent.
Client-side messages with SOAP-over-UDP endpoint URLs (soap.udp://...) will be automatically transmitted as datagrams. Server-side applications should set the SOAP_IO_UDP mode flag to accept UDP requests, e.g. using soap_init1 or soap_set_mode.
The maximum message length for datagram packets is restricted by the buffer size SOAP_BUFLEN, which is 65536 by default, unless compiled with WITH_LEAN to support small-scale embedded systems. For UDP transport SOAP_BUFLEN must not exceed the maximum UDP packet size 65536 (the size of datagram messages is constrained by the UDP packet size 216=65536 as per UDP standard). You can use compression with SOAP_ENC_ZLIB to reduce the message size, but note that compressed SOAP-over-UDP is a gSOAP-specific feature because it is not part of the SOAP-over-UDP specification.
The SOAP-over-UDP specification relies on WS-Addressing. The wsa.h file in the import directory defines the WS-Addressing elements for client and server applications.
The gSOAP implementation conforms to the SOAP-over-UDP requirements:
  • SOAP-over-UDP server endpoint URL format: soap.udp://host:port/path
  • Support one-way message-exchange pattern (MEP) where a SOAP envelope is carried in a user datagram.
  • Support request-response message-exchange pattern (MEP) where SOAP envelopes are carried in user datagrams.
  • Support multicast transmission of SOAP envelopes carried in user datagrams.
  • Support both SOAP 1.1 and SOAP 1.2 envelopes.
The following additional features are also available, but are not supported by the SOAP-over-UDP specification:
  • Zlib/gzip message compression (compile -DWITH_GZIP).
  • SOAP with DIME attachments over UDP.
  • SOAP with MIME attachments (SwA) over UDP.
  • Support for IPv6 (compile -DWITH_IPV6)

18.1  Using WS-Addressing with SOAP-over-UDP

A SOAP-over-UDP application MUST use WS-Addressing to control message delivery as per SOAP-over-UDP specification.
The wsa.h file in the import directory defines the WS-Addressing elements. To include the WS-Addressing elements in the SOAP Header for messaging, a struct SOAP_ENV__Header structure must be defined in your header file with the appropriate WS-Addressing elements. For example:

#import "wsa.h"
struct SOAP_ENV__Header
{
   mustUnderstand _wsa__MessageID wsa__MessageID 0;
   mustUnderstand _wsa__RelatesTo *wsa__RelatesTo 0;
   mustUnderstand _wsa__From *wsa__From 0;
   mustUnderstand _wsa__ReplyTo *wsa__ReplyTo 0;
   mustUnderstand _wsa__FaultTo *wsa__FaultTo 0;
   mustUnderstand _wsa__To wsa__To 0;
   mustUnderstand _wsa__Action wsa__Action 0;
};

We also included a //gsoap wsa schema import directive in the wsa.h file to enable the generation of WSDL specifications that import (instead of includes) the WS-Addressing elements. Note that the //gsoapopt w directive must not be present in your header file to enable WSDL generation.
One-way SOAP-over-UDP messages (see Section 7.3) should be declared to include the wsa:MessageID, wsa:To, and wsa:Action elements in the SOAP Header of the request message as follows:

//gsoap ns service method-header-part: sendString wsa__MessageID
//gsoap ns service method-header-part: sendString wsa__To
//gsoap ns service method-header-part: sendString wsa__Action
int ns__sendString(char *str, void);

Request-response SOAP-over-UDP messages should be declared to include the wsa:MessageID, wsa:To, wsa:Action, and wsa:ReplyTo elements in the SOAP Header of the request message, and the the wsa:MessageID, wsa:To, wsa:Action, and wsa:RelatesTo elements in the SOAP Header of the response message:

//gsoap ns service method-header-part: echoString wsa__MessageID
//gsoap ns service method-header-part: echoString wsa__To
//gsoap ns service method-header-part: echoString wsa__Action
//gsoap ns service method-input-header-part: sendString wsa__ReplyTo
//gsoap ns service method-output-header-part: echoString wsa__RelatesTo
int ns__echoString(char *str, char **res);

For the content requirements of these elements, please consult the SOAP-over-UDP specification and/or read the next sections explaining SOAP-over-UDP unicast, multicast, one-way, and request-response client and server applications.

18.2  Client-side One-way Unicast

This example assumes that the gSOAP header file includes the SOAP Header with WS-Addressing elements and the ns__sendString function discussed in Section 18.1

struct soap soap;
struct SOAP_ENV__Header header; // the SOAP Header
soap_init(&soap);
soap.send_timeout = 5; // 5 seconds max socket delay
soap_default_SOAP_ENV__Header(&soap, &header); // init SOAP Header
header.wsa__MessageID = "message ID";
header.wsa__To = "server URL";
header.wsa__Action = "server action";
soap.header = &header; // bind the SOAP Header for transport
// Send the message over UDP:
if (soap_send_ns__echoString(&soap, "soap.udp://...", NULL, "hello world!"))
   soap_print_fault(&soap, stderr); // report error
soap_end(&soap); // cleanup
soap_destroy(&soap); // cleanup
soap_done(&soap); // close connection (should not use soap struct after this)

18.3  Client-side One-way Multicast

This example is similar to the one-way unicast example discussed above, but uses a broadcast address and the SO_BROADCAST socket option:

struct soap soap;
struct SOAP_ENV__Header header; // the SOAP Header
in_addr_t addr = inet_addr("1.2.3.4"); // optional
soap_init(&soap);
soap.send_timeout = 5; // 5 seconds max socket delay  soap.connect_flags = SO_BROADCAST; // required for broadcast
soap.ipv4_multicast_if = &addr; // optional for IPv4: see setsockopt IPPROTO_IP IP_MULTICAST_IF
soap.ipv6_multicast_if = addr; // optional for IPv6: multicast sin6_scope_id
soap.ipv4_multicast_ttl = 1; // optional, see setsockopt IPPROTO_IP, IP_MULTICAST_TTL
soap_default_SOAP_ENV__Header(&soap, &header); // init SOAP Header
header.wsa__MessageID = "message ID";
header.wsa__To = "server URL";
header.wsa__Action = "server action";
soap.header = &header; // bind the SOAP Header for transport
// Send the message over UDP to a broadcast address:
if (soap_send_ns__echoString(&soap, "soap.udp://...", NULL, "hello world!"))
   soap_print_fault(&soap, stderr); // report error
soap_destroy(&soap); // cleanup
soap_end(&soap); // cleanup
soap_done(&soap); // close connection (should not use soap struct after this)

Please refer to the socket options for IPPROTO_IP IP_MULTICAST_IF to specify the default interface for multicast datagrams to be sent from. This is a struct in_addr (in_addr_t for sin6_scope_id) interface value. Otherwise, the default interface set by the system administrator will be used (if any).
Please refer to the socket options for IPPROTO_IP IP_MULTICAST_TTL to limit the lifetime of the packet. Multicast datagrams are sent with a default value of 1, to prevent them to be forwarded beyond the local network. This parameter can be set between 1 to 255.

18.4  Client-side Request-Response Unicast

This example assumes that the gSOAP header file includes the SOAP Header with WS-Addressing elements and the ns__echoString function discussed in Section 18.1

struct soap soap;
struct SOAP_ENV__Header header; // the SOAP Header
struct wsa__EndpointReferenceType replyTo; // (anonymous) reply address
char *res; // server response
soap_init(&soap);
soap.send_timeout = 5; // 5 seconds max socket delay
soap.recv_timeout = 5; // 5 seconds max socket delay
soap_default_SOAP_ENV__Header(&soap, &header); // init SOAP Header
soap_default_wsa__EndpointReferenceType(&soap, &replyTo); // init reply address
replyTo.Address = "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
header.wsa__MessageID = "message ID";
header.wsa__To = "server URL";
header.wsa__Action = "server action";
header.wsa__ReplyTo = &replyTo;
soap.header = &header; // bind the SOAP Header for transport
// Send and receive messages over UDP:
if (soap_call_ns__echoString(&soap, "soap.udp://...", NULL, "hello world!", &res))
{
   if (soap.error == SOAP_EOF && soap.errnum == 0)
      // Timeout: no response from server (message already delivered?)
   else
      soap_print_fault(&soap, stderr);
}
else
   // UDP server response is stored in 'res'
// check SOAP header received, if applicable
check_header(&soap.header);
soap_destroy(&soap); // cleanup
soap_end(&soap); // cleanup
soap_done(&soap); // close connection (should not use soap struct after this)

18.5  Client-side Request-Response Multicast

This example is similar to the request-response unicast example discussed above, but uses a broadcast address and the SO_BROADCAST socket option. Because we expect to receive multiple responses, we also need to use separate request-response messages to send one request and consume multiple responses. In this example we defined a bcastString request and a bcastStringResponse response message, which are essentially declared as one-way messages in the header file:

//gsoap ns service method-header-part: bcastString wsa__MessageID
//gsoap ns service method-header-part: bcastString wsa__To
//gsoap ns service method-header-part: bcastString wsa__Action
//gsoap ns service method-header-part: bcastString wsa__ReplyTo
int ns__bcastString(char *str, void);
//gsoap ns service method-header-part: bcastStringResponse wsa__MessageID
//gsoap ns service method-header-part: bcastStringResponse wsa__To
//gsoap ns service method-header-part: bcastStringResponse wsa__Action
//gsoap ns service method-header-part: bcastStringResponse wsa__RelatesTo
int ns__bcastStringResponse(char *res, void);

To obtain response one-way operations, use the wsdl2h -b option.
The client code includes a loop to receive response messages until a timeout occurs:

struct soap soap;
struct SOAP_ENV__Header header;
struct wsa__EndpointReferenceType replyTo;
char *res;
soap_init(&soap);
soap.connect_flags = SO_BROADCAST;
soap.send_timeout = 5; // 5 seconds max socket delay
soap.recv_timeout = 5; // 5 seconds max socket delay
soap_default_SOAP_ENV__Header(&soap, &header);
soap.header = &header;
soap_default_wsa__EndpointReferenceType(&soap, &replyTo);
replyTo.Address = "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
header.wsa__MessageID = "message ID";
header.wsa__To = "server URL";
header.wsa__Action = "server action";
header.wsa__ReplyTo = &replyTo;
if (soap_send_ns__bcastString(&soap, "soap.udp://...", NULL, "hello world!"))
   soap_print_fault(&soap, stderr);
else
{
   for (;;)
   {
      if (soap_recv_ns__bcastStringResponse(&soap, &res))
         break;
      // Got response 'res' from a server
   }
   if (soap.error == SOAP_EOF && soap.errnum == 0)
      // Timeout: no more messages received
   else
      soap_print_fault(&soap, stderr);
}
soap_destroy(&soap); // cleanup
soap_end(&soap); // cleanup
soap_done(&soap); // close connection (should not use soap struct after this)

Note that a server for the bcastString does not need to use two-one way messages. Thus, multicast request-response message pattern can be declared and implemented as request-response operations at the server side.

18.6  SOAP-over-UDP Server

The following example code illustrates a SOAP-over-UDP server for one-way sendString and request-response echoString messages. This example assumes that the gSOAP header file includes the SOAP Header with WS-Addressing elements and the ns__echoString function discussed in Section 18.1.

int main()
{
   struct soap soap;
   soap_init1(&soap, SOAP_IO_UDP); // must set UDP flag
   // bind to host (NULL=current host) and port:
   if (!soap_valid_socket(soap_bind(&soap, host, port, 100)))
   {
      soap_print_fault(&soap, stderr);
      exit(1);
   }
   for (;;)
   {
      if (soap_serve(&soap))
         soap_print_fault(&soap, stderr); // report the problem
      soap_destroy(&soap);
      soap_end(&soap);
   }
   soap_done(&soap); // close connection
}
int ns__echoString(struct soap *soap, char *str, char **res)
{
   if (!soap->header)
      return soap_sender_fault(soap, "No SOAP header", NULL);
   if (!soap->header->wsa__MessageID)
      return soap_sender_fault(soap, "No WS-Addressing MessageID", NULL);
   soap->header->wsa__RelatesTo = (struct wsa__Relationship*)soap_malloc(soap, sizeof(struct wsa__Relationship));
   soap_default_wsa__Relationship(soap, soap->header->wsa__RelatesTo);
   soap->header->wsa__RelatesTo->__item = soap->header->wsa__MessageID;
   // must check for duplicate messages
   if (check_received(soap->header->wsa__MessageID))
   {
      // Request message already received
      return SOAP_STOP; // don't return response
   }
   if (!soap->header->wsa__ReplyTo || !soap->header->wsa__ReplyTo->Address)
      return soap_sender_fault(soap, "No WS-Addressing ReplyTo address", NULL);
   soap->header->wsa__To = soap->header->wsa__ReplyTo->Address;
   soap->header->wsa__MessageID = soap_strdup(soap, soap_int2s(soap, id_count++)) ;
   soap->header->wsa__Action = "http://genivia.com/udp/echoStringResponse";
   *res = str;
   return SOAP_OK;
}
int ns__sendString(struct soap *soap, char *str)
{
   if (!soap->header)
      return SOAP_STOP;
   if (!soap->header->wsa__MessageID)
      return SOAP_STOP;
   // must check for duplicate messages
   if (check_received(soap->header->wsa__MessageID))
      return SOAP_STOP;
   return SOAP_OK;
}
int ns__sendStringResponse(struct soap *soap, char *res)
{ return SOAP_NO_METHOD; } // we don't expect to serve this message

The server binds to a host and port and accepts messages in a tight sequential loop. Because UDP does not have the equivalent of an accept the messages cannot be dispatched to threads, the soap_serve waits for a message and immediately accepts it. You can use a receive timeout to make soap_serve non-blocking.
To obtain response one-way operations from a WSDL, use the wsdl2h -b option. This produces additional one-way operations to support asynchronous handling of response messages in the same way requests are handled.

18.7  SOAP-over-UDP Multicast Receiving Server

For UDP multicast support, follow the suggestions in Section 18.6 and change the initialization parts of the code to enable UDP multicast port binding by to telliing the kernel which multicast groups you are interested in:


int main()
{
   struct soap soap;
   struct ip_mreq mcast;
   soap_init1(&soap, SOAP_IO_UDP);
   if (!soap_valid_socket(soap_bind(&soap, host, port, 100)))
   {
      soap_print_fault(&soap, stderr);
      exit(1);
   }
   mcast.imr_multiaddr.s_addr = inet_addr("put IP multicast address of group here");
   mcast.imr_interface.s_addr = htonl(INADDR_ANY);
   if (setsockopt(soap.master, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mcast, sizeof(mcast))<0)
      ... error ...

19  Advanced Features

19.1  Internationalization

gSOAP uses regular strings by default. Regular strings cannot be used to hold UCS characters outside of the character range [1,255]. gSOAP can handle wide-character content in two ways. First, applications can utilize wide-character strings (wchar_t*) instead of regular strings to store wide-character content. For example, the xsd:string string schema type can be declared as a wide-character string and used subsequently:

typedef wchar_t *xsd__string;
...
int ns__myMethod(xsd__string input, xsd__string *output);

Second, regular strings can be used to hold wide-character content in UTF-8 format. This is accomplished with the SOAP_C_UTFSTRING flag (for both input/output mode), see Section 9.12. With this flag set, gSOAP will deserialize XML into regular strings in UTF-8 format. An application is responsible for filling regular strings with UTF-8 content to ensure that strings can be correctly serialized XML. Third, the SOAP_C_MBSTRING flag (for both input/output mode) can be used to activate multibyte character support. Multibyte support depends on the locale settings for dealing with extended natural language encodings.
Both regular strings and wide-character strings can be used together within an application. For example, the following header file declaration introduces two string schema types:

typedef wchar_t *xsd__string;
typedef char *xsd__string_; // trailing '_' avoids name clash
...
int ns__myMethod(xsd__string input, xsd__string_ *output);

The input string parameter is a wide-character string and the output string parameter is a regular string. The regular string has UCS character content in the range [1,255] unless the SOAP_C_UTFSTRING flag is set. With this flag, the string has UTF-8 encoded content.
Please consult the UTF-8 specification for details on the UTF-8 format. Note that the ASCII character set [1-127] is a subset of UTF-8. Therefore, with the SOAP_C_UTFSTRING flag set, strings may hold ASCII character data and UTF-8 extensions.

19.2  Customizing the WSDL and Namespace Mapping Table File Contents With gSOAP Directives

A header file can be augmented with directives for the gSOAP soapcpp2 tool to automatically generate customized WSDL and namespace mapping tables contents. The WSDL and namespace mapping table files do not need to be modified by hand (Sections 7.2.9 and 10.4). In addition, the sample SOAP/XML request and response files generated by the compiler are valid provided that XML Schema namespace information is added to the header file with directives so that the gSOAP soapcpp2 compiler can produce example SOAP/XML messages that are correctly namespace qualified. These compiler directive are specified as //-comments. (Note: blanks can be used anywhere in the directive, except between // and gsoap.)
Three directives are currently supported that can be used to specify details associated with namespace prefixes used by the service operation names in the header file. To specify the name of a Web Service in the header file, use:

//gsoap namespace-prefix service name: service-name

where namespace-prefix is a namespace prefix used by identifiers in the header file and service-name is the name of a Web Service (only required to create new Web Services). The name may be followed by text up to the end of the line which is incorporated into the WSDL service documentation. Alternatively, the service documentation can be provided with the directive below.
To specify the name of the WSDL definitions in the header file, use:

//gsoap namespace-prefix service definitions: definitions-name

where namespace-prefix is a namespace prefix used by identifiers in the header file and definitions-name is the name of the WSDL definitions. By default, the WSDL definitions name is the same as the service name.
To specify the documentation of a Web Service in the header file, use:

//gsoap namespace-prefix service documentation: text

or shorthand:

//gsoap namespace-prefix service doc: text

where namespace-prefix is a namespace prefix used by identifiers in the header file and text is the documentation text up to the end of the line. The text is incorporated into the WSDL service documentation.
To specify the portType of a Web Service in the header file, use:

//gsoap namespace-prefix service portType: portType-name

or just

//gsoap namespace-prefix service type: portType-name

or using WSDL 2.0 terms

//gsoap namespace-prefix service interface: portType-name

where namespace-prefix is a namespace prefix used by identifiers in the header file and portType-name is the portType name of the WSDL service portType.
To specify the port name of a Web Service in the header file, use:

//gsoap namespace-prefix service portName: port-name

where namespace-prefix is a namespace prefix used by identifiers in the header file and port-name is the name of the WSDL service port element. By default, the port name is the same as the service name.
To specify the binding name of a Web Service in the header file, use:

//gsoap namespace-prefix service binding: binding-name

where namespace-prefix is a namespace prefix used by identifiers in the header file and binding-name is the binding name of the WSDL service binding element. By default, the binding name is the same as the service name.
To specify the binding's transport protocol of a Web Service in the header file, use:

//gsoap namespace-prefix service transport: transport-URL

where namespace-prefix is a namespace prefix used by identifiers in the header file and transport-URL is the URL of the transport protocol such as http://schemas.xmlsoap.org/soap/http for HTTP. HTTP transport is assumed by default.
To specify the location (or port endpoint) of a Web Service in the header file, use:

//gsoap namespace-prefix service location: URL

or alternatively

//gsoap namespace-prefix service endpoint: URL

or

//gsoap namespace-prefix service port: URL

where URL is the location of the Web Service (only required to create new Web Services). The URL specifies the path to the service executable (so URL/service-executable is the actual location of the executable when declared).
To specify the name of the executable of a Web Service in the header file, use:

//gsoap namespace-prefix service executable: executable-name

where executable-name is the name of the executable of the Web Service.
When doc/literal encoding is required for the entire service, the service encoding can be specified in the header file as follows:

//gsoap namespace-prefix service encoding: literal

or when the SOAP-ENV:encodingStyle attribute is different from the SOAP 1.1/1.2 encoding style:

//gsoap namespace-prefix service encoding: encoding-style

To specify the namespace URI of a Web Service in the header file, use:

//gsoap namespace-prefix service namespace: namespace-URI

where namespace-URI is the URI associated with the namespace prefix.
In addition, the schema namespace URI can be specified in the header file:

//gsoap namespace-prefix schema namespace: namespace-URI

where namespace-URI is the schema URI associated with the namespace prefix. If present, it defines the schema-part of the generated WSDL file and the URI in the namespace mapping table. This declaration is useful when the service declares its own data types that need to be associated with a namespace. Furthermore, the header file for client applications do not need the full service details and the specification of the schema namespaces for namespace prefixes suffices. In addition, a second namespace can be defined that is only used to match the namespaces of inbound XML:

//gsoap namespace-prefix schema namespace2: namespace-URI-pattern

If the first namespace does not match the inbound parsed XML, then the second will be tried. This pattern may contain '*' multichar wildcards and '-' single chard wildcards. This allows two or more namespace versions to be handled by the same namespace prefix.
The directive above specifies a new schema and the gSOAP soapcpp2 compiler generates a schema files (.xsd) file for the schema. An existing schema namespace URI can be imported with:

//gsoap namespace-prefix schema import: namespace-URI

where namespace-URI is the schema URI associated with the namespace prefix. gSOAP does not produce XML Schema files for imported schemas and imports the schema namespaces in the generated WSDL file.
A schema namespace URI can be imported from a location with:

//gsoap namespace-prefix schema namespace: namespace-URI
//gsoap namespace-prefix schema import: schema-location

The elementFormDefault and attributeFormDefault qualification of a schema can be defined with:

//gsoap namespace-prefix schema elementForm: qualified
//gsoap namespace-prefix schema attributeForm: qualified

or:

//gsoap namespace-prefix schema elementForm: unqualified
//gsoap namespace-prefix schema attributeForm: unqualified

A shortcut to define the default qualification of elements and attributes of a schema:

//gsoap namespace-prefix schema form: qualified

or:

//gsoap namespace-prefix schema form: unqualified

To include xsi:type attributes in the runtime XML element output for specific schemas, use:

//gsoap namespace-prefix schema typed: yes

Note that soapcpp2 -t enables xsi:type for all elements in the runtime XML output.
To document a data type, use:

//gsoap namespace-prefix schema type-documentation: type-name //text

or shorthand:

//gsoap namespace-prefix schema type: type-name //text

where type-name is the unqualified name of the data type and text is a line of text terminated by a newline. Do not use any XML reserved characters in text such as < and > . Use well-formed XML and XHTML markup instead. For example:

//gsoap ns schema type: tdata stores <a href="transaction.html">transaction</a> data
class ns__tdata
{ ... }

To document a data type's fields and members, use:

//gsoap namespace-prefix schema type-documentation: type-name::field //text

or shorthand

//gsoap namespace-prefix schema type: type-name::field //text

where type-name is the unqualified name of the data type, field is a field, member, or enum name, and text is a line of text terminated by a newline. Do not use any XML reserved characters in text such as < and > . Use well-formed XML and XHTML markup instead. For example:

//gsoap ns schema type: tdata::id the transaction number
//gsoap ns schema type: tdata::state transaction state
//gsoap ns schema type: tstate::INIT initial state
//gsoap ns schema type: tstate::DONE final state
class ns__tdata
{ @int id;
   enum ns__tstate { INIT, DONE } state;
   ...
}

The documentation form above can also be used to document SOAP/XML message parts in the generated WSDL. For the type-name use the function name. For the field names, you can use the function name and/or the function argument names.
To document a method, use:

//gsoap namespace-prefix service method-documentation: method-name text

or shorthand:

//gsoap namespace-prefix service method: method-name text

where method-name is the unqualified name of the method and text is a line of text terminated by a newline. Do not use any XML reserved characters in text such as < and > . Use well-formed XML and XHTML markup instead. For example:

//gsoap ns service method: getQuote returns a <i>stock quote</i>
int ns__getQuote(char *symbol, float &_result);

To specify the SOAP Action for a SOAP method, use:

//gsoap namespace-prefix service method-action: method-name action

where method-name is the unqualified name of the method and action is a string without spaces and blanks (the string can be quoted when preferred). For example:

//gsoap ns service method-action: getQuote ""
int ns__getQuote(char *symbol, float &_result);

Or, alternatively for the input action (part of the request):

//gsoap ns service method-input-action: getQuote ""
int ns__getQuote(char *symbol, float &_result);

To specify the HTTP "location" of REST methods to a perform POST/GET/PUT action, use:

//gsoap namespace-prefix service method-action: method-name action

where method-name is the unqualified name of the method and action is a string without spaces and blanks (the string can be quoted when preferred). This directive requires that the protocol: directive for this method is set to HTTP, POST, GET, or PUT.
A response action and fault action are defined by:

//gsoap namespace-prefix service method-output-action: method-name action //gsoap namespace-prefix service method-fault-action: method-name action

To override the SOAP or REST protocol of an operation (SOAP by default), use:

//gsoap namespace-prefix service method-protocol: method-name protocol

where protocol is one of

SOAP default SOAP transport (supports 1.1 and 1.2)
SOAP1.1 SOAP 1.1 only
SOAP1.2 SOAP 1.2 only
SOAP-GET one-way SOAP with HTTP GET
SOAP1.1-GET one-way SOAP 1.1 with HTTP GET
SOAP1.2-GET one-way SOAP 1.2 with HTTP GET
HTTP REST HTTP (POST or one-way PUT)
POST REST HTTP POST
GET one-way REST HTTP GET
PUT one-way REST HTTP PUT
DELETE REST HTTP DELETE

When document style is preferred for a particular service method, use:

//gsoap namespace-prefix service method-style: method-name document

When SOAP RPC encoding is required for a particular service method, use:

//gsoap namespace-prefix service method-encoding: method-name encoded

When literal encoding is required for a particular service method, use:

//gsoap namespace-prefix service method-encoding: method-name literal

or when the SOAP-ENV:encodingStyle attribute is different from the SOAP 1.1/1.2 encoding style, use:

//gsoap namespace-prefix service method-encoding: method-name encoding-style

When SOAP RPC encoding is required for a particular service method response when the request message is literal, use:

//gsoap namespace-prefix service method-response-encoding: method-name encoded

When literal encoding is required for a particular service method response when the request message is encoded, use:

//gsoap namespace-prefix service method-response-encoding: method-name literal

or when the SOAP-ENV:encodingStyle attribute is different from the SOAP 1.1/1.2 encoding style, use:

//gsoap namespace-prefix service method-response-encoding: method-name encoding-style

Note that the method-response-encoding is set to the value of method-encoding by default.
When header processing is required, each method declared in the WSDL should provide a binding to the parts of the header that may appear as part of a method request message. Such a binding is given by:

//gsoap namespace-prefix service method-header-part: method-name header-part

For example:

struct SOAP_ENV__Header
{
   char *h__transaction;
   struct UserAuth *h__authentication;
};

Suppose method ns__login uses both header parts (at most), then this is declared as:

//gsoap ns service method-header-part: login h__transaction
//gsoap ns service method-header-part: login h__authentication
int ns__login(...);

Suppose method ns__search uses only the first header part, then this is declared as:

//gsoap ns service method-header-part: search h__transaction
int ns__search(...);

Note that the method name and header part names MUST be namespace qualified. The headers MUST be present in all operations that declared the header parts.
To specify the header parts for the method input (method request message), use:

//gsoap namespace-prefix service method-input-header-part: method-name header-part

Similarly, to specify the header parts for the method output (method response message), use:

//gsoap namespace-prefix service method-output-header-part: method-name header-part

The declarations only affect the WSDL. For example:

struct SOAP_ENV__Header
{
   char *h__transaction;
   struct UserAuth *h__authentication;
};
//gsoap ns service method-input-header-part: login h__authentication
//gsoap ns service method-input-header-part: login h__transaction
//gsoap ns service method-output-header-part: login h__transaction
int ns__login(...);

The headers MUST be present in all operations that declared the header parts.
When SOAP Faults include custom fault information, the SOAP Fault detail element contains one or more elements with this information. Assuming that the SOAP Fault detail structure contains one or more members that correspond to the optional detail elements, a method may be associated with one or more of these members by using:

//gsoap namespace-prefix service method-fault: method-name fault-detail

The declarations only affect the WSDL. For example:

struct SOAP_ENV__Header
{
   char *h__transaction;
   struct UserAuth *h__authentication;
};
//gsoap ns service method-fault: login f__invalid
//gsoap ns service method-fault: login f__unavailable
int ns__login(...);

The fault members MUST be present in the SOAP_ENV__Detail structure, for example, f__invalid must be a pointer-based member of the SOAP_ENV__Detail struct, see Section 12. Alternatively to adding members to the structure, use the __type field that can be set to point to an object that is serialized as the SOAP Fault detail element.
To specify MIME attachments for the method input and output (method request and response messages), use:

//gsoap namespace-prefix service method-mime-type: method-name mime-type

You can repeat this directive for all multipartRelated MIME attachments you want to associate with the method.
To specify MIME attachments for the method input (method request message), use:

//gsoap namespace-prefix service method-input-mime-type: method-name mime-type

Similarly, to specify MIME attachments for the method output (method response message), use:

//gsoap namespace-prefix service method-output-mime-type: method-name mime-type

You can repeat these directives for all multipartRelated MIME attachments you want to associate with the method.

19.2.1  Example

The use of directives is best illustrated with an example. The example uses a hypothetical stock quote service and exchange rate service, actual services such as these are available for free on the web.

//gsoap ns1 service namespace: urn:GetQuote
int ns1__getQuote(char *symbol, float &result);

//gsoap ns2 service namespace: urn:CurrencyExchange
int ns2__getRate(char *country1, char *country2, float &result);

//gsoap ns3 service name: quotex
//gsoap ns3 service style: rpc
//gsoap ns3 service encoding: encoded
//gsoap ns3 service port: http://www.mydomain.com/quotex.cgi
//gsoap ns3 service namespace: urn:quotex
int ns3__getQuote(char *symbol, char *country, float &result);

The quotex.h example is a new Web Service created by combining two existing Web Services: a Stock Quote service and a Currency Exchange service.
Namespace prefix ns3 is used for the new quotex Web Service with namespace URI urn:quotex, service name quotex, and endpoint port http://www.mydomain.com/quotex.cgi.
Since the new Web Service invokes the ns1__getQuote and ns2__getRate service operations, the service namespaces and other details such as style and encoding of these methods are given by directives. After invoking the gSOAP soapcpp2 tool on the quotex.h header file:

> soapcpp2 quotex.h

the WSDL of the new quotex Web Service is saved as quotex.wsdl. Since the service name, endpoint port, and namespace URI were provided in the header file, the generated WSDL file can be published together with the compiled Web Service installed as a CGI application.
The namespace mapping table for the quotex.cpp Web Service implementation is saved as quotex.nsmap. This file can be directly included in quotex.cpp instead of specified by hand in the source of quotex.cpp:

#include "quotex.nsmap"

The automatic generation and inclusion of the namespace mapping table requires compiler directives for all namespace prefixes to associate each namespace prefix with a namespace URI. Otherwise, namespace URIs have to be manually added to the table (they appear as http://tempuri.org).

19.3  Transient Data Types

There are situations when certain data types have to be ignored by gSOAP for the compilation of (de)marshalling routines. For example, in certain cases only a few members of a class or struct need not be (de)serialized, or the base class of a derived class should not be (de)serialized. Certain built-in classes such as ostream cannot be (de)serialized. Data parts that should be kept invisible to gSOAP are called "transient". Transient data types and transient struct/class members are declared with the extern keyword or are declared within [ and ] blocks in the header file. The extern keyword has a special meaning to the gSOAP soapcpp2 compiler and won't affect the generated codes. The special [ and ] block construct can be used with data type declarations and within struct and class declarations. The use of extern or [ ] achieve the same effect, but [ ] may be more convenient to encapsulate transient types in a larger part of the header file. The use of extern with typedef is reserved for the declaration of user-defined external (de)serializers for data types, see Section 19.5.
First example:

extern class ostream; // ostream can't be (de)serialized, but need to be declared to make it visible to gSOAP
class ns__myClass
{ ...
   virtual void print(ostream &s) const; // need ostream here
   ...
};

Second example:

[
   class myBase // base class need not be (de)serialized
   { ... };
]
class ns__myDerived : myBase
{ ... };

Third example:

[ typedef int transientInt; ]
class ns__myClass
{
   int a; // will be (de)serialized
   [
   int b; // transient field
   char s[256]; // transient field
   ]
   extern float d; // transient field
   char *t; // will be (de)serialized
   transientInt *n; // transient field
   [
   virtual void method(char buf[1024]); // does not create a char[1024] (de)serializer
   ]
};

In this example, class ns__myClass has three transient fields: b, s, and n which will not be (de)serialized in SOAP. Field n is transient because the type is declared within a transient block. Pointers, references, and arrays of transient types are transient. The single class method is encapsulated within [ and ] to prevent gSOAP from creating (de)serializers for the char[1024] type. gSOAP will generate (de)serializers for all types that are not declared within a [ and ] transient block.

19.4  Serialization "as is" with Volatile Data Types

Volatile-declared data types in gSOAP are assumed to be part of an existing non-modifiable software package, such as a built-in library. It would not make sense to redefine the data types in a gSOAP header file. In certain cases it could also be problematic to have classes augmented with serializer methods. When you need to (de)serialize such data types "as is", you must declare them in a gSOAP header file and use the volatile qualifier.
Consider for example struct tm, declared in time.h. The structure may actually vary between platforms, but the tm structure includes at least the following fields:

volatile struct tm
{
   int tm_sec; /* seconds (0 - 60) */
   int tm_min; /* minutes (0 - 59) */
   int tm_hour; /* hours (0 - 23) */
   int tm_mday; /* day of month (1 - 31) */
   int tm_mon; /* month of year (0 - 11) */
   int tm_year; /* year - 1900 */
   int tm_wday; /* day of week (Sunday = 0) */
   int tm_yday; /* day of year (0 - 365) */
   int tm_isdst; /* is summer time in effect? */
   char *tm_zone; /* abbreviation of timezone name */
   long tm_gmtoff; /* offset from UTC in seconds */
};

Note that we qualified the structure volatile in the gSOAP header file to inform the gSOAP soapcpp2 compiler that it should not attempt to redeclare it. We can now readily serialize and deserialize the tm structure. The following program fragment serializes the local time stored in a tm structure to stdout:

struct soap *soap = soap_new();
...
time_t T = time(NULL);
struct tm *t = localtime(&T);
struct soap *soap = soap_new();
soap_write_tm(soap, t);
soap_destroy(soap);
soap_end(soap);
soap_free(soap); // detach and free context

It is also possible to serialize the tm fields as XML attributes using the @qualifier, see Section 11.6.7.
If you must produce a schema file, say time.xsd, that defines an XML schema and namespace for the tm struct, you can add a typedef declaration to the header file:

typedef struct tm time__struct_tm;

We used the typedef name time__struct_tm rather than time__ tm, because a schema name clash will occur with the latter since taking off the time prefix will result in the same name being used.
Classes should be declared volatile to prevent modification of these classes by ithe gSOAP soapcpp2 source code output. Note that gSOAP adds serialization methods to classes to support polymorphism. However, this is a problem when you can't modify class declarations because they are part of a non-modifiable software package. The solution is to declare these classes volatile, similar to the tm structure example illustrated above. You can also use a typedef to associate a schema with a class.

19.5  How to Declare User-Defined Serializers and Deserializers

Users can declare their own (de)serializers for specific data types instead of relying on the gSOAP-generated (de)serializers. To declare a external (de)serializer, declare a type with extern typedef. gSOAP will not generate the (de)serializers for the type name that is declared. For example:

extern typedef char *MyData;
struct Sample
{
   MyData s; // use user-defined (de)serializer for this field
   char *t; // use gSOAP (de)serializer for this field
};

The user is required to supply the following routines for each extern typedef'ed name T:

int soap_serialize_T(struct soap *soap, const T *a)
void soap_default_T(struct soap *soap, T *a)
int soap_out_T(struct soap *soap, const char *tag, int id, const T *a, const char *type)
T *soap_in_T(struct soap *soap, const char *tag, T *a, const char *type)

The function prototypes can be found in soapH.h.
For example, the (de)serialization of MyData can be done with the following code:

int soap_serialize_MyData(struct soap *soap, MyData const*a)
{ return SOAP_OK; } // no need to mark this node (for multi-ref and cycle detection)
void soap_default_MyData(struct soap *soap, MyData *a)
{ *a = NULL }
int soap_out_MyData(struct soap *soap, const char *tag, int id, MyData const*a, const char *type)
{
   if(soap_element_begin_out(soap, tag, id, type) // print XML beginning tag
   || soap_send(soap, *a) // just print the string (no XML conversion)
   || soap_element_end_out(soap, tag)) // print XML ending tag
      return soap->error;
   return SOAP_OK;
}
MyData **soap_in_MyData(struct soap *soap, const char *tag, MyData *a, const char *type)
{
   if (soap_element_begin_in(soap, tag))
      return NULL;
   if (!a)
      a = (MyData*)soap_malloc(soap, sizeof(MyData));
   if (soap->null)
      *a = NULL; // xsi:nil element
   if (*soap->type && soap_match_tag(soap, soap->type, type))
   {
      soap->error = SOAP_TYPE;
      return NULL; // type mismatch
   }
   if (*soap->href)
      a = (MyData**)soap_id_forward(soap, soap->href, a, 0, SOAP_TYPE_MyData, 0, sizeof(MyData), 0, NULL, NULL)
   else if (soap->body)
   {
      char *s = soap_value(soap); // fill buffer
      *a = (char*)soap_malloc(soap, strlen(s)+1);
      strcpy(*a, s);
   }
   if (soap->body && soap_element_end_in(soap, tag))
      return NULL;
   return a;
}

More information on custom (de)serialization is available in the package in the gsoap/custom directory where you can also find several examples of custom serializers. Note that (de)serializer code requires the use of the low-level gSOAP API that may differ in older gSOAP releases. If in doubt, we recommend to follow the material and examples in gsoap/custom.

19.6  How to Serialize Data Without Generating XSD Type Attributes

gSOAP serializes data in XML with xsi:type attributes when the types are declared with namespace prefixes to indicate the schema type of the data contained in the elements. SOAP 1.1 and 1.2 requires xsi:type attributes in the presence of polymorphic data or when the type of the data cannot be deduced from the SOAP payload. The namespace prefixes are associated with the type names of typedefs (Section 11.3) for primitive data types, struct/class names, and enum names.
To prevent the output of these xsi:type attributes in the XML serialization, you can simply use type declarations that do not include these namespace prefixes. That is, don't use the typedefs for primitive types and use unqualified type names with structs, classes, and enums.
However, there are two issues. Firstly, if you want to use a primitive schema type that has no C/C++ counterpart, you must declare it as a typedef name with a leading underscore, as in:

typedef char *_xsd__date;

This will produce the necessary xsd:date information in the WSDL output by the gSOAP soapcpp2 compiler. But the XML serialization of this type at run time won't include the xsi:type attribute. Secondly, to include the proper schema definitions in the WSDL produced by the gSOAP soapcpp2 compiler, you should use qualified struct, class, and enum names with a leading underscore, as in:

struct _ns__myStruct
{ ... };

This ensures that myStruct is associated with a schema, and therefore included in the appropriate schema in the generated WSDL. The leading underscore prevents the XML serialization of xsi:type attributes for this type in the SOAP/XML payload.

19.7  Function Callbacks for Customized I/O and HTTP Handling

gSOAP provides five callback functions for customized I/O and HTTP handling:

Callback (function pointer)
SOAP_SOCKET (*soap.fopen)(struct soap *soap, const char *endpoint, const char *host, int port)
Called from a client proxy to open a connection to a Web Service located at endpoint. Input parameters host and port are micro-parsed from endpoint. Should return a valid file descriptor, or SOAP_INVALID_SOCKET and soap->error set to an error code. Built-in gSOAP function: tcp_connect
int (*soap.fclose)(struct soap *soap)
Called by client proxy multiple times, to close a socket connection before a new socket connection is established and at the end of communications when the SOAP_IO_KEEPALIVE flag is not set and soap.keep_alive ≠ 0 (indicating that the other party supports keep alive). Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: tcp_disconnect



Callback (function pointer)
int (*soap.fget)(struct soap *soap)
Called by the main server loop upon an HTTP GET request. The SOAP_GET_METHOD error is returned by default. This callback can be used to respond to HTTP GET methods with content, see Section 19.10. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_get
int (*soap.fput)(struct soap *soap)
Called by the main server loop upon an HTTP PUT request. The SOAP_PUT_METHOD error is returned by default. This callback can be used to respond to HTTP PUT. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_put
int (*soap.fdel)(struct soap *soap)
Called by the main server loop upon an HTTP DELETE request. The SOAP_DELETE_METHOD error is returned by default. This callback can be used to respond to HTTP DELETE methods. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_del
int (*soap.fhead)(struct soap *soap)
Called by the main server loop upon an HTTP HEAD request. The SOAP_HEAD_METHOD error is returned by default. This callback can be used to respond to HTTP HEAD methods. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_get
int (*soap.fform)(struct soap *soap)
Called by the main server loop when a user-defined fparsehdr callback returned SOAP_FORM to signal that the HTTP body must be processed by this form handler callback. The HTTP POST form data MUST be read, otherwise keep-alive messages will end up out of sync. Should return SOAP_OK or a gSOAP error code. Built-in gSOAP function: none.
int (*soap.fpost)(struct soap *soap, const char *endpoint, const char *host, int port, const char *path, const char *action, ULONG64 count)
Called from a client proxy to generate the HTTP header to connect to endpoint. Input parameters host, port, and path are micro-parsed from endpoint, action is the SOAP action, and count is the length of the SOAP message or 0 when SOAP_ENC_PLAIN is set or when SOAP_IO_LENGTH is reset. Use function soap_send(struct soap *soap, char *s) to write the header contents. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_post.
int (*soap.fposthdr)(struct soap *soap, const char *key, const char *val)
Called by http_post and http_response (through the callbacks). Emits HTTP key: val header entries. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_post_header.
int (*soap.fresponse)(struct soap *soap, int soap_error_code, ULONG64 count)
Called from a service to generate the response HTTP header. Input parameter soap_error_code is a gSOAP error code (see Section 10.2 and count is the length of the SOAP message or 0 when SOAP_ENC_PLAIN is set or when SOAP_IO_LENGTH is reset. Use function soap_send(struct soap *soap, char *s) to write the header contents. Should return SOAP_OK, or a gSOAP error code Built-in gSOAP function: http_response
int (*soap.fparse)(struct soap *soap)
Called by client proxy and service to parse an HTTP header (if present). When user-defined, this routine must at least skip the header. Use function int soap_getline(struct soap *soap, char *buf, int len) to read HTTP header lines into a buffer buf of length len (returns empty line at end of HTTP header). Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: http_parse
int (*soap.fparsehdr)(struct soap *soap, const char *key, const char *val)
Called by http_parse (through the fparse callback). Handles HTTP key: val header entries to set gSOAP's internals. Should return SOAP_OK, SOAP_STOP (see fstop) or a gSOAP error code. Built-in gSOAP function: http_parse_header



Callback (function pointer)
int (*soap.fsend)(struct soap *soap, const char *s, size_t n)
Called for all send operations to emit contents of s of length n. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: fsend
size_t (*soap.frecv)(struct soap *soap, char *s, size_t n)
Called for all receive operations to fill buffer s of maximum length n. Should return the number of bytes read or 0 in case of an error, e.g. EOF. Built-in gSOAP function: frecv
int (*soap.fignore)(struct soap *soap, const char *tag)
Called when an unknown XML element was encountered on the input. The tag parameter is the offending XML element tag name. Should return SOAP_OK, or a gSOAP error code such as SOAP_TAG_MISMATCH to stop processing. Can be used to override mustUnderstand="true" attributes on unrecognized SOAP Header elements that raise faults. Check soap->mustUnderstand != 0 in fignore function for presence of mustUnderstand attribute. Built-in gSOAP function: none.
int (*soap.fconnect)(struct soap *soap, const char *endpoint, const char *host, int port)
When non-NULL, this callback is called for all client-to-server connect operations instead of the built-in socket connect code. Therefore, it can be used to override the built-in connection establishment. Parameter endpoint contains the server endpoint URL, host the domain name or IP, and port the port number. Should return SOAP_OK, or a gSOAP error code. Built-in gSOAP function: none
SOAP_SOCKET (*soap.faccept)(struct soap *soap, SOAP_SOCKERT s, struct sockaddr *a, int *n)
Called by soap_accept. This is a wrapper routine for accept. Given master socket s should return a valid socket descriptor or SOAP_INVALID_SOCKET and set soap->error to an error code. Built-in gSOAP function: tcp_accept
int (*soap.fresolve)(struct soap *soap, const char *addr, struct in_addr *inaddr)
Called by soap_bind if a host name is given and soap_connect to resolve a domain name addr. Should set in_addr *a and return SOAP_OK or return SOAP_ERR upon failure.
Built-in gSOAP function: tcp_gethost
int (*soap.fpoll)(struct soap *soap)
Used by clients to check if the server is still responsive.
Built-in gSOAP function: soap_poll
int (*soap.fserveloop)(struct soap *soap)
Called after successful invocation of a server operation in the server loop, immediately after sending the response to a client. Can be used to clean up resources (e.g. using soap_end()) while serving a long sequence of keep-alive connections. Should return SOAP_OK, or set soap->error to a gSOAP error code and return soap->error. Built-in gSOAP function: none.
void (*soap.fmalloc)(struct soap *soap, size_t n)
Use to override memory allocation for deserialized C data. Memory allocated via this callback will not be automatically released by the gSOAP engine. The application must release this data by keeping track of the allocations. Note: it is not safe to traverse deserialized data structures and free each node, since data might be shared (SOAP multiref) and some allocated data such as the HTTP SOAPAction might no be part of the structure.
Built-in gSOAP function: none.
int (*soap.fheader)(struct soap *soap)
Called immediately after parsing a SOAP Header. The SOAP Header struct referenced by soap->header can be inspected and verified. The function should return SOAP_OK or a fault.
Built-in gSOAP function: none.
int (*soap.fsvalidate)(struct soap *soap, const char *pattern, const char *string)
Called to validate a non-NULL string against a non-NULL pattern. Patterns use XML schema regex syntax. Allows user-defined pattern validation. Should return SOAP_OK when the string matches the pattern or SOAP_TYPE when the string does not match.
Built-in gSOAP function: none.
int (*soap.fwvalidate)(struct soap *soap, const char *pattern, const wchar_t *string)
Called to validate a non-NULL wide string against a non-NULL pattern. Patterns use XML schema regex syntax. Allows user-defined pattern validation. Should return SOAP_OK when the string matches the pattern or SOAP_TYPE when the string does not match.
Built-in gSOAP function: none.
void (*soap.fseterror)(struct soap *soap, const char **code, const char **string)
Called to set the SOAP Fault code and string values based on the value of soap->error. Allows user-defined messages to be associated with gSOAP error codes to override gSOAP's built-in error messages.
Built-in gSOAP function: none.

In addition, a void*user field in the struct soap data structure is available to pass user-defined data to the callbacks.
The following example uses I/O function callbacks for customized serialization of data into a fixed-size buffer and deserialization back into a datastructure:

char buf[10000]; // XML buffer
int len1 = 0; // #chars written
int len2 = 0; // #chars read
// mysend: put XML in buf[]
int mysend(struct soap *soap, const char *s, size_t n)
{
   if (len1 + n > sizeof(buf))
      return SOAP_EOF;
   strcpy(buf + len1, s);
   len1 += n;
   return SOAP_OK;
}
// myrecv: get XML from buf[]
size_t myrecv(struct soap *soap, char *s, size_t n)
{
   if (len2 + n > len1)
      n = len1 - len2;
   strncpy(s, buf + len2, n);
   len2 += n;
   return n;
}
int main()
{
   struct soap soap;
   struct ns__person p;
   soap_init(&soap);
   len1 = len2 = 0; // reset buffer pointers
   p.name = "John Doe";
   p.age = 25;
   soap.fsend = mysend; // assign callback
   soap.frecv = myrecv; // assign callback
   soap_begin_send(&soap);
   soap_set_omode(&soap, SOAP_XML_TREE);
   soap_serialize_ns__person(&soap, &p);
   soap_put_ns__person(&soap, &p, "ns:person", NULL);
   soap_end_send(&soap);
   if (soap.error)
   {
      soap_print_fault(&soap, stdout);
      exit(1);
   }
   soap_begin_recv(&soap);
   soap_get_ns__person(&soap, &p, "ns:person", NULL);
   soap_end_recv(&soap);
   if (soap.error)
   {
      soap_print_fault(&soap, stdout);
      exit(1);
   }
   soap_destroy(&soap);
   soap_end(&soap);
   soap_done(&soap); // disable callbacks
}

A fixed-size buffer to store the outbound message sent is not flexible to handle large content. To store the message in an expanding buffer, use for example:

struct buffer
{
   size_t len;
   size_t max;
   char *buf;
};
int main()
{
   struct buffer *h = malloc(sizeof(struct buffer));
   h->len = 0;
   h->max = 0;
   h->buf = NULL;
   soap.user = (void *)h; // pass buffer as a handle to the callback
   soap.fsend = mysend; // assign callback
   ...
   if (h->len)
   {
      ... // use h->buf[0..h->len-1] content
      // then cleanup:
      h->len = 0;
      h->max = 0;
      free(h->buf);
      h->buf = NULL;
   }
   ...
}
int mysend(struct soap *soap, const char *s, size_t n)
{
   struct buffer *h = (struct buffer*)soap->user; // get buffer through handle
   int m = h->max, k = h->len + n;
   // need to increase space?
   if (m == 0)
      m = 1024;
   else 
      while (k >= m)
         m *= 2;
   if (m != h->max)
   {
      char *buf = malloc(m);
      memcpy(buf, h->buf, h->len);
      h->max = m;
      if(h->buf)
         free(h->buf);
      h->buf = buf;
   }
   memcpy(h->buf + h->len, s, n);
   h->len += n;
   return SOAP_OK;
}

The soap_done function can be called to reset the callback to the default internal gSOAP I/O and HTTP handlers.
The following example illustrates customized I/O and (HTTP) header handling. The SOAP request is saved to a file. The client proxy then reads the file contents as the service response. To perform this trick, the service response has exactly the same structure as the request. This is declared by the struct ns__test output parameter part of the service operation declaration. This struct resembles the service request (see the generated soapStub.h file created from the header file).
The header file is:

//gsoap ns service name: callback
//gsoap ns service namespace: urn:callback
struct ns__person
{
   char *name;
   int age;
};
int ns__test(struct ns__person in, struct ns__test &out);

The client program is:

#include "soapH.h"
...
SOAP_SOCKET myopen(struct soap *soap, const char *endpoint, const char *host, int port)
{
   if (strncmp(endpoint, "file:", 5))
   {
      printf("File name expected\n");
      return SOAP_INVALID_SOCKET;
   }
   if ((soap->sendfd = soap->recvfd = open(host, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR)) < 0)
      return SOAP_INVALID_SOCKET;
   return soap->sendfd;
}
void myclose(struct soap *soap)
{
   if (soap->sendfd > 2) // still open?
      close(soap->sendfd); // then close it
   soap->recvfd = 0; // set back to stdin
   soap->sendfd = 1; // set back to stdout
}
int mypost(struct soap *soap, const char *endpoint, const char *host, const char *path, const char *action, ULONG64 count)
{
   return soap_send(soap, "Custom-generated file\n"); // writes to soap->sendfd
}
int myparse(struct soap *soap)
{
   char buf[256];
   if (lseek(soap->recvfd, 0, SEEK_SET) < 0 || soap_getline(soap, buf, 256)) // go to begin and skip custom header
      return SOAP_EOF;
   return SOAP_OK;
}
int main()
{
   struct soap soap;
   struct ns__test r;
   struct ns__person p;
   soap_init(&soap); // reset
   p.name = "John Doe";
   p.age = 99;
   soap.fopen = myopen; // use custom open
   soap.fpost = mypost; // use custom post
   soap.fparse = myparse; // use custom response parser
   soap.fclose = myclose; // use custom close
   soap_call_ns__test(&soap, "file://test.xml", "", p, r);
   if (soap.error)
   {
      soap_print_fault(&soap, stdout);
      exit(1);
   }
   soap_end(&soap);
   soap_init(&soap); // reset to default callbacks
}

SOAP 1.1 and 1.2 specify that XML elements may be ignored when present in a SOAP payload on the receiving side. gSOAP ignores XML elements that are unknown, unless the XML attribute mustUnderstand="true" is present in the XML element. It may be undesirable for elements to be ignored when the outcome of the omission is uncertain. The soap.fignore callback can be set to a function that returns SOAP_OK in case the element can be safely ignored, or SOAP_MUSTUNDERSTAND to throw an exception, or to perform some application-specific action. For example, to throw an exception as soon as an unknown element is encountered on the input, use:

int myignore(struct soap *soap, const char *tag)
{
   return SOAP_MUSTUNDERSTAND; // never skip elements (secure)
}
...
soap.fignore = myignore;
soap_call_ns__method(&soap, ...); // or soap_serve(&soap);

To selectively throw an exception when mustUnderstand="true" SOAP Header element is encountered or when an unknown element is encountered except for element ns:xyz, use:

int myignore(struct soap *soap, const char *tag)
{
   if (soap->mustUnderstand)
      return SOAP_MUSTUNDERSTAND; // do not ignore mustUnderstand="true"
   if (soap_match_tag(soap, tag, "ns:xyz") != SOAP_OK)
      return SOAP_MUSTUNDERSTAND;
   return SOAP_OK;
}
...
soap.fignore = myignore;
soap_call_ns__method(&soap, ...); // or soap_serve(&soap)
...
struct Namespace namespaces[] =
{
   {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"},
   {"SOAP-ENC","http://schemas.xmlsoap.org/soap/encoding/"},
   {"xsi", "http://www.w3.org/2001/XMLSchema-instance"},
   {"xsd", "http://www.w3.org/2001/XMLSchema"},
   {"ns", "some-URI"}, // the namespace of element ns:xyz
   {NULL, NULL}

Function soap_match_tag compares two tags. The third parameter may be a pattern where * is a wildcard and - is a single character wildcard. So for example soap_match_tag(tag, "ns:*") will match any element in namespace ns or when no namespace prefix is present in the XML message.
The callback can also be used to keep track of unknown elements in an internal data structure such as a list:

struct Unknown
{
   char *tag;
   struct Unknown *next;
};
int myignore(struct soap *soap, const char *tag)
{
   char *s = (char*)soap_malloc(soap, strlen(tag)+1);
   struct Unknown *u = (struct Unknown*)soap_malloc(soap, sizeof(struct Unknown));
   if (s && u)
   {
      strcpy(s, tag);
      u->tag = s;
      u->next = ulist;
      ulist = u;
   }
}
...
struct soap *soap;
struct Unknown *ulist = NULL;
soap_init(&soap);
soap.fignore = myignore;
soap_call_ns__method(&soap, ...); // or soap_serve(&soap)
// print the list of unknown elements
soap_end(&soap); // clean up

19.8  HTTP 1.0 and 1.1

gSOAP uses HTTP 1.1 by default. You can revert to HTTP 1.0 as follows:

struct soap soap;
soap_init(&soap);
...
soap.http_version = "1.0";

This sets the HTTP version and reconfigures the engine to revert to HTTP 1.0. Note that you cannot use HTTP chunking with HTTP 1.0.

19.9  HTTP 307 Temporary Redirect Support

The client-side handling of HTTP 307 code "Temporary Redirect" and any of the redirect codes 301, 302, and 303 are not automated in gSOAP. Client application developers may want to consider adding a few lines of code to support redirects. It was decided not to automatically support redirects for the following reasons:
  • Redirecting a secure HTTPS address to a non-secure HTTP address via 307 creates a security vulnerability.
  • Cyclic redirects must be detected (e.g. allowing only a limited number of redirect levels).
  • Redirecting HTTP POST will result in re-serialization and re-post of the entire SOAP request. The SOAP request message must be re-posted in its entirity when re-issuing the SOAP operation to a new address.
To implement client-side 307 redirect, add the following lines of code:

char *endpoint = NULL; // use default endpoint given in WSDL (or add another one here)
int n = 10; // max redirect count
while (n− −)
{
   if (soap_call_ns1__myMethod(soap, endpoint, ...))
   {
      if ((soap->error >= 301 && soap->error <= 303) || soap->error == 307)
         endpoint = soap_strdup(soap, soap->endpoint); // endpoint from HTTP 301, 302, 303, 307 Location header
      else
         { ... report and handle error
            break;
         }
   }
   else
      break;
}

19.10  HTTP GET Support

To implement your own HTTP (HTTPS) GET request responses, you need to set the soap.fget callback. The callback is required to produce a response to the request in textual form, such as a Web page or a SOAP/XML response. This method does not work with CGI.
The following example produces a Web page upon a HTTP GET request (e.g. from a browser):

struct soap *soap = soap_new();
soap->fget = http_get;
...
soap_serve(soap);
...
int http_get(struct soap *soap)
{
   soap_response(soap, SOAP_HTML); // HTTP response header with text/html
   soap_send(soap, "<HTML>My Web server is operational.</HTML>");
   soap_end_send(soap);
   return SOAP_OK;
}

The example below produces a WSDL file upon a HTTP GET with path ?wsdl:

int http_get(struct soap *soap)
{
   FILE *fd = NULL;
   char *s = strchr(soap->path, '?');
   if (!s || strcmp(s, "?wsdl"))
      return SOAP_GET_METHOD;
   fd = fopen("myservice.wsdl", "rb"); // open WSDL file to copy
   if (!fd)
      return 404; // return HTTP not found error
   soap->http_content = "text/xml"; // HTTP header with text/xml content
   soap_response(soap, SOAP_FILE);
   for (;;)
   {
      size_t r = fread(soap->tmpbuf, 1, sizeof(soap->tmpbuf), fd);
      if (!r)
         break;
      if (soap_send_raw(soap, soap->tmpbuf, r))
         break; // can't send, but little we can do about that
   }
   fclose(fd);
   soap_end_send(soap);
   return SOAP_OK;
}

Using one-way SOAP/XML message, you can also return a SOAP/XML response:

int http_get(struct soap *soap)
{
   if ((soap->omode & SOAP_IO) != SOAP_IO_CHUNK)
      soap_set_omode(soap, SOAP_IO_STORE); // if not chunking we MUST buffer entire content to determine content length
   soap_response(soap, SOAP_OK);
   return soap_send_ns1__mySendMethodResponse(soap, "", NULL, ... params ...);
}

where ns1__mySendMethodResponse is a one-way message declared in a gSOAP header file as:

int ns1__mySendMethodResponse(... params ..., void);

The generated soapClient.cpp includes the sending-side stub function.

19.11  TCP and HTTP Keep-Alive

gSOAP supports keep-alive socket connections. To activate keep-alive support, set the SOAP_IO_KEEPALIVE flag for both input and output modes, see Section 9.12. For example

struct soap soap;
soap_init2(&soap, SOAP_IO_KEEPALIVE, SOAP_IO_KEEPALIVE);

When a client or a service communicates with another client or service that supports keep alive, the attribute soap.keep_alive will be set to 1, otherwise it is reset to 0 (indicating that the other party will close the connection). The connection maybe terminated on either end before the communication completed, for example when the server keep-alive connection has timed out. This generates a "Broken Pipe" signal on Unix/Linux platforms. This signal can be caught with a signal handler:

signal(SIGPIPE, sigpipe_handle);

where, for example:

void sigpipe_handle(int x) { }

Alternatively, broken pipes can be kept silent by setting:

soap.socket_flags = MSG_NOSIGNAL;

This setting will not generate a sigpipe but read/write operations return SOAP_EOF instead. Note that Win32 systems do not support signals and lack the MSG_NOSIGNAL flag. The sigpipe handling and flags are not very portable.
A connection will be kept open only if the request contains an HTTP 1.0 header with "Connection: Keep-Alive" or an HTTP 1.1 header that does not contain "Connection: close". This means that a gSOAP client method call should use "http://" in the endpoint URL of the request to the stand-alone service to ensure HTTP headers are used.
If the client does not close the connection, the server will wait forever when no recv_timeout is specified. In addition, other clients will be denied service as long as a client keeps the connection to the server open. To prevent this from happening, the service should be multi-threaded such that each thread handles the client connection:

int main(int argc, char **argv)
{
   struct soap soap, *tsoap;
   pthread_t tid;
   int m, s;
   soap_init2(&soap, SOAP_IO_KEEPALIVE, SOAP_IO_KEEPALIVE);
   soap.max_keep_alive = 100; // at most 100 calls per keep-alive session
   soap.accept_timeout = 600; // optional: let server time out after ten minutes of inactivity
   m = soap_bind(&soap, NULL, 18000, BACKLOG); // use port 18000 on the current machine
   if (m < 0)
   {
      soap_print_fault(&soap, stderr);
      exit(1);
   }
   fprintf(stderr, "Socket connection successful %d\n", m);
   for (count = 0; count >= 0; count++)
   {
      soap.socket_flags = MSG_NOSIGNAL; // use this
      soap.accept_flags = SO_NOSIGPIPE; // or this to prevent sigpipe
      s = soap_accept(&soap);
      if (s < 0)
      {
         if (soap.errnum)
            soap_print_fault(&soap, stderr);
         else
            fprintf(stderr, "Server timed out\n"); // Assume timeout is long enough for threads to complete serving requests
         break;
      }
      fprintf(stderr, "Accepts socket %d connection from IP %d.%d.%d.%d\n", s, (int)(soap.ip >> 24)&0xFF, (int)(soap.ip >> 16)&0xFF, (int)(soap.ip >> 8)&0xFF, (int)soap.ip&0xFF);
      tsoap = soap_copy(&soap);
      pthread_create(&tid, NULL, (void*(*)(void*))process_request, (void*)tsoap);
   }
   return 0;
}
void *process_request(void *soap)
{
   pthread_detach(pthread_self());
   ((struct soap*)soap)->recv_timeout = 60; // Timeout after 1 minute stall on recv
   ((struct soap*)soap)->send_timeout = 10; // Timeout after 10 second stall on send
   soap_serve((struct soap*)soap);
   soap_destroy((struct soap*)soap);
   soap_end((struct soap*)soap);
   soap_free((struct soap*)soap);
   return NULL;
}

To prevent a malicious client from keeping a thread waiting forever by keeping the connection open, timeouts are set in the process_request routine as shown. See Section 19.20 for more details on timeout settings.
A gSOAP client call will automatically attempt to re-establish a connection to a server when the server has terminated the connection for any reason. This way, a sequence of calls can be made to the server while keeping the connection open. Client stubs will poll the server to check if the connection is still open. When the connection was terminated by the server, the client will automatically reconnect.
A client should reset SOAP_IO_KEEPALIVE just before the last call to a server to close the connection after this last call. This will close the socket after the call and also informs the server to gracefully close the connection.
The client-side can also set the TCP keep-alive socket properties, using the soap.tcp_keep_alive flag (set to 1 to enable), soap.tcp_keep_idle to set the TCP_KEEPIDLE value, soap.tcp_keep_intvl to set the TCP_KEEPINTVL value, and soap.tcp_keep_cnt to set the TCP_KEEPCNT value.
If a client is in the middle of soap call that might take a long time and the server goes away/down the caller does not get any feedback until the soap.recv_timeout is reached. Enabling TCP keep alive on systems that support it allows for a faster connection teardown detection for applications that need it.

19.12  HTTP Chunked Transfer Encoding

gSOAP supports HTTP chunked transfer encoding. Un-chunking of inbound messages takes place automatically. Outbound messages are never chunked, except when the SOAP_IO_CHUNK flag is set for the output mode. Most Web services, however, will not accept chunked inbound messages.

19.13  HTTP Buffered Sends

The entire outbound message can be stored to determine the HTTP content length rather than the two-phase encoding used by gSOAP which requires a separate pass over the data to determine the length of the outbound message. Setting the flag SOAP_IO_STORE for the output mode will buffer the entire message. This can speed up the transmission of messages, depending on the content, but may require significant storage space to hold the verbose XML message.
Zlib compressed transfers require buffering. The SOAP_IO_STORE flag is set when the SOAP_ENC_ZLIB flag is set to send compressed messages. The use of chunking significantly reduces memory usage and may speed up the transmission of compressed SOAP/XML messages. This is accomplished by setting the SOAP_IO_CHUNK flag with SOAP_ENC_ZLIB for the output mode.

19.14  HTTP Authentication

HTTP authentication (basic) is enabled at the client-side by setting the soap.userid and soap.passwd strings to a username and password, respectively. A server may request user authentication and denies access (HTTP 401 error) when the client tries to connect without HTTP authentication (or with the wrong authentication information).
Here is an example client code fragment to set the HTTP authentication username and password:

struct soap soap;
soap_init(&soap);
soap.userid = "guest";
soap.passwd = "visit";
...

A client SOAP request will have the following HTTP header:

POST /XXX HTTP/1.0
Host: YYY
User-Agent: gSOAP/2.2
Content-Type: text/xml; charset=utf-8
Content-Length: nnn
Authorization: Basic Z3Vlc3Q6Z3Vlc3Q=
...

A client MUST set the soap.userid and soap.passwd strings for each call that requires client authentication. The strings are reset after each successful or unsuccessful call.
When present, the value of the WWW-Authenticate HTTP header with the authentication realm can be obtained from the soap.authrealm string. This is useful for clients to respond intelligently to authentication requests.
A stand-alone gSOAP Web Service can enforce HTTP authentication upon clients, by checking the soap.userid and soap.passwd strings. These strings are set when a client request contains HTTP authentication headers. The strings SHOULD be checked in each service method (that requires authentication to execute).
Here is an example service method implementation that enforced client authentication:

int ns__method(struct soap *soap, ...)
{
   if (!soap->.userid || !soap->.passwd || strcmp(soap->.userid, "guest") || strcmp(soap->.passwd, "visit"))
      return 401;
...
}

When the authentication fails, the service response with a SOAP Fault message and a HTTP error code "401 Unauthorized". The HTTP error codes are described in Section 10.2.

19.15  HTTP NTLM Authentication

HTTP NTLM authentication is enabled at the client-side by installing libntlm from http://www.nongnu.org/libntlm and compiling all project source codes with -DWITH_NTLM.
In your application code set the soap.userid, soap.passwd, and soap.authrealm strings to a username, password, and the authentication domain respectively. A server may request NTLM authentication and denies access (HTTP 401 authentication required or HTTP 407 HTTP proxy authentication required) when the client tries to connect without HTTP authentication (or with the wrong authentication information).
Here is an example client code fragment to set the NTLM authentication username and password:

struct soap soap;
soap_init1(&soap, SOAP_IO_KEEPALIVE);
if (soap_call_ns__method(&soap, ...))
{ if (soap.error == 401)
   { soap.userid = "Zaphod";
      soap.passwd = "Beeblebrox";
      soap.authrealm = "Ursa-Minor";
      if (soap_call_ns__method(&soap, ...))
         ...

The following NTLM handshake between the client C and server S is performed:

1: C -> S POST ...
Content-Type: text/xml; charset=utf-8
2: C <- S 401 Unauthorized
WWW-Authenticate: NTLM
3: C -> S GET ...
Authorization: NTLM <base64-encoded type-1-message>
4: C <- S 401 Unauthorized
WWW-Authenticate: NTLM <base64-encoded type-2-message>
5: C -> S POST ...
Content-Type: text/xml; charset=utf-8
Authorization: NTLM <base64-encoded type-3-message>
6: C <- S 200 OK

where stages 1 and 2 indicates a client attempting to connect without authorization information, which is the first method call in the code above. Stage 3 to 6 happen with the proper client authentication set with soap.userid, soap.passwd, and soap.authrealm provided. NTLM authenticates connections, not requests. When the connection is kept alive, subsequent messages can be exchanged without re-authentication.
To avoid the overhead of the first rejected call, use:

struct soap soap;
soap_init1(&soap, SOAP_IO_KEEPALIVE);
soap.userid = "Zaphod";
soap.passwd = "Beeblebrox";
soap.authrealm = "Ursa-Minor";
soap.ntlm_challenge = "";
if (soap_call_ns__method(&soap, ...))
   ...

When the authentication fails (stage 1 and 2), the service response with a SOAP Fault message and a HTTP error code "401 Unauthorized". The HTTP error codes are described in Section 10.2.
On windows, an alternative is to use the WinInet module, which has built-in NTLM support. The WinInet for gSOAP module is available in the mod_gsoap directory of the gSOAP package. Instructions for WinInet use are included there.

19.16  HTTP Proxy NTLM Authentication

For HTTP 407 Proxy Authentication Required, set the proxy userid and passwd:

struct soap soap;
soap_init1(&soap, SOAP_IO_KEEPALIVE);
soap.proxy_host = "...";
soap.proxy_port = ...;
if (soap_call_ns__method(&soap, ...))
{ if (soap.error == 407)
   { soap.proxy_userid = "Zaphod";
      soap.proxy_passwd = "Beeblebrox";
      soap.authrealm = "Ursa-Minor";
      if (soap_call_ns__method(&soap, ...))
         ...

To avoid the overhead of the first rejected call, use:

struct soap soap;
soap_init1(&soap, SOAP_IO_KEEPALIVE);
soap.proxy_host = "...";
soap.proxy_port = ...;
soap.proxy_userid = "Zaphod";
soap.proxy_passwd = "Beeblebrox";
soap.authrealm = "Ursa-Minor";
soap.ntlm_challenge = "";
if (soap_call_ns__method(&soap, ...))
   ...

19.17  HTTP Proxy Basic Authentication

HTTP proxy authentication (basic) is enabled at the client-side by setting the soap.proxy_userid and soap.proxy_passwd strings to a username and password, respectively. For example, a proxy server may request user authentication. Otherwise, access is denied by the proxy (HTTP 407 error). Example client code fragment to set proxy server, username, and password:

struct soap soap;
soap_init(&soap);
soap.proxy_host = "xx.xx.xx.xx"; // IP or domain
soap.proxy_port = 8080;
soap.proxy_userid = "guest";
soap.proxy_passwd = "guest";
...

A client SOAP request will have the following HTTP header:

POST /XXX HTTP/1.0
Host: YYY
User-Agent: gSOAP/2.2
Content-Type: text/xml; charset=utf-8
Content-Length: nnn
Proxy-Authorization: Basic Z3Vlc3Q6Z3Vlc3Q=
...

When X-Forwarded-For headers are returned by the proxy, the header can be accessed in the soap.proxy_from string.
The CONNECT method is used for HTTP proxy authentication:

CONNECT server.example.com:80 HTTP/1.1

In some cases, it may be necessary to use the Host HTTP header with the CONNECT protocol:

CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80

If so, compile the gSOAP code with -DWITH_CONNECT_HOST to include the Host HTTP header with the CONNECT protocol.

19.18  Messaging Speed and Performance Improvement Tips

Here are some tips you can use to speed up gSOAP. gSOAP's default settings are choosen to maximize portability and compatibility. The settings can be tweaked to optimize the performance as follows:
  • Increase the buffer size SOAP_BUFLEN by changing the SOAP_BUFLEN macro in stdsoap2.h. Use buffer size 218=262144 for example.
  • Use HTTP keep-alive at the client-side, see 19.11, when the client needs to make a series of calls to the same server. Server-side keep-alive support can greatly improve performance of both client and server. But be aware that clients and services under Unix/Linux require signal handlers to catch dropped connections.
  • Use HTTP chunked transfers, see 19.12.
  • Do NOT use gzip compression, since the overhead of compression is typically higher than the bandwidth gains.
  • Set the SOAP_XML_TREE flag to disable id-ref multi-ref object (de)serialization. This boosts performance significantly and works with SOAP document/literal style (i.e. no id-ref graph serialization as required with SOAP encoding style).
  • Compile stdsoap2.c and stdsoap2.cpp and all other source codes with -DWITH_NOIDREF to improve performance even better by permanently disabling id-ref multi-ref object (de)serialization.
  • Do NOT use DEBUG mode, since the overhead of logging is significant.

19.19  XML Parsing Options to set Safety Guards

The XML parser is configured to restrict the XML nesting depth level to SOAP_MAXLEVEL and restricts the repeated occurrence of elements that are deserialized into arrays and containers by SOAP_MAXOCCURS. These macros can be changed, but you can also change the following context attributes at runtime, e.g. to enhance the safety for specific service and/or client operations:
  • soap.maxlevel is an unsigned int to restrict the XML nesting depth level, where the default value is SOAP_MAXLEVEL=10000.
  • soap.maxoccurs is a size_t to restrict the number of repeated occurrences of elements that are deserialized into arrays and structs, where the default value is SOAP_MAXOCCURS=100000.
  • soap.maxlength is a positive long length that restricts the length of strings deserialized from XML. A zero or negative value is unrestricted length. When restricted, the XML schema validation maxLength takes precedence over this length restriction. So setting a smaller value will not interfere with the XML validation rules. The default value is SOAP_MAXLENGTH=0. Note that string length is expressed in number of characters, not bytes. So UTF-8 encodings are not truncated.
XML schema validation constraints are enforced with the SOAP_XML_STRICT context flag. The schema maxLength validation constraint overrules the soap.maxlength guard. The schema maxOccurs validation constraint DOES NOT overrule the soap.maxoccurs guard, so arrays and containers are always restricted in length by this guard.

19.20  Timeout Management for Non-Blocking Operations

Socket connect, accept, send, and receive timeout values can be set to manage socket communication timeouts. The soap.connect_timeout, soap.accept_timeout, soap.send_timeout, soap.recv_timeout and soap.transfer_timeout context attributes of the current gSOAP runtime context soap can be set to the appropriate user-defined socket send, receive, and accept timeout values. A positive value measures the timeout in seconds. A negative timeout value measures the timeout in microseconds (10−6 sec).
The soap.connect_timeout specifies the timeout for soap_call_ns__method calls.
The soap.accept_timeout specifies the timeout for soap_accept(&soap) calls.
The soap.send_timeout and soap.recv_timeout specify the timeout for non-blocking socket I/O operations. This is the maximum delay on the socket operation permitted.
The soap.transfer_timeout is new since 2.8.48 and limits the time a message send and a message receive operation can take. This value should be used in combination with soap.send_timeout and soap.recv_timeout for accurate timeout control. The soap.recv_maxlength value when non-zero limits the length of messages that can be received in bytes in total in decompressed form (message length includes HTTP headers and HTTP chunk size fields). The value of soap.recv_maxlength is 2GB by default.
Example:

struct soap soap;
soap_init(&soap);
soap.send_timeout = 10;
soap.recv_timeout = 10;
soap.recv_timeout = 60;

This will result in a timeout if no data can be send in 10 seconds and no data is received within 10 seconds after initiating a send or receive operation over the socket. A value of zero disables timeout, for example:

soap.send_timeout = 0;
soap.recv_timeout = 0;
soap.recv_timeout = 0;

When a timeout occurs in the send or receive operations, a SOAP_EOF exception will be raised ("end of file or no input"). Negative timeout values measure timeouts in microseconds, for example:

#define uSec *-1
#define mSec *-1000
soap.accept_timeout = 10 uSec;
soap.send_timeout = 20 mSec;
soap.recv_timeout = 20 mSec;
soap.recv_timeout = 10;

The macros improve readability.
Caution: many Linux versions do not support non-blocking connect(). Therefore, setting soap.connect_timeout for non-blocking soap_call_ns__method calls may not work under Linux.
Caution: interrupts (EINTR) can affect the blocking time in I/O operations. The maximum number of EINTR that will not trigger an error is set by SOAP_MAXEINTR in stdsoap2.h, which is 10 by default. Each EINTR may increase the blocking time by up to one second, up to SOAP_MAXEINTR seconds total.

19.21  Socket Options and Flags

gSOAP's socket communications can be controlled with socket options and flags. The gSOAP run-time context struct soap flags are:
  • int soap.socket_flags to set flags to the socket send() and recv() calls.
  • int soap.connect_flags to set client-side connection setsockopt() socket options.
  • int soap.bind_flags to set server-side port bind setsockopt() socket options.
  • int soap.bind_ipv6only set to 1 to set setsockopt() IPPROTO_IPV6 IPV6_V6ONLY.
  • int soap.accept_flags to set flags to the accept setsockopt() socket options.
See the manual pages of send and recv for soap.socket_flags values and see the manual pages of setsockopt for soap.connect_flags, soap.bind_flags, and soap.accept_flags (SOL_SOCKET) values. These SO_ socket option flags (see setsockopt manual pages) can be bit-wise or-ed to set multiple socket options at once.
The client-side flag soap.connect_flags=SO_LINGER is supported with values l_onoff=1 and l_linger=soap.linger_time. The soap.linger_time determines the wait time (the time resolution is system dependent, though according to some experts only zero and nonzero values matter). The linger option can be used to manage the number of connections that remain in TIME_WAIT state at the server side.
For example, to disable sigpipe signals on Unix/Linux platforms use: soap.socket_flags = MSG_NOSIGNAL and/or soap.connect_flags = SO_NOSIGPIPE (i.e. client-side connect) depending on your platform.
Use soap.bind_flags=SO_REUSEADDR to enable server-side port reuse and local port sharing (but be aware of the possible security implications such as port hijacking).
Note that multiple socket options can be explicitly set with setsockopt as follows:

int sock = soap_bind(soap, host, port, backlog);
if (soap_valid_socket(sock))
{
   setsockopt(sock, ..., ..., ..., ...);    setsockopt(sock, ..., ..., ..., ...);

19.22  Overriding the Host and Port to Connect

To override the host and port of the client connecting to a server, set soap.override_host and soap.override_port:


soap.override_host = ëxample.com"; // host name or IP address
soap.override_port = 80; // port number to use when overriding the address

19.23  Secure Web Services with HTTPS/SSL

 
When a Web Service is installed as CGI, it uses standard I/O that is encrypted/decrypted by the Web server that runs the CGI application. HTTPS/SSL support must be configured for the Web server (not CGI-based Web Service application itself).
To enable SSL for stand-alone gSOAP servers, first install OpenSSL and use option -DWITH_OPENSSL to compile the sources with your C or C++ compiler (or use -DWITH_GNUTLS if you prefer GNUTLS), for example:

> c++ -DWITH_OPENSSL -o myprog myprog.cpp stdsoap2.cpp soapC.cpp soapServer.cpp -lssl -lcrypto

With GNUTLS:

> c++ -DWITH_GNUTLS -o myprog myprog.cpp stdsoap2.cpp soapC.cpp soapServer.cpp -lgnutls -lgcrypt -lgpg-error

SSL support for stand-alone gSOAP Web services is enabled by calling soap_ssl_accept to perform the SSL/TLS handshake after soap_accept. In addition, a key file, a CA file (or path to certificates), DH file (if RSA is not used), and password need to be supplied. Instructions on how to do this can be found in the OpenSSL documentation http://www.openssl.org. See also Section 19.26.
Let's take a look at an example SSL secure multi-threaded stand-alone SOAP Web Service:

int main()
{
   int m, s;
   pthread_t tid;
   struct soap soap, *tsoap;
   soap_ssl_init(); /* init OpenSSL (skipping this or calling multiple times is OK, since the engine will init SSL automatically) */
   // soap_ssl_noinit(); /* do not init OpenSSL (if SSL is already initialized elsewhere) */
   if (CRYPTO_thread_setup()) // OpenSSL
   {
      fprintf(stderr, "Cannot setup thread mutex\n");
      exit(1);
   }
   soap_init(&soap);
   if (soap_ssl_server_context(&soap,
      SOAP_SSL_DEFAULT,
      "server.pem", /* keyfile: required when server must authenticate to clients (see SSL docs on how to obtain this file) */
      "password", /* password to read the key file (not used with GNUTLS) */
      "cacert.pem", /* optional cacert file to store trusted certificates */
      NULL, /* optional capath to directory with trusted certificates */
      "dh512.pem", /* DH file name or DH key len bits (minimum is 512, e.g. "512") to generate DH param, if NULL use RSA */
      NULL, /* if randfile!=NULL: use a file with random data to seed randomness */
      NULL /* optional server identification to enable SSL session cache (must be a unique name) */    ))
   {
      soap_print_fault(&soap, stderr);
      exit(1);
   }
   m = soap_bind(&soap, NULL, 18000, 100); // use port 18000
   if (m < 0)
   {
      soap_print_fault(&soap, stderr);
      exit(1);
   }
   fprintf(stderr, "Socket connection successful: master socket = %d\n", m);
   for (;;)
   {
      s = soap_accept(&soap);
      fprintf(stderr, "Socket connection successful: slave socket = %d\n", s);
      if (s < 0)
      {
         soap_print_fault(&soap, stderr);
         break;
      }
      tsoap = soap_copy(&soap); /* should call soap_ssl_accept on a copy */
      if (!tsoap)
         break;
      pthread_create(&tid, NULL, &process_request, (void*)tsoap);
   }
   soap_done(&soap); /* deallocates SSL context */
   CRYPTO_thread_cleanup(); // OpenSSL
   return 0;
}
void *process_request(void *soap)
{
   pthread_detach(pthread_self());
   if (soap_ssl_accept((struct soap*)soap))
      soap_print_fault(tsoap, stderr);
   else
      soap_serve((struct soap*)soap);
   soap_destroy((struct soap*)soap);
   soap_end((struct soap*)soap);
   soap_free((struct soap*)soap); // done and free context
   return NULL;
}

The soap_ssl_server_context function initializes the server-side SSL context. The server.pem key file is the server's private key concatenated with its certificate. The cacert.pem is used to authenticate clients and contains the client certificates. Alternatively a directory name can be specified. This directory is assumed to contain the certificates. The dh512.pem file specifies that DH will be used for key agreement instead of RSA. A numeric value greater than 512 can be provided instead as a string constant (e.g. "512") to allow the engine to generate the DH parameters on the fly (this can take a while) rather than retrieving them from a file. The randfile entry can be used to seed the PRNG. The last entry enable server-side session caching. A unique server name is required.
The GNUTLS mutex lock setup is automatically peformed in the gSOAP engine, but only when POSIX threads are detected and available.
OpenSSL requires mutex locks to be explicitly setup in your code for multithreaded applications, for which we need to call CRYPTO_thread_setup() and CRYPTO_thread_cleanup(). These routines can be found in openssl/crypto/threads/th-lock.c and are also used in the SSL example codes samples/ssl. These routines are required to setup locks for multi-threaded applications that use SSL.
We give a Windows and POSIX threads implementation of these here:

#include < unistd.h > /* defines _POSIX_THREADS if pthreads are available */
#ifdef _POSIX_THREADS
# include < pthread.h >
#endif
#if defined(WIN32)
# define MUTEX_TYPE HANDLE
# define MUTEX_SETUP(x) (x) = CreateMutex(NULL, FALSE, NULL)
# define MUTEX_CLEANUP(x) CloseHandle(x)
# define MUTEX_LOCK(x) WaitForSingleObject((x), INFINITE)
# define MUTEX_UNLOCK(x) ReleaseMutex(x)
# define THREAD_ID GetCurrentThreadID()
#elif defined(_POSIX_THREADS)
# define MUTEX_TYPE pthread_mutex_t
# define MUTEX_SETUP(x) pthread_mutex_init(&(x), NULL)
# define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x))
# define MUTEX_LOCK(x) pthread_mutex_lock(&(x))
# define MUTEX_UNLOCK(x) pthread_mutex_unlock(&(x))
# define THREAD_ID pthread_self()
#else
# error "You must define mutex operations appropriate for your platform"
# error "See OpenSSL /threads/th-lock.c on how to implement mutex on your platform"
#endif
struct CRYPTO_dynlock_value { MUTEX_TYPE mutex; };
static MUTEX_TYPE *mutex_buf;
static struct CRYPTO_dynlock_value *dyn_create_function(const char *file, int line)
{
   struct CRYPTO_dynlock_value *value;
   value = (struct CRYPTO_dynlock_value*)malloc(sizeof(struct CRYPTO_dynlock_value));
   if (value)
      MUTEX_SETUP(value->mutex);
   return value;
}
static void dyn_lock_function(int mode, struct CRYPTO_dynlock_value *l, const char *file, int line)
{
   if (mode & CRYPTO_LOCK)
      MUTEX_LOCK(l->mutex);
   else
      MUTEX_UNLOCK(l->mutex);
}
static void dyn_destroy_function(struct CRYPTO_dynlock_value *l, const char *file, int line)
{
   MUTEX_CLEANUP(l->mutex);
   free(l);
}
void locking_function(int mode, int n, const char *file, int line)
{
   if (mode & CRYPTO_LOCK)
      MUTEX_LOCK(mutex_buf[n]);
   else
      MUTEX_UNLOCK(mutex_buf[n]);
}
unsigned long id_function()
{
   return (unsigned long)THREAD_ID;
}
int CRYPTO_thread_setup()
{
   int i;
   mutex_buf = (MUTEX_TYPE*)malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
   if (!mutex_buf)
      return SOAP_EOM;
   for (i = 0; i < CRYPTO_num_locks(); i++)
      MUTEX_SETUP(mutex_buf[i]);
   CRYPTO_set_id_callback(id_function);
   CRYPTO_set_locking_callback(locking_function);
   CRYPTO_set_dynlock_create_callback(dyn_create_function);
   CRYPTO_set_dynlock_lock_callback(dyn_lock_function);
   CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function);
   return SOAP_OK;
}
void CRYPTO_thread_cleanup()
{
   int i;
   if (!mutex_buf)
      return;
   CRYPTO_set_id_callback(NULL);
   CRYPTO_set_locking_callback(NULL);
   CRYPTO_set_dynlock_create_callback(NULL);
   CRYPTO_set_dynlock_lock_callback(NULL);
   CRYPTO_set_dynlock_destroy_callback(NULL);
   for (i = 0; i < CRYPTO_num_locks(); i++)
      MUTEX_CLEANUP(mutex_buf[i]);
   free(mutex_buf);
   mutex_buf = NULL;
}

For Unix and Linux, make sure you have signal handlers set in your service and/or client applications to catch broken connections (SIGPIPE):

signal(SIGPIPE, sigpipe_handle);

where, for example:

void sigpipe_handle(int x) { }

By default, clients are not required to authenticate. To support client authentication use the following:

   if (soap_ssl_server_context(&soap,
      SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION,
      "server.pem",
      "password",
      "cacert.pem",
      NULL,
      "dh512.pem",
      NULL,
      NULL
   ))
   {
      soap_print_fault(&soap, stderr);
      exit(1);
   }

This requires each client to authenticate with its certificate.
Since release version 2.8.20 SSL v3 is disabled. To enable SSL v3 together with TLS v1.0, v1.1, and v1.2 use SOAP_SSLv3_TLSv1 in soap_ssl_server_context. To use TLS v1.1 only use SOAP_TLSv1_1. To use TLS v1.2 only use SOAP_TLSv1_2. To use SSL v3 only use SOAP_SSLv3.
The cacert file and capath are optional. Either one can be specified when clients must run on non-trusted systems (capath is not used with GNUTLS). We want to avoid storing trusted certificates in the default location on the file system when that is not secure. Therefore, a flat cacert.pem file or directory can be specified to store trusted certificates.
The gSOAP distribution includes a cacerts.pem file with the certificates of all certificate authorities such as Verisign. You can use this file to verify the authentication of servers that provide certificates issued by these CAs.
The cacert.pem, client.pem, and server.pem files in the gSOAP distribution are examples of self-signed certificates. The client.pem and server.pem contain the client/server private key concatenated with the certificate. The keyfiles (client.pem and server.pem) are created by concatenating the private key PEM with the certificate PEM. The keyfile SHOULD NEVER be shared with any party. With OpenSSL, you can encrypt the keyfiles with a password to offer some protection and the password is used in the client/server code to read the keyfile. GNUTLS does not support this feature and cannot encrypt or decrypt a keyfile.
Caution: it is important that the WITH_OPENSSL macro MUST be consistently defined to compile the sources, such as stdsoap2.cpp, soapC.cpp, soapClient.cpp, soapServer.cpp, and all application sources that include stdsoap2.h or soapH.h. If the macros are not consistently used, the application will crash due to a mismatches in the declaration and access of the gSOAP context.

19.24  Secure Clients with HTTPS/SSL

To utilize HTTPS/SSL, you need to install the OpenSSL library on your platform or GNUTLS for a light-weight SSL/TLS library. After installation, compile all the sources of your application with option -DWITH_OPENSSL (or -DWITH_GNUTLS when using GNUTLS). For example on Linux:

> c++ -DWITH_OPENSSL myclient.cpp stdsoap.cpp soapC.cpp soapClient.cpp -lssl -lcrypto

or Unix:

> c++ -DWITH_OPENSSL myclient.cpp stdsoap.cpp soapC.cpp soapClient.cpp -lxnet -lsocket -lnsl -lssl -lcrypto

or you can add the following line to soapdefs.h:

#define WITH_OPENSSL

and compile with option -DWITH_SOAPDEFS_H to include soapdefs.h in your project. Alternatively, compile with GNUTLS:

> c++ -DWITH_GNUTLS myclient.cpp stdsoap.cpp soapC.cpp soapClient.cpp -lgnutls -lgcrypt -lgpg-error

A client program simply uses the prefix https: instead of http: in the endpoint URL of a service operation call to a Web Service to use encrypted transfers (if the service supports HTTPS). You need to specify the client-side key file and password of the keyfile:

soap_ssl_init(); /* init OpenSSL (skipping this or calling multiple times is OK, since the engine will init SSL automatically) */
// soap_ssl_noinit(); /* do not init OpenSSL (if SSL is already initialized elsewhere) */
if (soap_ssl_client_context(&soap,
   SOAP_SSL_DEFAULT,
   "client.pem", /* keyfile: required only when client must authenticate to server (see SSL docs on how to obtain this file) */
   "password", /* password to read the key file (not used with GNUTLS) */
   "cacerts.pem", /* cacert file to store trusted certificates (needed to verify server) */
   NULL, /* capath to directory with trusted certificates */
   NULL /* if randfile!=NULL: use a file with random data to seed randomness */
))
{
   soap_print_fault(&soap, stderr);
   exit(1);
}
soap_call_ns__mymethod(&soap, "https://domain/path/secure.cgi", "", ...);

By default, server authentication is enabled and the cacerts.pem or capath (not used with GNUTLS) must be set so that the CA certificates of the server(s) are accessible at run time. The cacerts.pem file included in the package contains the certificates of common CAs. This file must be supplied with the client, if server authentication is required. Althernatively, you can use the plugin/cacerts.h and plugin/cacerts.c code to embed CA certificates in your client code.
Other client-side SSL options are SOAP_SSL_SKIP_HOST_CHECK to skip the host name verification check and SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE to allow connecting to a host with an expired certificate. For example,


soap_ssl_init(); /* init OpenSSL (skipping this or calling multiple times is OK, since the engine will init SSL automatically) */
// soap_ssl_noinit(); /* do not init OpenSSL (if SSL is already initialized elsewhere) */
if (soap_ssl_client_context(&soap,
   SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION
    - SOAP_SSL_SKIP_HOST_CHECK,
    - SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE,
   "client.pem", /* keyfile: required only when client must authenticate to server (see SSL docs on how to obtain this file) */
   "password", /* password to read the key file (not used with GNUTLS) */
   "cacerts.pem", /* cacert file to store trusted certificates (needed to verify server) */    NULL, /* capath to directory with trusted certificates */
   NULL /* if randfile!=NULL: use a file with random data to seed randomness */
))
{
   soap_print_fault(&soap, stderr);
   exit(1);
}
soap_call_ns__mymethod(&soap, "https://domain/path/secure.cgi", "", ...);

For systems based on Microsoft windows, the WinInet module can be used instead, see mod_gsoap/gsoap_win/wininet.
Since release version 2.8.20 SSL v3 is disabled. To enable SSL v3 together with TLS v1.0, v1.1, and v1.2 use SOAP_SSLv3_TLSv1 in soap_ssl_server_context. To use TLS v1.1 only use SOAP_TLSv1_1. To use TLS v1.2 only use SOAP_TLSv1_2. To use SSL v3 only use SOAP_SSLv3.
To disable server authentication for testing purposes, use the following:

if (soap_ssl_client_context(&soap,
   SOAP_SSL_NO_AUTHENTICATION,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL
))
{
   soap_print_fault(&soap, stderr);
   exit(1);
}

This also assumes that the server does not require clients to authenticate (the keyfile is absent).
Make sure you have signal handlers set in your application to catch broken connections (SIGPIPE):

signal(SIGPIPE, sigpipe_handle);

where, for example:

void sigpipe_handle(int x) { }

Caution: it is important that the WITH_OPENSSL macro MUST be consistently defined to compile the sources, such as stdsoap2.cpp, soapC.cpp, soapClient.cpp, soapServer.cpp, and all application sources that include stdsoap2.h or soapH.h. If the macros are not consistently used, the application will crash due to a mismatches in the declaration and access of the gSOAP context. Caution: concurrent client calls MUST be made using separate soap structs copied with soap_copy from an originating struct initialized with soap_ssl_client_context. In addition, the thread initialization code discussed in Section 19.23 MUST be used to properly setup OpenSSL in a multi-threaded client application.

19.25  SSL Authentication Callbacks

The fsslauth callback function controls OpenSSL/GNUTLS authentication initialization:

Callback (function pointer)
int (*soap.fsslauth)(struct soap *soap)
Initialize the authentication information for clients and services, such as the certificate chain, password, read the key and/or DH file, generate an RSA key, and initialization of the RNG. Should return a gSOAP error code or SOAP_OK. Built-in gSOAP function: ssl_auth_init

The fsslverify callback function controls OpenSSL peer certificate verification, via internally invoking SSL_CTX_set_verify:

Callback (function pointer)
int (*soap.fssverify)(int ok, X509_STORE_CTX *store
Used to control the certificate verification behaviour when the SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION or SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION flags are specified with soap_ssl_client_context and soap_ssl_server_context. It receives two arguments: ok indicates, whether the verification of the certificate in question was passed (ok=1) or not (]blkok=0). If the callback returns 0, the verification process is immediately stopped with "verification failed" state. A verification failure alert is sent to the peer and the TLS/SSL handshake is terminated. If the callback returns 1, the verification process is continued. Built-in gSOAP function: ssl_verify_callback and ssl_verify_callback_allow_expired_certificate. These functions are used when fsslverify is initially set to NULL and were not reassigned before soap_ssl_client_context or soap_ssl_server_context are called.

19.26  SSL Certificates and Key Files

The gSOAP distribution includes a cacerts.pem file with the certificates of all certificate authorities (such as Verisign). You can use this file to verify the authentication of servers that provide certificates issued by these CAs. Just set the cafile parameter to the location of this file on your file system. Therefore, when you obtain a certifice signed by a trusted CA such as Verisign, you can simply use the cacerts.pem file to develop client applications that can verify the authenticity of your server.
Althernatively, you can use the plugin/cacerts.h and plugin/cacerts.c code to embed CA certificates in your client code.
For systems based on Microsoft windows, the WinInet module can be used instead, see the README.txt located in the package under mod_gsoap/gsoap_win/wininet.
The other .pem files in the gSOAP distribution are examples of self-signed certificates for testing purposes (cacert.pem, client.pem, server.pem). The client.pem and server.pem contain the private key and certificate of the client or server, respectively. The keyfiles (client.pem and server.pem) are created by concatenating the private key PEM with the certificate PEM. The keyfile SHOULD NEVER be shared with any party. With OpenSSL, you can encrypt the keyfiles with a password to offer some protection and the password is used in the client/server code to read the keyfile. GNUTLS does not support this feature and cannot encrypt or decrypt a keyfile.
You can also create your own self-signed certificates. There is more than one way to generate the necessary files for clients and servers. See http://www.openssl.org for information on OpenSSL and http://sial.org/howto/openssl/ca/ on how to setup and manage a local CA and http://sial.org/howto/openssl/self-signed/ on how to setup self-signed test certificates.
It is possible to convert IIS-generated certificates to PEM format with the openssl library and openssl command-line tool:

openssl x509 -in mycert.cer -inform DER -out mycert.pem -outform PEM

This converts the CRT-formatted mycert.cer to PEM-formatted mycert.pem.
Here is the simplest way to setup self-signed certificates. First you need to create a private Certificate Authority (CA). The CA is used in SSL to verify the authenticity of a given certificate. The CA acts as a trusted third party who has authenticated the user of the signed certificate as being who they say. The certificate is signed by the CA, and if the client trusts the CA, it will trust your certificate. For use within your organization, a private CA will probably serve your needs. However, if you intend use your certificates for a public service, you should probably obtain a certificate from a known CA (e.g. VeriSign). In addition to identification, your certificate is also used for encryption.
Creating certificates should be done through a CA to obtain signed certificates. But you can create your own certificates for testing purposes as follows.
  • Go to the OpenSSL bin directory (/usr/local/ssl by default and /System/Library/OpenSSL on Mac OS X)
  • There should be a file called openssl.cnf
  • Create a new directory in your home account, e.g. $HOME/CA, and copy the openssl.cnf file to this directory
  • Modify openssl.cnf by changing the 'dir' value to HOME/CA
  • Copy the README.txt, root.sh, and cert.sh scripts from the gSOAP distribution package located in the samples/ssl directory to HOME/CA
  • Follow the README.txt instructions
You now have a self-signed CA root certificate cacert.pem and a server.pem (or client.pem) certificate in PEM format. The cacert.pem certificate is used in the cafile parameter of the soap_ssl_client_context (or soap_ssl_server_context) at the client (or server) side to verify the authenticity of the peer. You can also provide a capath parameter to these trusted certificates. The server.pem (or client.pem) must be provided with the soap_ssl_server_context at the server side (or soap_ssl_client_context at the client side) together with the password you entered when generating the certificate using cert.sh to access the file. These certificates must be present to grant authentication requests by peers. In addition, the server.pem (and client.pem) include the host name of the machine on which the application runs (e.g. localhost), so you need to generate new certificates when migrating a server (or client).
Finally, you need to generate Diffie-Helmann (DH) parameters for the server if you wish to use DH instead of RSA. There are two options:
  1. Set the dhfile parameter to the numeric DH prime length in bits required (for example "1024") to let the engine generate DH parameters at initialization. This can be time consuming.
  2. Provide a file name for the dhfile parameter of soap_ssl_server_context. The file should be generated beforehand. To do so with the OpenSSL command line tool, use:

    > openssl dhparam -outform PEM -out dh.pem 512

    File dh512.pem is the output file and 512 is the number of bits used.

19.27  SSL Hardware Acceleration

You can specify a hardware engine to enable hardware support for cryptographic acceleration. This can be done once in a server or client with the following statements:

static const char *engine = "cswift"; /* engine name */
int main()
{
   ...
   ENGINE *e;
   if (!(e = ENGINE_by_id(engine)))
      fprintf(stderr, "Error finding engine %s\n", engine);
   else if (!ENGINE_set_default(e, ENGINE_METHOD_ALL))
      fprintf(stderr, "Error using engine %s\n", engine);
   ...

The following table lists the names of the hardware and software engines:

Name Description
openssl The default software engine for cryptographic operations
openbsd_dev_crypto OpenBSD supports kernel level cryptography
cswift CryptoSwift acceleration hardware
chil nCipher CHIL acceleration hardware
atalla Compaq Atalla acceleration hardware
nuron Nuron acceleration hardware
ubsec Broadcom uBSec acceleration hardware
aep Aep acceleration hardware
sureware SureWare acceleration hardware

19.28  SSL on Windows

Set the full path to libssl.lib and libcrypto.lib under the MSVC++ "Projects" menu, then choose "Link": "Object/Modules". Please make sure libssl32.dll and libeay32.dll can be loaded by gSOAP applications, thus they must be installed properly on the target machine.
If you're using compilation settings such as /MTd then link to the correct libeay32MTd.lib and ssleay32MTd.lib libraries.
Alternatively, you can use the WinInet interface available in the mod_gsoap directory of the gSOAP package. API instructions are included in the source.

19.29  Zlib Compression

To enable deflate and gzip compression with Zlib, install Zlib from http://www.zlib.org if not already installed on your system. Compile stdsoap2.cpp (or stdsoap2.c) and all your sources that include stdsoap2.h or soapH.h with compiler option -DWITH_GZIP and link your code with the Zlib library, e.g. -lz on Unix/Linux platforms.
The gzip compression is orthogonal to all transport encodings such as HTTP, SSL, DIME, and can be used with other transport layers. You can even save and load compressed XML data to/from files.
gSOAP supports two compression formats: deflate and gzip. The gzip format is used by default. The gzip format has several benefits over deflate. Firstly, gSOAP can automatically detect gzip compressed inbound messages, even without HTTP headers, by checking for the presence of a gzip header in the message content. Secondly, gzip includes a CRC32 checksum to ensure messages have been correctly received. Thirdly, gzip compressed content can be decompressed with other compression software, so you can decompress XML data saved by gSOAP in gzip format.
Gzip compression is enabled by compiling the sources with -DWITH_GZIP. To transmit gzip compressed SOAP/XML data, set the output mode flags to SOAP_ENC_ZLIB. For example:

soap_init(&soap);
...
soap_set_omode(&soap, SOAP_ENC_ZLIB); // enable Zlib's gzip
if (soap_call_ns__myMethod(&soap, ...))
...
soap_clr_omode(&soap, SOAP_ENC_ZLIB); // disable Zlib's gzip
...

This will send a compressed SOAP/XML request to a service, provided that Zlib is installed and linked with the application and the -DWITH_GZIP option was used to compile the sources. Receiving compressed SOAP/XML over HTTP either in gzip or deflate formats is automatic. The SOAP_ENC_ZLIB flag does not have to be set at the server side to accept compressed messages. Reading and receiving gzip compressed SOAP/XML without HTTP headers (e.g. with other transport protocols) is also automatic.
To control the level of compression for outbound messages, you can set the soap.z_level to a value between 1 and 9, where 1 is the best speed and 9 is the best compression (default is 6). For example

soap_init(&soap);
...
soap_set_omode(&soap, SOAP_ENC_ZLIB);
soap.z_level = 9; // best compression
...

To verify and monitor compression rates, you can use the values soap.z_ratio_in and soap.z_ratio_out. These two float values lie between 0.0 and 1.0 and express the ratio of the compressed message length over uncompressed message length.

soap_call_ns__myMethod(&soap, ...);
...
printf("Compression ratio: %f%% (in) %f%% (out)\n", 100*soap.z_ratio_out, 100*soap.z_ratio_in);
...

Note: lower ratios mean higher compression rates.
Compressed transfers require buffering the entire output message to determine HTTP message length. This means that the SOAP_IO_STORE flag is automatically set when the SOAP_ENC_ZLIB flag is set to send compressed messages. The use of HTTP chunking significantly reduces memory usage and may speed up the transmission of compressed SOAP/XML messages. This is accomplished by setting the SOAP_IO_CHUNK flag with SOAP_ENC_ZLIB for the output mode. However, some Web servers do not accept HTTP chunked request messages (even when they return HTTP chunked messages!). Stand-alone gSOAP services always accept chunked request messages.
To restrict the compression to the deflate format only, compile the sources with -DWITH_ZLIB. This limits compression and decompression to the deflate format. Only plain and deflated messages can be exchanged, gzip is not supported with this option. Receiving gzip compressed content is automatic, even in the absence of HTTP headers. Receiving deflate compressed content is not automatic in the absence of HTTP headers and requires the flag SOAP_ENC_ZLIB to be set for the input mode to decompress deflated data.
Caution: it is important that the WITH_GZIP and WITH_ZLIB macros MUST be consistently defined to compile the sources, such as stdsoap2.cpp, soapC.cpp, soapClient.cpp, soapServer.cpp, and all application sources that include stdsoap2.h or soapH.h. If the macros are not consistently used, the application will crash due to a mismatches in the declaration and access of the gSOAP context.

19.30  Client-Side Cookie Support

Client-side cookie support is optional. To enable cookie support, compile all sources with option -DWITH_COOKIES, for example:

> c++ -DWITH_COOKIES -o myclient stdsoap2.cpp soapC.cpp soapClient.cpp

or add the following line to stdsoap.h:

#define WITH_COOKIES

Client-side cookie support is fully automatic. So just (re)compile stdsoap2.cpp with -DWITH_COOKIES to enable cookie-based session control in your client.
A database of cookies is kept and returned to the appropriate servers. Cookies are not automatically saved to a file by a client. An example cookie file manager is included as an extras in the distribution. You should explicitly remove all cookies before terminating a gSOAP context by calling soap_free_cookies(soap) or by calling soap_done(soap).
To avoid "cookie storms" caused by malicious servers that return an unreasonable amount of cookies, gSOAP clients/servers are restricted to a database size that the user can limit (32 cookies by default), for example:

struct soap soap;
soap_init(&soap);
soap.cookie_max = 10;

The cookie database is a linked list pointed to by soap.cookies where each node is declared as:

struct soap_cookie
{
   char *name;
   char *value;
   char *domain;
   char *path;
   long expire; /* client-side: local time to expire; server-side: seconds to expire */
   unsigned int version;
   short secure;
   short session; /* server-side */
   short env; /* server-side: 1 = got cookie from client */
   short modified; /* server-side: 1 = client cookie was modified */
   struct soap_cookie *next;
};

Since the cookie database is linked to a soap struct, each thread has a local cookie database in a multi-threaded implementation.

19.31  Server-Side Cookie Support

Server-side cookie support is optional. To enable cookie support, compile all sources with option -DWITH_COOKIES, for example:

> c++ -DWITH_COOKIES -o myserver ...

gSOAP provides the following cookie API for server-side cookie session control:

Function
struct soap_cookie *soap_set_cookie(struct soap *soap, const char *name, const char *value, const char *domain, const char *path);
Add a cookie to the database with name name and value value. domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. If successful, returns pointer to a cookie node in the linked list, or NULL otherwise.
struct soap_cookie *soap_cookie(struct soap *soap, const char *name, const char *domain, const char *path);
Find a cookie in the database with name name and value value. domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. If successful, returns pointer to a cookie node in the linked list, or NULL otherwise.
char *soap_cookie_value(struct soap *soap, const char *name, const char *domain, const char *path);
Get value of a cookie in the database with name name. domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. If successful, returns the string pointer to the value, or NULL otherwise.
long soap_cookie_expire(struct soap *soap, const char *name, const char *domain, const char *path);
Get expiration value of the cookie in the database with name name (in seconds). domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. Returns the expiration value, or -1 if cookie does not exist.
int soap_set_cookie_expire(struct soap *soap, const char *name, long expire, const char *domain, const char *path);
Set expiration value expire of the cookie in the database with name name (in seconds). domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. If successful, returns SOAP_OK, or SOAP_EOF otherwise.
int soap_set_cookie_session(struct soap *soap, const char *name, const char *domain, const char *path);
Set cookie in the database with name name to be a session cookie. This means that the cookie will be returned to the client. (Only cookies that are modified are returned to the client). domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. If successful, returns SOAP_OK, or SOAP_EOF otherwise.
int soap_clr_cookie_session(struct soap *soap, const char *name, const char *domain, const char *path);
Clear cookie in the database with name name to be a session cookie. domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path. If successful, returns SOAP_OK, or SOAP_EOF otherwise.
void soap_clr_cookie(struct soap *soap, const char *name, const char *domain, const char *path);
Remove cookie from the database with name name. domain and path may be NULL to use the current domain and path given by soap_cookie_domain and soap_cookie_path.
int soap_getenv_cookies(struct soap *soap);
Initializes cookie database by reading the 'HTTP_COOKIE' environment variable. This provides a means for a CGI application to read cookies send by a client. If successful, returns SOAP_OK, or SOAP_EOF otherwise.
void soap_free_cookies(struct soap *soap);
Release cookie database.

The following global variables are used to define the current domain and path:

Attribute value
const char *cookie_domain MUST be set to the domain (host) of the service
const char *cookie_path MAY be set to the default path to the service
int cookie_max maximum cookie database size (default=32)

The cookie_path value is used to filter cookies intended for this service according to the path prefix rules outlined in RFC2109.
The following example server adopts cookies for session control:

int main()
{
   struct soap soap;
   int m, s;
   soap_init(&soap);
   soap.cookie_domain = "...";
   soap.cookie_path = "/"; // the path which is used to filter/set cookies with this destination
   if (argc < 2)
   {
      soap_getenv_cookies(&soap); // CGI app: grab cookies from 'HTTP_COOKIE' env var
      soap_serve(&soap);
   }
   else
   {
      m = soap_bind(&soap, NULL, atoi(argv[1]), 100);
      if (m < 0)
         exit(1);
      for (int i = 1; ; i++)
      {
         s = soap_accept(&soap);
         if (s < 0)
            exit(1);
         soap_serve(&soap);
         soap_end(&soap); // clean up
         soap_free_cookies(&soap); // remove all old cookies from database so no interference occurs with the arrival of new cookies
      }
   }
   return 0;
}
int ck__demo(struct soap *soap, ...)
{
   int n;
   const char *s;
   s = soap_cookie_value(soap, "demo", NULL, NULL); // cookie returned by client?
   if (!s)
      s = "init-value"; // no: set initial cookie value
   else 
      ... // modify 's' to reflect session control
   soap_set_cookie(soap, "demo", s, NULL, NULL);
   soap_set_cookie_expire(soap, "demo", 5, NULL, NULL); // cookie may expire at client-side in 5 seconds
   return SOAP_OK;
}

19.32  Connecting Clients Through Proxy Servers

When a client needs to connect to a Web Service through a proxy server, set the soap.proxy_host string and soap.proxy_port integer attributes of the current soap runtime context to the proxy's host name and port, respectively. For example:

struct soap soap;
soap_init(&soap);
soap.proxy_host = "proxyhostname";
soap.proxy_port = 8080;
if (soap_call_ns__method(&soap, "http://host:port/path", "action", ...))
   soap_print_fault(&soap, stderr);
else
   ...

The context attributes soap.proxy_host and soap.proxy_port keep their values through a sequence of service operation calls, so they only need to be set once.
When X-Forwarded-For headers are returned by the proxy, the header can be accessed in the soap.proxy_from string.

19.33  Bind Before Connect and Setting the Client Interface Address

To bind the client to a port before connect, set the soap.client_port to a non-negative port number:

struct soap soap;
soap_init(&soap);
soap.client_port = ...; // non-negative port number
if (soap_call_ns__method(&soap, "http://host:port/path", "action", ...))
   soap_print_fault(&soap, stderr);
else
   ...

This port number is used only once and reset to -1 (disabled). Set it again for the next call.
To set a client interface address for the connection that is an IP address of the client:

struct soap soap;
soap_init(&soap);
soap.client_interface = "..."; // IP address
if (soap_call_ns__method(&soap, "http://host:port/path", "action", ...))
   soap_print_fault(&soap, stderr);
else
   ...

This client interface address string is used only once and reset to NULL (disabled). Set it again for the next call. This feature is not available when compiling the code on windows.

19.34  FastCGI Support

To enable FastCGI support, install FastCGI and compile all sources (do not use libgsoap but compile stdsoap2.c) and your application sources with option -DWITH_FASTCGI or add

#define WITH_FASTCGI

to stdsoap2.h and recompile the project code.
Caution: Do not link against the libgsoap libraries as these are not suitable for FastCGI. Compile stdsoap2.c (or stdsoap2.cpp) instead.

19.35  How to Create gSOAP Applications With a Small Memory Footprint

To compile gSOAP applications intended for small memory devices, you may want to remove all non-essential features that consume precious code and data space. To do this, compile the gSOAP sources with -DWITH_LEAN (i.e. #define WITH_LEAN) to remove many non-essential features. The features that will be disabled are:
  • No I/O timeouts. Note that many socket operations already obey some form of timeout handling, such as a connect timeout for example.
  • No UDP support
  • No HTTP keep alive
  • No HTTP cookies
  • No HTTP authentication
  • No HTTP chunked output (but input is OK)
  • No HTTP compressed output (but input is OK when compiled with WITH_GZIP)
  • No send/recv timeouts
  • No socket flags (no soap.socket_flag, soap.connect_flag, soap.bind_flag, soap.accept_flag)
  • No canonical XML output
  • No logging
  • Limited TCP/IP and HTTP error diagnostic messages
  • No support for time_t serialization
  • No support for hexBinary XML attribute serialization (remap hexBinary to strings by adding a remap entry to typemap.dat)
Use -DWITH_LEANER to make the executable even smaller by removing DIME and MIME attachment handling, LONG64 (64 bit) serialization, wchar_t* serialization, and support for XML DOM operations. Note that DIME/MIME attachments are not essential to achieve SOAP/XML interoperability. DIME attachments are a convenient way to exchange non-text-based (i.e. binary) content, but are not required for basic SOAP/XML interoperability. Attachment requirements are predictable. That is, applications won't suddenly decide to use DIME or MIME instead of XML to exchange content.
It is safe to try to compile your application with -DWITH_LEAN, provided that your application does not rely on I/O timeouts. When no linkage error occurs in the compilation process, it is safe to assume that your application will run just fine.

19.36  How to Eliminate BSD Socket Library Linkage

The stdsoap2.c and stdsoap2.cpp gSOAP runtime libraries should be linked with a BSD socket library in the project build, e.g. winsock2 for Win32. To eliminate the need to link a socket library, you can compile stdsoap2.c (for C) and stdsoap2.cpp (for C++) with the -DWITH_NOIO macro set (i.e. #define WITH_NOIO). This eliminates the dependency on the BSD socket API, IO streams, FILE type, and errno.
As a consequence, you MUST define callbacks to replace the missing socket stack. To do so, add to your code the following definitions:

struct soap soap;
soap_init(&soap);
/* fsend is used to transmit data in blocks */
soap.fsend = my_send;
/* frecv is used to receive data in blocks */
soap.frecv = my_recv;
/* fopen is used to connect */
soap.fopen = my_tcp_connect;
/* fclose is used to disconnect */
soap.fclose = my_tcp_disconnect;
/* fclosesocket is used only to close the master socket in a server upon soap_done() */
soap.fclosesocket = my_tcp_closesocket;
/* fshutdownsocket is used after completing a send operation to send TCP FIN */
soap.fshutdownsocket = my_tcp_shutdownsocket;
/* setting fpoll is optional, leave it NULL to omit polling the server */
soap.fpoll = my_poll;
/* faccept is used only by a server application */
soap.faccept = my_accept;

These functions are supposed to provide a (minimal) transport stack. See Section 19.7 for more details on the use of these callbacks. All callback function pointers should be non-NULL, except fpoll.
You cannot use soap_print_fault and soap_print_fault_location to print error diagnostics. Instead, the value of soap.error, which contains the gSOAP error code, can be used to determine the cause of a fault.

19.37  How to Combine Multiple Client and Server Implementations into one Executable

The wsdl2h tool can be used to import multiple WSDLs and schemas at once. The service definitions are combined in one header file to be parsed by soapcpp2. It is important to assign namespace prefixes to namespace URIs using the typemap.dat file. Otherwise, wsdl2h will assign namespace prefixes ns1, ns2, and so on to the service operations and schema types. Thus, any change to a WSDL or schema may result in a new prefix assignment. For more details, please see Section 8.2.
Another approach to combine multiple client and service applications into one executable is by using C++ namespaces to structurally separate the definitions or by creating C libraries for the client/server objects as explained in subsequent sections. This is automated with wsdl2h option -q.
Both approaches are demonstrated by example in the gSOAP distribution, the samples/link (C only) and samples/link++ (C++ with C++ namespaces) examples.

19.38  How to Build a Client or Server in a C++ Code Namespace

You can use a C++ code namespace of your choice in your header file to build a client or server in that code namespace. In this way, you can create multiple clients and servers that can be combined and linked together without conflicts, which is explained in more detail in the next section (which also shows an example combining two client libraries defined in two C++ code namespaces).
Use wsdl2h option -qname to generate definitions in the C++ name namespace. This option can also be used in combination with C++ proxy and server object generation, using soapcpp2 options -i (or -j) and -p.
At most one namespace can be defined for the entire gSOAP header file. The code namespace MUST completely encapsulate the entire contents of the header file:

namespace myNamespaceName {
... gSOAP header file contents ...
}

When compiling this header file with the gSOAP soapcpp2 compiler, all type definitions, the (de)serializers for these types, and the stub/skeleton codes will be placed in this namespace. The XML namespace mapping table (saved in a .nsmap file) will not be placed in the code namespace to allow it to be linked as a global object. You can use option -n to create local XML namespace tables, see Section 9.1 (but remember that you explicitly need to initialize the soap.namespaces to point to a table at run time). The generated files are prefixed with the code namespace name instead of the usual soap file name prefix to enable multiple client/server codes to be build in the same project directory (a code namespace automatically sets the -p compiler option, see Section 9.1 for options).
Because the SOAP Header and Fault serialization codes will also be placed in the namespace, they cannot be called from the stdsoap2.cpp run time library code and are therefore rendered unusable. Therefore, these serializers are not compiled at all (enforced with #define WITH_NOGLOBAL). To add SOAP Header and Fault serializers, you MUST compile them separately as follows. First, create a new header file env.h with the SOAP Header and Fault definitions. You can leave this header file empty if you want to use the default SOAP Header and Fault. Then compile this header file with:

> soapcpp2 -penv env.h

The generated envC.cpp file holds the SOAP Header and Fault serializers and you can link this file with your client or server application.

19.39  How to Create Client/Server Libraries

The gSOAP soapcpp2 compiler produces soapClientLib.cpp and soapServerLib.cpp codes that are specifically intended for building static or dynamic client/server libraries. These codes export the stubs and skeletons, but keep all marshaling code (i.e. parameter serializers and deserializers) local (i.e.  as static functions) to avoid link symbol conflicts when combining multiple clients and/or servers into one executable. Note that it is far simpler to use the wsdl2h tool on multiple WSDL files to generate a header file that combines all service definitions. However, the approach presented in this section is useful when creating (dynamic) libraries for client and server objects, such as DLLs as described in Section 19.40.
Do not link soapClientLib.cpp or soapServerLib.cpp together with soapC.cpp, soapClient.cpp, and soapServer.cpp. The library versions already include all of the necessary definitions.
To build multiple libraries in the same project directory, you can define a C++ code namespace in your header file (see Section 19.38) or you can use soapcpp2 with option -p to rename the generated soapClientLib.cpp and soapServerLib.cpp (and associated) files. The -p option specifies the file name prefix to replace the soap prefix. The libraries don't have to be C++ codes. You can use option -c to generate C code. A clean separation of libraries can also be achieved with C++ code namespaces, see Section 19.38.
The library codes do not define SOAP Header and Fault serializers. You MUST add SOAP Header and Fault serializers to your application, which are compiled separately as follows. First, create a new header file env.h with the SOAP Header and Fault definitions. You can leave this header file empty if you want to use the default SOAP Header and Fault. Then compile this header file with:

> soapcpp2 -penv env.h

The generated envC.cpp file holds the SOAP Header and Fault serializers and you can create a (dynamic) library for it to link this code with your client or server application.
You MUST compile the stdsoap2.cpp library using -DWITH_NONAMESPACES:

> c++ -DWITH_NONAMESPACES -c stdsoap2.cpp

This omits the reference to the global namespaces table, which is nowhere to be defined since we will use XML namespaces for each client/service separately. Therefore, you MUST explicitly set the namespaces value of the gSOAP context in your code every time after initialization of the soap struct with the soap_set_namespaces(struct soap*, const struct Namespace*) function.
For example, suppose we have two clients defined in header files client1.h and client2.h. We first generate the envH.h file for the SOAP Header and Fault definitions:

> soapcpp2 -c -penv env.h

Then we generate the code for client1 and client2:

> soapcpp2 -c -n -pmyClient1 client1.h
> soapcpp2 -c -n -pmyClient2 client2.h

This generates myClient1ClientLib.c and myClient2ClientLib.c (among many other files). These two files should be compiled and linked with your application. The source code of your application should include the generated envH.h, myClient1H.h, myClient2.h files and myClient1.nsmap, myClient2.nsmap files:

#include "myClient1H.h" // include client 1 stubs
#include "myClient2H.h" // include client 2 stubs
#include "envH.h"
...
#include "myClient1H.nsmap" // include client 1 nsmap
#include "myClient2H.nsmap" // include client 2 nsmap
...
soap_init(&soap);
soap_set_namespaces(&soap, myClient1_namespaces);
... make Client 1 invocations ...
...
soap_set_namespaces(&soap, myClient2_namespaces);
... make Client 2 invocations ...

It is important to use soapcpp2 option -n, see Section 9.1, to rename the namespace tables so we can include them all without running into redefinitions.
Note: Link conflicts may still occur in the unlikely situation that identical service operation names are defined in two or more client stubs or server skeletons when these methods share the same XML namespace prefix. You may have to use C++ code namespaces to avoid these link conflicts or rename the namespace prefixes used by the service operation defined in the header files.

19.39.1  C++ Clients Example

As an example we will build a Delayed Stock Quote client library and a Currency Exchange Rate client library.
First, we create an empty header file env.h (which may contain optional SOAP Header and Fault definitions), and compile it as follows:

> soapcpp2 -penv env.h
> c++ -c envC.cpp

We also compile stdsoap2.cpp without namespaces:

> c++ -c -DWITH_NONAMESPACES stdsoap2.cpp

Note: when you forget to use -DWITH_NONAMESPACES you will get an unresolved link error for the global namespaces table. You can define a dummy table to avoid having to recompile stdsoap2.cpp.
Second, we create the Delayed Stock Quote header file specification, which may be obtained using the WSDL importer. If you want to use C++ namespaces then you need to manually add the namespace declaration to the generated header file:

namespace quote {
//gsoap ns service name: Service
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service location: http://services.xmethods.net/soap
//gsoap ns schema namespace: urn:xmethods-delayed-quotes
//gsoap ns service method-action: getQuote ""
int ns__getQuote(char *symbol, float &Result);
}

We then compile it as a library and we use option -n to rename the namespace table to avoid link conflicts later:

> soapcpp2 -n quote.h
> c++ -c quoteClientLib.cpp

If you don't want to use a C++ code namespace, you should compile quote.h "as is" with soapcpp2 option -pquote:

> soapcpp2 -n -pquote quote.h
> c++ -c quoteClientLib.cpp

Third, we create the Currency Exchange Rate header file specification:

namespace rate {
//gsoap ns service name: Service
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service location: http://services.xmethods.net/soap
//gsoap ns schema namespace: urn:xmethods-CurrencyExchange
//gsoap ns service method-action: getRate ""
int ns__getRate(char *country1, char *country2, float &Result);
}

Similar to the Quote example above, we compile it as a library and we use option -n to rename the namespace table to avoid link conflicts:

> soapcpp2 -n rate.h

Fourth, we consider linking the libraries to the main program. The main program can import the quoteServiceProxy.h and rateServiceProxy.h files to obtain client proxies to invoke the services. The proxy implementations are defined in quoteClient.cpp. The -n option also affects the generation of the C++ proxy codes to ensure that the gSOAP context is properly initialized with the appropriate namespace table (so you don't have to initialize explicitly - this feature is only available with C++ proxy and server object classes).

#include "quoteServiceProxy.h" // get quote Service proxy
#include "rateServiceProxy.h" // get rate Service proxy
#include "quote.nsmap" // get quote namespace bindings
#include "rate.nsmap" // get rate namespace bindings
int main(int argc, char *argv[])
{
   if (argc < = 1)
   {
      std::cerr << "Usage: main ticker [currency]" << std::endl
      exit(0);
   }
   quote::Service quote;
   float q;
   if (quote.getQuote(argv[1], q)) // get quote
      soap_print_fault(quote.soap, stderr);
   else
   {
      if (argc > 2)
      {
         rate::Service rate;
         float r;
         if (rate.getRate("us", argv[2], r)) // get rate in US dollars
            soap_print_fault(rate.soap, stderr);
         else
            q *= r; // convert the quote
      }
      std::cout << argv[1] << ": " << q << std::endl;
   }
   return 0;
}

Compile and link this application with stdsoap2.o, envC.o, quoteServerProxy.o, and rateServerProxy.o.
To compile and link a server object is very similar. For example, assume that we need to implement a calculator service and we want to create a library for it.

namespace calc {
//gsoap ns service name: Service
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service location: http://www.cs.fsu.edu/~engelen/calc.cgi
//gsoap ns schema namespace: urn:calc
int ns__add(double a, double b, double &result);
int ns__sub(double a, double b, double &result);
int ns__mul(double a, double b, double &result);
int ns__div(double a, double b, double &result);
}

We compile this with:

> soapcpp2 -n calc.h

The effect of the -n option is that it creates local namespace tables, and a modified calcServiceObject.h server class definitions that properly initialize the gSOAP run time with the table.

#include "calcServiceObject.h" // get Service object
#include "calc.nsmap" // get calc namespace bindings
...
calc::Service calc;
calc.serve(); // calls request dispatcher to invoke one of the functions below
...
int calc::Service::add(double a, double b, double &result);
{ result = a + b; returnSOAP_OK; }
int calc::Service::sub(double a, double b, double &result);
{ result = a - b; returnSOAP_OK; }
int calc::Service::mul(double a, double b, double &result);
{ result = a * b; returnSOAP_OK; }
int calc::Service::div(double a, double b, double &result);
{ result = a / b; returnSOAP_OK; }

In fact, the calc::Service class is derived from the struct soap. So the context is available as this, which can be passed to all gSOAP functions that require a soap struct context.
The example above serves requests over stdin/out. Use the bind and accept calls to create a stand-alone server to service inbound requests over sockets, see 7.2.3.

19.39.2  C Clients Example

This is the same example as above, but the clients are build with pure C.
We create a env.h that contains the joint SOAP Header and SOAP Fault definitions. You may have to copy-paste these from the other header files. Then, compile it as follows:

> soapcpp2 -c -penv env.h
> cc -c envC.c

We also compile stdsoap2.c without namespaces:

> cc -c -DWITH_NONAMESPACES stdsoap2.c

Second, we create the Delayed Stock Quote header file specification, which may be obtained using the WSDL importer.

//gsoap ns service name: Service
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service location: http://services.xmethods.net/soap
//gsoap ns schema namespace: urn:xmethods-delayed-quotes
//gsoap ns service method-action: getQuote ""
int ns__getQuote(char *symbol, float *Result);

We compile it as a library and we use options -n and -p to rename the namespace table to avoid link conflicts:

> soapcpp2 -c -n -pquote quote.h
> cc -c quoteClientLib.c

Third, we create the Currency Exchange Rate header file specification:

//gsoap ns service name: Service
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service location: http://services.xmethods.net/soap
//gsoap ns schema namespace: urn:xmethods-CurrencyExchange
//gsoap ns service method-action: getRate ""
int ns__getRate(char *country1, char *country2, float *Result);

We compile it as a library and we use options -n and -p to rename the namespace table to avoid link conflicts:

> soapcpp2 -c -n -prate rate.h
> cc -c rateClientLib.c

The main program is:

#include "quoteStub.h" // get quote Service stub
#include "rateStub.h" // get rate Service stub
#include "quote.nsmap" // get quote namespace bindings
#include "rate.nsmap" // get rate namespace bindings
int main(int argc, char *argv[])
{
   if (argc < = 1)
   {
      fprintf(stderr, "Usage: main ticker [currency]\n");
      exit(0);
   }
   struct soap soap;
   float q;
   soap_init(&soap);
   soap_set_namespaces(&soap, quote_namespaces);
   if (soap_call_ns__getQuote(&soap, "http://services.xmethods.net/soap", "", argv[1], &q)) // get quote
      soap_print_fault(&soap, stderr);
   else
   {
      if (argc > 2)
      {
         soap_set_namespaces(&soap, rate_namespaces);
         float r;
         if (soap_call_ns__getRate(&soap, "http://services.xmethods.net/soap", "", "us", argv[2], &r)) // get rate in US dollars
            soap_print_fault(&soap, stderr);
         else
            q *= r; // convert the quote
      }
      printf("%s: %f \n", argv[1], q);
   }
   return 0;
}

Compile and link this application with stdsoap2.o, envC.o, quoteClientLib.o, and rateClientLib.o.
To compile and link a server library is very similar. Assuming that the server is named "calc" (as specified with options -n and -p), the application needs to include the calcStub.h file, link the calcServerLib.o file, and call calc_serve(&soap) function at run time.

19.39.3  C Services Chaining Example

We build a C application for multiple services served on one port.
We create a env.h that contains the joint SOAP Header and SOAP Fault definitions. You may have to copy-paste these from the other header files. Then, compile it as follows:

> soapcpp2 -c -penv env.h
> cc -c envC.c

We also compile stdsoap2.c without namespaces:

> cc -c -DWITH_NONAMESPACES stdsoap2.c

Say we have a service definition in quote.h. We compile it as a library and we use options -n and -p to rename the namespace table to avoid link conflicts:

> soapcpp2 -c -n -pquote quote.h
> cc -c quoteClientLib.c

We do the same for a service definition in rate.h:

> soapcpp2 -c -n -prate rate.h
> cc -c rateClientLib.c

To serve both the quote and rate services on the same port, we chain the service dispatchers as follows:

struct soap *soap = soap_new();
soap_bind(soap, NULL, 8080, 100);
soap_accept(soap);
if (soap_begin_serve(soap))
   soap_send_fault(&abc); // send fault to client
else if (quote_serve_request(soap) == SOAP_NO_METHOD)
{
   if (rate_serve_request(soap))       soap_send_fault(soap); // send fault to client
}
else if (soap.error)
   soap_send_fault(soap); // send fault to client
soap_destroy(soap);
soap_end(soap);
soap_free(soap);

This chaining can be arbitrarily deep. When the previous request fails with a SOAP_NO_METHOD then next request dispatcher can be tried.
The server should also define the service operations:

int ns__getQuote(struct soap *soap, char *symbol, float *Result);
{ *Result = ... ;
   return SOAP_OK;
}
int ns__getRate(struct soap *soap, char *country1, char *country2, float *Result);
{ *Result = ... ;
   return SOAP_OK;
}

19.40  How to Create DLLs

19.40.1  Create the Base stdsoap2.dll

First, create a new header file env.h with the SOAP Header and Fault definitions. You can leave this header file empty if you want to use the default SOAP Header and Fault. Then compile this header file with:

> soapcpp2 -penv env.h

The generated envC.cpp file holds the SOAP Header and Fault serializers, which need to be part of the base library functions. The SOAP Header and Fault structures are generated by wsdl2h and are also located in the .h files for plugins such as wsse.h. You should copy these Header and Fault structures into env.h to ensure processing by these plugins succeeds.
The next step is to create stdsoap2.dll which consists of the file stdsoap2.cpp and envC.cpp and optionally the plugins you want to use such as wsseapi.c (rename to .cpp to avoid warnings). This DLL contains all common functions needed for all other clients and servers based on gSOAP. Compile envC.cpp and stdsoap2.cpp into stdsoap2.dll using the compiler option -DWITH_NONAMESPACES and the MSVC Pre-Processor definitions SOAP_FMAC1=__declspec(dllexport), SOAP_FMAC3=__declspec(dllexport), and the SOAP_STD_EXPORTS macro set as shown below from the MSVC command prompt:

C: cl /c /I. /EHsc /DWITH_NONAMESPACES /DSOAP_FMAC1=__declspec(dllexport) /DSOAP_FMAC3=__declspec(dllexport) /DSOAP_STD_EXPORTS envC.cpp stdsoap2.cpp
C: link /LIBPATH ws2_32.lib /OUT:mygsoap.dll /DLL envC.obj stdsoap2.obj

Note: as of gSOAP 2.8.30 and later, the DLL export macros shown here are all set with one pre-processor definition SOAP_STD_EXPORTS.
Alternatively, you can compile with -DWITH_SOAPDEFS_H and put the macro definitions in soapdefs.h. This exports all functions which are preceded by the macro SOAP_FMAC1 in the soapcpp2.cpp source file and macro SOAP_FMAC3 in the envC.cpp source file.
Finally, note that the gSOAP distribution package contains a number of .c files. Mixing .c with .cpp files is not recommended with Visual Studio and will lead to runtime errors when building DLLs. Therefore, always rename .c files to .cpp files when creating DLLs.

19.40.2  Creating Client and Server DLLs

Compile the soapClientLib.cpp and soapServerLib.cpp sources as DLLs by using the MSVC Pre-Processor definitions SOAP_FMAC5=__declspec(dllexport) and SOAP_CMAC=__declspec(dllexport), and by using the C++ compiler option -DWITH_NONAMESPACES. All of these macros are set as a shorthand with one pre-processor definition SOAP_STD_EXPORTS (requires gSOAP 2.8.30 or later).
This DLL links to stdsoap2.dll.
To create multiple DLLs in the same project directory, you SHOULD use option -p to rename the generated soapClientLib.cpp and soapServerLib.cpp (and associated) files. The -p option specifies the file name prefix to replace the soap prefix. A clean separation of libraries can also be achieved with C++ namespaces, see Section 19.38.
Unless you use the client proxy and server object classes (soapXProxy.h and soapXObject.h where X is the name of the service), all client and server applications MUST explicitly set the namespaces value of the gSOAP context:

soap_init(&soap);
soap_set_namespaces(&soap, namespaces);

where the namespaces[] table should be defined in the client/server source. These tables are generated in the .nsmap files. You can rename the tables using option -n, see Section 9.1.

19.41  gSOAP Plug-ins

The gSOAP plug-in feature enables a convenient extension mechanism of gSOAP capabilities. When the plug-in registers with gSOAP, it has full access to the run-time settings and the gSOAP function callbacks. Upon registry, the plug-in's local data is associated with the gSOAP run-time. By overriding gSOAP's function callbacks with the plug-in's function callbacks, the plug-in can extend gSOAP's capabilities. The local plug-in data can be accessed through a lookup function, usually invoked within a callback function to access the plug-in data. The registry and lookup functions are:

int soap_register_plugin_arg(struct soap *soap, int (*fcreate)(struct soap *soap, struct soap_plugin *p, void *arg), void *arg)
void* soap_lookup_plugin(struct soap*, const char*);

Other functions that deal with plug-ins are:

int soap_copy(struct soap *soap);
void soap_done(struct soap *soap);

The soap_copy function returns a new dynamically allocated gSOAP context that is a copy of another, such that no data is shared between the copy and the original context. The soap_copy function invokes the plug-in copy callbacks to copy the plug-ins' local data. The soap_copy function returns a gSOAP error code or SOAP_OK. The soap_done function de-registers all plugin-ins, so this function should be called to cleanly terminate a gSOAP run-time context.
An example will be used to illustrate these functions. This example overrides the send and receive callbacks to copy all messages that are sent and received to the terminal (stderr).
First, we write a header file plugin.h to define the local plug-in data structure(s) and we define a global name to identify the plug-in:

#include "stdsoap2.h"
#define PLUGIN_ID "PLUGIN-1.0" // some name to identify plugin
struct plugin_data // local plugin data
{
   int (*fsend)(struct soap*, const char*, size_t); // to save and use send callback
   size_t (*frecv)(struct soap*, char*, size_t); // to save and use recv callback
};
int plugin(struct soap *soap, struct soap_plugin *plugin, void *arg);

Then, we write the plugin registry function and the callbacks:

#include "plugin.h"
static const char plugin_id[] = PLUGIN_ID; // the plugin id
static int plugin_init(struct soap *soap, struct plugin_data *data);
static int plugin_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src);
static void plugin_delete(struct soap *soap, struct soap_plugin *p);
static int plugin_send(struct soap *soap, const char *buf, size_t len);
static size_t plugin_recv(struct soap *soap, char *buf, size_t len);
// the registry function:
int plugin(struct soap *soap, struct soap_plugin *p, void *arg)
{
   p->id = plugin_id;
   p->data = (void*)malloc(sizeof(struct plugin_data));
   p->fcopy = plugin_copy; /* optional: when set the plugin must copy its local data */
   p->fdelete = plugin_delete;
   if (p->data)
      if (plugin_init(soap, (struct plugin_data*)p->data))
      {
         free(p->data); // error: could not init
         return SOAP_EOM; // return error
      }
   return SOAP_OK;
}
static int plugin_init(struct soap *soap, struct plugin_data *data)
{
   data->fsend = soap->fsend; // save old recv callback
   data->frecv = soap->frecv; // save old send callback
   soap->fsend = plugin_send; // replace send callback with new
   soap->frecv = plugin_recv; // replace recv callback with new
   return SOAP_OK;
}
// copy plugin data, called by soap_copy() // This is important: we need a deep copy to avoid data sharing by two run-time contexts
static int plugin_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src)
{
   if (!(dst->data = (struct plugin_data*)malloc(sizeof(struct plugin_data))))
      return SOAP_EOM;
   *dst->data = *src->data;
   return SOAP_OK;
}
// plugin deletion, called by soap_done()
static void plugin_delete(struct soap *soap, struct soap_plugin *p)
{ free(p->data); // free allocated plugin data
}
// the new send callback
static int plugin_send(struct soap *soap, const char *buf, size_t len)
{
   struct plugin_data *data = (struct plugin_data*)soap_lookup_plugin(soap, plugin_id); // fetch plugin's local data
   fwrite(buf, len, 1, stderr); // write message to stderr
   return data->fsend(soap, buf, len); // pass data on to old send callback
}
// the new receive callback
static size_t plugin_recv(struct soap *soap, char *buf, size_t len)
{
   struct plugin_data *data = (struct plugin_data*)soap_lookup_plugin(soap, plugin_id); // fetch plugin's local data
   size_t res = data->frecv(soap, buf, len); // get data from old recv callback
   fwrite(buf, res, 1, stderr);
   return res;
}

The fdelete callback of struct soap_plugin MUST be set to register the plugin. It is the responsibility of the plug-in to handle registry (init), copy, and deletion of the plug-in data and callbacks.
A plugin is copied with the soap_copy() call. This function copies a soap struct and the chain of plugins. It is up to the plugin implementation to share the plugin data or not:
  1. if the fcopy() callback is set by the plugin initialization, this callback will be called to allow the plugin to copy its local data upon a soap_copy() call. When soap_done() is called on the soap struct copy, the fdelete() callback is called for deallocation and cleanup of the local data.
  2. if the fcopy() callback is not set, then the plugin data will be shared (i.e. the data pointer points to the same address). The fdelete() callback will not be called upon a soap_done() on a copy of the soap struct. The fdelete() callback will be called for the original soap struct with which the plugin was registered.
The example plug-in should be used as follows:

struct soap soap;
soap_init(&soap);
soap_register_plugin(&soap, plugin);
...
soap_done(&soap);

Note: soap_register_plugin(...) is an alias for soap_register_plugin_arg(..., NULL). That is, it passes NULL as an argument to plug-in's registry callback.
A number of example plug-ins are included in the gSOAP package's plugin directory. Some of these plug-ins are discussed.

19.41.1  The Message Logging and Statistics Plug-in

The message logging and access statistics plug-in can be used to selectively log inbound and outbound messages to a file or stream. It also keeps access statistics to log the total number of bytes sent and received.
To use the plug-in, compile and link your application with logging.c located in the plugin directory of the package. To enable the plug-in in your code, register the plug-in and set the streams as follows:

#include "logging.h"
size_t bytes_in;
size_t bytes_out;
...
if (soap_register_plugin(&soap, logging))
   soap_print_fault(&soap, stderr); // failed to register
...
soap_set_logging_inbound(&soap, stdout);
soap_set_logging_outbound(&soap, stdout);
... process messages ...
soap_set_logging_inbound(&soap, NULL); // disable logging
soap_set_logging_outbound(&soap, NULL); // disable logging
soap_get_logging_stats(&soap, &bytes_out, &bytes_in);

If you use soap_copy to copy the soap struct with the plug-in, the plug-in's data will be shared by the copy. Therefore, the statistics are not 100% guaranteed to be accurate for multi-threaded services since race conditions on the counters may occur. Mutex is not used to update the counters to avoid introducing expensive synchronization points. If 100% server-side accuracy is required, add mutex at the points indicated in the logging.c code.

19.41.2  RESTful Client-Side API

The soapcpp2 tool generates the following functions for client-side REST operations:
soap_PUT_Name(struct soap *soap, const char *URL, Type* data) REST PUT XML of type Type to the endoint at the specified URL.
soap_POST_send_Name(struct soap *soap, const char *URL, Type* data) REST POST send XML of type Type to the endoint at the specified URL, which MUST be followed by a REST POST receive (see below) to receive response data.
soap_GET_Name(struct soap *soap, const char *URL, Type* data) REST GET XML of type Type from the endoint at the specified URL.
soap_POST_recv_Name(struct soap *soap, Type* data) REST POST receive XML of type Type after REST POST send.
The REST POST operation is a two-step process, first a POST send of the data followed by a POST receive of the response data.

19.41.3  RESTful Server-Side API: The HTTP GET Plug-in

Server-side use of RESTful HTTP GET operations is supported with the HTTP GET plug-in plugin/httpget.c.
The HTTP GET plug-in allows your server to handle RESTful HTTP GET requests and at the same time still serve SOAP-based POST requests. The plug-in provides support to client applications to issue HTTP GET operations to a server.
Note that HTTP GET requests can also be handled at the server side with the fget callback, see Section 19.7. However, the HTTP GET plug-in also keeps statistics on the number of successful POST and GET exchanges and failed operations (HTTP faults, SOAP Faults, etc.). It also keeps hit histograms accumulated for up to a year of runtime.
To use the plug-in, compile and link your application with httpget.c located in the plugin directory of the package. To enable the plug-in in your code, register the plug-in with your HTTP GET handler function as follows:

#include "httpget.h"
...
if (soap_register_plugin_arg(&soap, httpget, (void*)my_http_get_handler))
   soap_print_fault(&soap, stderr); // failed to register
...
struct http_get_data *httpgetdata;
httpgetdata = (struct http_get_data*)soap_lookup_plugin(&soap, http_get_id);
if (!httpgetdata)
   ... // if the plug-in registered OK, there is certainly data but can't hurt to check
... process messages ...
size_t get_ok = httpgetdata->stat_get;
size_t post_ok = httpgetdata->stat_post;
size_t errors = httpgetdata->stat_fail;
...
time_t now = time(NULL);
struct tm *T;
T = localtime(&now);
size_t hitsthisminute = httpgetdata->min[T->tm_min];
size_t hitsthishour = httpgetdata->hour[T->tm_hour];
size_t hitstoday = httpgetdata->day[T->tm_yday];

An HTTP GET handler can simply produce some HTML content, or any other type of content by sending data:

int my_http_get_handler(struct *soap)
{
   soap->http_content = "text/html";
   soap_response(soap, SOAP_FILE);
   soap_send(soap, «html>Hello</html>");
   soap_end_send(soap);
   return SOAP_OK; // return SOAP_OK or HTTP error code, e.g. 404
}

If you use soap_copy to copy the soap struct with the plug-in, the plug-in's data will be shared by the copy. Therefore, the statistics are not 100% guaranteed to be accurate for multi-threaded services since race conditions on the counters may occur. Mutex is not used to update the counters to avoid introducing expensive synchronization points. If 100% server-side accuracy is required, add mutex at the points indicated in the httpget.c code.
The client-side use of HTTP GET is provided by the soap_get_connect operation. To receive a SOAP/XML (response) message ns:methodResponse, use:

#include "httpget.h"
...
soap_register_plugin(&soap, http_get);
...
if (soap_get_connect(&soap, endpoint, action))
   ... connect error ...
else if (soap_recv_ns__methodResponse(&soap, ... params ...))
   ... error ...
else
   ... ok ...
soap_destroy(&soap);
soap_end(&soap);
soap_done(&soap);

To receive any HTTP Body data into a buffer, use:

#include "httpget.h"
...
char *response = NULL;
soap_register_plugin(&soap, http_get);
...
if (soap_get_connect(&soap, endpoint, NULL))
   ... connect error ...
else if (soap_begin_recv(&soap))
   ... error ...
else
   response = soap_get_http_body(&soap);
soap_end_recv(&soap);
... use the 'response' string (NULL indicates no body or error)
soap_destroy(&soap);
soap_end(&soap);
soap_done(&soap);

19.41.4  RESTful Server-Side API: The HTTP POST Plug-in

Server-side use of RESTful HTTP POST, PUT, and DELETE operations are supported with the HTTP POST plug-in plugin/httppost.c.
The HTTP POST plug-in allows your server to handle RESTful HTTP POST requests and at the same time still serve SOAP-based POST requests. The plug-in also provides support for client applications to issue HTTP POST operations to a server.
To simplify the server-side handling of POST requests, handlers can be associated with media types:

struct http_post_handlers my_handlers[] =
{ { "image/jpg", jpeg_handler },
   { "image/ *", image_handler },
   { "text/html", html_handler },
   { "text/ *", text_handler },
   { "text/ *;*", text_handler },
   { "POST", generic_POST_handler },
   { "PUT", generic_PUT_handler },
   { "DELETE", generic_DELETE_handler },
   { NULL }
};

Note that '*' can be used as a wildcard and some media types may have optional parameters (after ';'). The handlers are functions that will be invoked when a POSTed request message matching media type is send to the server.
An example image handler that checks the specific image type:

int image_handler(struct soap *soap)
{ const char *buf;
   size_t len;
   // if necessary, check type in soap->http_content
   if (soap->http_content && !soap_tag_cmp(soap->http_content, "image/gif")
      return 404; // HTTP error 404
   if (soap_http_body(soap, &buf, &len) != SOAP_OK)
      return soap->error;
   // ... now process image in buf
   // reply with empty HTTP OK response:
   soap_response(soap, SOAP_OK);
   soap_end_send(soap);
   return SOAP_OK;
}

The HTTP POST plug-in provides a soap_http_body operation as illustrated above to copy the HTTP Body content into a buffer.
The above example returns HTTP OK. If content is supposed to be returned, then use:

   soap->http_content = "image/jpeg"; // a jpeg image to return back
   soap_response(soap, SOAP_FILE); // SOAP_FILE sets custom http content
   soap_send_raw(soap, buf, len); // send image
   soap_end_send(soap);

For client applications to use HTTP POST, use the soap_post_connect operation:

char *buf; // holds the HTTP request/response body data
size_t len; // length of data
...
if (soap_post_connect(soap, "URL", "SOAP action or NULL", "media type")
   || soap_send_raw(soap, buf, len);
   || soap_end_send(soap))
   ... error ...
if (soap_begin_recv(&soap)
   || soap_http_body(&soap, &buf, &len)
   || soap_end_recv(&soap))
   ... error ...
// ... use buf[0..len-1]
soap_end(soap);

Similarly, soap_put_connect and soap_delete_connect commands are provided for PUT and DELETE handling.

19.41.5  The HTTP MD5 Checksum Plug-in

The HTTP MD5 plug-in works in the background to automatically verify the content of messages using MD5 checksums. With the plug-in, messages can be transferred over (trusted but) unreliable connections. The plug-in can be used on the client side and server side.
To use the plug-in, compile and link your application with httpmd5.c and md5evp.c located in the plugin directory of the package. The md5evp.c implementation uses the EVP interface to compute MD5 checksums with OpenSSL (compiled with -DWITH_OPENSSL).
To enable the plug-in in your code, register the plug-in as follows:

#include "httpmd5.h"
...
if (soap_register_plugin(&soap, http_md5))
   soap_print_fault(&soap, stderr); // failed to register

Once registered, MD5 checksums are produced for all outbound messages. Inbound messages with MD5 checksums in the HTTP header are automatically verified.
The plug-in requires you to set the SOAP_IO_STORE flag when sending SOAP with attachments:

#include "httpmd5.h"
...
struct soap soap;
soap_init1(&soap, SOAP_IO_STORE);
if (soap_register_plugin(&soap, http_md5)
   soap_print_fault(&soap, stderr); // failed to register
... now safe to send SOAP with attachments ...

Unfortunately, this eliminates streaming.

19.41.6  The HTTP Digest Authentication Plug-in

The HTTP digest authentication plug-in enables a more secure authentication scheme compared to basic authentication. HTTP basic authentication sends unencrypted userids and passwords over the net, while digest authentication does not exchange passwords but exchanges checksums of passwords (and other data such as nonces to avoid replay attacks). For more details, please see RFC 2617.
The HTTP digest authentication can be used next to the built-in basic authentication, or basic authentication can be rejected to tighten security. The server must have a database with userid's and passwords (in plain text form). The client, when challenged by the server, checks the authentication realm provided by the server and sets the userid and passwords for digest authentication. The client application can temporarily store the userid and password for a sequence of message exchanges with the server, which is faster than repeated authorization challenges and authentication responses.
At the client side, the plug-in is registered and service invocations are checked for authorization challenges (HTTP error code 401). When the server challenges the client, the client should set the userid and password and retry the invocation. The client can determine the userid and password based on the authentication realm part of the server's challenge. The authentication information can be temporarily saved for multiple invocations.
Client-side example:

#include "httpda.h"
...
if soap_register_plugin(&soap, http_da))
   soap_print_fault(&soap, stderr); // failed to register
...
if (soap_call_ns__method(&soap, ...) != SOAP_OK)
{
   if (soap.error == 401) // challenge: HTTP authentication required
   {
      if (!strcmp(soap.authrealm, authrealm)) // determine authentication realm       {
         struct http_da_info info; // to store userid and passwd
         http_da_save(&soap, &info, authrealm, userid, passwd); // set userid and passwd for this realm
         if (soap_call_ns__method(&soap, ...) == SOAP_OK) // retry
         { ...
            soap_end(&soap); // userid and passwd were deallocated
            http_da_restore(&soap, &info); // restore userid and passwd
            if (!soap_call_ns__method(&soap, ...) == SOAP_OK) // another call
               ...
            http_da_release(&soap, &info); // remove userid and passwd

This code supports both basic and digest authentication.
The server can challenge a client using HTTP code 401. With the plug-in, HTTP digest authentication challenges are send. Without the plug-in, basic authentication challenges are send.
Each server method can implement authentication as desired and may enforce digest authentication or may also accept basic authentication responses. To verify digest authentication responses, the server should compute and compare the checksums using the plug-in's http_da_verify_post function for HTTP POST requests (and http_da_verify_get for HTTP GET requests with the HTTP GET plugin) as follows:

#include "httpda.h"
...
if (soap_register_plugin(&soap, http_da))
   soap_print_fault(&soap, stderr); // failed to register
...
soap_serve(&soap);
...
int ns__method(struct soap *soap, ...)
{
   if (soap->userid && soap->passwd) // client used basic authentication
   { // may decide not to handle, but if ok then go ahead and compare info:
      if (!strcmp(soap->userid, userid) && !strcmp(soap->passwd, passwd))
      { ... handle request ...
         return SOAP_OK;
      }
   }
   else if (soap->authrealm && soap->userid) // Digest authentication
   {
      passwd = ... // database lookup on userid and authrealm to find passwd
      if (!strcmp(soap->authrealm, authrealm) && !strcmp(soap->userid, userid))
      {
         if (!http_da_verify_post(soap, passwd))
         { ... handle request ...
            return SOAP_OK;
         }
      }
   }
   soap->authrealm = authrealm; // set realm for challenge
   return 401; // Not authorized, challenge digest authentication
}

For more details, including how to configure HTTP Digest authentication for proxies, please see the doc/httpda/html/index.html documentation in the gSOAP package.

19.41.7  The WS-Addressing Plug-in

The WSA WS-Addressing plug-in and the source code are extensively documented in the doc/wsa directory of the gSOAP package. Please refer to the documentation included in the package.
The plug-in code is located in the plugin directory:

wsaapi.h and wsaapi.c WS-Addressing plugin (C and C++)

To enable WS-Addressing 2005 (and support for 8/2004), the service definitions header file for soapcpp2 should include the following imports:

#import "import/wsa5.h"

This imports the SOAP header elements required by WS-Addressing.
For more details, please see the doc/wsa/html/index.html documentation in the gSOAP package.

19.41.8  The WS-ReliableMessaging Plug-in

The WSRM WS-ReliableMessaging plug-in and the source code are extensively documented in the doc/wsrm directory of the gSOAP package. Please refer to the documentation included in the package.
The plug-in code is located in the plugin directory:

wsrmapi.h and wsrmapi.c WS-ReliableMessaging plugin (C and C++)

Also needed are:

threads.h and threads.c Multithreading and locking support

To enable WS-ReliableMessaging, the service definitions header file for soapcpp2 should include the following imports:

#import "import/wsrm.h"
#import "import/wsa5.h"

This imports the SOAP header elements required by WS-ReliableMessaging.
For more details, please see the doc/wsrm/html/index.html documentation in the gSOAP package.

19.41.9  The WS-Security Plug-in

The WSSE WS-Security plug-in and the source code are extensively documented in the doc/wsse directory of the gSOAP package. Please refer to the documentation included in the package for details.
The plug-in code is located in the plugin directory:

wsseapi.h and wsseapi.c WS-Security plugin (C and C++)

Also needed are:

smdevp.h and smdevp.c Streaming XML signature and message digest engine
mecevp.h and mecevp.c Streaming XML encryption engine
threads.h and threads.c Multithreading and locking support

To enable WS-Secrutiy, the service definitions header file for soapcpp2 should include the following imports:

#import "import/wsse.h"

This imports the SOAP header elements required by WS-Security.
For more details, please see the doc/wsse/html/index.html documentation in the gSOAP package.

19.41.10  WS-Discovery

The WS-Discovery implementation is documented in the doc/wsdd directory of the gSOAP package. Please refer to the documentation included in the package for details.
Basically, to add WS-Discovery support the following event handlers must be defined and linked:

void wsdd_event_Hello(struct soap *soap,
unsigned int InstanceId,
const char *SequenceId,
unsigned int MessageNumber,
const char *MessageID,
const char *RelatesTo,
const char *EndpointReference,
const char *Types,
const char *Scopes,
const char *MatchBy,
const char *XAddrs,
unsigned int MetadataVersion)



void wsdd_event_Bye(struct soap *soap,
unsigned int InstanceId,
const char *SequenceId,
unsigned int MessageNumber,
const char *MessageID,
const char *RelatesTo,
const char *EndpointReference,
const char *Types,
const char *Scopes,
const char *MatchBy,
const char *XAddrs,
unsigned int MetadataVersion)



soap_wsdd_mode wsdd_event_Probe(struct soap *soap,
const char *MessageID,
const char *ReplyTo,
const char *Types,
const char *Scopes,
const char *MatchBy,
struct wsdd__ProbeMatchesType *ProbeMatches)



void wsdd_event_ProbeMatches(struct soap *soap,
unsigned int InstanceId,
const char *SequenceId,
unsigned int MessageNumber,
const char *MessageID,
const char *RelatesTo,
struct wsdd__ProbeMatchesType *ProbeMatches)



soap_wsdd_mode wsdd_event_Resolve(struct soap *soap,
const char *MessageID,
const char *ReplyTo,
const char *EndpointReference,
struct wsdd__ResolveMatchesType *ResolveMatches)



void wsdd_event_ResolveMatches(struct soap *soap,
unsigned int InstanceId,
const char *SequenceId,
unsigned int MessageNumber,
const char *MessageID,
const char *RelatesTo,
const char *EndpointReference,
const char *Types,
const char *Scopes,
const char *MatchBy,
const char *XAddrs,
unsigned int MetadataVersion)

These event handlers will be invoked when inbound WS-Discovery messages arrive using:


if (!soap_valid_socket(soap_bind(soap, NULL, port, 100)))
   .. error
if (soap_wsdd_listen(soap, timeout))
   ... error

which will listen for timeout seconds to inbound WS-Discovery messages on a port and dispatches them to the event handlers. A negative timeout is measured in ns.



File translated from TEX by TTHgold, version 4.00.
On 15 Jan 2018, 13:35.
gsoap-2.8.60/gsoap/doc/dom/0000755000175000017500000000000013234023226014712 5ustar ellertellertgsoap-2.8.60/gsoap/doc/dom/Doxyfile0000644000175000017500000002325713227173553016444 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Level-2 DOM v5" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../import/dom.h ../../dom.cpp ../../samples/dom/dom2calc.cpp ../../samples/dom/README.md FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = NO MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/README.txt0000644000175000017500000000026313227173554015646 0ustar ellertellert To browse the documentation, open the index.html file in a browser. Or you can navigate to https://www.genivia.com/docs.html for the latest documentation and software updates. gsoap-2.8.60/gsoap/doc/ios/0000755000175000017500000000000013234023226014725 5ustar ellertellertgsoap-2.8.60/gsoap/doc/ios/Doxyfile0000644000175000017500000002324313227173553016452 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "gSOAP iOS" PROJECT_NUMBER = "2.8 Stable" OUTPUT_DIRECTORY = PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../ios_plugin/README.md ../../ios_plugin/gsoapios.h ../../ios_plugin/gsoapios.mm FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/genivia_tabs.css0000644000175000017500000000320113227173553017307 0ustar ellertellert.tab_home { text-align: center; padding-top: 5px; padding-right: 10px; padding-left: 10px; font-size: 18px; } .tab_home a { color: #808080; text-decoration: none; } .tab_home a:hover { color: #D71E1E; text-decoration: none; } .tabs, .tabs2, .tabs3 { /* background-image: url('tab_b.png'); */ background: #c0504d; width: 90%; z-index: 101; font-size: 16px; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; padding-left: 10%; } .tabs2 { font-size: 12px; } .tabs3 { font-size: 10px; } .tablist { margin: 0; padding: 0; display: table; } .tablist li { float: left; display: table-cell; /* background-image: url('tab_b.png'); */ line-height: 36px; list-style: none; } .tablist a { display: block; /* padding: 0 20px; */ padding: 6px 20px 6px 20px; /* background-image:url('tab_s.png'); font-weight: bold; background-repeat:no-repeat; background-position:right; color: #283A5D; */ color: rgba(255, 255, 255, 0.9); /* text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); */ text-decoration: none; outline: none; } .tabs3 .tablist a { padding: 0 10px; } .tablist a:hover { /* background-image: url('tab_h.png'); background-repeat:repeat-x; */ background: #E23232; color: #fff; /* text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); */ text-decoration: none; } .tablist li.current a { color: #ffffff; background: #E23232; /* background-image: url('tab_a.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); */ } gsoap-2.8.60/gsoap/doc/doxygen_footer.html0000644000175000017500000000055713227173553020076 0ustar ellertellert
gsoap-2.8.60/gsoap/doc/testmsgr/0000755000175000017500000000000013234023226016003 5ustar ellertellertgsoap-2.8.60/gsoap/doc/testmsgr/Doxyfile0000644000175000017500000002316413227173554017533 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Test Messenger" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../samples/testmsgr/README.md FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = NO MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/httpda/0000755000175000017500000000000013234023226015417 5ustar ellertellertgsoap-2.8.60/gsoap/doc/httpda/Doxyfile0000644000175000017500000002327213227173553017146 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "HTTP Digest Authentication" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/httpda.h ../../plugin/httpda.c ../../plugin/threads.h ../../plugin/threads.c FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/index.html0000644000175000017500000002575413227173553016160 0ustar ellertellert Genivia Product Documentation User guide --- ![Download](https://www.genivia.com/images/html.png) [the gSOAP user guide](html/index.html) XML data bindings --- ![Download](https://www.genivia.com/images/html.png) [XML data binding documentation with examples](doc/databinding/html/index.html) describes the WSDL/XSD mapping tools to and from C/C++ types and QT C++ types. Explains the use of typemap.dat for wsdl2h with an explanation of the gSOAP C/C++ type and name binding conventions. Also describes memory management of objects and C/C++ data serialization. Includes an "Address Book" and a data structure "Graph" data binding example. XML DOM, XPath and using the domcpp tool --- ![Download](https://www.genivia.com/images/html.png) [XML DOM and XPath](doc/dom/html/index.html) presents the DOM API with the updated XML DOM library v5 for C/C++, and the new domcpp code generation tool to simplify DOM coding. XML-RPC, JSON, JSONPath, and the jsoncpp tool --- ![Download](https://www.genivia.com/images/html.png) [XML-RPC and JSON/JSONPath](doc/xml-rpc-json/html/index.html) presents the XML-RPC and JSON/JSONPath library for C/C++, and the new jsoncpp code generator to simplify JSON coding. JSON-RPC/REST client/server examples are included. cURL and WinInet for gSOAP --- ![Download](https://www.genivia.com/images/html.png) [the CURL plugin](doc/curl/html/index.html) enables [cURL](http://curl.haxx.se) with gSOAP for client applications. Examples are included. ![Download](https://www.genivia.com/images/html.png) [WinInet plugin for gSOAP](doc/wininet/html/index.html) describes the use of WinInet for gSOAP client applications. Apache, ISAPI, and WinInet for gSOAP --- ![Download](https://www.genivia.com/images/html.png) [Apache module for gSOAP](doc/apache/html/index.html) describes the deployment of gSOAP services in Apache Web servers as Apache modules. ![Download](https://www.genivia.com/images/html.png) [ISAPI extension for gSOAP](doc/isapi/html/index.html) describes the deployment of gSOAP services in Microsoft IIS as ISAPI extensions. iOS for gSOAP --- ![Download](https://www.genivia.com/images/html.png) [iOS for gSOAP](doc/ios/html/index.html) describes the use of our iOS plugin for gSOAP to develop apps. Four example iOS apps are explained. Security and authentication --- ![Download](https://www.genivia.com/images/html.png) [WS-Trust](doc/wst/html/index.html) describes the WS-Trust extensible framework. Includes SAML token creation, signing, verification, PSHA1, and more. Requires the WS-Security plugin. ![Download](https://www.genivia.com/images/html.png) [WS-Security](doc/wsse/html/wsse.html) describes the WSSE plugin for WS-Security authentication, digital signatures, and encryption. ![Download](https://www.genivia.com/images/html.png) [WS-Security lite](doc/wsse-lite/html/wsse.html) describes client-server authentication with a light-weight implementation of WS-Security. Use this plugin for username authentication tokens and timestamps over HTTPS. Does not support signature and encryption. ![Download](https://www.genivia.com/images/html.png) [WSSE smdevp signed message digest engine](doc/wsse/html/smdevp.html) describes the digest engine of the WSSE plugin. ![Download](https://www.genivia.com/images/html.png) [WSSE mecevp streaming message encryption and decryption engine](doc/wsse/html/mecevp.html) describes the encryption engine of the WSSE plugin. ![Download](https://www.genivia.com/images/html.png) [HTTP digest authentication](doc/httpda/html/httpda.html) describes the httpda plugin for secure HTTP authentication to replace HTTP basic authentication that is not secure over non-encrypted channels. ![Download](https://www.genivia.com/images/html.png) [HTTP server session management](doc/sessions/html/index.html) describes the HTTP server session management plugin for secure server-side HTTP sessions with cookies. Reliable messaging and message addressing --- ![Download](https://www.genivia.com/images/html.png) [WS-Addressing](doc/wsa/html/wsa_0.html) describes the WSA plugin for WS-Addressing of messages and message (re)routing. ![Download](https://www.genivia.com/images/html.png) [WS-ReliableMessaging](doc/wsrm/html/wsrm_0.html) describes the WSRM plugin for WS-ReliableMessaging message sequence creation and message sequence assured delivery with (optional) message resends. ![Download](https://www.genivia.com/images/html.png) [WSRM mq plugin for inbound message queueing and message replay](doc/wsrm/html/mq_0.html) describes the MQ plugin for message queueing in support of WS-RM NoDiscard behavior. Service discovery gSOAP plugin --- ![Download](https://www.genivia.com/images/html.png) [WS-Discovery](doc/wsdd/html/wsdd_0.html) describes the WSDD plugin for service discovery with WS-Discovery. Legacy gSOAP UDDI v2 API --- ![Download](https://www.genivia.com/images/html.png) [UDDI v2 API](doc/uddi2/html/index.html) describes the gSOAP UDDI v2 API. [![To top](https://www.genivia.com/images/go-up.png) To top](#) gsoap-2.8.60/gsoap/doc/xml-rpc-json/0000755000175000017500000000000013234023226016464 5ustar ellertellertgsoap-2.8.60/gsoap/doc/xml-rpc-json/Doxyfile0000644000175000017500000002336413227173555020217 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "XML-RPC & JSON/JSONPath" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../samples/xml-rpc-json/README.md ../../samples/xml-rpc-json/xml-rpc.h ../../samples/xml-rpc-json/xml-rpc-iters.h ../../samples/xml-rpc-json/json.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/wsse-lite/0000755000175000017500000000000013234023226016047 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wsse-lite/Doxyfile0000644000175000017500000002324313227173555017576 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WS-Security Lite" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../plugin/wsseapi-lite.h ../../plugin/wsseapi-lite.c ../../import/wsse.h FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/wininet/0000755000175000017500000000000013234023226015610 5ustar ellertellertgsoap-2.8.60/gsoap/doc/wininet/Doxyfile0000644000175000017500000002324213227173554017335 0ustar ellertellert# Doxyfile 1.3.8 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "WinInet Plugin" PROJECT_NUMBER = "2.8 Stable" PROJECT_LOGO = "../GeniviaLogo2_trans_noslogan.png" OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../../mod_gsoap/gsoap_win/wininet/README.md ../../mod_gsoap/gsoap_win/wininet FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = ../doxygen_header.html HTML_FOOTER = ../doxygen_footer.html HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = ../genivia_content.css ../genivia_tabs.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /opt/local/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO gsoap-2.8.60/gsoap/doc/soapdoc2.pdf0000644000175000017500000346571013227173554016374 0ustar ellertellert%PDF-1.5 % 3 0 obj << /Length 1004 /Filter /FlateDecode >> stream xXr6}W7}m%mXm3PP}XH#Mt\\wb vq:<~ 6K0:Iά5\ Mo"=yJH&yŭ?|O>Ge12Tw.+BTUwd]FŤ _KSe(t~涩.v0͆_1u7c`%ו %  }tyJ劋Rg>kslȔd*Yqg= r-, /4b4p+gC;ZDSAjce%#!Z%"kߚFJy50F0T8 /?irYw@߷=mnc8V)k^)hqfiqhPh6r >*=b VU}XUB *E?@CMۧM;GV/{eF3c3O˯u}A:A "Wt[H/!z|"HYRcUH0W]JRy#@޷3"w~>6#q?%w dȄFQsZLYȠ8Or|ɄO1|7tU`Fw8jMaRy(C]x]9E\!]%hU~(ww]H ?]7yaBN=NERu?dtGDW&%wk#29r*|5f&@Le0P}_/[뗍W!^U"G(S(ӉPyJwzXK Ms? B.i0, 7Lc~͎#Z9JY8{[)7I9FHbZ| U8tjE%C(# 8XA_b=LO endstream endobj 14 0 obj << /Length 1404 /Filter /FlateDecode >> stream xZMsFWj |puvSv*)Tr h"%h7ίÒڸb/+~k9(h8",#ЏՁSp3^K5vo Gѷ|ėaُ#LnBِ}4tBs|NKɜ]/Ԅqn]SeR*ar jJrhv6; AsG suR'˸.y^U\1_t>xDHmip_m"+&^)ظIHpdy @@k8z Y|eX6 b,ıv;W-z1l§Gۂ8̦!i(R/"|7WQAJ /rna&_no̺1<_nLU%M^qG, j.an,uhY쀣;/K=Vru2ϔ= C~Au2d0!S;[ $@ CƏ4h.Su(eu V@ІsS[MmlO(Q'P >uu)w>b\ !5 9՝yx(?L-u۲ʵC1L%< 94E(OT 1ZT"Nh 8NU7ODuc*ܬ3/ikh(/Nr(W?f GU%eZ }ufȱ:nE{ۭ s@ȼ[eU#ej pUn%HxiSܭH-׿E#er̺I%eQY]\mc3ޢ%j,t@iM^)LEV+ҀtÚ`6qh/0͘fkFj}9Hn/z;QX\kG ^$j*S_z1nkC:_ڹ&QlRYWm=i6또Stvb?(SCPڱm)|=v sIq US6_b3 vv4ŷJAqTX\35öo J!_w6PJ R ݷcXNO_kPPF7. =)$H70ET83Lbod;)GҩO1ڔlghHߑ[*uSDUtCeoN庪UG{&ˎ1d'U\xRO+"! ȏf<_#isVggg@0: endstream endobj 17 0 obj << /Length 1676 /Filter /FlateDecode >> stream xY[s8~l_욠 [4$i&v/3} 0 mHG†@MSXO'GT + . q28b8w^z99յT)8+qʓT/^q8kYUw;8Y |0"5q /o!TE!FiCPF”uJff i\kwB3}ˬxas(k|&/9G!{A.74=˔!+U<$Y7|J## &WE\$v4qW*C79J 90C-Bp)a!ܔd~&+*#Z+EuS|ezn'e)<7k&,t* 7ChxO)ZxoD`391S@V!TK`Pp*9b !!KBɐKVq/AG{CGBˍ(d%FOr{Dǐ3Ps9^%pHUZ"A~ j:0v-Tp`0M1)vo؁W uՈ:pW%@c 7drG4.M@jd52ǝq$6%Fp=gulȣiTH;&fG)p"+]x#<z$fH@rUTnԾPB g-aP3؉lEGIiTi5=Q0femޤnjiČU-u"d3YEKoᓼ8Cp]!|ޏ6@sݚZ ^/M:^/=o;ӚWYw/EG&GD 3nZw9vʀ岐9l[ob뇑> stream xZ]o6}ϯ0$*"upvbTR k_?~ɖlq$ER{^xtvHH:AԉtFΟ>pzgi7bX$YA!ϓxkoy|<=__:a3:=@|5L>-LLٍBo+t{lFhODj#s_ B?4ѝL/_Mt) S+nh~&BO6&t-F73_'+{Otp Nߝ]l`!u2Ef> stream xYMW8+6֗--r` 9g:  ЙimGI06:';ǐXR&7#bQ8`4G"Ipq"읩;㐑/f=+SQU #bL@AQ2 /䯂׸'x7G6֞\|ǻϢ0CHUT=ƣȈ1#ap!ܬ!p=`>i-煝ѭC=BjסF}_~O ojHwP`;44:wܤm.ٳLmsYw0Xf1 0 AY):\miX&Y l$P <Jg}Yʢ@dzD V#sO{{X | ${eV+Q IȽ*j8l\Rr)R$ХfzCo': d8_J9u;y-k@zQk"mY G w.BQJ;]Ȳ-7/@'p'eSia A/+t:ŭƴEF\֖əC^ע,落*^yPv㼻4WԶvr=E{Y|]ٟ> stream xZ[W8~`],[!@:˃EcNo~5\r`$}Bxf曑'/0!g&7=·8&8Ð$ ( F٧>(2; < hJNbI/GgcrJ{Ć$c?0^}ThE,(p!Hhb/t3l1/릚r7[iӓv% (x'^B,MڑprBX;-;{zܚ7x yכpJӃ$Wr1@ಧ~U`FipE= #@6xĆae;:F>N" !ZRd -_ڝf;`]n{apD=XD ,li*gBI[-D"Zoh&'^ ߚyǼ IZXz%Kӡ`ғ>F&_/hӘs5 h,+EQ\)GGJkn|}tip#d׹+1aǪ9̽ 0;h$9酎η#al3eB΁qP)~(. J5}dkZfW;fTLo2 BM #WፔiksOBbO!E- ,?@qv#]=-^fҪ~olAsԒH eR Q?Xt V(̧N4O.]5@f4:-\4T s?R '{YRCw8u>݄c=آgA75CABֵVRf[=)cJw swVa`i|m{ì36|%j?\mɠU.t׽ƐlKh\/,B*oxjE$KBbFjUะ6y.y utCߦ5f]bnNO"_+ȽqTu7v3"fkcBt"0M/MV[hյ.ۉ yr 2"(Mu:B~ߠ;|uZ5q0V3}bDŽÒ[&>z49 5Ffg;qԹVHn5LU1!X8%Ȃ}Y 3owm u[W"LǠ9:#Wҫ7H-VgVs @cj8A6l6h&] p܅h1[Jo'fu qYܐZ[U-gNm])cP;vErUU*Us|Qȵ!MsgYE}~u#Q(tdS|nsq׻N7!n<Q7NTh(L0XO?]r܇fF8b endstream endobj 29 0 obj << /Length 964 /Filter /FlateDecode >> stream xX]s8}ϯQL imI>1*pplbNR;@B s:pcyC' EN$7@'a >T.fg\2mi^3s?Vq:|ω֌7uZK)Hs|'G: &q&JR6E+ׅRz"-3K:jsr.ʎM[Y(MgM!Q"+;શ5_ZǫIlDNLXM] B$ #=e d9 ;N09 #`]+L0xr.;j1p[V 0ਠ|ǐ\ K6,!Y0<&G(F,+ %!?k1#ߡo[vjo{c6iJϊx*D;%Hmjdh<Q35Ԯ_jt_Î:C {,U-kqx0N{L(CaLį3{rSVצv#ʍZ Su@ !Xj^FEmf]MRi2(ߚ!E)dj4q1jOUo+4;FB_evQaWDEjg?6E endstream endobj 34 0 obj << /Length 2561 /Filter /FlateDecode >> stream xڕXKﯘvEMɷ8[Q9@$$"ˇ3V~}|!@?5ݿ|Q$i?EP L}*z\GQ~h5q j,wm`"1}_uūǸX։q?1OV5}]qv OzVjP92݉{ˍ'>}+ӕm@$"J YlU4ro%?u Eb}gsc*?CG ʏt,hKj~(0J8"; )+ lỊW͆9- UjpiVL>n '~5H J)5i<]uao)/F ʁQe_~# xchq]K(UcVYALvg_ھ,'"BTeErȮ qnk㘧?cbU帉Ѫ&ɜW3<1'Q'+{p[-p9P;P:ms$DsJjLENeڌrpgP((E89y3]0]tjɤPArm?jbǏfvM4o.WZh `XZtv_߿{g8Ic0҃2$/G2I {kM·%#Ch Or>7&񎥰GJC;6_ޒwĐ+:uҭվиs"t7%l\q9 a-I,0` Tߺh 9 >q.av+Z[6buOt Ŵ`̟k:,v" uڍ $Ŭ26 'Ԃ^$i! Lcږ oSFjEϊ|v${>Y :_tikw;"Sa_5}r:KpIO];8ȢOx{O2t%Sѻ,ŻbF6^kW i#S8具x16'|ƚJօgZ_/ςa;`E.3$B''<!=!tw2GQ"M0IWL'%oVtBOHJ8- =L5ts\e )DdHR"yנ7Icn^̓#.BS[ϢK)@c>3v,u+C2g℔۫qY I|1?X/L?F. *J:1yqIT[zX endstream endobj 39 0 obj << /Length 2477 /Filter /FlateDecode >> stream xڭr8_[mZ"үJw'NAh[ղc/@h&]sIHxx"EaH"T W~/dJ˅OHC8*\"d8R -yjRfH@@.e1[޶1Mg+/rg]FMQEMW/Wp.sw!* b|A޾= E-vo7+_i:>J\`K97ݛ4YW7V*`䊅 ]𡨲0-СWw0R2P3)d cնs@H=e֖ߖ!$fHJ9QCT^(;]G0~=9+Q('^%BБ=x*h"gXYUVRϟo>}& .zacu2HlڱntYQdGLqySvHM,Kc2(M`!|٠[ g7X8𲒀nTrO$Ǵly ,A0 .= /Oge&N,WQ@`|hJGOMm[͖? "mVbcL8D.Y5 E:#\}[}>Fj鯮v?dc섊l]8%^<Vc*EgW4e]r1w$E[W.B2mn +f}g j3%j8|% Da¥$Pɣ^Ol+ X\{U8I^$D.D( WN"r 䂋Sc(1D iUB&m\T-F(]Ed]iy&{<ȅ.ۿ(WCLX.O]M} I0Xu맧'zQ7u['PTvlb@c6FӏGW BQn02VZ(+>W8p6=TXH(;8~S]l P @EvPyLi<ֶ;9i4-,OG0 a^zSql*:3[lъ"8 g,(@V&@2ږŦYbq7@M8ڦSdrFs*g^ɽ{7K0E͈qNecAkY-|Zxm/B`B퇩}mYC0L^рh(!n\3dzmBMaUݣ"}djE v/=o<Ы"EkZ{9:k`˶@;\ ƸiQ'[AÓyG#Sxb'w{C ^lS糩.^$䭾 ZwH"k̩|%`ֺ=J\B&7T3$/)z}4}zFRyјmzW˵딛00~_'[hgONo>dE3e$#:l(~C=$s^(`5(X:ЀC]8yuńB2|hǏG^ _.$} fn5J!/]Q1Sɺ!)71FgX(hu8K+Sұevo7j_I4P c;#_٩Ơ֗{R[p7x nA<_O;e-F;t8.;''(i6p,0ciWm\~ 7dwh.b5tj%Ő8╦\d{Ňz)X+ЕkzQ$&"nŰzѧ[%U@A٘ &L3t_LfGa?gBπ,6ǤT~t3缴^CL`uez+JIz1x B\ʾL QO JDߓED %mizU⾨u ^%h{g E9|SÛD>r endstream endobj 43 0 obj << /Length 2797 /Filter /FlateDecode >> stream xڥYYo~ i}X  NP 9>U]o䷵[VxT&A[l;Y`O;,ЩAԱ9IpJ,QKXx.o2:g/?աm) *bE%k'uOaCQ{Ҵc+%JDԕLnr$xbe 0x~ipY8 ƶ%Y8!}n`t]>ѾfX* E㰭7C ع"n=D@΃R@6lvlj;;x JRȨty~gуL6Q$2-/h+;{:|LG\`F $" nGoZ:5@0a/.QNS X2R.rb4 uɤ-QpBgL6yK249rp& ֱxSi4!\6 :݌ 4=16Gi *B^ *b!]23A ;Pm=u1otln1\6πSٌ/KԴ7"^ =pk_l/©P@tdR>e ~@@ İƫ{2ͬ~U0.`>kS5EZ &8.X^"A>yh p бT#}a>,{}N J6'H 뿀|?;bZ;{j-./0ZFkك繕HcNJqӱ=vbi 13rksxKxVREjܯ,Nrp!VA 0`#pRua.9&MsR(6'8!>ҷqoN1 :q܊ڇQpLM.zKҧdUAIlU"G2B+3N?!ǝ> iGjX~J,3v oWX-@<6!j9G-WNy>9@"MvX;,3S5X*^v4"~\oLޟ V0iFPgL9}FX &'":Tܧ|iin1RP:6 1s%JpD~a.[̵ufvr(wL 81 Ir8k>)wzXC 7W*>+%D?PU#Zk'Ks v34Z=`0={s8>I:mw<Btjd.pvf= \5`n)0u\BX KRTgL!씐)mΓ؜9}("ɥMa3a 3yI.R w!|9q=bM\ Z,)xj|ґyH>#j Oi*p NN. 8J5}G!kb+LBA3rL$4 doC^ ׅqۻcN͖[%(aphӣ-E9QBc;濽Nj 8%=A H X:0lSեaˎl{͋{~ endstream endobj 47 0 obj << /Length 2530 /Filter /FlateDecode >> stream xYo6bvYZ|Һ),qm!Zi+il:}Ep^b/6E1Ee,R|)-R5E}(j-\>|ZtYukW0xJ]?[i-֜Lk]At"ofpRrT*aݳ˫HGf1ټvgtvŴm~D_-{} 6FR2e^z[s< zx '%_9)*ͮ|=/~|lN9h"U,r˄i؝G(ad.nB,֋_O^3&,%% 8NY<;+ڃw 9it 65%[mGihySZ-U8 i)?/>@J,ʒdUcPi4uo;F=JE ^+ gIZRJVL xcy|E$6Lס{ yZ* HlSƭJ/yNOyJS\|evϝKK eir_Ѿt#$6dt7ZebY=oõ\%[7B^Kj%<3uռ1ptS w]t`ʀb L<5+6`zL1]| O4#3papP՘|\UM(H1l~]_||:fƸ^ mGcڷqI0$ y׊+&D67@Րy0HRzuu}L>7Rsy]x 礭]pW9f\bzLP./{2xz1_8OqiȯvO9>424q*dtVe-u-=m֮avzzss A*28jUo OGH5V!4xPDL u?{A*T*TͭcK!y˘Gc$/}o}FdB:f|gv{sz2[)|`ŪT͘$$XhxFuҨ1cZݸk9c*vn{] B.Lnf>_,GrR7*#R Y %%hO͌&*\|F3$'`)o;cBCƐ8 `XՃpC>UۡIy"kItCt@$lmnxBKH,d`%jͱl Ҝ &"pQՍBQ5'R><v$sM@'WsRH,zp\fFGlySP< BqKDbK 5{ ŅHy1Sr^ X`5"_(t';?Vub)qR:O&ŝgăXfO#>{Jj/`Tń¡ |]M /6ͫ֞0k#!qkӹE[">E~޳݈paQ^r_k vzFf0Zp~G6{s=Uw(S.߶0iw1h}X .- e|pJ7pqql9>ܤ^LfP´[y77p *,Ғjp2ˊ3H/=TJrˋ!3^L+h:v=ǿVZKS~KPh[cw .-Mhh|@~")*MGK"^pN38.)r sf^HXHgg K~n~(o즇swϹtMbUK|<&5 S>qRݧw7@8tFsem%m;'z;5AԘ i$qӅP^bDӇUA/PJ cdH%-ao=Rl"hlJc 6@Ju S̩c-²!w;3:{5G١ڹny4 o| eHUcSBܵкm^{=D=B1R/4cddrw庮pYW 5;/I"~P 3mIbi <νO  endstream endobj 51 0 obj << /Length 2574 /Filter /FlateDecode >> stream xڵYYo~ׯ8@05>ylYś8qN$`~ rCZTuuÙvRguu_U5ޜ]Kbqs")zD-|YV)%vL%Mt}n74g}W'ߔYQ:ʿp7|"ei$#dH4Zp'ڶjW -In 75;#wUPQ"?+$X)0J(ftJ몯c+zTmCWv++4mf>HuHDOS"ZMO'/`\ù@p5.iÓf.nDUϷ>2Q 8w U ^r۲b V v_uq]z5C WbK1?Ry¦[0'6N1~hCv Tr_:]t(Alm68OO}f/[е6/qWv[i`8B f[ voS\_  3e*>5'+d,ބxQ)}3D]-MN ,5YwM3!p}D Xvd\_Mg;pIg=lKM\^3 (B5˩w۹֪F@)#9PU4& `7,93 !5`X0%|w|Q$4Yۥd3)3Q|o1vU) c 7w*Ci*LHTzD{Rs[:oTFv[+ H)33\)Fs6T¼ "0Hъi~Z0GWb#FQ£C65,DЭX@r6{ʱTνs &Le7n| ڱ D# .[m>E"\"L#t>qb|8miĥcwVB4O-.وd% mbMQ"%Nvo+Rg"HG0AL}5h6Q"H#aV8vf\ʥbXt 55]޴ebLNC1P$ޞT d (ӄ@r&hb&hvo;0GkC,h-C΃ v)vd(}ieu&cUj'-R#0VpĈ;Ğiq7~̈H1g2#q{vwCl=r[}v(ZbfuEՖy_a4p‘ <'*x5A(@dOvKΜpl~-P~݀//cv# "0 "0$ū) f..k'`wӸfAИY n8kWPv;+c[4"${"w q3"OW(*𘞊2T2aMJ-4H}<`>c9kL(YbGSc}f]U?>|r|C'9[3e'taԁ19-G*3u\'a,*8"{kmCƪXLaK$] 8SlP>eȔAD@:qkT[R*9TEx[5ǢVGj~EBAj"W_3 ?w%zYPe{Q/J2/Jآ*rY,i}9XHp|& Qw6G;s86C_նVmAx N1 g2$8bvWnIkv{,r]LJ'F ˶SN+>Grc>K3L22$ #>\Lc؅|!ؼ7*4sv(n”ydLkB3с^ \ }D۶7WhA=W=~up5΃jOv;ۡ2SOw%2pi-A>+:o=zʴIt.:D(ɢ?b;l/kY]>jC Џt:yivk"U/ЭF4}֥rs8uuz?,M@WK95&a*6#)K(wsA endstream endobj 54 0 obj << /Length 2281 /Filter /FlateDecode >> stream xڭYYs~ׯZW%T9j-gSvlRR*I9~HH5%ȕ_n4CQ 77goX|ws. IջqOȋi[Qˮ>7q+Xק1EZˣ`H̛Ò1wMG{{8X {zv)˳qCGہ4(F51MDzm˱O"uJKmg=4#mskkƂ|Ui̸1.1KdA_0`MwCy4I$\gLFOC.զa^P$,V?xNE 6R=\Mà9(V7qC1 rSij%lO6sK8c Ƅ/Oe56Γ4(GE4h8oHU<bvj?xir!mӕ;goqƋb8IR*U5Gŏ PVHحbeh ፀ)gB^bS` +>n)f}i,EDp"8:!5dvB{sc/EDEbkTݯG&ATMD4#y ah@kZ-J~i6C¸!g1 ܑ.TVt"r{_n (l# Ė%?\y)H^yvc!!BޫN &z ^ uS[=*ZQ6^#/hћmFJmӷ1Yp`~}9ҧƲ wڗݽLu9؁(P`jQwƋ~#%'uИ1&% tU@Ȋ~%`rfG=AiѿQב56ZxX 1W\DeVv-3a;g[1=|r/Y35Eh# ҔTmmD[:A'#Ё8dN [g JK?B+)2& ~?9F"s,f?NÌdR!V>йu[mz]VG?BWXLT-5PDn dw4qP2x{ӠMk(cnH% 6>5hm3>@],ű"AL<bJ8'z&X6jBƱmHqxΗ|A( (7l~B@oIfE.wbŢAk.[%@*ȶV^'b6BR3p!-py_VN'l[P\&N DMʱdΒMj'F}@$,iFBTzkGi-i/-o މB'̩d^z=LSFgWXo903 +eqQ/cY0F9XZ, |0~ػ[QG}_|O癮m-YuQ, :X⒐=Q=>2@zAdŜ+cU.Tk{A{4x` h"x9GCd{;jHupVNۛǦm#X[cӭW}Yfr~;ծݚfIuWNC ZkӏUy.Q_!G,bӝ'pK.>FL&Jis5xuYmWw|yW&J_\#ו Zi%zpu1}ьyELt 6+g]KRT50G@/tJ^] nDz $_M7z& ibf__3-SMZr^вLmmbW|Onˍ ғaOg [H>f~Y>0R|g9{i8TDh<`pOѮ-|wϾuU$=f+|U_y.',_g՞[-&Yl{joW]A<_6i :@+,?)-eo ,bPqѵ* +,xdk endstream endobj 58 0 obj << /Length 2028 /Filter /FlateDecode >> stream xڭXs68a ΄2r3eA'~a8wL)dj}跫_lNNKrb߉Tx 5U[fvyR:H#?5~,8p~("_Y.^:Kdv]gaSTFdOΘm̾H*"Wk?>0"{X.Qq3A" F]RFnQ.K&-CeQoonVr/'it^ۖFV&k~WLܮf1* \sD5v2@fk⾖Uʾ z(_nu?4M[i6m"z1iI"ֲA)v5l "|38uՆtW󢿽Ыz]!B`MrY_c j)VM70x#&d:L;"s)f7sd'^ِYS>ɏ̪+ Fq4nN@BɅ'<)0ev Ȝڜ|9HGPw8 'N>}&! "HgO4/'/kBIO}|&X j\P NClXHY1cu?Mf :5. ȿpm|_$(RFfq]7]Q_35UūF`w?]{Cmߣ׏DW_-hA+)"b!OWJDҢ1@?^K 6lAZؑ¥ă#q Q~x%{BM;yb;B J m$Th+ϳ"{$Di0s>|8ptHCЀH>>Uf рoB3aJC\܉ Ֆܙ{K!/VlMoef%S;=,-lAwScӎ)5̗釞Kqjj3þ9 pv1xR؛捻مA}cGwMA}M抿5-R悩o|WbT+~WC"2mg&3x{ڞ@.eC.uA6:&Cd{av1 Ʀ~#M!$@ 6BE {"7La"+uOYL)S<4DYC|8 l3?+  A7J9DDc_AH@OKeO..>XUX!AwEvCbt=OfԃыJQC4Voe[sϓ8g85?bj>^ AGQbٓ3z{& nhd2xڧ*LvqʥG!Z~2B7Es,U̴62A1iJ+b<+ gA6 싱de8h.Y:ӄ+O֓$YFh-N,e`M{f[ }c7n; VЂǷh9nI [h] {2/cTX[<=Vۭ_$GWP+\!(gt%:.NZa/K2&SS 32o,m!>񰵀kvtHۣ;/8- zX$ X c93-)Sla'="̍3yಘE[S~u0nn 0U%/[o;baa O> stream xڥXYs6~ׯTSA^c7d+̤yD"u_H>N&&bVHBŨK#g2>/fsΘϞ>/L~_NNE8>|@xz;Z1콱(a`iʭ%G0qj]OOy(xow jdVL⸐e9=Y@)iT׺Ӂ#7G:<3$Z$ljǜJُǀ"ԬNhlC~U?7lɳLn3_&4!]ջ?<Г竞82PaӑxH|prG/4+-Ak.% t`Ң uUWBgrUf^0-aRX{/g/2LZt (^I($!C!@>w8qD!&)qt7? @ؿЎ ]TWomiЪ PزRg)I0M^e7r@[Fn##:Pq(\(jI,Sιlm1ﻞ.݋]6(C%# HIn' ʽ~hu sC64)0n,Fd}:8E>z=Kv٩)jQKet#AG{*\LJkuǓ~$.#z(.*~İp#0Գs8ծf;'xǁZ(BA]]V(J72e[S&R:uj: TNJ C g =YSr]W2 "j`͎&8JLY2FR\;PԢTUDa) ۥI ("H1pA3bU)"{e{MMDCY6LJ6u^.IS/̎`tS hTiW~Uj)0tx Z 8,-_]΋hUv|Q/mrʁrLÅAHpF`TIWpIIuM1E.H2ڲUӳ翔tuw/d!)NzbAQNKFH<|1y{Æ۽ᾏθAkt<#{]w/Z/<.h %kjg UbmX-iltPԠM1txF൏=x;([T[曲?xy͑6I}\xmqD1৑|>Nc/G2R' endstream endobj 64 0 obj << /Length 3135 /Filter /FlateDecode >> stream xڵksܶ~UZAă ĝڎ34XLdY._:JG/w žWgG߹EgrqvH"3Z/~U?Y*2ooUEm#OFNT]䷳O"UK2nӔ ݄fƯEۏh:m[7}QWjoDF,٥oR&R@Cdcb8=Bzes =}UKa Ѐ55v]=9.v{gb+tr´V3L3R8فE.JP1~<'P⿾nhBc9MnHBy<_$]6ܖ68ZlʶWk>_É&D e,8gY̲){4Y=[M׷kEh wA@ u#Wwu&R霈߫MDIJ^$Wx,(T'M88X@W m&fKZ:ҷ)W]ݼ834J7ȧ}J mq\wE׳ Senb4b*>Q糖KIY*ҩ;nCK滋\3IG6%Fl{DC9gЙ& .bhꦥD3 9`ce\ 0\R]S )A6vw9;Hx!AcXm~-^a .4MY(9r_GMfFh.քg p(=V r@sv8 7bPpYKH:ȖF'w:½b]'PfqF '5!o8^Tx/j.*l~h4Y !PR?q'pkTpѩKY0(aS[V\CJ=9ᤰjT(Ʒиu71df%R>D|ɢ K R̘Kz*rWgd˲BE7~3X 1%5!ux1Tyaϙ*m3C+j8 v="SOr2*U5&"C M)ҳ޼K׋#`PÐ YhhS T[:lPJ `hKt:Aۮh 3: s.uü-ue/Z@x&,'sSS9\uۼ(QqvN&| ʎSy~ ʀr}1!JG?W*`kRX)А0e K+L(xRp\) pן[)}bh ]0UBO'M]%# [U&G'g{f>"Ap%@.dzU4vP}at8C᧔dC(@Mt0 bGv$s!\}&PCքI2)vY)JMH!=ȀXdД.|G2;v.$N$at⎕zN:hIz"[[ a<SM?M΢?&lAtlX XѴ IML6zxu^o@=^밆Re _-TTg_$aA.m6׽%=B۰2 4:a-ݖegyI^Z%k>%2s< U\$aK܈ yX1O_`CxÄ;cEUIq+oO= 2 endstream endobj 67 0 obj << /Length 2852 /Filter /FlateDecode >> stream xڵYY~_ n*YGb,)*X\ z(HJr螾d<7R,b̊oN/+Onc;,WjNTNgS]N7l˝aM`<|<>p4{f06 2s~E)AϔgcCVw mAAmN:r`q%p΢S,xj6{>ۙ! #l]Vc_3b!4+LCkP7blן^`/VNfEa YV,ØdƎ++# ;Z?%c/;za>_&)g; (prP|0uӼ1l>VNz1ȇvnHgBp<' 6^9h5<'DZv1nNIzm7r_9cdڲk;JZVBmAnͮGkl?C9Ecy'\SP^rL9YICR 0MiU4:7&Yf-˃o3Yfl {^AlG7v4g [Ф!B!8ɀ 48] ]mHuh}h?vDq(::&aW|BbGC4M#kH&ObiW}h8nL*hBs <j_7 P (l_ip.~[X$q6Y3w YX_gr_|XLM=WZB7 sC"l(jzLrv)b5RucinD\M [l"k:IƟx~ROjMS oIJ :lyID} \<ޑ&רʅ$a;$?K$<:{҇ iOZGSY Ց" zy퉰 -Lbw9RͿ=%IqsYrVAB7W)RD"$:F:ID!'q^pVԍaQ|vO2038m=I 0TJŔ︞'JU\:D&sdcgQP(NȒVKn.b\(E1s1]ʢ! {ɠEg\AzuGnL;47($ϗiYEe:>n݌@paM,"ímk_qY9M$G\?Յxt l\깤-8F+e58d K3 #:.W]8-anԞ @脂P̔4d&(5 SȞl9VtBH=cu9Q9+/z:v=7~|l}E0ekcp-GO'Ox0wrx4#]Zt Ł D-.׌7kx Ay *d0:F @FIGLw'S/aN؂UӾ$X X%NvSoJ!|3@bӚbL|?;@xƁZj&xb'v mUQA3FkJ{̨9 /=\a[sI| ct f`G^Є6sCЈ.87r:s,R02뒰-BTJënվ=NPnK-[Wt3pv٭VFݖU+ ^-O{$ ܹ@Cu+ס'McZA7pi{~Jj1@C|kBOSRs0F;B޵cR~ LG׬?9üzߦʑ&#A؎@'<kf=tͤXM*0x* Ȑ/_Ll.o{;<<.f?uSH<<@(FH:QشB"ul(X$Vu\ LMYW ٍ]R(S*&,Ɣ**7լÂo!CdXvm#Kb3X{jL@#Ɯ?%O%aR]a]WzPN%4|8]3z 2QEٵ9'8T@J̝x`m:{Ie$A{^S yI7ᰗׯ^l,Eob8 şw/J5z(&uuݚ/6|UU5I|umf+C3Oi$-.m7s+:>u,KVbgSvSMi& 8͓u4vxơ8rA1A8`0kTP?z@a~&5uJ_a>9GV#lE([tn5Q5dzޗ]VS-3uTPDqj7eYlh i(9Aǝh?[ endstream endobj 70 0 obj << /Length 2121 /Filter /FlateDecode >> stream xYKsϯ-TImcn&eǮ&;l K(S$C $+US[l4FՏI|AV,$O/ 8ſ_¨X{CQ&/B,q}0< 8Yf}_,\>970'_ kTڷ;שnp4j3݆ڴ>Qdih\U1'm0դbn`ԶZ`av 6Deߵ/^jwPÂ}HHl[dmв0ݞFU$8zO-.MRyk@𶲬m#2W,eh /vom:5KqAaTdjU*kLykjLd<*;i;fj|=(4RTc|<tLh~hE֬j4D.Yj~7@㰦XSyVW_SXp i+?g1)'lSϚ- [\rpp^50øQiubdOm\EAxaēOTzUkHD'[+ Bg\p"C@`:7kO| œ7ڇ3p Am(m]Qcr NV6XE5GRY 8pkP#sT$~^@M̓kzj=`"0̀?Dk;"g,<#4MZH-hnV%B@`P[INsv`XavQU('AXNCRC|Fc a줱۹!Hͭ0: Ӗ 8:X\ P:@^Z@LÖ#׭owpjyNJ:5NjLt#/"- X9f/<$#DE9Lp)JBѓ{xW_e^];U?EF4XW ?/ 63E_J2>uW"33Y/?s&(uY/`WpI|&,ӏOd%PO;.a}GlvMO"˂"0L>FzaTvvT$ZÖ6Da`V^쩸LdGx1v( GX^xhn':@P&C 'YBG!)<-q@3;gΨ6-^7x-g)> stream xڭXYsܸ~Pʚ&r)R )J<46E8{`?mz=qNw絺yfOHe 05vY""s2c,Ȳi2$>JŁÝ"*;(zޢ40YV$Lrw\5dI&Տ|θW)d#ŝaZ ijZRU-OWjm,A҄S9Z5@5I$70pޛ GxBw'DӘc2DTكəaܾWN~•+ eR>Zej_'BqPnz] _xa7Q ;>aZQf@pL7b@1#cOZa[GSz~qJ-)Z6H2} x.BF#rn5ND~;5ei;,tgwo_>~~7M[|w&}53kaf[<;{n/0J~)3 |rE8 +*g4Ҝzr|^]=.,采tYlĹ!ޥ쟉u'Ч@ ݿ5HdsC,?tRR c̽*-K^% hxX+Brj[_Gl R a wt] =dGPjK.9~Z[`߃ٯ}E[E2K *U2'|㸮, +TגEuwby\M s_ˢ" )z.dWpN ;>( \fe)(3(}QM endstream endobj 77 0 obj << /Length 2576 /Filter /FlateDecode >> stream xɒ6_lHpqyBTvrm7rEU{?amJX 3ku?ᣲ[sF =xhI=i,&Tk|{=2n۞q(BF"hƹ$*Yz-(:`ޓ>tN^U!Th8"$[s x̴i]]m;R 8M\g="}16\ `JtgL#2vV/ -Lîܣ杭?3]gxK~ن`%XR&"NRcpK.)뿹"LCec ?$*$ u]$P]JH~tĞȧmSHJ,UxX5X*zkp, "D5Hx.PRYqRqfE*> ې*;W&eS=ɦ*dS=Ϧi<ͦZ;Rʝ+5$J*YYŔӅOw>D@`(2x#sO6vs@PZ⒪Dv 1vvr<2lёUM:JG+8mLׯQ\Im`5;A:TqG.ϛHCJD6;$HxPIb+D=&NRBL s߼8A[,ʠ4gFg=/{ozgo:<FO'+9CXtwG@`q.)?%O-59NFj'(rLYX ʱPf"ѣѧ t \S*ȂXvH _akѠ_yKB_ ?fa*kG",l!zTCunq@!2siiJ7P>Y0a?n6'ɵÀ,;wڮ_|â'4Z~c_% xT֨pJ`KR Y90/ tI>^5IVEڜA}>d8"Rg;xbNG4;pUTDq ㌏ZKEJ$$trXjӡ8ݪЦ{x7޿;4dP|^%Cv_ѽzAa6_+hrgs '_p py}ß3!j(P^~ 5ƦB]kXAxPRMUAyi,ZRC ó0cS6PXQk ?^>~CyVS5,mď B9Ȏ)8U%FzaE\#m Է0Umq_ JS~O*@ 䪌pîkj_z F͍}b`Z٦QZRqR!t.7IA/k\&Dd:X endstream endobj 80 0 obj << /Length 1837 /Filter /FlateDecode >> stream xYr6+M+7Bd+3ͮS, 8H_ߋER,[L$/Wޒ4JQ*Q""i$1Fj_LbWfm^E8I(ʼnn: s.~|p'5QJdm/.Qwv6b[qTD]y񋱐C EJSTP+ S9L=4I(#ּۿc0?ϗJ#ЙֻbI$c4ŒRѼh $$a`Cݸ<"4d/7.MxQ܇L|YvPD$G4I"Đ,zVdQV3w!؟\B2fG؏"Ȉ\Ժe>yōP>z`oP0}|pD:O>@KYv!MN8IG@EtMpĸ~`@ 7]a`^j@r&Wuu=<`UqWېܒB8\B'LnӘal` _v/Z9njeƮwV^dŮo/=$`He^4jaoJj1@{dsM5] Emo b7 $}6iFF;鋪8n{S'6BjښE|7hzgנu,Uu,n^Ou#ikגp$˩HdIʶ*/Aw`=߾ [y{v2PG(\$ rb:$߇.ƹꕯ_]t%#WBO2x 0[7 s,EDuQ=ሔz{<49b`DQ晢.WZHVh&d~bñL\4̓YnD$$*1Wf#!ȵ?= GY_u@'YQ1ǘL zy厁* Obс$ CRRA~3 @77,)FUm7Syp7ϞCG8#s%[6Ibm VjW vgn\rxV!pbC1|-Ag%XSUld`$r|I A@1> stream xXs6 _ݫ~Sevxwmhʒ+)I )r|,n$ ӓӟDd$\'Ӌ$7"14#TdHޏJCHhYټ@?$RO#RᛋHؓ>YW! xFTMe¯~@dINOΦ'O|O0DAQ|u#Mp:DdirIW 'YHO~;ymس`D)Y1;#-;V4DAjF$? dv_+G Oeߠ0M%͘'gQ:8Kc\q6 ,oA~Q1{9 9xt_|n:sDSⱨptCi/:)(!lOYE&=' C4-8H-fm9"y\Җ1 Be}rMw밹s3*6_.F&,]N߅O>xzb $32(ԕvVEH3)Cфnev Ґd]ߢ\!56R$WHx{4e$&H~v@QdjDҮ_ލS1zg8Pt@rrtm^ax3C$m MXJ{Zju>Gfڌ WMY;6E^^ …-fo2~i Vqj=d`[DҶ&/Q*w}a$k*xhEžQ '!3J4nc狨Prq_CI9I9k43uTEu` y_Yɉ(T9PHSJXreմAkZ㙝*-Ѽtnicd4&Y4GtdeTĶh7o"di ƁU2 |!zzq'v*Տ-; %=B0IJP^5T=gB ! t;P+GB꣨Hh-cXe}e3T!s$;Z\|A}x:.:= beC{YUƭD 5g*#(XʸW>(PތSAVȊU(v|0&F7.Z"]u*իؒ_û #()91BkW8D4¶#WВI| u]&wGV$hcRJW*l/gVG[DCTjm뼩(rӮsF :/ ۡ^ C>C4=5qcGM!H`3G-ͺ,v#c$@JPI,0,6]huak;wn׃TV.NnD NatvEF`q7ڎhN Ȉĥƅϛphÿ-r1E0s 7 nlzyf2lĵ gP3tm4z9M@ 㴞II\$BbtE+r/^WRd@X6m9n8>x l7 :.W.|BʤwGnthh9Ss*b`Yݢ_|(3cQdLy|3 endstream endobj 86 0 obj << /Length 1527 /Filter /FlateDecode >> stream x}VOw6 S6%V$RR鲗m݁R|eK)GU>xyE2>ˢ"F,r< Xl~EE4)'5ㅮ9?bCD3_2+]r׍)˪+ )ZtywvE b -luNևxǦk] ۛw7^{vM_E%'h}}jPC$xM+P~y/:ՕǢ=b={uBNB,e6) qNlc{8di*%T <ʠH+2E7( {,l)5lJ_|e*?Wd{iL'NN'Tʓ $0 -Jxck`+ C^ _hKpuGN`El ium-tEP@΃8JVu{dsdux[:<k4w9ij*%!,[Mx8޲=Rn?]5G񾬴k`Nr~sYu{qOgEX,ӏie15]0O&qt@Qi/iCʱ"O);Jz l/yQ0z 5Z`mL[gMTj'0~Upa[ϐTCؤgbA,9Ib rZ:[\xzlukF*!RT-/=ϨW)um>: rm[VÐV:Y؊-6 + ܭyd?T(P,(_ -(%qǀt-E1<ķMA'6*ZE~.&uO_"c[艨B:nE/CEpbe'eαE/fcZ&Sp:v~#Rɋ"xжE(WʄQ #2XUvW=,P PuS#_ ӻPjbu;kn ޤ@^ #ъdJI MGİ.'/4tǫNv /P38&<}+Cm#+`wi*RBV N`BFZ>F;Z\7<*[x-ld,viR/ ՠ :Ē*Ӳ`gTؔ6d=/{Z VL{BV͇͛1{+K endstream endobj 89 0 obj << /Length 2995 /Filter /FlateDecode >> stream xڵZo~߿O, e(-"){e%VW\Qdw~6iї"Gp8Q~{w!_(,BW^eQF MPa#N`kTAg29VC[~Y/uYɘh2ɕz0uBUcv$ց7aq;r8]ڀ=8vŁ|0?rh 84됑4}o6xE>;4u۠ D7'c#9G?[!EZ~a_7",zaeI>},6XE;O?[dx~pFunzJ0.7 ۣ<º J{ak˶jkDžsuʂ}ŏUáM4FmNLl4;@604 ѝ$K3#ت?xFٲgsȆXࣗөK8;<ɖcCpW#'ȡUVee鿊Xsn<^$4Ajm<^,Ӷu;ޝkf݆,#V/&pbulPE1涺 Ò`6Q ]6zY`H V'Uauz W?G*ikuv1m pd4kT" u1ɋiR{vV)`'w,twG0Hs1 HA"kP5WÍ8hڇy(IQƌ1ߡez80$fX^e<. .'L8C&N33A_A;8w5V<)qGPhuGWiY>ew~G[?]u^{ 6i~+5,l\wNm [BN4e(}a8}}_jr$.\%S@3)h#8y&]`{ "= jOsi`U5幖h;(f'eX[q A`Fa ;'V; DB#zlL ;5C}BH}{R8 xvyN{Lṣd-*:Nɠq,CcAˣDD`tB't/=(l؎rkhz"(X>x? |ȍ ^] z f<}pxVpSxgY|$cxinJ_ܒEI\3অ9uS2Gr#g`9[yc8$btS.263!@n(#?@dGCZJGƖ&Ԕ`FJu#ߤ`q pzΓA_9Y)5]2EOhQf9?#Wq22# ˿v,p12X%v}.O}ƴ5Ix ]_Ы1 g%KR=˲J<bB Zd=QgAXwX?8t PaxnWc[Hte"vĞr:ݥbאP _T٢J~[]fG>t:tOe ]5ᦿ b~ *saX彬Bl|3q60[ڙ n@YMn}5pX4Lr{ǻwz!JRqZw?0 Iجn}:CБu9W763d9#[0H-H:gcf<{LřTo67X`H ţj1RS-*nRǛX8x8q*m-tFJ-EXnQ*v 'e^ Bw?Q~X{h>k{z_)@RL/$|kWc4/bEA'W-4qs$0&58$ e#@m. r6<_& rl=pQ ݍ7UlAsC4dj HhM,+/]"؞Tx3g,~"/|TcK; 3p{D-#: UCXQ(U^6W3w–D"64f9Ȫ6:z&q@uɫaWW% 7 @@!xmDI,B []/j=V6ӛBz7R=I.`f\?s%ztE ((WU­T>)ƒIuX9t@ďa+ڦ5a*+3Pz8\(19䄮ˆK V1>(K-zbG%a>]hR 836_ O JLɅxO:z,LJ:`޴ڕZ}"/|͑ntI9sapNSG"|Ps$yC EǕ4.BR TԻS] EѭK~> stream xڭYK6p吲+m={Oa+ٝdzk*AmȒ#J H=l#[9A| M<U*W)\?6jCd]4%ڡwx}.{bj^ϻmd-M=U'=o0چh_{ONOWzL *'8j+uhOZlL]5$LM2ST(ֆf8̑ E5H틪s^( i+` \]5잮 0}7ӆ"gbthSE\KQceΎuQ&֞iT,<$*X舐m:Z'9T5$b@T1R %ڽQ*gy"ބ,a]bڂgI܋X$\zIM1 "P5&%02&!N1ԫpmBdqWKyѰ5_`UNލm+S FW~uSkb\:4QeJơPTU}(/UҔ@N4m#&V(Ec}=z%8͘϶Gk%s+D8_2M4~.f%i2jQrk݃ sQxˢ4Ww vLJ5Sk.|y/81 ^pRV,+V1ZԪQ87噇CB9,K9| Gܪ~xpzNBcv~Om)K{ rFL43 u#D4{ "\2O d' I6G"cu$VpwA!|dBl#s^d,ܪ) b- "ҩЙMâ;tlUx)Sd+;0 JgE-µn)LJcH?X$c&s9uJK1TYF1և&Cn*} PŖ؄0PM|`ǀ2`tmЈmʜgkh uʒgS2OI& |wsv0TTX2NCYq cgEA 2"Z3!nl[6L,VgEOUnJ5WFhbJG0wIaiZ"j͹@NEG{ŲxOw &כFYG^,eфmǾ?vzo'v0 LnᢢGc8|:,y[>=Cܡ@XotI3*U X4ѯhG{?AA?3@6o1lq9-_x[wh" K Q9Yx WXNP-e6Sߗ% t%ln@Z4L8+SaABe(rY'4B"/o_m]ώPB P  uۘ qǢAW΄926*[9ܓ^len 0!^Ty7gYy̢$_LC״Citڬ<,WMw/VBp"JY8`Q,Mzkpi&&>{ `չ '|*Qq;[* S5'_}0PD ~ H3$] `6m%f|m]H#YQPWʦ p$A4ԟy j hf/gꡭ6??Uu(QO/+gPEb }<+kooѩgFQC.NBQ P?!7 NX 3JDpt|U$솩<[=[J<[<"[*eVTec˄55hq+a_ o\|D6$ ?AI_nϲuPjP"9OH}`<*1XahI|W||u=N EXUo ݡH5Wҫ r)R2Q?4-X= endstream endobj 96 0 obj << /Length 3403 /Filter /FlateDecode >> stream xڭZY~_ڇcEJI\dc;q%U85bY"exKسh41n|DI.Vw+qk6ۗʬ8OeDC'7lVm髟neZ$*ڒmƷkZh< m0I26J}CsoCYm;v6}sx9ޮEtѡ*[iޱ5j-u\BFŇ/Q }u։Nm4v46S'{[]TmJϐǪ/MW_gn5unt(_7K':wXZ_J4Gt o/;l1"*Wqcd)hXtJQѰbf !Yo-7\ዮG9 <Q7Vjr^Qű˖?Ԧa8uYn+qcf|2;QzEU26.KL`fK^i_]uofoD<tyqo|(Y|pYvP:\\=m?x-<⟆ǷP 4E߅Wjbk/zpYE {drabM@47"V۲??aw>r.!4z[vC8iuijT'68dG:ɟs$U* u2m,oBݾb׍--i=ݳ̂#4[g8Fh['yI;gѻ'toas(ȩ-_W4G՝ ݫٕYD:% IGe 'WDJ=w1T(BJpv.v* _|BnMZKU9w oK^f}$:iwEW;|5nތ& <*~?`ߒAk{b.['FtsRl𔧢Vnc2y)k;|Ƌ:` Y!&pVwEZڮ$c- /c])YrP)8D gs'\Hq8$,N bIfWSGW\7쟸 'b@ v-F0t!/=\[~,7#wuEdՏ粦KwA'+yc4CfXTivY,.`^/W iRy `{sH4@NJ1D*r_L6<\D*z3AVuDcNAOMP~ɮ9*{Qy M8f<x[,X~Yxm%#w5k rxW-@gbV&Xj[k *WG ؎3ijihS{5~'7M@-ȳq"H;y'AAє96{Ln뇎 }2 Wp˳q/JS/ XHmCo3p`GLVQ ue&LҒ$I0j ºǯIEG&}ud~4s [jbeƧ`ov\py(k'Kpc z(LCgb-@7]PeSpݞ;85릠ΦOG0v-a6_Ԣ>g0o743M&r}H\"@'A'gb@QX} (`Ԛ_|Vtm[v;>4? |v->ccCGv=.\{VF uD8gJunA BhL4 ?hWdtyXn#"Yu>q<:S Ho:"hA"1 Ge!{7!PU{7 41xtk8ǠWtfAOLS￝q7_9߼w4l] îY9E1q_um_q'ީ\+,alSʴbWrXn‘I,^㔄 )Z̹<̞!NOGy.LNj*ˢO)ӔoR o0 ށOB䈅|F.Nn~)Z?v!J/tR˄d>~pMbWH{lX9 -7%z endstream endobj 99 0 obj << /Length 2209 /Filter /FlateDecode >> stream xڭYYs~(Ua+qDTR@`Ddtϵ8p_3}ū MHts(QINj.w\0N7۾ƺqx]\lʽj/۫yI.HL&8mjݎ<-B2!)㞜\p+m򟄊FGB.Ny! Z`,59,_\, t_M#pb%J#nvSDQNRo8>q㱌,ԇ˧d} k7XB2H5v:e+mEtIhʰ0FA.J*O Fç?;E>FC)Ɩ C*DfxT`0Sg)[%6ew@ﻦ1'|£kF{kL.Ƒ} xH W ҾRp#V>HgW=3EKlʛσ[23ҿgiBx+{ \hL/J{kn/okHoOCVu|0\Ɇn(dTft )%lS.~%T<|2 #yټw?fʰJh=hV6a[cC6.TaЀ[#R^x >D  |ΆTq>>ǩ(ȉR< M:ǥ$孡dWr޽>| V,XWpaǼxTLlSH8 '(_OePhN"U -ucJhb-6?3ѐ\-}c,:+׹泜a(/g$D,Ur Gl]|ǖ6LQN}+kb,Wvg)|Us'eHpˠGsOW1 Td)HCL Tz86E᜗-!˃6Q9ڧ{*OuqIS㠏1p%@3T8dŘ hn10up}z0ma.C XtŋYƘGz!wP,VhmRC 0'$\6741"y8+KVz,ʻ;R3qe1X MAm܅ 5vؠ+.3Dn2LCaxbpI0\ȉh}Y !7w ]kfMڮů3,%}Q7S'3C2GE+زeko\H$Ϟ"f~pzM)ȶK-b]Pz3aZucYP G[MF.PLYpԺNt! 6TB2M hB!C44 McDCpB$A"iP;ŋ7/#܀L&w%>aʹflsʖ5`yOkS(Z1?Iiyg )4J@*nO %R1q#CI Rx-7I]mSԏ)8WϢ3R3':7v\9ŹgblFhCz9L>?j>P/'^sG7l[179qXn;~3ge=9⸸S0?Hb8KD({pȐu%+F)lGLy" endstream endobj 102 0 obj << /Length 2391 /Filter /FlateDecode >> stream xYKsWL9*CI\;lCHCCΒ_n䐳IVrHJĀ@k𛛫rriW7+7be#ZM)Ponŝ!VZlmr?Շ+Fj*w+Jan%% ZPO5Ԏ\\k2f: U0e9q=((櫖uLŕa7DæOæb#Fqb-M✩d-g 4(2k5Y_|4/ nwJ=˨S\Ĩ JRy4*;cU/3hq)u{,j|oz ^(SfX56*xoCaD^>iRn}4M$%e3e*.vA nF6fSԌ_ŎeDQv 7ͣJ=d[.j5".Q]Rؙxɋι"N꟝e #̲/F10E?' }:/N K`MN,#Xf"!WJPE1:ƿ?0.u'$٣Γ?#؟BiMt˰P3G46IЙ9bܗA(+%R#F8#ڊՒxrNeFS3څo5T! lyG9hYVaU\ ڥ4!@%XM!Q@_JN\10n<%@l.9é[ҖW|=TI( R] m9W0GؗrT['^&YF*L3lKވgPz¨>p>ܺp@iA<޸ y,  FZ`v @L(˜~$zT䋶 TCQuFhLb8 <E"\ṭ=v@ 12y".>wc,_(_(:w]ަMJXwe0 B?(@flM2b{2]bހD-Uaϸ #*b0,Cũ] L¬Џ1K_8e; ņǬDTv!o_ڦT mۡ2 '~p tlꚡ?>tFrq;ʎ%|0ysO68޶+wz G™#pX> r=ײ)Ќw)n{|;C&a47b ׾zoh㸰m?mȘʃϡy;_/ӕ!1;5D„6d R*odf|~O i, $MlJZ )Ƽ.yfB JMc&X7qc3)7 X.)8#TANX6?ح6d"lVTR `{jP&k_ 7oHdfSiMۣf`]m8CmBBN>˪/Sȸhs ^L6 30jdz܌.B%Ԫuף]ȏ Vmܦ3sf{Cᄍ!x]q[i6] @Fէa)_GݤQ7TYwXX]' _@1JduDbD#jU:3L脸pXxYДj &} f|"ƹddqfn.yYg7~RT%6Ԋ>ºI=e mH{6Qq(Kؓe9Y rP5FЈ>=PpB6N]FK8pش _ߕu8D\ fWp>a N Zv!C4r1fn!f[7\6㤡?PZX>??Ps}10|o6õOM O0NYKe3YξAG$0qb΢(K7 '۹@:q !^m>|+7MUm""Ə2C,0-]nBe7c(k ŴnD|(O)lZXׯwn8G_T3uB}H:Zjթ:#R6I~6S !8BP&c ZȰmuTv(0 endstream endobj 105 0 obj << /Length 1765 /Filter /FlateDecode >> stream xڭX[s8~)ֲ%K2ʰ, iXvă/v_G'vQe"K#w>yሇ$t sD||y|Uwyl 8p|)g>L`נ]gL&Ez$A@Քv^Ξ_J# `ØG>NkoHJ/1iRcâϱHu WJN :4-Ջy27#2=hRC:ML;aPͦ]^TI'm'!',(H^Bmn!̤='@ETJjcW+ѸZcN8@r#).mag q۶[v`3x X&EmtBjQ7elz)COc7LWb,Ӻ^Ñ|L0c"OEZi-j>$>Mk9Bϡ$1"D$dO!*OU\4(]z|~aw:PLmnPڢEA"^9jܳ/=p :_ֻ-kAm/]%M+Mp8!UBC:;p%Rr#dH>y{[?Ez;>ZN>_ٙԉ^{vQ݈^ AIp[U;᧓U׭gצ+Q&-eY\nxy7Fl/>=n|Gn6PL.R Q8裏Ιɔ endstream endobj 108 0 obj << /Length 1628 /Filter /FlateDecode >> stream xXKs6Wp X @NI4Sv&!!T.DviOX bZXEaXh<]:ħM1Vw/&`Pb_:aH0tJ53ּpOWqETM6w- &ėeр7͢Cw O,:$/knǡ᷍s̏]"jޜ|: H9*Qp'#Hm")Ӭ91{=aLf_]^N~0=+MyΜtFl{B^ `lD 2Z5Rx 6RtiAYܺ:ԓP|FZ'%p/RxaB:ߝ]kp&}㳨CW8|KI5uUI(JjXL h a0lnin"uTN #}jGX^I6DPm?TCDAT-mve.*it {ǔT6 Nv7𽾵a ;zt\ ލSakp5]G[d' DHA7T_&myEuzn+uNI6F>ƈ2HϾGT/K|07OyF"a]?>}z=tQW<79B[\5OwZ@#gv1&+eҸձ;H`(Ԁga3lop^f.)k]7cuکWޫ`oϹZ-x%݌A/7nzv\m(ScIX H;]G.3wySΒ1T( ̮҄qʅRBRio<0j_{byoŗs؜Wt 37\;7+,//PE\ W^&Ead~Hms]fA!oŞnÐs`1&`R  endstream endobj 111 0 obj << /Length 2062 /Filter /FlateDecode >> stream xڭY[s~ׯ e5'k]q:eReH,0_sFmy;O@s/_󫳧L(Բ:xQK"yV nۋ2zth' /|/ޖ6Zk|xCy+9^ZfF DE]V͸u(0jrJrl.>^5Ɋ VU([DZu98]2i^_q#h\u?V&"0"mon@]>ħaմesPmʘ9ֿ. @/d n %vS #|J4HV\͂ͷHz3JЄ%NDq7g?Ҥ'$wtpb:yw瘛 3r^,;`eP` h@0z9ҒLʉ ]7yƈ9QI^VL0{g4)}~j&8L(M#G&Hnjs8z5Q1ow]5 eP;c m|Rjms(цʞBnc")猭4&ߞGkyĦ+Xb&nʵ_v@\sA=LиahwX A8]H?v- HIF S^pFXXc+@N0r 4r̠+VK=Lɦ)Ɲ'ɑ?=>OXO +ձ-Ώo#G Ɖp2T\vp/6K{-b߼9YĐ-eF`LF4fs6c yR3Fe1x3{:ʥyQO|&4V` w x7D1#*LW_h$B);ͣ z5Zu`2La8"[5MLȈBi6{QP1g#OڐVG##Ir*OB 3u=FbK,<}@,zu:-=l}tmUM8wU3} vnc@ k6uU6j H| (# z馈4 rQ 1~V*&RM>ݸNX3Z`JOC $P cP Oidm/%E4@-p.u_PPtjGM#r8(f0$`̯,4x4z8@0%O0X">`z׬nSs:IQ]cR=v\5/@v #j6@~L~}ỠAbH><{?pk㵁Vvz?rj4 ar&AK~yHfW.fE ti)*"&%FDl@I+c%|6X 7'4-@7Xy%gnTX=p?y5"~* ->`g 0h/> stream xڭnܸ_1ˎGE)]$@l҅ElIHIc;CRԘEċxx7|}}QoV)_Q" jytz0w<]9-vžni\Qr/`%5eK U3Np،;Zh*)zk'j7xPLM߹K둶c]W?Wj dN4U %aF\KFNd˄N|'^Ej=Ɏ~@ ^s'C?f4*{`PH|(4,FYMN.$G1Eb ␞|ijuH4_PBr'<њ3;t fL&boۣ&+]Es&ݝkdIGPq11gd4@LE Cw Y)=۝.$mEm7^v7\LMW%}Nf92}9|] OÝڎ=m4ǠPof@ׂQ|EǵOPȰGi9x6U1ڰpPob0ajfkhQ;ƏM`4i8q0Q 16h 2n|`>ߎh&D&UN= 6'8X$ Y$hɐH``|j}lg~& MPR&O`3 8x?U0K%F(Y]#u$ΚYQ@i ; ?li8Wψ}A,+ %^&Q2WSѴ#*&ޢЊWp 9|]iGi2<Laqrϊop60]SCt.(W%5q ssƃI  q/i4K#̗S8Fd5TJ+Kn M^0 m5иp2PnƒmHg.9zӍd7o.wt \+"wQ$IXnufh2mB^n#MiEn8]dW63O"eK9a4Xq= ˆq 4 ACpTsfLDsZݙثx //(HE2]% MhEcch06f,qdl,H~ hU淼ʀiSC/)Jd:u&C)/M>mgoY~9m1؞eʕ8.l722 esԧFqkp;T!5Guk䎦+[1ué`hpz<2VS4j0k$e)t-{#joAӧ5s"]ҞO3lӖ^^Nb_ eQM%0 UbIF.)݁W=B\=5 ;'j.Қ.ifKїP jhZC! JNbܳ' ) M [/[䪞Y;fUP;oڢoƚWYdc ~7\+ʒ%+5Wre [[_?꥜tL3^`/?禌{alޞ/t:T .-]W aLcmiP|h kVkC!N_u}BݶE@9fb{]e?exH4`J7~,#RKIu endstream endobj 118 0 obj << /Length 2100 /Filter /FlateDecode >> stream xڭYYo~he4[tz5@M` ly%RҒz%؞_U,R-m{Ūb}u>ۼ銇, S]b) ̊Շ fɋ5: ~y\|]2B3MץXHUb-jY 3\=sI04o* ,P!5p2Ȩ&crYH_QCDP.֤JoOA$!Uz8@:?ArШG7{a$u- T* jx]G:.dCQDdhbvSETJ]TItvQ  2{:io: ]lKR۬/Mf }Ym4Mҗkݰ4'GHdNoD{m"K =AJܙ/ ) $z4z,'NtmF滝j5!V~c'[gKdˆөENz֥qlD xۡqkf([3!b"8`BESЪtzNw}yMxV Ahm膐Cn(Y CEi`!AĠ)]$\( 7Fɍ(Tsop1 t3rDʐ 1H4G5,h}(gqZ/rt|{Gzrޟv<Ҹpvv[q4u&2]\hw;c'5lO#~)!‚WcCh߃a=qN[X+Hb@tvED,!, `a/g+"aQt Ldg>Lޒ+$v_SR׳S!e8z :7Koa̤+%5\~k.n,ei(gPRQƒ.d釬Wv]c΢dP !Q0 E50 X%/]ũz!@FգupRrZ؆)#'Tm g§-eJ ٚڕxA,V1? l&^iSb}!q#GʍKv@ h|.\bM1g%2l:O|m a]@#k/@BJ8EP'$v<־߻i\@Q>QXq\7VoɣIZ>ۻg Iڂ)I\./~ o endstream endobj 121 0 obj << /Length 2162 /Filter /FlateDecode >> stream xY[oܶ~X䡕,-^$JS^Z4 @YwUh.v;!ZGn'"p.o.Oξ,s^iqbjGgtyGNnO2WE?h\M#p1 f8ggsZ$Ln}'2;Od<*<۹zjUiW~e1]kQ74FʢiJE+ƭ/^2Y,OEX1'{XةLg ]9WkRd% )%x@@-vUTD0%:Dά`0/ϘP)4yT[YTP5(SUg'qԒt G86zh^`.Uԣ.Ҭ#qmK~=Gۺ\_6zsyI 8;xdkkh]/x/,O_I XA_ rK=in&cT/ hXS-XCn఍slTuh j$ўmkrz6O49K<6o٘2bM/1 mEu%hnϳF YP.<0, \ xSq,Pe]&e^XۍgF&T<,bpj*j*f#\֑;qw gBh{6*O4 y:зU|^s/#QTk#P$Acw#,î=<='qQ(J<=}R\5nKm >!NAasSw@!^0T;b1mv41 *XDأ}MZUL[\YBD9كh(_biRԭkt ٤$v5xx 9A'xE":`` 3}@{AqC5WȰ]0q -@M?;/v4du Ir&I,=72%M"W" 40[** ҏV??;Vz3i71LMhpEu5n[q?/^4V˷G38{hԷ> D蠯p3)^3nUE3M׺kvXXEX8eVa{Zz=ąK%.r;@ YךشƵxꞬS ӏ |%qp<2f26}7hoV:X}?I0BPt}jM 4:?Zˁtm/&u"z鞱@& ́/r|Lボ#*Ygߚiu endstream endobj 124 0 obj << /Length 2470 /Filter /FlateDecode >> stream xk r/QKP\H{E||~o -/ `߼9x/xljˆI-KIQu.W2I?l-WJ͍WXYI"\pFכוh+ʥ0 zy_aV&bE$n\j `_"篖L;к_揋tieicn tWgB'Bdɇz##r8 շڲLB{& ^={ am*ZnNvݸƅcvCUv !2qD]&|Fф\N=&lx6a#)m :ē\%$l l&2TC0&-^\\]&Fkf }vhd(vݨ70[& e;~d!2fؓ륰^ lC)?^uʁ۔Ѹ8l\E5,/O1]|5b7m&Ob"s!eW]x$P+i,˥K'Muv glGGb.@h\͚t"VO#V<5,S,9nf[ey=y{Qc8Z5EG2#)! —UdɜqM]V̘<o!2\{9_`Y=͘k XĜNY'v}ڊTV#"#vUdgu_BPk:ݘ' ),ʥASS.\(?l\]כa[`Dژ)Ą<ٻ3dT مa)Vy{Ï颂]Yx}Fy``4w20!3 baH Ea S۪ӌ& 8`} pRߋ 5$=Ha [8 {yǔW6i6"CD!%͓1AX<|Cq3o)U5 rUfQKPuЏe B MLƣր:E}4p3C842bڼrJhrpkAM,QI^Y,,(;ds)d^cCQT2o/Q_Fr>؏*SWI-{܍Xh|ո,:{5(<'X͙qr s 7vplfy}0nQ)vsIk6?F {b6jS,3r|ѣh2 S (A.+ 9 =?Tމf僕oιyâ.x f|5ozN_#/5X9*HT~QbUlSQ/<cq̵z#B[UyQ85{+,|R)jS{p#M;jz #7tnJ1~ТѸwD_e0@ѵo u 7VQX]z`..hkF2a ` DX?!LQ0v_xs_썧plTmQ?S[hWc22ܒthr`?Bj;cϪE"Y)p~8HfnQ =+lp8 f *pt<de?@H?Q9BOn4K{c_}S|J6$3B?'vU4+YnkGMXāS4y9ԣE 1ID70!_pxvpN2NBC6^Gu{8>gєX.X1l4)"Ă»'Nc'b,ӏ!m=ES˅@T0 *Bct b,Jō ˪ SrkTM=z)yDWm|wK %R-)1vڳ`@.N) lvL|xOw.ߦ\%+*'gKít o1sKsz1ǀHiQ{4aw9=4@؛& -w^C 2Oo2@w.D&M L]2#L )ۂㅐ|$ p9#fئwߋ p> stream xڵZK6WrHQ&^oRd7kO*sHUdz~ Ej0=Dnt77?tc)]Ό8ejgdgz\1_H+*<ʱIE?TJ"Z'b7YW@i?hsųL~_j.lt?_XF=&WyX-՚]T֮˶,EGͻ׷㗟i܇%N7'fiPT4'v6subEut ABK5o]  c-Kt4[ )Z(+ۚZU56~Xs+,,ei"\a-WHv+83J;.T6pX{G<ӭB1)JHr.U=hsYElG P#J&eF jdb@k5ڥ7$HO)R T% ?Rx@JΪt%^"ҁϴ!MXj& d> p~X-_Bκ9K1!jaeL@D9D$qt-4 &<(~xp8OZiXc-!Zl -㉆0L~_Z|-ԧ@ x! 0֑ڛ:}s$ X\B2Ts3H7i˳jF9xy VǞ%YyAhB>#8 dJyS0:sG&vU[|r񷎽\h3\ P|@aVfX >M" iDyBdbԙ⧼jKUi ގr&!OK )>/. 䱋#v)lX"pi `$5/B2Ñ41D"/y,T@/k]Ĥ&MVmlZ꧄ >32yqL8{#y\v +lySde߼dՊ Ri$f86CE4Z9L@hLwL(<.P\ У @ϣ %yk\ǻ,KtψS.CEYiV/qwصkAň7d5&\ ѾfݮɩJqUn|pԆiDJ&#λlpj"[܁e*W-[WK=`|4t;vQv],u&t^R <<#!X{UQ4ۭ+_uŮkB M%QP%C}Y>5;^/7To+Rآn ۊm-Mk F3>ȨB9s7Ь0"=qBwX09$h2Uq} KoN?՛vEYRqk%@Olh & 8.>˽HppH&n,t<2?iL:@t10zAO?QӋL&cކ&k5 û0HE*tG,_ERIl}wBH #< e77&Si'L/dA"$FxK'e(hu, Ȃ QAQ~Cm0)wq !mC2omu} NM烧Ϋwp>8948X8U>l23f KXyY' |8+ĕ rΟUI:4hG@@?瘄s-.¶L>hIpF3"e> z+#_N]xh)˳ ݸ!_ eG^bVwLg u/ ۀ)\=f.(!2-|DU.n'"O^Jn0ׯ3gSCTb>J\,D 4|Y|! %`1þv$&j6%s.-ݎ0y@bw,.嚵* V~2-}R׳]=Uw<\}TѤsjv'O `ҭE u™>\6Y?L3Fm[niM\߹^p~tfw!˩(|2IɺJBVvC/[(am(O2ڧm;zO%u|CxHQ뎣+ޘIj endstream endobj 130 0 obj << /Length 2389 /Filter /FlateDecode >> stream xڭYYo7~ׯdї E6qdy4aIS"ђӐbc7gާ,fMf,T0+7/RVrpw8Kn>5 HXWE>T,O>:v6,-[lٚ^\e`'&pꇮjn_"߿_{5=wֻ𥉉jۥ<'؊-)Xb6U#ɷmk,{&/pq, 6}%u_6?]s 89j%؞RqrCeO4zA^W7;ͥ/ H; Z+Kqghǡj,yڊ>yrȇ{&?'Edm/3wH;:ؔ%I"-ª 0rH@oL:{cy{ˀ J<- Y%7VY='EN1/\̙J `ZE`~M瀈7" B"V3sL󡵿{Yo#?XE,Y:+ XTӎ{i0>y'j!CY6 4Xxo`" hiځw&5@\o%?}R Z  y{{ E:0]WTE SU ědX\0€taA|$ `xɀVtv-PZ5ED2, Sd,?) gϾR, PpᦄE0@3`Y|: v4=U b#JetGF`4 #(>) 2﨨ۍ|\way"g*!̮>u/$o!ZHdK-} Hq@QVBhV[ ԁBQ@8 U6Mȸjn :j\u)NG'ppϮUTf122j,ڥP4*FH=zכk[wp\lO=2_bO(C@&/a8a(A tzДˡ׈\C@Q[7ǡ=;lcP*߸V"$`4O&+‚%%ECC0=8u=zw~ao]CjwT=__AqI*90@x6\< HVMXY$[,A~j8rP(*>W59s_+ZO:|uk4%5d:?. endstream endobj 134 0 obj << /Length 2200 /Filter /FlateDecode >> stream xڭY[s۶~f"43I'3Mrj}%dI*ł7V:OGFLdmd-ZF:,Q<^G2*Z쩸U[_@hK%̦))5q.@I7ϞEspJOe^}a4xčbJ( F%>%LZ;}$5Z?3eUydͨ)磦T)|qp14nlԡqnޭdѧ hs<Й *BVj᳏_7pKJbQs̘$jd6&.+pa`n dO/(:p[>p``5t2f|1ޜ0ŕuK=gR>dRtʤ$IZ_fRG8J* O5?V>>+ UIU=/Y/Lc=!WU"қ-7́J;> JFm9y1Y_'%+ 7<4kt\V5]Z I]~\8#'IQzZB35np ą߀PB~Фh8PzV$dMN:]S.f0詅,+w}u"cfNX oW\1taU4#*<б2G^r5> stream xڵXs6_CǾY7n^iwfĞʒW?dɡX$ $?ۋO\&XTr{XKN-IMn|>q'6/gbR?R*܏/}4d5K^M}@P(%VJ/c]hx*0hMpx{{jЄ2Kxe5aF&?d KR­I:Mˆ5FErs! .,~|>5pOd4 !1bM9m0F2?nn޿}P:wjL yRL"}jD3E4q7錙IU6y-l6*Ŭ_7?c+s|Ed:#/'IhJlj)D*u'2OGS_"TJ齦2v"#VBf ڍdg˼}pq(v׆re^gmǬv"l[x0N`Eug4ǁ0܅Ky OpM’qE$+!B46Ff/tq)QZswa!擔$d N~_%x S\_?N{:w'ɶbȜ/+XƻRo i}8w[RO?@7ϻi$ʇ p'Bϰ!T^]-EaIG~.ɷMQ6W`]D ^DGLe\VX&W!{zs+g~0a(T;-(w8lmMp"0XTbmD1[g@S\ ?[h3O\SwkHJUzQ2L5Ss7+a^#* ĝ; S@Dٔ0ڧs\>Y hs~#VkB79 z2#Wb^È@8e c0o"QVV[9)1GzkpPD UUw> ;?ZG,4`&};Sd.#7/к凈;x[6jiK?Ƞ3Jhy`Q0!}oQ\cG gFXWXQ5&@--F[* uPh3{iв9dH:=k-C@uqkpQ :mtƞz>f3#ZRwEvb>$_9ЂHv \*ie&;fyrCv] B!]ǵR3Mc~o`3';[?sZsطjRt P H)#Z) -ZktXR#yLB.9DB.PGԿohxcYHrv.;0,&%ȕKDG%Q߆—e/ ҇/vD/WJ{_Hy.?`¥}OwW0o~N s\)cq౮ljOa. ;Cwvط j]ik^#m^#'e΂/Q~D3 R<fP'v endstream endobj 140 0 obj << /Length 3006 /Filter /FlateDecode >> stream xڭZ[s6~#1L0yvi;ݦvCweQ!8H V"Y/~.3,̈I2(<-f-+u~FjG/M޴u,ʢ"߃?zO7em֗s7zw?_ ,cY*R"@jR%gߡVM)3pU™cvЅ6]-WJq]qɴi.>\pHf|f2&,4KYqw_lW?&3;w fe6h5{{oIpbARE:,>$}y"Is!YN'l7Nu ՓRοj"jd,K]0Tdli08vs/Ӂv (?fm_mnWz.Vy}W<1dd4{6Bo2U?$1m]q*îX6ɻ^/@ê{Se>ٷk% &2 +-FNm =. 6oS B)Рy*W坃&~SH ^f'^1TˆpP(uo_2Ԣ&Y|X̻. v`+ 4U[զS*I8nzF=CiT@H .Ӌ SN\0gTB-m[=eT{GajzbKKAH?aKx'[i{7.sNnQŶ ۤODh<yNDOUHʥPa$; ;B`$Ni Qxe'Ɇ6 PٞjLHzB:8,'3k7#?w<(DvR$ò>'#㨅Ces==Mv| Ah1eAKR KZn8MUϰ1|XJDM\㽚;ӂXc-,LYO>zXEQԓ,1iW3A[r7 Sz z)#B>U* /dJ49dyQm[WZra7kw+]Hē/ū)p x%Ң EiD4_DJLuʙ %Nb "EEB >(iuj)F: y 7%pBZƭ:caʁR\V2"M<#;n"|s)6+DR8&' 39CIٓX !D8*9Kfk e>x~( A Pٻ_w}z2PQ+%c! RꪫtJaYb=**[Du/G|%8)IϒP P(l4;Yͳ{,drcdWu#Qecԯz_dpjMyaFPHIԢ̎apR){#̈́ ,3 B= Pɡ9X"b*ͦ,%Nv֔ J΀s܉utn?'dDɫuLùfvYj8 % 7Ĝᒴ*;D̑' 7^Q5UQP3\1tBUFL DĪ(ʨ/Fœ$+%b`iVmo(n1p>˜AU3KZ E=]Ƥ+1ńIMkܻgiZu ŴpIZXOBN=~M3ZwtgCN+*q]H-8t:5yrEٴEݔm/Kp]ZL jbqc鮾H5SF~vJc'nfASweߖEs~c~Qvը.2oj7H17R:>?1b]e4vY:jFn70sof#ⷺɮMrM3|̞؊퉙DnRxi8 8$P*MS "0"oRi}Vo H5 SbЉ݇yV7KX6A1 H#'&mkfUM^;Ц_6s#Ux}Jǿ}0jǚCD- {EAwkQ/L5vf?oڔJ Ti" #)`Qm?BIs ρ8@r\, Ova~&:RYN!ixN/#Mz1kf@\>ޖ w+-}@i5}*fS4+13A#vo*TSHdVIk endstream endobj 143 0 obj << /Length 1344 /Filter /FlateDecode >> stream xWR8}WlI0\f+\v13[qD ߖ%$þl!:}:-R#BO|#3!B=#F<4n{d2dӢw7Fc$Js6 e#B GVN|ac`^t0G{ M`,JixxGX}bXBHaKXΪQyu>#nxLUM`-'g:^++)B:]$7@ CA^y[^+Ğ%EAأ(:YOb4QZLŦF{8 L7S6׃A7J:5gi)AH AWù,x])+',-9gBӞ !pHR&gr^k,*M e#.Ѡ Uֳ mW 7X=D_4ەku'=ya.᣾t ވPSe=o>30t+;KdgÒt L=8Lϥ#A\A= v~tݪݒxǍTȄmt249j|Ԣ(چ&XŤ +f#,2}^9M|f|Q'Ӕ ﹡wtLPZI>'NO&&Fār H}Pzvq! endstream endobj 146 0 obj << /Length 2335 /Filter /FlateDecode >> stream xڭnF_!!+v}R<b֙C61ɐe})Jnk^>>ZoN,D0p/f!df]|lF uzJ7xsY#ιTeyŧ˫.;E˪㋻Pwmk5u !tVU}_8J묨2X4;:i4o8[!ڼvnC(!jjNtŢj8r?uK)s]4O]wRxƔmYT!<87tݶp:M!QD۫O}Kߏhvu!/uvzĂ"2&<aQqk(7%sZnts6_8` z˺!\T͹%|bs/pִgO4%:ͺ}(܂t :.=,is%>!!q|hZ Tl4H)ѽu4B-#ŭEAdX0P œ\ޜydy>qTL|g&?Iۓ]M#$\{ByB{++/ @!̌x.JaYN(B*ؖoLp`nW&DH)gib`fY5er OH0zEh#"pi"]){ gnG4hjM@f!ne.\/$1kc`#Plht`h! L̈x9QAxb!AFŃ<< Cf-Qxt@,|EJtĚ1LL9UB"HQۜ[{9trmTkEfp^\H&#c'y[Ml D,z]fO~x= gZ}=Nj"yCB:hGzҨ hܭls$\9y>O2+U3X' ey1CS)a1*hp5צ endstream endobj 149 0 obj << /Length 2425 /Filter /FlateDecode >> stream xڵr6_F>n:ulNgMw(R%8ٯs"eĉ- ?^ENXn <&QLUzXrËp͍MVY/MMER-a Q7pHJ"9q?gF I ђ0%lsQ/ADVٺ Jè =I+=QH"mÝ$ĜGe{XAXQw X(A8'xLD .ZN<+_2"8 y)ςTD仾-(M3\(<{i4B45h`3޲-~ke^?41yx$ ρ= 2P/*wm vJR #Mb3KΒr{leca1lxN(Tg $*g9c"sΉEM8 BQ)N aZ9;9ƝM`qpVi &O nK6;9ئm)b)Κ+uV8QIRWh DF% 7aAT@`u7ON6i>vfUYm"N;{ޮ: 8Zp_kE4"+o%!hB9eU;>Uq?Nj4-c!ivv( ;-냽{nsEդ9.pe7J8yfg˪k|\[ar(4;T$pq Eֻ%:c 7(|X(v(։-pڈAҴ)[Q4\^<(PĚSBPq_Hcg߁| :) w8,f4cܲ%ꡲ⿦͇#ZL8/ 7:&lۦozvT (b#`:8v_8ޕ3*c3$ tLS?7 9( [WX04؛Ov%7EnZnwޕA~/{g}bLElJ }R0'a&榽j24* x nm(bv(a #M60ڈt`z.٩LhԸ<15wHVIx[`HA7͠kp(~h(ؖ!@0ŔEsG& /.iV2l2 75j-piF?1WϨ.-8#aw魍9$|[΂jT&UC`V#4nۺ\+0/ it 2, 9 [Kki֒K Yk> stream xڭ]s6=BӇZ#@`5W{i@KͫD*$7]PD+q. z}wXTi!W7 6-Dl%B iR4G*_^hg\n>Л ִzw޾Ee[n}nտ^~ƨ e*%8ʹ3+%ji쫦itWv4hx7 ,6߾Wkk*Oν׫!~ g`h=0EҤe?3YMy\ʒoK@IOU=_E+YfpܴQnwXݢErdBY Dr-o5N(e{Ջw/$, ڊ4yfD&b}ob /r [ 0,._w "SBKxQ'J %3콯{&MI3ҀA҄ńl34I%3P2nzF9.Ʌ- ( G5pm :VkYڡ arx3ڡa@)ۺtTlĝBa)\P)spA\ +!O} ]AWS 9f(*Q'1]3P"WnN#~8S[1Zك39<XWiOЯ@3v4O-f߮|7!|1H!E"ăTl4Y1gB0#G1O+oxk^N;$Q9r\m>0/§%-T^Gf>+ߵM;Z6ժizͻ[ gOҧ.0N`h\nV״`f): |sfiգN&.E+BؤFsd >g?aqv> k(YpCf~!=eϠE6 W{i98 b\ 18sa:øV'[xC"ihxy\71ČROvP][r}Sn+TM'͂ ݜSh |[--CgTƩrԤZCO_b4⺦i7W2 2X+rk7QFG3ĩyePLsꂲ|vo &N "Dq^'TMG4ftƪPPo4T윂[nd]u'w"DT*ـa}攕`6>\ B(Q)[Tтz 4;ٞ&3cw>*F p$\YUw=|0LXs뻣>7a,NK(sՅ2W!-u jwbti6s,%n7Q֟w3bL0d 1 "a#Z_GWs5Z%#,J пbr- ,!ï}id쯣p&xY(RОCJ, eBǟ}V y4Z RDyBC0S=iOC>}Hr\1cnsOނYK,[ Ng-%mYRp1+SHQ:r',%1D9ZyJNJ䃔fxsmР'cA16%XW~Cly-aM9a'ТesТt.l0)7cI6|<):iI3[\Ο (SX\'鐃9з`tp&9O R@ 2{S%G` ct~(fdzh3@63Ov=|u~ Gp ~z wgKDB܃q/kjn# XւDZGE1F K]6ܫ`r(.|7{-mIsnEcFYUH]Lf' ^%}3#B`d͘pz{u5\o eAx;mu|H=𳏶Vpk tNV[W-sUi +Pd*s\fY`mc endstream endobj 156 0 obj << /Length 2313 /Filter /FlateDecode >> stream xZYo~ׯ  ag&߼~#i =([==uWU-}wv(qԱٻ3CVzo*o66ۻ/eUx \۟̿û_~'FƜ3­wWg讶[O䔜Pǻӫz-ʼ l]P;2.lzxpl*/A;[r-ld(OE{*X C p u#Tv)rEn/%Br`UP|lz˶;u1[y՝ᣄ$NlNHVtg^$hJ19 mOcӦ9biOo7w*F%`60GQW|UB!4Bid>  Fec%#NI©o]|`Mgl&#Q Hft?(ag͌37>S8Il .zJ!TBD`*NﳄCO9"H-4R?4T17Rbyl;(} GY!ȜIjΉ=qHJjI\D($ (T, tN- &Äm*DKtc3,ƁG + 2l-T p#ԖTB5xj4, 4d-+bd?U!&Mқ# !_Vip+O@FFc1_kθ悊V"0Oah#a+ԺN/v۬]nDt{ ?ŌgqŒp'=)A"tnEJ>ӗجbUyp`X7}kkYEwmg< -Xx7PѢ 1~NQSWzpoR=oznȶۦBPq9yyoS)HjI߄JE4%0/PLJ^C\ԱK4Ľb>x7CQxM/Y3X m"ϑYd}?X0ߑTU-C)at+27TF#l0.. zuBŏ6= }]|`ahЯ.%\Ƣ}ARa4:5CLezЃNv[hS|ǧ'>zB5@f紞0OJyL/Znu0-_8ďL'T9x2ySWm^l>Ap@|$DP-`xOE*0{r{z"ۇJpʾon$ 5BfB,R# K _nEզaPA:t iz;<+@9Q#0H)ېQ J1‰vHT<͞C }9s[SU:{#7 yUrrAT)JBv(tO&hqEiRP )C~"8 WOG#o~Pς?&w#?:e8   hx2ЀAzqРxh4Hh8ՙa@wsd@J̰/"Y|4YbC*^YjJ(*u1I0IOZs7JSRܝƤߜ6/wOZN]5r.'&x8p C E98sjwl: HD,xMv-xƝ7 ]k͛lwyxY7W/=Y=!_M'PSuWnS1jc%֞,$LUW*ɂdb,8x"^w[Y 5L&1l-X22^?A|QY1eA⥸e4X2 ݧŠ `"4__VMxi-0 &FڳI\BFQ-k~R70w: endstream endobj 159 0 obj << /Length 3054 /Filter /FlateDecode >> stream x]oݿB DktIN[hPBR;$۵[h_ۋX$,DZ0aBꅁPjkpuşa*b҂WE_RJZ;^Z''-vuI[v):ݲ76'9ɫKO^c}D8`g`, *Z,9gF"n{ =83AqTڂ[v+D0',K,%DϽ&ez!i?L=5i[le24X' j!^ʝRJ7yMl翅\QC@'/.؜5Sq4!lUrzԃ$`X&b-Z0éf:j榰' K3G(+/,ӱd< &`&a.,]8?[H#XcX8d4#g01lveyۂABr:jԉD1gu"O8<6/fhFҊ@l[8-5]]Zn#)+.F\p *GP;hkGUz۬)ADuҶ-ìʺol.#JN&fF\qN.8SzXrH6CRHm@3sŠk&֎KBPhz): mوMF\ly6rX $͔ Uqgm0% ́㱘 gp4ӟwE8iq+Q,4cJ2 ,[d,(]@̡q ~0H_^m 'hٌVG"=r G}\DO5>/˅ wdrtt(# Gw;XAwZۚZ G팿,懣q`LE8q.N[{?8g70o#@oO倓C`sI' 1低]M 0A_`MtdzM@*r2 \Eً(K gvm%~8w+LV 9-A l /&NU 1Mb*~;E&~:r)ukZ ̀8mx(e{ȼ]C!xP>%dɄ!!"bT|zRk82ȷ]ΰҀ##|F/Al$1ʫ eԦi5n"u he #3Ii,A}P7U+*Rw[%UR{-TqHP.)+de2{^h1w~[ìcǣ(h(P҆Mݟ~< ~jvX E]pm? *sjZ!?2CMĎp^=8㳪+oeXL8@rEBh&0}7T悕[ !ɠ{C- O;GqgL۬Bz[;{qx@lc*7?':/U A&pkWzwWri3ڏgP .f|y ^Lw!f-='|"vwmɦ+ ` {d~pYJz.&rG-L+5:'0܆l\iuԦ|ۭb``@Voa+|]Ͽ;J'W=iB}頞Y$ se Š+Jv6l|I(gxv4zWO )R) Q3NcT`'4>F, .-*nC436> z"} igArxE44xCQ{-6TI10>Nbz-@ 3~t^Pbӂ7 v5kNo#s% 4J_)-iil4e !{m횂 yvmh3|WMnӗ>k+ F0k4#clMF}ہ tpݤC+/n#l&gw{U@A+rZ0!{ku9>`I)񅨇>QZj9/T i׿c߾TyojV~lMmܒC&rm' L> 8x-= =Y! DPK#U*UńXΦ: )_WH9_PZmli5irR:WccagzW~QC>P!qm/"-?k!NwבL# K༻xO;3qFKq-K[UAP~bKW(`p~/z ^Efbqf'`T" *dh%N!:4xz*3yĢXdIKƎA0·z J8\їRBTY'7l|<OG8/*1uh&,p|e_ &y`c֙Eq,?x jyϮE#B_Ddst08F\=h=,8zM