Esempio n. 1
0
 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));
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        /// <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]*/));
        }
Esempio n. 5
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);
        }
Esempio n. 6
0
        /// <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); }
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
 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));
 }