Mercurial > repos > ktnyt > gembassy
comparison GEMBASSY-1.0.3/gsoap/stdsoap2.h @ 2:8947fca5f715 draft default tip
Uploaded
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:21:44 -0400 |
parents | 84a17b3fad1f |
children |
comparison
equal
deleted
inserted
replaced
1:84a17b3fad1f | 2:8947fca5f715 |
---|---|
1 /* | |
2 stdsoap2.h 2.8.17r | |
3 | |
4 gSOAP runtime engine | |
5 | |
6 gSOAP XML Web services tools | |
7 Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc., All Rights Reserved. | |
8 This part of the software is released under ONE of the following licenses: | |
9 GPL, or the gSOAP public license, or Genivia's license for commercial use. | |
10 -------------------------------------------------------------------------------- | |
11 Contributors: | |
12 | |
13 Wind River Systems, Inc., for the following additions | |
14 - vxWorks compatible | |
15 -------------------------------------------------------------------------------- | |
16 gSOAP public license. | |
17 | |
18 The contents of this file are subject to the gSOAP Public License Version 1.3 | |
19 (the "License"); you may not use this file except in compliance with the | |
20 License. You may obtain a copy of the License at | |
21 http://www.cs.fsu.edu/~engelen/soaplicense.html | |
22 Software distributed under the License is distributed on an "AS IS" basis, | |
23 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
24 for the specific language governing rights and limitations under the License. | |
25 | |
26 The Initial Developer of the Original Code is Robert A. van Engelen. | |
27 Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc., All Rights Reserved. | |
28 -------------------------------------------------------------------------------- | |
29 GPL license. | |
30 | |
31 This program is free software; you can redistribute it and/or modify it under | |
32 the terms of the GNU General Public License as published by the Free Software | |
33 Foundation; either version 2 of the License, or (at your option) any later | |
34 version. | |
35 | |
36 This program is distributed in the hope that it will be useful, but WITHOUT ANY | |
37 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | |
38 PARTICULAR PURPOSE. See the GNU General Public License for more details. | |
39 | |
40 You should have received a copy of the GNU General Public License along with | |
41 this program; if not, write to the Free Software Foundation, Inc., 59 Temple | |
42 Place, Suite 330, Boston, MA 02111-1307 USA | |
43 | |
44 Author contact information: | |
45 engelen@genivia.com / engelen@acm.org | |
46 | |
47 This program is released under the GPL with the additional exemption that | |
48 compiling, linking, and/or using OpenSSL is allowed. | |
49 -------------------------------------------------------------------------------- | |
50 A commercial use license is available from Genivia, Inc., contact@genivia.com | |
51 -------------------------------------------------------------------------------- | |
52 */ | |
53 | |
54 #define GSOAP_VERSION 20817 | |
55 | |
56 #ifdef WITH_SOAPDEFS_H | |
57 # include "soapdefs.h" /* include user-defined stuff */ | |
58 #endif | |
59 | |
60 #ifndef _THREAD_SAFE | |
61 # define _THREAD_SAFE | |
62 #endif | |
63 | |
64 #ifndef OPENSERVER | |
65 # ifndef _REENTRANT | |
66 # define _REENTRANT | |
67 # endif | |
68 #endif | |
69 | |
70 #ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */ | |
71 # define SOAP_FMAC1 | |
72 #endif | |
73 | |
74 #ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */ | |
75 # define SOAP_FMAC2 | |
76 #endif | |
77 | |
78 #ifndef SOAP_FMAC3 /* (de)serializer declaration macro */ | |
79 # define SOAP_FMAC3 | |
80 #endif | |
81 | |
82 #ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */ | |
83 # define SOAP_FMAC3S SOAP_FMAC3 | |
84 #endif | |
85 | |
86 #ifndef SOAP_FMAC4 /* (de)serializer declaration macro */ | |
87 # define SOAP_FMAC4 | |
88 #endif | |
89 | |
90 #ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */ | |
91 # define SOAP_FMAC4S SOAP_FMAC4 | |
92 #endif | |
93 | |
94 #ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */ | |
95 # define SOAP_FMAC5 | |
96 #endif | |
97 | |
98 #ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */ | |
99 # define SOAP_FMAC6 | |
100 #endif | |
101 | |
102 #ifndef SOAP_CMAC /* class declaration macro */ | |
103 # define SOAP_CMAC | |
104 #endif | |
105 | |
106 #ifndef SOAP_NMAC /* namespace table declaration macro */ | |
107 # define SOAP_NMAC | |
108 #endif | |
109 | |
110 #ifndef SOAP_SOURCE_STAMP | |
111 # define SOAP_SOURCE_STAMP(str) | |
112 #endif | |
113 | |
114 /* gSOAP 2.7.4 and higher: fast look-aside buffering is stable */ | |
115 #ifndef WITH_FAST | |
116 # define WITH_FAST | |
117 #endif | |
118 | |
119 #ifndef STDSOAP_H | |
120 #define STDSOAP_H | |
121 | |
122 #if defined(__vxworks) || defined(__VXWORKS__) | |
123 # ifndef VXWORKS | |
124 # define VXWORKS | |
125 # endif | |
126 #endif | |
127 | |
128 #ifdef _WIN32 | |
129 # ifndef WIN32 | |
130 # define WIN32 | |
131 # endif | |
132 #endif | |
133 | |
134 /* for legacy purposes we use WIN32 macro even though 64 bit is supported */ | |
135 #ifdef _WIN64 | |
136 # ifndef WIN32 | |
137 # define WIN32 | |
138 # endif | |
139 #endif | |
140 | |
141 #ifdef _WIN32_WCE | |
142 # ifndef UNDER_CE | |
143 # define UNDER_CE _WIN32_WCE | |
144 # endif | |
145 #endif | |
146 | |
147 #ifdef UNDER_CE | |
148 # ifndef WIN32 | |
149 # define WIN32 | |
150 # endif | |
151 #endif | |
152 | |
153 #ifdef __BORLANDC__ | |
154 # ifdef __WIN32__ | |
155 # ifndef WIN32 | |
156 # define WIN32 | |
157 # endif | |
158 # endif | |
159 #endif | |
160 | |
161 #ifdef __CYGWIN__ | |
162 # ifndef CYGWIN | |
163 # define CYGWIN | |
164 # endif | |
165 #endif | |
166 | |
167 #ifdef __SYMBIAN32__ | |
168 # define SYMBIAN | |
169 # undef WIN32 | |
170 #endif | |
171 | |
172 #if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__) | |
173 # ifndef PALM | |
174 # define PALM | |
175 # endif | |
176 #endif | |
177 | |
178 #if defined(__hpux) | |
179 # ifndef HP_UX | |
180 # define HP_UX | |
181 # endif | |
182 #endif | |
183 | |
184 #if defined(__digital__) && defined(__unix__) | |
185 # ifndef TRU64 | |
186 # define TRU64 | |
187 # endif | |
188 #endif | |
189 | |
190 #ifdef __MVS__ | |
191 # ifndef OS390 | |
192 # define OS390 | |
193 # endif | |
194 #endif | |
195 | |
196 #ifdef HAVE_CONFIG_H | |
197 # include "config.h" | |
198 # if defined(WITH_OPENSSL) | |
199 # ifndef HAVE_OPENSSL_SSL_H | |
200 # undef WITH_OPENSSL | |
201 # endif | |
202 # endif | |
203 # if defined(WITH_GNUTLS) | |
204 # ifndef HAVE_GNUTLS_GNUTLS_H | |
205 # undef WITH_GNUTLS | |
206 # endif | |
207 # endif | |
208 # if defined(WITH_ZLIB) || defined(WITH_GZIP) | |
209 # ifndef HAVE_ZLIB_H | |
210 # undef WITH_ZLIB | |
211 # undef WITH_GZIP | |
212 # endif | |
213 # endif | |
214 #else | |
215 # if defined(UNDER_CE) | |
216 # define WITH_LEAN | |
217 # define HAVE_SSCANF | |
218 # elif defined(WIN32) | |
219 # if _MSC_VER >= 1400 | |
220 # define HAVE_SNPRINTF | |
221 # endif | |
222 # define HAVE_STRRCHR | |
223 # define HAVE_STRTOD | |
224 # define HAVE_SSCANF | |
225 # define HAVE_STRTOD_L | |
226 # define HAVE_SPRINTF_L | |
227 # define HAVE_STRTOL | |
228 # define HAVE_STRTOUL | |
229 # if _MSC_VER >= 1300 | |
230 # define HAVE_STRTOLL /* use _strtoi64 */ | |
231 # define HAVE_STRTOULL /* use _strtoui64 */ | |
232 # endif | |
233 # define HAVE_SYS_TIMEB_H | |
234 # define HAVE_FTIME | |
235 # define HAVE_GMTIME | |
236 # define HAVE_WCTOMB | |
237 # define HAVE_MBTOWC | |
238 # define SOAP_LONG_FORMAT "%I64d" | |
239 # define SOAP_ULONG_FORMAT "%I64u" | |
240 # elif defined(CYGWIN) | |
241 # define HAVE_POLL | |
242 # define HAVE_SNPRINTF | |
243 # define HAVE_STRRCHR | |
244 # define HAVE_STRTOD | |
245 # define HAVE_SSCANF | |
246 # define HAVE_STRTOL | |
247 # define HAVE_STRTOUL | |
248 # define HAVE_SYS_TIMEB_H | |
249 # define HAVE_FTIME | |
250 # define HAVE_RAND_R | |
251 # define HAVE_GMTIME_R | |
252 # define HAVE_LOCALTIME_R | |
253 # define HAVE_STRERROR_R | |
254 # define HAVE_WCTOMB | |
255 # define HAVE_MBTOWC | |
256 # elif defined(__APPLE__) | |
257 # define HAVE_POLL | |
258 # define HAVE_SNPRINTF | |
259 # define HAVE_STRRCHR | |
260 # define HAVE_STRTOD | |
261 # define HAVE_SSCANF | |
262 # define HAVE_STRTOD_L | |
263 # define HAVE_SSCANF_L | |
264 # define HAVE_SPRINTF_L | |
265 # define HAVE_STRTOL | |
266 # define HAVE_STRTOUL | |
267 # define HAVE_RAND_R | |
268 # define HAVE_GMTIME_R | |
269 # define HAVE_TM_GMTOFF | |
270 # define HAVE_GETTIMEOFDAY | |
271 # define HAVE_LOCALTIME_R | |
272 # define HAVE_STRERROR_R | |
273 # define HAVE_TIMEGM | |
274 # define HAVE_WCTOMB | |
275 # define HAVE_MBTOWC | |
276 # define HAVE_INTTYPES_H | |
277 # elif defined(_AIX43) | |
278 # define HAVE_SNPRINTF | |
279 # define HAVE_STRRCHR | |
280 # define HAVE_STRTOD | |
281 # define HAVE_SSCANF | |
282 # define HAVE_STRTOL | |
283 # define HAVE_STRTOUL | |
284 # define HAVE_SYS_TIMEB_H | |
285 # define HAVE_FTIME | |
286 # define HAVE_RAND_R | |
287 # define HAVE_GMTIME_R | |
288 # define HAVE_LOCALTIME_R | |
289 # define HAVE_WCTOMB | |
290 # define HAVE_MBTOWC | |
291 # elif defined(_AIX41) | |
292 # define HAVE_SNPRINTF | |
293 # define HAVE_STRRCHR | |
294 # define HAVE_STRTOD | |
295 # define HAVE_SSCANF | |
296 # define HAVE_STRTOL | |
297 # define HAVE_STRTOUL | |
298 # define HAVE_SYS_TIMEB_H | |
299 # define HAVE_WCTOMB | |
300 # define HAVE_MBTOWC | |
301 # elif defined(HP_UX) | |
302 # define HAVE_SNPRINTF | |
303 # define HAVE_STRRCHR | |
304 # define HAVE_STRTOD | |
305 # define HAVE_SSCANF | |
306 # define HAVE_STRTOL | |
307 # define HAVE_STRTOUL | |
308 # define HAVE_SYS_TIMEB_H | |
309 # define HAVE_FTIME | |
310 # define HAVE_RAND_R | |
311 # define HAVE_GMTIME_R | |
312 # define HAVE_LOCALTIME_R | |
313 # define HAVE_WCTOMB | |
314 # define HAVE_MBTOWC | |
315 # define HAVE_ISNAN | |
316 # elif defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) | |
317 # define HAVE_POLL | |
318 # define HAVE_SNPRINTF | |
319 # define HAVE_STRRCHR | |
320 # define HAVE_STRTOD | |
321 # define HAVE_SSCANF | |
322 # define HAVE_STRTOD_L | |
323 # define HAVE_SSCANF_L | |
324 # define HAVE_SPRINTF_L | |
325 # define HAVE_STRTOL | |
326 # define HAVE_STRTOUL | |
327 # define HAVE_STRTOLL | |
328 # define HAVE_STRTOULL | |
329 # define HAVE_GETTIMEOFDAY | |
330 # define HAVE_RAND_R | |
331 # define HAVE_GMTIME_R | |
332 # define HAVE_LOCALTIME_R | |
333 # define HAVE_STRERROR_R | |
334 # define HAVE_WCTOMB | |
335 # define HAVE_MBTOWC | |
336 # define SOAP_LONG_FORMAT "%qd" | |
337 # define SOAP_ULONG_FORMAT "%qu" | |
338 # define HAVE_ISNAN | |
339 # define HAVE_ISINF | |
340 # elif defined(__VMS) | |
341 # include <ioctl.h> | |
342 # define HAVE_SNPRINTF | |
343 # define HAVE_STRRCHR | |
344 # define HAVE_STRTOD | |
345 # define HAVE_SSCANF | |
346 # define HAVE_STRTOL | |
347 # define HAVE_STRTOUL | |
348 # define HAVE_SYS_TIMEB_H | |
349 # define HAVE_FTIME | |
350 # define HAVE_RAND_R | |
351 # define HAVE_GMTIME_R | |
352 # define HAVE_LOCALTIME_R | |
353 # define HAVE_WCTOMB | |
354 # define HAVE_MBTOWC | |
355 # elif defined(__GLIBC__) || defined(__GNU__) | |
356 # define HAVE_POLL | |
357 # define HAVE_SNPRINTF | |
358 # define HAVE_STRRCHR | |
359 # define HAVE_STRTOD | |
360 # define HAVE_SSCANF | |
361 # define HAVE_STRTOD_L | |
362 # define HAVE_SSCANF_L | |
363 # define HAVE_SPRINTF_L | |
364 # define HAVE_STRTOL | |
365 # define HAVE_STRTOUL | |
366 # define HAVE_STRTOLL | |
367 # define HAVE_STRTOULL | |
368 # define HAVE_SYS_TIMEB_H | |
369 # define HAVE_FTIME | |
370 # define HAVE_RAND_R | |
371 # define HAVE_GMTIME_R | |
372 # define HAVE_LOCALTIME_R | |
373 # define HAVE_STRERROR_R | |
374 # define HAVE_TIMEGM | |
375 # define HAVE_WCTOMB | |
376 # define HAVE_MBTOWC | |
377 # define HAVE_ISNAN | |
378 # define HAVE_ISINF | |
379 # elif defined(TRU64) | |
380 # define HAVE_SNPRINTF | |
381 # define HAVE_STRRCHR | |
382 # define HAVE_STRTOD | |
383 # define HAVE_SSCANF | |
384 # define HAVE_STRTOL | |
385 # define HAVE_STRTOUL | |
386 # define HAVE_GETTIMEOFDAY | |
387 # define HAVE_SYS_TIMEB_H | |
388 # define HAVE_RAND_R | |
389 # define HAVE_GMTIME_R | |
390 # define HAVE_LOCALTIME_R | |
391 # define __USE_STD_IOSTREAM | |
392 # define HAVE_WCTOMB | |
393 # define HAVE_MBTOWC | |
394 # define SOAP_LONG_FORMAT "%ld" | |
395 # define SOAP_ULONG_FORMAT "%lu" | |
396 # elif defined(MAC_CARBON) | |
397 # define WITH_NOIO | |
398 # define HAVE_SNPRINTF | |
399 # define HAVE_STRRCHR | |
400 # define HAVE_STRTOD | |
401 # define HAVE_SSCANF | |
402 # define HAVE_STRTOD_L | |
403 # define HAVE_SSCANF_L | |
404 # define HAVE_SPRINTF_L | |
405 # define HAVE_STRTOL | |
406 # define HAVE_STRTOUL | |
407 # define HAVE_FTIME | |
408 # define HAVE_RAND_R | |
409 # define HAVE_GETHOSTBYNAME_R | |
410 # define HAVE_GMTIME_R | |
411 # define HAVE_LOCALTIME_R | |
412 # define HAVE_STRERROR_R | |
413 # define HAVE_WCTOMB | |
414 # define HAVE_MBTOWC | |
415 # elif defined(PALM) | |
416 # define WITH_LEAN | |
417 # define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */ | |
418 # include <stdlib.h> /* Needs to be included before unix headers */ | |
419 # include <sys_types.h> | |
420 # define IGNORE_STDIO_STUBS | |
421 # include <StdIOPalm.h> | |
422 # define O_NONBLOCK FNONBIO | |
423 # include <sys_socket.h> | |
424 # include "palmFunctions.h" | |
425 # elif defined(SYMBIAN) | |
426 # define WITH_LEAN | |
427 # define WITH_NONAMESPACES | |
428 # define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */ | |
429 # include <e32def.h> | |
430 # include <sys/ioctl.h> | |
431 # elif defined(VXWORKS) | |
432 # ifdef _WRS_KERNEL | |
433 # define _POSIX_THREADS 1 | |
434 # endif | |
435 # define HAVE_STRRCHR | |
436 # define HAVE_STRTOD | |
437 # define HAVE_SSCANF | |
438 # define HAVE_STRTOL | |
439 # define HAVE_STRTOUL | |
440 # define HAVE_GMTIME | |
441 # define HAVE_LOCALTIME | |
442 # define HAVE_MKTIME | |
443 # elif defined(OS390) | |
444 # define HAVE_SNPRINTF | |
445 # define HAVE_STRRCHR | |
446 # define HAVE_STRTOD | |
447 # define HAVE_SSCANF | |
448 # define HAVE_STRTOL | |
449 # define HAVE_STRTOUL | |
450 # define HAVE_SYS_TIMEB_H | |
451 # define HAVE_FTIME | |
452 # define HAVE_RAND_R | |
453 # define HAVE_GMTIME_R | |
454 # define HAVE_LOCALTIME_R | |
455 # define HAVE_WCTOMB | |
456 # define HAVE_MBTOWC | |
457 # elif defined(AS400) | |
458 # define HAVE_SNPRINTF | |
459 # define HAVE_STRRCHR | |
460 # define HAVE_STRTOD | |
461 # define HAVE_SSCANF | |
462 # define HAVE_STRTOL | |
463 # define HAVE_STRTOUL | |
464 # define HAVE_SYS_TIMEB_H | |
465 # define HAVE_FTIME | |
466 # define HAVE_RAND_R | |
467 # define HAVE_GMTIME_R | |
468 # define HAVE_LOCALTIME_R | |
469 # define HAVE_WCTOMB | |
470 # define HAVE_MBTOWC | |
471 # elif defined(__QNX__) || defined(QNX) | |
472 /* QNX does not have a working version of strtof */ | |
473 # undef HAVE_STRTOF | |
474 # define HAVE_POLL | |
475 # define HAVE_SNPRINTF | |
476 # define HAVE_STRRCHR | |
477 # define HAVE_STRTOD | |
478 # define HAVE_SSCANF | |
479 # define HAVE_STRTOL | |
480 # define HAVE_STRTOUL | |
481 # define HAVE_SYS_TIMEB_H | |
482 # define HAVE_FTIME | |
483 # define HAVE_RAND_R | |
484 # define HAVE_GETHOSTBYNAME_R | |
485 # define HAVE_GMTIME_R | |
486 # define HAVE_LOCALTIME_R | |
487 # define HAVE_STRERROR_R | |
488 # define HAVE_WCTOMB | |
489 # define HAVE_MBTOWC | |
490 # elif defined(SUN_OS) | |
491 # define HAVE_SNPRINTF | |
492 # define HAVE_STRRCHR | |
493 # define HAVE_STRTOD | |
494 # define HAVE_SSCANF | |
495 # define HAVE_STRTOL | |
496 # define HAVE_STRTOUL | |
497 # define HAVE_SYS_TIMEB_H | |
498 # define HAVE_FTIME | |
499 # define HAVE_RAND_R | |
500 # define HAVE_GETHOSTBYNAME_R | |
501 # define HAVE_GMTIME_R | |
502 # define HAVE_LOCALTIME_R | |
503 # else | |
504 /* Default assumptions for supported functions */ | |
505 # define HAVE_SNPRINTF | |
506 # define HAVE_STRRCHR | |
507 # define HAVE_STRTOD | |
508 # define HAVE_SSCANF | |
509 # define HAVE_STRTOL | |
510 # define HAVE_STRTOUL | |
511 # define HAVE_SYS_TIMEB_H | |
512 # define HAVE_FTIME | |
513 # define HAVE_RAND_R | |
514 # define HAVE_GETHOSTBYNAME_R | |
515 # define HAVE_GMTIME_R | |
516 # define HAVE_LOCALTIME_R | |
517 # define HAVE_STRERROR_R | |
518 # ifdef MB_LEN_MAX | |
519 # define HAVE_WCTOMB | |
520 # define HAVE_MBTOWC | |
521 # endif | |
522 # endif | |
523 #endif | |
524 | |
525 /* gSOAP 2.7.15 and higher: always retain CDATA in literal XML, unless WITH_LEAN or WITH_NOCDATA */ | |
526 #ifndef WITH_LEAN | |
527 # ifndef WITH_NOCDATA | |
528 # ifndef WITH_CDATA | |
529 # define WITH_CDATA | |
530 # endif | |
531 # endif | |
532 #endif | |
533 | |
534 #ifdef WITH_LEANER | |
535 # ifndef WITH_LEAN | |
536 # define WITH_LEAN | |
537 # endif | |
538 #endif | |
539 | |
540 #ifdef WITH_LEAN | |
541 # ifdef WITH_COOKIES | |
542 # error "Cannot build WITH_LEAN code WITH_COOKIES enabled" | |
543 # endif | |
544 #endif | |
545 | |
546 /* native Win, HP-UX, and AIX compilers don't like empty structs */ | |
547 #if defined(WIN32) || defined(HP_UX) || defined(_AIX) || defined(AIX) || defined(VXWORKS) | |
548 # define WITH_NOEMPTYSTRUCT | |
549 #endif | |
550 | |
551 #ifdef WITH_PURE_VIRTUAL | |
552 # define SOAP_PURE_VIRTUAL = 0 | |
553 #else | |
554 # define SOAP_PURE_VIRTUAL | |
555 #endif | |
556 | |
557 #ifdef HP_UX | |
558 # undef HAVE_STRTOLL | |
559 # undef HAVE_STRTOULL | |
560 #endif | |
561 | |
562 /* older OpenVMS TCP/IP stacks cannot handle 65536 bytes */ | |
563 #ifdef __VMS | |
564 # ifndef SOAP_BUFLEN | |
565 # define SOAP_BUFLEN (65535) | |
566 # endif | |
567 #endif | |
568 | |
569 /* if we have xlocale.h we use it to avoid decimal point conversion issues */ | |
570 #ifdef WITH_C_LOCALE | |
571 # ifdef WIN32 | |
572 # include <locale.h> | |
573 # else | |
574 # include <xlocale.h> | |
575 # endif | |
576 #else | |
577 # undef HAVE_STRTOF_L | |
578 # undef HAVE_STRTOD_L | |
579 # undef HAVE_SSCANF_L | |
580 # undef HAVE_SPRINTF_L | |
581 #endif | |
582 | |
583 #ifdef TANDEM_NONSTOP /* Support for Guardian */ | |
584 # define SOAP_BUFLEN (32767) | |
585 /*# define WITH_NOSTDLIB */ /* uncommment to remove stdlib dependences */ | |
586 # define WITH_NOIO /* no IO dependences, e.g. remove TCP/IP */ | |
587 # define int32_t int | |
588 # define int64_t long long | |
589 # define LONG64 long long | |
590 # define ULONG64 long long | |
591 # define DBL_PINFTY (1.1579208923716189e77) | |
592 # define WITH_NOEMPTYSTRUCT | |
593 # undef HAVE_WCTOMB | |
594 # undef HAVE_MBTOWC | |
595 # undef HAVE_GMTIME_R | |
596 # undef HAVE_LOCALTIME_R | |
597 # undef HAVE_SNPRINTF | |
598 # define SOAP_BUFLEN (32767) | |
599 # define SOAP_SOCKET short | |
600 #pragma nolist | |
601 # include <sys\param.h> | |
602 # include <sys\socket.h> | |
603 # include <netinet\in.h> | |
604 # include <netdb.h> | |
605 # include <stdio.h> | |
606 # include <fcntl.h> | |
607 # include <string.h> | |
608 # include <stdlib.h> | |
609 # include <memory.h> | |
610 # include <errno.h> | |
611 # include <cextdecs.h(TIME,FILE_CLOSE_,AWAITIOX,DELAY,FILEINFO,FILE_GETINFO_)> | |
612 # define INET_ERROR 4294967295 | |
613 #pragma list | |
614 #elif defined(__TANDEM) /* Support for OSS */ | |
615 # define int32_t int | |
616 # define SOAP_BUFLEN (32767) | |
617 #endif | |
618 | |
619 #ifndef WITH_NOSTDLIB | |
620 # include <stdlib.h> | |
621 # ifndef PALM | |
622 # include <stdio.h> | |
623 # include <string.h> | |
624 # endif | |
625 # include <ctype.h> | |
626 # include <limits.h> | |
627 #endif | |
628 | |
629 #ifdef WITH_NTLM | |
630 # include <ntlm.h> | |
631 #endif | |
632 | |
633 #ifdef HAVE_POLL | |
634 # include <poll.h> | |
635 #endif | |
636 | |
637 #if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) | |
638 # include <string> | |
639 # include <iostream> | |
640 #endif | |
641 | |
642 #ifdef WITH_NOHTTP | |
643 # ifndef WITH_NOIO | |
644 # define WITH_NOIO | |
645 # undef WITH_COOKIES | |
646 # endif | |
647 #endif | |
648 | |
649 /* Suggestion when SOAP_FD_EXCEEDED error occurs: | |
650 Some systems allow increasing FD_SETSIZE before including sys/types.h: | |
651 #define FD_SETSIZE (2048) | |
652 */ | |
653 | |
654 #ifndef UNDER_CE | |
655 # ifndef PALM | |
656 # ifndef WITH_NOIO | |
657 # include <errno.h> | |
658 # include <sys/types.h> | |
659 # endif | |
660 # ifndef WITH_LEAN | |
661 # ifdef HAVE_SYS_TIMEB_H | |
662 # include <sys/timeb.h> /* for ftime() */ | |
663 # endif | |
664 # include <time.h> | |
665 # endif | |
666 # endif | |
667 #endif | |
668 | |
669 #ifdef OPENSERVER | |
670 # include <sys/socket.h> | |
671 # include <sys/stream.h> | |
672 # include <sys/protosw.h> | |
673 extern int h_errno; | |
674 #endif | |
675 | |
676 #ifndef WITH_NOIO | |
677 # ifndef WIN32 | |
678 # ifndef PALM | |
679 # include <sys/socket.h> | |
680 # ifdef VXWORKS | |
681 # include <sockLib.h> | |
682 # include <selectLib.h> | |
683 # ifndef _WRS_KERNEL | |
684 # include <strings.h> | |
685 # endif | |
686 # else | |
687 # ifndef SYMBIAN | |
688 # include <strings.h> | |
689 # endif | |
690 # endif | |
691 # ifdef SUN_OS | |
692 # include <sys/stream.h> /* SUN */ | |
693 # include <sys/socketvar.h> /* SUN < 2.8 (?) */ | |
694 # endif | |
695 # ifdef VXWORKS | |
696 # ifdef _WRS_KERNEL | |
697 # include <sys/times.h> | |
698 # endif | |
699 # else | |
700 # include <sys/time.h> | |
701 # endif | |
702 # include <netinet/in.h> | |
703 # ifdef OS390 | |
704 # include <netinet/tcp_var.h> | |
705 # else | |
706 # include <netinet/tcp.h> /* TCP_NODELAY */ | |
707 # endif | |
708 # include <arpa/inet.h> | |
709 # endif | |
710 # endif | |
711 #endif | |
712 | |
713 #ifdef WIN32 | |
714 # define SOAP_WINSOCKINT int | |
715 #else | |
716 # define SOAP_WINSOCKINT size_t | |
717 #endif | |
718 | |
719 #if defined(WITH_IPV6_V6ONLY) || defined(WITH_NO_IPV6_V6ONLY) | |
720 # ifndef WITH_IPV6 | |
721 # define WITH_IPV6 | |
722 # endif | |
723 #endif | |
724 | |
725 #ifdef WIN32 | |
726 # ifndef UNDER_CE | |
727 # include <io.h> | |
728 # include <fcntl.h> | |
729 # endif | |
730 // When you get macro redefinition errors when compiling the code below, then: | |
731 // a) try arrange your includes so <windows.h> is included after "stdsoap2.h" | |
732 // b) or define _WINSOCKAPI_ first: | |
733 // #define _WINSOCKAPI_ // stops windows.h including winsock.h | |
734 // #include <windows.h> | |
735 // #include "stdsoap2.h" | |
736 // c) or compile with the -DWIN32_LEAN_AND_MEAN switch | |
737 # include <winsock2.h> // Visual Studio 2005 users: install Platform SDK (R2) | |
738 # include <ws2tcpip.h> | |
739 // # define _WSPIAPI_COUNTOF // DEV NOTE: enble to fix problems with VC6 | |
740 // # include <wspiapi.h> | |
741 # include <ws2spi.h> // DEV NOTE: replaces older wspiapi.h above | |
742 # ifdef WITH_IPV6 | |
743 # define SOAP_GAI_STRERROR gai_strerrorA | |
744 # endif | |
745 #else | |
746 # ifdef VXWORKS | |
747 # include <hostLib.h> | |
748 # include <ioctl.h> | |
749 # include <ioLib.h> | |
750 # endif | |
751 # ifndef WITH_NOIO | |
752 # ifndef PALM | |
753 # include <netdb.h> | |
754 # include <netinet/in.h> | |
755 # include <unistd.h> | |
756 # include <fcntl.h> | |
757 # ifdef _AIX41 | |
758 # include <sys/select.h> | |
759 # endif | |
760 # endif | |
761 # endif | |
762 #endif | |
763 | |
764 #ifdef WITH_FASTCGI | |
765 # include <fcgi_stdio.h> | |
766 #endif | |
767 | |
768 #ifdef WITH_OPENSSL | |
769 # ifdef __VMS | |
770 # pragma names save | |
771 # pragma names uppercase | |
772 # endif | |
773 # undef WITH_GNUTLS | |
774 # define OPENSSL_NO_KRB5 | |
775 # include <openssl/bio.h> | |
776 # include <openssl/err.h> | |
777 # include <openssl/rand.h> | |
778 # include <openssl/ssl.h> | |
779 # include <openssl/x509v3.h> | |
780 # ifndef ALLOW_OLD_VERSIONS | |
781 # if (OPENSSL_VERSION_NUMBER < 0x00905100L) | |
782 # error "Must use OpenSSL 0.9.6 or later" | |
783 # endif | |
784 # endif | |
785 # ifdef __VMS | |
786 # pragma names restore | |
787 # endif | |
788 #endif | |
789 | |
790 #ifdef WITH_GNUTLS | |
791 # include <gnutls/gnutls.h> | |
792 # include <gnutls/x509.h> | |
793 # include <gcrypt.h> | |
794 # ifndef HAVE_PTHREAD_H | |
795 # ifdef _POSIX_THREADS | |
796 # define HAVE_PTHREAD_H /* make GNUTLS thread safe */ | |
797 # endif | |
798 # endif | |
799 #endif | |
800 | |
801 #ifdef WITH_GZIP | |
802 # ifndef WITH_ZLIB | |
803 # define WITH_ZLIB | |
804 # endif | |
805 #endif | |
806 | |
807 #ifdef WITH_CASEINSENSITIVETAGS | |
808 # define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */ | |
809 #else | |
810 # define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */ | |
811 #endif | |
812 | |
813 #ifdef WITH_ZLIB | |
814 # include <zlib.h> | |
815 #endif | |
816 | |
817 #ifndef WITH_NOSTDLIB | |
818 # ifndef PALM | |
819 # include <math.h> /* for isnan() */ | |
820 # endif | |
821 #endif | |
822 | |
823 /* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and internal operations (in file TEST.log) */ | |
824 | |
825 /* #define DEBUG_STAMP */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and time-stamped operations (in file TEST.log) */ | |
826 | |
827 #ifdef __cplusplus | |
828 extern "C" { | |
829 #endif | |
830 | |
831 /* Portability: define SOAP_SOCKLEN_T */ | |
832 #if defined(_AIX) || defined(AIX) | |
833 # if defined(_AIX43) | |
834 # define SOAP_SOCKLEN_T socklen_t | |
835 # else | |
836 # define SOAP_SOCKLEN_T int | |
837 # endif | |
838 #elif defined(SOCKLEN_T) | |
839 # define SOAP_SOCKLEN_T SOCKLEN_T | |
840 #elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) || defined(__QNX__) || defined(QNX) || defined(OS390) || defined(__ANDROID__) | |
841 # define SOAP_SOCKLEN_T socklen_t | |
842 #elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS) || defined(HP_UX) | |
843 # define SOAP_SOCKLEN_T int | |
844 #else | |
845 # define SOAP_SOCKLEN_T size_t | |
846 #endif | |
847 | |
848 #ifndef SOAP_SOCKET | |
849 # ifdef WIN32 | |
850 # define SOAP_SOCKET SOCKET | |
851 # define soap_closesocket(n) closesocket(n) | |
852 # else | |
853 # define SOAP_SOCKET int | |
854 # define soap_closesocket(n) close(n) | |
855 # endif | |
856 #endif | |
857 | |
858 #define SOAP_INVALID_SOCKET ((SOAP_SOCKET)-1) | |
859 #define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET) | |
860 | |
861 #define SOAP_SHUT_WR 1 | |
862 #define SOAP_SHUT_RDWR 2 | |
863 | |
864 #ifndef SOAP_GAI_STRERROR | |
865 # define SOAP_GAI_STRERROR gai_strerror | |
866 #endif | |
867 | |
868 #ifndef FD_SETSIZE | |
869 # define FD_SETSIZE (1024) | |
870 #endif | |
871 | |
872 #ifdef WITH_LEAN | |
873 # define SOAP_CHK_EOF SOAP_EOF | |
874 #else | |
875 # define SOAP_CHK_EOF (soap->error ? soap->error : SOAP_EOF) | |
876 #endif | |
877 | |
878 #ifdef __cplusplus | |
879 # ifndef __STDC_FORMAT_MACROS | |
880 # define __STDC_FORMAT_MACROS | |
881 # endif | |
882 #endif | |
883 | |
884 #if defined(SYMBIAN) | |
885 # define LONG64 long | |
886 # define ULONG64 unsigned LONG64 | |
887 #elif !defined(WIN32) || defined(CYGWIN) || defined(__GLIBC__) || defined(__GNU__) | |
888 # ifndef LONG64 | |
889 # if defined(HAVE_INTTYPES_H) | |
890 # ifdef HAVE_STDINT_H | |
891 # include <stdint.h> | |
892 # endif | |
893 # include <inttypes.h> | |
894 # define LONG64 int64_t | |
895 # define ULONG64 uint64_t | |
896 # elif defined(HAVE_SYS_INTTYPES_H) | |
897 # include <sys/inttypes.h> | |
898 # define LONG64 int64_t | |
899 # define ULONG64 uint64_t | |
900 # elif defined(HAVE_STDINT_H) | |
901 # include <stdint.h> | |
902 # define LONG64 int64_t | |
903 # define ULONG64 uint64_t | |
904 # elif defined(__GLIBC__) | |
905 # include <bits/wordsize.h> | |
906 # if (__WORDSIZE == 64) | |
907 # define LONG64 int64_t | |
908 # define ULONG64 uint64_t | |
909 # ifndef SOAP_LONG_FORMAT | |
910 # define SOAP_LONG_FORMAT "%ld" | |
911 # endif | |
912 # ifndef SOAP_ULONG_FORMAT | |
913 # define SOAP_ULONG_FORMAT "%lu" | |
914 # endif | |
915 # else | |
916 # define LONG64 long long | |
917 # define ULONG64 unsigned LONG64 | |
918 # endif | |
919 # else | |
920 # define LONG64 long long | |
921 # define ULONG64 unsigned LONG64 | |
922 # endif | |
923 # endif | |
924 #elif defined(UNDER_CE) | |
925 # define LONG64 __int64 | |
926 # define ULONG64 unsigned LONG64 | |
927 #elif defined(__BORLANDC__) | |
928 # define LONG64 __int64 | |
929 # define ULONG64 unsigned LONG64 | |
930 #endif | |
931 | |
932 #ifdef PRId64 | |
933 # ifndef SOAP_LONG_FORMAT | |
934 # define SOAP_LONG_FORMAT "%" PRId64 | |
935 # endif | |
936 #endif | |
937 | |
938 #ifdef PRIu64 | |
939 # ifndef SOAP_ULONG_FORMAT | |
940 # define SOAP_ULONG_FORMAT "%" PRIu64 | |
941 # endif | |
942 #endif | |
943 | |
944 #ifndef SOAP_LONG_FORMAT | |
945 # define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */ | |
946 #endif | |
947 | |
948 #ifndef SOAP_ULONG_FORMAT | |
949 # define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */ | |
950 #endif | |
951 | |
952 #if defined(WIN32) && !defined(CYGWIN) | |
953 # define soap_int32 __int32 | |
954 #elif defined(SYMBIAN) | |
955 # define soap_int32 long | |
956 #elif defined(PALM) | |
957 # define soap_int32 Int32 | |
958 #elif defined(_AIX) || defined(AIX) | |
959 # if defined(_AIX43) | |
960 # define soap_int32 int32_t | |
961 # else | |
962 # define soap_int32 signed int | |
963 # endif | |
964 #else | |
965 # define soap_int32 int32_t | |
966 #endif | |
967 | |
968 #ifdef WIN32 | |
969 # define SOAP_ERANGE ERANGE | |
970 # define SOAP_EINTR WSAEINTR | |
971 # define SOAP_EAGAIN WSAEWOULDBLOCK | |
972 # define SOAP_EWOULDBLOCK WSAEWOULDBLOCK | |
973 # define SOAP_EINPROGRESS WSAEINPROGRESS | |
974 # define SOAP_EADDRINUSE WSAEADDRINUSE | |
975 #else | |
976 # define SOAP_ERANGE ERANGE | |
977 # define SOAP_EINTR EINTR | |
978 # define SOAP_EAGAIN EAGAIN | |
979 # define SOAP_EADDRINUSE EADDRINUSE | |
980 # ifdef SYMBIAN | |
981 # define SOAP_EWOULDBLOCK 9898 | |
982 # define SOAP_EINPROGRESS 9899 | |
983 # else | |
984 # define SOAP_EWOULDBLOCK EWOULDBLOCK | |
985 # define SOAP_EINPROGRESS EINPROGRESS | |
986 # endif | |
987 #endif | |
988 | |
989 #ifdef WIN32 | |
990 # ifdef UNDER_CE | |
991 # define soap_errno GetLastError() | |
992 # define soap_socket_errno(s) GetLastError() | |
993 # define soap_reset_errno SetLastError(0) | |
994 # else | |
995 # define soap_errno GetLastError() | |
996 # define soap_socket_errno(s) WSAGetLastError() | |
997 # define soap_reset_errno SetLastError(0) | |
998 # endif | |
999 #else | |
1000 # ifndef WITH_NOIO | |
1001 # define soap_errno errno | |
1002 # define soap_socket_errno(s) errno | |
1003 # define soap_reset_errno (errno = 0) | |
1004 # else | |
1005 # define soap_errno 0 | |
1006 # define soap_socket_errno(s) 0 | |
1007 # define soap_reset_errno | |
1008 # endif | |
1009 #endif | |
1010 | |
1011 #ifndef SOAP_BUFLEN | |
1012 # if !defined(WITH_LEAN) | |
1013 # define SOAP_BUFLEN (65536) /* buffer length for socket packets, also used by gethostbyname_r and UDP messages, so don't make this too small */ | |
1014 # else | |
1015 # define SOAP_BUFLEN (2048) /* lean size */ | |
1016 # endif | |
1017 #endif | |
1018 #ifndef SOAP_LABLEN | |
1019 # define SOAP_LABLEN (256) /* initial look-aside buffer length */ | |
1020 #endif | |
1021 #ifndef SOAP_PTRBLK | |
1022 # define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */ | |
1023 #endif | |
1024 #ifndef SOAP_PTRHASH | |
1025 # ifndef WITH_LEAN | |
1026 # define SOAP_PTRHASH (4096) /* size of pointer analysis hash table (must be power of 2) */ | |
1027 # else | |
1028 # define SOAP_PTRHASH (32) | |
1029 # endif | |
1030 #endif | |
1031 #ifndef SOAP_IDHASH | |
1032 # ifndef WITH_LEAN | |
1033 # define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */ | |
1034 # else | |
1035 # define SOAP_IDHASH (19) /* 19, 199 */ | |
1036 # endif | |
1037 #endif | |
1038 #ifndef SOAP_BLKLEN | |
1039 # ifndef WITH_LEAN | |
1040 # define SOAP_BLKLEN (256) /* to collect long strings and XML attributes */ | |
1041 # else | |
1042 # define SOAP_BLKLEN (32) | |
1043 # endif | |
1044 #endif | |
1045 #ifndef SOAP_TAGLEN | |
1046 # ifndef WITH_LEAN | |
1047 # define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */ | |
1048 # else | |
1049 # define SOAP_TAGLEN (128) | |
1050 # endif | |
1051 #endif | |
1052 #ifndef SOAP_HDRLEN | |
1053 # ifndef WITH_LEAN | |
1054 # define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */ | |
1055 # else | |
1056 # define SOAP_HDRLEN (1024) | |
1057 # endif | |
1058 #endif | |
1059 #ifndef SOAP_MAXDIMS | |
1060 # ifndef WITH_LEAN | |
1061 # define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */ | |
1062 # else | |
1063 # define SOAP_MAXDIMS (4) | |
1064 # endif | |
1065 #endif | |
1066 | |
1067 #ifndef SOAP_MAXLOGS | |
1068 # define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */ | |
1069 # define SOAP_INDEX_RECV (0) | |
1070 # define SOAP_INDEX_SENT (1) | |
1071 # define SOAP_INDEX_TEST (2) | |
1072 #endif | |
1073 | |
1074 /* Max number of EINTR while poll/select on a socket */ | |
1075 /* Each EINTR can lengthen the I/O blocking time by at most one second */ | |
1076 #ifndef SOAP_MAXEINTR | |
1077 # define SOAP_MAXEINTR (10) | |
1078 #endif | |
1079 | |
1080 /* Max iterations in soap_serve() to keep server connection alive */ | |
1081 #ifndef SOAP_MAXKEEPALIVE | |
1082 # define SOAP_MAXKEEPALIVE (100) | |
1083 #endif | |
1084 | |
1085 /* Trusted max size of inbound SOAP array for compound array allocation. | |
1086 Increase if necessary to allow larger arrays. | |
1087 */ | |
1088 #ifndef SOAP_MAXARRAYSIZE | |
1089 # define SOAP_MAXARRAYSIZE (1000000) | |
1090 #endif | |
1091 | |
1092 /* Trusted max size of inbound DIME data. | |
1093 Increase if necessary to allow larger attachments, or decrease when server | |
1094 resources are limited. | |
1095 */ | |
1096 #ifndef SOAP_MAXDIMESIZE | |
1097 # define SOAP_MAXDIMESIZE (8388608) /* 8 MB */ | |
1098 #endif | |
1099 | |
1100 #ifdef VXWORKS | |
1101 # ifdef WMW_RPM_IO | |
1102 # include "httpLib.h" | |
1103 # endif | |
1104 # ifdef __INCmathh | |
1105 # include <private/mathP.h> | |
1106 # ifndef HAVE_ISNAN | |
1107 # define HAVE_ISNAN | |
1108 # endif | |
1109 # ifndef soap_isnan | |
1110 # define soap_isnan(num) isNan(num) | |
1111 # endif | |
1112 # endif | |
1113 # ifdef WM_SECURE_KEY_STORAGE | |
1114 # include <ipcom_key_db.h> | |
1115 # endif | |
1116 #endif | |
1117 | |
1118 #ifdef WIN32 | |
1119 # include <float.h> | |
1120 # ifndef HAVE_ISNAN | |
1121 # define HAVE_ISNAN | |
1122 # endif | |
1123 # define soap_isnan(n) _isnan(n) | |
1124 # ifndef HAVE_ISINF | |
1125 # define HAVE_ISINF | |
1126 # endif | |
1127 # define soap_isinf(n) (!_finite(n)) | |
1128 #endif | |
1129 | |
1130 #ifdef SUN_OS | |
1131 # define HAVE_ISNAN | |
1132 #endif | |
1133 | |
1134 #ifdef __APPLE__ | |
1135 # ifdef __cplusplus | |
1136 # ifndef isnan | |
1137 extern "C" int isnan(double); | |
1138 extern "C" int isinf(double); | |
1139 # endif | |
1140 # endif | |
1141 # ifndef HAVE_ISNAN | |
1142 # define HAVE_ISNAN | |
1143 # endif | |
1144 # ifndef HAVE_ISINF | |
1145 # define HAVE_ISINF | |
1146 # endif | |
1147 #endif | |
1148 | |
1149 #if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED)) | |
1150 # define HAVE_ISNAN | |
1151 #endif | |
1152 | |
1153 union soap_double_nan {struct {unsigned int n1, n2;} iv; double dv; float fv;}; | |
1154 extern const union soap_double_nan soap_double_nan; | |
1155 extern const char soap_base64o[], soap_base64i[]; | |
1156 | |
1157 #ifdef VXWORKS | |
1158 # ifndef FLT_MAX | |
1159 # define FLT_MAX _ARCH_FLT_MAX | |
1160 # endif | |
1161 # ifndef DBL_MAX | |
1162 # define DBL_MAX _ARCH_DBL_MAX | |
1163 # endif | |
1164 #endif | |
1165 | |
1166 #ifndef FLT_NAN | |
1167 # define FLT_NAN (soap_double_nan.fv) | |
1168 #endif | |
1169 | |
1170 #ifndef FLT_PINFTY | |
1171 # if defined(FLT_MAX) | |
1172 # define FLT_PINFTY FLT_MAX | |
1173 # elif defined(HUGE_VALF) | |
1174 # define FLT_PINFTY (float)HUGE_VALF | |
1175 # elif defined(HUGE_VAL) | |
1176 # define FLT_PINFTY (float)HUGE_VAL | |
1177 # elif defined(FLOAT_MAX) | |
1178 # define FLT_PINFTY FLOAT_MAX | |
1179 # else | |
1180 # define FLT_PINFTY (3.40282347e+38F) | |
1181 # endif | |
1182 #endif | |
1183 | |
1184 #ifndef FLT_NINFTY | |
1185 # define FLT_NINFTY (-FLT_PINFTY) | |
1186 #endif | |
1187 | |
1188 #ifndef DBL_NAN | |
1189 # define DBL_NAN (soap_double_nan.dv) | |
1190 #endif | |
1191 | |
1192 #ifndef DBL_PINFTY | |
1193 # if defined(DBL_MAX) | |
1194 # define DBL_PINFTY DBL_MAX | |
1195 # elif defined(HUGE_VALF) | |
1196 # define DBL_PINFTY (double)HUGE_VALF | |
1197 # elif defined(HUGE_VAL) | |
1198 # define DBL_PINFTY (double)HUGE_VAL | |
1199 # elif defined(DOUBLE_MAX) | |
1200 # define DBL_PINFTY DOUBLE_MAX | |
1201 # else | |
1202 # define DBL_PINFTY (1.7976931348623157e+308) | |
1203 # endif | |
1204 #endif | |
1205 | |
1206 #ifndef DBL_NINFTY | |
1207 # define DBL_NINFTY (-DBL_PINFTY) | |
1208 #endif | |
1209 | |
1210 #ifndef soap_isnan | |
1211 # ifdef HAVE_ISNAN | |
1212 # define soap_isnan(n) isnan(n) | |
1213 # else | |
1214 # define soap_isnan(n) ((n) != (n)) | |
1215 # endif | |
1216 #endif | |
1217 | |
1218 #ifndef soap_isinf | |
1219 # ifdef HAVE_ISINF | |
1220 # define soap_isinf(n) isinf(n) | |
1221 # else | |
1222 # define soap_isinf(n) (!soap_isnan(n) && soap_isnan((n) - (n))) | |
1223 # endif | |
1224 #endif | |
1225 | |
1226 #define soap_ispinfd(n) ((n) > 0 && soap_isinf(n)) | |
1227 #define soap_ispinff(n) ((n) > 0 && soap_isinf(n)) | |
1228 #define soap_isninfd(n) ((n) < 0 && soap_isinf(n)) | |
1229 #define soap_isninff(n) ((n) < 0 && soap_isinf(n)) | |
1230 | |
1231 #ifdef HAVE_SNPRINTF | |
1232 # ifdef WIN32 | |
1233 # define soap_snprintf(buf, len, ...) (_snprintf((buf), (len), __VA_ARGS__), (buf)[(len)-1] = '\0') | |
1234 # else | |
1235 # define soap_snprintf snprintf | |
1236 # endif | |
1237 #endif | |
1238 | |
1239 /* gSOAP status/error codes */ | |
1240 | |
1241 typedef soap_int32 soap_status; | |
1242 | |
1243 #define SOAP_EOF EOF | |
1244 #define SOAP_ERR EOF | |
1245 #define SOAP_OK 0 | |
1246 #define SOAP_CLI_FAULT 1 | |
1247 #define SOAP_SVR_FAULT 2 | |
1248 #define SOAP_TAG_MISMATCH 3 | |
1249 #define SOAP_TYPE 4 | |
1250 #define SOAP_SYNTAX_ERROR 5 | |
1251 #define SOAP_NO_TAG 6 | |
1252 #define SOAP_IOB 7 | |
1253 #define SOAP_MUSTUNDERSTAND 8 | |
1254 #define SOAP_NAMESPACE 9 | |
1255 #define SOAP_USER_ERROR 10 | |
1256 #define SOAP_FATAL_ERROR 11 | |
1257 #define SOAP_FAULT 12 | |
1258 #define SOAP_NO_METHOD 13 | |
1259 #define SOAP_NO_DATA 14 | |
1260 #define SOAP_GET_METHOD 15 | |
1261 #define SOAP_PUT_METHOD 16 | |
1262 #define SOAP_DEL_METHOD 17 /* deprecated */ | |
1263 #define SOAP_HEAD_METHOD 18 /* deprecated */ | |
1264 #define SOAP_HTTP_METHOD 19 | |
1265 #define SOAP_EOM 20 | |
1266 #define SOAP_MOE 21 | |
1267 #define SOAP_HDR 22 | |
1268 #define SOAP_NULL 23 | |
1269 #define SOAP_DUPLICATE_ID 24 | |
1270 #define SOAP_MISSING_ID 25 | |
1271 #define SOAP_HREF 26 | |
1272 #define SOAP_UDP_ERROR 27 | |
1273 #define SOAP_TCP_ERROR 28 | |
1274 #define SOAP_HTTP_ERROR 29 | |
1275 #define SOAP_SSL_ERROR 30 | |
1276 #define SOAP_ZLIB_ERROR 31 | |
1277 #define SOAP_DIME_ERROR 32 | |
1278 #define SOAP_DIME_HREF 33 | |
1279 #define SOAP_DIME_MISMATCH 34 | |
1280 #define SOAP_DIME_END 35 | |
1281 #define SOAP_MIME_ERROR 36 | |
1282 #define SOAP_MIME_HREF 37 | |
1283 #define SOAP_MIME_END 38 | |
1284 #define SOAP_VERSIONMISMATCH 39 | |
1285 #define SOAP_PLUGIN_ERROR 40 | |
1286 #define SOAP_DATAENCODINGUNKNOWN 41 | |
1287 #define SOAP_REQUIRED 42 | |
1288 #define SOAP_PROHIBITED 43 | |
1289 #define SOAP_OCCURS 44 | |
1290 #define SOAP_LENGTH 45 | |
1291 #define SOAP_FD_EXCEEDED 46 | |
1292 #define SOAP_UTF_ERROR 47 | |
1293 #define SOAP_NTLM_ERROR 48 | |
1294 | |
1295 #define soap_xml_error_check(e) ((e) == SOAP_TAG_MISMATCH || (e) == SOAP_NO_TAG || (e) == SOAP_SYNTAX_ERROR || (e) == SOAP_NAMESPACE || (e) == SOAP_DUPLICATE_ID || (e) == SOAP_MISSING_ID || (e) == SOAP_REQUIRED || (e) == SOAP_PROHIBITED || (e) == SOAP_OCCURS || (e) == SOAP_LENGTH || (e) == SOAP_NULL || (e) == SOAP_HREF) | |
1296 #define soap_soap_error_check(e) ((e) == SOAP_CLI_FAULT || (e) == SOAP_SVR_FAULT || (e) == SOAP_VERSIONMISMATCH || (e) == SOAP_MUSTUNDERSTAND || (e) == SOAP_FAULT || (e) == SOAP_NO_METHOD) | |
1297 #define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR) | |
1298 #define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR) | |
1299 #define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR) | |
1300 #define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_NO_DATA || ((e) >= SOAP_GET_METHOD && (e) <= SOAP_HTTP_METHOD) || ((e) >= 100 && (e) < 600)) | |
1301 | |
1302 /* gSOAP HTTP response status codes 100 to 599 are reserved */ | |
1303 | |
1304 /* Codes 600 to 999 are user definable */ | |
1305 | |
1306 /* Exceptional gSOAP HTTP server response status codes >= 1000 */ | |
1307 | |
1308 #define SOAP_STOP 1000 /* No HTTP response */ | |
1309 #define SOAP_FORM 1001 /* Request (form) data is present, no HTTP response */ | |
1310 #define SOAP_HTML 1002 /* Custom HTML response */ | |
1311 #define SOAP_FILE 1003 /* Custom file-based response */ | |
1312 | |
1313 /* gSOAP HTTP method codes (client) */ | |
1314 | |
1315 #define SOAP_POST 2000 /* POST request */ | |
1316 #define SOAP_POST_FILE 2001 /* Custom file-based POST request */ | |
1317 #define SOAP_GET 2002 /* GET request */ | |
1318 #define SOAP_PUT 2003 /* PUT request */ | |
1319 #define SOAP_DEL 2004 /* DELETE request */ | |
1320 #define SOAP_CONNECT 2005 /* CONNECT request */ | |
1321 | |
1322 /* gSOAP DIME */ | |
1323 | |
1324 #define SOAP_DIME_CF 0x01 | |
1325 #define SOAP_DIME_ME 0x02 | |
1326 #define SOAP_DIME_MB 0x04 | |
1327 #define SOAP_DIME_VERSION 0x08 /* DIME version 1 */ | |
1328 #define SOAP_DIME_MEDIA 0x10 | |
1329 #define SOAP_DIME_ABSURI 0x20 | |
1330 | |
1331 /* gSOAP ZLIB */ | |
1332 | |
1333 #define SOAP_ZLIB_NONE 0x00 | |
1334 #define SOAP_ZLIB_DEFLATE 0x01 | |
1335 #define SOAP_ZLIB_INFLATE 0x02 | |
1336 #define SOAP_ZLIB_GZIP 0x02 | |
1337 | |
1338 /* gSOAP transport, connection, and content encoding modes */ | |
1339 | |
1340 typedef soap_int32 soap_mode; | |
1341 | |
1342 #define SOAP_IO 0x00000003 /* IO mask */ | |
1343 #define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */ | |
1344 #define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */ | |
1345 #define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */ | |
1346 #define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */ | |
1347 | |
1348 #define SOAP_IO_UDP 0x00000004 /* TCP or UDP */ | |
1349 #define SOAP_IO_LENGTH 0x00000008 /* calc message length (internal) */ | |
1350 #define SOAP_IO_KEEPALIVE 0x00000010 /* keep connection alive */ | |
1351 | |
1352 #define SOAP_ENC 0x00000FFF /* IO and ENC mask */ | |
1353 #define SOAP_ENC_LATIN 0x00000020 /* in: accept iso-8859-1 */ | |
1354 #define SOAP_ENC_XML 0x00000040 /* out: plain XML encoding, no HTTP header */ | |
1355 #define SOAP_ENC_DIME 0x00000080 | |
1356 #define SOAP_ENC_MIME 0x00000100 | |
1357 #define SOAP_ENC_MTOM 0x00000200 | |
1358 #define SOAP_ENC_ZLIB 0x00000400 | |
1359 #define SOAP_ENC_SSL 0x00000800 | |
1360 | |
1361 #define SOAP_XML_STRICT 0x00001000 /* in: strict validation */ | |
1362 #define SOAP_XML_INDENT 0x00002000 /* out: emit indented XML */ | |
1363 #define SOAP_XML_IGNORENS 0x00004000 /* in: ignore namespaces */ | |
1364 #define SOAP_XML_DEFAULTNS 0x00008000 /* out: emit xmlns="..." */ | |
1365 #define SOAP_XML_CANONICAL 0x00010000 /* out: excC14N canonical XML */ | |
1366 #define SOAP_XML_TREE 0x00020000 /* in/out: XML tree (no id/ref) */ | |
1367 #define SOAP_XML_NIL 0x00040000 /* out: NULLs as xsi:nil */ | |
1368 #define SOAP_XML_NOTYPE 0x00080000 /* out: do not add xsi:type */ | |
1369 | |
1370 #define SOAP_DOM_TREE 0x00100000 /* see DOM manual */ | |
1371 #define SOAP_DOM_NODE 0x00200000 | |
1372 #define SOAP_DOM_ASIS 0x00400000 | |
1373 | |
1374 #define SOAP_C_NOIOB 0x01000000 /* don't fault on array index out of bounds (just ignore) */ | |
1375 #define SOAP_C_UTFSTRING 0x02000000 /* (de)serialize strings with UTF8 content */ | |
1376 #define SOAP_C_MBSTRING 0x04000000 /* (de)serialize strings with multi-byte content */ | |
1377 #define SOAP_C_NILSTRING 0x08000000 /* serialize empty strings as nil (omitted) */ | |
1378 | |
1379 #define SOAP_XML_DOM 0x10000000 /* enable internal DOM */ | |
1380 #define SOAP_XML_GRAPH 0x20000000 /* force id-ref XML graph */ | |
1381 | |
1382 #define SOAP_MIME_POSTCHECK 0x40000000 /* MIME flag (internal) */ | |
1383 | |
1384 #define SOAP_SEC_WSUID 0x80000000 /* Add Body wsu:Id */ | |
1385 | |
1386 /* WITH_XMLNS backward compatibility: always use XML default namespaces */ | |
1387 #ifdef WITH_XMLNS | |
1388 # define SOAP_IO_DEFAULT (SOAP_IO_FLUSH | SOAP_XML_DEFAULTNS) | |
1389 #else | |
1390 # define SOAP_IO_DEFAULT SOAP_IO_FLUSH | |
1391 #endif | |
1392 | |
1393 /* SSL client/server authentication settings */ | |
1394 | |
1395 #define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */ | |
1396 #define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */ | |
1397 #define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */ | |
1398 #define SOAP_SSL_SKIP_HOST_CHECK 0x04 /* client does not check the common name of the host in certificate */ | |
1399 #define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE 0x08 /* client does not check the expiration date of the host certificate */ | |
1400 #define SOAP_SSL_NO_DEFAULT_CA_PATH 0x10 /* don't use default_verify_paths */ | |
1401 #define SOAP_SSL_RSA 0x20 /* use RSA */ | |
1402 #define SOAP_SSLv3 0x40 /* SSL v3 only */ | |
1403 #define SOAP_TLSv1 0x80 /* TLS v1 only */ | |
1404 #define SOAP_SSLv3_TLSv1 0x00 /* SSL v3 and TLS v1 support by default (no SSL v1/v2) */ | |
1405 #define SOAP_SSL_CLIENT 0x100 /* client context */ | |
1406 | |
1407 #define SOAP_SSL_DEFAULT (SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_SSLv3_TLSv1) | |
1408 | |
1409 /* state */ | |
1410 | |
1411 #define SOAP_NONE 0 | |
1412 #define SOAP_INIT 1 | |
1413 #define SOAP_COPY 2 | |
1414 | |
1415 #define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY)) | |
1416 | |
1417 /* parts */ | |
1418 | |
1419 #define SOAP_BEGIN 0 | |
1420 #define SOAP_IN_ENVELOPE 2 | |
1421 #define SOAP_IN_HEADER 3 | |
1422 #define SOAP_END_HEADER 4 | |
1423 #define SOAP_NO_BODY 5 | |
1424 #define SOAP_IN_BODY 6 | |
1425 #define SOAP_END_BODY 7 | |
1426 #define SOAP_END_ENVELOPE 8 | |
1427 #define SOAP_END 9 | |
1428 | |
1429 /* events */ | |
1430 | |
1431 #define SOAP_SEC_BEGIN 1 | |
1432 #define SOAP_SEC_SIGN 2 | |
1433 #define SOAP_SEC_DECRYPT 3 | |
1434 | |
1435 /* DEBUG macros */ | |
1436 | |
1437 #ifndef WITH_LEAN | |
1438 # ifdef DEBUG_STAMP | |
1439 # ifndef DEBUG | |
1440 # define DEBUG | |
1441 # endif | |
1442 # endif | |
1443 # ifdef DEBUG | |
1444 # ifndef SOAP_DEBUG | |
1445 # define SOAP_DEBUG | |
1446 # endif | |
1447 # ifndef SOAP_MEM_DEBUG | |
1448 # define SOAP_MEM_DEBUG | |
1449 # endif | |
1450 # endif | |
1451 #endif | |
1452 | |
1453 #ifdef SOAP_MEM_DEBUG | |
1454 # ifndef SOAP_MALLOC | |
1455 # define SOAP_MALLOC(soap, size) soap_track_malloc(soap, __FILE__, __LINE__, size) | |
1456 # endif | |
1457 # ifndef SOAP_FREE | |
1458 # define SOAP_FREE(soap, ptr) soap_track_free(soap, __FILE__, __LINE__, ptr) | |
1459 # endif | |
1460 #endif | |
1461 | |
1462 #ifndef SOAP_MALLOC /* use libc malloc */ | |
1463 # define SOAP_MALLOC(soap, size) malloc(size) | |
1464 #endif | |
1465 | |
1466 #ifndef SOAP_FREE /* use libc free */ | |
1467 # define SOAP_FREE(soap, ptr) free(ptr) | |
1468 #endif | |
1469 | |
1470 #if defined(__GNUC__) && (__GNUC__ <= 2) | |
1471 # define SOAP_NOTHROW | |
1472 #elif !defined(WITH_LEAN) && !defined(WITH_COMPAT) && !defined(SOAP_NOTHROW) | |
1473 # define SOAP_NOTHROW (std::nothrow) | |
1474 #else | |
1475 # define SOAP_NOTHROW | |
1476 #endif | |
1477 | |
1478 #if (defined(__GNUC__) && (__GNUC__ <= 2) && !defined(__BORLANDC__)) || defined(__clang__) || defined(_AIX) || defined(AIX) | |
1479 /* old form w/o parenthesis */ | |
1480 # ifndef SOAP_NEW | |
1481 # define SOAP_NEW(type) new SOAP_NOTHROW type | |
1482 # endif | |
1483 # ifndef SOAP_NEW_ARRAY | |
1484 # define SOAP_NEW_ARRAY(type, n) new SOAP_NOTHROW type[n] | |
1485 # endif | |
1486 # ifndef SOAP_PLACEMENT_NEW | |
1487 # define SOAP_PLACEMENT_NEW(buf, type) new (buf) type | |
1488 # endif | |
1489 #else | |
1490 /* new form with parenthesis */ | |
1491 # ifndef SOAP_NEW | |
1492 # define SOAP_NEW(type) new SOAP_NOTHROW (type) | |
1493 # endif | |
1494 # ifndef SOAP_NEW_ARRAY | |
1495 # define SOAP_NEW_ARRAY(type, n) new SOAP_NOTHROW type[n] | |
1496 # endif | |
1497 # ifndef SOAP_PLACEMENT_NEW | |
1498 # define SOAP_PLACEMENT_NEW(buf, type) new (buf) (type) | |
1499 # endif | |
1500 #endif | |
1501 | |
1502 #ifndef SOAP_NEW_COPY /* use C++ new operator for ::copy() */ | |
1503 # define SOAP_NEW_COPY(clas) new SOAP_NOTHROW clas | |
1504 #endif | |
1505 | |
1506 #ifndef SOAP_DELETE /* use C++ delete operator */ | |
1507 # define SOAP_DELETE(obj) delete obj | |
1508 #endif | |
1509 | |
1510 #ifndef SOAP_DELETE_ARRAY /* use C++ delete[] operator */ | |
1511 # define SOAP_DELETE_ARRAY(obj) delete[] obj | |
1512 #endif | |
1513 | |
1514 #ifdef SOAP_DEBUG | |
1515 # ifndef SOAP_MESSAGE | |
1516 # define SOAP_MESSAGE fprintf | |
1517 # endif | |
1518 # ifndef DBGLOG | |
1519 # ifdef DEBUG_STAMP | |
1520 # ifdef WIN32 | |
1521 # define DBGLOG(DBGFILE, CMD) \ | |
1522 { if (soap)\ | |
1523 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1524 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ | |
1525 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1526 { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ | |
1527 SYSTEMTIME _localTime;\ | |
1528 ::GetLocalTime(&_localTime); \ | |
1529 fprintf(fdebug, "%02d%02d%02d %02d:%02d:%02d.%03d|", _localTime.wYear%100, _localTime.wMonth, _localTime.wDay, _localTime.wHour, _localTime.wMinute, _localTime.wSecond, _localTime.wMilliseconds);\ | |
1530 CMD;\ | |
1531 fflush(fdebug);\ | |
1532 }\ | |
1533 }\ | |
1534 } | |
1535 # else | |
1536 # define DBGLOG(DBGFILE, CMD) \ | |
1537 { if (soap)\ | |
1538 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1539 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ | |
1540 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1541 { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ | |
1542 struct timeval _tv;\ | |
1543 struct tm _tm;\ | |
1544 gettimeofday(&_tv, NULL);\ | |
1545 localtime_r(&_tv.tv_sec, &_tm);\ | |
1546 fprintf(fdebug, "%02d%02d%02d %02d:%02d:%02d.%06d|", _tm.tm_year%100, _tm.tm_mon+1, _tm.tm_mday, _tm.tm_hour, _tm.tm_min, _tm.tm_sec, _tv.tv_usec);\ | |
1547 CMD;\ | |
1548 fflush(fdebug);\ | |
1549 }\ | |
1550 }\ | |
1551 } | |
1552 # endif | |
1553 # else | |
1554 # define DBGLOG(DBGFILE, CMD) \ | |
1555 { if (soap)\ | |
1556 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1557 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ | |
1558 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1559 { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ | |
1560 CMD;\ | |
1561 fflush(fdebug);\ | |
1562 }\ | |
1563 }\ | |
1564 } | |
1565 # endif | |
1566 # endif | |
1567 # ifndef DBGMSG | |
1568 # define DBGMSG(DBGFILE, MSG, LEN) \ | |
1569 { if (soap)\ | |
1570 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1571 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ | |
1572 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1573 { fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\ | |
1574 fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ | |
1575 }\ | |
1576 }\ | |
1577 } | |
1578 # endif | |
1579 # ifndef DBGFUN | |
1580 # define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME)) | |
1581 # define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT ")\n", __FILE__, __LINE__, FNAME, (ARG))) | |
1582 # define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT1 ", " FMT2 ")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2))) | |
1583 # define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT1 ", " FMT2 ", " FMT3 ")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2), (ARG3))) | |
1584 # endif | |
1585 # ifndef DBGHEX | |
1586 # define DBGHEX(DBGFILE, MSG, LEN) \ | |
1587 { if (soap)\ | |
1588 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1589 soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\ | |
1590 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ | |
1591 { int i; char *s;\ | |
1592 for (s = (char*)(MSG), i = (LEN); i; i--)\ | |
1593 fprintf(soap->fdebug[SOAP_INDEX_##DBGFILE], "%2.2X ", (int)*s++&0xFF);\ | |
1594 fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ | |
1595 }\ | |
1596 }\ | |
1597 } | |
1598 # endif | |
1599 #else | |
1600 # define DBGLOG(DBGFILE, CMD) | |
1601 # define DBGMSG(DBGFILE, MSG, LEN) | |
1602 # define DBGFUN(FNAME) | |
1603 # define DBGFUN1(FNAME, FMT, ARG) | |
1604 # define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) | |
1605 # define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) | |
1606 # define DBGHEX(DBGFILE, MSG, LEN) | |
1607 #endif | |
1608 | |
1609 /* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */ | |
1610 typedef soap_int32 soap_wchar; | |
1611 | |
1612 /* namespace table row */ | |
1613 struct Namespace | |
1614 { const char *id; | |
1615 const char *ns; | |
1616 const char *in; | |
1617 char *out; | |
1618 }; | |
1619 | |
1620 /* namespace stack */ | |
1621 struct soap_nlist | |
1622 { struct soap_nlist *next; | |
1623 unsigned int level; /* nesting depth level */ | |
1624 short index; /* corresponding entry in ns mapping table */ | |
1625 const char *ns; /* only set when parsed ns URI is not in the ns mapping table */ | |
1626 char id[1]; /* the actual string value flows into the allocated region below this struct */ | |
1627 }; | |
1628 | |
1629 /* block stack for nested block allocations */ | |
1630 struct soap_blist | |
1631 { struct soap_blist *next; | |
1632 char *ptr; | |
1633 size_t size; | |
1634 }; | |
1635 | |
1636 /* array layout */ | |
1637 struct soap_array | |
1638 { void *__ptr; | |
1639 int __size; | |
1640 }; | |
1641 | |
1642 /* pointer serialization management */ | |
1643 struct soap_plist | |
1644 { struct soap_plist *next; | |
1645 const void *ptr; | |
1646 const struct soap_array *array; | |
1647 int type; | |
1648 int id; | |
1649 char mark1; /* 0=single-ref, 1=embedded-multi-ref (SOAP1.1), 2=multi-ref, 3=attachment */ | |
1650 char mark2; | |
1651 }; | |
1652 | |
1653 /* block allocation for pointer serialization management */ | |
1654 struct soap_pblk | |
1655 { struct soap_pblk *next; | |
1656 struct soap_plist plist[SOAP_PTRBLK]; | |
1657 }; | |
1658 | |
1659 #ifdef SOAP_MEM_DEBUG | |
1660 /* malloc/free tracking for debugging */ | |
1661 struct soap_mlist | |
1662 { struct soap_mlist *next; | |
1663 const void *ptr; | |
1664 const char *file; | |
1665 int line; | |
1666 short live; | |
1667 }; | |
1668 #endif | |
1669 | |
1670 /* class allocation list */ | |
1671 struct soap_clist | |
1672 { struct soap_clist *next; | |
1673 void *ptr; | |
1674 int type; | |
1675 int size; | |
1676 int (*fdelete)(struct soap_clist*); | |
1677 }; | |
1678 | |
1679 /* attributes */ | |
1680 struct soap_attribute | |
1681 { struct soap_attribute *next; | |
1682 short flag; /* soap_set_attr: 1 = normal, 2 = utf content */ | |
1683 char *value; | |
1684 size_t size; | |
1685 const char *ns; | |
1686 short visible; | |
1687 char name[1]; /* the actual name string flows into the allocated region below this struct */ | |
1688 }; | |
1689 | |
1690 #ifndef WITH_LEAN | |
1691 struct soap_cookie | |
1692 { struct soap_cookie *next; | |
1693 char *name; | |
1694 char *value; | |
1695 char *domain; | |
1696 char *path; | |
1697 time_t expire; /* client-side: local time to expire */ | |
1698 long maxage; /* server-side: seconds to expire */ | |
1699 unsigned int version; | |
1700 short secure; | |
1701 short session; /* server-side */ | |
1702 short env; /* server-side: got cookie from client and should not be (re)send */ | |
1703 short modified; /* server-side: client cookie was modified and should be send */ | |
1704 }; | |
1705 #endif | |
1706 | |
1707 SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*); | |
1708 | |
1709 #ifdef __cplusplus | |
1710 | |
1711 class soap_multipart_iterator | |
1712 { public: | |
1713 struct soap_multipart *content; | |
1714 bool operator==(const soap_multipart_iterator& iter) const | |
1715 { return (bool)(content == iter.content); } | |
1716 bool operator!=(const soap_multipart_iterator& iter) const | |
1717 { return (bool)(content != iter.content); } | |
1718 struct soap_multipart &operator*() const | |
1719 { return *content; } | |
1720 soap_multipart_iterator &operator++() | |
1721 { content = soap_next_multipart(content); return *this; } | |
1722 soap_multipart_iterator() : content(NULL) | |
1723 { } | |
1724 soap_multipart_iterator(struct soap_multipart *p) : content(p) | |
1725 { } | |
1726 }; | |
1727 #endif | |
1728 | |
1729 #ifndef WITH_LEANER | |
1730 struct soap_dime | |
1731 { size_t count; | |
1732 size_t size; | |
1733 size_t chunksize; | |
1734 size_t buflen; | |
1735 char flags; | |
1736 char *ptr; | |
1737 const char *id; | |
1738 const char *type; | |
1739 const char *options; | |
1740 struct soap_multipart *list; /* list of DIME attachments received */ | |
1741 struct soap_multipart *first, *last; /* temporary in/out queue */ | |
1742 #ifdef __cplusplus | |
1743 soap_multipart_iterator begin() | |
1744 { soap_multipart_iterator iter(list); return iter; }; | |
1745 soap_multipart_iterator end() | |
1746 { soap_multipart_iterator iter(NULL); return iter; }; | |
1747 #endif | |
1748 }; | |
1749 #endif | |
1750 | |
1751 #ifndef WITH_LEANER | |
1752 struct soap_mime | |
1753 { char *boundary; /* MIME boundary */ | |
1754 const char *start; /* MIME start ID */ | |
1755 struct soap_multipart *list; /* list of MIME attachments received */ | |
1756 struct soap_multipart *first, *last; /* temporary in/out queue */ | |
1757 #ifdef __cplusplus | |
1758 soap_multipart_iterator begin() | |
1759 { soap_multipart_iterator iter(list); return iter; }; | |
1760 soap_multipart_iterator end() | |
1761 { soap_multipart_iterator iter(NULL); return iter; }; | |
1762 #endif | |
1763 }; | |
1764 #endif | |
1765 | |
1766 #ifndef WITH_LEANER | |
1767 /* RFC2045 MIME content transfer encodings */ | |
1768 enum soap_mime_encoding | |
1769 { SOAP_MIME_NONE, | |
1770 SOAP_MIME_7BIT, | |
1771 SOAP_MIME_8BIT, | |
1772 SOAP_MIME_BINARY, | |
1773 SOAP_MIME_QUOTED_PRINTABLE, | |
1774 SOAP_MIME_BASE64, | |
1775 SOAP_MIME_IETF_TOKEN, | |
1776 SOAP_MIME_X_TOKEN | |
1777 }; | |
1778 #endif | |
1779 | |
1780 #ifndef WITH_LEANER | |
1781 /* DIME/MIME multipart list */ | |
1782 struct soap_multipart | |
1783 { struct soap_multipart *next; | |
1784 char *ptr; /* points to raw data content */ | |
1785 size_t size; /* size of data content */ | |
1786 const char *id; /* DIME/MIME content ID or form data name */ | |
1787 const char *type; /* DIME/MIME type (MIME type format) */ | |
1788 const char *options; /* DIME options */ | |
1789 enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */ | |
1790 const char *location; /* MIME Content-Location (optional) */ | |
1791 const char *description; /* MIME Content-Description (optional) */ | |
1792 #ifdef __cplusplus | |
1793 typedef soap_multipart_iterator iterator; | |
1794 #endif | |
1795 }; | |
1796 #endif | |
1797 | |
1798 #ifndef WITH_LEANER | |
1799 /* attachment DIME and MTOM XOP forwarding */ | |
1800 struct soap_xlist | |
1801 { struct soap_xlist *next; | |
1802 unsigned char **ptr; | |
1803 int *size; | |
1804 char *id; | |
1805 char **type; | |
1806 char **options; | |
1807 }; | |
1808 #endif | |
1809 | |
1810 /******************************************************************************/ | |
1811 | |
1812 #ifndef WITH_LEANER | |
1813 #ifdef __cplusplus | |
1814 class soap_dom_attribute_iterator | |
1815 { public: | |
1816 struct soap_dom_attribute *att; | |
1817 const char *nstr; | |
1818 const char *name; | |
1819 bool operator==(const soap_dom_attribute_iterator&) const; | |
1820 bool operator!=(const soap_dom_attribute_iterator&) const; | |
1821 struct soap_dom_attribute &operator*() const; | |
1822 soap_dom_attribute_iterator &operator++(); | |
1823 soap_dom_attribute_iterator(); | |
1824 soap_dom_attribute_iterator(struct soap_dom_attribute*); | |
1825 ~soap_dom_attribute_iterator(); | |
1826 }; | |
1827 #endif | |
1828 #endif | |
1829 | |
1830 #ifndef WITH_LEANER | |
1831 struct soap_dom_attribute | |
1832 { struct soap_dom_attribute *next; | |
1833 const char *nstr; | |
1834 char *name; | |
1835 char *data; | |
1836 wchar_t *wide; | |
1837 struct soap *soap; | |
1838 #ifdef __cplusplus | |
1839 typedef soap_dom_attribute_iterator iterator; | |
1840 struct soap_dom_attribute &set(const char *nstr, const char *name); /* set namespace and name */ | |
1841 struct soap_dom_attribute &set(const char *data); /* set data */ | |
1842 soap_dom_attribute_iterator begin(); | |
1843 soap_dom_attribute_iterator end(); | |
1844 soap_dom_attribute_iterator find(const char *nstr, const char *name); | |
1845 void unlink(); | |
1846 soap_dom_attribute(); | |
1847 soap_dom_attribute(struct soap *soap); | |
1848 soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data); | |
1849 ~soap_dom_attribute(); | |
1850 #endif | |
1851 }; | |
1852 #endif | |
1853 | |
1854 #ifndef WITH_LEANER | |
1855 #ifdef __cplusplus | |
1856 class soap_dom_element_iterator | |
1857 { public: | |
1858 struct soap_dom_element *elt; | |
1859 const char *nstr; | |
1860 const char *name; | |
1861 int type; | |
1862 bool operator==(const soap_dom_element_iterator&) const; | |
1863 bool operator!=(const soap_dom_element_iterator&) const; | |
1864 struct soap_dom_element &operator*() const; | |
1865 soap_dom_element_iterator &operator++(); | |
1866 soap_dom_element_iterator(); | |
1867 soap_dom_element_iterator(struct soap_dom_element*); | |
1868 ~soap_dom_element_iterator(); | |
1869 }; | |
1870 #endif | |
1871 #endif | |
1872 | |
1873 #ifndef WITH_LEANER | |
1874 struct soap_dom_element | |
1875 { struct soap_dom_element *next; /* next sibling */ | |
1876 struct soap_dom_element *prnt; /* parent */ | |
1877 struct soap_dom_element *elts; /* list of child elements */ | |
1878 struct soap_dom_attribute *atts; /* list of attributes */ | |
1879 const char *nstr; /* namespace string */ | |
1880 char *name; /* element tag name */ | |
1881 char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */ | |
1882 wchar_t *wide; /* element content data */ | |
1883 int type; /* optional: serialized C/C++ data type */ | |
1884 void *node; /* optional: pointer to serialized C/C++ data */ | |
1885 char *head; /* leading content before start tag */ | |
1886 char *tail; /* leading content before end tag */ | |
1887 struct soap *soap; /* soap context that manages this node */ | |
1888 #ifdef __cplusplus | |
1889 typedef soap_dom_element_iterator iterator; | |
1890 struct soap_dom_element &set(const char *nstr, const char *name); | |
1891 struct soap_dom_element &set(const char *data); | |
1892 struct soap_dom_element &set(void *node, int type); | |
1893 struct soap_dom_element &add(struct soap_dom_element*); | |
1894 struct soap_dom_element &add(struct soap_dom_element&); | |
1895 struct soap_dom_element &add(struct soap_dom_attribute*); | |
1896 struct soap_dom_element &add(struct soap_dom_attribute&); | |
1897 soap_dom_element_iterator begin(); | |
1898 soap_dom_element_iterator end(); | |
1899 soap_dom_element_iterator find(const char *nstr, const char *name); | |
1900 soap_dom_element_iterator find(int type); | |
1901 void unlink(); | |
1902 soap_dom_element(); | |
1903 soap_dom_element(struct soap *soap); | |
1904 soap_dom_element(struct soap *soap, const char *nstr, const char *name); | |
1905 soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data); | |
1906 soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type); | |
1907 ~soap_dom_element(); | |
1908 #endif | |
1909 }; | |
1910 SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(struct soap_dom_element *elt); | |
1911 SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(struct soap_dom_attribute *att); | |
1912 #endif | |
1913 | |
1914 #if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) | |
1915 } | |
1916 extern std::ostream &operator<<(std::ostream&, const struct soap_dom_element&); | |
1917 extern std::istream &operator>>(std::istream&, struct soap_dom_element&); | |
1918 extern "C" { | |
1919 #endif | |
1920 | |
1921 /******************************************************************************/ | |
1922 | |
1923 #ifdef WIN32 | |
1924 # ifdef SOAP_STD_EXPORTS | |
1925 # define SOAP_STD_API __declspec(dllexport) | |
1926 # else | |
1927 # define SOAP_STD_API | |
1928 # endif | |
1929 #else | |
1930 # define SOAP_STD_API | |
1931 #endif | |
1932 | |
1933 struct SOAP_STD_API soap | |
1934 { short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */ | |
1935 short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table), 0 indicates non-SOAP content */ | |
1936 soap_mode mode; | |
1937 soap_mode imode; | |
1938 soap_mode omode; | |
1939 const char *float_format; /* user-definable format string for floats (<1024 chars) */ | |
1940 const char *double_format; /* user-definable format string for doubles (<1024 chars) */ | |
1941 const char *dime_id_format; /* user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */ | |
1942 const char *http_version; /* HTTP version used "1.0" or "1.1" */ | |
1943 const char *http_content; /* optional custom response content type (with SOAP_FILE) */ | |
1944 const char *encodingStyle; /* default = "" which means that SOAP encoding is used */ | |
1945 const char *actor; /* SOAP-ENV:actor or role attribute value */ | |
1946 const char *lang; /* xml:lang attribute value of SOAP-ENV:Text */ | |
1947 int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */ | |
1948 int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */ | |
1949 int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */ | |
1950 int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */ | |
1951 int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */ | |
1952 int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */ | |
1953 int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */ | |
1954 int accept_flags; /* accept() SOL_SOCKET sockopt flags */ | |
1955 unsigned short linger_time; /* linger time for SO_LINGER option */ | |
1956 const struct Namespace *namespaces; /* Pointer to global namespace mapping table */ | |
1957 struct Namespace *local_namespaces; /* Local namespace mapping table */ | |
1958 struct soap_nlist *nlist; /* namespace stack */ | |
1959 struct soap_blist *blist; /* block allocation stack */ | |
1960 struct soap_clist *clist; /* class instance allocation list */ | |
1961 void *alist; /* memory allocation (malloc) list */ | |
1962 #if !defined(WITH_LEAN) || !defined(WITH_NOIDREF) | |
1963 struct soap_ilist *iht[SOAP_IDHASH]; | |
1964 struct soap_plist *pht[SOAP_PTRHASH]; | |
1965 struct soap_pblk *pblk; /* plist block allocation */ | |
1966 short pidx; /* plist block allocation */ | |
1967 #endif | |
1968 struct SOAP_ENV__Header *header; | |
1969 struct SOAP_ENV__Fault *fault; | |
1970 int idnum; | |
1971 void *user; /* for user to pass user-defined data */ | |
1972 void *data[4]; /* extension data = {smdevp, mecevp, ...} */ | |
1973 struct soap_plugin *plugins; /* linked list of plug-in data */ | |
1974 const char *userid; /* HTTP Basic authorization userid */ | |
1975 const char *passwd; /* HTTP Basic authorization passwd */ | |
1976 const char *authrealm; /* HTTP authentication realm (NTLM domain) */ | |
1977 #if !defined(WITH_LEAN) || defined(WITH_NTLM) | |
1978 const char *ntlm_challenge; /* HTTP NTLM challenge key string */ | |
1979 short ntlm_auth; /* HTTP NTLM authentication type */ | |
1980 short ntlm_stage; /* HTTP NTLM stage 0..3 */ | |
1981 #endif | |
1982 int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t); | |
1983 int (*fget)(struct soap*); /* HTTP GET hook (not set by default) */ | |
1984 int (*fput)(struct soap*); /* HTTP PUT hook (handled as POST by default) */ | |
1985 int (*fdel)(struct soap*); /* HTTP DELETE hook (not set by default) */ | |
1986 int (*fopt)(struct soap*); /* HTTP OPTIONS hook (not set by default) */ | |
1987 int (*fhead)(struct soap*); /* HTTP HEAD hook (not set by default) */ | |
1988 int (*fform)(struct soap*); /* HTTP/HTML form handler for plugins */ | |
1989 int (*fposthdr)(struct soap*, const char*, const char*); | |
1990 int (*fresponse)(struct soap*, int, size_t); | |
1991 int (*fparse)(struct soap*); | |
1992 int (*fparsehdr)(struct soap*, const char*, const char*); | |
1993 int (*fheader)(struct soap*); | |
1994 int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr); | |
1995 int (*fconnect)(struct soap*, const char*, const char*, int); | |
1996 int (*fdisconnect)(struct soap*); | |
1997 int (*fclosesocket)(struct soap*, SOAP_SOCKET); | |
1998 int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int); | |
1999 SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int); | |
2000 SOAP_SOCKET (*faccept)(struct soap*, SOAP_SOCKET, struct sockaddr*, int *n); | |
2001 int (*fclose)(struct soap*); | |
2002 int (*fsend)(struct soap*, const char*, size_t); | |
2003 size_t (*frecv)(struct soap*, char*, size_t); | |
2004 int (*fpoll)(struct soap*); | |
2005 void (*fseterror)(struct soap*, const char **c, const char **s); | |
2006 int (*fignore)(struct soap*, const char*); | |
2007 int (*fserveloop)(struct soap*); | |
2008 void *(*fplugin)(struct soap*, const char*); | |
2009 void *(*fmalloc)(struct soap*, size_t); | |
2010 #ifndef WITH_LEANER | |
2011 int (*feltbegin)(struct soap*, const char*); | |
2012 int (*feltendin)(struct soap*, const char*, const char*); | |
2013 int (*feltbegout)(struct soap*, const char*); | |
2014 int (*feltendout)(struct soap*, const char*); | |
2015 int (*fprepareinitsend)(struct soap*); | |
2016 int (*fprepareinitrecv)(struct soap*); | |
2017 int (*fpreparesend)(struct soap*, const char*, size_t); | |
2018 int (*fpreparerecv)(struct soap*, const char*, size_t); | |
2019 int (*fpreparefinalsend)(struct soap*); | |
2020 int (*fpreparefinalrecv)(struct soap*); | |
2021 int filterstop; | |
2022 int (*ffiltersend)(struct soap*, const char**, size_t*); | |
2023 int (*ffilterrecv)(struct soap*, char*, size_t*, size_t); | |
2024 void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*); | |
2025 void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*); | |
2026 void (*fdimereadclose)(struct soap*, void*); | |
2027 void (*fdimewriteclose)(struct soap*, void*); | |
2028 size_t (*fdimeread)(struct soap*, void*, char*, size_t); | |
2029 int (*fdimewrite)(struct soap*, void*, const char*, size_t); | |
2030 void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*); | |
2031 void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding); | |
2032 void (*fmimereadclose)(struct soap*, void*); | |
2033 void (*fmimewriteclose)(struct soap*, void*); | |
2034 size_t (*fmimeread)(struct soap*, void*, char*, size_t); | |
2035 int (*fmimewrite)(struct soap*, void*, const char*, size_t); | |
2036 #endif | |
2037 SOAP_SOCKET master; /* socket bound to TCP/IP port */ | |
2038 SOAP_SOCKET socket; /* socket to send and receive */ | |
2039 SOAP_SOCKET sendsk; /* socket to send (overrides ::socket) */ | |
2040 SOAP_SOCKET recvsk; /* socket to receive (overrides ::socket) */ | |
2041 #if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) | |
2042 std::ostream *os; /* stream to send */ | |
2043 std::istream *is; /* stream to receive */ | |
2044 #else | |
2045 void *os; /* preserve struct size */ | |
2046 void *is; /* preserve struct size */ | |
2047 #endif | |
2048 #ifndef UNDER_CE | |
2049 int sendfd; /* WinCE FD to send */ | |
2050 int recvfd; /* WinCE FD to receive */ | |
2051 #else | |
2052 FILE *sendfd; /* FD to send */ | |
2053 FILE *recvfd; /* FD to receive */ | |
2054 #endif | |
2055 size_t bufidx; /* index in soap.buf[] */ | |
2056 size_t buflen; /* length of soap.buf[] content */ | |
2057 soap_wchar ahead; /* parser lookahead */ | |
2058 short cdata; /* CDATA parser state */ | |
2059 short body; /* HTTP or XML element has a body (1) or not (0) */ | |
2060 unsigned int level; /* XML nesting level */ | |
2061 size_t count; /* message length counter */ | |
2062 size_t length; /* message length as set by HTTP header */ | |
2063 char *labbuf; /* look-aside buffer */ | |
2064 size_t lablen; /* look-aside buffer allocated length */ | |
2065 size_t labidx; /* look-aside buffer index to available part */ | |
2066 char buf[SOAP_BUFLEN];/* send and receive buffer */ | |
2067 char msgbuf[1024]; /* in/out buffer for HTTP/MIME headers >=1024 bytes */ | |
2068 char tmpbuf[1024]; /* in/out buffer for HTTP/MIME headers, simpleType values, element and attribute tag names, and DIME must be >=1024 bytes */ | |
2069 char tag[SOAP_TAGLEN]; | |
2070 char id[SOAP_TAGLEN]; | |
2071 char href[SOAP_TAGLEN]; | |
2072 char type[SOAP_TAGLEN]; | |
2073 char arrayType[SOAP_TAGLEN]; | |
2074 char arraySize[SOAP_TAGLEN]; | |
2075 char arrayOffset[SOAP_TAGLEN]; | |
2076 short other; | |
2077 short root; | |
2078 int position; | |
2079 int positions[SOAP_MAXDIMS]; | |
2080 struct soap_attribute *attributes; /* attribute list */ | |
2081 short encoding; /* when set, output encodingStyle */ | |
2082 short mustUnderstand; /* a mustUnderstand element was parsed or is output */ | |
2083 short null; /* parsed XML is xsi:nil */ | |
2084 short ns; /* when not set, output full xmlns bindings */ | |
2085 short part; /* SOAP part state (header or body) */ | |
2086 short event; /* engine events and states for use by plugins */ | |
2087 unsigned int evlev; /* event level */ | |
2088 short alloced; | |
2089 short peeked; | |
2090 size_t chunksize; | |
2091 size_t chunkbuflen; | |
2092 char endpoint[SOAP_TAGLEN]; | |
2093 char path[SOAP_TAGLEN]; | |
2094 char host[SOAP_TAGLEN]; | |
2095 char *action; | |
2096 char *prolog; /* XML declaration prolog */ | |
2097 unsigned long ip; /* IP number */ | |
2098 int port; /* port number */ | |
2099 short keep_alive; /* connection should be kept open */ | |
2100 short tcp_keep_alive; /* enable SO_KEEPALIVE */ | |
2101 unsigned int tcp_keep_idle; /* set TCP_KEEPIDLE */ | |
2102 unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */ | |
2103 unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */ | |
2104 unsigned int max_keep_alive; /* maximum keep-alive session (default=100) */ | |
2105 const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */ | |
2106 const char *proxy_host; /* Proxy Server host name */ | |
2107 int proxy_port; /* Proxy Server port (default = 8080) */ | |
2108 const char *proxy_userid; /* Proxy Authorization user name */ | |
2109 const char *proxy_passwd; /* Proxy Authorization password */ | |
2110 const char *proxy_from; /* X-Forwarding-For header returned by proxy */ | |
2111 int status; /* -1 when request, else error code to be returned by server */ | |
2112 int error; | |
2113 int errmode; | |
2114 int errnum; | |
2115 #ifndef WITH_LEANER | |
2116 struct soap_dom_element *dom; | |
2117 struct soap_dime dime; | |
2118 struct soap_mime mime; | |
2119 struct soap_xlist *xlist; | |
2120 #endif | |
2121 #if !defined(WITH_LEAN) || defined(SOAP_DEBUG) | |
2122 const char *logfile[SOAP_MAXLOGS]; | |
2123 FILE *fdebug[SOAP_MAXLOGS]; | |
2124 struct soap_mlist *mht[SOAP_PTRHASH]; | |
2125 #endif | |
2126 #ifndef WITH_LEAN | |
2127 const char *wsuid; /* space-separated string of element tags */ | |
2128 const char *c14nexclude; /* space-separated string of prefixes */ | |
2129 struct soap_cookie *cookies; | |
2130 const char *cookie_domain; | |
2131 const char *cookie_path; | |
2132 int cookie_max; | |
2133 #endif | |
2134 #ifndef WITH_NOIO | |
2135 unsigned int ipv6_multicast_if; /* in_addr_t in6addr->sin6_scope_id IPv6 value */ | |
2136 char* ipv4_multicast_if; /* IP_MULTICAST_IF IPv4 setsockopt interface_addr */ | |
2137 unsigned char ipv4_multicast_ttl; /* IP_MULTICAST_TTL value 0..255 */ | |
2138 #ifdef WITH_IPV6 | |
2139 struct sockaddr_storage peer; /* IPv6: set by soap_accept and by UDP recv */ | |
2140 #else | |
2141 struct sockaddr_in peer; /* IPv4: set by soap_connect/soap_accept and by UDP recv */ | |
2142 #endif | |
2143 #endif | |
2144 size_t peerlen; | |
2145 #if defined(WITH_OPENSSL) /* OpenSSL */ | |
2146 int (*fsslauth)(struct soap*); | |
2147 int (*fsslverify)(int, X509_STORE_CTX*); | |
2148 BIO *bio; | |
2149 SSL *ssl; | |
2150 SSL_CTX *ctx; | |
2151 SSL_SESSION *session; | |
2152 const char *dhfile; | |
2153 const char *randfile; | |
2154 #elif defined(WITH_GNUTLS) /* GNUTLS */ | |
2155 int (*fsslauth)(struct soap*); | |
2156 void *fsslverify; | |
2157 gnutls_certificate_credentials_t xcred; /* cert pointer */ | |
2158 gnutls_anon_client_credentials_t acred; /* anon pointer */ | |
2159 gnutls_priority_t cache; /* priority cache pointer */ | |
2160 gnutls_session_t session; /* session pointer */ | |
2161 gnutls_dh_params_t dh_params; | |
2162 gnutls_rsa_params_t rsa_params; | |
2163 #else /* No SSL/TLS */ | |
2164 void *fsslauth; /* dummy members, to preserve struct size */ | |
2165 void *fsslverify; | |
2166 void *bio; | |
2167 void *ssl; | |
2168 void *ctx; | |
2169 void *session; | |
2170 void *dh_params; | |
2171 void *rsa_params; | |
2172 #endif | |
2173 unsigned short ssl_flags; | |
2174 const char *keyfile; | |
2175 const char *keyid; | |
2176 const char *password; | |
2177 const char *cafile; | |
2178 const char *capath; | |
2179 const char *crlfile; | |
2180 char session_host[SOAP_TAGLEN]; | |
2181 int session_port; | |
2182 #ifdef WITH_C_LOCALE | |
2183 # ifdef WIN32 | |
2184 _locale_t c_locale; /* set to C locale by default */ | |
2185 # else | |
2186 locale_t c_locale; /* set to C locale by default */ | |
2187 # endif | |
2188 #else | |
2189 void *c_locale; | |
2190 #endif | |
2191 #ifdef WITH_ZLIB | |
2192 z_stream *d_stream; /* decompression stream */ | |
2193 uLong z_crc; /* internal gzip crc */ | |
2194 #else | |
2195 void *d_stream; /* dummy members, to preserve struct size */ | |
2196 soap_int32 z_crc; | |
2197 #endif | |
2198 const char *z_dict; /* support for zlib static dictionaries */ | |
2199 unsigned int z_dict_len; | |
2200 short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */ | |
2201 short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ | |
2202 short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ | |
2203 char *z_buf; /* buffer */ | |
2204 size_t z_buflen; | |
2205 unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */ | |
2206 float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */ | |
2207 float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */ | |
2208 #ifdef WMW_RPM_IO /* VxWorks */ | |
2209 void *rpmreqid; | |
2210 #endif | |
2211 #ifdef __cplusplus | |
2212 soap(); | |
2213 soap(soap_mode); | |
2214 soap(soap_mode, soap_mode); | |
2215 soap(const struct soap&); | |
2216 virtual ~soap(); | |
2217 #else | |
2218 void (*dummy)(void); | |
2219 #endif | |
2220 }; | |
2221 | |
2222 struct soap_code_map | |
2223 { long code; | |
2224 const char *string; | |
2225 }; | |
2226 | |
2227 /* forwarding list */ | |
2228 struct soap_flist | |
2229 { struct soap_flist *next; | |
2230 int type; | |
2231 void *ptr; | |
2232 unsigned int level; | |
2233 size_t len; | |
2234 void (*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t); | |
2235 }; | |
2236 | |
2237 /* id-ref forwarding list */ | |
2238 struct soap_ilist | |
2239 { struct soap_ilist *next; | |
2240 int type; | |
2241 size_t size; | |
2242 void *link; | |
2243 void *copy; | |
2244 struct soap_flist *flist; | |
2245 void *ptr; | |
2246 unsigned int level; | |
2247 char id[1]; /* the actual id string value flows into the allocated region below this struct */ | |
2248 }; | |
2249 | |
2250 struct soap_plugin | |
2251 { struct soap_plugin *next; | |
2252 const char *id; | |
2253 void *data; | |
2254 int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); | |
2255 void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */ | |
2256 }; | |
2257 | |
2258 extern SOAP_NMAC struct Namespace namespaces[]; | |
2259 | |
2260 #ifndef WITH_LEAN | |
2261 # define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx]) | |
2262 # define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++]) | |
2263 #else | |
2264 soap_wchar soap_get0(struct soap*); | |
2265 soap_wchar soap_get1(struct soap*); | |
2266 #endif | |
2267 | |
2268 #define SOAP_XSTRINGIFY(s) SOAP_STRINGIFY(s) | |
2269 #define SOAP_STRINGIFY(s) #s | |
2270 | |
2271 #define soap_versioning_paste(name, ext) name##_LIBRARY_VERSION_REQUIRED_##ext | |
2272 #define soap_versioning_ext(name, ext) soap_versioning_paste(name, ext) | |
2273 #define soap_versioning(name) soap_versioning_ext(name, GSOAP_VERSION) | |
2274 | |
2275 #define soap_init(soap) soap_init1(soap, SOAP_IO_DEFAULT) | |
2276 #define soap_init1(soap, mode) soap_init2(soap, mode, mode) | |
2277 #define soap_init2(soap, imode, omode) soap_versioning(soap_init)(soap, imode, omode) | |
2278 | |
2279 #define soap_new() soap_new1(SOAP_IO_DEFAULT) | |
2280 #define soap_new1(mode) soap_new2(mode, mode) | |
2281 #define soap_new2(imode, omode) soap_versioning(soap_new)(imode, omode) | |
2282 | |
2283 #define soap_revget1(soap) ((soap)->bufidx--) | |
2284 #define soap_unget(soap, c) ((soap)->ahead = c) | |
2285 #define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL) | |
2286 #define soap_mode(soap, n) ((soap)->mode = (soap)->imode = (soap)->omode = (n)) | |
2287 #define soap_imode(soap, n) ((soap)->imode = (n)) | |
2288 #define soap_omode(soap, n) ((soap)->omode = (n)) | |
2289 #define soap_set_imode(soap, n) ((soap)->imode |= (n)) | |
2290 #define soap_clr_imode(soap, n) ((soap)->imode &= ~(n)) | |
2291 #define soap_set_omode(soap, n) ((soap)->omode |= (n)) | |
2292 #define soap_clr_omode(soap, n) ((soap)->omode &= ~(n)) | |
2293 #define soap_set_mode(soap, n) ((soap)->imode |= (n), (soap)->omode |= (n)) | |
2294 #define soap_clr_mode(soap, n) ((soap)->imode &= ~(n), (soap)->omode &= ~(n)) | |
2295 #define soap_destroy(soap) soap_delete((soap), NULL) | |
2296 | |
2297 #ifdef HAVE_STRRCHR | |
2298 # define soap_strrchr(s, t) strrchr(s, t) | |
2299 #else | |
2300 SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t); | |
2301 #endif | |
2302 | |
2303 #ifdef HAVE_STRTOL | |
2304 # define soap_strtol(s, t, b) strtol(s, t, b) | |
2305 #else | |
2306 SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b); | |
2307 #endif | |
2308 | |
2309 #ifdef HAVE_STRTOUL | |
2310 # define soap_strtoul(s, t, b) strtoul(s, t, b) | |
2311 #else | |
2312 SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b); | |
2313 #endif | |
2314 | |
2315 #if defined(WIN32) && !defined(__MINGW32__) | |
2316 # define soap_strtoll _strtoi64 | |
2317 #else | |
2318 # define soap_strtoll strtoll | |
2319 #endif | |
2320 | |
2321 #if defined(WIN32) && !defined(__MINGW32__) | |
2322 # define soap_strtoull _strtoui64 | |
2323 #else | |
2324 # define soap_strtoull strtoull | |
2325 #endif | |
2326 | |
2327 #if defined(WITH_OPENSSL) | |
2328 # define soap_random soap_rand() | |
2329 SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void); | |
2330 #elif defined(HAVE_RANDOM) | |
2331 # define soap_random (int)random() | |
2332 #else | |
2333 # define soap_random rand() | |
2334 #endif | |
2335 | |
2336 #ifdef WITH_NOIDREF | |
2337 # define soap_embedded(s, p, t) (0) | |
2338 # define soap_id_lookup(s, i, p, t, n, k) (p) | |
2339 # define soap_id_forward(s, h, p, len, st, tt, n, k, fc) (p) | |
2340 # define soap_reference(s, a, t) (1) | |
2341 # define soap_array_reference(s, p, a, n, t) (1) | |
2342 # define soap_embed(s, p, a, n, t, pp) (0) | |
2343 # define soap_embedded_id(s, i, p, t) (i) | |
2344 # define soap_is_embedded(s, p) (0) | |
2345 # define soap_is_single(s, p) (1) | |
2346 # define soap_lookup_type(s, i) (0) | |
2347 # define soap_getindependent(s) (0) | |
2348 # define soap_putindependent(s) (0) | |
2349 # define soap_markelement(s, p, n) (0) | |
2350 #endif | |
2351 | |
2352 /* soap_traverse() traversal/walker routines take walker function arguments */ | |
2353 typedef void soap_walker(struct soap*, void*, int, const char*, const char*); | |
2354 | |
2355 SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap *soap); | |
2356 SOAP_FMAC5 int SOAP_FMAC6 soap_serve_request(struct soap *soap); | |
2357 | |
2358 SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap*); | |
2359 SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap*); | |
2360 SOAP_FMAC3 const char** SOAP_FMAC4 soap_faultcode(struct soap*); | |
2361 SOAP_FMAC3 const char** SOAP_FMAC4 soap_faultsubcode(struct soap*); | |
2362 SOAP_FMAC3 const char** SOAP_FMAC4 soap_faultstring(struct soap*); | |
2363 SOAP_FMAC3 const char** SOAP_FMAC4 soap_faultdetail(struct soap*); | |
2364 SOAP_FMAC3 const char* SOAP_FMAC4 soap_check_faultsubcode(struct soap*); | |
2365 SOAP_FMAC3 const char* SOAP_FMAC4 soap_check_faultdetail(struct soap*); | |
2366 SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap*); | |
2367 | |
2368 SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*); | |
2369 SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*); | |
2370 SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*); | |
2371 SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*); | |
2372 SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*); | |
2373 | |
2374 SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_init(void); | |
2375 SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*); | |
2376 SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*); | |
2377 SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*); | |
2378 SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int); | |
2379 SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_accept(struct soap*); | |
2380 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*); | |
2381 SOAP_FMAC1 const char * SOAP_FMAC2 soap_ssl_error(struct soap*, int); | |
2382 | |
2383 #if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) | |
2384 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *keyid, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid); | |
2385 #else | |
2386 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid); | |
2387 #endif | |
2388 #if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) | |
2389 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *keyid, const char *password, const char *cafile, const char *capath, const char *randfile); | |
2390 #else | |
2391 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *randfile); | |
2392 #endif | |
2393 | |
2394 SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count); | |
2395 | |
2396 SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*); | |
2397 SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*); | |
2398 SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*); | |
2399 | |
2400 SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*); | |
2401 SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*); | |
2402 SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t); | |
2403 SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*); | |
2404 SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*); | |
2405 SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*); | |
2406 SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*); | |
2407 SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*); | |
2408 SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*); | |
2409 SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*); | |
2410 SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*); | |
2411 SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*); | |
2412 SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int); | |
2413 SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int); | |
2414 | |
2415 SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t); | |
2416 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*); | |
2417 SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*); | |
2418 SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*); | |
2419 SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*); | |
2420 SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*); | |
2421 | |
2422 SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long); | |
2423 SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*); | |
2424 | |
2425 SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int); | |
2426 SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int); | |
2427 SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int); | |
2428 SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*); | |
2429 | |
2430 #ifndef WITH_LEANER | |
2431 SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**); | |
2432 SOAP_FMAC1 int SOAP_FMAC2 soap_dime_forward(struct soap*, unsigned char**, int*, char**, char**, char**); | |
2433 #endif | |
2434 | |
2435 #ifndef WITH_NOIDREF | |
2436 SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**); | |
2437 SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**); | |
2438 SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_enter(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**); | |
2439 SOAP_FMAC1 int SOAP_FMAC2 soap_array_pointer_lookup(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**); | |
2440 SOAP_FMAC1 int SOAP_FMAC2 soap_embed(struct soap *soap, const void *p, const struct soap_array *a, int n, const char *tag, int type); | |
2441 SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*); | |
2442 SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*); | |
2443 SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*); | |
2444 SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t); | |
2445 SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t); | |
2446 SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t); | |
2447 SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t); | |
2448 SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*); | |
2449 SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*); | |
2450 SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*); | |
2451 #endif | |
2452 | |
2453 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_count(struct soap*); | |
2454 SOAP_FMAC1 int SOAP_FMAC2 soap_end_count(struct soap*); | |
2455 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*); | |
2456 SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*); | |
2457 SOAP_FMAC1 int SOAP_FMAC2 soap_end_send_flush(struct soap*); | |
2458 | |
2459 SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char*); | |
2460 SOAP_FMAC1 long SOAP_FMAC2 soap_code_int(const struct soap_code_map*, const char*, long); | |
2461 SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_str(const struct soap_code_map*, long); | |
2462 SOAP_FMAC1 long SOAP_FMAC2 soap_code_bits(const struct soap_code_map*, const char*); | |
2463 SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_list(struct soap*, const struct soap_code_map*, long); | |
2464 | |
2465 SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int); | |
2466 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_serve(struct soap*); | |
2467 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*); | |
2468 SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*); | |
2469 | |
2470 SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t); | |
2471 SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*); | |
2472 SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, int (*fdelete)(struct soap_clist*)); | |
2473 SOAP_FMAC1 int SOAP_FMAC2 soap_unlink(struct soap*, const void*); | |
2474 SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*); | |
2475 SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*); | |
2476 | |
2477 SOAP_FMAC1 void* SOAP_FMAC2 soap_track_malloc(struct soap*, const char*, int, size_t); | |
2478 SOAP_FMAC1 void SOAP_FMAC2 soap_track_free(struct soap*, const char*, int, void*); | |
2479 | |
2480 #ifndef WITH_NOIDREF | |
2481 SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id); | |
2482 SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k); | |
2483 SOAP_FMAC1 void* SOAP_FMAC2 soap_id_forward(struct soap*, const char *id, void *p, size_t len, int st, int tt, size_t n, unsigned int k, void(*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t)); | |
2484 #endif | |
2485 SOAP_FMAC1 void* SOAP_FMAC2 soap_id_enter(struct soap*, const char *id, void *p, int t, size_t n, unsigned int k, const char *type, const char *arrayType, void *(*finstantiate)(struct soap*, int, const char*, const char*, size_t*)); | |
2486 SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t, const void *q, size_t n); | |
2487 | |
2488 SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int); | |
2489 SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int); | |
2490 SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *); | |
2491 SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int); | |
2492 SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *); | |
2493 | |
2494 SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int); | |
2495 SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int); | |
2496 SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int); | |
2497 SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int); | |
2498 SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int); | |
2499 | |
2500 SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*); | |
2501 SOAP_FMAC1 int SOAP_FMAC2 soap_force_closesock(struct soap*); | |
2502 | |
2503 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_versioning(soap_new)(soap_mode, soap_mode); | |
2504 SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*); | |
2505 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(const struct soap*); | |
2506 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*, const struct soap*); | |
2507 SOAP_FMAC1 void SOAP_FMAC2 soap_copy_stream(struct soap*, struct soap*); | |
2508 SOAP_FMAC1 void SOAP_FMAC2 soap_free_stream(struct soap*); | |
2509 SOAP_FMAC1 void SOAP_FMAC2 soap_versioning(soap_init)(struct soap*, soap_mode, soap_mode); | |
2510 SOAP_FMAC1 void SOAP_FMAC2 soap_initialize(struct soap*); | |
2511 SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*); | |
2512 SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*); | |
2513 SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*); | |
2514 SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*); | |
2515 SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*); | |
2516 SOAP_FMAC1 void SOAP_FMAC2 soap_delegate_deletion(struct soap*, struct soap*); | |
2517 | |
2518 /* API functions available with DEBUG or SOAP_DEBUG defined: */ | |
2519 SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*); | |
2520 SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*); | |
2521 SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*); | |
2522 SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*); | |
2523 SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int); | |
2524 /* */ | |
2525 | |
2526 SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*); | |
2527 | |
2528 SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *); | |
2529 SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*); | |
2530 | |
2531 SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*); | |
2532 SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type); | |
2533 SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset); | |
2534 SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href); | |
2535 SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val); | |
2536 SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type); | |
2537 SOAP_FMAC1 int SOAP_FMAC2 soap_element_nil(struct soap*, const char *tag); | |
2538 SOAP_FMAC1 int SOAP_FMAC2 soap_element_id(struct soap*, const char *tag, int id, const void *p, const struct soap_array *a, int d, const char *type, int n); | |
2539 SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag); | |
2540 SOAP_FMAC1 void SOAP_FMAC2 soap_check_result(struct soap*, const char *tag); | |
2541 SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag); | |
2542 SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag); | |
2543 | |
2544 SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*); | |
2545 | |
2546 SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type); | |
2547 | |
2548 SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag); | |
2549 | |
2550 SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*); | |
2551 | |
2552 SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*); | |
2553 SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*); | |
2554 | |
2555 SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*); | |
2556 SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstrdup(struct soap*, const wchar_t*); | |
2557 SOAP_FMAC1 const char * SOAP_FMAC2 soap_tagsearch(const char *big, const char *little); | |
2558 | |
2559 SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag); | |
2560 SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long); | |
2561 | |
2562 #ifndef WITH_LEANER | |
2563 SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag); | |
2564 SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long); | |
2565 #endif | |
2566 | |
2567 SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, size_t n1, size_t n2); | |
2568 | |
2569 SOAP_FMAC1 void SOAP_FMAC2 soap_set_version(struct soap*, short); | |
2570 SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, const struct Namespace*); | |
2571 SOAP_FMAC1 void SOAP_FMAC2 soap_set_local_namespaces(struct soap*); | |
2572 | |
2573 SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*); | |
2574 SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *); | |
2575 SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace(struct soap *soap, const char *tag); | |
2576 | |
2577 SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_lookup_ns(struct soap *soap, const char *tag, size_t n); | |
2578 | |
2579 SOAP_FMAC1 int SOAP_FMAC2 soap_store_lab(struct soap*, const char*, size_t); | |
2580 SOAP_FMAC1 int SOAP_FMAC2 soap_append_lab(struct soap*, const char*, size_t); | |
2581 | |
2582 SOAP_FMAC1 struct soap_blist* SOAP_FMAC2 soap_new_block(struct soap*); | |
2583 SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, struct soap_blist*, size_t); | |
2584 SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*, struct soap_blist*); | |
2585 SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, struct soap_blist*, size_t); | |
2586 SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*, struct soap_blist*); | |
2587 SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*, struct soap_blist*); | |
2588 SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*, struct soap_blist*); | |
2589 SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, struct soap_blist*, char*, int); | |
2590 SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*, struct soap_blist*); | |
2591 SOAP_FMAC1 void SOAP_FMAC2 soap_update_pointers(struct soap *soap, char *start, char *end, char *p1, char *p2); | |
2592 | |
2593 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*); | |
2594 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_out(struct soap*); | |
2595 | |
2596 SOAP_FMAC1 char * SOAP_FMAC2 soap_get_http_body(struct soap*, size_t *len); | |
2597 | |
2598 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*); | |
2599 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*); | |
2600 | |
2601 SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*); | |
2602 SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*); | |
2603 | |
2604 SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*); | |
2605 SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*); | |
2606 | |
2607 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*); | |
2608 | |
2609 SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int); | |
2610 | |
2611 SOAP_FMAC1 int SOAP_FMAC2 soap_send_empty_response(struct soap*, int status); | |
2612 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_empty_response(struct soap*); | |
2613 | |
2614 SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*); | |
2615 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*, int check); | |
2616 | |
2617 #ifndef WITH_NOSTDLIB | |
2618 SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*); | |
2619 SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*); | |
2620 # ifndef WITH_LEAN | |
2621 # ifndef WITH_COMPAT | |
2622 # ifdef __cplusplus | |
2623 SOAP_FMAC1 void SOAP_FMAC2 soap_stream_fault(struct soap*, std::ostream&); | |
2624 # endif | |
2625 # endif | |
2626 SOAP_FMAC1 char* SOAP_FMAC2 soap_sprint_fault(struct soap*, char*, size_t); | |
2627 # endif | |
2628 #endif | |
2629 | |
2630 SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*); | |
2631 SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*); | |
2632 SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*); | |
2633 SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*); | |
2634 SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*); | |
2635 SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*); | |
2636 SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*); | |
2637 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*); | |
2638 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*); | |
2639 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*); | |
2640 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*); | |
2641 SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*); | |
2642 SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**, long minlen, long maxlen); | |
2643 SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**, long minlen, long maxlen); | |
2644 | |
2645 #ifndef WITH_LEAN | |
2646 SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**, long minlen, long maxlen); | |
2647 SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*); | |
2648 SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, int); | |
2649 SOAP_FMAC1 char* SOAP_FMAC2 soap_s2hex(struct soap*, const unsigned char*, char*, int); | |
2650 #endif | |
2651 | |
2652 SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char); | |
2653 SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short); | |
2654 SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int); | |
2655 SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long); | |
2656 SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64); | |
2657 SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float); | |
2658 SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double); | |
2659 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char); | |
2660 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short); | |
2661 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int); | |
2662 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long); | |
2663 SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64); | |
2664 SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*); | |
2665 | |
2666 #ifndef WITH_LEAN | |
2667 SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*); | |
2668 SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t); | |
2669 SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, int*); | |
2670 SOAP_FMAC1 const char* SOAP_FMAC2 soap_hex2s(struct soap*, const char*, char*, size_t, int*); | |
2671 #endif | |
2672 | |
2673 | |
2674 SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int); | |
2675 SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int); | |
2676 SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int); | |
2677 SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int); | |
2678 SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int); | |
2679 SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int); | |
2680 SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int); | |
2681 SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int); | |
2682 SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int); | |
2683 SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int); | |
2684 SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int); | |
2685 SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int); | |
2686 SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long); | |
2687 SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p); | |
2688 | |
2689 #ifndef WITH_LEAN | |
2690 SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int); | |
2691 SOAP_FMAC1 time_t SOAP_FMAC2 soap_timegm(struct tm*); | |
2692 #endif | |
2693 | |
2694 #ifndef WITH_LEANER | |
2695 SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long); | |
2696 SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p); | |
2697 #endif | |
2698 | |
2699 SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int); | |
2700 SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int); | |
2701 SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int); | |
2702 SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int); | |
2703 SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int); | |
2704 SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int); | |
2705 SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int); | |
2706 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int); | |
2707 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int); | |
2708 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int); | |
2709 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int); | |
2710 SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int); | |
2711 SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int); | |
2712 SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type); | |
2713 | |
2714 #ifndef WITH_LEAN | |
2715 SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int); | |
2716 #endif | |
2717 | |
2718 #ifndef WITH_LEANER | |
2719 SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int); | |
2720 SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type); | |
2721 #endif | |
2722 | |
2723 #ifndef WITH_LEANER | |
2724 SOAP_FMAC1 int SOAP_FMAC2 soap_attachment(struct soap *, const char*, int, const void*, const struct soap_array*, const char*, const char*, const char*, int, const char*, int); | |
2725 SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, size_t); | |
2726 SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*); | |
2727 SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*); | |
2728 SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*); | |
2729 SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*); | |
2730 SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*); | |
2731 SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*); | |
2732 SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*); | |
2733 SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*); | |
2734 SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*); | |
2735 SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*); | |
2736 SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*); | |
2737 SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start); | |
2738 SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*); | |
2739 SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*); | |
2740 SOAP_FMAC1 int SOAP_FMAC2 soap_set_dime_attachment(struct soap*, char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option); | |
2741 SOAP_FMAC1 int SOAP_FMAC2 soap_set_mime_attachment(struct soap*, char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description); | |
2742 SOAP_FMAC1 void SOAP_FMAC2 soap_post_check_mime_attachments(struct soap *soap); | |
2743 SOAP_FMAC1 int SOAP_FMAC2 soap_check_mime_attachments(struct soap *soap); | |
2744 SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_get_mime_attachment(struct soap *soap, void *handle); | |
2745 SOAP_FMAC1 int SOAP_FMAC2 soap_match_cid(struct soap*, const char*, const char*); | |
2746 #endif | |
2747 | |
2748 SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*); | |
2749 SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*); | |
2750 | |
2751 SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag); | |
2752 SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value, int flag); | |
2753 SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap); | |
2754 | |
2755 SOAP_FMAC1 const char* SOAP_FMAC2 soap_url(struct soap *soap, const char*, const char*); | |
2756 SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_url(const char*, char*, size_t); | |
2757 SOAP_FMAC1 const char* SOAP_FMAC2 soap_encode_url_string(struct soap*, const char*); | |
2758 #ifdef WITH_COOKIES | |
2759 SOAP_FMAC1 void SOAP_FMAC2 soap_getcookies(struct soap *soap, const char *val); | |
2760 SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*); | |
2761 SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*); | |
2762 SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*); | |
2763 SOAP_FMAC1 extern char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*); | |
2764 SOAP_FMAC1 extern time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*); | |
2765 SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*); | |
2766 SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*); | |
2767 SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*); | |
2768 SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*); | |
2769 SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*); | |
2770 SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, const struct soap*); | |
2771 SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*); | |
2772 SOAP_FMAC1 int SOAP_FMAC2 soap_putsetcookies(struct soap *soap); | |
2773 SOAP_FMAC1 int SOAP_FMAC2 soap_putcookies(struct soap *soap, const char *domain, const char *path, int secure); | |
2774 #endif | |
2775 | |
2776 #ifdef __cplusplus | |
2777 } /* extern "C" */ | |
2778 #endif | |
2779 | |
2780 #endif /* STDSOAP_H */ |