/// <summary> /// Find first leaf data [sub]folder and data file in it containing items dated at, earlier or later than the /// <paramref name="seekTime"/> /// </summary> /// <param name="seekTime"> /// Specifies the start of date-time range (inclusive) to find data in /// </param> /// <param name="backwards"> /// To which side from <paramref name="seekTime"/> to look for data /// </param> /// <returns> /// First (according to <paramref name="seekTime"/>) data file containing the required data; /// <see langword="null"/> if none found /// </returns> public IRepositoryFile Seek(DateTime seekTime, bool backwards) { _log.DebugFormat("Seeking data folder for reader, descr: {0}" , this.IsVirtualRoot ? "Virtual Root" : this._folderDescriptor.ToString()); IRepositoryFileName dataFile = null; IRepositoryFile retval = null; if (IsLeafFolder) { LoadFiles(false); dataFile = _dataFileBrowser.GetFile(seekTime, backwards); if (null != dataFile) { _log.DebugFormat("Seek found file: {0}", dataFile.FileName); retval = GetContainedRepositoryFile(dataFile); } } else { LoadSubFolders(false); IDirectedEnumerable <IDataFolder> sequence = GetSubfoldersSequence(seekTime, backwards); for ( IEnumerator <IDataFolder> scanner = sequence.GetEnumerator(); scanner.MoveNext() && null == retval; ) { retval = scanner.Current.Seek(seekTime, backwards); } } return(retval); }
// Iterate over ]x1...] public static void IterExcEnd <T>(ISorted <T> coll, T x1) where T : IComparable <T> { var x1HasSucc = Successor(coll, x1, out var x1Succ); IDirectedEnumerable <T> range = x1HasSucc ? coll.RangeFrom(x1Succ) : new ArrayList <T>(); Print(range); }
// Iterate over ]x1...x2[ public static void IterExcExc <T>(ISorted <T> coll, T x1, T x2) where T : IComparable <T> { bool x1HasSucc = Successor(coll, x1, out T x1Succ); IDirectedEnumerable <T> range = x1HasSucc ? coll.RangeFromTo(x1Succ, x2) : new ArrayList <T>(); Print(range); }
// Iterate over [...x2] public static void IterBeginInc <T>(ISorted <T> coll, T x2) where T : IComparable <T> { var x2HasSucc = Successor(coll, x2, out var x2Succ); IDirectedEnumerable <T> range = x2HasSucc ? coll.RangeTo(x2Succ) : coll.RangeAll(); Print(range); }
// Iterate over ]x1...] public static void IterExcEnd <T>(ISorted <T> coll, T x1) where T : IComparable <T> { bool x1HasSucc = Successor(coll, x1, out T x1Succ); IDirectedEnumerable <T> range = x1HasSucc ? coll.RangeFrom(x1Succ) : new ArrayList <T>(); foreach (T x in range) { Console.Write("{0} ", x); } Console.WriteLine(); }
// Iterate over [...x2] public static void IterBeginInc <T>(ISorted <T> coll, T x2) where T : IComparable <T> { bool x2HasSucc = Successor(coll, x2, out T x2Succ); IDirectedEnumerable <T> range = x2HasSucc ? coll.RangeTo(x2Succ) : coll.RangeAll(); foreach (T x in range) { Console.Write("{0} ", x); } Console.WriteLine(); }
// Iterate over [x1...x2] public static void IterIncInc <T>(ISorted <T> coll, T x1, T x2) where T : IComparable <T> { T x2Succ; bool x2HasSucc = Successor(coll, x2, out x2Succ); IDirectedEnumerable <T> range = x2HasSucc ? coll.RangeFromTo(x1, x2Succ) : coll.RangeFrom(x1); foreach (T x in range) { Console.Write("{0} ", x); } Console.WriteLine(); }
public ProjectedDirectedEnumerable(IDirectedEnumerable <KeyValuePair <K, V> > directedpairs) : base(directedpairs) { }
public MappedDirectedEnumerable(IDirectedEnumerable <T> directedenumerable) { this.directedenumerable = directedenumerable; }
private static void Print <T>(IDirectedEnumerable <T> items) { Console.WriteLine(string.Join(", ", items)); }
/// <summary> /// Wrap a directed enumerable in a read-only wrapper /// </summary> /// <param name="directedenumerable">the collection to wrap</param> public GuardedDirectedEnumerable(IDirectedEnumerable <T> directedenumerable) : base(directedenumerable) { this.directedenumerable = directedenumerable; }
public MappedDirectedEnumerable(IDirectedEnumerable<T> directedEnumerable) { _directedEnumerable = directedEnumerable; }