modules using java in nwni mode fixed.
[scilab.git] / scilab / modules / functions_manager / includes / funcmanager.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2008-2008 - DIGITEO - Antoine ELIAS
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15
16 #ifndef __FUNCMANAGER_HH__
17 #define __FUNCMANAGER_HH__
18
19 #include <map>
20 #include <set>
21 #include <list>
22 #include <iostream>
23 #include <string>
24
25 //disable warnings about exports STL items
26 #ifdef _MSC_VER
27 #pragma warning (disable : 4251)
28 #endif
29
30 #ifdef _MSC_VER
31 #if FUNC_MAN_EXPORTS
32 #define EXTERN_FUNC_MAN __declspec (dllexport)
33 #else
34 #define EXTERN_FUNC_MAN __declspec (dllimport)
35 #endif
36 #else
37 #define EXTERN_FUNC_MAN
38 #endif
39
40 #define MODULE_DIR  L"/modules/"
41 #define MACRO_DIR   L"/macros/"
42 #define ETC_DIR     L"/etc/"
43 #define SCI_EXT     L"*.sci"
44 #define START_EXT   L".start"
45 #define QUIT_EXT    L".quit"
46
47 //Gateway function pointer
48 typedef int (*GW_MOD)(void);
49 typedef int (*FINALIZE_MODULE)(void);
50
51 class EXTERN_FUNC_MAN FuncManager
52 {
53 private :
54     //  map <string, FuncInfo*> m_FuncMap;
55     typedef std::map<std::wstring, std::pair<GW_MOD, GW_MOD> >  ModuleMap;
56     ModuleMap  m_ModuleMap;
57     // set contains all modules non compatible nwni
58     std::set<std::wstring> m_NonNwniCompatible;
59     std::map<std::wstring, GW_MOD> m_ActivModuleMap;
60     std::list<std::wstring> m_ModuleName;
61     std::wstring m_szXmlFile;
62     bool m_bNoStart;
63 public:
64     static FuncManager* getInstance();
65     static void destroyInstance();
66
67     bool LoadModules();
68     bool UnloadModules();
69     bool EndModules();
70
71     bool isNonNwniModule(const std::wstring& _wstModule);
72
73 private :
74     FuncManager(void);
75     ~FuncManager(void);
76
77     bool GetModules();
78     bool AppendModules();
79     bool VerifyModule(wchar_t* ModuleName);
80
81     bool CreateModuleList(void);
82     void CreateNonNwniModuleList(void);
83
84     bool ExecuteStartFile(const std::wstring& _stModule);
85     bool ExecuteQuitFile(const std::wstring& _stModule);
86     bool ExecuteFile(const std::wstring& _stFile);
87     static FuncManager* me;
88 };
89
90 #endif //__FUNCMANAGER_HH__
91