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

Commit 338ef650 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Make DicTraverseSession having suggest options.

Change-Id: I2b802c06634e5226c763fd838f3fc0918fc4a161
parent 94af6d9e
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j
    const jsize numberOfOptions = env->GetArrayLength(suggestOptions);
    int options[numberOfOptions];
    env->GetIntArrayRegion(suggestOptions, 0, numberOfOptions, options);
    SuggestOptions givenOptions(options, numberOfOptions);
    SuggestOptions givenSuggestOptions(options, numberOfOptions);

    // Output values
    /* By the way, let's check the output array length here to make sure */
@@ -190,12 +190,11 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j
    memset(outputTypes, 0, sizeof(outputTypes));

    int count;
    if (givenOptions.isGesture() || inputSize > 0) {
    if (givenSuggestOptions.isGesture() || inputSize > 0) {
        count = dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates,
                times, pointerIds, inputCodePoints, inputSize, prevWordCodePoints,
                prevWordCodePointsLength, commitPoint, givenOptions.isGesture(),
                givenOptions.useFullEditDistance(), outputCodePoints, scores,
                spaceIndices, outputTypes);
                prevWordCodePointsLength, commitPoint, &givenSuggestOptions, outputCodePoints,
                scores, spaceIndices, outputTypes);
    } else {
        count = dictionary->getBigrams(prevWordCodePoints, prevWordCodePointsLength,
                inputCodePoints, inputSize, outputCodePoints, scores, outputTypes);
+4 −2
Original line number Diff line number Diff line
@@ -34,12 +34,14 @@ static void latinime_initDicTraverseSession(JNIEnv *env, jclass clazz, jlong tra
    void *ts = reinterpret_cast<void *>(traverseSession);
    Dictionary *dict = reinterpret_cast<Dictionary *>(dictionary);
    if (!previousWord) {
        DicTraverseWrapper::initDicTraverseSession(ts, dict, 0, 0);
        DicTraverseWrapper::initDicTraverseSession(
                ts, dict, 0 /* prevWord */, 0 /* prevWordLength*/, 0 /* suggestOptions */);
        return;
    }
    int prevWord[previousWordLength];
    env->GetIntArrayRegion(previousWord, 0, previousWordLength, prevWord);
    DicTraverseWrapper::initDicTraverseSession(ts, dict, prevWord, previousWordLength);
    DicTraverseWrapper::initDicTraverseSession(
            ts, dict, prevWord, previousWordLength, 0 /* suggestOptions */);
}

static void latinime_releaseDicTraverseSession(JNIEnv *env, jclass clazz, jlong traverseSession) {
+1 −1
Original line number Diff line number Diff line
@@ -22,5 +22,5 @@ namespace latinime {
void *(*DicTraverseWrapper::sDicTraverseSessionFactoryMethod)(JNIEnv *, jstring) = 0;
void (*DicTraverseWrapper::sDicTraverseSessionReleaseMethod)(void *) = 0;
void (*DicTraverseWrapper::sDicTraverseSessionInitMethod)(
        void *, const Dictionary *const, const int *, const int) = 0;
        void *, const Dictionary *const, const int *, const int, const SuggestOptions *const) = 0;
} // namespace latinime
+8 −4
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@

namespace latinime {
class Dictionary;
class SuggestOptions;
// TODO: Remove
class DicTraverseWrapper {
 public:
@@ -32,9 +33,11 @@ class DicTraverseWrapper {
        return 0;
    }
    static void initDicTraverseSession(void *traverseSession, const Dictionary *const dictionary,
            const int *prevWord, const int prevWordLength) {
            const int *prevWord, const int prevWordLength,
            const SuggestOptions *const suggestOptions) {
        if (sDicTraverseSessionInitMethod) {
            sDicTraverseSessionInitMethod(traverseSession, dictionary, prevWord, prevWordLength);
            sDicTraverseSessionInitMethod(
                    traverseSession, dictionary, prevWord, prevWordLength, suggestOptions);
        }
    }
    static void releaseDicTraverseSession(void *traverseSession) {
@@ -46,7 +49,8 @@ class DicTraverseWrapper {
        sDicTraverseSessionFactoryMethod = factoryMethod;
    }
    static void setTraverseSessionInitMethod(
            void (*initMethod)(void *, const Dictionary *const, const int *, const int)) {
            void (*initMethod)(void *, const Dictionary *const, const int *, const int,
                    const SuggestOptions *const)) {
        sDicTraverseSessionInitMethod = initMethod;
    }
    static void setTraverseSessionReleaseMethod(void (*releaseMethod)(void *)) {
@@ -57,7 +61,7 @@ class DicTraverseWrapper {
    DISALLOW_IMPLICIT_CONSTRUCTORS(DicTraverseWrapper);
    static void *(*sDicTraverseSessionFactoryMethod)(JNIEnv *, jstring);
    static void (*sDicTraverseSessionInitMethod)(
            void *, const Dictionary *const, const int *, const int);
            void *, const Dictionary *const, const int *, const int, const SuggestOptions *const);
    static void (*sDicTraverseSessionReleaseMethod)(void *);
};
} // namespace latinime
+9 −8
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include "binary_format.h"
#include "defines.h"
#include "dic_traverse_wrapper.h"
#include "suggest_options.h"
#include "suggest/core/suggest.h"
#include "suggest/policyimpl/gesture/gesture_suggest_policy_factory.h"
#include "suggest/policyimpl/typing/typing_suggest_policy_factory.h"
@@ -53,13 +54,13 @@ Dictionary::~Dictionary() {

int Dictionary::getSuggestions(ProximityInfo *proximityInfo, void *traverseSession,
        int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints,
        int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint, bool isGesture,
        bool useFullEditDistance, int *outWords, int *frequencies, int *spaceIndices,
        int *outputTypes) const {
        int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint,
        const SuggestOptions *const suggestOptions, int *outWords, int *frequencies,
        int *spaceIndices, int *outputTypes) const {
    int result = 0;
    if (isGesture) {
    if (suggestOptions->isGesture()) {
        DicTraverseWrapper::initDicTraverseSession(
                traverseSession, this, prevWordCodePoints, prevWordLength);
                traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions);
        result = mGestureSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates,
                ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords,
                frequencies, spaceIndices, outputTypes);
@@ -70,7 +71,7 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, void *traverseSessi
    } else {
        if (USE_SUGGEST_INTERFACE_FOR_TYPING) {
            DicTraverseWrapper::initDicTraverseSession(
                    traverseSession, this, prevWordCodePoints, prevWordLength);
                    traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions);
            result = mTypingSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates,
                    ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint,
                    outWords, frequencies, spaceIndices, outputTypes);
@@ -84,8 +85,8 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, void *traverseSessi
            mBigramDictionary->fillBigramAddressToProbabilityMapAndFilter(prevWordCodePoints,
                    prevWordLength, &bigramMap, bigramFilter);
            result = mUnigramDictionary->getSuggestions(proximityInfo, xcoordinates, ycoordinates,
                    inputCodePoints, inputSize, &bigramMap, bigramFilter, useFullEditDistance,
                    outWords, frequencies, outputTypes);
                    inputCodePoints, inputSize, &bigramMap, bigramFilter,
                    suggestOptions->useFullEditDistance(), outWords, frequencies, outputTypes);
            return result;
        }
    }
Loading