where : value returned was inverted.
[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 //disable warnings about exports STL items
17 #pragma warning (disable : 4251)
18
19 #include <list>
20 #include <map>
21 #include <string>
22 #include "callable.hxx"
23 #include "threadId.hxx"
24 #include "cell.hxx"
25
26 extern "C"
27 {
28 #include "dynlib_system_env.h"
29 #include "Thread_Wrapper.h"
30 }
31
32 class EXTERN_SYSTEM_ENV ConfigVariable
33 {
34     //module list
35 private :
36     static std::list<std::wstring> m_ModuleList;
37
38 public :
39     static void setModuleList(std::list<std::wstring>& _module_list);
40     static std::list<std::wstring> getModuleList();
41
42
43     //SCI
44 private :
45     static std::wstring m_SCIPath;
46
47 public :
48     static void setSCIPath(std::wstring& _SCIPath);
49     static std::wstring getSCIPath();
50
51     //SCIHOME
52 private :
53     static std::wstring m_SCIHOME;
54
55 public :
56     static void setSCIHOME(std::wstring& _m_SCIHOME);
57     static std::wstring getSCIHOME();
58
59     //TMPDIR
60 private :
61     static std::wstring m_TMPDIR;
62
63 public :
64     static void setTMPDIR(std::wstring& _TMPDIR);
65     static std::wstring getTMPDIR();
66
67     // Force Quit
68 private :
69     static bool m_bForceQuit;
70
71 public :
72     static void setForceQuit(bool _bForceQuit);
73     static bool getForceQuit(void);
74
75     // Exit Status
76 private :
77     static int m_iExitStatus;
78
79 public :
80     static void setExitStatus(int _iExitStatus);
81     static int getExitStatus(void);
82
83     // Digit precision, ex format function
84 private :
85     static int m_iFormatSize;
86
87 public :
88     static void setFormatSize(int _iFormatSize);
89     static int getFormatSize(void);
90
91     // printf format ( 0 -> "e", 1 -> "v")
92 private :
93     static int m_iFormatMode;
94
95 public :
96     static void setFormatMode(int _iFormatMode);
97     static int getFormatMode(void);
98
99
100     // Screen console width
101 private :
102     static int m_iConsoleWidth;
103
104 public :
105     static void setConsoleWidth(int _iConsoleWidth);
106     static int getConsoleWidth(void);
107
108     // Screen console lines
109 private :
110     static int m_iConsoleLines;
111
112 public :
113     static void setConsoleLines(int _iConsoleLines);
114     static int getConsoleLines(void);
115
116     // Scilab mode
117 private :
118     static int m_iScilabMode;
119
120 public :
121     static void setScilabMode(int _iScilabMode);
122     static int getScilabMode(void);
123
124     //Warning mode
125 private :
126     static bool m_bWarningMode;
127
128 public :
129     static void setWarningMode(bool _bWarningMode);
130     static bool getWarningMode(void);
131
132     //HOME
133 private :
134     static std::wstring m_HOME;
135
136 public :
137     static void setHOME(std::wstring& _m_HOME);
138     static std::wstring getHOME();
139
140     //Clear last error information
141 public :
142     static void setLastErrorClear(void);
143
144     //Clear last error information
145 private :
146     static bool m_bLastErrorCall;
147 public :
148     static void setLastErrorCall(void);
149     static void clearLastError(void);
150
151     //Last Error Message
152 private :
153     static std::wstring m_wstError;
154
155 public :
156     static void setLastErrorMessage(std::wstring _wstError);
157     static std::wstring getLastErrorMessage();
158
159     //Last Error ID
160 private :
161     static int m_iError;
162     static bool m_bError;
163
164 public :
165     static void setLastErrorNumber(int _iError);
166     static int getLastErrorNumber();
167     static void setError();
168     static bool isError();
169     static void resetError();
170
171     //Last Error Line
172 private :
173     static int m_iErrorLine;
174
175 public :
176     static void setLastErrorLine(int _iLine);
177     static int getLastErrorLine();
178
179     //Last Error Function
180 private :
181     static std::wstring m_wstErrorFunction;
182
183 public :
184     static void setLastErrorFunction(std::wstring _wstFunction);
185     static std::wstring getLastErrorFunction();
186
187     //Prompt Mode and Silent error
188 public :
189     /*
190     Prompt mode
191     normal = 0,
192     silent = -1,
193     prompt = 2,
194     exec = 1,
195     exec3 = 3,
196     step = 4,
197     step7 = 7
198     */
199
200     /*
201        show = 0
202        silent = 1
203     */
204 private :
205     static int m_iPromptMode;
206     static int m_iSilentError;
207
208     //set before function call to know status of e.is_verbose in functions
209     static bool m_bVerbose;
210
211 public :
212     static void setPromptMode(int _iPromptMode);
213     static int getPromptMode(void);
214     static bool isPromptShow(void);
215
216     static void setSilentError(int _iSilentError);
217     static int getSilentError(void);
218     static void setVerbose(bool _bVerbose);
219     static bool getVerbose(void);
220
221     //Thread List
222
223 private :
224     static std::list<types::ThreadId*> m_threadList;
225 public :
226
227     static types::ThreadId* getThread(__threadKey _key);
228     static types::ThreadId* getLastRunningThread();
229     static types::ThreadId* getLastPausedThread();
230     static types::ThreadId* getLastThread();
231
232     static types::Cell* getAllThreads(void);
233     static void addThread(types::ThreadId* _thread);
234     static void deleteThread(__threadKey _key);
235
236     // Pause level
237 private :
238     static int m_iPauseLevel;
239
240 public :
241     static void IncreasePauseLevel();
242     static void DecreasePauseLevel();
243     static int getPauseLevel();
244
245     // Dynamic Libraries
246
247     typedef struct
248     {
249         wchar_t* pwstLibraryName;   /** name of dynamic library **/
250         unsigned long long hLib;        /** handle of the library **/
251     } DynamicLibraryStr;
252
253     typedef struct
254     {
255         wchar_t* pwstEntryPointName;    /** name of interface **/
256         int iLibIndex;                  /** name of interface **/
257         void (*functionPtr)(wchar_t*);          /** entrypoint for the interface **/
258         bool bOK;                       /** flag set to TRUE if entrypoint can be used **/
259     } EntryPointStr;
260
261 private :
262     static std::list<EntryPointStr*> m_EntryPointList;
263     static std::vector<DynamicLibraryStr*> m_DynLibList;
264 public :
265
266     /* tools fucntions */
267     static void setLibraryName(DynamicLibraryStr* _pDynamicLibrary, wchar_t* _pwstLibraryName);
268     static void setEntryPointName(EntryPointStr* _pEntryPoint, wchar_t* _pwstEntryPointName);
269
270     /* "Constructors" */
271     static DynamicLibraryStr* getNewDynamicLibraryStr();
272     static EntryPointStr* getNewEntryPointStr();
273
274     /* Dynamic libraries functions */
275     static std::vector<DynamicLibraryStr*>* getDynamicLibraryList();
276     static int addDynamicLibrary(DynamicLibraryStr* _pDynamicLibrary);
277     static void removeDynamicLibrary(int _iDynamicLibraryIndex);
278     static DynamicLibraryStr* getDynamicLibrary(int _iDynamicLibraryIndex);
279     static bool isDynamicLibrary(int _iDynamicLibraryIndex);
280
281     /* Entry point functions */
282     static std::list<EntryPointStr*>* getEntryPointList();
283     static void addEntryPoint(EntryPointStr* _pEP);
284     static void removeEntryPoint(int _iEntryPointIndex);
285     static EntryPointStr* getEntryPoint(wchar_t* _pwstEntryPointName, int _iDynamicLibraryIndex = -1);
286     static std::vector<std::wstring> getEntryPointNameList();
287
288     // Command Line Arguments
289 private :
290     static std::vector<std::wstring> m_Args;
291 public :
292     static void setCommandLineArgs(int _iArgs, char** _pstArgs);
293     static wchar_t** getCommandLineArgs(int* _piCount);
294
295     //schur function
296 private :
297     static types::Callable* m_schurFunction;
298
299 public :
300     static void setSchurFunction(types::Callable* _schurFunction);
301     static types::Callable* getSchurFunction();
302
303     //grand (module randlib)
304 private :
305     static int m_currentBaseGen;
306     static int m_currentClcg4;
307
308 public :
309     static void setCurrentBaseGen(int _currentBaseGen);
310     static int getCurrentBaseGen();
311
312     static void setCurrentClcg4(int _currentClcg4);
313     static int getCurrentClcg4();
314
315     //Start finish flag
316 private :
317     static bool m_bStartFinished;
318
319 public :
320     static void setStartFinished(bool _bStartFinished);
321     static bool getStartFinished();
322
323     // ieee
324 private :
325     static int m_iIeee;
326
327 public :
328     static void setIeee(int _iIeee);
329     static int getIeee();
330
331     // simp mode
332 private :
333     static int m_iSimpMode;
334
335 public :
336     static void setSimpMode(int _iSimpMode);
337     static int getSimpMode();
338
339     // funcprot mode
340 private :
341     static int m_iFuncprot;
342
343 public :
344     static void setFuncprot(int _iFuncprot);
345     static int getFuncprot();
346
347     // where
348 private :
349     static std::list< std::pair<int, std::wstring> > m_Where;
350     static std::list<int> m_FirstMacroLine;
351 public :
352     static void where_begin(int _iLineNum, std::wstring _wstName);
353     static void where_end();
354     static std::list< std::pair<int, std::wstring> >& getWhere();
355
356     static void macroFirstLine_begin(int _iLine);
357     static void macroFirstLine_end();
358     static int getMacroFirstLines();
359
360     //module called with variable by reference
361 private :
362     static std::list<std::wstring> m_ReferenceModules;
363 public :
364     static bool checkReferenceModule(std::wstring _module);
365     static void addReferenceModule(std::wstring _module);
366     static void removeReferenceModule(std::wstring _module);
367     static std::list<std::wstring> getReferenceModules();
368 };
369
370 #endif /* !__CONFIGVARIABLE_HXX__ */