Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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);
        }
Пример #7
0
        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]));
            }
        }
Пример #8
0
        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]));
            }
        }
Пример #9
0
        // 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);
        }
Пример #10
0
 public static T FirstOrDefault <T>(this ImmutableArray <T> source)
 {
     return(ArrayProvider <T> .Extract(source).FirstOrDefault());
 }
Пример #11
0
 public static WhereIterator <T> Where <T>(this List <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).Where(predicate));
 }
Пример #12
0
 public static T First <T>(this List <T> source)
 {
     return(ArrayProvider <T> .Extract(source).First());
 }
Пример #13
0
 public int[] GetArrayFromListDynamicCIL()
 {
     return(ArrayProvider <int> .GetWrappedArray(ListOfSmallValueTypes));
 }
Пример #14
0
 public static bool Contains <T>(this List <T> source, T item, IEqualityComparer <T> equalityComparer)
 {
     return(ArrayProvider <T> .Extract(source).Contains(item, equalityComparer));
 }
Пример #15
0
 public static int Count <T>(this List <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).Count(predicate));
 }
Пример #16
0
 public static bool All <T>(this List <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).All(predicate));
 }
Пример #17
0
 public static SelectIterator <TSource, TResult> Select <TSource, TResult>(
     this List <TSource> source,
     Func <TSource, TResult> selector)
 {
     return(ArrayProvider <TSource> .Extract(source).Select(selector));
 }
Пример #18
0
 public static T ElementAtOrDefault <T>(this List <T> source, int index)
 {
     return(ArrayProvider <T> .Extract(source).ElementAtOrDefault(index));
 }
Пример #19
0
 public static T SingleOrDefault <T>(this List <T> source)
 {
     return(ArrayProvider <T> .Extract(source).SingleOrDefault());
 }
Пример #20
0
 public static T Last <T>(this ImmutableArray <T> source)
 {
     return(ArrayProvider <T> .Extract(source).Last());
 }
Пример #21
0
 public static bool Any <T>(this List <T> source)
 {
     return(ArrayProvider <T> .Extract(source).Any());
 }
Пример #22
0
 public static T LastOrDefault <T>(this ImmutableArray <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).LastOrDefault(predicate));
 }
Пример #23
0
 public static int Count <T>(this List <T> source)
 {
     return(ArrayProvider <T> .Extract(source).Count());
 }
Пример #24
0
 public static T ElementAt <T>(this ImmutableArray <T> source, int index)
 {
     return(ArrayProvider <T> .Extract(source).ElementAt(index));
 }
Пример #25
0
 public static bool Contains <T>(this List <T> source, T item)
 {
     return(ArrayProvider <T> .Extract(source).Contains(item));
 }
Пример #26
0
 public static T Single <T>(this ImmutableArray <T> source)
 {
     return(ArrayProvider <T> .Extract(source).Single());
 }
Пример #27
0
 public static T Aggregate <T>(this List <T> source, Func <T, T, T> aggregator)
 {
     return(ArrayProvider <T> .Extract(source).Aggregate(aggregator));
 }
Пример #28
0
 public static bool Any <T>(this ImmutableArray <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).Any(predicate));
 }
Пример #29
0
 public static T FirstOrDefault <T>(this List <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).FirstOrDefault(predicate));
 }
Пример #30
0
 public static T First <T>(this ImmutableArray <T> source, Predicate <T> predicate)
 {
     return(ArrayProvider <T> .Extract(source).First(predicate));
 }