]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/Dictionary.java
a
[Dictionary.git] / src / com / hughes / android / dictionary / Dictionary.java
index 8a68d6cf92c868eff450f474fd848e0775d9306a..05881295287e4be5a1aecd0ae0027bc0ce4ec2ae 100755 (executable)
@@ -99,11 +99,14 @@ public final class Dictionary implements RAFSerializable<Dictionary> {
           return mid;\r
         }\r
         final IndexEntry midEntry = sortedIndex.get(mid);\r
+        if (midEntry.word.equals("pre-print")) {\r
+          System.out.println();\r
+        }\r
 \r
-        final int comp = language.tokenComparator.compare(word, midEntry.word.toLowerCase());\r
+        final int comp = language.sortComparator.compare(word, midEntry.word.toLowerCase());\r
         if (comp == 0) {\r
           int result = mid;\r
-          while (result > 0 && language.tokenComparator.compare(word, sortedIndex.get(result - 1).word.toLowerCase()) == 0) {\r
+          while (result > 0 && language.findComparator.compare(word, sortedIndex.get(result - 1).word.toLowerCase()) == 0) {\r
             --result;\r
             if (interrupted.get()) {\r
               return result;\r
@@ -111,13 +114,37 @@ public final class Dictionary implements RAFSerializable<Dictionary> {
           }\r
           return result;\r
         } else if (comp < 0) {\r
+//          Log.d("THAD", "Upper bound: " + midEntry);\r
           end = mid;\r
         } else {\r
+//          Log.d("THAD", "Lower bound: " + midEntry);\r
           start = mid + 1;\r
         }\r
       }\r
       return Math.min(sortedIndex.size() - 1, start);\r
     }\r
+    \r
+    public int getPrevTokenRow(final int rowIndex) {\r
+      final IndexEntry indexEntry = getIndexEntryForRow(rowIndex);\r
+      final Row tokenRow = rows.get(indexEntry.startRow);\r
+      assert tokenRow.isToken();\r
+      final int prevTokenIndex = tokenRow.getIndex() - 1;\r
+      if (indexEntry.startRow == rowIndex && prevTokenIndex >= 0) {\r
+        return sortedIndex.get(prevTokenIndex).startRow;\r
+      }\r
+      return indexEntry.startRow;\r
+    }\r
+\r
+    public int getNextTokenRow(final int rowIndex) {\r
+      final IndexEntry indexEntry = getIndexEntryForRow(rowIndex);\r
+      final Row tokenRow = rows.get(indexEntry.startRow);\r
+      assert tokenRow.isToken();\r
+      final int nextTokenIndex = tokenRow.getIndex() + 1;\r
+      if (nextTokenIndex < sortedIndex.size()) {\r
+        return sortedIndex.get(nextTokenIndex).startRow;\r
+      }\r
+      return rows.size() - 1;\r
+    }\r
 \r
     public IndexEntry getIndexEntryForRow(final int rowIndex) {\r
       // TODO: this kinda blows.\r
@@ -134,7 +161,7 @@ public final class Dictionary implements RAFSerializable<Dictionary> {
       for (; r <= rowIndex; ++r) {\r
         rows.get(r).indexEntry = indexEntry;\r
       }\r
-      assert false && rows.get(indexEntry.startRow).isToken();\r
+      assert rows.get(indexEntry.startRow).isToken();\r
       return indexEntry;\r
     }\r
   }\r