linear_algebra plugged.
[scilab.git] / scilab / modules / system_env / includes / configvariable.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 __CONFIGVARIABLE_HXX__
14 #define __CONFIGVARIABLE_HXX__
15
16 #include <list>
17 #include <map>
18 #include <string>
19 #include "threadId.hxx"
20 #include "callable.hxx"
21 #include "cell.hxx"
22
23 extern "C"
24 {
25 #include "dynlib_system_env.h"
26 #include "Thread_Wrapper.h"
27 }
28
29 class EXTERN_SYSTEM_ENV ConfigVariable
30 {
31     //module list
32 private :
33     static std::list<std::wstring> m_ModuleList;
34
35 public :
36     static void setModuleList(std::list<std::wstring>& _module_list);
37     static std::list<std::wstring> getModuleList();
38
39
40     //SCI
41 private :
42     static std::wstring m_SCIPath;
43
44 public :
45     static void setSCIPath(std::wstring& _SCIPath);
46     static std::wstring getSCIPath();
47
48     //SCIHOME
49 private :
50     static std::wstring m_SCIHOME;
51
52 public :
53     static void setSCIHOME(std::wstring& _m_SCIHOME);
54     static std::wstring getSCIHOME();
55
56     //TMPDIR
57 private :
58     static std::wstring m_TMPDIR;
59
60 public :
61     static void setTMPDIR(std::wstring& _TMPDIR);
62     static std::wstring getTMPDIR();
63
64     // Force Quit
65 private :
66     static bool m_bForceQuit;
67
68 public :
69     static void setForceQuit(bool _bForceQuit);
70     static bool getForceQuit(void);
71
72     // Exit Status
73 private :
74     static int m_iExitStatus;
75
76 public :
77     static void setExitStatus(int _iExitStatus);
78     static int getExitStatus(void);
79
80     // Digit precision, ex format function
81 private :
82     static int m_iFormat;
83
84 public :
85     static void setFormat(int _iFormat);
86     static int getFormat(void);
87
88
89     // Screen console width
90 private :
91     static int m_iConsoleWidth;
92
93 public :
94     static void setConsoleWidth(int _iConsoleWidth);
95     static int getConsoleWidth(void);
96
97     // Screen console lines
98 private :
99     static int m_iConsoleLines;
100
101 public :
102     static void setConsoleLines(int _iConsoleLines);
103     static int getConsoleLines(void);
104
105     // Scilab mode
106 private :
107     static int m_iScilabMode;
108
109 public :
110     static void setScilabMode(int _iScilabMode);
111     static int getScilabMode(void);
112
113     //Warning mode
114 private :
115     static bool m_bWarningMode;
116
117 public :
118     static void setWarningMode(bool _bWarningMode);
119     static bool getWarningMode(void);
120
121     //HOME
122 private :
123     static std::wstring m_HOME;
124
125 public :
126     static void setHOME(std::wstring& _m_HOME);
127     static std::wstring getHOME();
128
129     //Clear last error information
130 public :
131     static void setLastErrorClear(void);
132
133     //Clear last error information
134 private :
135     static bool m_bLastErrorCall;
136 public :
137     static void setLastErrorCall(void);
138     static void clearLastError(void);
139
140     //Last Error Message
141 private :
142     static std::wstring m_wstError;
143
144 public :
145     static void setLastErrorMessage(std::wstring _wstError);
146     static std::wstring getLastErrorMessage();
147
148     //Last Error ID
149 private :
150     static int m_iError;
151
152 public :
153     static void setLastErrorNumber(int _iError);
154     static int getLastErrorNumber();
155
156     //Last Error Line
157 private :
158     static int m_iErrorLine;
159
160 public :
161     static void setLastErrorLine(int _iLine);
162     static int getLastErrorLine();
163
164     //Last Error Function
165 private :
166     static std::wstring m_wstErrorFunction;
167
168 public :
169     static void setLastErrorFunction(std::wstring _wstFunction);
170     static std::wstring getLastErrorFunction();
171
172     //Prompt Mode and Silent error
173 public :
174     /*
175     Prompt mode
176     normal = 0,
177     silent = -1,
178     prompt = 2,
179     exec = 1,
180     exec3 = 3,
181     step = 4,
182     step7 = 7
183     */
184
185     /*
186        show = 0
187        silent = 1
188     */
189 private :
190     static int m_iPromptMode;
191     static int m_iSilentError;
192
193 public :
194     static void setPromptMode(int _iPromptMode);
195     static int getPromptMode(void);
196     static bool isPromptShow(void);
197
198     static void setSilentError(int _iSilentError);
199     static int getSilentError(void);
200
201     //Thread List
202
203 private :
204     static std::list<types::ThreadId*> m_threadList;
205 public :
206
207     static types::ThreadId* getThread(__threadKey _key);
208     static types::ThreadId* getLastRunningThread();
209     static types::ThreadId* getLastPausedThread();
210     static types::ThreadId* getLastThread();
211
212     static types::Cell* getAllThreads(void);
213     static void addThread(types::ThreadId* _thread);
214     static void deleteThread(__threadKey _key);
215
216     // Pause level
217 private :
218     static int m_iPauseLevel;
219
220 public :
221     static void IncreasePauseLevel();
222     static void DecreasePauseLevel();
223     static int getPauseLevel();
224
225 // Dynamic Libraries
226
227     typedef struct 
228     {
229         wchar_t* pwstLibraryName;   /** name of dynamic library **/
230         unsigned long  hLib;        /** handle of the library **/
231     } DynamicLibraryStr;
232
233     typedef struct 
234     {
235         wchar_t* pwstEntryPointName;    /** name of interface **/
236         int iLibIndex;                  /** name of interface **/
237         void (*functionPtr)(wchar_t*);          /** entrypoint for the interface **/
238         bool bOK;                       /** flag set to TRUE if entrypoint can be used **/
239     } EntryPointStr;
240
241 private :
242     static std::list<EntryPointStr*> m_EntryPointList;
243     static std::vector<DynamicLibraryStr*> m_DynLibList;
244 public :
245
246     /* tools fucntions */
247     static void setLibraryName(DynamicLibraryStr* _pDynamicLibrary, wchar_t* _pwstLibraryName);
248     static void setEntryPointName(EntryPointStr* _pEntryPoint, wchar_t* _pwstEntryPointName);
249
250     /* "Constructors" */
251     static DynamicLibraryStr* getNewDynamicLibraryStr();
252     static EntryPointStr* getNewEntryPointStr();
253
254     /* Dynamic libraries functions */
255     static std::vector<DynamicLibraryStr*>* getDynamicLibraryList();
256     static int addDynamicLibrary(DynamicLibraryStr* _pDynamicLibrary);
257     static void removeDynamicLibrary(int _iDynamicLibraryIndex);
258     static DynamicLibraryStr* getDynamicLibrary(int _iDynamicLibraryIndex);
259     static bool isDynamicLibrary(int _iDynamicLibraryIndex);
260
261     /* Entry point functions */
262     static std::list<EntryPointStr*>* getEntryPointList();
263     static void addEntryPoint(EntryPointStr* _pEP);
264     static void removeEntryPoint(int _iEntryPointIndex);
265     static EntryPointStr* getEntryPoint(wchar_t* _pwstEntryPointName, int _iDynamicLibraryIndex = -1);
266     static std::vector<std::wstring> getEntryPointNameList();
267
268     // Command Line Arguments
269 private :
270     static std::vector<std::wstring> m_Args;
271 public :
272     static void setCommandLineArgs(int _iArgs, char** _pstArgs);
273     static wchar_t** getCommandLineArgs(int* _piCount);
274
275
276 //    //input function
277 //private :
278 //    static SCILAB_INPUT_METHOD m_pInputMethod;
279 //public :
280 //    static void setInputMethod(SCILAB_INPUT_METHOD _pInputMethod);
281 //    static SCILAB_INPUT_METHOD getInputMethod(void);
282 //
283 //    //output function
284 //private :
285 //    static SCILAB_OUTPUT_METHOD m_pOutputMethod;
286 //public :
287 //    static void setOutputMethod(SCILAB_OUTPUT_METHOD _pOutputMethod);
288 //    static SCILAB_OUTPUT_METHOD getOutputMethod(void);
289
290     //schur function
291 private :
292     static types::Callable* m_schurFunction;
293
294 public :
295     static void setSchurFunction(types::Callable* _schurFunction);
296     static types::Callable* getSchurFunction();
297
298
299 };
300
301 #endif /* !__CONFIGVARIABLE_HXX__ */