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

Commit ace9c148 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Use PrevWordsInfo.getPrevWordCount() in Java side."

parents 90f06760 4466464c
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);