1658de77d66dbb56ac5c05ab082e5518c883334d
[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 *  This file must be used under the terms of the CeCILL.
6 *  This source file is licensed as described in the file COPYING, which
7 *  you should have received as part of this distribution.  The terms
8 *  are also available at
9 *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 *
11 */
12
13 #ifndef __FUNCMANAGER_HH__
14 #define __FUNCMANAGER_HH__
15
16 #include <map>
17 #include <list>
18 #include <iostream>
19 #include <string>
20
21 //disable warnings about exports STL items
22 #pragma warning (disable : 4251)
23
24 #ifdef _MSC_VER
25 #if FUNC_MAN_EXPORTS
26 #define EXTERN_FUNC_MAN __declspec (dllexport)
27 #else
28 #define EXTERN_FUNC_MAN __declspec (dllimport)
29 #endif
30 #else
31 #define EXTERN_FUNC_MAN
32 #endif
33
34 using namespace std;
35
36 #define MODULE_DIR  L"/modules/"
37 #define MACRO_DIR   L"/macros/"
38 #define ETC_DIR     L"/etc/"
39 #define SCI_EXT     L"*.sci"
40 #define START_EXT   L".start"
41 #define QUIT_EXT    L".quit"
42
43 //Gateway function pointer
44 typedef int (*GW_MOD)(void);
45 typedef int (*FINALIZE_MODULE)(void);
46
47 class EXTERN_FUNC_MAN FuncManager
48 {
49 private :
50     //  map <string, FuncInfo*> m_FuncMap;
51     typedef map<wstring, std::pair<GW_MOD, GW_MOD> >  ModuleMap;
52     ModuleMap  m_ModuleMap;
53     map<wstring, GW_MOD>    m_ActivModuleMap;
54     list<wstring>           m_ModuleName;
55     wstring                 m_szXmlFile;
56     bool                    m_bNoStart;
57 public:
58     static FuncManager* getInstance();
59     static void destroyInstance();
60
61     bool LoadModules();
62     bool UnloadModules();
63     bool StartModules();
64     bool EndModules();
65
66 private :
67     FuncManager(void);
68     ~FuncManager(void);
69
70     bool GetModules();
71     bool AppendModules();
72     bool VerifyModule(wchar_t* ModuleName);
73
74     bool CreateModuleList(void);
75
76     bool ExecuteStartFile(wstring _stModule);
77     bool ExecuteQuitFile(wstring _stModule);
78     bool ExecuteFile(wstring _stFile);
79     static FuncManager* me;
80 };
81
82 #endif //__FUNCMANAGER_HH__
83