5
gSOAP runtime environment.
7
gSOAP XML Web services tools
8
Copyright (C) 2000-2004, Robert van Engelen, Genivia, Inc., All Rights Reserved.
12
Wind River Systems, Inc., for the following additions (marked WR[...]) :
16
--------------------------------------------------------------------------------
19
The contents of this file are subject to the gSOAP Public License Version 1.3
20
(the "License"); you may not use this file except in compliance with the
21
License. You may obtain a copy of the License at
22
http://www.cs.fsu.edu/~engelen/soaplicense.html
23
Software distributed under the License is distributed on an "AS IS" basis,
24
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
25
for the specific language governing rights and limitations under the License.
27
The Initial Developer of the Original Code is Robert A. van Engelen.
28
Copyright (C) 2000-2004, Robert van Engelen, Genivia, Inc., All Rights Reserved.
29
--------------------------------------------------------------------------------
32
This program is free software; you can redistribute it and/or modify it under
33
the terms of the GNU General Public License as published by the Free Software
34
Foundation; either version 2 of the License, or (at your option) any later
37
This program is distributed in the hope that it will be useful, but WITHOUT ANY
38
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
39
PARTICULAR PURPOSE. See the GNU General Public License for more details.
41
You should have received a copy of the GNU General Public License along with
42
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
43
Place, Suite 330, Boston, MA 02111-1307 USA
45
Author contact information:
46
engelen@genivia.com / engelen@acm.org
47
--------------------------------------------------------------------------------
50
#ifdef WITH_SOAPDEFS_H
51
# include "soapdefs.h" /* include user-defined stuff */
64
#ifndef SOAP_BEGIN_NAMESPACE
65
# define SOAP_BEGIN_NAMESPACE(name)
68
#ifndef SOAP_END_NAMESPACE
69
# define SOAP_END_NAMESPACE(name)
72
#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */
76
#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */
80
#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */
84
#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */
88
#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */
92
#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */
96
#ifndef SOAP_CMAC /* class declaration macro */
100
#ifndef SOAP_NMAC /* namespace table declaration macro */
104
#ifndef SOAP_SOURCE_STAMP
105
# define SOAP_SOURCE_STAMP(str)
116
# error "Cannot build WITH_LEAN code WITH_COOKIES enabled"
123
#if defined(__vxworks) || defined(__VXWORKS__)
158
#if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__)
175
# define __socklen_t_defined
181
# if defined(UNDER_CE)
184
# elif defined(WIN32)
185
# define HAVE_STRRCHR
189
# define HAVE_STRTOUL
190
# define HAVE_SYS_TIMEB_H
194
# elif defined(CYGWIN)
195
# define HAVE_STRRCHR
199
# define HAVE_STRTOUL
200
# define HAVE_SYS_TIMEB_H
203
# define HAVE_GMTIME_R
204
# define HAVE_LOCALTIME_R
207
# elif defined(__APPLE__)
208
# define HAVE_STRRCHR
212
# define HAVE_STRTOUL
214
# define HAVE_GMTIME_R
215
# define HAVE_LOCALTIME_R
219
# elif defined(_AIXVERSION_431)
220
# define HAVE_STRRCHR
224
# define HAVE_STRTOUL
225
# define HAVE_SYS_TIMEB_H
228
# define HAVE_GMTIME_R
229
# define HAVE_LOCALTIME_R
232
# elif defined(HP_UX)
233
# define HAVE_STRRCHR
237
# define HAVE_STRTOUL
238
# define HAVE_SYS_TIMEB_H
241
# define HAVE_GMTIME_R
242
# define HAVE_LOCALTIME_R
245
# elif defined(FREEBSD)
246
# define HAVE_STRRCHR
250
# define HAVE_STRTOUL
251
# define HAVE_GETTIMEOFDAY
253
# define HAVE_GMTIME_R
254
# define HAVE_LOCALTIME_R
257
# elif defined(__VMS)
258
# define HAVE_STRRCHR
262
# define HAVE_STRTOUL
263
# define HAVE_SYS_TIMEB_H
266
# define HAVE_GMTIME_R
267
# define HAVE_LOCALTIME_R
270
# elif defined(__GLIBC__)
271
# define HAVE_STRRCHR
275
# define HAVE_STRTOUL
276
# define HAVE_SYS_TIMEB_H
279
# define HAVE_GMTIME_R
280
# define HAVE_LOCALTIME_R
285
# elif defined(TRU64)
286
# define HAVE_STRRCHR
290
# define HAVE_STRTOUL
291
# define HAVE_GETTIMEOFDAY
292
# define HAVE_SYS_TIMEB_H
294
# define HAVE_GMTIME_R
295
# define HAVE_LOCALTIME_R
296
# define __USE_STD_IOSTREAM
299
# elif defined(MAC_CARBON)
300
# define HAVE_STRRCHR
304
# define HAVE_STRTOUL
307
# define HAVE_GETHOSTBYNAME_R
308
# define HAVE_GMTIME_R
309
# define HAVE_LOCALTIME_R
314
# define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */
315
# include <stdlib.h> /* Needs to be included before unix headers */
316
# include <sys_types.h>
317
# define IGNORE_STDIO_STUBS
318
# include <StdIOPalm.h>
319
# define O_NONBLOCK FNONBIO
320
# include <sys_socket.h>
322
# include "palmFunctions.h"
323
# elif defined(SYMBIAN)
325
# define WITH_NONAMESPACES
326
# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */
327
# include <sys/ioctl.h>
328
# elif defined(VXWORKS)
329
# define HAVE_STRRCHR
333
# define HAVE_STRTOUL
335
# define HAVE_PGMTIME_R
336
# define HAVE_PLOCALTIME_R
338
# elif defined(OS390)
339
# define HAVE_STRRCHR
343
# define HAVE_STRTOUL
344
# define HAVE_SYS_TIMEB_H
347
# define HAVE_GMTIME_R
348
# define HAVE_LOCALTIME_R
352
/* Default asumptions on supported functions */
353
# define HAVE_STRRCHR
357
# define HAVE_STRTOUL
358
# define HAVE_SYS_TIMEB_H
361
# define HAVE_GETHOSTBYNAME_R
362
# define HAVE_GMTIME_R
363
# define HAVE_LOCALTIME_R
370
# define SOAP_LONG_FORMAT "%ld"
371
# define SOAP_ULONG_FORMAT "%lu"
373
# define SOAP_LONG_FORMAT "%I64d"
374
# define SOAP_ULONG_FORMAT "%I64u"
377
#ifndef SOAP_LONG_FORMAT
378
# define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */
381
#ifndef SOAP_ULONG_FORMAT
382
# define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */
385
#ifndef SOAP_MALLOC /* use libc malloc */
386
# define SOAP_MALLOC(n) malloc(n)
389
#ifndef SOAP_FREE /* use libc free */
390
# define SOAP_FREE(p) free(p)
403
#if defined(__cplusplus) && !defined(WITH_LEAN)
413
# include <sys/types.h>
416
# ifdef HAVE_SYS_TIMEB_H
417
# include <sys/timeb.h> /* for ftime() */
425
# include <sys/socket.h>
426
# include <sys/stream.h>
427
# include <sys/protosw.h>
434
# include <sys/socket.h>
436
# include <sockLib.h>
440
# include <strings.h>
444
# include <sys/stream.h> /* SUN */
445
# include <sys/socketvar.h> /* SUN < 2.8 (?) */
448
# include <sys/times.h>
450
# include <sys/time.h>
452
# include <netinet/in.h>
454
# include <netinet/tcp_var.h>
456
# include <netinet/tcp.h> /* TCP_NODELAY */
458
# include <arpa/inet.h>
464
# include <fcgi_stdio.h>
468
# define OPENSSL_NO_KRB5
469
# include <openssl/ssl.h>
470
# include <openssl/err.h>
471
# include <openssl/rand.h>
472
# ifndef ALLOW_OLD_VERSIONS
473
# if (OPENSSL_VERSION_NUMBER < 0x00905100L)
474
# error "Must use OpenSSL 0.9.6 or later"
485
#ifdef WITH_CASEINSENSITIVETAGS
486
# define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */
488
# define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */
496
# include <math.h> /* for isnan() */
499
/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */
505
#define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx])
506
#define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++])
507
#define soap_revget1(soap) ((soap)->bufidx--)
508
#define soap_unget(soap, c) ((soap)->ahead = c)
509
#define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL)
510
#define soap_imode(soap, n) ((soap)->mode = (soap)->imode = (n))
511
#define soap_set_imode(soap, n) ((soap)->mode = (soap)->imode |= (n))
512
#define soap_clr_imode(soap, n) ((soap)->mode = (soap)->imode &= ~(n))
513
#define soap_omode(soap, n) ((soap)->mode = (soap)->omode = (n))
514
#define soap_set_omode(soap, n) ((soap)->mode = (soap)->omode |= (n))
515
#define soap_clr_omode(soap, n) ((soap)->mode = (soap)->omode &= ~(n))
516
#define soap_destroy(soap) soap_delete((soap), NULL)
523
# include <winsock.h>
524
/* # include <winsock2.h> */ /* Alternative: use winsock2 (not available with eVC) */
527
# include <ws2tcpip.h>
528
# include <wspiapi.h>
532
# include <hostLib.h>
540
# include <netinet/in.h>
548
# define SOAP_SOCKET SOCKET
550
# define SOAP_SOCKET int
551
# define closesocket(n) close(n)
554
#define soap_valid_socket(n) ((n) >= 0)
555
#define SOAP_INVALID_SOCKET (-1)
559
# define ULONG64 unsigned LONG64
560
#elif !defined(WIN32)
561
# define LONG64 long long
562
# define ULONG64 unsigned LONG64
563
#elif defined(UNDER_CE)
564
# define LONG64 __int64
565
# define ULONG64 unsigned LONG64
566
#elif defined(__BORLANDC__)
567
# define LONG64 __int64
568
# define ULONG64 unsigned LONG64
572
# define soap_int32 __int32
573
#elif defined(SYMBIAN)
574
# define soap_int32 long
576
# define soap_int32 Int32
578
# define soap_int32 int32_t
581
/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */
582
typedef soap_int32 soap_wchar;
585
# define SOAP_EINTR WSAEINTR
586
# define SOAP_EAGAIN WSAEWOULDBLOCK
587
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
588
# define SOAP_EINPROGRESS WSAEINPROGRESS
590
# define SOAP_EINTR EINTR
591
# define SOAP_EAGAIN EAGAIN
593
# define SOAP_EWOULDBLOCK 9898
594
# define SOAP_EINPROGRESS 9899
596
# define SOAP_EWOULDBLOCK EWOULDBLOCK
597
# define SOAP_EINPROGRESS EINPROGRESS
603
# define soap_errno GetLastError()
604
# define soap_socket_errno GetLastError()
606
# define soap_errno GetLastError()
607
# define soap_socket_errno WSAGetLastError()
610
# define soap_errno errno
611
# define soap_socket_errno errno
616
# define SOAP_BUFLEN (32768) /* buffer length for socket packets, also used by gethostbyname_r so don't make this too small */
618
# define SOAP_BUFLEN (2048)
623
# define SOAP_LABLEN (256) /* initial look-aside buffer length */
625
# define SOAP_LABLEN (64)
630
# define SOAP_PTRHASH (1024) /* size of pointer analysis hash table (must be power of 2) */
632
# define SOAP_PTRHASH (16)
637
# define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */
639
# define SOAP_IDHASH (199)
643
# define SOAP_BLKLEN (256) /* size of blocks to collect long strings and XML attributes */
646
# define SOAP_TAGLEN (256) /* maximum length of XML element tag/attribute name + 1 */
650
# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */
652
# define SOAP_HDRLEN (1024)
656
# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */
660
# define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */
661
# define SOAP_INDEX_RECV (0)
662
# define SOAP_INDEX_SENT (1)
663
# define SOAP_INDEX_TEST (2)
666
#ifndef SOAP_MAXKEEPALIVE
667
# define SOAP_MAXKEEPALIVE (100) /* max iterations to keep server connection alive */
670
#ifndef SOAP_MAXARRAYSIZE
671
# define SOAP_MAXARRAYSIZE (100000) /* "trusted" max size of inbound SOAP array for compound array allocation */
676
# include <private/mathP.h>
680
# define soap_isnan(num) isNan(num)
689
# define soap_isnan(num) _isnan(num)
693
# define soap_isnan(n) isnan(n)
696
#if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED))
702
# define soap_isnan(n) isnan(n)
704
# define soap_isnan(_) (0)
708
extern const struct soap_double_nan { unsigned int n1, n2; } soap_double_nan;
712
# define FLT_MAX _ARCH_FLT_MAX
715
# define DBL_MAX _ARCH_DBL_MAX
721
# define FLT_NAN (*(float*)&soap_double_nan)
723
# define FLT_NAN (0.0)
729
# define FLT_PINFTY FLT_MAX
732
# define FLT_PINFTY (float)HUGE_VAL
735
# define FLT_PINFTY FLOAT_MAX
737
# define FLT_PINFTY (3.40282347e+38)
744
# define FLT_NINFTY (-FLT_PINFTY)
749
# define DBL_NAN (*(double*)&soap_double_nan)
751
# define DBL_NAN (0.0)
757
# define DBL_PINFTY DBL_MAX
760
# define DBL_PINFTY (double)HUGE_VAL
763
# define DBL_PINFTY DOUBLE_MAX
765
# define DBL_PINFTY (1.7976931348623157e+308)
772
# define DBL_NINFTY (-DBL_PINFTY)
775
#define soap_ispinfd(n) ((n) >= DBL_PINFTY)
776
#define soap_ispinff(n) ((n) >= FLT_PINFTY)
777
#define soap_isninfd(n) ((n) <= DBL_NINFTY)
778
#define soap_isninff(n) ((n) <= FLT_NINFTY)
780
/* gSOAP error codes */
785
#define SOAP_CLI_FAULT 1
786
#define SOAP_SVR_FAULT 2
787
#define SOAP_TAG_MISMATCH 3
789
#define SOAP_SYNTAX_ERROR 5
790
#define SOAP_NO_TAG 6
792
#define SOAP_MUSTUNDERSTAND 8
793
#define SOAP_NAMESPACE 9
794
/* #define SOAP_OBJ_MISMATCH 10 obsolete */
795
#define SOAP_TAG_END 10
796
#define SOAP_FATAL_ERROR 11
797
#define SOAP_FAULT 12
798
#define SOAP_NO_METHOD 13
799
#define SOAP_GET_METHOD 14
802
#define SOAP_MULTI_ID 17
803
#define SOAP_MISSING_ID 18
805
#define SOAP_TCP_ERROR 20
806
#define SOAP_HTTP_ERROR 21
807
#define SOAP_SSL_ERROR 22
808
#define SOAP_ZLIB_ERROR 23
809
#define SOAP_DIME_ERROR 24
810
#define SOAP_DIME_HREF 25
811
#define SOAP_DIME_MISMATCH 26
812
#define SOAP_DIME_END 27
813
#define SOAP_MIME_ERROR 28
814
#define SOAP_VERSIONMISMATCH 29
815
#define SOAP_PLUGIN_ERROR 30
816
#define SOAP_DATAENCODINGUNKNOWN 31
817
#define SOAP_REQUIRED 32
818
#define SOAP_PROHIBITED 33
819
#define SOAP_OCCURS 34
820
#define SOAP_LENGTH 35
822
#define soap_xml_error_check(e) ((e) == SOAP_TAG_MISMATCH || (e) == SOAP_TAG_END || (e) == SOAP_SYNTAX_ERROR || (e) == SOAP_NAMESPACE || (e) == SOAP_MULTI_ID || (e) == SOAP_MISSING_ID || (e) == SOAP_REQUIRED || (e) == SOAP_PROHIBITED || (e) == SOAP_OCCURS || (e) == SOAP_LENGTH || (e) == SOAP_NULL || (e) == SOAP_HREF)
823
#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)
824
#define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR)
825
#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR)
826
#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR)
827
#define soap_mime_error_check(e) ((e) == SOAP_MIME_ERROR)
828
#define soap_dime_error_check(e) ((e) == SOAP_DIME_ERROR || (e) == SOAP_DIME_MISMATCH)
829
#define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_GET_METHOD || ((e) >= 100 && (e) < 600))
831
/* gSOAP HTTP response status codes 100 to 600 are reserved */
833
/* Special gSOAP HTTP response status codes */
835
#define SOAP_STOP 1000 /* No HTTP response */
836
#define SOAP_HTML 1001 /* Custom HTML response */
837
#define SOAP_FILE 1002 /* Custom file-based response */
839
/* gSOAP HTTP request status codes */
841
#define SOAP_POST 1003
842
#define SOAP_GET 1104
846
#define SOAP_DIME_CF 0x01
847
#define SOAP_DIME_ME 0x02
848
#define SOAP_DIME_MB 0x04
849
#define SOAP_DIME_VERSION 0x08 /* DIME version 1 */
850
#define SOAP_DIME_MEDIA 0x10
851
#define SOAP_DIME_ABSURI 0x20
855
#define SOAP_ZLIB_NONE 0x00
856
#define SOAP_ZLIB_DEFLATE 0x01
857
#define SOAP_ZLIB_INFLATE 0x02
858
#define SOAP_ZLIB_GZIP 0x02
860
/* gSOAP transport, connection, and content encoding modes */
862
typedef soap_int32 soap_mode;
864
#define SOAP_IO 0x00000003 /* IO mask */
865
#define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */
866
#define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */
867
#define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */
868
#define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */
870
#define SOAP_IO_LENGTH 0x00000004
871
#define SOAP_IO_KEEPALIVE 0x00000008
873
#define SOAP_ENC_LATIN 0x00800010 /* iso-8859-1 encoding */
874
#define SOAP_ENC_XML 0x00000020 /* plain XML encoding, no HTTP header */
875
#define SOAP_ENC_DIME 0x00000040
876
#define SOAP_ENC_MIME 0x00000080
877
#define SOAP_ENC_ZLIB 0x00000100
878
#define SOAP_ENC_SSL 0x00000200
880
#define SOAP_XML_STRICT 0x00001000 /* strict validation */
881
#define SOAP_XML_CANONICAL 0x00002000 /* C14N canonical XML */
882
#define SOAP_XML_TREE 0x00004000
883
#define SOAP_XML_GRAPH 0x00008000
884
#define SOAP_XML_NIL 0x00010000
885
#define SOAP_XML_DOM 0x00020000
886
#define SOAP_XML_SEC 0x00040000 /* reserved for WS security */
888
#define SOAP_C_NOIOB 0x00100000
889
#define SOAP_C_UTFSTRING 0x00200000
890
#define SOAP_C_MBSTRING 0x00400000
892
#define SOAP_DOM_TREE 0x01000000
893
#define SOAP_DOM_NODE 0x02000000
895
#define SOAP_IO_DEFAULT SOAP_IO_FLUSH
897
/* SSL client/server authentication settings */
899
#define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */
900
#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */
901
#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */
903
#define SOAP_SSL_DEFAULT SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION
908
#define SOAP_IN_ENVELOPE 2
909
#define SOAP_IN_HEADER 3
910
#define SOAP_END_HEADER 4
911
#define SOAP_IN_BODY 5
912
#define SOAP_END_BODY 6
913
#define SOAP_END_ENVELOPE 7
927
# ifndef SOAP_MESSAGE
928
# define SOAP_MESSAGE fprintf
931
# define DBGLOG(DBGFILE, CMD) \
933
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
934
soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\
935
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
936
{ FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\
944
# define DBGMSG(DBGFILE, MSG, LEN) \
946
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
947
soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\
948
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
949
{ fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\
950
fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\
956
# define DBGLOG(DBGFILE, CMD)
957
# define DBGMSG(DBGFILE, MSG, LEN)
968
{ struct soap_nlist *next;
970
short index; /* corresponding entry in ns mapping table */
971
char *ns; /* only set when parsed ns URI is not in the ns mapping table */
972
char id[1]; /* the actual string value flows into the allocated region below this struct */
976
{ struct soap_blist *next;
986
/* pointer serialization management */
988
{ struct soap_plist *next;
990
const struct soap_array *array;
997
/* class allocation list */
999
{ struct soap_clist *next;
1003
void (*fdelete)(struct soap_clist*);
1006
struct soap_attribute
1007
{ struct soap_attribute *next;
1012
char name[1]; /* the actual name string flows into the allocated region below this struct */
1016
{ struct soap_cookie *next;
1021
long expire; /* client-side: local time to expire; server-side: seconds to expire */
1022
unsigned int version;
1024
short session; /* server-side */
1025
short env; /* server-side: got cookie from client */
1026
short modified; /* server-side: client cookie was modified */
1030
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
1031
class soap_multipart_iterator
1033
struct soap_multipart *content;
1034
bool operator==(const soap_multipart_iterator& iter) const
1035
{ return content == iter.content; }
1036
bool operator!=(const soap_multipart_iterator& iter) const
1037
{ return content != iter.content; }
1038
struct soap_multipart &operator*() const
1039
{ return *content; }
1040
soap_multipart_iterator &operator++()
1041
{ content = soap_next_multipart(content); return *this; }
1042
soap_multipart_iterator() : content(NULL)
1044
soap_multipart_iterator(struct soap_multipart *p) : content(p)
1058
const char *options;
1059
struct soap_multipart *list; /* list of DIME attachments received */
1060
struct soap_multipart *first, *last; /* temporary in/out queue */
1062
soap_multipart_iterator begin()
1063
{ soap_multipart_iterator iter(list); return iter; };
1064
soap_multipart_iterator end()
1065
{ soap_multipart_iterator iter(NULL); return iter; };
1070
{ char *boundary; /* MIME boundary */
1071
const char *start; /* MIME start ID */
1072
struct soap_multipart *list; /* list of DIME attachments received */
1073
struct soap_multipart *first, *last; /* temporary in/out queue */
1075
soap_multipart_iterator begin()
1076
{ soap_multipart_iterator iter(list); return iter; };
1077
soap_multipart_iterator end()
1078
{ soap_multipart_iterator iter(NULL); return iter; };
1082
/* RFC2045 MIME content transfer encodings */
1083
enum soap_mime_encoding
1088
SOAP_MIME_QUOTED_PRINTABLE,
1090
SOAP_MIME_IETF_TOKEN,
1094
/* DIME/MIME multipart list */
1095
struct soap_multipart
1096
{ struct soap_multipart *next;
1097
char *ptr; /* points to raw data content */
1098
size_t size; /* size of data content */
1099
const char *id; /* DIME/MIME content ID */
1100
const char *type; /* DIME/MIME type (MIME type format) */
1101
const char *options; /* DIME options */
1102
enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */
1103
const char *location; /* MIME Content-Location (optional) */
1104
const char *description; /* MIME Content-Description (optional) */
1106
typedef soap_multipart_iterator iterator;
1110
struct soap_dom_attribute
1111
{ struct soap_dom_attribute *next;
1118
struct soap_dom_attribute &set(const char *nstr, const char *name); // set namespace and name
1119
struct soap_dom_attribute &set(const char *data); // set data
1121
soap_dom_attribute();
1122
soap_dom_attribute(struct soap *soap);
1123
soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data);
1124
~soap_dom_attribute();
1129
class soap_dom_iterator
1131
struct soap_dom_element *elt;
1135
bool operator==(const soap_dom_iterator&) const;
1136
bool operator!=(const soap_dom_iterator&) const;
1137
struct soap_dom_element &operator*() const;
1138
soap_dom_iterator &operator++();
1139
soap_dom_iterator();
1140
soap_dom_iterator(struct soap_dom_element*);
1141
~soap_dom_iterator();
1145
struct soap_dom_element
1146
{ struct soap_dom_element *next; /* next sibling */
1147
struct soap_dom_element *prnt; /* parent */
1148
struct soap_dom_element *elts; /* first child element */
1149
struct soap_dom_attribute *atts; /* first child attribute */
1150
const char *nstr; /* namespace string */
1151
char *name; /* element tag name */
1152
char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */
1153
wchar_t *wide; /* element content data */
1154
int type; /* optional: serialized C/C++ data type */
1155
void *node; /* optional: pointer to serialized C/C++ data */
1158
typedef soap_dom_iterator iterator;
1159
struct soap_dom_element &set(const char *nstr, const char *name);
1160
struct soap_dom_element &set(const char *data);
1161
struct soap_dom_element &set(void *node, int type);
1162
struct soap_dom_element &add(struct soap_dom_element*);
1163
struct soap_dom_element &add(struct soap_dom_element&);
1164
struct soap_dom_element &add(struct soap_dom_attribute*);
1165
struct soap_dom_element &add(struct soap_dom_attribute&);
1166
soap_dom_iterator begin();
1167
soap_dom_iterator end();
1168
soap_dom_iterator find(const char *nstr, const char *name);
1169
soap_dom_iterator find(int type);
1172
soap_dom_element(struct soap *soap);
1173
soap_dom_element(struct soap *soap, const char *nstr, const char *name);
1174
soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data);
1175
soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type);
1176
~soap_dom_element();
1180
#if defined(__cplusplus) && !defined(WITH_LEAN)
1182
extern ostream &operator<<(ostream&, const struct soap_dom_element&);
1183
extern istream &operator>>(istream&, struct soap_dom_element&);
1188
{ short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */
1189
short copy; /* 1 = copy of another soap struct */
1193
const char *float_format; /* points to user-definable format string for floats (<1024 chars) */
1194
const char *double_format; /* points to user-definable format string for doubles (<1024 chars) */
1195
const char *dime_id_format; /* points to user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */
1196
const char *http_version; /* default = "1.0" */
1197
const char *http_content; /* optional custom response content type (with SOAP_FILE) */
1198
const char *encodingStyle; /* default = NULL which means that SOAP encoding is used */
1200
int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */
1201
int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */
1202
int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */
1203
int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */
1204
int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */
1205
int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */
1206
int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
1207
int accept_flags; /* accept() SOL_SOCKET sockopt flags */
1208
const struct Namespace *namespaces; /* Pointer to global namespace mapping table */
1209
struct Namespace *local_namespaces; /* Local namespace mapping table */
1210
struct soap_nlist *nlist; /* namespace stack */
1211
struct soap_blist *blist; /* block allocation stack */
1212
struct soap_clist *clist; /* class instance allocation list */
1213
void *alist; /* memory allocation list */
1214
struct soap_ilist *iht[SOAP_IDHASH];
1215
struct soap_plist *pht[SOAP_PTRHASH];
1216
struct SOAP_ENV__Header *header;
1217
struct SOAP_ENV__Fault *fault;
1218
void *user; /* to pass user-defined data */
1219
struct soap_plugin *plugins; /* linked list of plug-in data */
1220
char *userid; /* HTTP Basic authorization userid */
1221
char *passwd; /* HTTP Basic authorization passwd */
1222
int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t);
1223
int (*fget)(struct soap*);
1224
int (*fposthdr)(struct soap*, const char*, const char*);
1225
int (*fresponse)(struct soap*, int, size_t);
1226
int (*fparse)(struct soap*);
1227
int (*fparsehdr)(struct soap*, const char*, const char*);
1228
int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr);
1229
int (*fconnect)(struct soap*, const char*, const char*, int);
1230
int (*fdisconnect)(struct soap*);
1231
int (*fclosesocket)(struct soap*, SOAP_SOCKET);
1232
int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int);
1233
int (*fopen)(struct soap*, const char*, const char*, int);
1234
int (*faccept)(struct soap*, int, struct sockaddr*, int *n);
1235
int (*fclose)(struct soap*);
1236
int (*fsend)(struct soap*, const char*, size_t);
1237
size_t (*frecv)(struct soap*, char*, size_t);
1238
int (*fpoll)(struct soap*);
1239
int (*fprepareinit)(struct soap*);
1240
int (*fpreparesend)(struct soap*, const char*, size_t);
1241
int (*fpreparerecv)(struct soap*, const char*, size_t);
1242
int (*fignore)(struct soap*, const char*);
1243
int (*fserveloop)(struct soap*);
1244
void *(*fplugin)(struct soap*, const char*);
1245
void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);
1246
void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);
1247
void (*fdimereadclose)(struct soap*, void*);
1248
void (*fdimewriteclose)(struct soap*, void*);
1249
size_t (*fdimeread)(struct soap*, void*, char*, size_t);
1250
int (*fdimewrite)(struct soap*, void*, const char*, size_t);
1253
#if defined(__cplusplus) && !defined(WITH_LEAN)
1257
void *os; /* preserve alignment */
1258
void *is; /* preserve alignment */
1267
wchar_t werrorstr[256];
1275
size_t count; /* message length counter */
1276
size_t length; /* message length as set by HTTP header */
1277
char *labbuf; /* look-aside buffer */
1278
size_t lablen; /* look-aside buffer allocated length */
1279
size_t labidx; /* look-aside buffer index to available part */
1280
char buf[SOAP_BUFLEN];/* send and receive buffer */
1281
char tmpbuf[1024]; /* output buffer for HTTP headers, simpleType values, attribute names, and DIME >=1024 bytes */
1282
char msgbuf[1024]; /* output buffer for (error) messages <=1024 bytes */
1283
char tag[SOAP_TAGLEN];
1284
char id[SOAP_TAGLEN];
1285
char href[SOAP_TAGLEN];
1286
char type[SOAP_TAGLEN];
1287
char arrayType[SOAP_TAGLEN];
1288
char arraySize[SOAP_TAGLEN];
1289
char arrayOffset[SOAP_TAGLEN];
1293
int positions[SOAP_MAXDIMS];
1294
struct soap_attribute *attributes; /* attribute list */
1296
short mustUnderstand;
1305
char endpoint[SOAP_TAGLEN];
1306
char path[SOAP_TAGLEN];
1307
char host[SOAP_TAGLEN];
1309
char *authrealm; /* HTTP authentication realm */
1310
char *prolog; /* XML declaration prolog */
1312
unsigned int max_keep_alive;
1313
const char *proxy_host; /* Proxy Server host name */
1314
int proxy_port; /* Proxy Server port (default = 8080) */
1315
const char *proxy_userid; /* Proxy Authorization user name */
1316
const char *proxy_passwd; /* Proxy Authorization password */
1317
int status; /* -1 when request, else error code to be returned by server */
1321
unsigned long idnum;
1323
struct soap_dime dime;
1324
struct soap_mime mime;
1325
struct soap_dom_element *dom;
1326
#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)
1327
const char *logfile[SOAP_MAXLOGS];
1328
FILE *fdebug[SOAP_MAXLOGS];
1331
struct soap_cookie *cookies;
1332
const char *cookie_domain;
1333
const char *cookie_path;
1337
int (*fsslauth)(struct soap*);
1338
int (*fsslverify)(int, X509_STORE_CTX*);
1342
short require_server_auth;
1343
short require_client_auth;
1344
short rsa; /* when set, use RSA instead of DH */
1345
const char *keyfile;
1346
const char *password;
1350
const char *randfile;
1351
SSL_SESSION *session;
1352
char session_host[SOAP_TAGLEN];
1356
short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */
1357
short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1358
short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1359
z_stream d_stream; /* decompression stream */
1360
char z_buf[SOAP_BUFLEN]; /* buffer */
1362
unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */
1363
uLong z_crc; /* internal gzip crc */
1364
float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */
1365
float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */
1370
#endif /* WMW_RPM_IO */
1374
struct soap_code_map
1379
/* forwarding list */
1381
{ struct soap_flist *next;
1385
void (*fcopy)(struct soap*, int, int, void*, const void*, size_t);
1388
/* id-ref forwarding list */
1390
{ struct soap_ilist *next;
1395
struct soap_flist *flist;
1398
char id[1]; /* the actual id string value flows into the allocated region below this struct */
1402
{ struct soap_plugin *next;
1405
int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src);
1406
void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */
1409
#ifndef WITH_NONAMESPACES
1410
extern SOAP_NMAC struct Namespace namespaces[];
1414
# define soap_strrchr(s, t) strrchr(s, t)
1416
SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t);
1420
# define soap_strtol(s, t, b) strtol(s, t, b)
1422
SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b);
1426
# define soap_strtoul(s, t, b) strtoul(s, t, b)
1428
SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b);
1431
SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap*);
1432
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultcode(struct soap*);
1433
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultstring(struct soap*);
1434
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultdetail(struct soap*);
1435
SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*);
1436
SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*);
1437
SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*);
1438
SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap*);
1439
SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*);
1440
SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*);
1442
SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*);
1443
SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*);
1444
SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*);
1445
SOAP_FMAC1 int SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int);
1446
SOAP_FMAC1 int SOAP_FMAC2 soap_accept(struct soap*);
1447
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*);
1449
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*);
1450
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*);
1452
SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count);
1454
SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*);
1455
SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*);
1456
SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*);
1458
SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*);
1459
SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*);
1460
SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t);
1461
SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*);
1462
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*);
1463
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*);
1464
SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*);
1465
SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*);
1466
SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*);
1467
SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*);
1468
SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int);
1469
SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int);
1471
SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t);
1472
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*);
1473
SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*);
1474
SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*);
1475
SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*);
1476
SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*);
1478
SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long);
1479
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*);
1481
SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int);
1482
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int);
1483
SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int);
1484
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*);
1487
SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*);
1488
SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*);
1489
SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*);
1491
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**);
1492
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**);
1493
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**);
1494
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**);
1496
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);
1498
SOAP_FMAC1 void SOAP_FMAC2 soap_begin_count(struct soap*);
1499
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*);
1500
SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*);
1502
SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t);
1503
SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t);
1504
SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t);
1505
SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t);
1506
SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*);
1507
SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*);
1508
SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*);
1510
SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char *str);
1511
SOAP_FMAC1 long SOAP_FMAC2 soap_int_code(const struct soap_code_map*, const char *str, long other);
1512
SOAP_FMAC1 const char* SOAP_FMAC2 soap_str_code(const struct soap_code_map*, long code);
1514
SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int);
1515
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*);
1516
SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*);
1518
SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t);
1519
SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*);
1520
SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, void (*fdelete)(struct soap_clist*));
1521
SOAP_FMAC1 void SOAP_FMAC2 soap_unlink(struct soap*, const void*);
1522
SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*);
1524
SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id);
1526
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k);
1527
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_forward(struct soap*, const char *id, void *p, int st, int tt, size_t n, unsigned int k, void(*fcopy)(struct soap*, int, int, void*, const void*, size_t));
1528
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*));
1529
SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, const void *q, size_t n);
1531
SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int);
1532
SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int);
1533
SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *);
1534
SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int);
1535
SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *);
1537
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int);
1538
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int);
1539
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int);
1540
SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int);
1541
SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int);
1543
SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*);
1545
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new(void);
1546
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new1(int);
1547
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new2(int, int);
1548
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(struct soap*);
1549
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*,struct soap*);
1550
SOAP_FMAC1 void SOAP_FMAC2 soap_init(struct soap*);
1551
SOAP_FMAC1 void SOAP_FMAC2 soap_init1(struct soap*, int);
1552
SOAP_FMAC1 void SOAP_FMAC2 soap_init2(struct soap*, int, int);
1553
SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*);
1554
SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*);
1555
SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*);
1556
SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*);
1557
SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*);
1560
SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*);
1561
SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*);
1562
SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*);
1563
SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*);
1564
SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int);
1567
SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*);
1569
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_advance(struct soap*);
1570
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_skip(struct soap*);
1572
SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *);
1573
SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*);
1575
SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*);
1576
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type);
1577
SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset);
1578
SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href);
1579
SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val);
1580
SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type);
1581
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);
1582
SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag);
1583
SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag);
1584
SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag);
1586
SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*);
1588
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable);
1590
SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag);
1592
SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*);
1594
SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*);
1595
SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*);
1597
SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*);
1599
SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag);
1600
SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long);
1601
SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag);
1602
SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long);
1604
SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, int n1, int n2);
1606
SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, struct Namespace*);
1608
SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*);
1609
SOAP_FMAC1 int SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *);
1611
SOAP_FMAC1 int SOAP_FMAC2 soap_new_block(struct soap*);
1612
SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, size_t);
1613
SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*);
1614
SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, size_t);
1615
SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*);
1616
SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*);
1617
SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*);
1618
SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, char*, int);
1619
SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*);
1621
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*);
1622
SOAP_FMAC1 int soap_envelope_end_out(struct soap*);
1624
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*);
1625
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*);
1627
SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*);
1628
SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*);
1630
SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*);
1631
SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*);
1633
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*);
1635
SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int);
1637
SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*);
1639
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*);
1641
SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*);
1642
SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*);
1644
SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*);
1645
SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*);
1646
SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*);
1647
SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*);
1648
SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*);
1649
SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*);
1650
SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*);
1651
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*);
1652
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*);
1653
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*);
1654
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*);
1655
SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*);
1656
SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*);
1657
SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**);
1658
SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**);
1660
SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, size_t);
1662
SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char);
1663
SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short);
1664
SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int);
1665
SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long);
1666
SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64);
1667
SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float);
1668
SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double);
1669
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char);
1670
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short);
1671
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int);
1672
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long);
1673
SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64);
1674
SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t);
1675
SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*);
1677
SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, size_t*);
1679
SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int);
1680
SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int);
1681
SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int);
1682
SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int);
1683
SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int);
1684
SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int);
1685
SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int);
1686
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int);
1687
SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int);
1688
SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int);
1689
SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int);
1690
SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int);
1691
SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int);
1692
SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long);
1693
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long);
1694
SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p);
1695
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p);
1697
SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int);
1698
SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int);
1699
SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int);
1700
SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int);
1701
SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int);
1702
SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int);
1703
SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int);
1704
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int);
1705
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int);
1706
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int);
1707
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int);
1708
SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int);
1709
SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int);
1710
SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int);
1711
SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int);
1712
SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p);
1713
SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p);
1716
SOAP_FMAC1 int SOAP_FMAC2 soap_element_dime(struct soap *, const char*, int, const void*, const struct soap_array*, const char*, const char*, const char*, int, const char*, int);
1717
SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, long);
1718
SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*);
1719
SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*);
1720
SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*);
1721
SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*);
1722
SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*);
1723
SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*);
1724
SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*);
1725
SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*);
1726
SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*);
1727
SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*);
1728
SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*);
1729
SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start);
1730
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*);
1731
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*);
1732
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);
1733
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);
1734
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
1737
SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*);
1738
SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*);
1740
SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag);
1741
SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value);
1742
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap);
1745
SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_cookie(const char*, char*, size_t);
1746
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*);
1747
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*);
1748
SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*);
1749
SOAP_FMAC1 extern long SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*);
1750
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*);
1751
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*);
1752
SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*);
1753
SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*);
1754
SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*);
1755
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*);
1756
SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*);