Inheritance: ICloneable
示例#1
0
        /// <summary>
        /// Remove the Filter
        /// </summary>
        /// <param name="Filter">The Filter to remove.</param>
        public bool RemoveFilter(FilterBase filter)
        {
            // check the parameters
            Debug.AssertNotNull(filter, "Filters is null");

            if(filters.Contains(filter)) {
                filters.Remove(filter);
                treeValidated = false;
                return true;
            }

            return false;
        }
示例#2
0
        /// <summary>
        /// Add the Filter
        /// </summary>
        /// <param name="Filter">The Filter to add.</param>
        /// <remarks>Trows an exception if the Filter is already in added.</remarks>
        public void AddFilter(FilterBase filter)
        {
            // check the parameters
            Debug.AssertNotNull(filter, "Filters is null");
            Debug.Assert(filters.Contains(filter) == false, "Filters already in the category");

            filters.Add(filter);
            treeValidated = false;
        }
示例#3
0
        public static ExpressionTree AssociateTreeWithFilter(ExpressionTree tree, FilterBase filter, 
            FilterImplication implication, TreeDirection treeDirection)
        {
            // check the parameters
            Debug.Assert(tree != null && filter != null, "Null parameters");
            ExpressionTree result = new ExpressionTree();

            if(treeDirection == TreeDirection.Left) {
                result.AddRoot(ExpressionType.Implication, implication);
                result.Root.Left = tree.Root;
                result.AddNode(result.Root, TreeDirection.Right, ExpressionType.Filter, filter);
            }
            else {
                result.AddRoot(ExpressionType.Implication, implication);
                result.Root.Right = tree.Root;
                result.AddNode(result.Root, TreeDirection.Left, ExpressionType.Filter, filter);
            }

            return result;
        }
示例#4
0
 public FilterNode(FilterBase filter)
     : this()
 {
     this.Filter = filter;
 }
示例#5
0
        public static ExpressionTree AssociateFilters(FilterBase a, FilterBase b, 
            FilterImplication implication)
        {
            // check the parameters
            Debug.Assert(a != null && b != null, "Null parameters");

            ExpressionTree result = new ExpressionTree();
            result.AddRoot(ExpressionType.Implication, implication);
            result.AddNode(result.Root, TreeDirection.Left, ExpressionType.Filter, a);
            result.AddNode(result.Root, TreeDirection.Right, ExpressionType.Filter, b);
            return result;
        }