/trunk/Source/Modules/module.cxx
C++ | 61 lines | 31 code | 8 blank | 22 comment | 3 complexity | 28420f8a92eebcce5c7e4a9367679e95 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* -----------------------------------------------------------------------------
- * This file is part of SWIG, which is licensed as a whole under version 3
- * (or any later version) of the GNU General Public License. Some additional
- * terms also apply to certain portions of SWIG. The full details of the SWIG
- * license and copyrights can be found in the LICENSE and COPYRIGHT files
- * included with the SWIG source code as distributed by the SWIG developers
- * and at http://www.swig.org/legal.html.
- *
- * module.cxx
- *
- * This file is responsible for the module system.
- * ----------------------------------------------------------------------------- */
- char cvsroot_module_cxx[] = "$Id: module.cxx 11876 2010-02-27 23:53:33Z 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;
- }