*** VERSION 5.6.0 ***
[NeonServV5.git] / src / modules.h
1 /* modules.h - NeonServ v5.6
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 #include "main.h"
20
21 #define MODINFO_STATE_STARTED   0x01
22 #define MODINFO_STATE_PROTECTED 0x02
23
24 struct ModuleInfo {
25     char *name;
26     int module_id;
27     #ifndef WIN32
28     void *module;
29     #else
30     HMODULE module;
31     #endif
32     int state;
33     void *startfunc;
34     void *stopfunc;
35     struct ModuleInfo *next;
36 };
37
38 #ifndef DND_FUNCTIONS
39 void loadModules();
40 struct ModuleInfo *loadModule(char *name);
41 void start_modules();
42 void stop_modules();
43 int module_loaded(int module_id);
44
45 /* MODULAR ACCESSIBLE */ char *get_module_name(int module_id);
46
47 int ext_load_module(char *name);
48 int ext_unload_module(char *name);
49 int ext_reload_module(char *name);
50 struct ModuleInfo *ext_get_modules(struct ModuleInfo *last);
51 #endif
52 #endif