Esempio n. 1
0
        /// <summary>Clears all function definitions in the context</summary>
        protected virtual void ClearFunctions()
        {
            ValFuncs.Clear();
            ValFuncRef.Clear();

            // derived classes: add definitions here
        }
Esempio n. 2
0
 /// <summary>Adds a parameterized function to the context</summary>
 /// <typeparam name="T1">The type of the first argument</typeparam>
 /// <typeparam name="T2">The type of the second argument</typeparam>
 /// <typeparam name="T3">The type of the third argument</typeparam>
 /// <typeparam name="T4">The type of the fourth argument</typeparam>
 /// <typeparam name="T5">The type of the fifth argument</typeparam>
 /// <typeparam name="T6">The type of the sixth argument</typeparam>
 /// <typeparam name="T7">The type of the seventh argument</typeparam>
 /// <typeparam name="T8">The type of the eighth argument</typeparam>
 /// <typeparam name="T9">The type of the ninth argument</typeparam>
 /// <typeparam name="T10">The type of the tenth argument</typeparam>
 /// <typeparam name="T11">The type of the eleventh argument</typeparam>
 /// <typeparam name="T12">The type of the twelfth argument</typeparam>
 /// <typeparam name="T13">The type of the thirteenth argument</typeparam>
 /// <typeparam name="T14">The type of the fourteenth argument</typeparam>
 /// <typeparam name="T15">The type of the fifteenth argument</typeparam>
 /// <param name="name">The function name</param>
 /// <param name="fn">The function delegate</param>
 protected void AddFunc <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(string name, FunctionDelegate <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> fn)
 {
     ValFuncs.Add(new Pair <string, int>(name, 15), new ValFunc <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(fn)); if (!ValFuncRef.Contains(name))
     {
         ValFuncRef.Add(name);
     }
 }
Esempio n. 3
0
 /// <summary>Adds a parameterized function to the context</summary>
 /// <typeparam name="T1">The type of the first argument</typeparam>
 /// <typeparam name="T2">The type of the second argument</typeparam>
 /// <typeparam name="T3">The type of the third argument</typeparam>
 /// <typeparam name="T4">The type of the fourth argument</typeparam>
 /// <typeparam name="T5">The type of the fifth argument</typeparam>
 /// <typeparam name="T6">The type of the sixth argument</typeparam>
 /// <typeparam name="T7">The type of the seventh argument</typeparam>
 /// <param name="name">The function name</param>
 /// <param name="fn">The function delegate</param>
 protected void AddFunc <T1, T2, T3, T4, T5, T6, T7>(string name, FunctionDelegate <T1, T2, T3, T4, T5, T6, T7> fn)
 {
     ValFuncs.Add(new Pair <string, int>(name, 7), new ValFunc <T1, T2, T3, T4, T5, T6, T7>(fn)); if (!ValFuncRef.Contains(name))
     {
         ValFuncRef.Add(name);
     }
 }
Esempio n. 4
0
 /// <summary>Adds a parameterized function to the context</summary>
 /// <typeparam name="T1">The type of the first argument</typeparam>
 /// <param name="name">The function name</param>
 /// <param name="fn">The function delegate</param>
 protected void AddFunc <T1>(string name, FunctionDelegate <T1> fn)
 {
     ValFuncs.Add(new Pair <string, int>(name, 1), new ValFunc <T1>(fn)); if (!ValFuncRef.Contains(name))
     {
         ValFuncRef.Add(name);
     }
 }
Esempio n. 5
0
 /// <summary>Adds a function that accepts a dynamic number of parameters to the context</summary>
 /// <param name="name">The function name</param>
 /// <param name="fn">The function delegate</param>
 protected void AddDynamicFunc(string name, FunctionDelegateParam fn)
 {
     ValFuncs.Add(new Pair <string, int>(name, -1), new ValFunc_Dynamic(fn)); if (!ValFuncRef.Contains(name))
     {
         ValFuncRef.Add(name);
     }
 }
Esempio n. 6
0
        /// <summary>Performs evaluation of a function</summary>

        /// <param name="caller">The tracking object calling the function</param>
        /// <param name="name">The function name</param>
        /// <param name="param">The function parameters</param>
        /// <returns></returns>
        public Val RunFunction(ITracker caller, string name, Val[] param)
        {
            IValFunc vfs = ValFuncs.Get(new Pair <string, int>(name, param.Length));

            if (vfs == null)
            {
                if (ValFuncRef.Contains(name))
                {
                    vfs = ValFuncs.Get(new Pair <string, int>(name, -1)); // Val[]
                    if (vfs == null)
                    {
                        throw new EvalException(caller, Resource.Strings.Error_EvalException_IncorrectParameters.F(name));
                    }
                }
                else
                {
                    throw new EvalException(caller, Resource.Strings.Error_EvalException_FunctionNotFound.F(name));
                }
            }

            return(vfs.Execute(caller, name, this, param));
        }
Esempio n. 7
0
 /// <summary>Retrieves a function from the function list</summary>
 /// <param name="name">The function name</param>
 /// <param name="argnum">The number of arguments for the function</param>
 /// <returns></returns>
 public object GetFunction(string name, int argnum)
 {
     return(ValFuncs.Get(new Pair <string, int>(name, argnum)));
 }