Eneboo - Documentación para desarrolladores
src/libdigidoc/mssp/stdsoap2.h
Ir a la documentación de este archivo.
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 
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'