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
--------------------------------------------------------------------------------
18
This software is released under one of the following three licenses:
19
GPL, the gSOAP public license, or Genivia's license for commercial use.
21
--------------------------------------------------------------------------------
24
The contents of this file are subject to the gSOAP Public License Version 1.3
25
(the "License"); you may not use this file except in compliance with the
26
License. You may obtain a copy of the License at
27
http://www.cs.fsu.edu/~engelen/soaplicense.html
28
Software distributed under the License is distributed on an "AS IS" basis,
29
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
30
for the specific language governing rights and limitations under the License.
32
The Initial Developer of the Original Code is Robert A. van Engelen.
33
Copyright (C) 2000-2004, Robert van Engelen, Genivia, Inc., All Rights Reserved.
34
--------------------------------------------------------------------------------
37
This program is free software; you can redistribute it and/or modify it under
38
the terms of the GNU General Public License as published by the Free Software
39
Foundation; either version 2 of the License, or (at your option) any later
42
This program is distributed in the hope that it will be useful, but WITHOUT ANY
43
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
44
PARTICULAR PURPOSE. See the GNU General Public License for more details.
46
You should have received a copy of the GNU General Public License along with
47
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
48
Place, Suite 330, Boston, MA 02111-1307 USA
50
Author contact information:
51
engelen@genivia.com / engelen@acm.org
52
--------------------------------------------------------------------------------
53
A commercial use license is available from Genivia, Inc., contact@genivia.com
54
--------------------------------------------------------------------------------
57
#ifdef WITH_SOAPDEFS_H
58
# include "soapdefs.h" /* include user-defined stuff */
71
#ifndef SOAP_BEGIN_NAMESPACE
72
# define SOAP_BEGIN_NAMESPACE(name)
75
#ifndef SOAP_END_NAMESPACE
76
# define SOAP_END_NAMESPACE(name)
79
#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */
83
#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */
87
#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */
91
#ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */
92
# define SOAP_FMAC3S SOAP_FMAC3
95
#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */
99
#ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */
100
# define SOAP_FMAC4S SOAP_FMAC4
103
#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */
107
#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */
111
#ifndef SOAP_CMAC /* class declaration macro */
115
#ifndef SOAP_NMAC /* namespace table declaration macro */
119
#ifndef SOAP_SOURCE_STAMP
120
# define SOAP_SOURCE_STAMP(str)
131
# error "Cannot build WITH_LEAN code WITH_COOKIES enabled"
138
#if defined(__vxworks) || defined(__VXWORKS__)
173
#if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__)
190
# define __socklen_t_defined
196
# if defined(UNDER_CE)
199
# elif defined(WIN32)
200
# define HAVE_STRRCHR
204
# define HAVE_STRTOUL
205
# define HAVE_SYS_TIMEB_H
209
# elif defined(CYGWIN)
210
# define HAVE_STRRCHR
214
# define HAVE_STRTOUL
215
# define HAVE_SYS_TIMEB_H
218
# define HAVE_GMTIME_R
219
# define HAVE_LOCALTIME_R
222
# elif defined(__APPLE__)
223
# define HAVE_STRRCHR
227
# define HAVE_STRTOUL
229
# define HAVE_GMTIME_R
230
# define HAVE_LOCALTIME_R
234
# elif defined(_AIXVERSION_431)
235
# define HAVE_STRRCHR
239
# define HAVE_STRTOUL
240
# define HAVE_SYS_TIMEB_H
243
# define HAVE_GMTIME_R
244
# define HAVE_LOCALTIME_R
247
# elif defined(HP_UX)
248
# define HAVE_STRRCHR
252
# define HAVE_STRTOUL
253
# define HAVE_SYS_TIMEB_H
256
# define HAVE_GMTIME_R
257
# define HAVE_LOCALTIME_R
260
# elif defined(FREEBSD)
261
# define HAVE_STRRCHR
265
# define HAVE_STRTOUL
266
# define HAVE_GETTIMEOFDAY
268
# define HAVE_GMTIME_R
269
# define HAVE_LOCALTIME_R
272
# elif defined(__VMS)
273
# define HAVE_STRRCHR
277
# define HAVE_STRTOUL
278
# define HAVE_SYS_TIMEB_H
281
# define HAVE_GMTIME_R
282
# define HAVE_LOCALTIME_R
285
# elif defined(__GLIBC__)
286
# define HAVE_STRRCHR
290
# define HAVE_STRTOUL
291
# define HAVE_SYS_TIMEB_H
294
# define HAVE_GMTIME_R
295
# define HAVE_LOCALTIME_R
300
# elif defined(TRU64)
301
# define HAVE_STRRCHR
305
# define HAVE_STRTOUL
306
# define HAVE_GETTIMEOFDAY
307
# define HAVE_SYS_TIMEB_H
309
# define HAVE_GMTIME_R
310
# define HAVE_LOCALTIME_R
311
# define __USE_STD_IOSTREAM
314
# elif defined(MAC_CARBON)
316
# define HAVE_STRRCHR
320
# define HAVE_STRTOUL
323
# define HAVE_GETHOSTBYNAME_R
324
# define HAVE_GMTIME_R
325
# define HAVE_LOCALTIME_R
330
# define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */
331
# include <stdlib.h> /* Needs to be included before unix headers */
332
# include <sys_types.h>
333
# define IGNORE_STDIO_STUBS
334
# include <StdIOPalm.h>
335
# define O_NONBLOCK FNONBIO
336
# include <sys_socket.h>
338
# include "palmFunctions.h"
339
# elif defined(SYMBIAN)
341
# define WITH_NONAMESPACES
342
# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */
344
# include <sys/ioctl.h>
345
# elif defined(VXWORKS)
346
# define HAVE_STRRCHR
350
# define HAVE_STRTOUL
352
# define HAVE_PGMTIME_R
353
# define HAVE_PLOCALTIME_R
355
# elif defined(OS390)
356
# define HAVE_STRRCHR
360
# define HAVE_STRTOUL
361
# define HAVE_SYS_TIMEB_H
364
# define HAVE_GMTIME_R
365
# define HAVE_LOCALTIME_R
369
/* Default asumptions on supported functions */
370
# define HAVE_STRRCHR
374
# define HAVE_STRTOUL
375
# define HAVE_SYS_TIMEB_H
378
# define HAVE_GETHOSTBYNAME_R
379
# define HAVE_GMTIME_R
380
# define HAVE_LOCALTIME_R
387
# define SOAP_LONG_FORMAT "%ld"
388
# define SOAP_ULONG_FORMAT "%lu"
390
# define SOAP_LONG_FORMAT "%I64d"
391
# define SOAP_ULONG_FORMAT "%I64u"
394
#ifndef SOAP_LONG_FORMAT
395
# define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */
398
#ifndef SOAP_ULONG_FORMAT
399
# define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */
402
#ifndef SOAP_MALLOC /* use libc malloc */
403
# define SOAP_MALLOC(n) malloc(n)
406
#ifndef SOAP_FREE /* use libc free */
407
# define SOAP_FREE(p) free(p)
420
#if defined(__cplusplus) && !defined(WITH_LEAN)
430
# include <sys/types.h>
433
# ifdef HAVE_SYS_TIMEB_H
434
# include <sys/timeb.h> /* for ftime() */
442
# include <sys/socket.h>
443
# include <sys/stream.h>
444
# include <sys/protosw.h>
451
# include <sys/socket.h>
453
# include <sockLib.h>
457
# include <strings.h>
461
# include <sys/stream.h> /* SUN */
462
# include <sys/socketvar.h> /* SUN < 2.8 (?) */
465
# include <sys/times.h>
467
# include <sys/time.h>
469
# include <netinet/in.h>
471
# include <netinet/tcp_var.h>
473
# include <netinet/tcp.h> /* TCP_NODELAY */
475
# include <arpa/inet.h>
481
# include <fcgi_stdio.h>
485
# define OPENSSL_NO_KRB5
486
# include <openssl/ssl.h>
487
# include <openssl/err.h>
488
# include <openssl/rand.h>
489
# ifndef ALLOW_OLD_VERSIONS
490
# if (OPENSSL_VERSION_NUMBER < 0x00905100L)
491
# error "Must use OpenSSL 0.9.6 or later"
502
#ifdef WITH_CASEINSENSITIVETAGS
503
# define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */
505
# define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */
513
# include <math.h> /* for isnan() */
516
/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */
522
#define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx])
523
#define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++])
524
#define soap_revget1(soap) ((soap)->bufidx--)
525
#define soap_unget(soap, c) ((soap)->ahead = c)
526
#define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL)
527
#define soap_imode(soap, n) ((soap)->mode = (soap)->imode = (n))
528
#define soap_set_imode(soap, n) ((soap)->mode = (soap)->imode |= (n))
529
#define soap_clr_imode(soap, n) ((soap)->mode = (soap)->imode &= ~(n))
530
#define soap_omode(soap, n) ((soap)->mode = (soap)->omode = (n))
531
#define soap_set_omode(soap, n) ((soap)->mode = (soap)->omode |= (n))
532
#define soap_clr_omode(soap, n) ((soap)->mode = (soap)->omode &= ~(n))
533
#define soap_destroy(soap) soap_delete((soap), NULL)
540
# include <winsock.h>
541
/* # include <winsock2.h> */ /* Alternative: use winsock2 (not available with eVC) */
544
# include <ws2tcpip.h>
545
# include <wspiapi.h>
549
# include <hostLib.h>
557
# include <netinet/in.h>
565
# define SOAP_SOCKET SOCKET
567
# define SOAP_SOCKET int
568
# define closesocket(n) close(n)
571
#define SOAP_INVALID_SOCKET (-1)
572
#define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET)
576
# define ULONG64 unsigned LONG64
577
#elif !defined(WIN32)
579
# define LONG64 long long
580
# define ULONG64 unsigned LONG64
582
#elif defined(UNDER_CE)
583
# define LONG64 __int64
584
# define ULONG64 unsigned LONG64
585
#elif defined(__BORLANDC__)
586
# define LONG64 __int64
587
# define ULONG64 unsigned LONG64
591
# define soap_int32 __int32
592
#elif defined(SYMBIAN)
593
# define soap_int32 long
595
# define soap_int32 Int32
597
# define soap_int32 int32_t
600
/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */
601
typedef soap_int32 soap_wchar;
604
# define SOAP_EINTR WSAEINTR
605
# define SOAP_EAGAIN WSAEWOULDBLOCK
606
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
607
# define SOAP_EINPROGRESS WSAEINPROGRESS
609
# define SOAP_EINTR EINTR
610
# define SOAP_EAGAIN EAGAIN
612
# define SOAP_EWOULDBLOCK 9898
613
# define SOAP_EINPROGRESS 9899
615
# define SOAP_EWOULDBLOCK EWOULDBLOCK
616
# define SOAP_EINPROGRESS EINPROGRESS
622
# define soap_errno GetLastError()
623
# define soap_socket_errno GetLastError()
625
# define soap_errno GetLastError()
626
# define soap_socket_errno WSAGetLastError()
630
# define soap_errno errno
631
# define soap_socket_errno errno
633
# define soap_errno 0
634
# define soap_socket_errno 0
640
# define SOAP_BUFLEN (32768) /* buffer length for socket packets, also used by gethostbyname_r so don't make this too small */
642
# define SOAP_BUFLEN (2048)
647
# define SOAP_LABLEN (256) /* initial look-aside buffer length */
649
# define SOAP_LABLEN (64)
654
# define SOAP_PTRHASH (1024) /* size of pointer analysis hash table (must be power of 2) */
656
# define SOAP_PTRHASH (16)
661
# define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */
663
# define SOAP_IDHASH (199)
667
# define SOAP_BLKLEN (256) /* size of blocks to collect long strings and XML attributes */
670
# define SOAP_TAGLEN (256) /* maximum length of XML element tag/attribute name + 1 */
674
# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */
676
# define SOAP_HDRLEN (1024)
680
# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */
684
# define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */
685
# define SOAP_INDEX_RECV (0)
686
# define SOAP_INDEX_SENT (1)
687
# define SOAP_INDEX_TEST (2)
690
#ifndef SOAP_MAXKEEPALIVE
691
# define SOAP_MAXKEEPALIVE (100) /* max iterations to keep server connection alive */
694
#ifndef SOAP_MAXARRAYSIZE
695
# define SOAP_MAXARRAYSIZE (100000) /* "trusted" max size of inbound SOAP array for compound array allocation */
700
# include <private/mathP.h>
704
# define soap_isnan(num) isNan(num)
713
# define soap_isnan(num) _isnan(num)
717
# define soap_isnan(n) isnan(n)
720
#if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED))
726
# define soap_isnan(n) isnan(n)
728
# define soap_isnan(_) (0)
732
extern const struct soap_double_nan { unsigned int n1, n2; } soap_double_nan;
736
# define FLT_MAX _ARCH_FLT_MAX
739
# define DBL_MAX _ARCH_DBL_MAX
745
# define FLT_NAN (*(float*)&soap_double_nan)
747
# define FLT_NAN (0.0)
753
# define FLT_PINFTY FLT_MAX
756
# define FLT_PINFTY (float)HUGE_VAL
759
# define FLT_PINFTY FLOAT_MAX
761
# define FLT_PINFTY (3.40282347e+38)
768
# define FLT_NINFTY (-FLT_PINFTY)
773
# define DBL_NAN (*(double*)&soap_double_nan)
775
# define DBL_NAN (0.0)
781
# define DBL_PINFTY DBL_MAX
784
# define DBL_PINFTY (double)HUGE_VAL
787
# define DBL_PINFTY DOUBLE_MAX
789
# define DBL_PINFTY (1.7976931348623157e+308)
796
# define DBL_NINFTY (-DBL_PINFTY)
799
#define soap_ispinfd(n) ((n) >= DBL_PINFTY)
800
#define soap_ispinff(n) ((n) >= FLT_PINFTY)
801
#define soap_isninfd(n) ((n) <= DBL_NINFTY)
802
#define soap_isninff(n) ((n) <= FLT_NINFTY)
804
/* gSOAP error codes */
809
#define SOAP_CLI_FAULT 1
810
#define SOAP_SVR_FAULT 2
811
#define SOAP_TAG_MISMATCH 3
813
#define SOAP_SYNTAX_ERROR 5
814
#define SOAP_NO_TAG 6
816
#define SOAP_MUSTUNDERSTAND 8
817
#define SOAP_NAMESPACE 9
818
/* #define SOAP_OBJ_MISMATCH 10 obsolete */
819
#define SOAP_TAG_END 10
820
#define SOAP_FATAL_ERROR 11
821
#define SOAP_FAULT 12
822
#define SOAP_NO_METHOD 13
823
#define SOAP_GET_METHOD 14
826
#define SOAP_MULTI_ID 17
827
#define SOAP_MISSING_ID 18
829
#define SOAP_TCP_ERROR 20
830
#define SOAP_HTTP_ERROR 21
831
#define SOAP_SSL_ERROR 22
832
#define SOAP_ZLIB_ERROR 23
833
#define SOAP_DIME_ERROR 24
834
#define SOAP_DIME_HREF 25
835
#define SOAP_DIME_MISMATCH 26
836
#define SOAP_DIME_END 27
837
#define SOAP_MIME_ERROR 28
838
#define SOAP_VERSIONMISMATCH 29
839
#define SOAP_PLUGIN_ERROR 30
840
#define SOAP_DATAENCODINGUNKNOWN 31
841
#define SOAP_REQUIRED 32
842
#define SOAP_PROHIBITED 33
843
#define SOAP_OCCURS 34
844
#define SOAP_LENGTH 35
846
#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)
847
#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)
848
#define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR)
849
#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR)
850
#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR)
851
#define soap_mime_error_check(e) ((e) == SOAP_MIME_ERROR)
852
#define soap_dime_error_check(e) ((e) == SOAP_DIME_ERROR || (e) == SOAP_DIME_MISMATCH)
853
#define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_GET_METHOD || ((e) >= 100 && (e) < 600))
855
/* gSOAP HTTP response status codes 100 to 600 are reserved */
857
/* Special gSOAP HTTP response status codes */
859
#define SOAP_STOP 1000 /* No HTTP response */
860
#define SOAP_HTML 1001 /* Custom HTML response */
861
#define SOAP_FILE 1002 /* Custom file-based response */
863
/* gSOAP HTTP request status codes */
865
#define SOAP_POST 1003
866
#define SOAP_GET 1104
870
#define SOAP_DIME_CF 0x01
871
#define SOAP_DIME_ME 0x02
872
#define SOAP_DIME_MB 0x04
873
#define SOAP_DIME_VERSION 0x08 /* DIME version 1 */
874
#define SOAP_DIME_MEDIA 0x10
875
#define SOAP_DIME_ABSURI 0x20
879
#define SOAP_ZLIB_NONE 0x00
880
#define SOAP_ZLIB_DEFLATE 0x01
881
#define SOAP_ZLIB_INFLATE 0x02
882
#define SOAP_ZLIB_GZIP 0x02
884
/* gSOAP transport, connection, and content encoding modes */
886
typedef soap_int32 soap_mode;
888
#define SOAP_IO 0x00000003 /* IO mask */
889
#define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */
890
#define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */
891
#define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */
892
#define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */
894
#define SOAP_IO_LENGTH 0x00000004
895
#define SOAP_IO_KEEPALIVE 0x00000008
897
#define SOAP_ENC_LATIN 0x00800010 /* iso-8859-1 encoding */
898
#define SOAP_ENC_XML 0x00000020 /* plain XML encoding, no HTTP header */
899
#define SOAP_ENC_DIME 0x00000040
900
#define SOAP_ENC_MIME 0x00000080
901
#define SOAP_ENC_ZLIB 0x00000100
902
#define SOAP_ENC_SSL 0x00000200
904
#define SOAP_ENC 0x00000FFF /* IO and ENC mask */
906
#define SOAP_XML_STRICT 0x00001000 /* strict validation */
907
#define SOAP_XML_CANONICAL 0x00002000 /* C14N canonical XML */
908
#define SOAP_XML_TREE 0x00004000
909
#define SOAP_XML_GRAPH 0x00008000
910
#define SOAP_XML_NIL 0x00010000
911
#define SOAP_XML_DOM 0x00020000
912
#define SOAP_XML_SEC 0x00040000 /* reserved for WS security */
914
#define SOAP_C_NOIOB 0x00100000
915
#define SOAP_C_UTFSTRING 0x00200000
916
#define SOAP_C_MBSTRING 0x00400000
918
#define SOAP_DOM_TREE 0x01000000
919
#define SOAP_DOM_NODE 0x02000000
921
#define SOAP_IO_DEFAULT SOAP_IO_FLUSH
923
/* SSL client/server authentication settings */
925
#define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */
926
#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */
927
#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */
929
#define SOAP_SSL_DEFAULT SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION
934
#define SOAP_IN_ENVELOPE 2
935
#define SOAP_IN_HEADER 3
936
#define SOAP_END_HEADER 4
937
#define SOAP_IN_BODY 5
938
#define SOAP_END_BODY 6
939
#define SOAP_END_ENVELOPE 7
953
# ifndef SOAP_MESSAGE
954
# define SOAP_MESSAGE fprintf
957
# define DBGLOG(DBGFILE, CMD) \
959
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
960
soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\
961
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
962
{ FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\
970
# define DBGMSG(DBGFILE, MSG, LEN) \
972
{ if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
973
soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\
974
if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
975
{ fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\
976
fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\
982
# define DBGLOG(DBGFILE, CMD)
983
# define DBGMSG(DBGFILE, MSG, LEN)
994
{ struct soap_nlist *next;
996
short index; /* corresponding entry in ns mapping table */
997
char *ns; /* only set when parsed ns URI is not in the ns mapping table */
998
char id[1]; /* the actual string value flows into the allocated region below this struct */
1002
{ struct soap_blist *next;
1012
/* pointer serialization management */
1014
{ struct soap_plist *next;
1016
const struct soap_array *array;
1023
/* class allocation list */
1025
{ struct soap_clist *next;
1029
void (*fdelete)(struct soap_clist*);
1032
struct soap_attribute
1033
{ struct soap_attribute *next;
1038
char name[1]; /* the actual name string flows into the allocated region below this struct */
1042
{ struct soap_cookie *next;
1047
long expire; /* client-side: local time to expire; server-side: seconds to expire */
1048
unsigned int version;
1050
short session; /* server-side */
1051
short env; /* server-side: got cookie from client */
1052
short modified; /* server-side: client cookie was modified */
1056
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
1057
class soap_multipart_iterator
1059
struct soap_multipart *content;
1060
bool operator==(const soap_multipart_iterator& iter) const
1061
{ return content == iter.content; }
1062
bool operator!=(const soap_multipart_iterator& iter) const
1063
{ return content != iter.content; }
1064
struct soap_multipart &operator*() const
1065
{ return *content; }
1066
soap_multipart_iterator &operator++()
1067
{ content = soap_next_multipart(content); return *this; }
1068
soap_multipart_iterator() : content(NULL)
1070
soap_multipart_iterator(struct soap_multipart *p) : content(p)
1084
const char *options;
1085
struct soap_multipart *list; /* list of DIME attachments received */
1086
struct soap_multipart *first, *last; /* temporary in/out queue */
1088
soap_multipart_iterator begin()
1089
{ soap_multipart_iterator iter(list); return iter; };
1090
soap_multipart_iterator end()
1091
{ soap_multipart_iterator iter(NULL); return iter; };
1096
{ char *boundary; /* MIME boundary */
1097
const char *start; /* MIME start ID */
1098
struct soap_multipart *list; /* list of DIME attachments received */
1099
struct soap_multipart *first, *last; /* temporary in/out queue */
1101
soap_multipart_iterator begin()
1102
{ soap_multipart_iterator iter(list); return iter; };
1103
soap_multipart_iterator end()
1104
{ soap_multipart_iterator iter(NULL); return iter; };
1108
/* RFC2045 MIME content transfer encodings */
1109
enum soap_mime_encoding
1114
SOAP_MIME_QUOTED_PRINTABLE,
1116
SOAP_MIME_IETF_TOKEN,
1120
/* DIME/MIME multipart list */
1121
struct soap_multipart
1122
{ struct soap_multipart *next;
1123
char *ptr; /* points to raw data content */
1124
size_t size; /* size of data content */
1125
const char *id; /* DIME/MIME content ID */
1126
const char *type; /* DIME/MIME type (MIME type format) */
1127
const char *options; /* DIME options */
1128
enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */
1129
const char *location; /* MIME Content-Location (optional) */
1130
const char *description; /* MIME Content-Description (optional) */
1132
typedef soap_multipart_iterator iterator;
1136
struct soap_dom_attribute
1137
{ struct soap_dom_attribute *next;
1144
struct soap_dom_attribute &set(const char *nstr, const char *name); // set namespace and name
1145
struct soap_dom_attribute &set(const char *data); // set data
1147
soap_dom_attribute();
1148
soap_dom_attribute(struct soap *soap);
1149
soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data);
1150
~soap_dom_attribute();
1155
class soap_dom_iterator
1157
struct soap_dom_element *elt;
1161
bool operator==(const soap_dom_iterator&) const;
1162
bool operator!=(const soap_dom_iterator&) const;
1163
struct soap_dom_element &operator*() const;
1164
soap_dom_iterator &operator++();
1165
soap_dom_iterator();
1166
soap_dom_iterator(struct soap_dom_element*);
1167
~soap_dom_iterator();
1171
struct soap_dom_element
1172
{ struct soap_dom_element *next; /* next sibling */
1173
struct soap_dom_element *prnt; /* parent */
1174
struct soap_dom_element *elts; /* first child element */
1175
struct soap_dom_attribute *atts; /* first child attribute */
1176
const char *nstr; /* namespace string */
1177
char *name; /* element tag name */
1178
char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */
1179
wchar_t *wide; /* element content data */
1180
int type; /* optional: serialized C/C++ data type */
1181
void *node; /* optional: pointer to serialized C/C++ data */
1184
typedef soap_dom_iterator iterator;
1185
struct soap_dom_element &set(const char *nstr, const char *name);
1186
struct soap_dom_element &set(const char *data);
1187
struct soap_dom_element &set(void *node, int type);
1188
struct soap_dom_element &add(struct soap_dom_element*);
1189
struct soap_dom_element &add(struct soap_dom_element&);
1190
struct soap_dom_element &add(struct soap_dom_attribute*);
1191
struct soap_dom_element &add(struct soap_dom_attribute&);
1192
soap_dom_iterator begin();
1193
soap_dom_iterator end();
1194
soap_dom_iterator find(const char *nstr, const char *name);
1195
soap_dom_iterator find(int type);
1198
soap_dom_element(struct soap *soap);
1199
soap_dom_element(struct soap *soap, const char *nstr, const char *name);
1200
soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data);
1201
soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type);
1202
~soap_dom_element();
1206
#if defined(__cplusplus) && !defined(WITH_LEAN)
1208
extern ostream &operator<<(ostream&, const struct soap_dom_element&);
1209
extern istream &operator>>(istream&, struct soap_dom_element&);
1214
{ short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */
1215
short copy; /* 1 = copy of another soap struct */
1219
const char *float_format; /* points to user-definable format string for floats (<1024 chars) */
1220
const char *double_format; /* points to user-definable format string for doubles (<1024 chars) */
1221
const char *dime_id_format; /* points to user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */
1222
const char *http_version; /* default = "1.0" */
1223
const char *http_content; /* optional custom response content type (with SOAP_FILE) */
1224
const char *encodingStyle; /* default = NULL which means that SOAP encoding is used */
1226
int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */
1227
int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */
1228
int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */
1229
int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */
1230
int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */
1231
int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */
1232
int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
1233
int accept_flags; /* accept() SOL_SOCKET sockopt flags */
1234
const struct Namespace *namespaces; /* Pointer to global namespace mapping table */
1235
struct Namespace *local_namespaces; /* Local namespace mapping table */
1236
struct soap_nlist *nlist; /* namespace stack */
1237
struct soap_blist *blist; /* block allocation stack */
1238
struct soap_clist *clist; /* class instance allocation list */
1239
void *alist; /* memory allocation list */
1240
struct soap_ilist *iht[SOAP_IDHASH];
1241
struct soap_plist *pht[SOAP_PTRHASH];
1242
struct SOAP_ENV__Header *header;
1243
struct SOAP_ENV__Fault *fault;
1244
void *user; /* to pass user-defined data */
1245
struct soap_plugin *plugins; /* linked list of plug-in data */
1246
char *userid; /* HTTP Basic authorization userid */
1247
char *passwd; /* HTTP Basic authorization passwd */
1248
int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t);
1249
int (*fget)(struct soap*);
1250
int (*fposthdr)(struct soap*, const char*, const char*);
1251
int (*fresponse)(struct soap*, int, size_t);
1252
int (*fparse)(struct soap*);
1253
int (*fparsehdr)(struct soap*, const char*, const char*);
1254
int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr);
1255
int (*fconnect)(struct soap*, const char*, const char*, int);
1256
int (*fdisconnect)(struct soap*);
1257
int (*fclosesocket)(struct soap*, SOAP_SOCKET);
1258
int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int);
1259
int (*fopen)(struct soap*, const char*, const char*, int);
1260
int (*faccept)(struct soap*, int, struct sockaddr*, int *n);
1261
int (*fclose)(struct soap*);
1262
int (*fsend)(struct soap*, const char*, size_t);
1263
size_t (*frecv)(struct soap*, char*, size_t);
1264
int (*fpoll)(struct soap*);
1265
int (*fprepareinit)(struct soap*);
1266
int (*fpreparesend)(struct soap*, const char*, size_t);
1267
int (*fpreparerecv)(struct soap*, const char*, size_t);
1268
int (*fignore)(struct soap*, const char*);
1269
int (*fserveloop)(struct soap*);
1270
void *(*fplugin)(struct soap*, const char*);
1271
void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);
1272
void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);
1273
void (*fdimereadclose)(struct soap*, void*);
1274
void (*fdimewriteclose)(struct soap*, void*);
1275
size_t (*fdimeread)(struct soap*, void*, char*, size_t);
1276
int (*fdimewrite)(struct soap*, void*, const char*, size_t);
1279
#if defined(__cplusplus) && !defined(WITH_LEAN)
1283
void *os; /* preserve alignment */
1284
void *is; /* preserve alignment */
1294
char errorstr[256]; /* buf for FormatMessage() */
1302
size_t count; /* message length counter */
1303
size_t length; /* message length as set by HTTP header */
1304
char *labbuf; /* look-aside buffer */
1305
size_t lablen; /* look-aside buffer allocated length */
1306
size_t labidx; /* look-aside buffer index to available part */
1307
char buf[SOAP_BUFLEN];/* send and receive buffer */
1308
char tmpbuf[1024]; /* in/output buffer for HTTP headers, simpleType values, attribute names, and DIME >=1024 bytes */
1309
char msgbuf[1024]; /* output buffer for (error) messages <=1024 bytes */
1310
char tag[SOAP_TAGLEN];
1311
char id[SOAP_TAGLEN];
1312
char href[SOAP_TAGLEN];
1313
char type[SOAP_TAGLEN];
1314
char arrayType[SOAP_TAGLEN];
1315
char arraySize[SOAP_TAGLEN];
1316
char arrayOffset[SOAP_TAGLEN];
1320
int positions[SOAP_MAXDIMS];
1321
struct soap_attribute *attributes; /* attribute list */
1323
short mustUnderstand;
1332
char endpoint[SOAP_TAGLEN];
1333
char path[SOAP_TAGLEN];
1334
char host[SOAP_TAGLEN];
1336
char *authrealm; /* HTTP authentication realm */
1337
char *prolog; /* XML declaration prolog */
1339
unsigned int max_keep_alive;
1340
const char *proxy_host; /* Proxy Server host name */
1341
int proxy_port; /* Proxy Server port (default = 8080) */
1342
const char *proxy_userid; /* Proxy Authorization user name */
1343
const char *proxy_passwd; /* Proxy Authorization password */
1344
int status; /* -1 when request, else error code to be returned by server */
1348
unsigned long idnum;
1350
struct soap_dom_element *dom;
1352
struct soap_dime dime;
1353
struct soap_mime mime;
1355
#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)
1356
const char *logfile[SOAP_MAXLOGS];
1357
FILE *fdebug[SOAP_MAXLOGS];
1360
struct soap_cookie *cookies;
1361
const char *cookie_domain;
1362
const char *cookie_path;
1366
int (*fsslauth)(struct soap*);
1367
int (*fsslverify)(int, X509_STORE_CTX*);
1371
short require_server_auth;
1372
short require_client_auth;
1373
short rsa; /* when set, use RSA instead of DH */
1374
const char *keyfile;
1375
const char *password;
1379
const char *randfile;
1380
SSL_SESSION *session;
1381
char session_host[SOAP_TAGLEN];
1385
short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */
1386
short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1387
short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1388
z_stream d_stream; /* decompression stream */
1389
char z_buf[SOAP_BUFLEN]; /* buffer */
1391
unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */
1392
uLong z_crc; /* internal gzip crc */
1393
float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */
1394
float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */
1399
#endif /* WMW_RPM_IO */
1403
struct soap_code_map
1408
/* forwarding list */
1410
{ struct soap_flist *next;
1414
void (*fcopy)(struct soap*, int, int, void*, const void*, size_t);
1417
/* id-ref forwarding list */
1419
{ struct soap_ilist *next;
1424
struct soap_flist *flist;
1427
char id[1]; /* the actual id string value flows into the allocated region below this struct */
1431
{ struct soap_plugin *next;
1434
int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src);
1435
void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */
1438
#ifndef WITH_NONAMESPACES
1439
extern SOAP_NMAC struct Namespace namespaces[];
1443
# define soap_strrchr(s, t) strrchr(s, t)
1445
SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t);
1449
# define soap_strtol(s, t, b) strtol(s, t, b)
1451
SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b);
1455
# define soap_strtoul(s, t, b) strtoul(s, t, b)
1457
SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b);
1460
SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap*);
1461
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultcode(struct soap*);
1462
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultstring(struct soap*);
1463
SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultdetail(struct soap*);
1464
SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*);
1465
SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*);
1466
SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*);
1467
SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap*);
1468
SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*);
1469
SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*);
1471
SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*);
1472
SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*);
1473
SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*);
1474
SOAP_FMAC1 int SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int);
1475
SOAP_FMAC1 int SOAP_FMAC2 soap_accept(struct soap*);
1476
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*);
1478
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*);
1479
SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*);
1481
SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count);
1483
SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*);
1484
SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*);
1485
SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*);
1487
SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*);
1488
SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*);
1489
SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t);
1490
SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*);
1491
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*);
1492
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*);
1493
SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*);
1494
SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*);
1495
SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*);
1496
SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*);
1497
SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int);
1498
SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int);
1500
SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t);
1501
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*);
1502
SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*);
1503
SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*);
1504
SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*);
1505
SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*);
1507
SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long);
1508
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*);
1510
SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int);
1511
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int);
1512
SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int);
1513
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*);
1516
SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*);
1517
SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*);
1518
SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*);
1520
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**);
1521
SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**);
1522
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**);
1523
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**);
1525
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);
1527
SOAP_FMAC1 void SOAP_FMAC2 soap_begin_count(struct soap*);
1528
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*);
1529
SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*);
1531
SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t);
1532
SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t);
1533
SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t);
1534
SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t);
1535
SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*);
1536
SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*);
1537
SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*);
1539
SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char *str);
1540
SOAP_FMAC1 long SOAP_FMAC2 soap_int_code(const struct soap_code_map*, const char *str, long other);
1541
SOAP_FMAC1 const char* SOAP_FMAC2 soap_str_code(const struct soap_code_map*, long code);
1543
SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int);
1544
SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*);
1545
SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*);
1547
SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t);
1548
SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*);
1549
SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, void (*fdelete)(struct soap_clist*));
1550
SOAP_FMAC1 void SOAP_FMAC2 soap_unlink(struct soap*, const void*);
1551
SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*);
1553
SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id);
1555
SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k);
1556
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));
1557
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*));
1558
SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, const void *q, size_t n);
1560
SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int);
1561
SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int);
1562
SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *);
1563
SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int);
1564
SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *);
1566
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int);
1567
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int);
1568
SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int);
1569
SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int);
1570
SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int);
1572
SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*);
1574
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new(void);
1575
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new1(int);
1576
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new2(int, int);
1577
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(struct soap*);
1578
SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*,struct soap*);
1579
SOAP_FMAC1 void SOAP_FMAC2 soap_init(struct soap*);
1580
SOAP_FMAC1 void SOAP_FMAC2 soap_init1(struct soap*, int);
1581
SOAP_FMAC1 void SOAP_FMAC2 soap_init2(struct soap*, int, int);
1582
SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*);
1583
SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*);
1584
SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*);
1585
SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*);
1586
SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*);
1589
SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*);
1590
SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*);
1591
SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*);
1592
SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*);
1593
SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int);
1596
SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*);
1598
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_advance(struct soap*);
1599
SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_skip(struct soap*);
1601
SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *);
1602
SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*);
1604
SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*);
1605
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type);
1606
SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset);
1607
SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href);
1608
SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val);
1609
SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type);
1610
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);
1611
SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag);
1612
SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag);
1613
SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag);
1615
SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*);
1617
SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable);
1619
SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag);
1621
SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*);
1623
SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*);
1624
SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*);
1626
SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*);
1628
SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag);
1629
SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long);
1630
SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag);
1631
SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long);
1633
SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, int n1, int n2);
1635
SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, struct Namespace*);
1637
SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*);
1638
SOAP_FMAC1 int SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *);
1640
SOAP_FMAC1 int SOAP_FMAC2 soap_new_block(struct soap*);
1641
SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, size_t);
1642
SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*);
1643
SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, size_t);
1644
SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*);
1645
SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*);
1646
SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*);
1647
SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, char*, int);
1648
SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*);
1650
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*);
1651
SOAP_FMAC1 int soap_envelope_end_out(struct soap*);
1653
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*);
1654
SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*);
1656
SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*);
1657
SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*);
1659
SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*);
1660
SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*);
1662
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*);
1664
SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int);
1666
SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*);
1668
SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*);
1670
SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*);
1671
SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*);
1673
SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*);
1674
SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*);
1675
SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*);
1676
SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*);
1677
SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*);
1678
SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*);
1679
SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*);
1680
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*);
1681
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*);
1682
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*);
1683
SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*);
1684
SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*);
1685
SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*);
1686
SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**);
1687
SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**);
1689
SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, size_t);
1691
SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char);
1692
SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short);
1693
SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int);
1694
SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long);
1695
SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64);
1696
SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float);
1697
SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double);
1698
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char);
1699
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short);
1700
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int);
1701
SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long);
1702
SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64);
1703
SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t);
1704
SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*);
1706
SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, size_t*);
1708
SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int);
1709
SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int);
1710
SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int);
1711
SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int);
1712
SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int);
1713
SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int);
1714
SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int);
1715
SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int);
1716
SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int);
1717
SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int);
1718
SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int);
1719
SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int);
1720
SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int);
1721
SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long);
1722
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long);
1723
SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p);
1724
SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p);
1726
SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int);
1727
SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int);
1728
SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int);
1729
SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int);
1730
SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int);
1731
SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int);
1732
SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int);
1733
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int);
1734
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int);
1735
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int);
1736
SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int);
1737
SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int);
1738
SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int);
1739
SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int);
1740
SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int);
1741
SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p);
1742
SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p);
1745
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);
1746
SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, long);
1747
SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*);
1748
SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*);
1749
SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*);
1750
SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*);
1751
SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*);
1752
SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*);
1753
SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*);
1754
SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*);
1755
SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*);
1756
SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*);
1757
SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*);
1758
SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start);
1759
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*);
1760
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*);
1761
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);
1762
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);
1763
SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
1766
SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*);
1767
SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*);
1769
SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag);
1770
SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value);
1771
SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap);
1774
SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_cookie(const char*, char*, size_t);
1775
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*);
1776
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*);
1777
SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*);
1778
SOAP_FMAC1 extern long SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*);
1779
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*);
1780
SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*);
1781
SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*);
1782
SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*);
1783
SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*);
1784
SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*);
1785
SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*);