public static long?Max(this ReadOnlyCollection <long?> source) { var extractedArray = ArrayProvider <long?> .Extract(source); if (!extractedArray.IsAsLongAsSourceArray) { return(extractedArray.Max()); } return(ArrayExtensions.Max(extractedArray.Array)); }
public static int Min(this ReadOnlyCollection <int> source) { var extractedArray = ArrayProvider <int> .Extract(source); if (!extractedArray.IsAsLongAsSourceArray) { return(extractedArray.Min()); } return(ArrayExtensions.Min(extractedArray.Array)); }
public static double?Average(this ReadOnlyCollection <int?> source) { var extractedArray = ArrayProvider <int?> .Extract(source); if (!extractedArray.IsAsLongAsSourceArray) { return(extractedArray.Average()); } return(ArrayExtensions.Average(extractedArray.Array)); }
public static short?Sum(this ReadOnlyCollection <short?> source) { var extractedArray = ArrayProvider <short?> .Extract(source); if (!extractedArray.IsAsLongAsSourceArray) { return(extractedArray.Sum()); } return(ArrayExtensions.Sum(extractedArray.Array)); }
public static T SingleOrDefault <T>(this ReadOnlyCollection <T> source, Predicate <T> predicate) { var extractedArray = ArrayProvider <T> .Extract(source); if (!extractedArray.IsAsLongAsSourceArray) { return(extractedArray.SingleOrDefault(predicate)); } return(ArrayExtensions.SingleOrDefault(extractedArray.Array, predicate)); }
public void CreateFromArrayShouldNotAllocateAnyMemory() { var array = StrongEnumerable.Range(0, 10).Select(_ => _).ToArray(); var list = ListFactory <int> .Create(array); var extractedArray = ArrayProvider <int> .GetWrappedArray(list); Assert.AreSame(array, extractedArray); CollectionAssert.AreEqual(array, list); }
private void EnsureThatArrayProviderReturnsWrappedArray(IList <int> numbers) { var readOnlyCollection = new ReadOnlyCollection <int>(numbers); var wrappedArray = ArrayProvider <int> .GetWrappedArray(readOnlyCollection); for (int i = 0; i < 5; i++) { Assert.That(numbers[i], Is.EqualTo(wrappedArray[i])); } }
public void ShouldReturnArrayThatListJustWraps() { var numbers = Enumerable.Range(1, 5).ToList(); var wrappedArray = ArrayProvider <int> .GetWrappedArray(numbers); for (int i = 0; i < 5; i++) { Assert.That(numbers[i], Is.EqualTo(wrappedArray[i])); } }
// For use with System.IO.Pipelines // Decrypt packets directly from underlying data stream without needing to buffer public int TryDecrypt(ReadOnlySequence <byte> buffer, out PoolPacketReader packet) { if (buffer.Length < HEADER_SIZE) { packet = null; return(0); } SequenceReader <byte> reader = new(buffer); reader.TryReadLittleEndian(out short encSeq); reader.TryReadLittleEndian(out int packetSize); int rawPacketSize = HEADER_SIZE + packetSize; if (buffer.Length < rawPacketSize) { packet = null; return(0); } // Only decode sequence once we know there is sufficient data because it mutates IV short decSeq = DecodeSeqBase(encSeq); if (decSeq != Cipher.Version) { throw new ArgumentException($"Packet has invalid sequence header: {decSeq}"); } byte[] data = ArrayProvider.Rent(packetSize); buffer.Slice(HEADER_SIZE, packetSize).CopyTo(data); foreach (ICrypter crypter in DecryptSeq) { crypter.Decrypt(data, 0, packetSize); } packet = new(ArrayProvider, data, packetSize); return(rawPacketSize); }
public static T FirstOrDefault <T>(this ImmutableArray <T> source) { return(ArrayProvider <T> .Extract(source).FirstOrDefault()); }
public static WhereIterator <T> Where <T>(this List <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).Where(predicate)); }
public static T First <T>(this List <T> source) { return(ArrayProvider <T> .Extract(source).First()); }
public int[] GetArrayFromListDynamicCIL() { return(ArrayProvider <int> .GetWrappedArray(ListOfSmallValueTypes)); }
public static bool Contains <T>(this List <T> source, T item, IEqualityComparer <T> equalityComparer) { return(ArrayProvider <T> .Extract(source).Contains(item, equalityComparer)); }
public static int Count <T>(this List <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).Count(predicate)); }
public static bool All <T>(this List <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).All(predicate)); }
public static SelectIterator <TSource, TResult> Select <TSource, TResult>( this List <TSource> source, Func <TSource, TResult> selector) { return(ArrayProvider <TSource> .Extract(source).Select(selector)); }
public static T ElementAtOrDefault <T>(this List <T> source, int index) { return(ArrayProvider <T> .Extract(source).ElementAtOrDefault(index)); }
public static T SingleOrDefault <T>(this List <T> source) { return(ArrayProvider <T> .Extract(source).SingleOrDefault()); }
public static T Last <T>(this ImmutableArray <T> source) { return(ArrayProvider <T> .Extract(source).Last()); }
public static bool Any <T>(this List <T> source) { return(ArrayProvider <T> .Extract(source).Any()); }
public static T LastOrDefault <T>(this ImmutableArray <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).LastOrDefault(predicate)); }
public static int Count <T>(this List <T> source) { return(ArrayProvider <T> .Extract(source).Count()); }
public static T ElementAt <T>(this ImmutableArray <T> source, int index) { return(ArrayProvider <T> .Extract(source).ElementAt(index)); }
public static bool Contains <T>(this List <T> source, T item) { return(ArrayProvider <T> .Extract(source).Contains(item)); }
public static T Single <T>(this ImmutableArray <T> source) { return(ArrayProvider <T> .Extract(source).Single()); }
public static T Aggregate <T>(this List <T> source, Func <T, T, T> aggregator) { return(ArrayProvider <T> .Extract(source).Aggregate(aggregator)); }
public static bool Any <T>(this ImmutableArray <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).Any(predicate)); }
public static T FirstOrDefault <T>(this List <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).FirstOrDefault(predicate)); }
public static T First <T>(this ImmutableArray <T> source, Predicate <T> predicate) { return(ArrayProvider <T> .Extract(source).First(predicate)); }