예제 #1
0
        /// <summary>
        /// 获取匹配的数据集合
        /// </summary>
        /// <typeparam name="listType">目标数据类型</typeparam>
        /// <param name="getValue">数据转换器</param>
        /// <returns>匹配的数据集合</returns>
        protected unsafe subArray <listType> getList <listType>(Func <valueType, listType> getValue)
        {
            subArray <listType> values = new subArray <listType>(array.Length);

            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        values.UnsafeAdd(getValue(array[range.StartIndex]));
                    }
                }
            }

            return(values);
        }
예제 #2
0
        /// <summary>
        /// 数据转换成单向动态数组
        /// </summary>
        /// <returns>单向动态数组</returns>
        public unsafe subArray <valueType> GetList()
        {
            subArray <valueType> values = new subArray <valueType>(array.Length);

            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        values.UnsafeAdd(array[range.StartIndex]);
                    }
                }
            }

            return(values);
        }
예제 #3
0
        /// <summary>
        /// 获取匹配的数据集合
        /// </summary>
        /// <param name="isValue">数据匹配器</param>
        /// <returns>匹配的数据集合</returns>
        protected unsafe subArray <valueType> getList(Func <valueType, bool> isValue)
        {
            subArray <valueType> values = new subArray <valueType>(array.Length);

            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        valueType value = array[range.StartIndex];
                        if (isValue(value))
                        {
                            values.UnsafeAdd(value);
                        }
                    }
                }
            }

            return(values);
        }
예제 #4
0
        /// <summary>
        /// 获取对象数组
        /// </summary>
        /// <returns></returns>
        public subArray <valueType> GetArray()
        {
            int count = poolIndex;

            if (count != 0)
            {
                subArray <valueType> values = new subArray <valueType>(count);
                foreach (valueType value in pool)
                {
                    if (value != null)
                    {
                        values.UnsafeAdd(value);
                    }
                    if (--count == 0)
                    {
                        break;
                    }
                }
                return(values);
            }
            return(default(subArray <valueType>));
        }