Esempio n. 1
0
 /// <summary>
 /// Constructor with index selection.
 /// </summary>
 /// <param name="isIndexSatisfied"></param>
 /// <param name="select"></param>
 public JoinDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied,
                               Predicate <T> isSatisfied, [NotNull] SelectDelegate <Selectable, T> select,
                               Action <List <Selectable> > sort, JoinKeyDelegate <Key, T> join)
     : base(isIndexSatisfied, isSatisfied, select, sort)
 {
     this.joinKey = join;
 }
Esempio n. 2
0
 /// <summary>
 /// Constructor with index selection.
 /// </summary>
 /// <param name="isIndexSatisfied"></param>
 /// <param name="select"></param>
 public DelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied,
                           [NotNull] SelectDelegate <Selectable, T> select, Action <List <Selectable> > sort)
 {
     this.isIndexSatisfied = isIndexSatisfied;
     this.select           = select;
     this.sort             = sort;
 }
Esempio n. 3
0
 /// <summary>
 /// Constructor with index selection.
 /// </summary>
 /// <param name="isIndexSatisfied"></param>
 /// <param name="select"></param>
 public AutoSelectDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied,
                                     Predicate <T> isSatisfied, Action <List <T> > sort)
 {
     this.isIndexSatisfied = isIndexSatisfied;
     this.isSatisfied      = isSatisfied;
     this.sort             = sort;
 }
Esempio n. 4
0
        /// <summary>
        /// Поиск очередной перестановки
        /// </summary>
        public static bool NextPermutation <T>(T[] sequence, Predicate2 <T> compare)
        {
            // Этап № 1
            var i = sequence.Length;

            do
            {
                if (i < 2)
                {
                    return(false);                    // Перебор закончен
                }
                --i;
            } while (!compare(sequence[i - 1], sequence[i]));
            // Этап № 2
            var j = sequence.Length;

            while (i < j && !compare(sequence[i - 1], sequence[--j]))
            {
                ;
            }
            _SwapItems(sequence, i - 1, j);
            // Этап № 3
            j = sequence.Length;
            while (i < --j)
            {
                _SwapItems(sequence, i++, j);
            }
            return(true);
        }
Esempio n. 5
0
        public bool IsSatisfied(uint index, Dictionary <string, object> indexable)
        {
            Predicate2 <uint, Dictionary <string, object> > t = isIndexSatisfied;

            if (t != null)
            {
                return(t(index, indexable));
            }

            return(true);
        }
Esempio n. 6
0
 static public bool ForAll2 <T, S>(T[] a1, S[] a2, Predicate2 <T, S> pred)
 {
     if (a1.Length != a2.Length)
     {
         throw new System.ArgumentException();
     }
     for (int i = 0; i < a1.Length; ++i)
     {
         if (!pred(a1[i], a2[i]))
         {
             return(false);
         }
     }
     return(true);
 }
Esempio n. 7
0
        public static TElement Select <TElement>(IEnumerable <TElement> set, Predicate2 <TElement> predicate)
        {
            if (set == null || !set.Any())
            {
                throw new ArgumentOutOfRangeException(nameof(set), "Empty set.");
            }

            var winner = set.First();

            foreach (var element in set)
            {
                if (predicate.Call(winner, element))
                {
                    winner = element;
                }
            }

            //return set.FirstOrDefault(e => predicate.Call(winner, e));

            return(winner);
        }
Esempio n. 8
0
 /// <summary>
 /// Constructor with index selection.
 /// </summary>
 /// <param name="isIndexSatisfied"></param>
 /// <param name="select"></param>
 public AutoSelectDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied)
 {
     this.isIndexSatisfied = isIndexSatisfied;
 }
Esempio n. 9
0
 /// <summary>
 /// Constructor with index selection.
 /// </summary>
 /// <param name="isIndexSatisfied"></param>
 /// <param name="select"></param>
 public AutoSelectJoinDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied,
                                         Predicate <T> isSatisfied, Action <List <T> > sort, JoinKeyDelegate <Key, T> join)
     : base(isIndexSatisfied, isSatisfied, sort)
 {
     this.joinDelegate = join;
 }
Esempio n. 10
0
 /// <summary>
 /// Constructor with index selection.
 /// </summary>
 /// <param name="isIndexSatisfied"></param>
 /// <param name="select"></param>
 public AutoSelectJoinDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied,
                                         JoinKeyDelegate <Key, T> join)
     : base(isIndexSatisfied)
 {
     this.joinDelegate = join;
 }