2 using System.Collections.Generic;
\r
5 using System.Threading.Tasks;
\r
7 namespace NT2chCtrl.html.js
\r
9 public class JsFunctionContext
\r
11 protected static Dictionary<string, JsVariant>
\r
12 mGlobalVariables = new Dictionary<string, JsVariant>();
\r
13 protected Dictionary<string, JsVariant>
\r
14 mLocalVariables = new Dictionary<string, JsVariant>();
\r
16 private DebugContext mDbgCtx;
\r
17 public void setDbgCtx(DebugContext dbgCtx)
\r
21 public DebugContext getDbgCtx() { return mDbgCtx; }
\r
23 public JsFunctionContext(DebugContext dCtx)
\r
28 public bool getMemoryList(out List<DebugMemory> list)
\r
30 list = new List<DebugMemory>();
\r
31 foreach (string key in mGlobalVariables.Keys)
\r
34 if (mGlobalVariables.TryGetValue(key, out var))
\r
36 list.Add(DebugMemory.createInstance(key, var, false));
\r
39 foreach (string key in mLocalVariables.Keys)
\r
42 if (mLocalVariables.TryGetValue(key, out var))
\r
44 list.Add(DebugMemory.createInstance(key, var, true));
\r
50 public JsFunctionContext() { }
\r
52 public JsVariant getValue(JsIdentifier id)
\r
54 return getValue(id.getName(), id.isLocal());
\r
57 public JsVariant getValue(string name, bool local)
\r
60 if (mLocalVariables.TryGetValue(name, out value))
\r
67 value = new JsUndefValue();
\r
68 mLocalVariables.Add(name, value);
\r
71 if (mGlobalVariables.TryGetValue(name, out value))
\r
75 value = new JsUndefValue();
\r
76 mGlobalVariables.Add(name, value);
\r
79 public void setValue(JsIdentifier id, JsVariant value)
\r
81 setValue(id.getName(), id.isLocal(), value);
\r
84 public void setValue(string name, bool local, JsVariant inValue)
\r
86 if (mLocalVariables.ContainsKey(name))
\r
88 mLocalVariables.Remove(name);
\r
89 mLocalVariables.Add(name, inValue);
\r
94 mLocalVariables.Add(name, inValue);
\r
97 if (mGlobalVariables.ContainsKey(name))
\r
99 mGlobalVariables.Remove(name);
\r
100 mGlobalVariables.Add(name, inValue);
\r
103 mGlobalVariables.Add(name, inValue);
\r
106 public JsVariant getParamValue(HtmlElement elem, JsVariant val)
\r
110 JsFunction func = val as JsFunction;
\r
113 val = func.Execute(this, elem);
\r
117 JsIdentifier id = val as JsIdentifier;
\r
120 val = getValue(id);
\r
122 func = val as JsFunction;
\r
125 return getParamValue(elem, val);
\r