public override void Dispose() { base.Dispose(); m_header = null; m_strings = null; m_names = null; m_imports = null; m_properties = null; m_exports = null; m_buffers = null; m_embedded = null; }
public CR2WWriter(Stream stream) : base(stream, false) { m_header = new CR2WHeader(); m_strings = new Dictionary <uint, string>(); m_names = new List <CR2WName>(); m_imports = new List <CR2WImport>(); m_properties = new List <CR2WProperty>(); m_exports = new List <CR2WExport>(); m_buffers = new List <CR2WBuffer>(); m_embedded = new List <CR2WEmbedded>(); //AddProperty(null); }
private void LoadFileData() { if (BaseStream.Length - BaseStream.Position < 160) { throw new InvalidCR2WFileException("File size falls below the minimum for a valid CR2W file."); } var idString = ReadUInt32(); if (idString != MAGIC) { throw new InvalidCR2WFileException($"Invalid Magic: '0x{idString:X8}'."); } m_header = ReadStruct <CR2WHeader>(); if (m_header.version < 159 || m_header.version > 163) { throw new InvalidCR2WFileException($"Invalid Version: '{m_header.version}'."); } if (!IgnoreErrors && m_header.CalculateCRC32() != m_header.crc32) { throw new MismatchCRC32Exception("CRC32 checksum failed for file header."); } m_strings = ReadStringTable(); m_names = ReadTable <CR2WName>(1); m_imports = ReadTable <CR2WImport>(2); m_properties = ReadTable <CR2WProperty>(3); m_exports = ReadTable <CR2WExport>(4); m_buffers = ReadTable <CR2WBuffer>(5); m_embedded = ReadTable <CR2WEmbedded>(6); m_hasInternalBuffers = m_header.fileSize > m_header.objectSize; m_isValid = true; }