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