Eneboo - Documentación para desarrolladores
|
00001 /* 00002 00003 stdsoap2.h 2.7.9 00004 00005 gSOAP runtime 00006 00007 gSOAP XML Web services tools 00008 Copyright (C) 2000-2006, Robert van Engelen, Genivia Inc., All Rights Reserved. 00009 This part of the software is released under one of the following licenses: 00010 GPL, the gSOAP public license, or Genivia's license for commercial use. 00011 -------------------------------------------------------------------------------- 00012 Contributors: 00013 00014 Wind River Systems, Inc., for the following additions (marked WR[...]): 00015 - vxWorks compatible 00016 -------------------------------------------------------------------------------- 00017 gSOAP public license. 00018 00019 The contents of this file are subject to the gSOAP Public License Version 1.3 00020 (the "License"); you may not use this file except in compliance with the 00021 License. You may obtain a copy of the License at 00022 http://www.cs.fsu.edu/~engelen/soaplicense.html 00023 Software distributed under the License is distributed on an "AS IS" basis, 00024 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 00025 for the specific language governing rights and limitations under the License. 00026 00027 The Initial Developer of the Original Code is Robert A. van Engelen. 00028 Copyright (C) 2000-2006, Robert van Engelen, Genivia Inc., All Rights Reserved. 00029 -------------------------------------------------------------------------------- 00030 GPL license. 00031 00032 This program is free software; you can redistribute it and/or modify it under 00033 the terms of the GNU General Public License as published by the Free Software 00034 Foundation; either version 2 of the License, or (at your option) any later 00035 version. 00036 00037 This program is distributed in the hope that it will be useful, but WITHOUT ANY 00038 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 00039 PARTICULAR PURPOSE. See the GNU General Public License for more details. 00040 00041 You should have received a copy of the GNU General Public License along with 00042 this program; if not, write to the Free Software Foundation, Inc., 59 Temple 00043 Place, Suite 330, Boston, MA 02111-1307 USA 00044 00045 Author contact information: 00046 engelen@genivia.com / engelen@acm.org 00047 -------------------------------------------------------------------------------- 00048 A commercial use license is available from Genivia, Inc., contact@genivia.com 00049 -------------------------------------------------------------------------------- 00050 */ 00051 00052 #ifdef WITH_SOAPDEFS_H 00053 # include "soapdefs.h" /* include user-defined stuff */ 00054 #endif 00055 00056 #ifndef _THREAD_SAFE 00057 # define _THREAD_SAFE 00058 #endif 00059 00060 #ifndef OPENSERVER 00061 # ifndef _REENTRANT 00062 # define _REENTRANT 00063 # endif 00064 #endif 00065 00066 #ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */ 00067 # define SOAP_FMAC1 00068 #endif 00069 00070 #ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */ 00071 # define SOAP_FMAC2 00072 #endif 00073 00074 #ifndef SOAP_FMAC3 /* (de)serializer declaration macro */ 00075 # define SOAP_FMAC3 00076 #endif 00077 00078 #ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */ 00079 # define SOAP_FMAC3S SOAP_FMAC3 00080 #endif 00081 00082 #ifndef SOAP_FMAC4 /* (de)serializer declaration macro */ 00083 # define SOAP_FMAC4 00084 #endif 00085 00086 #ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */ 00087 # define SOAP_FMAC4S SOAP_FMAC4 00088 #endif 00089 00090 #ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */ 00091 # define SOAP_FMAC5 00092 #endif 00093 00094 #ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */ 00095 # define SOAP_FMAC6 00096 #endif 00097 00098 #ifndef SOAP_CMAC /* class declaration macro */ 00099 # define SOAP_CMAC 00100 #endif 00101 00102 #ifndef SOAP_NMAC /* namespace table declaration macro */ 00103 # define SOAP_NMAC 00104 #endif 00105 00106 #ifndef SOAP_SOURCE_STAMP 00107 # define SOAP_SOURCE_STAMP(str) 00108 #endif 00109 00110 /* gSOAP 2.7.4 and higher: fast look-aside buffering is stable */ 00111 #ifndef WITH_FAST 00112 # define WITH_FAST 00113 #endif 00114 00115 #ifdef WITH_LEANER 00116 # ifndef WITH_LEAN 00117 # define WITH_LEAN 00118 # endif 00119 #endif 00120 00121 #ifdef WITH_LEAN 00122 # ifdef WITH_COOKIES 00123 # error "Cannot build WITH_LEAN code WITH_COOKIES enabled" 00124 # endif 00125 #endif 00126 00127 #ifndef STDSOAP_H 00128 #define STDSOAP_H 00129 00130 #if defined(__vxworks) || defined(__VXWORKS__) 00131 # define VXWORKS 00132 #endif 00133 00134 #ifdef _WIN32 00135 # ifndef WIN32 00136 # define WIN32 00137 # endif 00138 #endif 00139 00140 #ifdef _WIN32_WCE 00141 # ifndef UNDER_CE 00142 # define UNDER_CE _WIN32_WCE 00143 # endif 00144 #endif 00145 00146 #ifdef UNDER_CE 00147 # ifndef WIN32 00148 # define WIN32 00149 # endif 00150 #endif 00151 00152 #ifdef __BORLANDC__ 00153 # ifdef __WIN32__ 00154 # ifndef WIN32 00155 # define WIN32 00156 # endif 00157 # endif 00158 #endif 00159 00160 #ifdef __CYGWIN__ 00161 # ifndef CYGWIN 00162 # define CYGWIN 00163 # endif 00164 #endif 00165 00166 #ifdef __SYMBIAN32__ 00167 # define SYMBIAN 00168 # undef WIN32 00169 #endif 00170 00171 #if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__) 00172 # ifndef PALM 00173 # define PALM 00174 # endif 00175 #endif 00176 00177 #if defined(__hpux) 00178 # ifndef HP_UX 00179 # define HP_UX 00180 # endif 00181 #endif 00182 00183 #if defined(__alpha) && !defined(__VMS) 00184 # ifndef TRU64 00185 # define TRU64 00186 # endif 00187 #endif 00188 00189 #ifdef __MVS__ 00190 # ifndef OS390 00191 # define OS390 00192 # endif 00193 #endif 00194 00195 #ifdef HAVE_CONFIG_H 00196 # include "config.h" 00197 # ifdef WITH_OPENSSL 00198 # ifndef HAVE_OPENSSL_SSL_H 00199 # undef WITH_OPENSSL 00200 # endif 00201 # endif 00202 #else 00203 # if defined(UNDER_CE) 00204 # define WITH_LEAN 00205 # define HAVE_SSCANF 00206 # elif defined(WIN32) 00207 # define HAVE_STRRCHR 00208 # define HAVE_STRTOD 00209 # define HAVE_SSCANF 00210 # define HAVE_STRTOL 00211 # define HAVE_STRTOUL 00212 # define HAVE_SYS_TIMEB_H 00213 # define HAVE_FTIME 00214 # define HAVE_WCTOMB 00215 # define HAVE_MBTOWC 00216 # define SOAP_LONG_FORMAT "%I64d" 00217 # define SOAP_ULONG_FORMAT "%I64u" 00218 # elif defined(CYGWIN) 00219 # define HAVE_STRRCHR 00220 # define HAVE_STRTOD 00221 # define HAVE_SSCANF 00222 # define HAVE_STRTOL 00223 # define HAVE_STRTOUL 00224 # define HAVE_SYS_TIMEB_H 00225 # define HAVE_FTIME 00226 # define HAVE_RAND_R 00227 # define HAVE_GMTIME_R 00228 # define HAVE_LOCALTIME_R 00229 # define HAVE_WCTOMB 00230 # define HAVE_MBTOWC 00231 # elif defined(__APPLE__) 00232 # define HAVE_STRRCHR 00233 # define HAVE_STRTOD 00234 # define HAVE_SSCANF 00235 # define HAVE_STRTOL 00236 # define HAVE_STRTOUL 00237 # define HAVE_RAND_R 00238 # define HAVE_GMTIME_R 00239 # define HAVE_LOCALTIME_R 00240 # define HAVE_TIMEGM 00241 # define HAVE_WCTOMB 00242 # define HAVE_MBTOWC 00243 # elif defined(_AIXVERSION_431) 00244 # define HAVE_STRRCHR 00245 # define HAVE_STRTOD 00246 # define HAVE_SSCANF 00247 # define HAVE_STRTOL 00248 # define HAVE_STRTOUL 00249 # define HAVE_SYS_TIMEB_H 00250 # define HAVE_FTIME 00251 # define HAVE_RAND_R 00252 # define HAVE_GMTIME_R 00253 # define HAVE_LOCALTIME_R 00254 # define HAVE_WCTOMB 00255 # define HAVE_MBTOWC 00256 # elif defined(HP_UX) 00257 # define HAVE_STRRCHR 00258 # define HAVE_STRTOD 00259 # define HAVE_SSCANF 00260 # define HAVE_STRTOL 00261 # define HAVE_STRTOUL 00262 # define HAVE_SYS_TIMEB_H 00263 # define HAVE_FTIME 00264 # define HAVE_RAND_R 00265 # define HAVE_GMTIME_R 00266 # define HAVE_LOCALTIME_R 00267 # define HAVE_WCTOMB 00268 # define HAVE_MBTOWC 00269 # elif defined(FREEBSD) || defined(__FreeBSD__) 00270 # define HAVE_STRRCHR 00271 # define HAVE_STRTOD 00272 # define HAVE_SSCANF 00273 # define HAVE_STRTOL 00274 # define HAVE_STRTOUL 00275 # define HAVE_STRTOLL 00276 # define HAVE_STRTOULL 00277 # define HAVE_GETTIMEOFDAY 00278 # define HAVE_RAND_R 00279 # define HAVE_GMTIME_R 00280 # define HAVE_LOCALTIME_R 00281 # define HAVE_WCTOMB 00282 # define HAVE_MBTOWC 00283 # define SOAP_LONG_FORMAT "%qd" 00284 # define SOAP_ULONG_FORMAT "%qu" 00285 # elif defined(__VMS) 00286 # define HAVE_STRRCHR 00287 # define HAVE_STRTOD 00288 # define HAVE_SSCANF 00289 # define HAVE_STRTOL 00290 # define HAVE_STRTOUL 00291 # define HAVE_SYS_TIMEB_H 00292 # define HAVE_FTIME 00293 # define HAVE_RAND_R 00294 # define HAVE_GMTIME_R 00295 # define HAVE_LOCALTIME_R 00296 # define HAVE_WCTOMB 00297 # define HAVE_MBTOWC 00298 # elif defined(__GLIBC__) || defined(__GNU__) 00299 # define HAVE_STRRCHR 00300 # define HAVE_STRTOD 00301 # define HAVE_SSCANF 00302 # define HAVE_STRTOL 00303 # define HAVE_STRTOUL 00304 # define HAVE_STRTOLL 00305 # define HAVE_STRTOULL 00306 # define HAVE_SYS_TIMEB_H 00307 # define HAVE_FTIME 00308 # define HAVE_RAND_R 00309 # define HAVE_GMTIME_R 00310 # define HAVE_LOCALTIME_R 00311 # define HAVE_TIMEGM 00312 # define HAVE_WCTOMB 00313 # define HAVE_MBTOWC 00314 # define HAVE_ISNAN 00315 # elif defined(TRU64) 00316 # define HAVE_STRRCHR 00317 # define HAVE_STRTOD 00318 # define HAVE_SSCANF 00319 # define HAVE_STRTOL 00320 # define HAVE_STRTOUL 00321 # define HAVE_GETTIMEOFDAY 00322 # define HAVE_SYS_TIMEB_H 00323 # define HAVE_RAND_R 00324 # define HAVE_GMTIME_R 00325 # define HAVE_LOCALTIME_R 00326 # define __USE_STD_IOSTREAM 00327 # define HAVE_WCTOMB 00328 # define HAVE_MBTOWC 00329 # define SOAP_LONG_FORMAT "%ld" 00330 # define SOAP_ULONG_FORMAT "%lu" 00331 # elif defined(MAC_CARBON) 00332 # define WITH_NOIO 00333 # define HAVE_STRRCHR 00334 # define HAVE_STRTOD 00335 # define HAVE_SSCANF 00336 # define HAVE_STRTOL 00337 # define HAVE_STRTOUL 00338 # define HAVE_FTIME 00339 # define HAVE_RAND_R 00340 # define HAVE_GETHOSTBYNAME_R 00341 # define HAVE_GMTIME_R 00342 # define HAVE_LOCALTIME_R 00343 # define HAVE_WCTOMB 00344 # define HAVE_MBTOWC 00345 # elif defined(PALM) 00346 # define WITH_LEAN 00347 # define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */ 00348 # include <stdlib.h> /* Needs to be included before unix headers */ 00349 # include <sys_types.h> 00350 # define IGNORE_STDIO_STUBS 00351 # include <StdIOPalm.h> 00352 # define O_NONBLOCK FNONBIO 00353 # include <sys_socket.h> 00354 # include "palmFunctions.h" 00355 # elif defined(SYMBIAN) 00356 # define WITH_LEAN 00357 # define WITH_NONAMESPACES 00358 # define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */ 00359 # include <e32def.h> 00360 # include <sys/ioctl.h> 00361 # elif defined(VXWORKS) 00362 # define HAVE_STRRCHR 00363 # define HAVE_STRTOD 00364 # define HAVE_SSCANF 00365 # define HAVE_STRTOL 00366 # define HAVE_STRTOUL 00367 # define HAVE_PGMTIME_R 00368 # define HAVE_PLOCALTIME_R 00369 # define HAVE_MKTIME 00370 # elif defined(OS390) 00371 # define HAVE_STRRCHR 00372 # define HAVE_STRTOD 00373 # define HAVE_SSCANF 00374 # define HAVE_STRTOL 00375 # define HAVE_STRTOUL 00376 # define HAVE_SYS_TIMEB_H 00377 # define HAVE_FTIME 00378 # define HAVE_RAND_R 00379 # define HAVE_GMTIME_R 00380 # define HAVE_LOCALTIME_R 00381 # define HAVE_WCTOMB 00382 # define HAVE_MBTOWC 00383 # elif defined(AS400) 00384 # define HAVE_STRRCHR 00385 # define HAVE_STRTOD 00386 # define HAVE_SSCANF 00387 # define HAVE_STRTOL 00388 # define HAVE_STRTOUL 00389 # define HAVE_SYS_TIMEB_H 00390 # define HAVE_FTIME 00391 # define HAVE_RAND_R 00392 # define HAVE_GMTIME_R 00393 # define HAVE_LOCALTIME_R 00394 # define HAVE_WCTOMB 00395 # define HAVE_MBTOWC 00396 # elif defined(__QNX__) || defined(QNX) 00397 /* QNX does not have a working version of strtof */ 00398 # undef HAVE_STRTOF 00399 # define HAVE_STRRCHR 00400 # define HAVE_STRTOD 00401 # define HAVE_SSCANF 00402 # define HAVE_STRTOL 00403 # define HAVE_STRTOUL 00404 # define HAVE_SYS_TIMEB_H 00405 # define HAVE_FTIME 00406 # define HAVE_RAND_R 00407 # define HAVE_GETHOSTBYNAME_R 00408 # define HAVE_GMTIME_R 00409 # define HAVE_LOCALTIME_R 00410 # define HAVE_WCTOMB 00411 # define HAVE_MBTOWC 00412 # define LONG64 long 00413 # define ULONG64 unsigned LONG64 00414 # define SOAP_LONG_FORMAT "%ld" 00415 # define SOAP_ULONG_FORMAT "%lu" 00416 # else 00417 /* Default asumptions on supported functions */ 00418 # define HAVE_STRRCHR 00419 # define HAVE_STRTOD 00420 # define HAVE_SSCANF 00421 # define HAVE_STRTOL 00422 # define HAVE_STRTOUL 00423 # define HAVE_SYS_TIMEB_H 00424 # define HAVE_FTIME 00425 # define HAVE_RAND_R 00426 # define HAVE_GETHOSTBYNAME_R 00427 # define HAVE_GMTIME_R 00428 # define HAVE_LOCALTIME_R 00429 # define HAVE_WCTOMB 00430 # define HAVE_MBTOWC 00431 # endif 00432 #endif 00433 00434 #ifndef SOAP_LONG_FORMAT 00435 # define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */ 00436 #endif 00437 00438 #ifndef SOAP_ULONG_FORMAT 00439 # define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */ 00440 #endif 00441 00442 #ifndef WITH_NOSTDLIB 00443 # include <stdlib.h> 00444 # ifndef PALM 00445 # include <stdio.h> 00446 # include <string.h> 00447 # endif 00448 # include <ctype.h> 00449 # include <limits.h> 00450 #endif 00451 00452 #if defined(__cplusplus) && !defined(WITH_LEAN) 00453 # include <string> 00454 # include <iostream> 00455 #endif 00456 00457 #ifdef WITH_NOHTTP 00458 # ifndef WITH_NOIO 00459 # define WITH_NOIO 00460 # undef WITH_COOKIES 00461 # endif 00462 #endif 00463 00464 #ifndef UNDER_CE 00465 # ifndef PALM 00466 # ifndef WITH_NOIO 00467 # include <errno.h> 00468 # include <sys/types.h> 00469 # endif 00470 # ifndef WITH_LEAN 00471 # ifdef HAVE_SYS_TIMEB_H 00472 # include <sys/timeb.h> /* for ftime() */ 00473 # endif 00474 # include <time.h> 00475 # endif 00476 # endif 00477 #endif 00478 00479 #ifdef OPENSERVER 00480 # include <sys/socket.h> 00481 # include <sys/stream.h> 00482 # include <sys/protosw.h> 00483 extern int h_errno; 00484 #endif 00485 00486 #ifndef WITH_NOIO 00487 # ifndef WIN32 00488 # ifndef PALM 00489 # include <sys/socket.h> 00490 # ifdef VXWORKS 00491 # include <sockLib.h> 00492 # include <selectLib.h> 00493 # endif 00494 # ifndef VXWORKS 00495 # ifndef SYMBIAN 00496 # include <strings.h> 00497 # endif 00498 # endif 00499 # ifdef SUN_OS 00500 # include <sys/stream.h> /* SUN */ 00501 # include <sys/socketvar.h> /* SUN < 2.8 (?) */ 00502 # endif 00503 # ifdef VXWORKS 00504 # ifdef _WRS_KERNEL 00505 # include <sys/times.h> 00506 # endif 00507 # else 00508 # include <sys/time.h> 00509 # endif 00510 # include <netinet/in.h> 00511 # ifdef OS390 00512 # include <netinet/tcp_var.h> 00513 # else 00514 # include <netinet/tcp.h> /* TCP_NODELAY */ 00515 # endif 00516 # include <arpa/inet.h> 00517 # endif 00518 # endif 00519 #endif 00520 00521 #ifdef WITH_FASTCGI 00522 # include <fcgi_stdio.h> 00523 #endif 00524 00525 #ifdef WITH_OPENSSL 00526 # define OPENSSL_NO_KRB5 00527 # include <openssl/bio.h> 00528 # include <openssl/err.h> 00529 # include <openssl/rand.h> 00530 # include <openssl/ssl.h> 00531 # include <openssl/x509v3.h> 00532 # ifndef ALLOW_OLD_VERSIONS 00533 # if (OPENSSL_VERSION_NUMBER < 0x00905100L) 00534 # error "Must use OpenSSL 0.9.6 or later" 00535 # endif 00536 # endif 00537 #endif 00538 00539 #ifdef WITH_GZIP 00540 # ifndef WITH_ZLIB 00541 # define WITH_ZLIB 00542 # endif 00543 #endif 00544 00545 #ifdef WITH_CASEINSENSITIVETAGS 00546 # define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */ 00547 #else 00548 # define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */ 00549 #endif 00550 00551 #ifdef WITH_ZLIB 00552 # include <zlib.h> 00553 #endif 00554 00555 #ifndef WITH_NOSTDLIB 00556 # ifndef PALM 00557 # include <math.h> /* for isnan() */ 00558 # endif 00559 #endif 00560 00561 /* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */ 00562 00563 #ifdef __cplusplus 00564 extern "C" { 00565 #endif 00566 00567 #ifdef WIN32 00568 # ifndef UNDER_CE 00569 # include <io.h> 00570 # include <fcntl.h> 00571 # endif 00572 # include <winsock.h> 00573 /* # include <winsock2.h> */ /* Alternative: use winsock2 (not available with eVC) */ 00574 # ifdef WITH_IPV6 00575 # include <ws2tcpip.h> 00576 # include <wspiapi.h> 00577 # endif 00578 #else 00579 # ifdef VXWORKS 00580 # include <hostLib.h> 00581 # include <ioctl.h> 00582 # include <ioLib.h> 00583 # endif 00584 # ifndef WITH_NOIO 00585 # ifndef PALM 00586 # include <netdb.h> 00587 # include <netinet/in.h> 00588 # include <unistd.h> 00589 # include <fcntl.h> 00590 # endif 00591 # endif 00592 #endif 00593 00594 /* Portability: define SOAP_SOCKLEN_T */ 00595 #if defined(_AIX) 00596 # define SOAP_SOCKLEN_T socklen_t 00597 #elif defined(SOCKLEN_T) 00598 # define SOAP_SOCKLEN_T SOCKLEN_T 00599 #elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(__QNX__) || defined(QNX) 00600 # define SOAP_SOCKLEN_T socklen_t 00601 #elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(HP_UX) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS) 00602 # define SOAP_SOCKLEN_T int 00603 #else 00604 # define SOAP_SOCKLEN_T size_t 00605 #endif 00606 00607 #ifndef SOAP_SOCKET 00608 # ifdef WIN32 00609 # define SOAP_SOCKET SOCKET 00610 # define soap_closesocket(n) closesocket(n) 00611 # else 00612 # define SOAP_SOCKET int 00613 # define soap_closesocket(n) close(n) 00614 # endif 00615 #endif 00616 00617 #define SOAP_INVALID_SOCKET (-1) 00618 #define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET) 00619 00620 #ifndef FD_SETSIZE 00621 # define FD_SETSIZE (1024) 00622 #endif 00623 00624 #if defined(SYMBIAN) 00625 # define LONG64 long 00626 # define ULONG64 unsigned LONG64 00627 #elif !defined(WIN32) || defined(CYGWIN) || defined(__GLIBC__) || defined(__GNU__) 00628 # ifndef LONG64 00629 # define LONG64 long long 00630 # define ULONG64 unsigned LONG64 00631 # endif 00632 #elif defined(UNDER_CE) 00633 # define LONG64 __int64 00634 # define ULONG64 unsigned LONG64 00635 #elif defined(__BORLANDC__) 00636 # define LONG64 __int64 00637 # define ULONG64 unsigned LONG64 00638 #endif 00639 00640 #if defined(WIN32) && !defined(CYGWIN) 00641 # define soap_int32 __int32 00642 #elif defined(SYMBIAN) 00643 # define soap_int32 long 00644 #elif defined(PALM) 00645 # define soap_int32 Int32 00646 #else 00647 # define soap_int32 int32_t 00648 #endif 00649 00650 #ifdef WIN32 00651 # define SOAP_ERANGE ERANGE 00652 # define SOAP_EINTR WSAEINTR 00653 # define SOAP_EAGAIN WSAEWOULDBLOCK 00654 # define SOAP_EWOULDBLOCK WSAEWOULDBLOCK 00655 # define SOAP_EINPROGRESS WSAEINPROGRESS 00656 #else 00657 # define SOAP_ERANGE ERANGE 00658 # define SOAP_EINTR EINTR 00659 # define SOAP_EAGAIN EAGAIN 00660 # ifdef SYMBIAN 00661 # define SOAP_EWOULDBLOCK 9898 00662 # define SOAP_EINPROGRESS 9899 00663 # else 00664 # define SOAP_EWOULDBLOCK EWOULDBLOCK 00665 # define SOAP_EINPROGRESS EINPROGRESS 00666 # endif 00667 #endif 00668 00669 #ifdef WIN32 00670 # ifdef UNDER_CE 00671 # define soap_errno GetLastError() 00672 # define soap_socket_errno(s) GetLastError() 00673 # define soap_reset_errno SetLastError(0) 00674 # else 00675 # define soap_errno GetLastError() 00676 # define soap_socket_errno(s) WSAGetLastError() 00677 # define soap_reset_errno SetLastError(0) 00678 # endif 00679 #else 00680 # ifndef WITH_NOIO 00681 # define soap_errno errno 00682 # define soap_socket_errno(s) errno 00683 # define soap_reset_errno (errno = 0) 00684 # else 00685 # define soap_errno 0 00686 # define soap_socket_errno(s) 0 00687 # define soap_reset_errno 00688 # endif 00689 #endif 00690 00691 #ifndef SOAP_BUFLEN 00692 # ifdef WITH_UDP 00693 # define SOAP_BUFLEN (65536) /* max UDP packet size */ 00694 # else 00695 # ifndef WITH_LEAN 00696 # define SOAP_BUFLEN (65536) /* buffer length for socket packets, also used by gethostbyname_r so don't make this too small */ 00697 # else 00698 # define SOAP_BUFLEN (2048) 00699 # endif 00700 # endif 00701 #endif 00702 #ifndef SOAP_LABLEN 00703 # define SOAP_LABLEN (256) /* initial look-aside buffer length */ 00704 #endif 00705 #ifndef SOAP_PTRBLK 00706 # define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */ 00707 #endif 00708 #ifndef SOAP_PTRHASH 00709 # ifndef WITH_LEAN 00710 # define SOAP_PTRHASH (1024) /* size of pointer analysis hash table (must be power of 2) */ 00711 # else 00712 # define SOAP_PTRHASH (32) 00713 # endif 00714 #endif 00715 #ifndef SOAP_IDHASH 00716 # ifndef WITH_LEAN 00717 # define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */ 00718 # else 00719 # define SOAP_IDHASH (19) /* 19, 199 */ 00720 # endif 00721 #endif 00722 #ifndef SOAP_BLKLEN 00723 # ifndef WITH_LEAN 00724 # define SOAP_BLKLEN (256) /* size of blocks to collect long strings and XML attributes */ 00725 # else 00726 # define SOAP_BLKLEN (32) 00727 # endif 00728 #endif 00729 #ifndef SOAP_TAGLEN 00730 # ifndef WITH_LEAN 00731 # define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */ 00732 # else 00733 # define SOAP_TAGLEN (64) 00734 # endif 00735 #endif 00736 #ifndef SOAP_HDRLEN 00737 # ifndef WITH_LEAN 00738 # define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */ 00739 # else 00740 # define SOAP_HDRLEN (1024) 00741 # endif 00742 #endif 00743 #ifndef SOAP_MAXDIMS 00744 # ifndef WITH_LEAN 00745 # define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */ 00746 # else 00747 # define SOAP_MAXDIMS (4) 00748 # endif 00749 #endif 00750 00751 #ifndef SOAP_MAXLOGS 00752 # define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */ 00753 # define SOAP_INDEX_RECV (0) 00754 # define SOAP_INDEX_SENT (1) 00755 # define SOAP_INDEX_TEST (2) 00756 #endif 00757 00758 #ifndef SOAP_MAXKEEPALIVE 00759 # define SOAP_MAXKEEPALIVE (100) /* max iterations to keep server connection alive */ 00760 #endif 00761 00762 #ifndef SOAP_MAXARRAYSIZE 00763 # define SOAP_MAXARRAYSIZE (100000) /* "trusted" max size of inbound SOAP array for compound array allocation */ 00764 #endif 00765 00766 #ifdef VXWORKS 00767 # ifdef __INCmathh 00768 # include <private/mathP.h> 00769 # ifndef HAVE_ISNAN 00770 # define HAVE_ISNAN 00771 # endif 00772 # define soap_isnan(num) isNan(num) 00773 # endif 00774 #endif 00775 00776 #ifdef WIN32 00777 # include <float.h> 00778 # ifndef HAVE_ISNAN 00779 # define HAVE_ISNAN 00780 # endif 00781 # define soap_isnan(num) _isnan(num) 00782 #endif 00783 00784 #ifdef SUN_OS 00785 # define HAVE_ISNAN 00786 #endif 00787 00788 #ifdef __APPLE__ 00789 # ifdef __cplusplus 00790 # ifndef isnan 00791 extern "C" int isnan(double); 00792 # endif 00793 # endif 00794 # define HAVE_ISNAN 00795 #endif 00796 00797 #if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED)) 00798 # define HAVE_ISNAN 00799 #endif 00800 00801 extern const struct soap_double_nan { unsigned int n1, n2; } soap_double_nan; 00802 00803 #ifdef VXWORKS 00804 # ifndef FLT_MAX 00805 # define FLT_MAX _ARCH_FLT_MAX 00806 # endif 00807 # ifndef DBL_MAX 00808 # define DBL_MAX _ARCH_DBL_MAX 00809 # endif 00810 #endif 00811 00812 #ifndef FLT_NAN 00813 # define FLT_NAN (*(float*)(void*)&soap_double_nan) 00814 #endif 00815 00816 #ifndef FLT_PINFTY 00817 # if defined(FLT_MAX) 00818 # define FLT_PINFTY FLT_MAX 00819 # elif defined(HUGE_VALF) 00820 # define FLT_PINFTY (float)HUGE_VALF 00821 # elif defined(HUGE_VAL) 00822 # define FLT_PINFTY (float)HUGE_VAL 00823 # elif defined(FLOAT_MAX) 00824 # define FLT_PINFTY FLOAT_MAX 00825 # else 00826 # define FLT_PINFTY (3.40282347e+38F) 00827 # endif 00828 #endif 00829 00830 #ifndef FLT_NINFTY 00831 # define FLT_NINFTY (-FLT_PINFTY) 00832 #endif 00833 00834 #ifndef DBL_NAN 00835 # define DBL_NAN (*(double*)(void*)&soap_double_nan) 00836 #endif 00837 00838 #ifndef DBL_PINFTY 00839 # if defined(DBL_MAX) 00840 # define DBL_PINFTY DBL_MAX 00841 # elif defined(HUGE_VALF) 00842 # define DBL_PINFTY (double)HUGE_VALF 00843 # elif defined(HUGE_VAL) 00844 # define DBL_PINFTY (double)HUGE_VAL 00845 # elif defined(DOUBLE_MAX) 00846 # define DBL_PINFTY DOUBLE_MAX 00847 # else 00848 # define DBL_PINFTY (1.7976931348623157e+308) 00849 # endif 00850 #endif 00851 00852 #ifndef DBL_NINFTY 00853 # define DBL_NINFTY (-DBL_PINFTY) 00854 #endif 00855 00856 #ifndef soap_isnan 00857 # ifdef HAVE_ISNAN 00858 # define soap_isnan(n) isnan(n) 00859 # else 00860 # define soap_isnan(n) (0) 00861 # endif 00862 #endif 00863 00864 #define soap_ispinfd(n) ((n) >= DBL_PINFTY) 00865 #define soap_ispinff(n) ((n) >= FLT_PINFTY) 00866 #define soap_isninfd(n) ((n) <= DBL_NINFTY) 00867 #define soap_isninff(n) ((n) <= FLT_NINFTY) 00868 00869 /* gSOAP error codes */ 00870 00871 #define SOAP_EOF EOF 00872 #define SOAP_ERR EOF 00873 #define SOAP_OK 0 00874 #define SOAP_CLI_FAULT 1 00875 #define SOAP_SVR_FAULT 2 00876 #define SOAP_TAG_MISMATCH 3 00877 #define SOAP_TYPE 4 00878 #define SOAP_SYNTAX_ERROR 5 00879 #define SOAP_NO_TAG 6 00880 #define SOAP_IOB 7 00881 #define SOAP_MUSTUNDERSTAND 8 00882 #define SOAP_NAMESPACE 9 00883 #define SOAP_USER_ERROR 10 00884 #define SOAP_FATAL_ERROR 11 00885 #define SOAP_FAULT 12 00886 #define SOAP_NO_METHOD 13 00887 #define SOAP_NO_DATA 14 00888 #define SOAP_GET_METHOD 15 00889 #define SOAP_EOM 16 00890 #define SOAP_MOE 17 00891 #define SOAP_NULL 18 00892 #define SOAP_DUPLICATE_ID 19 00893 #define SOAP_MISSING_ID 20 00894 #define SOAP_HREF 21 00895 #define SOAP_UDP_ERROR 22 00896 #define SOAP_TCP_ERROR 23 00897 #define SOAP_HTTP_ERROR 24 00898 #define SOAP_SSL_ERROR 25 00899 #define SOAP_ZLIB_ERROR 26 00900 #define SOAP_DIME_ERROR 27 00901 #define SOAP_DIME_HREF 28 00902 #define SOAP_DIME_MISMATCH 29 00903 #define SOAP_DIME_END 30 00904 #define SOAP_MIME_ERROR 31 00905 #define SOAP_MIME_HREF 32 00906 #define SOAP_MIME_END 33 00907 #define SOAP_VERSIONMISMATCH 34 00908 #define SOAP_PLUGIN_ERROR 35 00909 #define SOAP_DATAENCODINGUNKNOWN 36 00910 #define SOAP_REQUIRED 37 00911 #define SOAP_PROHIBITED 38 00912 #define SOAP_OCCURS 39 00913 #define SOAP_LENGTH 40 00914 #define SOAP_FD_EXCEEDED 41 00915 00916 #define soap_xml_error_check(e) ((e) == SOAP_TAG_MISMATCH || (e) == SOAP_TAG_END || (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) 00917 #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) 00918 #define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR) 00919 #define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR) 00920 #define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR) 00921 #define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_GET_METHOD || (e) == SOAP_NO_DATA || ((e) >= 100 && (e) < 600)) 00922 00923 /* gSOAP HTTP response status codes 100 to 599 are reserved */ 00924 00925 /* Codes 600 to 999 are user definable */ 00926 00927 /* Exceptional gSOAP HTTP response status codes >= 1000 */ 00928 00929 #define SOAP_STOP 1000 /* No HTTP response */ 00930 #define SOAP_FORM 1001 /* Form request/response */ 00931 #define SOAP_HTML 1002 /* Custom HTML response */ 00932 #define SOAP_FILE 1003 /* Custom file-based response */ 00933 00934 /* gSOAP HTTP method codes */ 00935 00936 #define SOAP_POST 2000 00937 #define SOAP_GET 2001 00938 00939 /* gSOAP DIME */ 00940 00941 #define SOAP_DIME_CF 0x01 00942 #define SOAP_DIME_ME 0x02 00943 #define SOAP_DIME_MB 0x04 00944 #define SOAP_DIME_VERSION 0x08 /* DIME version 1 */ 00945 #define SOAP_DIME_MEDIA 0x10 00946 #define SOAP_DIME_ABSURI 0x20 00947 00948 /* gSOAP ZLIB */ 00949 00950 #define SOAP_ZLIB_NONE 0x00 00951 #define SOAP_ZLIB_DEFLATE 0x01 00952 #define SOAP_ZLIB_INFLATE 0x02 00953 #define SOAP_ZLIB_GZIP 0x02 00954 00955 /* gSOAP transport, connection, and content encoding modes */ 00956 00957 typedef soap_int32 soap_mode; 00958 00959 #define SOAP_IO 0x00000003 /* IO mask */ 00960 #define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */ 00961 #define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */ 00962 #define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */ 00963 #define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */ 00964 00965 #define SOAP_IO_UDP 0x00000004 /* TCP or UDP */ 00966 00967 #define SOAP_IO_LENGTH 0x00000008 /* calc message length (internal) */ 00968 #define SOAP_IO_KEEPALIVE 0x00000010 /* keep connection alive */ 00969 00970 #define SOAP_ENC_LATIN 0x00000020 /* accept iso-8859-1 encoding */ 00971 #define SOAP_ENC_XML 0x00000040 /* plain XML encoding, no HTTP header */ 00972 #define SOAP_ENC_DIME 0x00000080 00973 #define SOAP_ENC_MIME 0x00000100 00974 #define SOAP_ENC_MTOM 0x00000200 00975 #define SOAP_ENC_ZLIB 0x00000400 00976 #define SOAP_ENC_SSL 0x00000800 00977 00978 #define SOAP_ENC 0x00000FFF /* IO and ENC mask */ 00979 00980 #define SOAP_XML_STRICT 0x00001000 /* apply strict validation */ 00981 #define SOAP_XML_INDENT 0x00002000 /* emit indented XML */ 00982 #define SOAP_XML_CANONICAL 0x00004000 /* EXC C14N canonical XML */ 00983 #define SOAP_XML_TREE 0x00008000 /* emit XML tree (no id/ref) */ 00984 #define SOAP_XML_GRAPH 0x00010000 00985 #define SOAP_XML_NIL 0x00020000 00986 #define SOAP_XML_DOM 0x00040000 00987 #define SOAP_XML_SEC 0x00080000 /* reserved for WS security */ 00988 00989 #define SOAP_C_NOIOB 0x00100000 /* don't fault on array index out of bounds (just ignore) */ 00990 #define SOAP_C_UTFSTRING 0x00200000 /* (de)serialize strings with UTF8 content */ 00991 #define SOAP_C_MBSTRING 0x00400000 /* (de)serialize strings with multi-byte content */ 00992 #define SOAP_C_NILSTRING 0x00800000 /* serialize empty strings as nil (omitted) */ 00993 00994 #define SOAP_DOM_TREE 0x01000000 00995 #define SOAP_DOM_NODE 0x02000000 00996 #define SOAP_DOM_ASIS 0x04000000 00997 00998 #define SOAP_MIME_POSTCHECK 0x10000000 /* MIME flag (internal) */ 00999 01000 #define SOAP_IO_DEFAULT SOAP_IO_FLUSH 01001 01002 /* SSL client/server authentication settings */ 01003 01004 #define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */ 01005 #define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */ 01006 #define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */ 01007 01008 #define SOAP_SSL_DEFAULT SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 01009 01010 /* state */ 01011 01012 #define SOAP_INIT 1 01013 #define SOAP_COPY 2 01014 01015 #define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY)) 01016 01017 /* part */ 01018 01019 #define SOAP_BEGIN 0 01020 #define SOAP_IN_ENVELOPE 2 01021 #define SOAP_IN_HEADER 3 01022 #define SOAP_END_HEADER 4 01023 #define SOAP_NO_BODY 5 01024 #define SOAP_IN_BODY 6 01025 #define SOAP_END_BODY 7 01026 #define SOAP_END_ENVELOPE 8 01027 #define SOAP_END 9 01028 #define SOAP_BEGIN_SECURITY 10 01029 #define SOAP_IN_SECURITY 11 01030 #define SOAP_END_SECURITY 12 01031 01032 /* DEBUG macros */ 01033 01034 #ifndef WITH_LEAN 01035 # ifdef DEBUG 01036 # ifndef SOAP_DEBUG 01037 # define SOAP_DEBUG 01038 # endif 01039 # ifndef SOAP_MEM_DEBUG 01040 # define SOAP_MEM_DEBUG 01041 # endif 01042 # endif 01043 #endif 01044 01045 #ifdef SOAP_MEM_DEBUG 01046 # ifndef SOAP_MALLOC 01047 # define SOAP_MALLOC(soap, size) soap_track_malloc(soap, __FILE__, __LINE__, size) 01048 # endif 01049 # ifndef SOAP_FREE 01050 # define SOAP_FREE(soap, ptr) soap_track_free(soap, __FILE__, __LINE__, ptr) 01051 # endif 01052 #endif 01053 01054 #ifndef SOAP_MALLOC /* use libc malloc */ 01055 # define SOAP_MALLOC(soap, size) malloc(size) 01056 #endif 01057 01058 #ifndef SOAP_FREE /* use libc free */ 01059 # define SOAP_FREE(soap, ptr) free(ptr) 01060 #endif 01061 01062 #ifdef SOAP_DEBUG 01063 # ifndef SOAP_MESSAGE 01064 # define SOAP_MESSAGE fprintf 01065 # endif 01066 # ifndef DBGLOG 01067 # define DBGLOG(DBGFILE, CMD) \ 01068 { if (soap)\ 01069 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ 01070 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ 01071 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ 01072 { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ 01073 CMD;\ 01074 fflush(fdebug);\ 01075 }\ 01076 }\ 01077 } 01078 # endif 01079 # ifndef DBGMSG 01080 # define DBGMSG(DBGFILE, MSG, LEN) \ 01081 { if (soap)\ 01082 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ 01083 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ 01084 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ 01085 { fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\ 01086 fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ 01087 }\ 01088 }\ 01089 } 01090 # endif 01091 # ifndef DGBFUN 01092 # define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME)) 01093 # define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT")\n", __FILE__, __LINE__, FNAME, (ARG))) 01094 # define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2))) 01095 # 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))) 01096 # endif 01097 # ifndef DBGHEX 01098 # define DBGHEX(DBGFILE, MSG, LEN) \ 01099 { if (soap)\ 01100 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ 01101 soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\ 01102 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ 01103 { int i; char *s;\ 01104 for (s = (char*)(MSG), i = (LEN); i; i--)\ 01105 fprintf(soap->fdebug[SOAP_INDEX_##DBGFILE], "%2.2X ", (int)*s++&0xFF);\ 01106 fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ 01107 }\ 01108 }\ 01109 } 01110 # endif 01111 #else 01112 # define DBGLOG(DBGFILE, CMD) 01113 # define DBGMSG(DBGFILE, MSG, LEN) 01114 # define DBGFUN(FNAME) 01115 # define DBGFUN1(FNAME, FMT, ARG) 01116 # define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) 01117 # define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) 01118 # define DBGHEX(DBGFILE, MSG, LEN) 01119 #endif 01120 01121 /* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */ 01122 typedef soap_int32 soap_wchar; 01123 01124 /* namespace table row */ 01125 struct Namespace 01126 { const char *id; 01127 const char *ns; 01128 const char *in; 01129 char *out; 01130 }; 01131 01132 /* namespace stack */ 01133 struct soap_nlist 01134 { struct soap_nlist *next; 01135 unsigned int level; /* nesting depth level */ 01136 short index; /* corresponding entry in ns mapping table */ 01137 char *ns; /* only set when parsed ns URI is not in the ns mapping table */ 01138 char id[1]; /* the actual string value flows into the allocated region below this struct */ 01139 }; 01140 01141 /* block stack for nested block allocations */ 01142 struct soap_blist 01143 { struct soap_blist *next; 01144 char *ptr; 01145 size_t size; 01146 }; 01147 01148 /* array layout */ 01149 struct soap_array 01150 { void *__ptr; 01151 int __size; 01152 }; 01153 01154 /* pointer serialization management */ 01155 struct soap_plist 01156 { struct soap_plist *next; 01157 const void *ptr; 01158 const struct soap_array *array; 01159 int type; 01160 int id; 01161 char mark1; 01162 char mark2; 01163 }; 01164 01165 /* block allocation for pointer serialization management */ 01166 struct soap_pblk 01167 { struct soap_pblk *next; 01168 struct soap_plist plist[SOAP_PTRBLK]; 01169 }; 01170 01171 #ifdef SOAP_MEM_DEBUG 01172 /* malloc/free tracking for debugging */ 01173 struct soap_mlist 01174 { struct soap_mlist *next; 01175 const void *ptr; 01176 const char *file; 01177 int line; 01178 short live; 01179 }; 01180 #endif 01181 01182 /* class allocation list */ 01183 struct soap_clist 01184 { struct soap_clist *next; 01185 void *ptr; 01186 int type; 01187 int size; 01188 void (*fdelete)(struct soap_clist*); 01189 }; 01190 01191 /* attributes */ 01192 struct soap_attribute 01193 { struct soap_attribute *next; 01194 char *value; 01195 size_t size; 01196 char *ns; 01197 short visible; 01198 char name[1]; /* the actual name string flows into the allocated region below this struct */ 01199 }; 01200 01201 #ifndef WITH_LEAN 01202 struct soap_cookie 01203 { struct soap_cookie *next; 01204 char *name; 01205 char *value; 01206 char *domain; 01207 char *path; 01208 time_t expire; /* client-side: local time to expire */ 01209 long maxage; /* server-side: seconds to expire */ 01210 unsigned int version; 01211 short secure; 01212 short session; /* server-side */ 01213 short env; /* server-side: got cookie from client and should not be (re)send */ 01214 short modified; /* server-side: client cookie was modified and should be send */ 01215 }; 01216 #endif 01217 01218 #ifdef __cplusplus 01219 SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*); 01220 01221 class soap_multipart_iterator 01222 { public: 01223 struct soap_multipart *content; 01224 bool operator==(const soap_multipart_iterator& iter) const 01225 { return content == iter.content; } 01226 bool operator!=(const soap_multipart_iterator& iter) const 01227 { return content != iter.content; } 01228 struct soap_multipart &operator*() const 01229 { return *content; } 01230 soap_multipart_iterator &operator++() 01231 { content = soap_next_multipart(content); return *this; } 01232 soap_multipart_iterator() : content(NULL) 01233 { } 01234 soap_multipart_iterator(struct soap_multipart *p) : content(p) 01235 { } 01236 }; 01237 #endif 01238 01239 #ifndef WITH_LEANER 01240 struct soap_dime 01241 { size_t count; 01242 size_t size; 01243 size_t chunksize; 01244 size_t buflen; 01245 char flags; 01246 char *ptr; 01247 const char *id; 01248 const char *type; 01249 const char *options; 01250 struct soap_multipart *list; /* list of DIME attachments received */ 01251 struct soap_multipart *first, *last; /* temporary in/out queue */ 01252 #ifdef __cplusplus 01253 soap_multipart_iterator begin() 01254 { soap_multipart_iterator iter(list); return iter; }; 01255 soap_multipart_iterator end() 01256 { soap_multipart_iterator iter(NULL); return iter; }; 01257 #endif 01258 }; 01259 #endif 01260 01261 #ifndef WITH_LEANER 01262 struct soap_mime 01263 { char *boundary; /* MIME boundary */ 01264 const char *start; /* MIME start ID */ 01265 struct soap_multipart *list; /* list of MIME attachments received */ 01266 struct soap_multipart *first, *last; /* temporary in/out queue */ 01267 #ifdef __cplusplus 01268 soap_multipart_iterator begin() 01269 { soap_multipart_iterator iter(list); return iter; }; 01270 soap_multipart_iterator end() 01271 { soap_multipart_iterator iter(NULL); return iter; }; 01272 #endif 01273 }; 01274 #endif 01275 01276 #ifndef WITH_LEANER 01277 /* RFC2045 MIME content transfer encodings */ 01278 enum soap_mime_encoding 01279 { SOAP_MIME_NONE, 01280 SOAP_MIME_7BIT, 01281 SOAP_MIME_8BIT, 01282 SOAP_MIME_BINARY, 01283 SOAP_MIME_QUOTED_PRINTABLE, 01284 SOAP_MIME_BASE64, 01285 SOAP_MIME_IETF_TOKEN, 01286 SOAP_MIME_X_TOKEN 01287 }; 01288 #endif 01289 01290 #ifndef WITH_LEANER 01291 /* DIME/MIME multipart list */ 01292 struct soap_multipart 01293 { struct soap_multipart *next; 01294 char *ptr; /* points to raw data content */ 01295 size_t size; /* size of data content */ 01296 const char *id; /* DIME/MIME content ID or form data name */ 01297 const char *type; /* DIME/MIME type (MIME type format) */ 01298 const char *options; /* DIME options */ 01299 enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */ 01300 const char *location; /* MIME Content-Location (optional) */ 01301 const char *description; /* MIME Content-Description (optional) */ 01302 #ifdef __cplusplus 01303 typedef soap_multipart_iterator iterator; 01304 #endif 01305 }; 01306 #endif 01307 01308 #ifndef WITH_LEANER 01309 /* attachment DIME and MTOM XOP forwarding */ 01310 struct soap_xlist 01311 { struct soap_xlist *next; 01312 unsigned char **ptr; 01313 int *size; 01314 char *id; 01315 char **type; 01316 char **options; 01317 }; 01318 #endif 01319 01320 /******************************************************************************/ 01321 01322 #ifndef WITH_LEANER 01323 #ifdef __cplusplus 01324 class soap_dom_attribute_iterator 01325 { public: 01326 struct soap_dom_attribute *att; 01327 const char *nstr; 01328 const char *name; 01329 bool operator==(const soap_dom_attribute_iterator&) const; 01330 bool operator!=(const soap_dom_attribute_iterator&) const; 01331 struct soap_dom_attribute &operator*() const; 01332 soap_dom_attribute_iterator &operator++(); 01333 soap_dom_attribute_iterator(); 01334 soap_dom_attribute_iterator(struct soap_dom_attribute*); 01335 ~soap_dom_attribute_iterator(); 01336 }; 01337 #endif 01338 #endif 01339 01340 #ifndef WITH_LEANER 01341 struct soap_dom_attribute 01342 { struct soap_dom_attribute *next; 01343 const char *nstr; 01344 char *name; 01345 char *data; 01346 wchar_t *wide; 01347 struct soap *soap; 01348 #ifdef __cplusplus 01349 typedef soap_dom_attribute_iterator iterator; 01350 struct soap_dom_attribute &set(const char *nstr, const char *name); /* set namespace and name */ 01351 struct soap_dom_attribute &set(const char *data); /* set data */ 01352 soap_dom_attribute_iterator begin(); 01353 soap_dom_attribute_iterator end(); 01354 soap_dom_attribute_iterator find(const char *nstr, const char *name); 01355 void unlink(); 01356 soap_dom_attribute(); 01357 soap_dom_attribute(struct soap *soap); 01358 soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data); 01359 ~soap_dom_attribute(); 01360 #endif 01361 }; 01362 #endif 01363 01364 #ifndef WITH_LEANER 01365 #ifdef __cplusplus 01366 class soap_dom_element_iterator 01367 { public: 01368 struct soap_dom_element *elt; 01369 const char *nstr; 01370 const char *name; 01371 int type; 01372 bool operator==(const soap_dom_element_iterator&) const; 01373 bool operator!=(const soap_dom_element_iterator&) const; 01374 struct soap_dom_element &operator*() const; 01375 soap_dom_element_iterator &operator++(); 01376 soap_dom_element_iterator(); 01377 soap_dom_element_iterator(struct soap_dom_element*); 01378 ~soap_dom_element_iterator(); 01379 }; 01380 #endif 01381 #endif 01382 01383 #ifndef WITH_LEANER 01384 struct soap_dom_element 01385 { struct soap_dom_element *next; /* next sibling */ 01386 struct soap_dom_element *prnt; /* parent */ 01387 struct soap_dom_element *elts; /* list of child elements */ 01388 struct soap_dom_attribute *atts; /* list of attributes */ 01389 const char *nstr; /* namespace string */ 01390 char *name; /* element tag name */ 01391 char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */ 01392 wchar_t *wide; /* element content data */ 01393 int type; /* optional: serialized C/C++ data type */ 01394 void *node; /* optional: pointer to serialized C/C++ data */ 01395 char *head; /* leading whitespace to start tag */ 01396 char *tail; /* leading whitespace to end tag */ 01397 struct soap *soap; /* soap context that manages this node */ 01398 #ifdef __cplusplus 01399 typedef soap_dom_element_iterator iterator; 01400 struct soap_dom_element &set(const char *nstr, const char *name); 01401 struct soap_dom_element &set(const char *data); 01402 struct soap_dom_element &set(void *node, int type); 01403 struct soap_dom_element &add(struct soap_dom_element*); 01404 struct soap_dom_element &add(struct soap_dom_element&); 01405 struct soap_dom_element &add(struct soap_dom_attribute*); 01406 struct soap_dom_element &add(struct soap_dom_attribute&); 01407 soap_dom_element_iterator begin(); 01408 soap_dom_element_iterator end(); 01409 soap_dom_element_iterator find(const char *nstr, const char *name); 01410 soap_dom_element_iterator find(int type); 01411 void unlink(); 01412 soap_dom_element(); 01413 soap_dom_element(struct soap *soap); 01414 soap_dom_element(struct soap *soap, const char *nstr, const char *name); 01415 soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data); 01416 soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type); 01417 ~soap_dom_element(); 01418 #endif 01419 }; 01420 SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(struct soap_dom_element *elt); 01421 SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(struct soap_dom_attribute *att); 01422 #endif 01423 01424 #if defined(__cplusplus) && !defined(WITH_LEAN) 01425 } 01426 extern std::ostream &operator<<(std::ostream&, const struct soap_dom_element&); 01427 extern std::istream &operator>>(std::istream&, struct soap_dom_element&); 01428 extern "C" { 01429 #endif 01430 01431 /******************************************************************************/ 01432 01433 #ifdef WIN32 01434 # ifdef SOAP_STD_EXPORTS 01435 # define SOAP_STD_API __declspec(dllexport) 01436 # else 01437 # define SOAP_STD_API 01438 # endif 01439 #else 01440 # define SOAP_STD_API 01441 #endif 01442 01443 struct SOAP_STD_API soap 01444 { short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */ 01445 short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */ 01446 soap_mode mode; 01447 soap_mode imode; 01448 soap_mode omode; 01449 const char *float_format; /* user-definable format string for floats (<1024 chars) */ 01450 const char *double_format; /* user-definable format string for doubles (<1024 chars) */ 01451 const char *dime_id_format; /* user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */ 01452 const char *http_version; /* HTTP version used "1.0" or "1.1" */ 01453 const char *http_content; /* optional custom response content type (with SOAP_FILE) */ 01454 const char *encodingStyle; /* default = NULL which means that SOAP encoding is used */ 01455 const char *actor; /* SOAP-ENV:actor or role attribute value */ 01456 int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */ 01457 int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */ 01458 int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */ 01459 int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */ 01460 int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */ 01461 int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */ 01462 int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */ 01463 int accept_flags; /* accept() SOL_SOCKET sockopt flags */ 01464 const struct Namespace *namespaces; /* Pointer to global namespace mapping table */ 01465 struct Namespace *local_namespaces; /* Local namespace mapping table */ 01466 struct soap_nlist *nlist; /* namespace stack */ 01467 struct soap_blist *blist; /* block allocation stack */ 01468 struct soap_clist *clist; /* class instance allocation list */ 01469 void *alist; /* memory allocation (malloc) list */ 01470 struct soap_ilist *iht[SOAP_IDHASH]; 01471 struct soap_plist *pht[SOAP_PTRHASH]; 01472 struct soap_pblk *pblk; /* plist block allocation */ 01473 short pidx; /* plist block allocation */ 01474 struct SOAP_ENV__Header *header; 01475 struct SOAP_ENV__Fault *fault; 01476 int idnum; 01477 void *user; /* to pass user-defined data */ 01478 struct soap_plugin *plugins; /* linked list of plug-in data */ 01479 char *userid; /* HTTP Basic authorization userid */ 01480 char *passwd; /* HTTP Basic authorization passwd */ 01481 int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t); 01482 int (*fget)(struct soap*); 01483 int (*fform)(struct soap*); 01484 int (*fposthdr)(struct soap*, const char*, const char*); 01485 int (*fresponse)(struct soap*, int, size_t); 01486 int (*fparse)(struct soap*); 01487 int (*fparsehdr)(struct soap*, const char*, const char*); 01488 int (*fheader)(struct soap*); 01489 int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr); 01490 int (*fconnect)(struct soap*, const char*, const char*, int); 01491 int (*fdisconnect)(struct soap*); 01492 int (*fclosesocket)(struct soap*, SOAP_SOCKET); 01493 int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int); 01494 int (*fopen)(struct soap*, const char*, const char*, int); 01495 int (*faccept)(struct soap*, int, struct sockaddr*, int *n); 01496 int (*fclose)(struct soap*); 01497 int (*fsend)(struct soap*, const char*, size_t); 01498 size_t (*frecv)(struct soap*, char*, size_t); 01499 int (*fpoll)(struct soap*); 01500 void (*fseterror)(struct soap*, const char **c, const char **s); 01501 int (*fignore)(struct soap*, const char*); 01502 int (*fserveloop)(struct soap*); 01503 void *(*fplugin)(struct soap*, const char*); 01504 void *(*fmalloc)(struct soap*, size_t); 01505 #ifndef WITH_LEANER 01506 int (*fprepareinit)(struct soap*); 01507 int (*fpreparesend)(struct soap*, const char*, size_t); 01508 int (*fpreparerecv)(struct soap*, const char*, size_t); 01509 int (*fpreparefinal)(struct soap*); 01510 void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*); 01511 void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*); 01512 void (*fdimereadclose)(struct soap*, void*); 01513 void (*fdimewriteclose)(struct soap*, void*); 01514 size_t (*fdimeread)(struct soap*, void*, char*, size_t); 01515 int (*fdimewrite)(struct soap*, void*, const char*, size_t); 01516 void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*); 01517 void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding); 01518 void (*fmimereadclose)(struct soap*, void*); 01519 void (*fmimewriteclose)(struct soap*, void*); 01520 size_t (*fmimeread)(struct soap*, void*, char*, size_t); 01521 int (*fmimewrite)(struct soap*, void*, const char*, size_t); 01522 #endif 01523 int master; 01524 int socket; 01525 #if defined(__cplusplus) && !defined(WITH_LEAN) 01526 std::ostream *os; 01527 std::istream *is; 01528 #else 01529 void *os; /* preserve alignment */ 01530 void *is; /* preserve alignment */ 01531 #endif 01532 #ifndef UNDER_CE 01533 int sendfd; 01534 int recvfd; 01535 #else 01536 FILE *sendfd; 01537 FILE *recvfd; 01538 #endif 01539 size_t bufidx; /* index in soap.buf[] */ 01540 size_t buflen; /* length of soap.buf[] content */ 01541 soap_wchar ahead; /* parser lookahead */ 01542 short cdata; /* CDATA parser state */ 01543 short body; /* parsed XML element has a body or not */ 01544 unsigned int level; /* XML nesting level */ 01545 size_t count; /* message length counter */ 01546 size_t length; /* message length as set by HTTP header */ 01547 char *labbuf; /* look-aside buffer */ 01548 size_t lablen; /* look-aside buffer allocated length */ 01549 size_t labidx; /* look-aside buffer index to available part */ 01550 char buf[SOAP_BUFLEN];/* send and receive buffer */ 01551 char tmpbuf[1024]; /* in/output buffer for HTTP headers, simpleType values, attribute names, and DIME >=1024 bytes */ 01552 char msgbuf[1024]; /* in/output buffer for messages >=1024 bytes */ 01553 char tag[SOAP_TAGLEN]; 01554 char id[SOAP_TAGLEN]; 01555 char href[SOAP_TAGLEN]; 01556 char type[SOAP_TAGLEN]; 01557 char arrayType[SOAP_TAGLEN]; 01558 char arraySize[SOAP_TAGLEN]; 01559 char arrayOffset[SOAP_TAGLEN]; 01560 short other; 01561 short position; 01562 int positions[SOAP_MAXDIMS]; 01563 short root; 01564 struct soap_attribute *attributes; /* attribute list */ 01565 short encoding; /* when set, output encodingStyle */ 01566 short mustUnderstand; /* a mustUnderstand element was parsed or is output */ 01567 short keep_alive; /* connection should be kept open */ 01568 short null; /* parsed XML is xsi:nil */ 01569 short ns; /* when not set, output full xmlns bindings */ 01570 short part; /* parsing state */ 01571 short alloced; 01572 short peeked; 01573 size_t chunksize; 01574 size_t chunkbuflen; 01575 char endpoint[SOAP_TAGLEN]; 01576 char path[SOAP_TAGLEN]; 01577 char host[SOAP_TAGLEN]; 01578 char *action; 01579 char *authrealm; /* HTTP authentication realm */ 01580 char *prolog; /* XML declaration prolog */ 01581 unsigned long ip; /* IP number */ 01582 int port; /* port number */ 01583 unsigned int max_keep_alive; 01584 const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */ 01585 const char *proxy_host; /* Proxy Server host name */ 01586 int proxy_port; /* Proxy Server port (default = 8080) */ 01587 const char *proxy_userid; /* Proxy Authorization user name */ 01588 const char *proxy_passwd; /* Proxy Authorization password */ 01589 int status; /* -1 when request, else error code to be returned by server */ 01590 int error; 01591 int errmode; 01592 int errnum; 01593 #ifndef WITH_LEANER 01594 struct soap_dom_element *dom; 01595 struct soap_dime dime; 01596 struct soap_mime mime; 01597 struct soap_xlist *xlist; 01598 #endif 01599 #if !defined(WITH_LEAN) || defined(SOAP_DEBUG) 01600 const char *logfile[SOAP_MAXLOGS]; 01601 FILE *fdebug[SOAP_MAXLOGS]; 01602 struct soap_mlist *mht[SOAP_PTRHASH]; 01603 #endif 01604 #ifndef WITH_LEAN 01605 const char *c14ninclude; 01606 const char *c14nexclude; 01607 struct soap_cookie *cookies; 01608 const char *cookie_domain; 01609 const char *cookie_path; 01610 int cookie_max; 01611 #endif 01612 #ifndef WITH_NOIO 01613 #ifdef WITH_IPV6 01614 struct sockaddr_storage peer; /* IPv6: set by soap_accept and by UDP recv */ 01615 #else 01616 struct sockaddr_in peer; /* IPv4: set by soap_connect/soap_accept and by UDP recv */ 01617 #endif 01618 #endif 01619 size_t peerlen; 01620 #ifdef WITH_OPENSSL 01621 int (*fsslauth)(struct soap*); 01622 int (*fsslverify)(int, X509_STORE_CTX*); 01623 BIO *bio; 01624 SSL *ssl; 01625 SSL_CTX *ctx; 01626 short require_server_auth; 01627 short require_client_auth; 01628 short rsa; /* when set, use RSA instead of DH */ 01629 const char *keyfile; 01630 const char *password; 01631 const char *dhfile; 01632 const char *cafile; 01633 const char *capath; 01634 const char *crlfile; 01635 const char *randfile; 01636 SSL_SESSION *session; 01637 char session_host[SOAP_TAGLEN]; 01638 int session_port; 01639 #endif 01640 #ifdef WITH_ZLIB 01641 short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */ 01642 short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ 01643 short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ 01644 z_stream d_stream; /* decompression stream */ 01645 char z_buf[SOAP_BUFLEN]; /* buffer */ 01646 size_t z_buflen; 01647 unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */ 01648 uLong z_crc; /* internal gzip crc */ 01649 float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */ 01650 float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */ 01651 #endif 01652 #ifdef WMW_RPM_IO 01653 void *rpmreqid; 01654 #endif 01655 #ifndef WITH_LEAN 01656 #ifdef __cplusplus 01657 soap(); 01658 soap(soap_mode); 01659 soap(soap_mode, soap_mode); 01660 soap(struct soap&); 01661 ~soap(); 01662 #endif 01663 #endif 01664 }; 01665 01666 struct soap_code_map 01667 { long code; 01668 const char *string; 01669 }; 01670 01671 /* forwarding list */ 01672 struct soap_flist 01673 { struct soap_flist *next; 01674 int type; 01675 void *ptr; 01676 unsigned int level; 01677 size_t len; 01678 void (*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t); 01679 }; 01680 01681 /* id-ref forwarding list */ 01682 struct soap_ilist 01683 { struct soap_ilist *next; 01684 int type; 01685 size_t size; 01686 void *link; 01687 void *copy; 01688 struct soap_flist *flist; 01689 void *ptr; 01690 unsigned int level; 01691 char id[1]; /* the actual id string value flows into the allocated region below this struct */ 01692 }; 01693 01694 struct soap_plugin 01695 { struct soap_plugin *next; 01696 const char *id; 01697 void *data; 01698 int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); 01699 void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */ 01700 }; 01701 01702 #ifndef WITH_NONAMESPACES 01703 extern SOAP_NMAC struct Namespace namespaces[]; 01704 #endif 01705 01706 #ifndef WITH_LEAN 01707 # define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx]) 01708 # define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++]) 01709 #else 01710 soap_wchar soap_get0(struct soap*); 01711 soap_wchar soap_get1(struct soap*); 01712 #endif 01713 01714 #define soap_revget1(soap) ((soap)->bufidx--) 01715 #define soap_unget(soap, c) ((soap)->ahead = c) 01716 #define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL) 01717 #define soap_imode(soap, n) ((soap)->mode = (soap)->imode = (n)) 01718 #define soap_set_imode(soap, n) ((soap)->imode |= (n)) 01719 #define soap_clr_imode(soap, n) ((soap)->imode &= ~(n)) 01720 #define soap_omode(soap, n) ((soap)->mode = (soap)->omode = (n)) 01721 #define soap_set_omode(soap, n) ((soap)->omode |= (n)) 01722 #define soap_clr_omode(soap, n) ((soap)->omode &= ~(n)) 01723 #define soap_set_mode(soap, n) ((soap)->imode |= (n), (soap)->omode |= (n)) 01724 #define soap_clr_mode(soap, n) ((soap)->imode &= ~(n), (soap)->omode &= ~(n)) 01725 #define soap_destroy(soap) soap_delete((soap), NULL) 01726 01727 #ifdef HAVE_STRRCHR 01728 # define soap_strrchr(s, t) strrchr(s, t) 01729 #else 01730 SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t); 01731 #endif 01732 01733 #ifdef HAVE_STRTOL 01734 # define soap_strtol(s, t, b) strtol(s, t, b) 01735 #else 01736 SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b); 01737 #endif 01738 01739 #ifdef HAVE_STRTOUL 01740 # define soap_strtoul(s, t, b) strtoul(s, t, b) 01741 #else 01742 SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b); 01743 #endif 01744 01745 #if defined(WITH_OPENSSL) 01746 # define soap_random soap_rand() 01747 SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void); 01748 #elif defined(HAVE_RANDOM) 01749 # define soap_random (int)random() 01750 #else 01751 # define soap_random rand() 01752 #endif 01753 01754 #ifdef WITH_NOIDREF 01755 # define soap_embedded(s, p, t) (0) 01756 # define soap_id_lookup(s, i, p, t, n, k) (p) 01757 # define soap_id_forward(s, h, p, len, st, tt, n, k, fc) (p) 01758 # define soap_reference(s, a, t) (1) 01759 # define soap_array_reference(s, p, a, n, t) (1) 01760 # define soap_embed(s, p, a, n, t, pp) (0) 01761 # define soap_embedded_id(s, i, p, t) (i) 01762 # define soap_is_embedded(s, p) (0) 01763 # define soap_is_single(s, p) (1) 01764 # define soap_lookup_type(s, i) (0) 01765 # define soap_getindependent(s) (0) 01766 # define soap_putindependent(s) (0) 01767 # define soap_getelement(s, n) (n) 01768 # define soap_putelement(s, p, t, i, n) (0) 01769 # define soap_markelement(s, p, n) (0) 01770 #endif 01771 01772 SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap*); 01773 SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultcode(struct soap*); 01774 SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultsubcode(struct soap*); 01775 SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultstring(struct soap*); 01776 SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultdetail(struct soap*); 01777 SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*); 01778 SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*); 01779 SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*); 01780 SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap*); 01781 SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*); 01782 SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*); 01783 01784 SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_init(void); 01785 SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*); 01786 SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*); 01787 SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*); 01788 SOAP_FMAC1 int SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int); 01789 SOAP_FMAC1 int SOAP_FMAC2 soap_accept(struct soap*); 01790 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*); 01791 SOAP_FMAC1 const char * SOAP_FMAC2 soap_ssl_error(struct soap*, int); 01792 01793 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*, const char*, const char*); 01794 SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*); 01795 01796 SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count); 01797 01798 SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*); 01799 SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*); 01800 SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*); 01801 01802 SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*); 01803 SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*); 01804 SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t); 01805 SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*); 01806 SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*); 01807 SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*); 01808 SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*); 01809 SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*); 01810 SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*); 01811 SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*); 01812 SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*); 01813 SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*); 01814 SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int); 01815 SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int); 01816 01817 SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t); 01818 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*); 01819 SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*); 01820 SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*); 01821 SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*); 01822 SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*); 01823 01824 SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long); 01825 SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*); 01826 01827 SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int); 01828 SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int); 01829 SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int); 01830 SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*); 01831 01832 #ifndef WITH_LEANER 01833 SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**); 01834 SOAP_FMAC1 int SOAP_FMAC2 soap_dime_forward(struct soap*, unsigned char**, int*, char**, char**, char**); 01835 #endif 01836 01837 #ifndef WITH_NOIDREF 01838 SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**); 01839 SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**); 01840 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**); 01841 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**); 01842 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); 01843 SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*); 01844 SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*); 01845 SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*); 01846 SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t); 01847 SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t); 01848 SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t); 01849 SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t); 01850 SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*); 01851 SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*); 01852 SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*); 01853 #endif 01854 01855 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_count(struct soap*); 01856 SOAP_FMAC1 int SOAP_FMAC2 soap_end_count(struct soap*); 01857 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*); 01858 SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*); 01859 01860 SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char *str); 01861 SOAP_FMAC1 long SOAP_FMAC2 soap_code_int(const struct soap_code_map*, const char *str, long other); 01862 SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_str(const struct soap_code_map*, long code); 01863 SOAP_FMAC1 long SOAP_FMAC2 soap_code_bits(const struct soap_code_map *map, const char *str); 01864 SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_list(struct soap*, const struct soap_code_map *map, long code); 01865 01866 SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int); 01867 SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*); 01868 SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*); 01869 01870 SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t); 01871 SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*); 01872 SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, void (*fdelete)(struct soap_clist*)); 01873 SOAP_FMAC1 void SOAP_FMAC2 soap_unlink(struct soap*, const void*); 01874 SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*); 01875 SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*); 01876 01877 SOAP_FMAC1 void* SOAP_FMAC2 soap_track_malloc(struct soap*, const char*, int, size_t); 01878 SOAP_FMAC1 void SOAP_FMAC2 soap_track_free(struct soap*, const char*, int, void*); 01879 01880 #ifndef WITH_NOIDREF 01881 SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id); 01882 SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k); 01883 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)); 01884 #endif 01885 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*)); 01886 SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t, const void *q, size_t n); 01887 01888 SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int); 01889 SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int); 01890 SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *); 01891 SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int); 01892 SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *); 01893 01894 SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int); 01895 SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int); 01896 SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int); 01897 SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int); 01898 SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int); 01899 01900 SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*); 01901 01902 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new(void); 01903 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new1(soap_mode); 01904 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new2(soap_mode, soap_mode); 01905 SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*); 01906 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(struct soap*); 01907 SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*, struct soap*); 01908 SOAP_FMAC1 void SOAP_FMAC2 soap_copy_stream(struct soap*, struct soap*); 01909 SOAP_FMAC1 void SOAP_FMAC2 soap_init(struct soap*); 01910 SOAP_FMAC1 void SOAP_FMAC2 soap_init1(struct soap*, soap_mode); 01911 SOAP_FMAC1 void SOAP_FMAC2 soap_init2(struct soap*, soap_mode, soap_mode); 01912 SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*); 01913 SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*); 01914 SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*); 01915 SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*); 01916 SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*); 01917 01918 #ifdef SOAP_DEBUG 01919 SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*); 01920 SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*); 01921 SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*); 01922 SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*); 01923 SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int); 01924 #endif 01925 01926 SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*); 01927 01928 SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *); 01929 SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*); 01930 01931 SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*); 01932 SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type); 01933 SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset); 01934 SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href); 01935 SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val); 01936 SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type); 01937 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); 01938 SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag); 01939 SOAP_FMAC1 void SOAP_FMAC2 soap_check_result(struct soap*, const char *tag); 01940 SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag); 01941 SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag); 01942 01943 SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*); 01944 01945 SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type); 01946 01947 SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag); 01948 01949 SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*); 01950 01951 SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*); 01952 SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*); 01953 01954 SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*); 01955 SOAP_FMAC1 const char * SOAP_FMAC2 soap_strsearch(const char *big, const char *little); 01956 01957 SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag); 01958 SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long); 01959 01960 #ifndef WITH_LEANER 01961 SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag); 01962 SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long); 01963 #endif 01964 01965 SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, int n1, int n2); 01966 01967 SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, const struct Namespace*); 01968 SOAP_FMAC1 void SOAP_FMAC2 soap_set_local_namespaces(struct soap*); 01969 01970 SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*); 01971 SOAP_FMAC1 int SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *); 01972 SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace(struct soap *soap, const char *tag); 01973 01974 SOAP_FMAC1 int SOAP_FMAC2 soap_store_lab(struct soap*, const char*, size_t); 01975 SOAP_FMAC1 int SOAP_FMAC2 soap_append_lab(struct soap*, const char*, size_t); 01976 01977 SOAP_FMAC1 int SOAP_FMAC2 soap_new_block(struct soap*); 01978 SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, size_t); 01979 SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*); 01980 SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, size_t); 01981 SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*); 01982 SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*); 01983 SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*); 01984 SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, char*, int); 01985 SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*); 01986 01987 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*); 01988 SOAP_FMAC1 int soap_envelope_end_out(struct soap*); 01989 01990 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*); 01991 SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*); 01992 01993 SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*); 01994 SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*); 01995 01996 SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*); 01997 SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*); 01998 01999 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*); 02000 02001 SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int); 02002 02003 SOAP_FMAC1 int SOAP_FMAC2 soap_send_empty_response(struct soap*, int status); 02004 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_empty_response(struct soap*); 02005 02006 SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*); 02007 SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*); 02008 02009 #ifndef WITH_NOSTDLIB 02010 SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*); 02011 SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*); 02012 #endif 02013 02014 SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*); 02015 SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*); 02016 SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*); 02017 SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*); 02018 SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*); 02019 SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*); 02020 SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*); 02021 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*); 02022 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*); 02023 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*); 02024 SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*); 02025 SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*); 02026 SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**); 02027 SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**); 02028 02029 #ifndef WITH_LEAN 02030 SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**); 02031 SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*); 02032 SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, int); 02033 SOAP_FMAC1 char* SOAP_FMAC2 soap_s2hex(struct soap*, const unsigned char*, char*, int); 02034 #endif 02035 02036 SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char); 02037 SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short); 02038 SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int); 02039 SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long); 02040 SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64); 02041 SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float); 02042 SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double); 02043 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char); 02044 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short); 02045 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int); 02046 SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long); 02047 SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64); 02048 SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*); 02049 02050 #ifndef WITH_LEAN 02051 SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*); 02052 SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t); 02053 SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, int*); 02054 SOAP_FMAC1 const char* SOAP_FMAC2 soap_hex2s(struct soap*, const char*, char*, size_t, int*); 02055 #endif 02056 02057 02058 SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int); 02059 SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int); 02060 SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int); 02061 SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int); 02062 SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int); 02063 SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int); 02064 SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int); 02065 SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int); 02066 SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int); 02067 SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int); 02068 SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int); 02069 SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int); 02070 SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long); 02071 SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p); 02072 02073 #ifndef WITH_LEAN 02074 SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int); 02075 #endif 02076 02077 #ifndef WITH_LEANER 02078 SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long); 02079 SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p); 02080 #endif 02081 02082 SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int); 02083 SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int); 02084 SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int); 02085 SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int); 02086 SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int); 02087 SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int); 02088 SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int); 02089 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int); 02090 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int); 02091 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int); 02092 SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int); 02093 SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int); 02094 SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int); 02095 SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type); 02096 02097 #ifndef WITH_LEAN 02098 SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int); 02099 #endif 02100 02101 #ifndef WITH_LEANER 02102 SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int); 02103 SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type); 02104 #endif 02105 02106 #ifndef WITH_LEANER 02107 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); 02108 SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, long); 02109 SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*); 02110 SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*); 02111 SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*); 02112 SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*); 02113 SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*); 02114 SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*); 02115 SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*); 02116 SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*); 02117 SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*); 02118 SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*); 02119 SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*); 02120 SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start); 02121 SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*); 02122 SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*); 02123 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); 02124 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); 02125 SOAP_FMAC1 void SOAP_FMAC2 soap_post_check_mime_attachments(struct soap *soap); 02126 SOAP_FMAC1 int SOAP_FMAC2 soap_check_mime_attachments(struct soap *soap); 02127 SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_get_mime_attachment(struct soap *soap, void *handle); 02128 SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*); 02129 SOAP_FMAC1 int SOAP_FMAC2 soap_match_cid(struct soap*, const char*, const char*); 02130 #endif 02131 02132 SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*); 02133 SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*); 02134 02135 SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag); 02136 SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value); 02137 SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap); 02138 02139 #ifdef WITH_COOKIES 02140 SOAP_FMAC1 void SOAP_FMAC2 soap_getcookies(struct soap *soap, const char *val); 02141 SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_cookie(const char*, char*, size_t); 02142 SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*); 02143 SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*); 02144 SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*); 02145 SOAP_FMAC1 extern char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*); 02146 SOAP_FMAC1 extern time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*); 02147 SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*); 02148 SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*); 02149 SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*); 02150 SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*); 02151 SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*); 02152 SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, struct soap*); 02153 SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*); 02154 #endif 02155 02156 #ifdef __cplusplus 02157 } /* extern "C" */ 02158 #endif 02159 02160 #endif 02161