示例#1
0
        /// <summary>
        /// Updates the function.
        /// </summary>
        /// <param name="func">The func.</param>
        /// <param name="name">The name.</param>
        /// <param name="arguments">The arguments.</param>
        /// <returns></returns>
        protected FunctionExpression UpdateFunction(FunctionExpression func, string name, IEnumerable <Expression> arguments)
        {
            if (name != func.Name || arguments != func.Arguments)
            {
                return(new FunctionExpression(func.Type, name, arguments));
            }

            return(func);
        }
示例#2
0
 /// <summary>
 /// Visits the function.
 /// </summary>
 /// <param name="function">The function.</param>
 /// <returns></returns>
 protected virtual Expression VisitFunction(FunctionExpression function)
 {
     this.Write("FUNCTION ");
     this.Write(function.Name);
     if (function.Arguments.Count > 0)
     {
         this.Write("(");
         this.VisitExpressionList(function.Arguments);
         this.Write(")");
     }
     return(function);
 }
示例#3
0
 /// <summary>
 /// Compares the function.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <returns></returns>
 protected virtual bool CompareFunction(FunctionExpression x, FunctionExpression y)
 {
     return(x.Name.Equals(y.Name, StringComparison.InvariantCultureIgnoreCase) && this.CompareExpressionList(x.Arguments, y.Arguments));
 }
示例#4
0
        /// <summary>
        /// Visits the function.
        /// </summary>
        /// <param name="func">The func.</param>
        /// <returns></returns>
        protected virtual Expression VisitFunction(FunctionExpression func)
        {
            var arguments = this.VisitExpressionList(func.Arguments);

            return(this.UpdateFunction(func, func.Name, arguments));
        }