コード例 #1
0
        public bool FindAndReplace(ExpressionTreeElement findElement, ExpressionTreeElement replaceElement)
        {
            if (Root.Equals(findElement) &&
                replaceElement is ExpressionTreeNode)
            {
                Root = replaceElement as ExpressionTreeNode;

                return(true);
            }

            var expression = Root.Find(findElement.Parent) as BooleanOperatorNode;

            if (expression != null)
            {
                if (expression.Left != null &&
                    expression.Left.Equals(findElement))
                {
                    expression.Left = replaceElement;
                }
                else if (expression.Right != null &&
                         expression.Right.Equals(findElement))
                {
                    expression.Right = replaceElement;
                }
                else
                {
                    return(false);
                }

                return(true);
            }

            return(false);
        }
コード例 #2
0
        /// <summary>
        /// Find element in expression tree
        /// </summary>
        /// <param name="element">Required element</param>
        /// <returns>Required element in expression tree</returns>
        public override ExpressionTreeElement Find(ExpressionTreeElement element)
        {
            if (element == null)
            {
                return(null);
            }
            if (element.ToString() == ToString())
            {
                return(this);
            }
            if (Left != null)
            {
                var leftFind = Left.Find(element);
                if (leftFind != null)
                {
                    return(leftFind);
                }
            }
            if (Right == null)
            {
                return(null);
            }
            var rightFind = Right.Find(element);

            return(rightFind);
        }
コード例 #3
0
 /// <summary>
 /// Find element in expression tree
 /// </summary>
 /// <param name="element">Required element</param>
 /// <returns>Required element in expression tree</returns>
 public override ExpressionTreeElement Find(ExpressionTreeElement element)
 {
     if (element != null &&
         element.ToString() == ToString())
     {
         return(this);
     }
     return(null);
 }
コード例 #4
0
 public BooleanOperatorNode(ExpressionTreeNode parent, ExpressionTreeElement left, ExpressionTreeElement right, BooleanOperators boolOp)
     : base(parent, left, right)
 {
     Operator = boolOp;
 }
コード例 #5
0
 protected ExpressionTreeNode(ExpressionTreeNode parent, ExpressionTreeElement left, ExpressionTreeElement right)
     : base(parent)
 {
     Left  = left;
     Right = right;
 }
コード例 #6
0
 /// <summary>
 /// Constructor with comparison expression node
 /// </summary>
 /// <param name="compOp">Comparison operator</param>
 /// <param name="left">Left operand (child)</param>
 /// <param name="right">Right operand (child)</param>
 public ExpressionTree(ComparisonOperators compOp, ExpressionTreeElement left, ExpressionTreeElement right)
     : this(compOp)
 {
     Root.Left  = left;
     Root.Right = right;
 }
コード例 #7
0
 /// <summary>
 /// Constructor with logical expression node
 /// </summary>
 /// <param name="boolOp">Logical operator</param>
 /// <param name="left">Left operand (child)</param>
 /// <param name="right">Right operand (child)</param>
 public ExpressionTree(BooleanOperators boolOp, ExpressionTreeElement left, ExpressionTreeElement right)
     : this(boolOp)
 {
     Root.Left  = left;
     Root.Right = right;
 }
コード例 #8
0
 /// <summary>
 /// Find element in expression tree
 /// </summary>
 /// <param name="element">Required element</param>
 /// <returns>Required element in expression tree</returns>
 public ExpressionTreeElement Find(ExpressionTreeElement element)
 {
     return(Root.Find(element));
 }
コード例 #9
0
 /// <summary>
 /// Find element in expression tree
 /// </summary>
 /// <param name="element">Required element</param>
 /// <returns>Required element in expression tree</returns>
 public abstract ExpressionTreeElement Find(ExpressionTreeElement element);
コード例 #10
0
 public ComparisonOperatorNode(ExpressionTreeNode parent, ExpressionTreeElement left, ExpressionTreeElement right, ComparisonOperators compOp)
     : base(parent, left, right)
 {
     Operator = compOp;
 }