/// <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)); }
/// <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)); }