Mercurial > repos > ktnyt > gembassy
comparison GEMBASSY-1.0.3/gsoap/src/soapcpp2.h @ 2:8947fca5f715 draft default tip
Uploaded
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:21:44 -0400 |
parents | 84a17b3fad1f |
children |
comparison
equal
deleted
inserted
replaced
1:84a17b3fad1f | 2:8947fca5f715 |
---|---|
1 /* | |
2 soapcpp2.h | |
3 | |
4 Common declarations. | |
5 | |
6 -------------------------------------------------------------------------------- | |
7 gSOAP XML Web services tools | |
8 Copyright (C) 2000-2012, Robert van Engelen, Genivia Inc. All Rights Reserved. | |
9 This part of the software is released under one of the following licenses: | |
10 GPL or Genivia's license for commercial use. | |
11 -------------------------------------------------------------------------------- | |
12 GPL license. | |
13 | |
14 This program is free software; you can redistribute it and/or modify it under | |
15 the terms of the GNU General Public License as published by the Free Software | |
16 Foundation; either version 2 of the License, or (at your option) any later | |
17 version. | |
18 | |
19 This program is distributed in the hope that it will be useful, but WITHOUT ANY | |
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | |
21 PARTICULAR PURPOSE. See the GNU General Public License for more details. | |
22 | |
23 You should have received a copy of the GNU General Public License along with | |
24 this program; if not, write to the Free Software Foundation, Inc., 59 Temple | |
25 Place, Suite 330, Boston, MA 02111-1307 USA | |
26 | |
27 Author contact information: | |
28 engelen@genivia.com / engelen@acm.org | |
29 | |
30 This program is released under the GPL with the additional exemption that | |
31 compiling, linking, and/or using OpenSSL is allowed. | |
32 -------------------------------------------------------------------------------- | |
33 A commercial use license is available from Genivia, Inc., contact@genivia.com | |
34 -------------------------------------------------------------------------------- | |
35 */ | |
36 | |
37 #include <stdio.h> | |
38 #include <stdlib.h> | |
39 #include <errno.h> | |
40 #include <string.h> | |
41 #include <ctype.h> | |
42 #include <time.h> | |
43 #include "error2.h" | |
44 | |
45 #ifndef VERSION | |
46 # define VERSION "2.8.17r" /* Current version */ | |
47 # define GSOAP_VERSION 20817 | |
48 #endif | |
49 | |
50 #ifdef WIN32 | |
51 # pragma warning(disable : 4996) | |
52 # ifndef WITH_BISON | |
53 # define WITH_BISON | |
54 # endif | |
55 #endif | |
56 | |
57 /* #define DEBUG */ /* uncomment to debug */ | |
58 | |
59 #ifdef DEBUG | |
60 # define check(expr, msg) (void)((expr) ? 0 : (progerror(msg, __FILE__, __LINE__), 0)) | |
61 # define DBGLOG(DBGCMD) { DBGCMD; } | |
62 #else | |
63 # define check(expr, msg) (void)(expr) | |
64 # define DBGLOG(DBGCMD) | |
65 #endif | |
66 | |
67 #ifdef WIN32 | |
68 # ifdef WITH_BISON | |
69 # ifdef WIN32_WITHOUT_SOLARIS_FLEX | |
70 # define yyparse soapcpp2parse | |
71 # define yylex soapcpp2lex | |
72 # define yyerror soapcpp2error | |
73 # define yylval soapcpp2lval | |
74 # define yychar soapcpp2char | |
75 # define yydebug soapcpp2debug | |
76 # define yynerrs soapcpp2nerrs | |
77 # define yylineno soapcpp2lineno | |
78 # define yytext soapcpp2text | |
79 # define yyin soapcpp2in | |
80 # define yywrap soapcpp2wrap | |
81 # endif | |
82 # endif | |
83 #endif | |
84 | |
85 #ifdef WIN32 | |
86 # define SOAP_PATHCAT "\\" | |
87 # define SOAP_PATHSEP ";" | |
88 # define LONG64 __int64 | |
89 #else | |
90 # define SOAP_PATHCAT "/" | |
91 # define SOAP_PATHSEP ":" | |
92 # define LONG64 long long | |
93 #endif | |
94 | |
95 #if defined(WIN32) | |
96 # define SOAP_LONG_FORMAT "%I64d" | |
97 # define SOAP_ULONG_FORMAT "%I64u" | |
98 # define SOAP_XLONG_FORMAT "%I64x" | |
99 #elif defined(TRU64) | |
100 # define SOAP_LONG_FORMAT "%ld" | |
101 # define SOAP_ULONG_FORMAT "%lu" | |
102 # define SOAP_XLONG_FORMAT "%lx" | |
103 #endif | |
104 | |
105 #ifndef SOAP_LONG_FORMAT | |
106 # define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */ | |
107 #endif | |
108 #ifndef SOAP_ULONG_FORMAT | |
109 # define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */ | |
110 #endif | |
111 #ifndef SOAP_XLONG_FORMAT | |
112 # define SOAP_XLONG_FORMAT "%llx" /* printf format for unsigned 64 bit hex ints */ | |
113 #endif | |
114 | |
115 extern int yylineno; | |
116 | |
117 typedef enum Bool {False, True} Bool; | |
118 | |
119 typedef int Token; | |
120 | |
121 typedef enum Type | |
122 { Tnone, | |
123 Tvoid, /* primitive types */ | |
124 Tchar, | |
125 Twchar, | |
126 Tshort, | |
127 Tint, | |
128 Tlong, | |
129 Tllong, | |
130 Tfloat, | |
131 Tdouble, | |
132 Tldouble, | |
133 Tuchar, | |
134 Tushort, | |
135 Tuint, | |
136 Tulong, | |
137 Tullong, | |
138 Ttime, | |
139 Tenum, | |
140 Tclass, /* compound types */ | |
141 Tstruct, | |
142 Tunion, | |
143 Tpointer, | |
144 Treference, | |
145 Tarray, | |
146 Ttemplate, | |
147 Tfun | |
148 } Type; | |
149 | |
150 #define TYPES (Tfun+1) /* number of type (operators) enumerated above */ | |
151 | |
152 typedef enum Storage | |
153 { Snone = 0, | |
154 Sauto = 0x000001, | |
155 Sregister = 0x000002, | |
156 Sstatic = 0x000004, | |
157 Sextern = 0x000008, | |
158 Stypedef = 0x000010, | |
159 Svirtual = 0x000020, | |
160 Sconst = 0x000040, | |
161 Sconstobj = 0x000080, | |
162 Sconstptr = 0x000100, | |
163 Sfriend = 0x000200, | |
164 Sinline = 0x000400, | |
165 Sabstract = 0x000800, | |
166 SmustUnderstand = 0x001000, | |
167 Sreturn = 0x002000, | |
168 Sattribute = 0x004000, | |
169 Sspecial = 0x008000, | |
170 Sexplicit = 0x010000, | |
171 Sprivate = 0x020000, | |
172 Sprotected = 0x040000 | |
173 } Storage; | |
174 | |
175 typedef enum Level { INTERNAL, GLOBAL, PARAM, LOCAL } Level; | |
176 | |
177 #define mknone() mktype(Tnone, NULL, 0) | |
178 #define mkvoid() mktype(Tvoid, NULL, 0) | |
179 #define mkbool() mktype(Tenum, booltable, 4) | |
180 #define mkchar() mktype(Tchar, NULL, 1) | |
181 #define mkwchart() mktype(Twchar, NULL, 4) | |
182 #define mkshort() mktype(Tshort, NULL, 2) | |
183 #define mkint() mktype(Tint, NULL, 4) | |
184 #define mklong() mktype(Tlong, NULL, 8) | |
185 #define mkllong() mktype(Tllong, NULL, 8) | |
186 #define mkfloat() mktype(Tfloat, NULL, 4) | |
187 #define mkdouble() mktype(Tdouble, NULL, 8) | |
188 #define mkldouble() mktype(Tldouble, NULL, 16) /* long double */ | |
189 #define mkuchar() mktype(Tuchar, NULL, 1) /* unsigned char */ | |
190 #define mkushort() mktype(Tushort, NULL, 2) /* unsigned short */ | |
191 #define mkuint() mktype(Tuint, NULL, 4) /* unsigned int */ | |
192 #define mkulong() mktype(Tulong, NULL, 8) /* unsigned long */ | |
193 #define mkullong() mktype(Tullong, NULL, 8) /* unsigned long */ | |
194 #define mktimet() mktype(Ttime, NULL, 4) | |
195 #define mkenum(t) mktype(Tenum, t, 4) | |
196 #define mkmask(t) mktype(Tenum, t, 8) | |
197 #define mkpointer(t) mktype(Tpointer, t, 4) | |
198 #define mkreference(t) mktype(Treference,t, 4) | |
199 #define mkclass(t, w) mktype(Tclass, t, w) | |
200 #define mkstruct(t, w) mktype(Tstruct, t, w) | |
201 #define mkunion(t, w) mktype(Tunion, t, w) | |
202 #define mkarray(t, w) mktype(Tarray, t, w) | |
203 #define mkfun(t) mktype(Tfun, t, 0) | |
204 #define mkstring() mkpointer(mkchar()) | |
205 | |
206 #define MINLONG64 (0x8000000000000000LL) | |
207 #define MAXLONG64 (0x7FFFFFFFFFFFFFFFLL) | |
208 | |
209 typedef struct Symbol | |
210 { char *name; | |
211 Token token; | |
212 struct Symbol *next; | |
213 } Symbol; | |
214 | |
215 Symbol *install(const char*, Token), *lookup(const char*), *gensym(const char*), *gensymidx(const char*, int); | |
216 | |
217 typedef struct Tnode | |
218 { Type type; | |
219 void *ref; | |
220 Symbol *id; /* struct/class/union/enum name */ | |
221 Symbol *base; /* base class name */ | |
222 Symbol *sym; /* typedef name */ | |
223 struct Entry *response; /* funcs only: points to response struct */ | |
224 int width; | |
225 int transient; | |
226 const char *imported; | |
227 struct Tnode *next; | |
228 Bool generated; | |
229 Bool classed; /* class qualified */ | |
230 Bool wsdl; | |
231 int num; | |
232 char *pattern; | |
233 LONG64 minLength; | |
234 LONG64 maxLength; | |
235 } Tnode; | |
236 | |
237 typedef union Value { | |
238 LONG64 i; | |
239 double r; | |
240 const char *s; | |
241 } Value; | |
242 | |
243 typedef struct IDinfo { | |
244 Tnode *typ; | |
245 Storage sto; | |
246 Bool hasval; /* if true, identifier is constant */ | |
247 Value val; /* ... with this value */ | |
248 int offset; | |
249 LONG64 minOccurs; | |
250 LONG64 maxOccurs; | |
251 } IDinfo; | |
252 | |
253 typedef struct Entry { | |
254 Symbol *sym; | |
255 char *tag; | |
256 IDinfo info; | |
257 Level level; | |
258 int lineno; | |
259 struct Entry *next; | |
260 } Entry; | |
261 | |
262 typedef struct Table { | |
263 Symbol *sym; | |
264 Level level; | |
265 Entry *list; | |
266 struct Table *prev; | |
267 } Table; | |
268 | |
269 typedef struct FNinfo { | |
270 Tnode *ret; | |
271 Table *args; | |
272 } FNinfo; | |
273 | |
274 typedef struct Node { | |
275 Tnode *typ; | |
276 Storage sto; | |
277 Bool hasval; /* if true, this node has a constant value */ | |
278 Value val; /* ... this is the value */ | |
279 LONG64 minOccurs; | |
280 LONG64 maxOccurs; | |
281 char *pattern; | |
282 LONG64 minLength; | |
283 LONG64 maxLength; | |
284 } Node; | |
285 | |
286 #define ACTION 0x0000 | |
287 #define REQUEST_ACTION 0x0001 | |
288 #define RESPONSE_ACTION 0x0002 | |
289 #define FAULT_ACTION 0x0004 | |
290 #define HDRIN 0x0010 | |
291 #define HDROUT 0x0020 | |
292 #define MIMEIN 0x0040 | |
293 #define MIMEOUT 0x0080 | |
294 #define COMMENT 0x0100 | |
295 #define ENCODING 0x0200 | |
296 #define RESPONSE_ENCODING 0x0400 | |
297 #define STYLE 0x0800 | |
298 #define FAULT 0x1000 | |
299 #define PROTOCOL 0x2000 | |
300 | |
301 typedef struct Data | |
302 { struct Data *next; | |
303 char *name; | |
304 char *text; | |
305 } Data; | |
306 | |
307 typedef struct Method | |
308 { struct Method *next; | |
309 char *name; | |
310 short mess; /* see #defines above */ | |
311 char *part; | |
312 } Method; | |
313 | |
314 typedef struct Service | |
315 { struct Service *next; | |
316 char *ns; | |
317 char *name; | |
318 char *porttype; | |
319 char *portname; | |
320 char *binding; | |
321 char *definitions; | |
322 char *transport; | |
323 char *URL; | |
324 char *executable; | |
325 char *import; | |
326 char *URI; | |
327 char *URI2; | |
328 char *WSDL; | |
329 char *style; | |
330 char *encoding; | |
331 char *protocol; | |
332 int xsi_type; | |
333 char *elementForm; | |
334 char *attributeForm; | |
335 char *documentation; | |
336 struct Method *list; | |
337 struct Data *data; | |
338 } Service; | |
339 | |
340 typedef struct Pragma | |
341 { struct Pragma *next; | |
342 char *pragma; | |
343 } Pragma; | |
344 | |
345 extern Entry *enter(Table*, Symbol*), *entry(Table*, Symbol*), *reenter(Table*, Symbol*), *enumentry(Symbol*); | |
346 | |
347 extern int merge(Table*, Table*); | |
348 | |
349 extern Table *mktable(Table*); | |
350 | |
351 extern Tnode *mkmethod(Tnode*, Table*); | |
352 | |
353 extern char *emalloc(size_t); | |
354 | |
355 extern Tnode *mktype(Type, void*, int); | |
356 extern Tnode *mksymtype(Tnode*, Symbol*); | |
357 extern Tnode *mktemplate(Tnode*, Symbol*); | |
358 | |
359 extern int is_transient(Tnode*); | |
360 extern int is_response(Tnode*); | |
361 | |
362 extern Table *typetable, *enumtable, *classtable, *booltable, *templatetable; | |
363 | |
364 extern void compile(Table*); | |
365 extern void freetable(Table*); | |
366 extern Entry *unlinklast(Table*); | |
367 | |
368 extern FILE *fmsg; | |
369 | |
370 extern int aflag; | |
371 extern int Aflag; | |
372 extern int bflag; | |
373 extern int vflag; | |
374 extern int wflag; | |
375 extern int cflag; | |
376 extern int Cflag; | |
377 extern int eflag; | |
378 extern unsigned long fflag; | |
379 extern int iflag; | |
380 extern int jflag; | |
381 extern int kflag; | |
382 extern int mflag; | |
383 extern int nflag; | |
384 extern int nflag; | |
385 extern int lflag; | |
386 extern int Lflag; | |
387 extern int Qflag; | |
388 extern int sflag; | |
389 extern int Sflag; | |
390 extern int Tflag; | |
391 extern int tflag; | |
392 extern int uflag; | |
393 extern int xflag; | |
394 extern int yflag; | |
395 extern int zflag; | |
396 extern char dirpath[1024]; | |
397 extern char filename[1024]; | |
398 extern char *prefix; | |
399 extern char *importpath; | |
400 extern int custom_header; | |
401 extern int custom_fault; | |
402 extern Pragma *pragmas; | |
403 extern Service *services; | |
404 extern char *namespaceid; | |
405 extern int transient; | |
406 extern int imports; | |
407 extern char *imported; | |
408 extern int typeNO; | |
409 | |
410 extern char *envURI; | |
411 extern char *encURI; | |
412 extern char *rpcURI; | |
413 extern char *xsiURI; | |
414 extern char *xsdURI; |