internal void BackToStart() { if (ItemIterator != null) { ItemIterator.Reset(); } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
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++; } }
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); }
// 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); }