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