update toolbox skeleton to scilab 6 and allow link on c++ gateway
[scilab.git] / scilab / modules / symbol / src / cpp / context.cpp
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 #include "context.hxx"
14 #include "function.hxx"
15 #include "macro.hxx"
16 #include "macrofile.hxx"
17
18 namespace symbol
19 {
20 Context* Context::me;
21
22 Context::Context()
23 {
24     m_scopes = new Scopes();
25     m_scopes->scope_begin();
26 }
27
28 Context* Context::getInstance(void)
29 {
30     if (me == 0)
31     {
32         me = new Context();
33     }
34     return me;
35 }
36
37 void Context::scope_begin()
38 {
39     m_scopes->scope_begin();
40 }
41
42 void Context::scope_end()
43 {
44     m_scopes->scope_end();
45 }
46
47 types::InternalType* Context::get(const symbol::Symbol& _key) const
48 {
49     return m_scopes->get(_key);
50 }
51
52 types::InternalType* Context::getCurrentLevel(const symbol::Symbol& _key) const
53 {
54     return m_scopes->getCurrentLevel(_key);
55 }
56
57 types::InternalType* Context::getAllButCurrentLevel(const symbol::Symbol& _key) const
58 {
59     return m_scopes->getAllButCurrentLevel(_key);
60 }
61
62 types::InternalType* Context::getFunction(const symbol::Symbol& _key) const
63 {
64     return m_scopes->get(_key);
65 }
66
67 std::list<symbol::Symbol>* Context::getFunctionList(const std::wstring& _stModuleName, bool _bFromEnd)
68 {
69     return m_scopes->getFunctionList(_stModuleName, _bFromEnd);
70 }
71
72 std::list<std::wstring>* Context::getVarsName()
73 {
74     return m_scopes->getVarsName();
75 }
76
77 std::list<std::wstring>* Context::getMacrosName()
78 {
79     return m_scopes->getMacrosName();
80 }
81
82 std::list<std::wstring>* Context::getFunctionsName()
83 {
84     return m_scopes->getFunctionsName();
85 }
86
87 bool Context::put(const symbol::Symbol& _key, types::InternalType &type)
88 {
89     m_scopes->put(_key, type);
90     return true;
91 }
92
93 bool Context::remove(const symbol::Symbol& _key)
94 {
95     m_scopes->remove(_key);
96     return true;
97 }
98
99 bool Context::putInPreviousScope(const symbol::Symbol& _key, types::InternalType &type)
100 {
101     m_scopes->putInPreviousScope(_key, type);
102     return true;
103 }
104
105 bool Context::addFunction(types::Function *_info)
106 {
107     m_scopes->addFunction(symbol::Symbol(_info->getName()), *_info);
108     return true;
109 }
110
111 bool Context::AddMacro(types::Macro *_info)
112 {
113     m_scopes->put(symbol::Symbol(_info->getName()), *_info);
114     return true;
115 }
116
117 bool Context::AddMacroFile(types::MacroFile *_info)
118 {
119     m_scopes->put(symbol::Symbol(_info->getName()), *_info);
120     return true;
121 }
122
123 bool Context::isGlobalVisible(const symbol::Symbol& _key) const
124 {
125     return m_scopes->isGlobalVisible(_key);
126 }
127
128 /*return global variable, search in global scope ( highest )*/
129 types::InternalType* Context::getGlobalValue(const symbol::Symbol& _key) const
130 {
131     m_scopes->getGlobalValue(_key);
132     return NULL;
133 }
134
135 /*return global variable existance status*/
136 bool Context::isGlobalExists(const symbol::Symbol& _key) const
137 {
138     return m_scopes->isGlobalExists(_key);
139 }
140
141 void Context::setGlobalValue(const symbol::Symbol& _key, types::InternalType &value)
142 {
143     m_scopes->setGlobalValue(_key, value);
144 }
145
146 void Context::createEmptyGlobalValue(const symbol::Symbol& _key)
147 {
148     m_scopes->createEmptyGlobalValue(_key);
149 }
150
151 void Context::setGlobalVisible(const symbol::Symbol& _key, bool bVisible)
152 {
153     m_scopes->setGlobalVisible(_key, bVisible);
154 }
155
156 void Context::removeGlobal(const symbol::Symbol& _key)
157 {
158     m_scopes->removeGlobal(_key);
159 }
160
161 void Context::removeGlobalAll()
162 {
163     m_scopes->removeGlobalAll();
164 }
165
166 void Context::print(std::wostream& ostr) const
167 {
168     ostr << L"  Environment Variables:" << std::endl;
169     ostr << L"==========================" << std::endl;
170     ostr << *m_scopes;
171 }
172
173 }