c90f71dd8c
special cases and other things in wxPython, and since I plan on making several more, I've decided to put the SWIG sources in wxPython's CVS instead of relying on maintaining patches. This effectivly becomes a fork of an obsolete version of SWIG, :-( but since SWIG 1.3 still doesn't have some things I rely on in 1.1, not to mention that my custom patches would all have to be redone, I felt that this is the easier road to take. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
142 lines
3.6 KiB
C++
142 lines
3.6 KiB
C++
/*******************************************************************************
|
|
* Simplified Wrapper and Interface Generator (SWIG)
|
|
*
|
|
* Author : David Beazley
|
|
*
|
|
* Department of Computer Science
|
|
* University of Chicago
|
|
* 1100 E 58th Street
|
|
* Chicago, IL 60637
|
|
* beazley@cs.uchicago.edu
|
|
*
|
|
* Please read the file LICENSE for the copyright and terms by which SWIG
|
|
* can be used and distributed.
|
|
*******************************************************************************/
|
|
|
|
#include "internal.h"
|
|
|
|
/*******************************************************************************
|
|
* $Header$
|
|
*
|
|
* File : getopt.cxx
|
|
*
|
|
* This file defines a few functions for handling command line arguments.
|
|
* C++ makes this really funky---especially since each language module
|
|
* may want to extract it's own command line arguments.
|
|
*
|
|
* My own special version of getopt. This is a bit weird, because we
|
|
* don't know what the options are in advance (they could be determined
|
|
* by a language module).
|
|
*******************************************************************************/
|
|
|
|
static char **args;
|
|
static int numargs;
|
|
static int *marked;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// void init_args(int argc, char **argv)
|
|
//
|
|
// Initializes the argument list.
|
|
//
|
|
// Inputs :
|
|
// argc = Argument count
|
|
// argv = Argument array
|
|
//
|
|
// Output : None
|
|
//
|
|
// Side Effects : Saves local copy of argc and argv
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void
|
|
init_args(int argc, char **argv)
|
|
{
|
|
int i;
|
|
numargs = argc;
|
|
args = argv;
|
|
marked = new int[numargs];
|
|
for (i = 0; i < argc; i++) {
|
|
marked[i] = 0;
|
|
}
|
|
marked[0] = 1;
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// void mark_arg(int n)
|
|
//
|
|
// Marks an argument as being parsed. All modules should do this whenever they
|
|
// parse a command line option.
|
|
//
|
|
// Inputs : n = Argument number
|
|
//
|
|
// Output : None
|
|
//
|
|
// Side Effects : Sets a status bit internally
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void
|
|
mark_arg(int n) {
|
|
if (marked)
|
|
marked[n] = 1;
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// void check_options()
|
|
//
|
|
// Checks for unparsed command line options. If so, issues an error and exits.
|
|
//
|
|
// Inputs : None
|
|
//
|
|
// Output : None
|
|
//
|
|
// Side Effects : exits if there are unparsed options
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void check_options() {
|
|
|
|
int error = 0;
|
|
int i;
|
|
|
|
if (!marked) {
|
|
fprintf(stderr,"Must specify an input file. Use -help for available options.\n");
|
|
SWIG_exit(1);
|
|
}
|
|
for (i = 1; i < numargs-1; i++) {
|
|
if (!marked[i]) {
|
|
fprintf(stderr,"swig error : Unrecognized option %s\n", args[i]);
|
|
error=1;
|
|
}
|
|
}
|
|
|
|
if (error) {
|
|
fprintf(stderr,"Use 'swig -help' for available options.\n");
|
|
SWIG_exit(1);
|
|
}
|
|
|
|
if (marked[numargs-1]) {
|
|
fprintf(stderr,"Must specify an input file. Use -help for available options.\n");
|
|
SWIG_exit(1);
|
|
}
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// void arg_error()
|
|
//
|
|
// Generates a generic error message and exits.
|
|
//
|
|
// Inputs : None
|
|
//
|
|
// Output : None
|
|
//
|
|
// Side Effects : Exits
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void arg_error() {
|
|
fprintf(stderr,"SWIG : Unable to parse command line options.\n");
|
|
fprintf(stderr,"Use 'swig -help' for available options.\n");
|
|
SWIG_exit(1);
|
|
}
|
|
|
|
|
|
|
|
|