VirtualBox

source: vbox/trunk/src/VBox/Main/webservice/gsoap/stdsoap2.h@ 16385

Last change on this file since 16385 was 16120, checked in by vboxsync, 16 years ago

export webservices to OSE

  • Property svn:eol-style set to native
File size: 74.9 KB
Line 
1/*
2
3stdsoap2.h 2.7.9e
4
5gSOAP runtime
6
7gSOAP XML Web services tools
8Copyright (C) 2000-2007, Robert van Engelen, Genivia Inc., All Rights Reserved.
9This part of the software is released under one of the following licenses:
10GPL, the gSOAP public license, or Genivia's license for commercial use.
11--------------------------------------------------------------------------------
12Contributors:
13
14Wind River Systems, Inc., for the following additions (marked WR[...]):
15 - vxWorks compatible
16--------------------------------------------------------------------------------
17gSOAP public license.
18
19The 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
21License. You may obtain a copy of the License at
22http://www.cs.fsu.edu/~engelen/soaplicense.html
23Software distributed under the License is distributed on an "AS IS" basis,
24WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
25for the specific language governing rights and limitations under the License.
26
27The Initial Developer of the Original Code is Robert A. van Engelen.
28Copyright (C) 2000-2007, Robert van Engelen, Genivia Inc., All Rights Reserved.
29--------------------------------------------------------------------------------
30GPL license.
31
32This program is free software; you can redistribute it and/or modify it under
33the terms of the GNU General Public License as published by the Free Software
34Foundation; either version 2 of the License, or (at your option) any later
35version.
36
37This program is distributed in the hope that it will be useful, but WITHOUT ANY
38WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
39PARTICULAR PURPOSE. See the GNU General Public License for more details.
40
41You should have received a copy of the GNU General Public License along with
42this program; if not, write to the Free Software Foundation, Inc., 59 Temple
43Place, Suite 330, Boston, MA 02111-1307 USA
44
45Author contact information:
46[email protected] / [email protected]
47--------------------------------------------------------------------------------
48A commercial use license is available from Genivia, Inc., [email protected]
49--------------------------------------------------------------------------------
50*/
51
52#ifdef WITH_SOAPDEFS_H
53# include "soapdefs.h" /* include user-defined stuff */
54#endif
55
56#ifndef _THREAD_SAFE
57# define _THREAD_SAFE
58#endif
59
60#ifndef OPENSERVER
61# ifndef _REENTRANT
62# define _REENTRANT
63# endif
64#endif
65
66#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */
67# define SOAP_FMAC1
68#endif
69
70#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */
71# define SOAP_FMAC2
72#endif
73
74#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */
75# define SOAP_FMAC3
76#endif
77
78#ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */
79# define SOAP_FMAC3S SOAP_FMAC3
80#endif
81
82#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */
83# define SOAP_FMAC4
84#endif
85
86#ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */
87# define SOAP_FMAC4S SOAP_FMAC4
88#endif
89
90#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */
91# define SOAP_FMAC5
92#endif
93
94#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */
95# define SOAP_FMAC6
96#endif
97
98#ifndef SOAP_CMAC /* class declaration macro */
99# define SOAP_CMAC
100#endif
101
102#ifndef SOAP_NMAC /* namespace table declaration macro */
103# define SOAP_NMAC
104#endif
105
106#ifndef SOAP_SOURCE_STAMP
107# define SOAP_SOURCE_STAMP(str)
108#endif
109
110/* gSOAP 2.7.4 and higher: fast look-aside buffering is stable */
111#ifndef WITH_FAST
112# define WITH_FAST
113#endif
114
115#ifdef WITH_LEANER
116# ifndef WITH_LEAN
117# define WITH_LEAN
118# endif
119#endif
120
121#ifdef WITH_LEAN
122# ifdef WITH_COOKIES
123# error "Cannot build WITH_LEAN code WITH_COOKIES enabled"
124# endif
125#endif
126
127#ifndef STDSOAP_H
128#define STDSOAP_H
129
130#if defined(__vxworks) || defined(__VXWORKS__)
131# define VXWORKS
132#endif
133
134#ifdef _WIN32
135# ifndef WIN32
136# define WIN32
137# endif
138#endif
139
140#ifdef _WIN32_WCE
141# ifndef UNDER_CE
142# define UNDER_CE _WIN32_WCE
143# endif
144#endif
145
146#ifdef UNDER_CE
147# ifndef WIN32
148# define WIN32
149# endif
150#endif
151
152#ifdef __BORLANDC__
153# ifdef __WIN32__
154# ifndef WIN32
155# define WIN32
156# endif
157# endif
158#endif
159
160#ifdef __CYGWIN__
161# ifndef CYGWIN
162# define CYGWIN
163# endif
164#endif
165
166#ifdef __SYMBIAN32__
167# define SYMBIAN
168# undef WIN32
169#endif
170
171#if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__)
172# ifndef PALM
173# define PALM
174# endif
175#endif
176
177#if defined(__hpux)
178# ifndef HP_UX
179# define HP_UX
180# endif
181#endif
182
183#if defined(__digital__) && defined(__unix__)
184# ifndef TRU64
185# define TRU64
186# endif
187#endif
188
189#ifdef __MVS__
190# ifndef OS390
191# define OS390
192# endif
193#endif
194
195#ifdef HAVE_CONFIG_H
196# include "config.h"
197# ifdef WITH_OPENSSL
198# ifndef HAVE_OPENSSL_SSL_H
199# undef WITH_OPENSSL
200# endif
201# endif
202#else
203# if defined(UNDER_CE)
204# define WITH_LEAN
205# define HAVE_SSCANF
206# elif defined(WIN32)
207# define HAVE_STRRCHR
208# define HAVE_STRTOD
209# define HAVE_SSCANF
210# define HAVE_STRTOL
211# define HAVE_STRTOUL
212# define HAVE_SYS_TIMEB_H
213# define HAVE_FTIME
214# define HAVE_WCTOMB
215# define HAVE_MBTOWC
216# define SOAP_LONG_FORMAT "%I64d"
217# define SOAP_ULONG_FORMAT "%I64u"
218# elif defined(CYGWIN)
219# define HAVE_STRRCHR
220# define HAVE_STRTOD
221# define HAVE_SSCANF
222# define HAVE_STRTOL
223# define HAVE_STRTOUL
224# define HAVE_SYS_TIMEB_H
225# define HAVE_FTIME
226# define HAVE_RAND_R
227# define HAVE_GMTIME_R
228# define HAVE_LOCALTIME_R
229# define HAVE_WCTOMB
230# define HAVE_MBTOWC
231# elif defined(__APPLE__)
232# define HAVE_STRRCHR
233# define HAVE_STRTOD
234# define HAVE_SSCANF
235# define HAVE_STRTOL
236# define HAVE_STRTOUL
237# define HAVE_RAND_R
238# define HAVE_GMTIME_R
239# define HAVE_LOCALTIME_R
240# define HAVE_TIMEGM
241# define HAVE_WCTOMB
242# define HAVE_MBTOWC
243# elif defined(_AIXVERSION_431)
244# define HAVE_STRRCHR
245# define HAVE_STRTOD
246# define HAVE_SSCANF
247# define HAVE_STRTOL
248# define HAVE_STRTOUL
249# define HAVE_SYS_TIMEB_H
250# define HAVE_FTIME
251# define HAVE_RAND_R
252# define HAVE_GMTIME_R
253# define HAVE_LOCALTIME_R
254# define HAVE_WCTOMB
255# define HAVE_MBTOWC
256# elif defined(HP_UX)
257# define HAVE_STRRCHR
258# define HAVE_STRTOD
259# define HAVE_SSCANF
260# define HAVE_STRTOL
261# define HAVE_STRTOUL
262# define HAVE_SYS_TIMEB_H
263# define HAVE_FTIME
264# define HAVE_RAND_R
265# define HAVE_GMTIME_R
266# define HAVE_LOCALTIME_R
267# define HAVE_WCTOMB
268# define HAVE_MBTOWC
269# elif defined(FREEBSD) || defined(__FreeBSD__)
270# define HAVE_STRRCHR
271# define HAVE_STRTOD
272# define HAVE_SSCANF
273# define HAVE_STRTOL
274# define HAVE_STRTOUL
275# define HAVE_STRTOLL
276# define HAVE_STRTOULL
277# define HAVE_GETTIMEOFDAY
278# define HAVE_RAND_R
279# define HAVE_GMTIME_R
280# define HAVE_LOCALTIME_R
281# define HAVE_WCTOMB
282# define HAVE_MBTOWC
283# define SOAP_LONG_FORMAT "%qd"
284# define SOAP_ULONG_FORMAT "%qu"
285# elif defined(__VMS)
286# define HAVE_STRRCHR
287# define HAVE_STRTOD
288# define HAVE_SSCANF
289# define HAVE_STRTOL
290# define HAVE_STRTOUL
291# define HAVE_SYS_TIMEB_H
292# define HAVE_FTIME
293# define HAVE_RAND_R
294# define HAVE_GMTIME_R
295# define HAVE_LOCALTIME_R
296# define HAVE_WCTOMB
297# define HAVE_MBTOWC
298# elif defined(__GLIBC__) || defined(__GNU__)
299# define HAVE_STRRCHR
300# define HAVE_STRTOD
301# define HAVE_SSCANF
302# define HAVE_STRTOL
303# define HAVE_STRTOUL
304# define HAVE_STRTOLL
305# define HAVE_STRTOULL
306# define HAVE_SYS_TIMEB_H
307# define HAVE_FTIME
308# define HAVE_RAND_R
309# define HAVE_GMTIME_R
310# define HAVE_LOCALTIME_R
311# define HAVE_TIMEGM
312# define HAVE_WCTOMB
313# define HAVE_MBTOWC
314# define HAVE_ISNAN
315# elif defined(TRU64)
316# define HAVE_STRRCHR
317# define HAVE_STRTOD
318# define HAVE_SSCANF
319# define HAVE_STRTOL
320# define HAVE_STRTOUL
321# define HAVE_GETTIMEOFDAY
322# define HAVE_SYS_TIMEB_H
323# define HAVE_RAND_R
324# define HAVE_GMTIME_R
325# define HAVE_LOCALTIME_R
326# define __USE_STD_IOSTREAM
327# define HAVE_WCTOMB
328# define HAVE_MBTOWC
329# define SOAP_LONG_FORMAT "%ld"
330# define SOAP_ULONG_FORMAT "%lu"
331# elif defined(MAC_CARBON)
332# define WITH_NOIO
333# define HAVE_STRRCHR
334# define HAVE_STRTOD
335# define HAVE_SSCANF
336# define HAVE_STRTOL
337# define HAVE_STRTOUL
338# define HAVE_FTIME
339# define HAVE_RAND_R
340# define HAVE_GETHOSTBYNAME_R
341# define HAVE_GMTIME_R
342# define HAVE_LOCALTIME_R
343# define HAVE_WCTOMB
344# define HAVE_MBTOWC
345# elif defined(PALM)
346# define WITH_LEAN
347# define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */
348# include <stdlib.h> /* Needs to be included before unix headers */
349# include <sys_types.h>
350# define IGNORE_STDIO_STUBS
351# include <StdIOPalm.h>
352# define O_NONBLOCK FNONBIO
353# include <sys_socket.h>
354# include "palmFunctions.h"
355# elif defined(SYMBIAN)
356# define WITH_LEAN
357# define WITH_NONAMESPACES
358# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */
359# include <e32def.h>
360# include <sys/ioctl.h>
361# elif defined(VXWORKS)
362# define HAVE_STRRCHR
363# define HAVE_STRTOD
364# define HAVE_SSCANF
365# define HAVE_STRTOL
366# define HAVE_STRTOUL
367# define HAVE_PGMTIME_R
368# define HAVE_PLOCALTIME_R
369# define HAVE_MKTIME
370# elif defined(OS390)
371# define HAVE_STRRCHR
372# define HAVE_STRTOD
373# define HAVE_SSCANF
374# define HAVE_STRTOL
375# define HAVE_STRTOUL
376# define HAVE_SYS_TIMEB_H
377# define HAVE_FTIME
378# define HAVE_RAND_R
379# define HAVE_GMTIME_R
380# define HAVE_LOCALTIME_R
381# define HAVE_WCTOMB
382# define HAVE_MBTOWC
383# elif defined(AS400)
384# define HAVE_STRRCHR
385# define HAVE_STRTOD
386# define HAVE_SSCANF
387# define HAVE_STRTOL
388# define HAVE_STRTOUL
389# define HAVE_SYS_TIMEB_H
390# define HAVE_FTIME
391# define HAVE_RAND_R
392# define HAVE_GMTIME_R
393# define HAVE_LOCALTIME_R
394# define HAVE_WCTOMB
395# define HAVE_MBTOWC
396# elif defined(__QNX__) || defined(QNX)
397/* QNX does not have a working version of strtof */
398# undef HAVE_STRTOF
399# define HAVE_STRRCHR
400# define HAVE_STRTOD
401# define HAVE_SSCANF
402# define HAVE_STRTOL
403# define HAVE_STRTOUL
404# define HAVE_SYS_TIMEB_H
405# define HAVE_FTIME
406# define HAVE_RAND_R
407# define HAVE_GETHOSTBYNAME_R
408# define HAVE_GMTIME_R
409# define HAVE_LOCALTIME_R
410# define HAVE_WCTOMB
411# define HAVE_MBTOWC
412# define LONG64 long
413# define ULONG64 unsigned LONG64
414# define SOAP_LONG_FORMAT "%ld"
415# define SOAP_ULONG_FORMAT "%lu"
416# else
417/* Default asumptions on supported functions */
418# define HAVE_STRRCHR
419# define HAVE_STRTOD
420# define HAVE_SSCANF
421# define HAVE_STRTOL
422# define HAVE_STRTOUL
423# define HAVE_SYS_TIMEB_H
424# define HAVE_FTIME
425# define HAVE_RAND_R
426# define HAVE_GETHOSTBYNAME_R
427# define HAVE_GMTIME_R
428# define HAVE_LOCALTIME_R
429# define HAVE_WCTOMB
430# define HAVE_MBTOWC
431# endif
432#endif
433
434#ifndef WITH_NOSTDLIB
435# include <stdlib.h>
436# ifndef PALM
437# include <stdio.h>
438# include <string.h>
439# endif
440# include <ctype.h>
441# include <limits.h>
442#endif
443
444#if defined(__cplusplus) && !defined(WITH_LEAN)
445# include <string>
446# include <iostream>
447#endif
448
449#ifdef WITH_NOHTTP
450# ifndef WITH_NOIO
451# define WITH_NOIO
452# undef WITH_COOKIES
453# endif
454#endif
455
456#ifndef UNDER_CE
457# ifndef PALM
458# ifndef WITH_NOIO
459# include <errno.h>
460# include <sys/types.h>
461# endif
462# ifndef WITH_LEAN
463# ifdef HAVE_SYS_TIMEB_H
464# include <sys/timeb.h> /* for ftime() */
465# endif
466# include <time.h>
467# endif
468# endif
469#endif
470
471#ifdef OPENSERVER
472# include <sys/socket.h>
473# include <sys/stream.h>
474# include <sys/protosw.h>
475 extern int h_errno;
476#endif
477
478#ifndef WITH_NOIO
479# ifndef WIN32
480# ifndef PALM
481# include <sys/socket.h>
482# ifdef VXWORKS
483# include <sockLib.h>
484# include <selectLib.h>
485# endif
486# ifndef VXWORKS
487# ifndef SYMBIAN
488# include <strings.h>
489# endif
490# endif
491# ifdef SUN_OS
492# include <sys/stream.h> /* SUN */
493# include <sys/socketvar.h> /* SUN < 2.8 (?) */
494# endif
495# ifdef VXWORKS
496# ifdef _WRS_KERNEL
497# include <sys/times.h>
498# endif
499# else
500# include <sys/time.h>
501# endif
502# include <netinet/in.h>
503# ifdef OS390
504# include <netinet/tcp_var.h>
505# else
506# include <netinet/tcp.h> /* TCP_NODELAY */
507# endif
508# include <arpa/inet.h>
509# endif
510# endif
511#endif
512
513#ifdef WITH_FASTCGI
514# include <fcgi_stdio.h>
515#endif
516
517#ifdef WITH_OPENSSL
518# define OPENSSL_NO_KRB5
519# include <openssl/bio.h>
520# include <openssl/err.h>
521# include <openssl/rand.h>
522# include <openssl/ssl.h>
523# include <openssl/x509v3.h>
524# ifndef ALLOW_OLD_VERSIONS
525# if (OPENSSL_VERSION_NUMBER < 0x00905100L)
526# error "Must use OpenSSL 0.9.6 or later"
527# endif
528# endif
529#endif
530
531#ifdef WITH_GZIP
532# ifndef WITH_ZLIB
533# define WITH_ZLIB
534# endif
535#endif
536
537#ifdef WITH_CASEINSENSITIVETAGS
538# define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */
539#else
540# define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */
541#endif
542
543#ifdef WITH_ZLIB
544# include <zlib.h>
545#endif
546
547#ifndef WITH_NOSTDLIB
548# ifndef PALM
549# include <math.h> /* for isnan() */
550# endif
551#endif
552
553/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */
554
555#ifdef __cplusplus
556extern "C" {
557#endif
558
559#ifdef WIN32
560# ifndef UNDER_CE
561# include <io.h>
562# include <fcntl.h>
563# endif
564# include <winsock.h>
565/* # include <winsock2.h> */ /* Alternative: use winsock2 (not available with eVC) */
566# ifdef WITH_IPV6
567# include <ws2tcpip.h>
568# include <wspiapi.h>
569# endif
570#else
571# ifdef VXWORKS
572# include <hostLib.h>
573# include <ioctl.h>
574# include <ioLib.h>
575# endif
576# ifndef WITH_NOIO
577# ifndef PALM
578# include <netdb.h>
579# include <netinet/in.h>
580# include <unistd.h>
581# include <fcntl.h>
582# endif
583# endif
584#endif
585
586/* Portability: define SOAP_SOCKLEN_T */
587#if defined(_AIX)
588# define SOAP_SOCKLEN_T socklen_t
589#elif defined(SOCKLEN_T)
590# define SOAP_SOCKLEN_T SOCKLEN_T
591#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(__QNX__) || defined(QNX)
592# define SOAP_SOCKLEN_T socklen_t
593#elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(HP_UX) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS)
594# define SOAP_SOCKLEN_T int
595#else
596# define SOAP_SOCKLEN_T size_t
597#endif
598
599#ifndef SOAP_SOCKET
600# ifdef WIN32
601# define SOAP_SOCKET SOCKET
602# define soap_closesocket(n) closesocket(n)
603# else
604# define SOAP_SOCKET int
605# define soap_closesocket(n) close(n)
606# endif
607#endif
608
609#define SOAP_INVALID_SOCKET (-1)
610#define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET)
611
612#ifndef FD_SETSIZE
613# define FD_SETSIZE (1024)
614#endif
615
616#if defined(SYMBIAN)
617# define LONG64 long
618# define ULONG64 unsigned LONG64
619#elif !defined(WIN32) || defined(CYGWIN) || defined(__GLIBC__) || defined(__GNU__)
620# ifndef LONG64
621# if defined(__GLIBC__)
622# include <bits/wordsize.h>
623# if (__WORDSIZE == 64)
624# define LONG64 int64_t
625# define ULONG64 uint64_t
626# ifndef SOAP_LONG_FORMAT
627# define SOAP_LONG_FORMAT "%ld"
628# endif
629# ifndef SOAP_ULONG_FORMAT
630# define SOAP_ULONG_FORMAT "%lu"
631# endif
632# else
633# define LONG64 long long
634# define ULONG64 unsigned LONG64
635# endif
636# else
637# define LONG64 long long
638# define ULONG64 unsigned LONG64
639# endif
640# endif
641#elif defined(UNDER_CE)
642# define LONG64 __int64
643# define ULONG64 unsigned LONG64
644#elif defined(__BORLANDC__)
645# define LONG64 __int64
646# define ULONG64 unsigned LONG64
647#endif
648
649#ifndef SOAP_LONG_FORMAT
650# define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */
651#endif
652
653#ifndef SOAP_ULONG_FORMAT
654# define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */
655#endif
656
657#if defined(WIN32) && !defined(CYGWIN)
658# define soap_int32 __int32
659#elif defined(SYMBIAN)
660# define soap_int32 long
661#elif defined(PALM)
662# define soap_int32 Int32
663#else
664# define soap_int32 int32_t
665#endif
666
667#ifdef WIN32
668# define SOAP_ERANGE ERANGE
669# define SOAP_EINTR WSAEINTR
670# define SOAP_EAGAIN WSAEWOULDBLOCK
671# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
672# define SOAP_EINPROGRESS WSAEINPROGRESS
673# define SOAP_EADDRINUSE WSAEADDRINUSE
674#else
675# define SOAP_ERANGE ERANGE
676# define SOAP_EINTR EINTR
677# define SOAP_EAGAIN EAGAIN
678# define SOAP_EADDRINUSE EADDRINUSE
679# ifdef SYMBIAN
680# define SOAP_EWOULDBLOCK 9898
681# define SOAP_EINPROGRESS 9899
682# else
683# define SOAP_EWOULDBLOCK EWOULDBLOCK
684# define SOAP_EINPROGRESS EINPROGRESS
685# endif
686#endif
687
688#ifdef WIN32
689# ifdef UNDER_CE
690# define soap_errno GetLastError()
691# define soap_socket_errno(s) GetLastError()
692# define soap_reset_errno SetLastError(0)
693# else
694# define soap_errno GetLastError()
695# define soap_socket_errno(s) WSAGetLastError()
696# define soap_reset_errno SetLastError(0)
697# endif
698#else
699# ifndef WITH_NOIO
700# define soap_errno errno
701# define soap_socket_errno(s) errno
702# define soap_reset_errno (errno = 0)
703# else
704# define soap_errno 0
705# define soap_socket_errno(s) 0
706# define soap_reset_errno
707# endif
708#endif
709
710#ifndef SOAP_BUFLEN
711# ifdef WITH_UDP
712# define SOAP_BUFLEN (65536) /* max UDP packet size */
713# else
714# ifndef WITH_LEAN
715# define SOAP_BUFLEN (65536) /* buffer length for socket packets, also used by gethostbyname_r so don't make this too small */
716# else
717# define SOAP_BUFLEN (2048)
718# endif
719# endif
720#endif
721#ifndef SOAP_LABLEN
722# define SOAP_LABLEN (256) /* initial look-aside buffer length */
723#endif
724#ifndef SOAP_PTRBLK
725# define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */
726#endif
727#ifndef SOAP_PTRHASH
728# ifndef WITH_LEAN
729# define SOAP_PTRHASH (1024) /* size of pointer analysis hash table (must be power of 2) */
730# else
731# define SOAP_PTRHASH (32)
732# endif
733#endif
734#ifndef SOAP_IDHASH
735# ifndef WITH_LEAN
736# define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */
737# else
738# define SOAP_IDHASH (19) /* 19, 199 */
739# endif
740#endif
741#ifndef SOAP_BLKLEN
742# ifndef WITH_LEAN
743# define SOAP_BLKLEN (256) /* size of blocks to collect long strings and XML attributes */
744# else
745# define SOAP_BLKLEN (32)
746# endif
747#endif
748#ifndef SOAP_TAGLEN
749# ifndef WITH_LEAN
750# define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */
751# else
752# define SOAP_TAGLEN (64)
753# endif
754#endif
755#ifndef SOAP_HDRLEN
756# ifndef WITH_LEAN
757# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */
758# else
759# define SOAP_HDRLEN (1024)
760# endif
761#endif
762#ifndef SOAP_MAXDIMS
763# ifndef WITH_LEAN
764# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */
765# else
766# define SOAP_MAXDIMS (4)
767# endif
768#endif
769
770#ifndef SOAP_MAXLOGS
771# define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */
772# define SOAP_INDEX_RECV (0)
773# define SOAP_INDEX_SENT (1)
774# define SOAP_INDEX_TEST (2)
775#endif
776
777#ifndef SOAP_MAXKEEPALIVE
778# define SOAP_MAXKEEPALIVE (100) /* max iterations to keep server connection alive */
779#endif
780
781#ifndef SOAP_MAXARRAYSIZE
782# define SOAP_MAXARRAYSIZE (100000) /* "trusted" max size of inbound SOAP array for compound array allocation */
783#endif
784
785#ifdef VXWORKS
786# ifdef __INCmathh
787# include <private/mathP.h>
788# ifndef HAVE_ISNAN
789# define HAVE_ISNAN
790# endif
791# define soap_isnan(num) isNan(num)
792# endif
793#endif
794
795#ifdef WIN32
796# include <float.h>
797# ifndef HAVE_ISNAN
798# define HAVE_ISNAN
799# endif
800# define soap_isnan(num) _isnan(num)
801#endif
802
803#ifdef SUN_OS
804# define HAVE_ISNAN
805#endif
806
807#ifdef __APPLE__
808# ifdef __cplusplus
809# ifndef isnan
810extern "C" int isnan(double);
811# endif
812# endif
813# define HAVE_ISNAN
814#endif
815
816#if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED))
817# define HAVE_ISNAN
818#endif
819
820extern const struct soap_double_nan { unsigned int n1, n2; } soap_double_nan;
821
822#ifdef VXWORKS
823# ifndef FLT_MAX
824# define FLT_MAX _ARCH_FLT_MAX
825# endif
826# ifndef DBL_MAX
827# define DBL_MAX _ARCH_DBL_MAX
828# endif
829#endif
830
831#ifndef FLT_NAN
832# define FLT_NAN (*(float*)(void*)&soap_double_nan)
833#endif
834
835#ifndef FLT_PINFTY
836# if defined(FLT_MAX)
837# define FLT_PINFTY FLT_MAX
838# elif defined(HUGE_VALF)
839# define FLT_PINFTY (float)HUGE_VALF
840# elif defined(HUGE_VAL)
841# define FLT_PINFTY (float)HUGE_VAL
842# elif defined(FLOAT_MAX)
843# define FLT_PINFTY FLOAT_MAX
844# else
845# define FLT_PINFTY (3.40282347e+38F)
846# endif
847#endif
848
849#ifndef FLT_NINFTY
850# define FLT_NINFTY (-FLT_PINFTY)
851#endif
852
853#ifndef DBL_NAN
854# define DBL_NAN (*(double*)(void*)&soap_double_nan)
855#endif
856
857#ifndef DBL_PINFTY
858# if defined(DBL_MAX)
859# define DBL_PINFTY DBL_MAX
860# elif defined(HUGE_VALF)
861# define DBL_PINFTY (double)HUGE_VALF
862# elif defined(HUGE_VAL)
863# define DBL_PINFTY (double)HUGE_VAL
864# elif defined(DOUBLE_MAX)
865# define DBL_PINFTY DOUBLE_MAX
866# else
867# define DBL_PINFTY (1.7976931348623157e+308)
868# endif
869#endif
870
871#ifndef DBL_NINFTY
872# define DBL_NINFTY (-DBL_PINFTY)
873#endif
874
875#ifndef soap_isnan
876# ifdef HAVE_ISNAN
877# define soap_isnan(n) isnan(n)
878# else
879# define soap_isnan(n) (0)
880# endif
881#endif
882
883#define soap_ispinfd(n) ((n) >= DBL_PINFTY)
884#define soap_ispinff(n) ((n) >= FLT_PINFTY)
885#define soap_isninfd(n) ((n) <= DBL_NINFTY)
886#define soap_isninff(n) ((n) <= FLT_NINFTY)
887
888/* gSOAP error codes */
889
890#define SOAP_EOF EOF
891#define SOAP_ERR EOF
892#define SOAP_OK 0
893#define SOAP_CLI_FAULT 1
894#define SOAP_SVR_FAULT 2
895#define SOAP_TAG_MISMATCH 3
896#define SOAP_TYPE 4
897#define SOAP_SYNTAX_ERROR 5
898#define SOAP_NO_TAG 6
899#define SOAP_IOB 7
900#define SOAP_MUSTUNDERSTAND 8
901#define SOAP_NAMESPACE 9
902#define SOAP_USER_ERROR 10
903#define SOAP_FATAL_ERROR 11
904#define SOAP_FAULT 12
905#define SOAP_NO_METHOD 13
906#define SOAP_NO_DATA 14
907#define SOAP_GET_METHOD 15
908#define SOAP_EOM 16
909#define SOAP_MOE 17
910#define SOAP_NULL 18
911#define SOAP_DUPLICATE_ID 19
912#define SOAP_MISSING_ID 20
913#define SOAP_HREF 21
914#define SOAP_UDP_ERROR 22
915#define SOAP_TCP_ERROR 23
916#define SOAP_HTTP_ERROR 24
917#define SOAP_SSL_ERROR 25
918#define SOAP_ZLIB_ERROR 26
919#define SOAP_DIME_ERROR 27
920#define SOAP_DIME_HREF 28
921#define SOAP_DIME_MISMATCH 29
922#define SOAP_DIME_END 30
923#define SOAP_MIME_ERROR 31
924#define SOAP_MIME_HREF 32
925#define SOAP_MIME_END 33
926#define SOAP_VERSIONMISMATCH 34
927#define SOAP_PLUGIN_ERROR 35
928#define SOAP_DATAENCODINGUNKNOWN 36
929#define SOAP_REQUIRED 37
930#define SOAP_PROHIBITED 38
931#define SOAP_OCCURS 39
932#define SOAP_LENGTH 40
933#define SOAP_FD_EXCEEDED 41
934
935#define soap_xml_error_check(e) ((e) == SOAP_TAG_MISMATCH || (e) == SOAP_TAG_END || (e) == SOAP_SYNTAX_ERROR || (e) == SOAP_NAMESPACE || (e) == SOAP_DUPLICATE_ID || (e) == SOAP_MISSING_ID || (e) == SOAP_REQUIRED || (e) == SOAP_PROHIBITED || (e) == SOAP_OCCURS || (e) == SOAP_LENGTH || (e) == SOAP_NULL || (e) == SOAP_HREF)
936#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)
937#define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR)
938#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR)
939#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR)
940#define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_GET_METHOD || (e) == SOAP_NO_DATA || ((e) >= 100 && (e) < 600))
941
942/* gSOAP HTTP response status codes 100 to 599 are reserved */
943
944/* Codes 600 to 999 are user definable */
945
946/* Exceptional gSOAP HTTP response status codes >= 1000 */
947
948#define SOAP_STOP 1000 /* No HTTP response */
949#define SOAP_FORM 1001 /* Form request/response */
950#define SOAP_HTML 1002 /* Custom HTML response */
951#define SOAP_FILE 1003 /* Custom file-based response */
952
953/* gSOAP HTTP method codes */
954
955#define SOAP_POST 2000
956#define SOAP_GET 2001
957
958/* gSOAP DIME */
959
960#define SOAP_DIME_CF 0x01
961#define SOAP_DIME_ME 0x02
962#define SOAP_DIME_MB 0x04
963#define SOAP_DIME_VERSION 0x08 /* DIME version 1 */
964#define SOAP_DIME_MEDIA 0x10
965#define SOAP_DIME_ABSURI 0x20
966
967/* gSOAP ZLIB */
968
969#define SOAP_ZLIB_NONE 0x00
970#define SOAP_ZLIB_DEFLATE 0x01
971#define SOAP_ZLIB_INFLATE 0x02
972#define SOAP_ZLIB_GZIP 0x02
973
974/* gSOAP transport, connection, and content encoding modes */
975
976typedef soap_int32 soap_mode;
977
978#define SOAP_IO 0x00000003 /* IO mask */
979#define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */
980#define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */
981#define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */
982#define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */
983
984#define SOAP_IO_UDP 0x00000004 /* TCP or UDP */
985
986#define SOAP_IO_LENGTH 0x00000008 /* calc message length (internal) */
987#define SOAP_IO_KEEPALIVE 0x00000010 /* keep connection alive */
988
989#define SOAP_ENC_LATIN 0x00000020 /* accept iso-8859-1 encoding */
990#define SOAP_ENC_XML 0x00000040 /* plain XML encoding, no HTTP header */
991#define SOAP_ENC_DIME 0x00000080
992#define SOAP_ENC_MIME 0x00000100
993#define SOAP_ENC_MTOM 0x00000200
994#define SOAP_ENC_ZLIB 0x00000400
995#define SOAP_ENC_SSL 0x00000800
996
997#define SOAP_ENC 0x00000FFF /* IO and ENC mask */
998
999#define SOAP_XML_STRICT 0x00001000 /* apply strict validation */
1000#define SOAP_XML_INDENT 0x00002000 /* emit indented XML */
1001#define SOAP_XML_CANONICAL 0x00004000 /* EXC C14N canonical XML */
1002#define SOAP_XML_TREE 0x00008000 /* emit XML tree (no id/ref) */
1003#define SOAP_XML_GRAPH 0x00010000
1004#define SOAP_XML_NIL 0x00020000
1005#define SOAP_XML_DOM 0x00040000
1006#define SOAP_XML_SEC 0x00080000 /* reserved for WS security */
1007
1008#define SOAP_C_NOIOB 0x00100000 /* don't fault on array index out of bounds (just ignore) */
1009#define SOAP_C_UTFSTRING 0x00200000 /* (de)serialize strings with UTF8 content */
1010#define SOAP_C_MBSTRING 0x00400000 /* (de)serialize strings with multi-byte content */
1011#define SOAP_C_NILSTRING 0x00800000 /* serialize empty strings as nil (omitted) */
1012
1013#define SOAP_DOM_TREE 0x01000000
1014#define SOAP_DOM_NODE 0x02000000
1015#define SOAP_DOM_ASIS 0x04000000
1016
1017#define SOAP_MIME_POSTCHECK 0x10000000 /* MIME flag (internal) */
1018
1019#define SOAP_IO_DEFAULT SOAP_IO_FLUSH
1020
1021/* SSL client/server authentication settings */
1022
1023#define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */
1024#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */
1025#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */
1026#define SOAP_SSL_SKIP_HOST_CHECK 0x04 /* client does not check the common name of the host in certificate */
1027#define SOAP_SSL_RSA 0x08 /* use RSA */
1028#define SOAP_SSLv3_TLSv1 0x00 /* SSL v3 and TLS v1 support by default */
1029#define SOAP_SSLv3 0x10 /* SSL v3 only */
1030#define SOAP_TLSv1 0x20 /* TLS v1 only */
1031
1032#define SOAP_SSL_DEFAULT (SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_SSLv3_TLSv1)
1033
1034/* state */
1035
1036#define SOAP_INIT 1
1037#define SOAP_COPY 2
1038
1039#define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY))
1040
1041/* part */
1042
1043#define SOAP_BEGIN 0
1044#define SOAP_IN_ENVELOPE 2
1045#define SOAP_IN_HEADER 3
1046#define SOAP_END_HEADER 4
1047#define SOAP_NO_BODY 5
1048#define SOAP_IN_BODY 6
1049#define SOAP_END_BODY 7
1050#define SOAP_END_ENVELOPE 8
1051#define SOAP_END 9
1052#define SOAP_BEGIN_SECURITY 10
1053#define SOAP_IN_SECURITY 11
1054#define SOAP_END_SECURITY 12
1055
1056/* DEBUG macros */
1057
1058#ifndef WITH_LEAN
1059# ifdef DEBUG
1060# ifndef SOAP_DEBUG
1061# define SOAP_DEBUG
1062# endif
1063# ifndef SOAP_MEM_DEBUG
1064# define SOAP_MEM_DEBUG
1065# endif
1066# endif
1067#endif
1068
1069#ifdef SOAP_MEM_DEBUG
1070# ifndef SOAP_MALLOC
1071# define SOAP_MALLOC(soap, size) soap_track_malloc(soap, __FILE__, __LINE__, size)
1072# endif
1073# ifndef SOAP_FREE
1074# define SOAP_FREE(soap, ptr) soap_track_free(soap, __FILE__, __LINE__, ptr)
1075# endif
1076#endif
1077
1078#ifndef SOAP_MALLOC /* use libc malloc */
1079# define SOAP_MALLOC(soap, size) malloc(size)
1080#endif
1081
1082#ifndef SOAP_FREE /* use libc free */
1083# define SOAP_FREE(soap, ptr) free(ptr)
1084#endif
1085
1086#ifdef SOAP_DEBUG
1087# ifndef SOAP_MESSAGE
1088# define SOAP_MESSAGE fprintf
1089# endif
1090# ifndef DBGLOG
1091# define DBGLOG(DBGFILE, CMD) \
1092{ if (soap)\
1093 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
1094 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\
1095 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
1096 { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\
1097 CMD;\
1098 fflush(fdebug);\
1099 }\
1100 }\
1101}
1102# endif
1103# ifndef DBGMSG
1104# define DBGMSG(DBGFILE, MSG, LEN) \
1105{ if (soap)\
1106 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
1107 soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\
1108 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
1109 { fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\
1110 fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\
1111 }\
1112 }\
1113}
1114# endif
1115# ifndef DGBFUN
1116# define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME))
1117# define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT")\n", __FILE__, __LINE__, FNAME, (ARG)))
1118# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2)))
1119# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2", "FMT3")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2), (ARG3)))
1120# endif
1121# ifndef DBGHEX
1122# define DBGHEX(DBGFILE, MSG, LEN) \
1123{ if (soap)\
1124 { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\
1125 soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\
1126 if (soap->fdebug[SOAP_INDEX_##DBGFILE])\
1127 { int i; char *s;\
1128 for (s = (char*)(MSG), i = (LEN); i; i--)\
1129 fprintf(soap->fdebug[SOAP_INDEX_##DBGFILE], "%2.2X ", (int)*s++&0xFF);\
1130 fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\
1131 }\
1132 }\
1133}
1134# endif
1135#else
1136# define DBGLOG(DBGFILE, CMD)
1137# define DBGMSG(DBGFILE, MSG, LEN)
1138# define DBGFUN(FNAME)
1139# define DBGFUN1(FNAME, FMT, ARG)
1140# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2)
1141# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3)
1142# define DBGHEX(DBGFILE, MSG, LEN)
1143#endif
1144
1145/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */
1146typedef soap_int32 soap_wchar;
1147
1148/* namespace table row */
1149struct Namespace
1150{ const char *id;
1151 const char *ns;
1152 const char *in;
1153 char *out;
1154};
1155
1156/* namespace stack */
1157struct soap_nlist
1158{ struct soap_nlist *next;
1159 unsigned int level; /* nesting depth level */
1160 short index; /* corresponding entry in ns mapping table */
1161 char *ns; /* only set when parsed ns URI is not in the ns mapping table */
1162 char id[1]; /* the actual string value flows into the allocated region below this struct */
1163};
1164
1165/* block stack for nested block allocations */
1166struct soap_blist
1167{ struct soap_blist *next;
1168 char *ptr;
1169 size_t size;
1170};
1171
1172/* array layout */
1173struct soap_array
1174{ void *__ptr;
1175 int __size;
1176};
1177
1178/* pointer serialization management */
1179struct soap_plist
1180{ struct soap_plist *next;
1181 const void *ptr;
1182 const struct soap_array *array;
1183 int type;
1184 int id;
1185 char mark1;
1186 char mark2;
1187};
1188
1189/* block allocation for pointer serialization management */
1190struct soap_pblk
1191{ struct soap_pblk *next;
1192 struct soap_plist plist[SOAP_PTRBLK];
1193};
1194
1195#ifdef SOAP_MEM_DEBUG
1196/* malloc/free tracking for debugging */
1197struct soap_mlist
1198{ struct soap_mlist *next;
1199 const void *ptr;
1200 const char *file;
1201 int line;
1202 short live;
1203};
1204#endif
1205
1206/* class allocation list */
1207struct soap_clist
1208{ struct soap_clist *next;
1209 void *ptr;
1210 int type;
1211 int size;
1212 int (*fdelete)(struct soap_clist*);
1213};
1214
1215/* attributes */
1216struct soap_attribute
1217{ struct soap_attribute *next;
1218 char *value;
1219 size_t size;
1220 char *ns;
1221 short visible;
1222 char name[1]; /* the actual name string flows into the allocated region below this struct */
1223};
1224
1225#ifndef WITH_LEAN
1226struct soap_cookie
1227{ struct soap_cookie *next;
1228 char *name;
1229 char *value;
1230 char *domain;
1231 char *path;
1232 time_t expire; /* client-side: local time to expire */
1233 long maxage; /* server-side: seconds to expire */
1234 unsigned int version;
1235 short secure;
1236 short session; /* server-side */
1237 short env; /* server-side: got cookie from client and should not be (re)send */
1238 short modified; /* server-side: client cookie was modified and should be send */
1239};
1240#endif
1241
1242#ifdef __cplusplus
1243SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
1244
1245class soap_multipart_iterator
1246{ public:
1247 struct soap_multipart *content;
1248 bool operator==(const soap_multipart_iterator& iter) const
1249 { return content == iter.content; }
1250 bool operator!=(const soap_multipart_iterator& iter) const
1251 { return content != iter.content; }
1252 struct soap_multipart &operator*() const
1253 { return *content; }
1254 soap_multipart_iterator &operator++()
1255 { content = soap_next_multipart(content); return *this; }
1256 soap_multipart_iterator() : content(NULL)
1257 { }
1258 soap_multipart_iterator(struct soap_multipart *p) : content(p)
1259 { }
1260};
1261#endif
1262
1263#ifndef WITH_LEANER
1264struct soap_dime
1265{ size_t count;
1266 size_t size;
1267 size_t chunksize;
1268 size_t buflen;
1269 char flags;
1270 char *ptr;
1271 const char *id;
1272 const char *type;
1273 const char *options;
1274 struct soap_multipart *list; /* list of DIME attachments received */
1275 struct soap_multipart *first, *last; /* temporary in/out queue */
1276#ifdef __cplusplus
1277 soap_multipart_iterator begin()
1278 { soap_multipart_iterator iter(list); return iter; };
1279 soap_multipart_iterator end()
1280 { soap_multipart_iterator iter(NULL); return iter; };
1281#endif
1282};
1283#endif
1284
1285#ifndef WITH_LEANER
1286struct soap_mime
1287{ char *boundary; /* MIME boundary */
1288 const char *start; /* MIME start ID */
1289 struct soap_multipart *list; /* list of MIME attachments received */
1290 struct soap_multipart *first, *last; /* temporary in/out queue */
1291#ifdef __cplusplus
1292 soap_multipart_iterator begin()
1293 { soap_multipart_iterator iter(list); return iter; };
1294 soap_multipart_iterator end()
1295 { soap_multipart_iterator iter(NULL); return iter; };
1296#endif
1297};
1298#endif
1299
1300#ifndef WITH_LEANER
1301/* RFC2045 MIME content transfer encodings */
1302enum soap_mime_encoding
1303{ SOAP_MIME_NONE,
1304 SOAP_MIME_7BIT,
1305 SOAP_MIME_8BIT,
1306 SOAP_MIME_BINARY,
1307 SOAP_MIME_QUOTED_PRINTABLE,
1308 SOAP_MIME_BASE64,
1309 SOAP_MIME_IETF_TOKEN,
1310 SOAP_MIME_X_TOKEN
1311};
1312#endif
1313
1314#ifndef WITH_LEANER
1315/* DIME/MIME multipart list */
1316struct soap_multipart
1317{ struct soap_multipart *next;
1318 char *ptr; /* points to raw data content */
1319 size_t size; /* size of data content */
1320 const char *id; /* DIME/MIME content ID or form data name */
1321 const char *type; /* DIME/MIME type (MIME type format) */
1322 const char *options; /* DIME options */
1323 enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */
1324 const char *location; /* MIME Content-Location (optional) */
1325 const char *description; /* MIME Content-Description (optional) */
1326#ifdef __cplusplus
1327 typedef soap_multipart_iterator iterator;
1328#endif
1329};
1330#endif
1331
1332#ifndef WITH_LEANER
1333/* attachment DIME and MTOM XOP forwarding */
1334struct soap_xlist
1335{ struct soap_xlist *next;
1336 unsigned char **ptr;
1337 int *size;
1338 char *id;
1339 char **type;
1340 char **options;
1341};
1342#endif
1343
1344/******************************************************************************/
1345
1346#ifndef WITH_LEANER
1347#ifdef __cplusplus
1348class soap_dom_attribute_iterator
1349{ public:
1350 struct soap_dom_attribute *att;
1351 const char *nstr;
1352 const char *name;
1353 bool operator==(const soap_dom_attribute_iterator&) const;
1354 bool operator!=(const soap_dom_attribute_iterator&) const;
1355 struct soap_dom_attribute &operator*() const;
1356 soap_dom_attribute_iterator &operator++();
1357 soap_dom_attribute_iterator();
1358 soap_dom_attribute_iterator(struct soap_dom_attribute*);
1359 ~soap_dom_attribute_iterator();
1360};
1361#endif
1362#endif
1363
1364#ifndef WITH_LEANER
1365struct soap_dom_attribute
1366{ struct soap_dom_attribute *next;
1367 const char *nstr;
1368 char *name;
1369 char *data;
1370 wchar_t *wide;
1371 struct soap *soap;
1372#ifdef __cplusplus
1373 typedef soap_dom_attribute_iterator iterator;
1374 struct soap_dom_attribute &set(const char *nstr, const char *name); /* set namespace and name */
1375 struct soap_dom_attribute &set(const char *data); /* set data */
1376 soap_dom_attribute_iterator begin();
1377 soap_dom_attribute_iterator end();
1378 soap_dom_attribute_iterator find(const char *nstr, const char *name);
1379 void unlink();
1380 soap_dom_attribute();
1381 soap_dom_attribute(struct soap *soap);
1382 soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data);
1383 ~soap_dom_attribute();
1384#endif
1385};
1386#endif
1387
1388#ifndef WITH_LEANER
1389#ifdef __cplusplus
1390class soap_dom_element_iterator
1391{ public:
1392 struct soap_dom_element *elt;
1393 const char *nstr;
1394 const char *name;
1395 int type;
1396 bool operator==(const soap_dom_element_iterator&) const;
1397 bool operator!=(const soap_dom_element_iterator&) const;
1398 struct soap_dom_element &operator*() const;
1399 soap_dom_element_iterator &operator++();
1400 soap_dom_element_iterator();
1401 soap_dom_element_iterator(struct soap_dom_element*);
1402 ~soap_dom_element_iterator();
1403};
1404#endif
1405#endif
1406
1407#ifndef WITH_LEANER
1408struct soap_dom_element
1409{ struct soap_dom_element *next; /* next sibling */
1410 struct soap_dom_element *prnt; /* parent */
1411 struct soap_dom_element *elts; /* list of child elements */
1412 struct soap_dom_attribute *atts; /* list of attributes */
1413 const char *nstr; /* namespace string */
1414 char *name; /* element tag name */
1415 char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */
1416 wchar_t *wide; /* element content data */
1417 int type; /* optional: serialized C/C++ data type */
1418 void *node; /* optional: pointer to serialized C/C++ data */
1419 char *head; /* leading whitespace to start tag */
1420 char *tail; /* leading whitespace to end tag */
1421 struct soap *soap; /* soap context that manages this node */
1422#ifdef __cplusplus
1423 typedef soap_dom_element_iterator iterator;
1424 struct soap_dom_element &set(const char *nstr, const char *name);
1425 struct soap_dom_element &set(const char *data);
1426 struct soap_dom_element &set(void *node, int type);
1427 struct soap_dom_element &add(struct soap_dom_element*);
1428 struct soap_dom_element &add(struct soap_dom_element&);
1429 struct soap_dom_element &add(struct soap_dom_attribute*);
1430 struct soap_dom_element &add(struct soap_dom_attribute&);
1431 soap_dom_element_iterator begin();
1432 soap_dom_element_iterator end();
1433 soap_dom_element_iterator find(const char *nstr, const char *name);
1434 soap_dom_element_iterator find(int type);
1435 void unlink();
1436 soap_dom_element();
1437 soap_dom_element(struct soap *soap);
1438 soap_dom_element(struct soap *soap, const char *nstr, const char *name);
1439 soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data);
1440 soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type);
1441 ~soap_dom_element();
1442#endif
1443};
1444SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(struct soap_dom_element *elt);
1445SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(struct soap_dom_attribute *att);
1446#endif
1447
1448#if defined(__cplusplus) && !defined(WITH_LEAN)
1449}
1450extern std::ostream &operator<<(std::ostream&, const struct soap_dom_element&);
1451extern std::istream &operator>>(std::istream&, struct soap_dom_element&);
1452extern "C" {
1453#endif
1454
1455/******************************************************************************/
1456
1457#ifdef WIN32
1458# ifdef SOAP_STD_EXPORTS
1459# define SOAP_STD_API __declspec(dllexport)
1460# else
1461# define SOAP_STD_API
1462# endif
1463#else
1464# define SOAP_STD_API
1465#endif
1466
1467struct SOAP_STD_API soap
1468{ short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */
1469 short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */
1470 soap_mode mode;
1471 soap_mode imode;
1472 soap_mode omode;
1473 const char *float_format; /* user-definable format string for floats (<1024 chars) */
1474 const char *double_format; /* user-definable format string for doubles (<1024 chars) */
1475 const char *dime_id_format; /* user-definable format string for integer DIME id (<SOAP_TAGLEN chars) */
1476 const char *http_version; /* HTTP version used "1.0" or "1.1" */
1477 const char *http_content; /* optional custom response content type (with SOAP_FILE) */
1478 const char *encodingStyle; /* default = NULL which means that SOAP encoding is used */
1479 const char *actor; /* SOAP-ENV:actor or role attribute value */
1480 int recv_timeout; /* when > 0, gives socket recv timeout in seconds, < 0 in usec */
1481 int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */
1482 int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */
1483 int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */
1484 int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */
1485 int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */
1486 int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */
1487 int accept_flags; /* accept() SOL_SOCKET sockopt flags */
1488 const struct Namespace *namespaces; /* Pointer to global namespace mapping table */
1489 struct Namespace *local_namespaces; /* Local namespace mapping table */
1490 struct soap_nlist *nlist; /* namespace stack */
1491 struct soap_blist *blist; /* block allocation stack */
1492 struct soap_clist *clist; /* class instance allocation list */
1493 void *alist; /* memory allocation (malloc) list */
1494 struct soap_ilist *iht[SOAP_IDHASH];
1495 struct soap_plist *pht[SOAP_PTRHASH];
1496 struct soap_pblk *pblk; /* plist block allocation */
1497 short pidx; /* plist block allocation */
1498 struct SOAP_ENV__Header *header;
1499 struct SOAP_ENV__Fault *fault;
1500 int idnum;
1501 void *user; /* to pass user-defined data */
1502 struct soap_plugin *plugins; /* linked list of plug-in data */
1503 char *userid; /* HTTP Basic authorization userid */
1504 char *passwd; /* HTTP Basic authorization passwd */
1505 int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t);
1506 int (*fget)(struct soap*);
1507 int (*fform)(struct soap*);
1508 int (*fposthdr)(struct soap*, const char*, const char*);
1509 int (*fresponse)(struct soap*, int, size_t);
1510 int (*fparse)(struct soap*);
1511 int (*fparsehdr)(struct soap*, const char*, const char*);
1512 int (*fheader)(struct soap*);
1513 int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr);
1514 int (*fconnect)(struct soap*, const char*, const char*, int);
1515 int (*fdisconnect)(struct soap*);
1516 int (*fclosesocket)(struct soap*, SOAP_SOCKET);
1517 int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int);
1518 int (*fopen)(struct soap*, const char*, const char*, int);
1519 int (*faccept)(struct soap*, int, struct sockaddr*, int *n);
1520 int (*fclose)(struct soap*);
1521 int (*fsend)(struct soap*, const char*, size_t);
1522 size_t (*frecv)(struct soap*, char*, size_t);
1523 int (*fpoll)(struct soap*);
1524 void (*fseterror)(struct soap*, const char **c, const char **s);
1525 int (*fignore)(struct soap*, const char*);
1526 int (*fserveloop)(struct soap*);
1527 void *(*fplugin)(struct soap*, const char*);
1528 void *(*fmalloc)(struct soap*, size_t);
1529#ifndef WITH_LEANER
1530 int (*fprepareinit)(struct soap*);
1531 int (*fpreparesend)(struct soap*, const char*, size_t);
1532 int (*fpreparerecv)(struct soap*, const char*, size_t);
1533 int (*fpreparefinal)(struct soap*);
1534 void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*);
1535 void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*);
1536 void (*fdimereadclose)(struct soap*, void*);
1537 void (*fdimewriteclose)(struct soap*, void*);
1538 size_t (*fdimeread)(struct soap*, void*, char*, size_t);
1539 int (*fdimewrite)(struct soap*, void*, const char*, size_t);
1540 void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*);
1541 void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding);
1542 void (*fmimereadclose)(struct soap*, void*);
1543 void (*fmimewriteclose)(struct soap*, void*);
1544 size_t (*fmimeread)(struct soap*, void*, char*, size_t);
1545 int (*fmimewrite)(struct soap*, void*, const char*, size_t);
1546#endif
1547 int master;
1548 int socket;
1549#if defined(__cplusplus) && !defined(WITH_LEAN)
1550 std::ostream *os;
1551 std::istream *is;
1552#else
1553 void *os; /* preserve alignment */
1554 void *is; /* preserve alignment */
1555#endif
1556#ifndef UNDER_CE
1557 int sendfd;
1558 int recvfd;
1559#else
1560 FILE *sendfd;
1561 FILE *recvfd;
1562#endif
1563 size_t bufidx; /* index in soap.buf[] */
1564 size_t buflen; /* length of soap.buf[] content */
1565 soap_wchar ahead; /* parser lookahead */
1566 short cdata; /* CDATA parser state */
1567 short body; /* parsed XML element has a body or not */
1568 unsigned int level; /* XML nesting level */
1569 size_t count; /* message length counter */
1570 size_t length; /* message length as set by HTTP header */
1571 char *labbuf; /* look-aside buffer */
1572 size_t lablen; /* look-aside buffer allocated length */
1573 size_t labidx; /* look-aside buffer index to available part */
1574 char buf[SOAP_BUFLEN];/* send and receive buffer */
1575 char msgbuf[1024]; /* in/output buffer for messages >=1024 bytes */
1576 char tmpbuf[1024]; /* in/output buffer for HTTP/MIME headers, simpleType values, attribute names, and DIME must be >=1024 bytes */
1577 char tag[SOAP_TAGLEN];
1578 char id[SOAP_TAGLEN];
1579 char href[SOAP_TAGLEN];
1580 char type[SOAP_TAGLEN];
1581 char arrayType[SOAP_TAGLEN];
1582 char arraySize[SOAP_TAGLEN];
1583 char arrayOffset[SOAP_TAGLEN];
1584 short other;
1585 short position;
1586 int positions[SOAP_MAXDIMS];
1587 short root;
1588 struct soap_attribute *attributes; /* attribute list */
1589 short encoding; /* when set, output encodingStyle */
1590 short mustUnderstand; /* a mustUnderstand element was parsed or is output */
1591 short keep_alive; /* connection should be kept open */
1592 short null; /* parsed XML is xsi:nil */
1593 short ns; /* when not set, output full xmlns bindings */
1594 short part; /* parsing state */
1595 short alloced;
1596 short peeked;
1597 size_t chunksize;
1598 size_t chunkbuflen;
1599 char endpoint[SOAP_TAGLEN];
1600 char path[SOAP_TAGLEN];
1601 char host[SOAP_TAGLEN];
1602 char *action;
1603 char *authrealm; /* HTTP authentication realm */
1604 char *prolog; /* XML declaration prolog */
1605 unsigned long ip; /* IP number */
1606 int port; /* port number */
1607 unsigned int max_keep_alive;
1608 const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */
1609 const char *proxy_host; /* Proxy Server host name */
1610 int proxy_port; /* Proxy Server port (default = 8080) */
1611 const char *proxy_userid; /* Proxy Authorization user name */
1612 const char *proxy_passwd; /* Proxy Authorization password */
1613 int status; /* -1 when request, else error code to be returned by server */
1614 int error;
1615 int errmode;
1616 int errnum;
1617#ifndef WITH_LEANER
1618 struct soap_dom_element *dom;
1619 struct soap_dime dime;
1620 struct soap_mime mime;
1621 struct soap_xlist *xlist;
1622#endif
1623#if !defined(WITH_LEAN) || defined(SOAP_DEBUG)
1624 const char *logfile[SOAP_MAXLOGS];
1625 FILE *fdebug[SOAP_MAXLOGS];
1626 struct soap_mlist *mht[SOAP_PTRHASH];
1627#endif
1628#ifndef WITH_LEAN
1629 const char *c14ninclude;
1630 const char *c14nexclude;
1631 struct soap_cookie *cookies;
1632 const char *cookie_domain;
1633 const char *cookie_path;
1634 int cookie_max;
1635#endif
1636#ifndef WITH_NOIO
1637#ifdef WITH_IPV6
1638 struct sockaddr_storage peer; /* IPv6: set by soap_accept and by UDP recv */
1639#else
1640 struct sockaddr_in peer; /* IPv4: set by soap_connect/soap_accept and by UDP recv */
1641#endif
1642#endif
1643 size_t peerlen;
1644#ifdef WITH_OPENSSL
1645 int (*fsslauth)(struct soap*);
1646 int (*fsslverify)(int, X509_STORE_CTX*);
1647 BIO *bio;
1648 SSL *ssl;
1649 SSL_CTX *ctx;
1650 unsigned short ssl_flags;
1651 const char *keyfile;
1652 const char *password;
1653 const char *dhfile;
1654 const char *cafile;
1655 const char *capath;
1656 const char *crlfile;
1657 const char *randfile;
1658 SSL_SESSION *session;
1659 char session_host[SOAP_TAGLEN];
1660 int session_port;
1661#endif
1662#ifdef WITH_ZLIB
1663 short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */
1664 short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1665 short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */
1666 z_stream d_stream; /* decompression stream */
1667 char z_buf[SOAP_BUFLEN]; /* buffer */
1668 size_t z_buflen;
1669 unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */
1670 uLong z_crc; /* internal gzip crc */
1671 float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */
1672 float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */
1673#endif
1674#ifdef WMW_RPM_IO
1675 void *rpmreqid;
1676#endif
1677#ifndef WITH_LEAN
1678#ifdef __cplusplus
1679 soap();
1680 soap(soap_mode);
1681 soap(soap_mode, soap_mode);
1682 soap(struct soap&);
1683 ~soap();
1684#endif
1685#endif
1686};
1687
1688struct soap_code_map
1689{ long code;
1690 const char *string;
1691};
1692
1693/* forwarding list */
1694struct soap_flist
1695{ struct soap_flist *next;
1696 int type;
1697 void *ptr;
1698 unsigned int level;
1699 size_t len;
1700 void (*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t);
1701};
1702
1703/* id-ref forwarding list */
1704struct soap_ilist
1705{ struct soap_ilist *next;
1706 int type;
1707 size_t size;
1708 void *link;
1709 void *copy;
1710 struct soap_flist *flist;
1711 void *ptr;
1712 unsigned int level;
1713 char id[1]; /* the actual id string value flows into the allocated region below this struct */
1714};
1715
1716struct soap_plugin
1717{ struct soap_plugin *next;
1718 const char *id;
1719 void *data;
1720 int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src);
1721 void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */
1722};
1723
1724#ifndef WITH_NONAMESPACES
1725extern SOAP_NMAC struct Namespace namespaces[];
1726#endif
1727
1728#ifndef WITH_LEAN
1729# define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx])
1730# define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++])
1731#else
1732soap_wchar soap_get0(struct soap*);
1733soap_wchar soap_get1(struct soap*);
1734#endif
1735
1736#define soap_revget1(soap) ((soap)->bufidx--)
1737#define soap_unget(soap, c) ((soap)->ahead = c)
1738#define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL)
1739#define soap_imode(soap, n) ((soap)->mode = (soap)->imode = (n))
1740#define soap_set_imode(soap, n) ((soap)->imode |= (n))
1741#define soap_clr_imode(soap, n) ((soap)->imode &= ~(n))
1742#define soap_omode(soap, n) ((soap)->mode = (soap)->omode = (n))
1743#define soap_set_omode(soap, n) ((soap)->omode |= (n))
1744#define soap_clr_omode(soap, n) ((soap)->omode &= ~(n))
1745#define soap_set_mode(soap, n) ((soap)->imode |= (n), (soap)->omode |= (n))
1746#define soap_clr_mode(soap, n) ((soap)->imode &= ~(n), (soap)->omode &= ~(n))
1747#define soap_destroy(soap) soap_delete((soap), NULL)
1748
1749#ifdef HAVE_STRRCHR
1750# define soap_strrchr(s, t) strrchr(s, t)
1751#else
1752 SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t);
1753#endif
1754
1755#ifdef HAVE_STRTOL
1756# define soap_strtol(s, t, b) strtol(s, t, b)
1757#else
1758 SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b);
1759#endif
1760
1761#ifdef HAVE_STRTOUL
1762# define soap_strtoul(s, t, b) strtoul(s, t, b)
1763#else
1764 SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b);
1765#endif
1766
1767#if defined(WITH_OPENSSL)
1768# define soap_random soap_rand()
1769SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void);
1770#elif defined(HAVE_RANDOM)
1771# define soap_random (int)random()
1772#else
1773# define soap_random rand()
1774#endif
1775
1776#ifdef WITH_NOIDREF
1777# define soap_embedded(s, p, t) (0)
1778# define soap_id_lookup(s, i, p, t, n, k) (p)
1779# define soap_id_forward(s, h, p, len, st, tt, n, k, fc) (p)
1780# define soap_reference(s, a, t) (1)
1781# define soap_array_reference(s, p, a, n, t) (1)
1782# define soap_embed(s, p, a, n, t, pp) (0)
1783# define soap_embedded_id(s, i, p, t) (i)
1784# define soap_is_embedded(s, p) (0)
1785# define soap_is_single(s, p) (1)
1786# define soap_lookup_type(s, i) (0)
1787# define soap_getindependent(s) (0)
1788# define soap_putindependent(s) (0)
1789# define soap_getelement(s, n) (n)
1790# define soap_putelement(s, p, t, i, n) (0)
1791# define soap_markelement(s, p, n) (0)
1792#endif
1793
1794SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap*);
1795SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultcode(struct soap*);
1796SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultsubcode(struct soap*);
1797SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultstring(struct soap*);
1798SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultdetail(struct soap*);
1799SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*);
1800SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*);
1801SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*);
1802SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap*);
1803SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*);
1804SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*);
1805
1806SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_init(void);
1807SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*);
1808SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*);
1809SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*);
1810SOAP_FMAC1 int SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int);
1811SOAP_FMAC1 int SOAP_FMAC2 soap_accept(struct soap*);
1812SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*);
1813SOAP_FMAC1 const char * SOAP_FMAC2 soap_ssl_error(struct soap*, int);
1814
1815SOAP_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*);
1816SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*);
1817
1818SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count);
1819
1820SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*);
1821SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*);
1822SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*);
1823
1824SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*);
1825SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*);
1826SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t);
1827SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*);
1828SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*);
1829SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*);
1830SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*);
1831SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*);
1832SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*);
1833SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*);
1834SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*);
1835SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*);
1836SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int);
1837SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int);
1838
1839SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t);
1840SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*);
1841SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*);
1842SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*);
1843SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*);
1844SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*);
1845
1846SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long);
1847SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*);
1848
1849SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int);
1850SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int);
1851SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int);
1852SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*);
1853
1854#ifndef WITH_LEANER
1855SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**);
1856SOAP_FMAC1 int SOAP_FMAC2 soap_dime_forward(struct soap*, unsigned char**, int*, char**, char**, char**);
1857#endif
1858
1859#ifndef WITH_NOIDREF
1860SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**);
1861SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**);
1862SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_enter(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**);
1863SOAP_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**);
1864SOAP_FMAC1 int SOAP_FMAC2 soap_embed(struct soap *soap, const void *p, const struct soap_array *a, int n, const char *tag, int type);
1865SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*);
1866SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*);
1867SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*);
1868SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t);
1869SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t);
1870SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t);
1871SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t);
1872SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*);
1873SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*);
1874SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*);
1875#endif
1876
1877SOAP_FMAC1 int SOAP_FMAC2 soap_begin_count(struct soap*);
1878SOAP_FMAC1 int SOAP_FMAC2 soap_end_count(struct soap*);
1879SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*);
1880SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*);
1881
1882SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char*);
1883SOAP_FMAC1 long SOAP_FMAC2 soap_code_int(const struct soap_code_map*, const char*, long);
1884SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_str(const struct soap_code_map*, long);
1885SOAP_FMAC1 long SOAP_FMAC2 soap_code_bits(const struct soap_code_map*, const char*);
1886SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_list(struct soap*, const struct soap_code_map*, long);
1887
1888SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int);
1889SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*);
1890SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*);
1891
1892SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t);
1893SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*);
1894SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, int (*fdelete)(struct soap_clist*));
1895SOAP_FMAC1 void SOAP_FMAC2 soap_unlink(struct soap*, const void*);
1896SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*);
1897SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*);
1898
1899SOAP_FMAC1 void* SOAP_FMAC2 soap_track_malloc(struct soap*, const char*, int, size_t);
1900SOAP_FMAC1 void SOAP_FMAC2 soap_track_free(struct soap*, const char*, int, void*);
1901
1902#ifndef WITH_NOIDREF
1903SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id);
1904SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k);
1905SOAP_FMAC1 void* SOAP_FMAC2 soap_id_forward(struct soap*, const char *id, void *p, size_t len, int st, int tt, size_t n, unsigned int k, void(*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t));
1906#endif
1907SOAP_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*));
1908SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t, const void *q, size_t n);
1909
1910SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int);
1911SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int);
1912SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *);
1913SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int);
1914SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *);
1915
1916SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int);
1917SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int);
1918SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int);
1919SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int);
1920SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int);
1921
1922SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*);
1923
1924SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new(void);
1925SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new1(soap_mode);
1926SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new2(soap_mode, soap_mode);
1927SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*);
1928SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(struct soap*);
1929SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*, struct soap*);
1930SOAP_FMAC1 void SOAP_FMAC2 soap_copy_stream(struct soap*, struct soap*);
1931SOAP_FMAC1 void SOAP_FMAC2 soap_init(struct soap*);
1932SOAP_FMAC1 void SOAP_FMAC2 soap_init1(struct soap*, soap_mode);
1933SOAP_FMAC1 void SOAP_FMAC2 soap_init2(struct soap*, soap_mode, soap_mode);
1934SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*);
1935SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*);
1936SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*);
1937SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*);
1938SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*);
1939
1940#ifdef SOAP_DEBUG
1941SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*);
1942SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*);
1943SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*);
1944SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*);
1945SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int);
1946#endif
1947
1948SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*);
1949
1950SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *);
1951SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*);
1952
1953SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*);
1954SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type);
1955SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset);
1956SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href);
1957SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val);
1958SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type);
1959SOAP_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);
1960SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag);
1961SOAP_FMAC1 void SOAP_FMAC2 soap_check_result(struct soap*, const char *tag);
1962SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag);
1963SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag);
1964
1965SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*);
1966
1967SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type);
1968
1969SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag);
1970
1971SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*);
1972
1973SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*);
1974SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*);
1975
1976SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*);
1977SOAP_FMAC1 const char * SOAP_FMAC2 soap_strsearch(const char *big, const char *little);
1978
1979SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag);
1980SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long);
1981
1982#ifndef WITH_LEANER
1983SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag);
1984SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long);
1985#endif
1986
1987SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, int n1, int n2);
1988
1989SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, const struct Namespace*);
1990SOAP_FMAC1 void SOAP_FMAC2 soap_set_local_namespaces(struct soap*);
1991
1992SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*);
1993SOAP_FMAC1 int SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *);
1994SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace(struct soap *soap, const char *tag);
1995
1996SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_lookup_ns(struct soap *soap, const char *tag, size_t n);
1997
1998SOAP_FMAC1 int SOAP_FMAC2 soap_store_lab(struct soap*, const char*, size_t);
1999SOAP_FMAC1 int SOAP_FMAC2 soap_append_lab(struct soap*, const char*, size_t);
2000
2001SOAP_FMAC1 int SOAP_FMAC2 soap_new_block(struct soap*);
2002SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, size_t);
2003SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*);
2004SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, size_t);
2005SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*);
2006SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*);
2007SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*);
2008SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, char*, int);
2009SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*);
2010
2011SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*);
2012SOAP_FMAC1 int soap_envelope_end_out(struct soap*);
2013
2014SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*);
2015SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*);
2016
2017SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*);
2018SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*);
2019
2020SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*);
2021SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*);
2022
2023SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*);
2024
2025SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int);
2026
2027SOAP_FMAC1 int SOAP_FMAC2 soap_send_empty_response(struct soap*, int status);
2028SOAP_FMAC1 int SOAP_FMAC2 soap_recv_empty_response(struct soap*);
2029
2030SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*);
2031SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*);
2032
2033#ifndef WITH_NOSTDLIB
2034SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*);
2035SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*);
2036#endif
2037
2038SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*);
2039SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*);
2040SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*);
2041SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*);
2042SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*);
2043SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*);
2044SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*);
2045SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*);
2046SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*);
2047SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*);
2048SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*);
2049SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*);
2050SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**);
2051SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**);
2052
2053#ifndef WITH_LEAN
2054SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**);
2055SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*);
2056SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, int);
2057SOAP_FMAC1 char* SOAP_FMAC2 soap_s2hex(struct soap*, const unsigned char*, char*, int);
2058#endif
2059
2060SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char);
2061SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short);
2062SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int);
2063SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long);
2064SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64);
2065SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float);
2066SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double);
2067SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char);
2068SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short);
2069SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int);
2070SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long);
2071SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64);
2072SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*);
2073
2074#ifndef WITH_LEAN
2075SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*);
2076SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t);
2077SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, int*);
2078SOAP_FMAC1 const char* SOAP_FMAC2 soap_hex2s(struct soap*, const char*, char*, size_t, int*);
2079#endif
2080
2081
2082SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int);
2083SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int);
2084SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int);
2085SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int);
2086SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int);
2087SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int);
2088SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int);
2089SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int);
2090SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int);
2091SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int);
2092SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int);
2093SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int);
2094SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long);
2095SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p);
2096
2097#ifndef WITH_LEAN
2098SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int);
2099#endif
2100
2101#ifndef WITH_LEANER
2102SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long);
2103SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p);
2104#endif
2105
2106SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int);
2107SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int);
2108SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int);
2109SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int);
2110SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int);
2111SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int);
2112SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int);
2113SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int);
2114SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int);
2115SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int);
2116SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int);
2117SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int);
2118SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int);
2119SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type);
2120
2121#ifndef WITH_LEAN
2122SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int);
2123#endif
2124
2125#ifndef WITH_LEANER
2126SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int);
2127SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type);
2128#endif
2129
2130#ifndef WITH_LEANER
2131SOAP_FMAC1 int SOAP_FMAC2 soap_attachment(struct soap *, const char*, int, const void*, const struct soap_array*, const char*, const char*, const char*, int, const char*, int);
2132SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, long);
2133SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*);
2134SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*);
2135SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*);
2136SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*);
2137SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*);
2138SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*);
2139SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*);
2140SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*);
2141SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*);
2142SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*);
2143SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*);
2144SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start);
2145SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*);
2146SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*);
2147SOAP_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);
2148SOAP_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);
2149SOAP_FMAC1 void SOAP_FMAC2 soap_post_check_mime_attachments(struct soap *soap);
2150SOAP_FMAC1 int SOAP_FMAC2 soap_check_mime_attachments(struct soap *soap);
2151SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_get_mime_attachment(struct soap *soap, void *handle);
2152SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*);
2153SOAP_FMAC1 int SOAP_FMAC2 soap_match_cid(struct soap*, const char*, const char*);
2154#endif
2155
2156SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*);
2157SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*);
2158
2159SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag);
2160SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value);
2161SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap);
2162
2163#ifdef WITH_COOKIES
2164SOAP_FMAC1 void SOAP_FMAC2 soap_getcookies(struct soap *soap, const char *val);
2165SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_cookie(const char*, char*, size_t);
2166SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*);
2167SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*);
2168SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*);
2169SOAP_FMAC1 extern char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*);
2170SOAP_FMAC1 extern time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*);
2171SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*);
2172SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*);
2173SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*);
2174SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*);
2175SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*);
2176SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, struct soap*);
2177SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*);
2178#endif
2179
2180#ifdef __cplusplus
2181} /* extern "C" */
2182#endif
2183
2184#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette