Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +1 −7 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.util.SparseArray; import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.makedict.Word; import com.android.inputmethod.latin.settings.NativeSuggestOptions; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.JniUtils; Loading Loading @@ -352,12 +351,7 @@ public final class BinaryDictionary extends Dictionary { public GetNextWordPropertyResult getNextWordProperty(final int token) { final int[] codePoints = new int[MAX_WORD_LENGTH]; final int nextToken = getNextWordNative(mNativeDict, token, codePoints); int len = 0; // codePoints is null-terminated if its length is shorter than the array length. while (len < MAX_WORD_LENGTH && codePoints[len] != 0) { ++len; } final String word = new String(codePoints, 0, len); final String word = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints); return new GetNextWordPropertyResult(getWordProperty(word), nextToken); } Loading java/src/com/android/inputmethod/latin/utils/StringUtils.java +19 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ public final class StringUtils { public static String newSingleCodePointString(int codePoint) { if (Character.charCount(codePoint) == 1) { // Optimization: avoid creating an temporary array for characters that are // Optimization: avoid creating a temporary array for characters that are // represented by a single char value return String.valueOf((char) codePoint); } Loading Loading @@ -205,6 +205,24 @@ public final class StringUtils { return codePoints; } /** * Construct a String from a code point array * * @param codePoints a code point array that is null terminated when its logical length is * shorter than the array length. * @return a string constructed from the code point array. */ public static String getStringFromNullTerminatedCodePointArray(final int[] codePoints) { int stringLength = codePoints.length; for (int i = 0; i < codePoints.length; i++) { if (codePoints[i] == 0) { stringLength = i; break; } } return new String(codePoints, 0 /* offset */, stringLength); } // This method assumes the text is not null. For the empty string, it returns CAPITALIZE_NONE. public static int getCapitalizationType(final String text) { // If the first char is not uppercase, then the word is either all lower case or Loading java/src/com/android/inputmethod/latin/utils/WordProperty.java +5 −16 Original line number Diff line number Diff line Loading @@ -61,15 +61,6 @@ public class WordProperty { } } private static int getCodePointCount(final int[] codePoints) { for (int i = 0; i < codePoints.length; i++) { if (codePoints[i] == 0) { return i; } } return codePoints.length; } // This represents invalid word when the probability is BinaryDictionary.NOT_A_PROBABILITY. public WordProperty(final int[] codePoints, final boolean isNotAWord, final boolean isBlacklisted, final boolean hasBigram, Loading @@ -77,7 +68,7 @@ public class WordProperty { final ArrayList<int[]> bigramTargets, final ArrayList<int[]> bigramProbabilityInfo, final ArrayList<int[]> shortcutTargets, final ArrayList<Integer> shortcutProbabilities) { mCodePoints = new String(codePoints, 0 /* offset */, getCodePointCount(codePoints)); mCodePoints = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints); mIsNotAWord = isNotAWord; mIsBlacklisted = isBlacklisted; mHasBigrams = hasBigram; Loading @@ -86,9 +77,8 @@ public class WordProperty { final int bigramTargetCount = bigramTargets.size(); for (int i = 0; i < bigramTargetCount; i++) { final int[] bigramTargetCodePointArray = bigramTargets.get(i); final String bigramTargetString = new String(bigramTargetCodePointArray, 0 /* offset */, getCodePointCount(bigramTargetCodePointArray)); final String bigramTargetString = StringUtils.getStringFromNullTerminatedCodePointArray(bigramTargets.get(i)); final ProbabilityInfo bigramProbability = new ProbabilityInfo(bigramProbabilityInfo.get(i)); mBigramTargets.add( Loading @@ -98,9 +88,8 @@ public class WordProperty { final int shortcutTargetCount = shortcutTargets.size(); for (int i = 0; i < shortcutTargetCount; i++) { final int[] shortcutTargetCodePointArray = shortcutTargets.get(i); final String shortcutTargetString = new String(shortcutTargetCodePointArray, 0 /* offset */, getCodePointCount(shortcutTargetCodePointArray)); final String shortcutTargetString = StringUtils.getStringFromNullTerminatedCodePointArray(shortcutTargets.get(i)); mShortcutTargets.add( new WeightedString(shortcutTargetString, shortcutProbabilities.get(i))); } Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +1 −7 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.util.SparseArray; import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.makedict.Word; import com.android.inputmethod.latin.settings.NativeSuggestOptions; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.JniUtils; Loading Loading @@ -352,12 +351,7 @@ public final class BinaryDictionary extends Dictionary { public GetNextWordPropertyResult getNextWordProperty(final int token) { final int[] codePoints = new int[MAX_WORD_LENGTH]; final int nextToken = getNextWordNative(mNativeDict, token, codePoints); int len = 0; // codePoints is null-terminated if its length is shorter than the array length. while (len < MAX_WORD_LENGTH && codePoints[len] != 0) { ++len; } final String word = new String(codePoints, 0, len); final String word = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints); return new GetNextWordPropertyResult(getWordProperty(word), nextToken); } Loading
java/src/com/android/inputmethod/latin/utils/StringUtils.java +19 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ public final class StringUtils { public static String newSingleCodePointString(int codePoint) { if (Character.charCount(codePoint) == 1) { // Optimization: avoid creating an temporary array for characters that are // Optimization: avoid creating a temporary array for characters that are // represented by a single char value return String.valueOf((char) codePoint); } Loading Loading @@ -205,6 +205,24 @@ public final class StringUtils { return codePoints; } /** * Construct a String from a code point array * * @param codePoints a code point array that is null terminated when its logical length is * shorter than the array length. * @return a string constructed from the code point array. */ public static String getStringFromNullTerminatedCodePointArray(final int[] codePoints) { int stringLength = codePoints.length; for (int i = 0; i < codePoints.length; i++) { if (codePoints[i] == 0) { stringLength = i; break; } } return new String(codePoints, 0 /* offset */, stringLength); } // This method assumes the text is not null. For the empty string, it returns CAPITALIZE_NONE. public static int getCapitalizationType(final String text) { // If the first char is not uppercase, then the word is either all lower case or Loading
java/src/com/android/inputmethod/latin/utils/WordProperty.java +5 −16 Original line number Diff line number Diff line Loading @@ -61,15 +61,6 @@ public class WordProperty { } } private static int getCodePointCount(final int[] codePoints) { for (int i = 0; i < codePoints.length; i++) { if (codePoints[i] == 0) { return i; } } return codePoints.length; } // This represents invalid word when the probability is BinaryDictionary.NOT_A_PROBABILITY. public WordProperty(final int[] codePoints, final boolean isNotAWord, final boolean isBlacklisted, final boolean hasBigram, Loading @@ -77,7 +68,7 @@ public class WordProperty { final ArrayList<int[]> bigramTargets, final ArrayList<int[]> bigramProbabilityInfo, final ArrayList<int[]> shortcutTargets, final ArrayList<Integer> shortcutProbabilities) { mCodePoints = new String(codePoints, 0 /* offset */, getCodePointCount(codePoints)); mCodePoints = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints); mIsNotAWord = isNotAWord; mIsBlacklisted = isBlacklisted; mHasBigrams = hasBigram; Loading @@ -86,9 +77,8 @@ public class WordProperty { final int bigramTargetCount = bigramTargets.size(); for (int i = 0; i < bigramTargetCount; i++) { final int[] bigramTargetCodePointArray = bigramTargets.get(i); final String bigramTargetString = new String(bigramTargetCodePointArray, 0 /* offset */, getCodePointCount(bigramTargetCodePointArray)); final String bigramTargetString = StringUtils.getStringFromNullTerminatedCodePointArray(bigramTargets.get(i)); final ProbabilityInfo bigramProbability = new ProbabilityInfo(bigramProbabilityInfo.get(i)); mBigramTargets.add( Loading @@ -98,9 +88,8 @@ public class WordProperty { final int shortcutTargetCount = shortcutTargets.size(); for (int i = 0; i < shortcutTargetCount; i++) { final int[] shortcutTargetCodePointArray = shortcutTargets.get(i); final String shortcutTargetString = new String(shortcutTargetCodePointArray, 0 /* offset */, getCodePointCount(shortcutTargetCodePointArray)); final String shortcutTargetString = StringUtils.getStringFromNullTerminatedCodePointArray(shortcutTargets.get(i)); mShortcutTargets.add( new WeightedString(shortcutTargetString, shortcutProbabilities.get(i))); } Loading