diff GEMBASSY-1.0.3/gsoap/src/soapcpp2.c @ 2:8947fca5f715 draft default tip

Uploaded
author ktnyt
date Fri, 26 Jun 2015 05:21:44 -0400
parents 84a17b3fad1f
children
line wrap: on
line diff
--- a/GEMBASSY-1.0.3/gsoap/src/soapcpp2.c	Fri Jun 26 05:20:29 2015 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,329 +0,0 @@
-/*
-	soapcpp2.c
-
-	Main compiler and code generator batch program.
-
-gSOAP XML Web services tools
-Copyright (C) 2000-2013, 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 "soapcpp2.h"
-
-#ifndef SOAPCPP2_IMPORT_PATH
-#define SOAPCPP2_IMPORT_PATH (NULL)
-#endif
-
-extern void init(void);
-extern int yyparse(void);
-extern FILE *yyin;
-
-extern char *ns_cname(char*, char*);
-
-FILE *fmsg;		/* fd to flush compiler messages */
-
-int vflag = 0;		/* SOAP version, -1=no SOAP, 0=not set, 1=1.1, 2=1.2 */
-int wflag = 0;		/* when set, don't generate WSDL and schema files */
-int Cflag = 0;		/* when set, generate only files for clients */
-int cflag = 0;		/* when set, generate files with .c extension */
-int aflag = 0;		/* when set, use value of SOAP Action to dispatch method at server side */
-int Aflag = 0;		/* when set, require SOAP Action to dispatch method at server side */
-int bflag = 0;		/* when set, serialize byte arrays char[N] as string */
-int eflag = 0;		/* when set, use SOAP RPC encoding by default */
-unsigned long fflag = 0;/* multi-file split for each bundle of -fN defs */
-int iflag = 0;		/* when set, generate new style proxy/object classes inherited from soap struct */
-int jflag = 0;		/* when set, generate new style proxy/object classes */
-int kflag = 0;		/* when set, generate data traversal/walker routines */
-int mflag = 0;		/* when set, generate code that requires array/binary classes to explicitly remove malloced array */
-int nflag = 0;		/* when set, names the namespaces global struct '%NAME%_namespaces */
-int lflag = 0;		/* when set, create library */
-int Lflag = 0;		/* when set, don't generate soapClientLib/soapServerLib */
-int Qflag = 0;		/* when set, use C++ namespaces for custom serializers */
-int sflag = 0;		/* when set, generate strict validation checks */
-int Sflag = 0;		/* when set, generate only files for servers */
-int Tflag = 0;		/* when set, generates server auto-test code */
-int tflag = 0;		/* when set, generates typed messsages (with xsi:type attributes) */
-int uflag = 0;		/* when set, uncomment WSDL and schema output */
-int xflag = 0;		/* when set, don't generate sample XML message files */
-int yflag = 0;		/* when set, add C/C++ info in sample XML messages */
-int zflag = 0;		/* when set, use backward compatibility option */
-
-int stop_flag = 0;
-
-char dirpath[1024];	/* directory path for generated source files */
-char *prefix = "soap";	/* file name prefix for generated source files */
-char filename[1024];	/* current file name */
-char *importpath = SOAPCPP2_IMPORT_PATH; /* default file import path */
-
-/*
-IMPORTANT:
-
-The terms and conditions of use of this software do not allow for the removal
-of the copyright notice from the main program for visual display. For
-integrations with other software, a similar copyright notice must be produced
-that is visible to users of the software.
-*/
-
-int
-main(int argc, char **argv)
-{	int i, g;
-	char *a, *s;
-	fmsg = stderr;
-	strcpy(filename, "<stdin>");
-	for (i = 1; i < argc; i++)
-	{	a = argv[i];
-		if (*a == '-'
-#ifdef WIN32
-		 || *a == '/'
-#endif
-		)
-		{	g = 1;
-			while (g && *++a)
-				switch (*a)
-				{	case 'C':
-						Cflag = 1;
-						if (Sflag)
-            					  fprintf(stderr, "soapcpp2: using both options -C and -S omits client/server code\n");
-						break;
-					case 'c':
-						cflag = 1;
-						break;
-					case 'd':
-						a++;
-						g = 0;
-						if (*a)
-							strcpy(dirpath, a);
-						else if (i < argc && argv[++i])
-							strcpy(dirpath, argv[i]);
-						else
-							execerror("Option -d requires a directory path");
-						if (*dirpath && dirpath[strlen(dirpath)-1] != '/' && dirpath[strlen(dirpath)-1] != '\\')
-							strcat(dirpath, SOAP_PATHCAT);
-						break;
-					case 'e':
-						eflag = 1;
-						break;
-					case 'f':
-						a++;
-						g = 0;
-						if (*a)
-							fflag = strtoul(a, NULL, 10);
-						else if (i < argc && argv[++i])
-							fflag = strtoul(argv[i], NULL, 10);
-						if (!fflag)
-							execerror("Option -f requires a value");
-						if (fflag < 10)
-						  fflag = 10;
-						break;
-					case 'a':
-						aflag = 1;
-						break;
-					case 'A':
-						aflag = 1;
-						Aflag = 1;
-						break;
-					case 'b':
-						bflag = 1;
-						break;
-					case '?':
-					case 'h':
-						fprintf(stderr, "Usage: soapcpp2 [-0|-1|-2] [-C|-S] [-T] [-L] [-a] [-A] [-b] [-c] [-d path] [-e] [-f N] [-h] [-i] [-I path"SOAP_PATHSEP"path"SOAP_PATHSEP"...] [-k] [-l] [-m] [-n] [-p name] [-s] [-t] [-u] [-v] [-w] [-x] [-y] [-z#] [infile]\n\n");
-						fprintf(stderr, "\
--1      generate SOAP 1.1 bindings\n\
--2      generate SOAP 1.2 bindings\n\
--0      remove SOAP bindings, use REST\n\
--C	generate client-side code only\n\
--S	generate server-side code only\n\
--T	generate server auto-test code\n\
--L	don't generate soapClientLib/soapServerLib\n\
--a	use SOAPAction with WS-Addressing to invoke server-side operations\n\
--A	require SOAPAction to invoke server-side operations\n\
--b	serialize byte arrays char[N] as string\n\
--c      generate C source code\n\
--dpath  use path to save files\n\
--e	generate SOAP RPC encoding style bindings\n\
--fN	file split of N XML serializer implementations per file (N>=10)\n\
--h	display help info\n\
--Ipath  use path(s) for #import (paths separated with '"SOAP_PATHSEP"')\n\
--i      generate C++ service proxies and objects inherited from soap struct\n\
--j      generate C++ service proxies and objects that share a soap struct\n\
--k      generate data structure walkers (experimental)\n\
--l      generate linkable modules (experimental)\n\
--m      generate Matlab(tm) code for MEX compiler\n\
--n      use service name to rename service functions and namespace table\n\
--pname  save files with new prefix name instead of 'soap'\n\
--Qname  use name as the C++ namespace for decls, including custom serializers\n\
--qname  use name as the C++ namespace for decls, excluding custom serializers\n\
--s      generate deserialization code with strict XML validation checks\n\
--t      generate code for fully xsi:type typed SOAP/XML messaging\n\
--u	uncomment comments in WSDL/schema output by suppressing XML comments\n\
--v	display version info\n\
--w	don't generate WSDL and schema files\n\
--x	don't generate sample XML message files\n\
--y	include C/C++ type access information in sample XML messages\n\
--z1	generate deprecated old-style C++ service proxies and objects\n\
-infile	header file to parse (or stdin)\n\
-\n");
-						exit(0);
-					case 'I':
-						a++;
-						g = 0;
-						s = NULL;
-						if (*a)
-							s = a;
-						else if (i < argc && argv[++i])
-							s = argv[i];
-						else
-							execerror("Option -I requires an import path");
-						if (importpath && s)
-						{	char *t	= emalloc(strlen(importpath) + strlen(s) + 2);
-							strcpy(t, importpath);
-							strcat(t, SOAP_PATHSEP);
-							strcat(t, s);
-							importpath = t;
-						}
-						else
-							importpath = s;
-						break;
-					case 'i':
-						iflag = 1;
-						break;
-					case 'j':
-						jflag = 1;
-						break;
-					case 'k':
-						kflag = 1;
-						break;
-					case 'm':
-						mflag = 1;
-						break;
-					case 'n':
-						nflag = 1;
-						break;
-					case 'l':
-						lflag = 1;
-						break;
-					case 'L':
-						Lflag = 1;
-						break;
-					case 's':
-						sflag = 1;
-						break;
-					case 'S':
-						Sflag = 1;
-						if (Cflag)
-            					  fprintf(stderr, "soapcpp2: using both options -C and -S omits client/server code\n");
-						break;
-					case 'T':
-						Tflag = 1;
-						break;
-					case 't':
-						tflag = 1;
-						break;
-					case 'u':
-						uflag = 1;
-						break;
-					case 'w':
-						wflag = 1;
-						break;
-					case 'x':
-						xflag = 1;
-						break;
-					case 'y':
-						yflag = 1;
-						break;
-					case 'p':
-						a++;
-						g = 0;
-						if (*a)
-							prefix = ns_cname(a, NULL);
-						else if (i < argc && argv[++i])
-							prefix = ns_cname(argv[i], NULL);
-						else
-							execerror("Option -p requires an output file name prefix");
-						break;
-					case 'Q':
-						Qflag = 1;
-						/* fall through */
-					case 'q':
-						a++;
-						g = 0;
-						if (*a)
-							namespaceid = ns_cname(a, NULL);
-						else if (i < argc && argv[++i])
-							namespaceid = ns_cname(argv[i], NULL);
-						else
-							execerror("Option -q requires a namespace name");
-						break;
-					case '0':
-						vflag = -1;
-						break;
-					case '1':
-						vflag = 1;
-						envURI = "http://schemas.xmlsoap.org/soap/envelope/";
-						encURI = "http://schemas.xmlsoap.org/soap/encoding/";
-						break;
-					case '2':
-						vflag = 2;
-						envURI = "http://www.w3.org/2003/05/soap-envelope";
-						encURI = "http://www.w3.org/2003/05/soap-encoding";
-						rpcURI = "http://www.w3.org/2003/05/soap-rpc";
-						break;
-					case 'v':
-						stop_flag = 1;
-						break;
-					case 'z':
-						a++;
-						g = 0;
-						if (*a)
-							zflag = *a - '0';
-						else if (i < argc && argv[++i])
-							zflag = *argv[i] - '0';
-						else
-							execerror("Option -z requires a digit");
-						break;
-					default:
-            					fprintf(stderr, "soapcpp2: Unknown option %s\n", a);
-            					exit(1);
-				}
-		}
-		else if (!(yyin = fopen(argv[i], "r")))
-		{	sprintf(errbuf, "Cannot open file \"%s\" for reading", argv[i]);
-			execerror(errbuf);
-		}
-		else
-			strcpy(filename, argv[i]);
-	}
-	fprintf(fmsg, "\n**  The gSOAP code generator for C and C++, soapcpp2 release "VERSION"\n**  Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc.\n**  All Rights Reserved. This product is provided \"as is\", without any warranty.\n**  The soapcpp2 tool is released under one of the following licenses:\n**  GPL or the commercial license by Genivia Inc.\n\n");
-	if (stop_flag)
-	  exit(0);
-	init();
-	if (yyparse())
-		synerror("skipping the remaining part of the input");
-	return errstat();
-}