/// <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));
        }
Esempio n. 2
0
        /// <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);
        }