diff GEMBASSY-1.0.3/gsoap/src/soapcpp2.h @ 0:8300eb051bea draft

Initial upload
author ktnyt
date Fri, 26 Jun 2015 05:19:29 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GEMBASSY-1.0.3/gsoap/src/soapcpp2.h	Fri Jun 26 05:19:29 2015 -0400
@@ -0,0 +1,414 @@
+/*
+	soapcpp2.h
+
+	Common declarations.
+
+--------------------------------------------------------------------------------
+gSOAP XML Web services tools
+Copyright (C) 2000-2012, Robert van Engelen, Genivia Inc. All Rights Reserved.
+This part of the software is released under one of the following licenses:
+GPL or Genivia's license for commercial use.
+--------------------------------------------------------------------------------
+GPL license.
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+
+Author contact information:
+engelen@genivia.com / engelen@acm.org
+
+This program is released under the GPL with the additional exemption that
+compiling, linking, and/or using OpenSSL is allowed.
+--------------------------------------------------------------------------------
+A commercial use license is available from Genivia, Inc., contact@genivia.com
+--------------------------------------------------------------------------------
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+#include <time.h>
+#include "error2.h"
+
+#ifndef VERSION
+# define VERSION "2.8.17r" /* Current version */
+# define GSOAP_VERSION 20817
+#endif
+
+#ifdef WIN32
+# pragma warning(disable : 4996)
+# ifndef WITH_BISON
+#  define WITH_BISON
+# endif
+#endif
+
+/* #define DEBUG */ /* uncomment to debug */
+
+#ifdef DEBUG
+# define	check(expr, msg) (void)((expr) ? 0 : (progerror(msg, __FILE__, __LINE__), 0))
+# define DBGLOG(DBGCMD) { DBGCMD; }
+#else
+# define check(expr, msg) (void)(expr)
+# define DBGLOG(DBGCMD)
+#endif
+
+#ifdef WIN32
+# ifdef WITH_BISON
+#  ifdef WIN32_WITHOUT_SOLARIS_FLEX
+#   define yyparse soapcpp2parse
+#   define yylex soapcpp2lex
+#   define yyerror soapcpp2error
+#   define yylval soapcpp2lval
+#   define yychar soapcpp2char
+#   define yydebug soapcpp2debug
+#   define yynerrs soapcpp2nerrs
+#   define yylineno soapcpp2lineno
+#   define yytext soapcpp2text
+#   define yyin soapcpp2in
+#   define yywrap soapcpp2wrap
+#  endif
+# endif
+#endif
+
+#ifdef WIN32
+# define SOAP_PATHCAT "\\"
+# define SOAP_PATHSEP ";"
+# define LONG64 __int64
+#else
+# define SOAP_PATHCAT "/"
+# define SOAP_PATHSEP ":"
+# define LONG64 long long
+#endif
+
+#if defined(WIN32)
+# define SOAP_LONG_FORMAT "%I64d"
+# define SOAP_ULONG_FORMAT "%I64u"
+# define SOAP_XLONG_FORMAT "%I64x"
+#elif defined(TRU64)
+# define SOAP_LONG_FORMAT "%ld"
+# define SOAP_ULONG_FORMAT "%lu"
+# define SOAP_XLONG_FORMAT "%lx"
+#endif
+
+#ifndef SOAP_LONG_FORMAT
+# define SOAP_LONG_FORMAT "%lld"	/* printf format for 64 bit ints */
+#endif
+#ifndef SOAP_ULONG_FORMAT
+# define SOAP_ULONG_FORMAT "%llu"	/* printf format for unsigned 64 bit ints */
+#endif
+#ifndef SOAP_XLONG_FORMAT
+# define SOAP_XLONG_FORMAT "%llx"	/* printf format for unsigned 64 bit hex ints */
+#endif
+
+extern int yylineno;
+
+typedef	enum Bool {False, True} Bool;
+
+typedef	int Token;
+
+typedef	enum Type
+{	Tnone,
+	Tvoid,		/* primitive types */
+	Tchar,
+	Twchar,
+	Tshort,
+	Tint,
+	Tlong,
+	Tllong,
+	Tfloat,
+	Tdouble,
+	Tldouble,
+	Tuchar,
+	Tushort,
+	Tuint,
+	Tulong,
+	Tullong,
+	Ttime,
+	Tenum,
+	Tclass,		/* compound types */
+	Tstruct,
+	Tunion,
+	Tpointer,
+	Treference,
+	Tarray,
+	Ttemplate,
+	Tfun
+} Type;
+
+#define	TYPES (Tfun+1)	/* number of type (operators) enumerated above */
+
+typedef	enum Storage
+{	Snone		= 0,
+	Sauto		= 0x000001,
+	Sregister	= 0x000002,
+	Sstatic		= 0x000004,
+	Sextern		= 0x000008,
+	Stypedef	= 0x000010,
+	Svirtual	= 0x000020,
+	Sconst		= 0x000040,
+	Sconstobj	= 0x000080,
+	Sconstptr	= 0x000100,
+	Sfriend		= 0x000200,
+	Sinline		= 0x000400,
+	Sabstract	= 0x000800,
+	SmustUnderstand	= 0x001000,
+	Sreturn		= 0x002000,
+	Sattribute	= 0x004000,
+	Sspecial	= 0x008000,
+	Sexplicit	= 0x010000,
+	Sprivate	= 0x020000,
+	Sprotected	= 0x040000
+} Storage;
+
+typedef	enum Level { INTERNAL, GLOBAL, PARAM, LOCAL } Level;
+
+#define mknone()	mktype(Tnone,     NULL, 0)
+#define mkvoid()	mktype(Tvoid,     NULL, 0)
+#define mkbool()	mktype(Tenum,     booltable, 4)
+#define mkchar()	mktype(Tchar,     NULL, 1)
+#define mkwchart()	mktype(Twchar,    NULL, 4)
+#define mkshort()	mktype(Tshort,    NULL, 2)
+#define mkint()		mktype(Tint,      NULL, 4)
+#define mklong()	mktype(Tlong,     NULL, 8)
+#define mkllong()	mktype(Tllong,    NULL, 8)
+#define mkfloat()	mktype(Tfloat,    NULL, 4)
+#define mkdouble()	mktype(Tdouble,   NULL, 8)
+#define mkldouble()	mktype(Tldouble,  NULL, 16)	/* long double */
+#define mkuchar()	mktype(Tuchar,    NULL, 1)	/* unsigned char */
+#define mkushort()	mktype(Tushort,   NULL, 2)	/* unsigned short */
+#define mkuint()	mktype(Tuint,     NULL, 4)	/* unsigned int */
+#define mkulong()	mktype(Tulong,    NULL, 8)	/* unsigned long */
+#define mkullong()	mktype(Tullong,   NULL, 8)	/* unsigned long */
+#define mktimet()	mktype(Ttime,     NULL, 4)
+#define mkenum(t)	mktype(Tenum,	  t,    4)
+#define mkmask(t)	mktype(Tenum,	  t,    8)
+#define	mkpointer(t)	mktype(Tpointer,  t,    4)
+#define	mkreference(t)	mktype(Treference,t,    4)
+#define	mkclass(t, w)	mktype(Tclass,    t,    w)
+#define	mkstruct(t, w)	mktype(Tstruct,   t,    w)
+#define	mkunion(t, w)	mktype(Tunion,    t,    w)
+#define	mkarray(t, w)	mktype(Tarray,    t,    w)
+#define	mkfun(t)	mktype(Tfun,      t,    0)
+#define mkstring()	mkpointer(mkchar())
+
+#define MINLONG64 (0x8000000000000000LL)
+#define MAXLONG64 (0x7FFFFFFFFFFFFFFFLL)
+
+typedef struct Symbol
+{	char	*name;
+	Token	token;
+	struct	Symbol *next;
+} Symbol;
+
+Symbol	*install(const char*, Token), *lookup(const char*), *gensym(const char*), *gensymidx(const char*, int);
+
+typedef	struct Tnode
+{	Type	type;
+	void	*ref;
+	Symbol	*id;	/* struct/class/union/enum name */
+	Symbol	*base;	/* base class name */
+	Symbol	*sym;	/* typedef name */
+	struct	Entry *response; /* funcs only: points to response struct */
+	int	width;
+	int	transient;
+	const char *imported;
+	struct	Tnode *next;
+        Bool	generated;
+        Bool	classed;	/* class qualified */
+        Bool	wsdl;
+	int	num;
+	char	*pattern;
+	LONG64	minLength;
+	LONG64	maxLength;
+} Tnode;
+
+typedef	union Value {
+	LONG64	i;
+	double	r;
+	const char *s;
+} Value;
+
+typedef	struct IDinfo {
+	Tnode	*typ;
+	Storage	sto;
+	Bool	hasval;		/* if true, identifier is constant */
+	Value	val;		/* ... with this value */
+	int	offset;
+	LONG64	minOccurs;
+	LONG64	maxOccurs;
+} IDinfo;
+
+typedef	struct Entry {
+	Symbol	*sym;
+	char	*tag;
+	IDinfo	info;
+	Level	level;
+	int	lineno;
+	struct	Entry *next;
+} Entry;
+
+typedef	struct Table {
+	Symbol	*sym;
+	Level	level;
+	Entry	*list;
+	struct	Table *prev;
+} Table;
+
+typedef struct FNinfo {
+	Tnode	*ret;
+	Table	*args;
+} FNinfo;
+
+typedef	struct Node {
+	Tnode	*typ;
+	Storage	sto;
+	Bool	hasval;		/* if true, this node has a constant value */
+	Value	val;		/* ... this is the value */
+	LONG64	minOccurs;
+	LONG64	maxOccurs;
+	char	*pattern;
+	LONG64	minLength;
+	LONG64	maxLength;
+} Node;
+
+#define ACTION		        0x0000
+#define REQUEST_ACTION	        0x0001
+#define RESPONSE_ACTION	        0x0002
+#define FAULT_ACTION	        0x0004
+#define HDRIN		        0x0010	
+#define HDROUT		        0x0020
+#define MIMEIN		        0x0040
+#define MIMEOUT		        0x0080
+#define COMMENT		        0x0100
+#define ENCODING	        0x0200
+#define RESPONSE_ENCODING       0x0400
+#define STYLE                   0x0800
+#define FAULT                   0x1000
+#define PROTOCOL                0x2000
+
+typedef struct Data
+{	struct Data *next;
+	char *name;
+	char *text;
+} Data;
+
+typedef struct Method
+{	struct Method *next;
+	char *name;
+	short mess; /* see #defines above */
+	char *part;
+} Method;
+
+typedef struct Service
+{	struct Service *next;
+	char *ns;
+	char *name;
+	char *porttype;
+	char *portname;
+	char *binding;
+	char *definitions;
+	char *transport;
+	char *URL;
+	char *executable;
+	char *import;
+	char *URI;
+	char *URI2;
+	char *WSDL;
+	char *style;
+	char *encoding;
+	char *protocol;
+	int xsi_type;
+	char *elementForm;
+	char *attributeForm;
+	char *documentation;
+	struct Method *list;
+	struct Data *data;
+} Service;
+
+typedef struct Pragma
+{	struct Pragma *next;
+	char *pragma;
+} Pragma;
+
+extern Entry *enter(Table*, Symbol*), *entry(Table*, Symbol*), *reenter(Table*, Symbol*), *enumentry(Symbol*);
+
+extern int merge(Table*, Table*);
+
+extern Table *mktable(Table*);
+
+extern Tnode *mkmethod(Tnode*, Table*);
+
+extern char *emalloc(size_t);
+
+extern Tnode *mktype(Type, void*, int);
+extern Tnode *mksymtype(Tnode*, Symbol*);
+extern Tnode *mktemplate(Tnode*, Symbol*);
+
+extern int is_transient(Tnode*);
+extern int is_response(Tnode*);
+
+extern Table *typetable, *enumtable, *classtable, *booltable, *templatetable;
+
+extern void compile(Table*);
+extern void freetable(Table*);
+extern Entry *unlinklast(Table*); 
+
+extern FILE *fmsg;
+
+extern int aflag;
+extern int Aflag;
+extern int bflag;
+extern int vflag;
+extern int wflag;
+extern int cflag;
+extern int Cflag;
+extern int eflag;
+extern unsigned long fflag;
+extern int iflag;
+extern int jflag;
+extern int kflag;
+extern int mflag;
+extern int nflag;
+extern int nflag;
+extern int lflag;
+extern int Lflag;
+extern int Qflag;
+extern int sflag;
+extern int Sflag;
+extern int Tflag;
+extern int tflag;
+extern int uflag;
+extern int xflag;
+extern int yflag;
+extern int zflag;
+extern char dirpath[1024];
+extern char filename[1024];
+extern char *prefix;
+extern char *importpath;
+extern int custom_header;
+extern int custom_fault;
+extern Pragma *pragmas;
+extern Service *services;
+extern char *namespaceid;
+extern int transient;
+extern int imports;
+extern char *imported;
+extern int typeNO;
+
+extern char *envURI;
+extern char *encURI;
+extern char *rpcURI;
+extern char *xsiURI;
+extern char *xsdURI;