1 /* -----------------------------------------------------------------------------
2 * See the LICENSE file for information on copyright, usage and redistribution
3 * of SWIG, and the README file for authors - http://www.swig.org/release.html.
5 * Simplified Wrapper and Interface Generator (SWIG)
9 * This file is the main entry point to SWIG. It collects the command
10 * line options, registers built-in language modules, and instantiates
11 * a module for code generation. If adding new language modules
12 * to SWIG, you would modify this file.
13 * ----------------------------------------------------------------------------- */
15 char cvsroot_swigmain_cxx[] = "$Id: swigmain.cxx 10969 2008-12-06 23:15:20Z wsfulton $";
20 /* Module factories. These functions are used to instantiate
21 the built-in language modules. If adding a new language
22 module to SWIG, place a similar function here. Make sure
23 the function has "C" linkage. This is required so that modules
24 can be dynamically loaded in future versions. */
27 Language *swig_tcl(void);
28 Language *swig_python(void);
29 Language *swig_perl5(void);
30 Language *swig_ruby(void);
31 Language *swig_guile(void);
32 Language *swig_modula3(void);
33 Language *swig_mzscheme(void);
34 Language *swig_java(void);
35 Language *swig_php(void);
36 Language *swig_php4(void);
37 Language *swig_ocaml(void);
38 Language *swig_octave(void);
39 Language *swig_pike(void);
40 Language *swig_sexp(void);
41 Language *swig_xml(void);
42 Language *swig_chicken(void);
43 Language *swig_csharp(void);
44 Language *swig_allegrocl(void);
45 Language *swig_lua(void);
46 Language *swig_clisp(void);
47 Language *swig_cffi(void);
48 Language *swig_uffi(void);
49 Language *swig_r(void);
58 /* Association of command line options to language modules.
59 Place an entry for new language modules here, keeping the
60 list sorted alphabetically. */
62 static swig_module modules[] = {
63 {"-allegrocl", swig_allegrocl, "ALLEGROCL"},
64 {"-chicken", swig_chicken, "CHICKEN"},
65 {"-clisp", swig_clisp, "CLISP"},
66 {"-cffi", swig_cffi, "CFFI"},
67 {"-csharp", swig_csharp, "C#"},
68 {"-guile", swig_guile, "Guile"},
69 {"-java", swig_java, "Java"},
70 {"-lua", swig_lua, "Lua"},
71 {"-modula3", swig_modula3, "Modula 3"},
72 {"-mzscheme", swig_mzscheme, "Mzscheme"},
73 {"-ocaml", swig_ocaml, "Ocaml"},
74 {"-octave", swig_octave, "Octave"},
75 {"-perl", swig_perl5, "Perl"},
76 {"-perl5", swig_perl5, 0},
77 {"-php", swig_php, "PHP"},
78 {"-php4", swig_php4, 0},
79 {"-php5", swig_php, 0},
80 {"-pike", swig_pike, "Pike"},
81 {"-python", swig_python, "Python"},
82 {"-r", swig_r, "R (aka GNU S)"},
83 {"-ruby", swig_ruby, "Ruby"},
84 {"-sexp", swig_sexp, "Lisp S-Expressions"},
85 {"-tcl", swig_tcl, "Tcl"},
86 {"-tcl8", swig_tcl, 0},
87 {"-uffi", swig_uffi, "Common Lisp / UFFI"},
88 {"-xml", swig_xml, "XML"},
98 #define SWIG_LANG "-python"
101 //-----------------------------------------------------------------
104 // Main program. Initializes the files and starts the parser.
105 //-----------------------------------------------------------------
107 void SWIG_merge_envopt(const char *env, int oargc, char *oargv[], int *nargc, char ***nargv) {
115 int arge = oargc + 1024;
116 char **argv = (char **) malloc(sizeof(char *) * (arge));
117 char *buffer = (char *) malloc(2048);
121 while ((b != be) && *c && (argc < arge)) {
122 while (isspace(*c) && *c)
128 while ((b != be) && *c && !isspace(*c)) {
135 for (int i = 1; (i < oargc) && (argc < arge); ++i, ++argc) {
136 argv[argc] = oargv[i];
143 int main(int margc, char **margv) {
146 ModuleFactory fac = 0;
151 SWIG_merge_envopt(getenv("SWIG_FEATURES"), margc, margv, &argc, &argv);
154 SIOUXSettings.asktosaveonclose = false;
155 argc = ccommand(&argv);
158 /* Register built-in modules */
159 for (i = 0; modules[i].name; i++) {
160 Swig_register_module(modules[i].name, modules[i].fac);
163 Swig_init_args(argc, argv);
166 for (i = 1; i < argc; i++) {
168 fac = Swig_find_module(argv[i]);
172 } else if (strcmp(argv[i], "-nolang") == 0) {
175 } else if ((strcmp(argv[i], "-dnone") == 0) ||
176 (strcmp(argv[i], "-dhtml") == 0) ||
177 (strcmp(argv[i], "-dlatex") == 0) || (strcmp(argv[i], "-dascii") == 0) || (strcmp(argv[i], "-stat") == 0)) {
178 Printf(stderr, "swig: Warning. %s option deprecated.\n", argv[i]);
180 } else if ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "--help") == 0)) {
181 if (strcmp(argv[i], "--help") == 0)
182 strcpy(argv[i], "-help");
183 Printf(stdout, "Target Language Options\n");
184 for (int j = 0; modules[j].name; j++) {
185 if (modules[j].help) {
186 Printf(stdout, " %-15s - Generate %s wrappers\n", modules[j].name, modules[j].help);
189 // Swig_mark_arg not called as the general -help options also need to be displayed later on
194 fac = Swig_find_module(SWIG_LANG);
199 int res = SWIG_main(argc, argv, dl);