Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }