Exemple #1
0
        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);
        }
Exemple #2
0
        //////////////////////////////////////////////

        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);
        }