public static /*Type[0]*/ ulong /*Type[0]*/[] getReverse(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array) { if (array.Length == 0) { return(NullValue </*Type[0]*/ ulong /*Type[0]*/> .Array); } return(FixedArray.GetReverse(array.Array, array.Start, array.Length)); }
public static SubArray </*Type[0]*/ ulong /*Type[0]*/> reverse(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array) { if (array.Length > 1) { FixedArray.Reverse(array.Array, array.Start, array.Length); } return(array); }
public static LeftArray </*Type[0]*/ ulong /*Type[0]*/> reverse(this LeftArray </*Type[0]*/ ulong /*Type[0]*/> array) { if (array.Length > 1) { FixedArray.Reverse(array.Array, 0, array.Length); } return(array); }
/// <summary> /// 获取第一个匹配值 /// </summary> /// <param name="array">数组数据</param> /// <param name="isValue">数据匹配器</param> /// <param name="index">起始位置</param> /// <returns>第一个匹配值,失败为default(/*Type[0]*/ulong/*Type[0]*/)</returns> public static /*Type[0]*/ ulong /*Type[0]*/ firstOrDefault(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array, Func </*Type[0]*/ ulong /*Type[0]*/, bool> isValue, int index) { if ((uint)index < (uint)array.Length) { fixed(/*Type[0]*/ ulong /*Type[0]*/ *valueFixed = array.Array) { /*Type[0]*/ ulong /*Type[0]*/ *valueIndex = FixedArray.IndexOf(valueFixed + array.Start + index, array.Length - index, isValue); if (valueIndex != null) { return(*valueIndex); } } } return(default(/*Type[0]*/ ulong /*Type[0]*/)); }
/// <summary> /// 获取匹配数据位置 /// </summary> /// <param name="array">数据数组</param> /// <param name="isValue">数据匹配器</param> /// <returns>匹配位置,失败为-1</returns> public static int indexOf(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array, Func </*Type[0]*/ ulong /*Type[0]*/, bool> isValue) { if (array.Length != 0) { fixed(/*Type[0]*/ ulong /*Type[0]*/ *valueFixed = array.Array) { /*Type[0]*/ ulong /*Type[0]*/ *start = valueFixed + array.Start, index = FixedArray.IndexOf(start, array.Length, isValue); if (index != null) { return((int)(index - valueFixed)); } } } return(-1); }
/// <summary> /// 获取匹配数组 /// </summary> /// <param name="array">数组数据</param> /// <param name="isValue">数据匹配器</param> /// <returns>匹配数组</returns> public static /*Type[0]*/ ulong /*Type[0]*/[] getFindArray(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array, Func </*Type[0]*/ ulong /*Type[0]*/, bool> isValue) { if (array.Length == 0) { return(NullValue </*Type[0]*/ ulong /*Type[0]*/> .Array); } int length = ((array.Length + 63) >> 6) << 3; UnmanagedPool pool = UnmanagedPool.GetDefaultPool(length); Pointer.Size data = pool.GetSize64(length); try { Memory.ClearUnsafe(data.ULong, length >> 3); return(FixedArray.GetFindArray(array.Array, array.Start, array.Length, isValue, new MemoryMap(data.Data))); } finally { pool.PushOnly(ref data); } }
/// <summary> /// 替换数据 /// </summary> /// <param name="array">数组数据</param> /// <param name="value">新值</param> /// <param name="isValue">数据匹配器</param> public static SubArray </*Type[0]*/ ulong /*Type[0]*/> replaceFirst(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array, /*Type[0]*/ ulong /*Type[0]*/ value, Func </*Type[0]*/ ulong /*Type[0]*/, bool> isValue) { if (array.Length != 0) { fixed(/*Type[0]*/ ulong /*Type[0]*/ *valueFixed = array.Array) { /*Type[0]*/ ulong /*Type[0]*/ *valueIndex = FixedArray.IndexOf(valueFixed + array.Start, array.Length, isValue); if (valueIndex != null) { *valueIndex = value; } } } return(array); }
/// <summary> /// 获取匹配数据位置 /// </summary> /// <param name="array">数组数据</param> /// <param name="value">匹配数据</param> /// <returns>匹配位置,失败为-1</returns> public static int indexOf(this LeftArray </*Type[0]*/ ulong /*Type[0]*/> array, /*Type[0]*/ ulong /*Type[0]*/ value) { if (array.Length != 0) { fixed(/*Type[0]*/ ulong /*Type[0]*/ *valueFixed = array.Array) { /*Type[0]*/ ulong /*Type[0]*/ *index = FixedArray.IndexOf(valueFixed, array.Length, value); if (index != null) { return((int)(index - valueFixed)); } } } return(-1); }
public static LeftArray </*Type[0]*/ ulong /*Type[0]*/> getFind(this SubArray </*Type[0]*/ ulong /*Type[0]*/> array, Func </*Type[0]*/ ulong /*Type[0]*/, bool> isValue) { return(array.Length == 0 ? default(LeftArray </*Type[0]*/ ulong /*Type[0]*/>) : FixedArray.GetFind(array.Array, array.Start, array.Length, isValue)); }