Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4466464c authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Use PrevWordsInfo.getPrevWordCount() in Java side.

Bug: 14425059
Change-Id: Ie6295ff657c483876af403f2d474b7d857e5e3d6
parent b349b574
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -358,9 +358,8 @@ public final class BinaryDictionary extends Dictionary {
        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
            return NOT_A_PROBABILITY;
        }
        final int[][] prevWordCodePointArrays = new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
        final boolean[] isBeginningOfSentenceArray =
                new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
        final int[][] prevWordCodePointArrays = new int[prevWordsInfo.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[prevWordsInfo.getPrevWordCount()];
        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
        return getNgramProbabilityNative(mNativeDict, prevWordCodePointArrays,
@@ -455,9 +454,8 @@ public final class BinaryDictionary extends Dictionary {
        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
            return false;
        }
        final int[][] prevWordCodePointArrays = new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
        final boolean[] isBeginningOfSentenceArray =
                new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
        final int[][] prevWordCodePointArrays = new int[prevWordsInfo.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[prevWordsInfo.getPrevWordCount()];
        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
        if (!addNgramEntryNative(mNativeDict, prevWordCodePointArrays,
@@ -473,9 +471,8 @@ public final class BinaryDictionary extends Dictionary {
        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
            return false;
        }
        final int[][] prevWordCodePointArrays = new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
        final boolean[] isBeginningOfSentenceArray =
                new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
        final int[][] prevWordCodePointArrays = new int[prevWordsInfo.getPrevWordCount()][];
        final boolean[] isBeginningOfSentenceArray = new boolean[prevWordsInfo.getPrevWordCount()];
        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
        if (!removeNgramEntryNative(mNativeDict, prevWordCodePointArrays,
+12 −11
Original line number Diff line number Diff line
@@ -86,33 +86,30 @@ public class PrevWordsInfo {
    // For simplicity of implementation, elements may also be EMPTY_WORD_INFO transiently after the
    // WordComposer was reset and before starting a new composing word, but we should never be
    // calling getSuggetions* in this situation.
    public WordInfo[] mPrevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
    public final WordInfo[] mPrevWordsInfo;

    // Construct from the previous word information.
    public PrevWordsInfo(final WordInfo prevWordInfo) {
        mPrevWordsInfo[0] = prevWordInfo;
        mPrevWordsInfo = new WordInfo[] { prevWordInfo };
    }

    // Construct from WordInfo array. n-th element represents (n+1)-th previous word's information.
    public PrevWordsInfo(final WordInfo[] prevWordsInfo) {
        for (int i = 0; i < Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM; i++) {
            mPrevWordsInfo[i] =
                    (prevWordsInfo.length > i) ? prevWordsInfo[i] : WordInfo.EMPTY_WORD_INFO;
        }
        mPrevWordsInfo = prevWordsInfo;
    }

    // Create next prevWordsInfo using current prevWordsInfo.
    public PrevWordsInfo getNextPrevWordsInfo(final WordInfo wordInfo) {
        final WordInfo[] prevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
        final int nextPrevWordCount = Math.min(Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM,
                mPrevWordsInfo.length + 1);
        final WordInfo[] prevWordsInfo = new WordInfo[nextPrevWordCount];
        prevWordsInfo[0] = wordInfo;
        for (int i = 1; i < prevWordsInfo.length; i++) {
            prevWordsInfo[i] = mPrevWordsInfo[i - 1];
        }
        System.arraycopy(mPrevWordsInfo, 0, prevWordsInfo, 1, prevWordsInfo.length - 1);
        return new PrevWordsInfo(prevWordsInfo);
    }

    public boolean isValid() {
        return mPrevWordsInfo[0].isValid();
        return mPrevWordsInfo.length > 0 && mPrevWordsInfo[0].isValid();
    }

    public void outputToArray(final int[][] codePointArrays,
@@ -129,6 +126,10 @@ public class PrevWordsInfo {
        }
    }

    public int getPrevWordCount() {
        return mPrevWordsInfo.length;
    }

    @Override
    public int hashCode() {
        return Arrays.hashCode(mPrevWordsInfo);