public virtual Boolean SetValue(PainContext EvalContext, String Name, Object Value) { Name = Name.ToUpper(); PainContext painContext = EvalContext as PainContext; if (painContext == null) { return(false); } painContext.CurrentState.Object[Name] = Value; return(true); }
////////////////////////////////////////////// public virtual ExpressionValue GetValue( PainContext EvalContext, String Name, Boolean SeekForExtenders, Boolean SeekForMethods, Boolean SeekInContexts) { Name = Name.ToUpper(); PainContext painContext = EvalContext as PainContext; if (painContext == null) { return(null); } // szukanie extender'a if (SeekForExtenders) { ExpressionExtenderInfo extender = BuildinExtenders.FindByName(Name); if (extender != null) { return(new ExpressionValue(extender)); } } // szukanie metody if (SeekForMethods) { ExpressionMethodInfo method = BuildinMethods.FindByName(Name); if (method != null) { return(new ExpressionValue(method)); } } if (SeekInContexts) { // szukanie po innych zmiennych if (painContext.CurrentState != painContext.GlobalState) { if (painContext.CurrentState.Object != null && painContext.CurrentState.Object.Contains(Name)) { return(new ExpressionValue(painContext.CurrentState.Object[Name])); } } if (painContext.GlobalState.Object != null && painContext.GlobalState.Object.Contains(Name)) { return(new ExpressionValue(painContext.GlobalState.Object[Name])); } } /*for (var i = painContext.Stack.IndexOf(painContext.Current); i >= 0; i--) * { * PainState context = painContext.Stack[i]; * * if ((context == painContext.Current || context.ContextType == PainContextType.GLOBAL) && * context.Object != null && * context.Object.Contains(Name)) * { * return new ExpressionValue(context.Object[Name]); * } * }*/ // szukanie po globalnych zmiennych /*if (painContext.GlobalContext.ContextType == PainContextType.GLOBAL) * { * if (painContext.GlobalContext.Object.Contains(Name)) * return new ExpressionValue(painContext.GlobalContext.Object[Name]); * }*/ return(null); }