added module management commands
[NeonServV5.git] / src / modules.h
1 /* modules.h - NeonServ v5.3
2  * Copyright (C) 2011-2012  Philipp Kreil (pk910)
3  * 
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  * 
14  * You should have received a copy of the GNU General Public License 
15  * along with this program. If not, see <http://www.gnu.org/licenses/>. 
16  */
17 #ifndef _modules_h
18 #define _modules_h
19
20 #define MODINFO_STATE_STARTED 0x01
21
22 struct ModuleInfo {
23     char *name;
24     int module_id;
25     #ifndef WIN32
26     void *module;
27     #else
28     HMODULE module;
29     #endif
30     int state;
31     void *startfunc;
32     void *loopfunc;
33     void *stopfunc;
34     struct ModuleInfo *next;
35 };
36
37 #ifndef DND_FUNCTIONS
38 void loadModules();
39 int loadModule(char *name);
40 void start_modules();
41 void loop_modules();
42 void stop_modules();
43 int module_loaded(int module_id);
44
45 int ext_load_module(char *name);
46 int ext_unload_module(char *name);
47 int ext_reload_module(char *name);
48 struct ModuleInfo *ext_get_modules(struct ModuleInfo *last);
49 #endif
50 #endif