Пример #1
0
 internal void BackToStart()
 {
     if (ItemIterator != null)
     {
         ItemIterator.Reset();
     }
 }
Пример #2
0
 /// <summary>
 /// Calls the iterator for every value in the tree within the range
 /// [first, pivot), until iterator returns false.
 /// </summary>
 /// <param name="pivot"></param>
 /// <param name="iterator"></param>
 public void AscendLessThan(T pivot, ItemIterator <T> iterator)
 {
     if (Root == null)
     {
         return;
     }
     _ = Root.Iterate(Direction.Ascend, null, pivot, false, false, iterator);
 }
Пример #3
0
 /// <summary>
 /// Calls the iterator for every value in the tree within the range
 /// [greaterOrEqual, lessThan), until iterator returns false.
 /// </summary>
 /// <param name="greaterOrEqual"></param>
 /// <param name="lessThan"></param>
 /// <param name="iterator"></param>
 public void AscendRange(T greaterOrEqual, T lessThan, ItemIterator <T> iterator)
 {
     if (Root == null)
     {
         return;
     }
     _ = Root.Iterate(Direction.Ascend, greaterOrEqual, lessThan, true, false, iterator);
 }
Пример #4
0
 /// <summary>
 /// Calls the iterator for every value in the tree within the range
 /// [last, first], until iterator returns false.
 /// </summary>
 /// <param name="iterator"></param>
 public void Descend(ItemIterator <T> iterator)
 {
     if (Root == null)
     {
         return;
     }
     _ = Root.Iterate(Direction.Descend, null, null, false, false, iterator);
 }
Пример #5
0
 /// <summary>
 /// Calls the iterator for every value in the tree within the range
 /// [pivot, first], until iterator returns false.
 /// </summary>
 /// <param name="pivot"></param>
 /// <param name="iterator"></param>
 public void DescendLessOrEqual(T pivot, ItemIterator <T> iterator)
 {
     if (Root == null)
     {
         return;
     }
     _ = Root.Iterate(Direction.Descend, pivot, null, true, false, iterator);
 }
    public override void StartUp()
    {
        AdvPartManager.Instance.CurrentAct = this;

        //イテレータ―の初期化
        itemIterator = new ItemIterator(objects.Count + 1, itemSet.Buttons.Count, this);

        //UIの表示
        LayoutObjects();

        //UI初期位置
        selectObject(itemIterator.UINow);
    }
Пример #7
0
        public static void EX1()
        {
            ItemIterator iterator = new ItemIterator();
            iterator.Add(new Item("item1"));
            iterator.Add(new Item("item2"));
            iterator.Add(new Item("item3"));
            iterator.Add(new Item("item4"));

            int i = 0;
            while (i < iterator.Count)
            {
                Console.WriteLine(iterator.Get(i).Nome);
                i++;
            }
        }
Пример #8
0
        public static void EX1()
        {
            ItemIterator iterator = new ItemIterator();

            iterator.Add(new Item("item1"));
            iterator.Add(new Item("item2"));
            iterator.Add(new Item("item3"));
            iterator.Add(new Item("item4"));

            int i = 0;

            while (i < iterator.Count)
            {
                Console.WriteLine(iterator.Get(i).Nome);
                i++;
            }
        }
Пример #9
0
        public static IJob Create(string[] args)
        {
            var startTimerJob = new StartTimerJob();
            var items         = new ItemIterator(args);

            while (items.MoveNext())
            {
                switch (items.Value)
                {
                case "--help":
                    return(new ShowHelpJob());

                case "--timer":
                    if (!items.MoveNext())
                    {
                        return(new ShowMissingParameterJob("--timer"));
                    }
                    int length;
                    if (!int.TryParse(items.Value, out length))
                    {
                        return(new ShowIncorrentIntFormatJob("--timer"));
                    }
                    startTimerJob.TimerLengthInMinues = length;
                    break;

                case "--silent":
                    startTimerJob.Silent = true;
                    break;

                default:
                    return(new ShowUnknownParameterJob(items.Value));
                }
            }

            return(startTimerJob);
        }
Пример #10
0
        // Iterate provides a simple method for iterating over elements in the tree.
        //
        // When ascending, the 'start' should be less than 'stop' and when descending,
        // the 'start' should be greater than 'stop'. Setting 'includeStart' to true
        // will force the iterator to include the first item when it equals 'start',
        // thus creating a "greaterOrEqual" or "lessThanEqual" rather than just a
        // "greaterThan" or "lessThan" queries.
        public (bool, bool) Iterate(Direction dir, T start, T stop, bool includeStart, bool hit, ItemIterator <T> iter)
        {
            bool ok, found;
            int  index = 0;

            switch (dir)
            {
            case Direction.Ascend:
            {
                if (start != null)
                {
                    (index, _) = Items.Find(start);
                }
                for (int i = index; i < Items.Length; i++)
                {
                    if (Children.Length > 0)
                    {
                        (hit, ok) = Children[i].Iterate(dir, start, stop, includeStart, hit, iter);
                        if (!ok)
                        {
                            return(hit, false);
                        }
                    }
                    if (!includeStart && !hit && start != null && !Less(start, Items[i]))
                    {
                        hit = true;
                        continue;
                    }
                    hit = true;
                    if (stop != null && !Less(Items[i], stop))
                    {
                        return(hit, false);
                    }
                    if (!iter(Items[i]))
                    {
                        return(hit, false);
                    }
                }
                if (Children.Length > 0)
                {
                    (hit, ok) = Children[Children.Length - 1].Iterate(dir, start, stop, includeStart, hit, iter);
                    if (!ok)
                    {
                        return(hit, false);
                    }
                }
            }
            break;

            case Direction.Descend:
            {
                if (start != null)
                {
                    (index, found) = Items.Find(start);
                    if (!found)
                    {
                        index -= 1;
                    }
                }
                else
                {
                    index = Items.Length - 1;
                }
                for (int i = index; i >= 0; i--)
                {
                    if (start != null && !Less(Items[i], start))
                    {
                        if (!includeStart || hit || Less(start, Items[i]))
                        {
                            continue;
                        }
                    }
                    if (Children.Length > 0)
                    {
                        (hit, ok) = Children[i + 1].Iterate(dir, start, stop, includeStart, hit, iter);
                        if (!ok)
                        {
                            return(hit, false);
                        }
                    }
                    if (stop != null && !Less(stop, Items[i]))
                    {
                        return(hit, false);
                    }
                    hit = true;
                    if (!iter(Items[i]))
                    {
                        return(hit, false);
                    }
                }
                if (Children.Length > 0)
                {
                    (hit, ok) = Children[0].Iterate(dir, start, stop, includeStart, hit, iter);
                    if (!ok)
                    {
                        return(hit, false);
                    }
                }
            }
            break;

            default:
                break;
            }
            return(hit, true);
        }