Пример #1
0
        /// <summary>
        /// Read array of structs from a reader
        /// </summary>
        /// <param name="reader">Target reader</param>
        /// <param name="count">Count</param>
        /// <typeparam name="T">Struct to read</typeparam>
        /// <returns>Stuct array</returns>
        public static T[] ReadArray <T>(this BinaryReader reader, int count) where T : struct
        {
            if (count == 0)
            {
                return(new T[0]);
            }

            var numBytes = FastStruct <T> .Size * count;

            byte[] result = reader.ReadBytes(numBytes);

            return(FastStruct <T> .ReadArray(result));
        }
Пример #2
0
        /// <summary>
        /// Read array of structs from a BinaryReader
        /// </summary>
        /// <param name="reader">Source reader</param>
        /// <typeparam name="T">Struct to read</typeparam>
        /// <returns>Array of read structs</returns>
        public static T[] ReadArray <T>(this BinaryReader reader) where T : struct
        {
            var numBytes = (int)reader.ReadInt64();

            if (numBytes == 0)
            {
                return(new T[0]);
            }

            byte[] result = reader.ReadBytes(numBytes);

            reader.BaseStream.Position += (0 - numBytes) & 0x07;
            return(FastStruct <T> .ReadArray(result));
        }