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