Esempio n. 1
0
 public void open(FileStream stream)
 {
     close();
     if (stream != null)
     {
         m_reader = new IntReader(stream, false);
     }
 }
Esempio n. 2
0
 public void close()
 {
     if (!m_operational)
     {
         return;
     }
     m_operational = false;
     m_reader.close();
     m_reader      = null;
     m_strings     = null;
     m_resourceIDs = null;
     m_namespaces.reset();
     resetEventInfo();
 }
Esempio n. 3
0
        /**
         * Reads whole (including chunk type) string block from stream.
         * Stream must be at the chunk type.
         */
        public static StringBlock read(IntReader reader)
        {
            ChunkUtil.readCheckType(reader, CHUNK_TYPE);

            int chunkSize        = reader.readInt();
            int stringCount      = reader.readInt();
            int styleOffsetCount = reader.readInt();

            /*?*/ reader.readInt();
            int stringsOffset = reader.readInt();
            int stylesOffset  = reader.readInt();

            StringBlock block = new StringBlock();

            block.m_stringOffsets = reader.readIntArray(stringCount);
            if (styleOffsetCount != 0)
            {
                block.m_styleOffsets = reader.readIntArray(styleOffsetCount);
            }

            {
                int size = ((stylesOffset == 0) ? chunkSize : stylesOffset) - stringsOffset;
                if ((size % 4) != 0)
                {
                    throw new IOException("String data size is not multiple of 4 (" + size + ").");
                }

                block.m_strings = reader.readIntArray(size / 4);
            }

            if (stylesOffset != 0)
            {
                int size = (chunkSize - stylesOffset);
                if ((size % 4) != 0)
                {
                    throw new IOException("Style data size is not multiple of 4 (" + size + ").");
                }
                block.m_styles = reader.readIntArray(size / 4);
            }

            return(block);
        }