add save(filename) to save all variables in context.
[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 EndModules();
64
65 private :
66     FuncManager(void);
67     ~FuncManager(void);
68
69     bool GetModules();
70     bool AppendModules();
71     bool VerifyModule(wchar_t* ModuleName);
72
73     bool CreateModuleList(void);
74
75     bool ExecuteStartFile(wstring _stModule);
76     bool ExecuteQuitFile(wstring _stModule);
77     bool ExecuteFile(wstring _stFile);
78     static FuncManager* me;
79 };
80
81 #endif //__FUNCMANAGER_HH__
82