/tags/rel-1.3.35/Source/Modules/module.cxx
C++ | 57 lines | 31 code | 8 blank | 18 comment | 3 complexity | cb11aa71293213d8e4470a43639670af MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
- * module.cxx
- *
- * This file is responsible for the module system.
- * ----------------------------------------------------------------------------- */
- char cvsroot_module_cxx[] = "$Id: module.cxx 10003 2007-10-17 21:42:11Z wsfulton $";
- #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;
- } ~Module() {
- delete[]name;
- }
- };
- 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;
- }