/// <summary> /// Reads a single metadata stream header from an input stream. /// </summary> /// <param name="reader">The input stream.</param> /// <returns>The header.</returns> public static MetadataStreamHeader FromReader(IBinaryStreamReader reader) { uint offset = reader.ReadUInt32(); uint size = reader.ReadUInt32(); string name = reader.ReadAsciiString(); reader.Align(4); return(new MetadataStreamHeader(offset, size, name)); }
/// <summary> /// Reads an aligned ASCII string from the stream. /// </summary> /// <param name="reader">The reader to use for reading the data.</param> /// <param name="align">The alignment to use.</param> /// <returns>The string that was read from the stream.</returns> public static string ReadAlignedAsciiString(this IBinaryStreamReader reader, int align) { var position = reader.Position; var value = reader.ReadAsciiString(); do { reader.Position++; } while ((reader.Position - position) % align != 0); return(value); }