/// <summary>
        /// Reads the object data from a dump store
        /// </summary>
        /// <param name="reader">reader to read the data</param>
        /// <param name="filesList">filelist from helpsystem</param>
        internal bool ReadDump(ref BinaryReader reader, ArrayList filesList)
        {
            int i = 0;

            _keyWord     = reader.ReadString();
            _isSeeAlso   = reader.ReadBoolean();
            _indent      = reader.ReadInt32();
            _chmFileName = reader.ReadString();

            foreach (CHMFile curFile in filesList)
            {
                if (curFile.ChmFilePath == _chmFileName)
                {
                    _chmFile = curFile;
                    break;
                }
            }

            if (_chmFile == null)
            {
                return(false);
            }

            int nCnt = reader.ReadInt32();

            for (i = 0; i < nCnt; i++)
            {
                string sIT = reader.ReadString();
                _infoTypeStrings.Add(sIT);
            }

            nCnt = reader.ReadInt32();

            _seeAlso = new string[nCnt];

            for (i = 0; i < nCnt; i++)
            {
                _seeAlso[i] = reader.ReadString();
            }

            nCnt = reader.ReadInt32();

            for (i = 0; i < nCnt; i++)
            {
                IndexTopic topic = new IndexTopic("", "", "", "");
                topic.SetChmInfo(_chmFile.CompileFile, _chmFile.ChmFilePath);
                topic.AssociatedFile = _chmFile;
                topic.ReadDump(ref reader);

                Topics.Add(topic);
            }

            return(true);
        }
        /// <summary>
        /// Dump the class data to a binary writer
        /// </summary>
        /// <param name="writer">writer to write the data</param>
        /// <param name="writeFileName">true if the chm filename should be written</param>
        internal void Dump(ref BinaryWriter writer, bool writeFileName)
        {
            int i = 0;

            writer.Write(_keyWord);
            writer.Write(_isSeeAlso);
            writer.Write(_indent);

            if (writeFileName)
            {
                writer.Write(_chmFileName);
            }

            writer.Write(_infoTypeStrings.Count);

            for (i = 0; i < _infoTypeStrings.Count; i++)
            {
                writer.Write((_infoTypeStrings[i]).ToString());
            }

            writer.Write(_seeAlso.Length);

            for (i = 0; i < _seeAlso.Length; i++)
            {
                if (_seeAlso[i] == null)
                {
                    writer.Write("");
                }
                else
                {
                    writer.Write(_seeAlso[i]);
                }
            }

            writer.Write(Topics.Count);

            for (i = 0; i < Topics.Count; i++)
            {
                IndexTopic topic = ((IndexTopic)(Topics[i]));
                topic.Dump(ref writer);
            }
        }
        /// <summary>
        /// Reads the object data from a dump store
        /// </summary>
        /// <param name="reader">reader to read the data</param>
        internal void ReadDump(ref BinaryReader reader)
        {
            int i = 0;

            _keyWord   = reader.ReadString();
            _isSeeAlso = reader.ReadBoolean();
            _indent    = reader.ReadInt32();

            int nCnt = reader.ReadInt32();

            for (i = 0; i < nCnt; i++)
            {
                string sIT = reader.ReadString();
                _infoTypeStrings.Add(sIT);
            }

            nCnt = reader.ReadInt32();

            _seeAlso = new string[nCnt];

            for (i = 0; i < nCnt; i++)
            {
                _seeAlso[i] = reader.ReadString();
            }

            nCnt = reader.ReadInt32();

            for (i = 0; i < nCnt; i++)
            {
                IndexTopic topic = new IndexTopic("", "", "", "");
                topic.AssociatedFile = _chmFile;
                topic.SetChmInfo(_chmFile.CompileFile, _chmFile.ChmFilePath);
                topic.ReadDump(ref reader);
                Topics.Add(topic);
            }
        }