stdsoap2.h revision 4f14b0f29aa144cc03efdde5508ae126ae197acf
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
/*
stdsoap2.h 2.7.17
gSOAP runtime engine
gSOAP XML Web services tools
Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved.
This part of the software is released under ONE of the following licenses:
GPL, or the gSOAP public license, or Genivia's license for commercial use.
--------------------------------------------------------------------------------
Contributors:
Wind River Systems, Inc., for the following additions
- vxWorks compatible
--------------------------------------------------------------------------------
gSOAP public license.
The contents of this file are subject to the gSOAP Public License Version 1.3
(the "License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the License.
The Initial Developer of the Original Code is Robert A. van Engelen.
Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved.
--------------------------------------------------------------------------------
GPL license.
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
Author contact information:
engelen@genivia.com / engelen@acm.org
This program is released under the GPL with the additional exemption that
--------------------------------------------------------------------------------
A commercial use license is available from Genivia, Inc., contact@genivia.com
--------------------------------------------------------------------------------
*/
#ifdef WITH_SOAPDEFS_H
# include "soapdefs.h" /* include user-defined stuff */
#endif
#ifndef _THREAD_SAFE
# define _THREAD_SAFE
#endif
#ifndef OPENSERVER
# ifndef _REENTRANT
# define _REENTRANT
# endif
#endif
#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */
# define SOAP_FMAC1
#endif
#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */
# define SOAP_FMAC2
#endif
#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */
# define SOAP_FMAC3
#endif
#ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */
# define SOAP_FMAC3S SOAP_FMAC3
#endif
#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */
# define SOAP_FMAC4
#endif
#ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */
# define SOAP_FMAC4S SOAP_FMAC4
#endif
#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */
# define SOAP_FMAC5
#endif
#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */
# define SOAP_FMAC6
#endif
#ifndef SOAP_CMAC /* class declaration macro */
# define SOAP_CMAC
#endif
#ifndef SOAP_NMAC /* namespace table declaration macro */
# define SOAP_NMAC
#endif
#ifndef SOAP_SOURCE_STAMP
# define SOAP_SOURCE_STAMP(str)
#endif
/* gSOAP 2.7.4 and higher: fast look-aside buffering is stable */
#ifndef WITH_FAST
# define WITH_FAST
#endif
/* gSOAP 2.7.15 and higher: always retain CDATA in literal XML, unless WITH_LEAN or WITH_NOCDATA */
#ifndef WITH_LEAN
# ifndef WITH_NOCDATA
# ifndef WITH_CDATA
# define WITH_CDATA
# endif
# endif
#endif
#ifdef WITH_LEANER
# ifndef WITH_LEAN
# define WITH_LEAN
# endif
#endif
#ifdef WITH_LEAN
# ifdef WITH_COOKIES
# error "Cannot build WITH_LEAN code WITH_COOKIES enabled"
# endif
#endif
#ifndef STDSOAP_H
#define STDSOAP_H
#if defined(__vxworks) || defined(__VXWORKS__)
# ifndef VXWORKS
# define VXWORKS
# endif
#endif
#ifdef _WIN32
# ifndef WIN32
# define WIN32
# endif
#endif
#ifdef _WIN32_WCE
# ifndef UNDER_CE
# define UNDER_CE _WIN32_WCE
# endif
#endif
#ifdef UNDER_CE
# ifndef WIN32
# define WIN32
# endif
#endif
#ifdef __BORLANDC__
# ifdef __WIN32__
# ifndef WIN32
# define WIN32
# endif
# endif
#endif
#ifdef __CYGWIN__
# ifndef CYGWIN
# define CYGWIN
# endif
#endif
#ifdef __SYMBIAN32__
# define SYMBIAN
#endif
# ifndef PALM
# define PALM
# endif
#endif
#if defined(__hpux)
# ifndef HP_UX
# define HP_UX
# endif
#endif
#if defined(__digital__) && defined(__unix__)
# ifndef TRU64
# define TRU64
# endif
#endif
#ifdef __MVS__
# ifndef OS390
# define OS390
# endif
#endif
#ifdef HAVE_CONFIG_H
# include "config.h"
# if defined(WITH_OPENSSL)
# ifndef HAVE_OPENSSL_SSL_H
# endif
# endif
# ifndef HAVE_ZLIB_H
# endif
# endif
#else
# if defined(UNDER_CE)
# define WITH_LEAN
# define HAVE_SSCANF
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_GMTIME
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define SOAP_LONG_FORMAT "%I64d"
# define SOAP_ULONG_FORMAT "%I64u"
# define HAVE_POLL
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_POLL
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOD_L
# define HAVE_SSCANF_L
# define HAVE_SPRINTF_L
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_TIMEGM
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_POLL
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOD_L
# define HAVE_SSCANF_L
# define HAVE_SPRINTF_L
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_STRTOLL
# define HAVE_STRTOULL
# define HAVE_GETTIMEOFDAY
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define SOAP_LONG_FORMAT "%qd"
# define SOAP_ULONG_FORMAT "%qu"
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_POLL
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOD_L
# define HAVE_SSCANF_L
# define HAVE_SPRINTF_L
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_STRTOLL
# define HAVE_STRTOULL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_TIMEGM
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_ISNAN
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_GETTIMEOFDAY
# define HAVE_SYS_TIMEB_H
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define __USE_STD_IOSTREAM
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define SOAP_LONG_FORMAT "%ld"
# define SOAP_ULONG_FORMAT "%lu"
# elif defined(MAC_CARBON)
# define WITH_NOIO
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOD_L
# define HAVE_SSCANF_L
# define HAVE_SPRINTF_L
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GETHOSTBYNAME_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define WITH_LEAN
# define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */
# include <stdlib.h> /* Needs to be included before unix headers */
# include <sys_types.h>
# define IGNORE_STDIO_STUBS
# include <StdIOPalm.h>
# define O_NONBLOCK FNONBIO
# include <sys_socket.h>
# include "palmFunctions.h"
# define WITH_LEAN
# define WITH_NONAMESPACES
# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */
# include <e32def.h>
# ifdef _WRS_KERNEL
# define _POSIX_THREADS 1
# endif
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_GMTIME
# define HAVE_LOCALTIME
# define HAVE_MKTIME
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
/* QNX does not have a working version of strtof */
# define HAVE_POLL
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GETHOSTBYNAME_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# define LONG64 long
# define SOAP_LONG_FORMAT "%ld"
# define SOAP_ULONG_FORMAT "%lu"
# else
/* Default assumptions for supported functions */
# define HAVE_SNPRINTF
# define HAVE_STRRCHR
# define HAVE_STRTOD
# define HAVE_SSCANF
# define HAVE_STRTOL
# define HAVE_STRTOUL
# define HAVE_SYS_TIMEB_H
# define HAVE_FTIME
# define HAVE_RAND_R
# define HAVE_GETHOSTBYNAME_R
# define HAVE_GMTIME_R
# define HAVE_LOCALTIME_R
# ifdef MB_LEN_MAX
# define HAVE_WCTOMB
# define HAVE_MBTOWC
# endif
# endif
#endif
/* native Win and HP-UX compilers don't like empty structs */
# define WITH_NOEMPTYSTRUCT
#endif
#ifdef HP_UX
#endif
#ifdef __VMS
# ifndef SOAP_BUFLEN
# define SOAP_BUFLEN (65535)
# endif
#endif
#ifdef WITH_C_LOCALE
# include <xlocale.h>
#else
#endif
#ifndef WITH_NOSTDLIB
# include <stdlib.h>
# ifndef PALM
# include <stdio.h>
# include <string.h>
# endif
# include <ctype.h>
# include <limits.h>
#endif
#ifdef HAVE_POLL
# include <poll.h>
#endif
# include <string>
# include <iostream>
#endif
#ifdef WITH_NOHTTP
# ifndef WITH_NOIO
# define WITH_NOIO
# endif
#endif
/* Suggestion when SOAP_FD_EXCEEDED error occurs:
#define FD_SETSIZE (2048)
*/
#ifndef UNDER_CE
# ifndef PALM
# ifndef WITH_NOIO
# include <errno.h>
# endif
# ifndef WITH_LEAN
# ifdef HAVE_SYS_TIMEB_H
# endif
# include <time.h>
# endif
# endif
#endif
#ifdef OPENSERVER
extern int h_errno;
#endif
#ifndef WITH_NOIO
# ifndef WIN32
# ifndef PALM
# ifdef VXWORKS
# include <sockLib.h>
# include <selectLib.h>
# ifndef _WRS_KERNEL
# include <strings.h>
# endif
# else
# ifndef SYMBIAN
# include <strings.h>
# endif
# endif
# ifdef SUN_OS
# endif
# ifdef VXWORKS
# ifdef _WRS_KERNEL
# endif
# else
# endif
# ifdef OS390
# else
# endif
# endif
# endif
#endif
#ifdef WIN32
# define SOAP_WINSOCKINT int
#else
# define SOAP_WINSOCKINT size_t
#endif
#ifdef WIN32
# ifndef UNDER_CE
# include <io.h>
# include <fcntl.h>
# endif
# ifdef WITH_IPV6
# include <winsock2.h> /* Visual Studio 2005 users: you must install the Platform SDK (R2) */
# include <ws2tcpip.h>
# include <wspiapi.h>
# define SOAP_GAI_STRERROR gai_strerrorA
# else
# ifndef __BORLANDC__
# include <winsock.h> /* Visual Studio 2005 users: you must install the Platform SDK (R2) */
/* # include <winsock2.h> */ /* Alternative: use winsock2 (not available with eVC), enable this line and comment out the line above */
# else
# include <winsock2.h> /* Borland C */
# endif
# endif
#else
# ifdef VXWORKS
# include <hostLib.h>
# include <ioctl.h>
# include <ioLib.h>
# endif
# ifndef WITH_NOIO
# ifndef PALM
# include <netdb.h>
# include <unistd.h>
# include <fcntl.h>
# ifdef _AIX41
# endif
# endif
# endif
#endif
#ifdef WITH_FASTCGI
# include <fcgi_stdio.h>
#endif
#ifdef WITH_OPENSSL
# define OPENSSL_NO_KRB5
# ifndef ALLOW_OLD_VERSIONS
# if (OPENSSL_VERSION_NUMBER < 0x00905100L)
# error "Must use OpenSSL 0.9.6 or later"
# endif
# endif
#endif
#ifdef WITH_GNUTLS
#endif
#ifdef WITH_GZIP
# ifndef WITH_ZLIB
# define WITH_ZLIB
# endif
#endif
#ifdef WITH_CASEINSENSITIVETAGS
#else
#endif
#ifdef WITH_ZLIB
# include <zlib.h>
#endif
#ifndef WITH_NOSTDLIB
# ifndef PALM
# include <math.h> /* for isnan() */
# endif
#endif
/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */
#ifdef __cplusplus
extern "C" {
#endif
/* Portability: define SOAP_SOCKLEN_T */
#if defined(_AIX)
# if defined(_AIX43)
# define SOAP_SOCKLEN_T socklen_t
# else
# define SOAP_SOCKLEN_T int
# endif
# define SOAP_SOCKLEN_T SOCKLEN_T
#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) || defined(__QNX__) || defined(QNX) || defined(OS390) || defined(HP_UX)
# define SOAP_SOCKLEN_T socklen_t
#elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS)
# define SOAP_SOCKLEN_T int
#else
# define SOAP_SOCKLEN_T size_t
#endif
#ifndef SOAP_SOCKET
# ifdef WIN32
# define SOAP_SOCKET SOCKET
# define soap_closesocket(n) closesocket(n)
# else
# define SOAP_SOCKET int
# define soap_closesocket(n) close(n)
# endif
#endif
#define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET)
#ifndef SOAP_GAI_STRERROR
# define SOAP_GAI_STRERROR gai_strerror
#endif
#ifndef FD_SETSIZE
# define FD_SETSIZE (1024)
#endif
#if defined(SYMBIAN)
# define LONG64 long
# ifndef LONG64
# if defined(HAVE_STDINT_H)
# include <stdint.h>
# include <bits/wordsize.h>
# if (__WORDSIZE == 64)
# ifndef SOAP_LONG_FORMAT
# define SOAP_LONG_FORMAT "%ld"
# endif
# ifndef SOAP_ULONG_FORMAT
# define SOAP_ULONG_FORMAT "%lu"
# endif
# else
# define LONG64 long long
# endif
# else
# define LONG64 long long
# endif
# endif
#elif defined(__BORLANDC__)
#endif
#ifndef SOAP_LONG_FORMAT
#endif
#ifndef SOAP_ULONG_FORMAT
#endif
# define soap_int32 __int32
# define soap_int32 long
# define soap_int32 Int32
# if defined(_AIX43)
# define soap_int32 int32_t
# else
# define soap_int32 signed int
# endif
#else
# define soap_int32 int32_t
#endif
#ifdef WIN32
# define SOAP_ERANGE ERANGE
# define SOAP_EINTR WSAEINTR
# define SOAP_EAGAIN WSAEWOULDBLOCK
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
# define SOAP_EINPROGRESS WSAEINPROGRESS
# define SOAP_EADDRINUSE WSAEADDRINUSE
#else
# define SOAP_ERANGE ERANGE
# define SOAP_EINTR EINTR
# define SOAP_EAGAIN EAGAIN
# define SOAP_EADDRINUSE EADDRINUSE
# ifdef SYMBIAN
# define SOAP_EWOULDBLOCK 9898
# define SOAP_EINPROGRESS 9899
# else
# define SOAP_EWOULDBLOCK EWOULDBLOCK
# define SOAP_EINPROGRESS EINPROGRESS
# endif
#endif
#ifdef WIN32
# ifdef UNDER_CE
# define soap_errno GetLastError()
# define soap_socket_errno(s) GetLastError()
# define soap_reset_errno SetLastError(0)
# else
# define soap_errno GetLastError()
# define soap_socket_errno(s) WSAGetLastError()
# define soap_reset_errno SetLastError(0)
# endif
#else
# ifndef WITH_NOIO
# define soap_errno errno
# define soap_socket_errno(s) errno
# define soap_reset_errno (errno = 0)
# else
# define soap_errno 0
# define soap_socket_errno(s) 0
# define soap_reset_errno
# endif
#endif
#ifndef SOAP_BUFLEN
# if !defined(WITH_LEAN)
# define SOAP_BUFLEN (65536) /* buffer length for socket packets, also used by gethostbyname_r and UDP messages, so don't make this too small */
# else
# endif
#endif
#ifndef SOAP_LABLEN
#endif
#ifndef SOAP_PTRBLK
#endif
#ifndef SOAP_PTRHASH
# ifndef WITH_LEAN
# else
# define SOAP_PTRHASH (32)
# endif
#endif
#ifndef SOAP_IDHASH
# ifndef WITH_LEAN
# else
# endif
#endif
#ifndef SOAP_BLKLEN
# ifndef WITH_LEAN
# else
# define SOAP_BLKLEN (32)
# endif
#endif
#ifndef SOAP_TAGLEN
# ifndef WITH_LEAN
# define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */
# else
# define SOAP_TAGLEN (64)
# endif
#endif
#ifndef SOAP_HDRLEN
# ifndef WITH_LEAN
# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */
# else
# define SOAP_HDRLEN (1024)
# endif
#endif
#ifndef SOAP_MAXDIMS
# ifndef WITH_LEAN
# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */
# else
# define SOAP_MAXDIMS (4)
# endif
#endif
#ifndef SOAP_MAXLOGS
# define SOAP_INDEX_RECV (0)
# define SOAP_INDEX_SENT (1)
# define SOAP_INDEX_TEST (2)
#endif
/* Max iterations in soap_serve() to keep server connection alive */
#ifndef SOAP_MAXKEEPALIVE
# define SOAP_MAXKEEPALIVE (100)
#endif
/* Trusted max size of inbound SOAP array for compound array allocation.
Increase if necessary to allow larger arrays.
*/
#ifndef SOAP_MAXARRAYSIZE
# define SOAP_MAXARRAYSIZE (1000000)
#endif
#ifdef VXWORKS
# ifdef WMW_RPM_IO
# include "httpLib.h"
# endif
# ifdef __INCmathh
# ifndef HAVE_ISNAN
# define HAVE_ISNAN
# endif
# ifndef soap_isnan
# endif
# endif
# ifdef WM_SECURE_KEY_STORAGE
# include <ipcom_key_db.h>
# endif
#endif
#ifdef WIN32
# include <float.h>
# ifndef HAVE_ISNAN
# define HAVE_ISNAN
# endif
#endif
#ifdef SUN_OS
# define HAVE_ISNAN
#endif
#ifdef __APPLE__
# ifdef __cplusplus
# ifndef isnan
extern "C" int isnan(double);
# endif
# endif
# define HAVE_ISNAN
#endif
# define HAVE_ISNAN
#endif
#ifdef VXWORKS
# ifndef FLT_MAX
# define FLT_MAX _ARCH_FLT_MAX
# endif
# ifndef DBL_MAX
# define DBL_MAX _ARCH_DBL_MAX
# endif
#endif
#ifndef FLT_NAN
# define FLT_NAN (*(float*)(void*)&soap_double_nan)
#endif
#ifndef FLT_PINFTY
# if defined(FLT_MAX)
# define FLT_PINFTY FLT_MAX
# define FLT_PINFTY (float)HUGE_VALF
# define FLT_PINFTY (float)HUGE_VAL
# define FLT_PINFTY FLOAT_MAX
# else
# define FLT_PINFTY (3.40282347e+38F)
# endif
#endif
#ifndef FLT_NINFTY
# define FLT_NINFTY (-FLT_PINFTY)
#endif
#ifndef DBL_NAN
# define DBL_NAN (*(double*)(void*)&soap_double_nan)
#endif
#ifndef DBL_PINFTY
# if defined(DBL_MAX)
# define DBL_PINFTY DBL_MAX
# define DBL_PINFTY (double)HUGE_VALF
# define DBL_PINFTY (double)HUGE_VAL
# elif defined(DOUBLE_MAX)
# define DBL_PINFTY DOUBLE_MAX
# else
# define DBL_PINFTY (1.7976931348623157e+308)
# endif
#endif
#ifndef DBL_NINFTY
# define DBL_NINFTY (-DBL_PINFTY)
#endif
#ifndef soap_isnan
# ifdef HAVE_ISNAN
# define soap_isnan(n) isnan(n)
# else
# define soap_isnan(n) (0)
# endif
#endif
#define soap_ispinfd(n) ((n) >= DBL_PINFTY)
#define soap_ispinff(n) ((n) >= FLT_PINFTY)
#define soap_isninfd(n) ((n) <= DBL_NINFTY)
#define soap_isninff(n) ((n) <= FLT_NINFTY)
/* gSOAP error codes */
#define SOAP_OK 0
#define SOAP_CLI_FAULT 1
#define SOAP_SVR_FAULT 2
#define SOAP_TAG_MISMATCH 3
#define SOAP_TYPE 4
#define SOAP_SYNTAX_ERROR 5
#define SOAP_NO_TAG 6
#define SOAP_IOB 7
#define SOAP_MUSTUNDERSTAND 8
#define SOAP_NAMESPACE 9
#define SOAP_USER_ERROR 10
#define SOAP_FATAL_ERROR 11
#define SOAP_FAULT 12
#define SOAP_NO_METHOD 13
#define SOAP_NO_DATA 14
#define SOAP_GET_METHOD 15
#define SOAP_PUT_METHOD 16
#define SOAP_DEL_METHOD 17
#define SOAP_HEAD_METHOD 18
#define SOAP_HTTP_METHOD 19
#define SOAP_EOM 20
#define SOAP_MOE 21
#define SOAP_HDR 22
#define SOAP_NULL 23
#define SOAP_DUPLICATE_ID 24
#define SOAP_MISSING_ID 25
#define SOAP_HREF 26
#define SOAP_UDP_ERROR 27
#define SOAP_TCP_ERROR 28
#define SOAP_HTTP_ERROR 29
#define SOAP_SSL_ERROR 30
#define SOAP_ZLIB_ERROR 31
#define SOAP_DIME_ERROR 32
#define SOAP_DIME_HREF 33
#define SOAP_DIME_MISMATCH 34
#define SOAP_DIME_END 35
#define SOAP_MIME_ERROR 36
#define SOAP_MIME_HREF 37
#define SOAP_MIME_END 38
#define SOAP_VERSIONMISMATCH 39
#define SOAP_PLUGIN_ERROR 40
#define SOAP_DATAENCODINGUNKNOWN 41
#define SOAP_REQUIRED 42
#define SOAP_PROHIBITED 43
#define SOAP_OCCURS 44
#define SOAP_LENGTH 45
#define SOAP_FD_EXCEEDED 46
#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)
#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)
#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR)
#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR)
#define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_NO_DATA || ((e) >= SOAP_GET_METHOD && (e) <= SOAP_HTTP_METHOD) || ((e) >= 100 && (e) < 600))
/* gSOAP HTTP response status codes 100 to 599 are reserved */
/* Codes 600 to 999 are user definable */
/* Exceptional gSOAP HTTP server response status codes >= 1000 */
/* gSOAP HTTP method codes (client) */
/* gSOAP DIME */
#define SOAP_DIME_CF 0x01
#define SOAP_DIME_ME 0x02
#define SOAP_DIME_MB 0x04
#define SOAP_DIME_MEDIA 0x10
#define SOAP_DIME_ABSURI 0x20
/* gSOAP ZLIB */
#define SOAP_ZLIB_NONE 0x00
#define SOAP_ZLIB_DEFLATE 0x01
#define SOAP_ZLIB_INFLATE 0x02
#define SOAP_ZLIB_GZIP 0x02
/* gSOAP transport, connection, and content encoding modes */
typedef soap_int32 soap_mode;
#define SOAP_ENC_DIME 0x00000080
#define SOAP_ENC_MIME 0x00000100
#define SOAP_ENC_MTOM 0x00000200
#define SOAP_ENC_ZLIB 0x00000400
#define SOAP_ENC_SSL 0x00000800
#define SOAP_XML_DOM 0x01000000
#define SOAP_DOM_TREE 0x02000000
#define SOAP_DOM_NODE 0x04000000
#define SOAP_DOM_ASIS 0x08000000
/* WITH_XMLNS backward compatibility: always use XML default namespaces */
#ifdef WITH_XMLNS
#else
# define SOAP_IO_DEFAULT SOAP_IO_FLUSH
#endif
#define SOAP_SSL_SKIP_HOST_CHECK 0x04 /* client does not check the common name of the host in certificate */
#define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE 0x08 /* client does not check the expiration date of the host certificate */
/* state */
#define SOAP_NONE 0
#define SOAP_INIT 1
#define SOAP_COPY 2
#define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY))
/* part */
#define SOAP_BEGIN 0
#define SOAP_IN_ENVELOPE 2
#define SOAP_IN_HEADER 3
#define SOAP_END_HEADER 4
#define SOAP_NO_BODY 5
#define SOAP_IN_BODY 6
#define SOAP_END_BODY 7
#define SOAP_END_ENVELOPE 8
#define SOAP_END 9
#define SOAP_BEGIN_SECURITY 10
#define SOAP_IN_SECURITY 11
#define SOAP_END_SECURITY 12
/* DEBUG macros */
#ifndef WITH_LEAN
# ifdef DEBUG
# ifndef SOAP_DEBUG
# define SOAP_DEBUG
# endif
# ifndef SOAP_MEM_DEBUG
# define SOAP_MEM_DEBUG
# endif
# endif
#endif
#ifdef SOAP_MEM_DEBUG
# ifndef SOAP_MALLOC
# endif
# ifndef SOAP_FREE
# endif
#endif
#ifndef SOAP_MALLOC /* use libc malloc */
#endif
#ifndef SOAP_FREE /* use libc free */
#endif
#ifndef SOAP_NEW /* use C++ new operator */
# if __GNUC__ < 2
# else
# endif
#endif
#ifndef SOAP_NEW_COPY /* use C++ new operator for ::copy() */
#endif
#ifndef SOAP_DELETE /* use C++ delete operator */
#endif
#ifndef SOAP_DELETE_ARRAY /* use C++ delete[] operator */
#endif
#ifdef SOAP_DEBUG
# ifndef SOAP_MESSAGE
# define SOAP_MESSAGE fprintf
# endif
# ifndef DBGLOG
{ if (soap)\
CMD;\
}\
}\
}
# endif
# ifndef DBGMSG
{ if (soap)\
}\
}\
}
# endif
# ifndef DBGFUN
# define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME))
# define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT")\n", __FILE__, __LINE__, FNAME, (ARG)))
# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2)))
# 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)))
# endif
# ifndef DBGHEX
{ if (soap)\
{ int i; char *s;\
}\
}\
}
# endif
#else
#endif
/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */
typedef soap_int32 soap_wchar;
/* namespace table row */
struct Namespace
{ const char *id;
const char *ns;
const char *in;
char *out;
};
/* namespace stack */
struct soap_nlist
{ struct soap_nlist *next;
unsigned int level; /* nesting depth level */
short index; /* corresponding entry in ns mapping table */
const char *ns; /* only set when parsed ns URI is not in the ns mapping table */
};
/* block stack for nested block allocations */
struct soap_blist
{ struct soap_blist *next;
char *ptr;
};
/* array layout */
struct soap_array
{ void *__ptr;
int __size;
};
/* pointer serialization management */
struct soap_plist
{ struct soap_plist *next;
const void *ptr;
const struct soap_array *array;
int type;
int id;
char mark1;
char mark2;
};
/* block allocation for pointer serialization management */
struct soap_pblk
};
#ifdef SOAP_MEM_DEBUG
struct soap_mlist
{ struct soap_mlist *next;
const void *ptr;
const char *file;
int line;
short live;
};
#endif
/* class allocation list */
struct soap_clist
{ struct soap_clist *next;
void *ptr;
int type;
int size;
int (*fdelete)(struct soap_clist*);
};
/* attributes */
struct soap_attribute
{ struct soap_attribute *next;
short flag; /* soap_set_attr: 1 = normal, 2 = utf content */
char *value;
char *ns;
short visible;
};
#ifndef WITH_LEAN
struct soap_cookie
{ struct soap_cookie *next;
char *name;
char *value;
char *domain;
char *path;
long maxage; /* server-side: seconds to expire */
unsigned int version;
short secure;
short session; /* server-side */
short env; /* server-side: got cookie from client and should not be (re)send */
short modified; /* server-side: client cookie was modified and should be send */
};
#endif
#ifdef __cplusplus
{ public:
struct soap_multipart *content;
struct soap_multipart &operator*() const
{ return *content; }
{ }
{ }
};
#endif
#ifndef WITH_LEANER
struct soap_dime
char flags;
char *ptr;
const char *id;
const char *type;
const char *options;
#ifdef __cplusplus
#endif
};
#endif
#ifndef WITH_LEANER
struct soap_mime
{ char *boundary; /* MIME boundary */
const char *start; /* MIME start ID */
#ifdef __cplusplus
#endif
};
#endif
#ifndef WITH_LEANER
/* RFC2045 MIME content transfer encodings */
enum soap_mime_encoding
};
#endif
#ifndef WITH_LEANER
struct soap_multipart
{ struct soap_multipart *next;
char *ptr; /* points to raw data content */
const char *options; /* DIME options */
const char *location; /* MIME Content-Location (optional) */
const char *description; /* MIME Content-Description (optional) */
#ifdef __cplusplus
typedef soap_multipart_iterator iterator;
#endif
};
#endif
#ifndef WITH_LEANER
/* attachment DIME and MTOM XOP forwarding */
struct soap_xlist
{ struct soap_xlist *next;
unsigned char **ptr;
int *size;
char *id;
char **type;
char **options;
};
#endif
/******************************************************************************/
#ifndef WITH_LEANER
#ifdef __cplusplus
{ public:
struct soap_dom_attribute *att;
const char *nstr;
const char *name;
bool operator==(const soap_dom_attribute_iterator&) const;
bool operator!=(const soap_dom_attribute_iterator&) const;
struct soap_dom_attribute &operator*() const;
};
#endif
#endif
#ifndef WITH_LEANER
struct soap_dom_attribute
{ struct soap_dom_attribute *next;
const char *nstr;
char *name;
char *data;
#ifdef __cplusplus
typedef soap_dom_attribute_iterator iterator;
void unlink();
#endif
};
#endif
#ifndef WITH_LEANER
#ifdef __cplusplus
{ public:
struct soap_dom_element *elt;
const char *nstr;
const char *name;
int type;
bool operator==(const soap_dom_element_iterator&) const;
bool operator!=(const soap_dom_element_iterator&) const;
struct soap_dom_element &operator*() const;
soap_dom_element_iterator(struct soap_dom_element*);
};
#endif
#endif
#ifndef WITH_LEANER
struct soap_dom_element
const char *nstr; /* namespace string */
char *name; /* element tag name */
char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */
int type; /* optional: serialized C/C++ data type */
void *node; /* optional: pointer to serialized C/C++ data */
char *head; /* leading content before start tag */
char *tail; /* leading content before end tag */
#ifdef __cplusplus
typedef soap_dom_element_iterator iterator;
void unlink();
~soap_dom_element();
#endif
};
SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(struct soap_dom_element *elt);
SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(struct soap_dom_attribute *att);
#endif
}
extern "C" {
#endif
/******************************************************************************/
#ifdef WIN32
# ifdef SOAP_STD_EXPORTS
# else
# define SOAP_STD_API
# endif
#else
# define SOAP_STD_API
#endif
struct SOAP_STD_API soap
{ short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */
short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */
const char *float_format; /* user-definable format string for floats (<1024 chars) */
const char *double_format; /* user-definable format string for doubles (<1024 chars) */
const char *dime_id_format; /* user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */
const char *http_version; /* HTTP version used "1.0" or "1.1" */
const char *http_content; /* optional custom response content type (with SOAP_FILE) */
const char *encodingStyle; /* default = NULL which means that SOAP encoding is used */
const char *actor; /* SOAP-ENV:actor or role attribute value */
const char *lang; /* xml:lang attribute value of SOAP-ENV:Text */
int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */
int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */
int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */
int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */
#if defined(WITH_OPENSSL) && defined(KMS_SERVER)
/* Sun customization for Ultra 2 KMS Server */
int ssl_accept_timeout; /* default 10s unless overridden by this field, specified in seconds, time in SSL_Accept() */
#endif
int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */
int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */
int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
int accept_flags; /* accept() SOL_SOCKET sockopt flags */
unsigned short linger_time; /* linger time for SO_LINGER option */
void *alist; /* memory allocation (malloc) list */
short pidx; /* plist block allocation */
struct SOAP_ENV__Header *header;
struct SOAP_ENV__Fault *fault;
int idnum;
void *user; /* to pass user-defined data */
const char *userid; /* HTTP Basic authorization userid */
const char *passwd; /* HTTP Basic authorization passwd */
int (*fdisconnect)(struct soap*);
int (*fserveloop)(struct soap*);
#ifndef WITH_LEANER
int (*fprepareinitsend)(struct soap*);
int (*fprepareinitrecv)(struct soap*);
int (*fpreparefinalsend)(struct soap*);
int (*fpreparefinalrecv)(struct soap*);
void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);
void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);
void (*fdimereadclose)(struct soap*, void*);
void (*fdimewriteclose)(struct soap*, void*);
void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*);
void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding);
void (*fmimereadclose)(struct soap*, void*);
void (*fmimewriteclose)(struct soap*, void*);
#endif
#else
void *os; /* preserve struct size */
void *is; /* preserve struct size */
#endif
#ifndef UNDER_CE
int sendfd;
int recvfd;
#else
#endif
short cdata; /* CDATA parser state */
short body; /* parsed XML element has a body or not */
unsigned int level; /* XML nesting level */
char *labbuf; /* look-aside buffer */
char tmpbuf[1024]; /* in/out buffer for HTTP/MIME headers, simpleType values, element and attribute tag names, and DIME must be >=1024 bytes */
char tag[SOAP_TAGLEN];
char id[SOAP_TAGLEN];
char href[SOAP_TAGLEN];
char type[SOAP_TAGLEN];
char arrayType[SOAP_TAGLEN];
char arraySize[SOAP_TAGLEN];
char arrayOffset[SOAP_TAGLEN];
short other;
short position;
int positions[SOAP_MAXDIMS];
short root;
short encoding; /* when set, output encodingStyle */
short mustUnderstand; /* a mustUnderstand element was parsed or is output */
short null; /* parsed XML is xsi:nil */
short ns; /* when not set, output full xmlns bindings */
short part; /* parsing state */
short alloced;
short peeked;
char endpoint[SOAP_TAGLEN];
char path[SOAP_TAGLEN];
char host[SOAP_TAGLEN];
char *action;
char *authrealm; /* HTTP authentication realm */
char *prolog; /* XML declaration prolog */
unsigned long ip; /* IP number */
int port; /* port number */
short keep_alive; /* connection should be kept open */
short tcp_keep_alive; /* enable SO_KEEPALIVE */
unsigned int tcp_keep_idle; /* set TCP_KEEPIDLE */
unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */
unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */
unsigned int max_keep_alive; /* maximum keep-alive session (default=100) */
const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */
const char *proxy_host; /* Proxy Server host name */
int proxy_port; /* Proxy Server port (default = 8080) */
const char *proxy_userid; /* Proxy Authorization user name */
const char *proxy_passwd; /* Proxy Authorization password */
const char *proxy_from; /* X-Forwarding-For header returned by proxy */
int status; /* -1 when request, else error code to be returned by server */
int error;
int errmode;
int errnum;
#ifndef WITH_LEANER
struct soap_dom_element *dom;
struct soap_xlist *xlist;
#endif
#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)
const char *logfile[SOAP_MAXLOGS];
#endif
#ifndef WITH_LEAN
const char *wsuid; /* space-separated string of element tags */
const char *c14nexclude; /* space-separated string of prefixes */
struct soap_cookie *cookies;
const char *cookie_domain;
const char *cookie_path;
int cookie_max;
#endif
#ifndef WITH_NOIO
int ipv6_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */
char* ipv4_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */
int ipv4_multicast_ttl; /* multicast scope */
#ifdef WITH_IPV6
#else
#endif
#endif
#if defined(WITH_OPENSSL) /* OpenSSL */
int (*fsslverify)(int, X509_STORE_CTX*);
void *fsslauth; /* dummy members, to preserve struct size */
void *fsslverify;
void *bio;
void *ssl;
void *ctx;
void *session;
#endif
unsigned short ssl_flags;
const char *keyfile;
const char *password;
const char *dhfile;
const char *cafile;
const char *capath;
const char *crlfile;
const char *randfile;
char session_host[SOAP_TAGLEN];
int session_port;
#ifdef WITH_C_LOCALE
#else
void *c_locale;
#endif
#ifdef WITH_ZLIB
#else
void *d_stream; /* dummy members, to preserve struct size */
#endif
const char *z_dict; /* support for zlib static dictionaries */
unsigned int z_dict_len;
short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */
short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
char *z_buf; /* buffer */
unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */
float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */
float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */
#ifdef WMW_RPM_IO /* VxWorks */
void *rpmreqid;
#endif
#ifdef __cplusplus
soap();
#else
void (*dummy)();
#endif
};
struct soap_code_map
{ long code;
const char *string;
};
/* forwarding list */
struct soap_flist
{ struct soap_flist *next;
int type;
void *ptr;
unsigned int level;
};
/* id-ref forwarding list */
struct soap_ilist
{ struct soap_ilist *next;
int type;
void *link;
void *copy;
struct soap_flist *flist;
void *ptr;
unsigned int level;
};
struct soap_plugin
{ struct soap_plugin *next;
const char *id;
void *data;
void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */
};
#ifndef WITH_NONAMESPACES
#endif
#ifndef WITH_LEAN
# define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx])
# define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++])
#else
#endif
#ifdef HAVE_STRRCHR
# define soap_strrchr(s, t) strrchr(s, t)
#else
#endif
#ifdef HAVE_STRTOL
# define soap_strtol(s, t, b) strtol(s, t, b)
#else
#endif
#ifdef HAVE_STRTOUL
# define soap_strtoul(s, t, b) strtoul(s, t, b)
#else
#endif
#if defined(WITH_OPENSSL)
# define soap_random soap_rand()
#elif defined(HAVE_RANDOM)
# define soap_random (int)random()
#else
# define soap_random rand()
#endif
#ifdef WITH_NOIDREF
# define soap_embedded(s, p, t) (0)
# define soap_id_lookup(s, i, p, t, n, k) (p)
# define soap_reference(s, a, t) (1)
# define soap_array_reference(s, p, a, n, t) (1)
# define soap_embed(s, p, a, n, t, pp) (0)
# define soap_embedded_id(s, i, p, t) (i)
# define soap_is_embedded(s, p) (0)
# define soap_is_single(s, p) (1)
# define soap_lookup_type(s, i) (0)
# define soap_getindependent(s) (0)
# define soap_putindependent(s) (0)
# define soap_getelement(s, n) (n)
# define soap_putelement(s, p, t, i, n) (0)
# define soap_markelement(s, p, n) (0)
#endif
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*);
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*);
SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*);
SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*);
#ifndef WITH_LEANER
SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**);
SOAP_FMAC1 int SOAP_FMAC2 soap_dime_forward(struct soap*, unsigned char**, int*, char**, char**, char**);
#endif
#ifndef WITH_NOIDREF
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**);
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**);
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**);
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**);
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);
SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t);
#endif
SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char*);
SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, int (*fdelete)(struct soap_clist*));
#ifndef WITH_NOIDREF
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k);
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));
#endif
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*));
SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t, const void *q, size_t n);
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int);
/* API functions available with DEBUG or SOAP_DEBUG defined: */
/* */
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type);
SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset);
SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val);
SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type);
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);
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type);
#ifndef WITH_LEANER
#endif
SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, size_t n1, size_t n2);
SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *);
SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_lookup_ns(struct soap *soap, const char *tag, size_t n);
#ifndef WITH_NOSTDLIB
# ifndef WITH_LEAN
# ifdef __cplusplus
# endif
# endif
#endif
SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**, long minlen, long maxlen);
SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**, long minlen, long maxlen);
#ifndef WITH_LEAN
SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**, long minlen, long maxlen);
#endif
#ifndef WITH_LEAN
#endif
SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int);
SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int);
SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int);
SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int);
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int);
SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int);
SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int);
SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int);
SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int);
SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long);
#ifndef WITH_LEAN
SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int);
#endif
#ifndef WITH_LEANER
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long);
#endif
SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type);
#ifndef WITH_LEAN
SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int);
#endif
#ifndef WITH_LEANER
SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int);
SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type);
#endif
#ifndef WITH_LEANER
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);
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);
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);
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_get_mime_attachment(struct soap *soap, void *handle);
#endif
SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*);
SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value, int flag);
#ifdef WITH_COOKIES
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*);
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*);
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*);
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, const struct soap*);
SOAP_FMAC1 int SOAP_FMAC2 soap_putcookies(struct soap *soap, const char *domain, const char *path, int secure);
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* STDSOAP_H */