using System;
using System.Collections.Generic;
namespace JM.LinqFaster
{
public static partial class LinqFaster
{
///
/// Inverts the order of the elements in a sequence.
///
/// A sequence of values to reverse.
/// A sequence whose elements correspond to those of the input sequence in reverse order.
public static T[] ReverseF(this T[] source)
{
var result = new T[source.Length];
long lenLessOne = source.Length - 1;
for (int i = 0; i < result.Length; i++)
{
result[i] = source[lenLessOne - i];
}
return result;
}
///
/// Inverts the order of the elements in a sequence in place.
///
/// A sequence of values to reverse.
public static void ReverseInPlaceF(this T[] source)
{
Array.Reverse(source);
}
///
/// Inverts the order of the elements in a sequence.
///
/// A sequence of values to reverse.
/// A sequence whose elements correspond to those of the input sequence in reverse order.
public static List ReverseF(this List source)
{
var result = new List(source.Count);
for (int i = source.Count - 1; i >= 0; i--)
{
result.Add(source[i]);
}
return result;
}
///
/// Inverts the order of the elements in a sequence in place.
///
/// A sequence of values to reverse.
public static void ReverseInPlaceF(this List source)
{
source.Reverse();
}
}
}