// ================================================================================= // access to the words // ================================================================================= /// <exclude/> /// <summary> /// Uses the column map to map the character to a column number, then passes /// the row and column number to the other version of at() /// </summary> /// /// <param name="row">The current state</param> /// <param name="ch">The character whose column we're interested in</param> /// <returns>The new state to transition to</returns> public short At(int row, char ch) { int col = columnMap.ElementAt(ch); return(At(row, col)); }
/// <exclude/> public void ReadDictionaryFile(DataInputStream ins0) { int l; // read in the version number (right now we just ignore it) ins0.ReadInt(); // read in the column map (this is serialized in its internal form: // an index array followed by a data array) l = ins0.ReadInt(); char[] temp = new char[l]; for (int i = 0; i < temp.Length; i++) { temp[i] = (char)ins0.ReadShort(); } l = ins0.ReadInt(); sbyte[] temp2 = new sbyte[l]; for (int i_0 = 0; i_0 < temp2.Length; i_0++) { temp2[i_0] = ins0.ReadByte(); } columnMap = new CompactByteArray(temp, temp2); // read in numCols and numColGroups numCols = ins0.ReadInt(); /* numColGroups = */ ins0.ReadInt(); // read in the row-number index l = ins0.ReadInt(); rowIndex = new short[l]; for (int i_1 = 0; i_1 < rowIndex.Length; i_1++) { rowIndex[i_1] = ins0.ReadShort(); } // load in the populated-cells bitmap: index first, then bitmap list l = ins0.ReadInt(); rowIndexFlagsIndex = new short[l]; for (int i_2 = 0; i_2 < rowIndexFlagsIndex.Length; i_2++) { rowIndexFlagsIndex[i_2] = ins0.ReadShort(); } l = ins0.ReadInt(); rowIndexFlags = new int[l]; for (int i_3 = 0; i_3 < rowIndexFlags.Length; i_3++) { rowIndexFlags[i_3] = ins0.ReadInt(); } // load in the row-shift index l = ins0.ReadInt(); rowIndexShifts = new sbyte[l]; for (int i_4 = 0; i_4 < rowIndexShifts.Length; i_4++) { rowIndexShifts[i_4] = ins0.ReadByte(); } // finally, load in the actual state table l = ins0.ReadInt(); table = new short[l]; for (int i_5 = 0; i_5 < table.Length; i_5++) { table[i_5] = ins0.ReadShort(); } // this data structure is only necessary for testing and debugging // purposes reverseColumnMap = new char[numCols]; for (char c = (char)(0); c < 0xffff; c++) { int col = columnMap.ElementAt(c); if (col != 0) { reverseColumnMap[col] = c; } } // close the stream ins0.Close(); }