/tags/rel-1-3-26/SWIG/Source/Modules/module.cxx
C++ | 57 lines | 29 code | 8 blank | 20 comment | 3 complexity | 4cdfc87991d48bec9b3d0aa9b279eaeb MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* -----------------------------------------------------------------------------
- * module.cxx
- *
- * This file is responsible for the module system.
- *
- * 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.
- * ----------------------------------------------------------------------------- */
- char cvsroot_module_cxx[] = "$Header$";
- #include "swigmod.h"
- struct Module {
- ModuleFactory fac;
- char *name;
- Module *next;
- Module(const char *n, ModuleFactory f) {
- fac = f;
- name = new char[strlen(n)+1];
- strcpy(name, n);
- next = 0;
- }
- };
- static Module *modules = 0;
- /* -----------------------------------------------------------------------------
- * void Swig_register_module()
- *
- * Register a module.
- * ----------------------------------------------------------------------------- */
- void Swig_register_module(const char *n, ModuleFactory f) {
- Module *m = new Module(n,f);
- m->next = modules;
- modules = m;
- }
- /* -----------------------------------------------------------------------------
- * Language *Swig_find_module()
- *
- * Given a command line option, locates the factory function.
- * ----------------------------------------------------------------------------- */
- ModuleFactory Swig_find_module(const char *name) {
- Module *m = modules;
- while (m) {
- if (strcmp(m->name,name) == 0) {
- return m->fac;
- }
- m = m->next;
- }
- return 0;
- }