Main Page | Namespace List | Class Hierarchy | Data Structures | File List | Data Fields | Globals | Related Pages

stdsoap2.h

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

Generated on Mon Aug 21 12:39:58 2006 for ACQ2XXWebServices by  doxygen 1.4.4