Ocronet.Dynamic.OcroFST.FstIO.read_header_and_symbols C# (CSharp) Method

read_header_and_symbols() protected static method

protected static read_header_and_symbols ( IGenericFst fst, BinaryReader reader ) : void
fst Ocronet.Dynamic.Interfaces.IGenericFst
reader System.IO.BinaryReader
return void
        protected static void read_header_and_symbols(IGenericFst fst, BinaryReader reader)
        {
            if (read_int32_LE(reader) != OPENFST_MAGIC)
                throw new Exception("invalid magic number");
            read_magic_string(reader, "vector");
            read_magic_string(reader, "standard");
            int version = read_int32_LE(reader);
            if (version < MIN_VERSION)
                throw new Exception("file has too old version");
            int flags = read_int32_LE(reader);
            read_int64_LE(reader); // properties
            Int64 start = read_int64_LE(reader);
            Int64 nstates = read_int64_LE(reader);
            if (nstates < 0)
                return;   // to prevent creating 2^31 nodes in case of sudden EOF
            fst.Clear();
            for (int i = 0; i < nstates; i++)
                fst.NewState();
            fst.SetStart((int)start);

            read_int64_LE(reader); // narcs

            if ((flags & FLAG_HAS_ISYMBOLS) > 0)
                skip_symbol_table(reader);
            if ((flags & FLAG_HAS_OSYMBOLS) > 0)
                skip_symbol_table(reader);
        }