git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@964 626c5289-ae23-0410-ae9c-e8d60b6d4f22
103 lines
2.6 KiB
C
103 lines
2.6 KiB
C
/* -----------------------------------------------------------------------------
|
|
* main.c
|
|
*
|
|
* SWIG main program.
|
|
*
|
|
* Author(s) : David Beazley (beazley@cs.uchicago.edu)
|
|
*
|
|
* Copyright (C) 1999-2000. The University of Chicago
|
|
* See the file LICENSE for information on usage and redistribution.
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
#include "swigconfig.h"
|
|
#include "swigver.h"
|
|
#include "swig.h"
|
|
|
|
static char *usage = (char*)"\
|
|
\nGeneral Options\n\
|
|
-version - Print SWIG version number\n\
|
|
-help - This output.\n\n";
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
* Swig_main()
|
|
*
|
|
* Entry point to SWIG. This should only be called after all of the available
|
|
* modules have been registered (presumably by the real main function).
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
int Swig_main(int argc, char **argv, char **modules) {
|
|
int i;
|
|
int help = 0;
|
|
int freeze = 0;
|
|
Hash *top = 0;
|
|
|
|
/* Initialize the SWIG core */
|
|
Swig_init();
|
|
Swig_init_args(argc,argv);
|
|
|
|
/* Look for command line options */
|
|
for (i = 1; i < argc; i++) {
|
|
if (argv[i]) {
|
|
if (strcmp(argv[i],"-freeze") == 0) {
|
|
freeze= 1;
|
|
Swig_mark_arg(i);
|
|
} else if (strcmp(argv[i],"-version") == 0) {
|
|
fprintf(stderr,"\nSWIG Version %s %s\n",
|
|
SWIG_VERSION, SWIG_SPIN);
|
|
fprintf(stderr,"Copyright (c) 1995-1998, University of Utah and the Regents of the University of California\n");
|
|
fprintf(stderr,"Copyright (c) 1998-2000, University of Chicago\n");
|
|
Swig_exit (EXIT_SUCCESS);
|
|
} else if (strcmp(argv[i],"-help") == 0) {
|
|
Printf(stderr,"%s",usage);
|
|
Swig_mark_arg(i);
|
|
help = 1;
|
|
} else {
|
|
if (!Swig_check_marked(i)) {
|
|
Module *m;
|
|
m = Swig_load_module(argv[i]+1);
|
|
if (m) {
|
|
Swig_mark_arg(i);
|
|
Swig_init_module(m, argc, argv);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Load the default modules (always enabled) */
|
|
if (modules) {
|
|
int i = 0;
|
|
while (modules[i]) {
|
|
Module *m;
|
|
m = Swig_load_module(modules[i]);
|
|
if (m) {
|
|
Swig_init_module(m,argc,argv);
|
|
} else {
|
|
Printf(stderr,"Swig: default module '%s' not found!\n", modules[i]);
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
if (help) Swig_exit(EXIT_SUCCESS);
|
|
/* Check the arguments */
|
|
Swig_check_options();
|
|
|
|
/* Get the input file name and create a starting node */
|
|
top = NewHash();
|
|
Settag(top,"swig:initial");
|
|
Setname(top,argv[argc-1]);
|
|
|
|
/* Run the modules */
|
|
Swig_run_modules(top);
|
|
|
|
while(freeze);
|
|
return 0;
|
|
}
|
|
|
|
void Swig_exit(int n) {
|
|
exit(n);
|
|
}
|
|
|
|
|
|
|