19 private Memory sharedMemory;
20 private Memory scriptMemory;
21 private Dictionary<string, object> variables;
22 private Dictionary<string, object> tempVariables;
24 private Memory(
Scope scope, Memory sharedMemory, Memory scriptMemory)
27 this.sharedMemory = sharedMemory;
28 this.scriptMemory = scriptMemory;
29 variables =
new Dictionary<string, object>();
30 tempVariables =
new Dictionary<string, object>();
33 internal void HideTemporaryVariables()
36 foreach (String identifier
in variables.Keys)
37 if (identifier.StartsWith(
"["))
38 tempVariables[identifier] = variables[identifier];
40 foreach (String strIdentifier
in tempVariables.Keys)
41 variables.Remove(strIdentifier);
45 internal void ExposeTemporaryVariables()
48 foreach (String identifier
in tempVariables.Keys)
49 variables[identifier] = tempVariables[identifier];
51 tempVariables.Clear();
57 return new Memory(
Scope.Shared,
null,
null);
62 return new Memory(
Scope.Script, sharedMemory,
null);
68 Scope.Local, scriptMemory.sharedMemory, scriptMemory);
74 tempVariables.Clear();
77 public bool Exists(
string identifier)
84 return variables.ContainsKey(identifier);
87 if (variables.ContainsKey(identifier))
90 return sharedMemory.Exists(identifier);
93 if (variables.ContainsKey(identifier))
96 return scriptMemory.Exists(identifier);
107 variables.Remove(identifier);
116 if (variables.ContainsKey(identifier))
122 if (variables.ContainsKey(identifier))
125 return sharedMemory.Find(identifier);
128 if (variables.ContainsKey(identifier))
131 return scriptMemory.Find(identifier);
144 List<String> listIdentifiers
145 =
new List<String>(variables.Keys);
146 return listIdentifiers.AsReadOnly();
150 public object this[
string identifier]
157 if (!variables.ContainsKey(identifier))
158 throw new ExecutionException(
"Globale Variable '" + identifier +
"' wurde nicht deklariert.");
159 return variables[identifier];
161 if (variables.ContainsKey(identifier))
162 return variables[identifier];
164 return sharedMemory[identifier];
166 if (variables.ContainsKey(identifier))
167 return variables[identifier];
169 return scriptMemory[identifier];
177 variables[identifier] = value;
183 variables[identifier] = value;
186 if (sharedMemory.Exists(identifier))
187 sharedMemory[identifier] = value;
189 variables[identifier] = value;
192 if (scriptMemory.Exists(identifier))
193 scriptMemory[identifier] = value;
195 variables[identifier] = value;
204 get {
return scope; }