diff options
Diffstat (limited to 'native/jni/src')
14 files changed, 36 insertions, 148 deletions
diff --git a/native/jni/src/dic_traverse_wrapper.cpp b/native/jni/src/dic_traverse_wrapper.cpp deleted file mode 100644 index ec8c62dcc..000000000 --- a/native/jni/src/dic_traverse_wrapper.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2012, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "LatinIME: jni: Session" - -#include "dic_traverse_wrapper.h" - -namespace latinime { -void *(*DicTraverseWrapper::sDicTraverseSessionFactoryMethod)(JNIEnv *, jstring) = 0; -void (*DicTraverseWrapper::sDicTraverseSessionReleaseMethod)(void *) = 0; -void (*DicTraverseWrapper::sDicTraverseSessionInitMethod)( - void *, const Dictionary *const, const int *, const int, const SuggestOptions *const) = 0; -} // namespace latinime diff --git a/native/jni/src/dic_traverse_wrapper.h b/native/jni/src/dic_traverse_wrapper.h deleted file mode 100644 index 43b4c9ade..000000000 --- a/native/jni/src/dic_traverse_wrapper.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef LATINIME_DIC_TRAVERSE_WRAPPER_H -#define LATINIME_DIC_TRAVERSE_WRAPPER_H - -#include "defines.h" -#include "jni.h" - -namespace latinime { -class Dictionary; -class SuggestOptions; -// TODO: Remove -class DicTraverseWrapper { - public: - static void *getDicTraverseSession(JNIEnv *env, jstring locale) { - if (sDicTraverseSessionFactoryMethod) { - return sDicTraverseSessionFactoryMethod(env, locale); - } - return 0; - } - static void initDicTraverseSession(void *traverseSession, const Dictionary *const dictionary, - const int *prevWord, const int prevWordLength, - const SuggestOptions *const suggestOptions) { - if (sDicTraverseSessionInitMethod) { - sDicTraverseSessionInitMethod( - traverseSession, dictionary, prevWord, prevWordLength, suggestOptions); - } - } - static void releaseDicTraverseSession(void *traverseSession) { - if (sDicTraverseSessionReleaseMethod) { - sDicTraverseSessionReleaseMethod(traverseSession); - } - } - static void setTraverseSessionFactoryMethod(void *(*factoryMethod)(JNIEnv *, jstring)) { - sDicTraverseSessionFactoryMethod = factoryMethod; - } - static void setTraverseSessionInitMethod( - void (*initMethod)(void *, const Dictionary *const, const int *, const int, - const SuggestOptions *const)) { - sDicTraverseSessionInitMethod = initMethod; - } - static void setTraverseSessionReleaseMethod(void (*releaseMethod)(void *)) { - sDicTraverseSessionReleaseMethod = releaseMethod; - } - - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(DicTraverseWrapper); - static void *(*sDicTraverseSessionFactoryMethod)(JNIEnv *, jstring); - static void (*sDicTraverseSessionInitMethod)( - void *, const Dictionary *const, const int *, const int, const SuggestOptions *const); - static void (*sDicTraverseSessionReleaseMethod)(void *); -}; -} // namespace latinime -#endif // LATINIME_DIC_TRAVERSE_WRAPPER_H diff --git a/native/jni/src/correction.cpp b/native/jni/src/obsolete/correction.cpp index feed5622b..e6c577f85 100644 --- a/native/jni/src/correction.cpp +++ b/native/jni/src/obsolete/correction.cpp @@ -18,8 +18,8 @@ #include <cmath> -#include "correction.h" #include "defines.h" +#include "obsolete/correction.h" #include "suggest/core/layout/proximity_info_state.h" #include "suggest/core/layout/touch_position_correction_utils.h" #include "suggest/policyimpl/utils/edit_distance.h" diff --git a/native/jni/src/correction.h b/native/jni/src/obsolete/correction.h index 84d6429ba..710220d66 100644 --- a/native/jni/src/correction.h +++ b/native/jni/src/obsolete/correction.h @@ -19,8 +19,8 @@ #include <cstring> // for memset() -#include "correction_state.h" #include "defines.h" +#include "obsolete/correction_state.h" #include "suggest/core/layout/proximity_info_state.h" #include "utils/char_utils.h" diff --git a/native/jni/src/correction_state.h b/native/jni/src/obsolete/correction_state.h index a63d4aa94..a63d4aa94 100644 --- a/native/jni/src/correction_state.h +++ b/native/jni/src/obsolete/correction_state.h diff --git a/native/jni/src/unigram_dictionary.cpp b/native/jni/src/obsolete/unigram_dictionary.cpp index 5820a1d0e..df6d425d3 100644 --- a/native/jni/src/unigram_dictionary.cpp +++ b/native/jni/src/obsolete/unigram_dictionary.cpp @@ -19,6 +19,9 @@ #define LOG_TAG "LatinIME: unigram_dictionary.cpp" #include "defines.h" +#include "obsolete/unigram_dictionary.h" +#include "obsolete/words_priority_queue.h" +#include "obsolete/words_priority_queue_pool.h" #include "suggest/core/dictionary/binary_dictionary_info.h" #include "suggest/core/dictionary/binary_format.h" #include "suggest/core/dictionary/dictionary.h" @@ -27,9 +30,6 @@ #include "suggest/core/dictionary/terminal_attributes.h" #include "suggest/core/layout/proximity_info.h" #include "utils/char_utils.h" -#include "unigram_dictionary.h" -#include "words_priority_queue.h" -#include "words_priority_queue_pool.h" namespace latinime { diff --git a/native/jni/src/unigram_dictionary.h b/native/jni/src/obsolete/unigram_dictionary.h index 4edd1f847..4edd1f847 100644 --- a/native/jni/src/unigram_dictionary.h +++ b/native/jni/src/obsolete/unigram_dictionary.h diff --git a/native/jni/src/words_priority_queue.cpp b/native/jni/src/obsolete/words_priority_queue.cpp index 7e18d0f87..563cf918e 100644 --- a/native/jni/src/words_priority_queue.cpp +++ b/native/jni/src/obsolete/words_priority_queue.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "words_priority_queue.h" +#include "obsolete/words_priority_queue.h" namespace latinime { diff --git a/native/jni/src/words_priority_queue.h b/native/jni/src/obsolete/words_priority_queue.h index 54e8007a2..337e3e32b 100644 --- a/native/jni/src/words_priority_queue.h +++ b/native/jni/src/obsolete/words_priority_queue.h @@ -20,8 +20,8 @@ #include <cstring> // for memcpy() #include <queue> -#include "correction.h" #include "defines.h" +#include "obsolete/correction.h" namespace latinime { diff --git a/native/jni/src/words_priority_queue_pool.h b/native/jni/src/obsolete/words_priority_queue_pool.h index 2cd210a05..bf04568db 100644 --- a/native/jni/src/words_priority_queue_pool.h +++ b/native/jni/src/obsolete/words_priority_queue_pool.h @@ -18,7 +18,7 @@ #define LATINIME_WORDS_PRIORITY_QUEUE_POOL_H #include "defines.h" -#include "words_priority_queue.h" +#include "obsolete/words_priority_queue.h" namespace latinime { diff --git a/native/jni/src/suggest/core/dictionary/dictionary.cpp b/native/jni/src/suggest/core/dictionary/dictionary.cpp index 6fd755dfe..e5956c754 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.cpp +++ b/native/jni/src/suggest/core/dictionary/dictionary.cpp @@ -22,14 +22,14 @@ #include <stdint.h> #include "defines.h" -#include "dic_traverse_wrapper.h" +#include "obsolete/unigram_dictionary.h" #include "suggest/core/dictionary/bigram_dictionary.h" #include "suggest/core/dictionary/binary_format.h" +#include "suggest/core/session/dic_traverse_session.h" #include "suggest/core/suggest.h" #include "suggest/core/suggest_options.h" #include "suggest/policyimpl/gesture/gesture_suggest_policy_factory.h" #include "suggest/policyimpl/typing/typing_suggest_policy_factory.h" -#include "unigram_dictionary.h" namespace latinime { @@ -50,14 +50,14 @@ Dictionary::~Dictionary() { delete mTypingSuggest; } -int Dictionary::getSuggestions(ProximityInfo *proximityInfo, void *traverseSession, +int Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession *traverseSession, int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, 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 (suggestOptions->isGesture()) { - DicTraverseWrapper::initDicTraverseSession( + DicTraverseSession::initSessionInstance( traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); result = mGestureSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords, @@ -68,7 +68,7 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, void *traverseSessi return result; } else { if (USE_SUGGEST_INTERFACE_FOR_TYPING) { - DicTraverseWrapper::initDicTraverseSession( + DicTraverseSession::initSessionInstance( traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); result = mTypingSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, diff --git a/native/jni/src/suggest/core/dictionary/dictionary.h b/native/jni/src/suggest/core/dictionary/dictionary.h index 771837bc6..40e25486e 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.h +++ b/native/jni/src/suggest/core/dictionary/dictionary.h @@ -25,6 +25,7 @@ namespace latinime { class BigramDictionary; +class DicTraverseSession; class ProximityInfo; class SuggestInterface; class SuggestOptions; @@ -54,9 +55,9 @@ class Dictionary { Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust); - int getSuggestions(ProximityInfo *proximityInfo, void *traverseSession, int *xcoordinates, - int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, int inputSize, - int *prevWordCodePoints, int prevWordLength, int commitPoint, + int getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession *traverseSession, + int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, + int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint, const SuggestOptions *const suggestOptions, int *outWords, int *frequencies, int *spaceIndices, int *outputTypes) const; diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.cpp b/native/jni/src/suggest/core/session/dic_traverse_session.cpp index be293df42..c398caefa 100644 --- a/native/jni/src/suggest/core/session/dic_traverse_session.cpp +++ b/native/jni/src/suggest/core/session/dic_traverse_session.cpp @@ -17,7 +17,6 @@ #include "suggest/core/session/dic_traverse_session.h" #include "defines.h" -#include "dic_traverse_wrapper.h" #include "jni.h" #include "suggest/core/dicnode/dic_node_utils.h" #include "suggest/core/dictionary/binary_dictionary_info.h" @@ -26,43 +25,6 @@ namespace latinime { -const int DicTraverseSession::CACHE_START_INPUT_LENGTH_THRESHOLD = 20; - -// A factory method for DicTraverseSession -static void *getSessionInstance(JNIEnv *env, jstring localeStr) { - return new DicTraverseSession(env, localeStr); -} - -// TODO: Pass "DicTraverseSession *traverseSession" when the source code structure settles down. -static void initSessionInstance(void *traverseSession, const Dictionary *const dictionary, - const int *prevWord, const int prevWordLength, - const SuggestOptions *const suggestOptions) { - if (traverseSession) { - DicTraverseSession *tSession = static_cast<DicTraverseSession *>(traverseSession); - tSession->init(dictionary, prevWord, prevWordLength, suggestOptions); - } -} - -// TODO: Pass "DicTraverseSession *traverseSession" when the source code structure settles down. -static void releaseSessionInstance(void *traverseSession) { - delete static_cast<DicTraverseSession *>(traverseSession); -} - -// An ad-hoc internal class to register the factory method defined above -class TraverseSessionFactoryRegisterer { - public: - TraverseSessionFactoryRegisterer() { - DicTraverseWrapper::setTraverseSessionFactoryMethod(getSessionInstance); - DicTraverseWrapper::setTraverseSessionInitMethod(initSessionInstance); - DicTraverseWrapper::setTraverseSessionReleaseMethod(releaseSessionInstance); - } - private: - DISALLOW_COPY_AND_ASSIGN(TraverseSessionFactoryRegisterer); -}; - -// To invoke the TraverseSessionFactoryRegisterer constructor in the global constructor. -static TraverseSessionFactoryRegisterer traverseSessionFactoryRegisterer; - void DicTraverseSession::init(const Dictionary *const dictionary, const int *prevWord, int prevWordLength, const SuggestOptions *const suggestOptions) { mDictionary = dictionary; diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.h b/native/jni/src/suggest/core/session/dic_traverse_session.h index 3b6a3dc8c..630b3b59b 100644 --- a/native/jni/src/suggest/core/session/dic_traverse_session.h +++ b/native/jni/src/suggest/core/session/dic_traverse_session.h @@ -35,6 +35,25 @@ class SuggestOptions; class DicTraverseSession { public: + + // A factory method for DicTraverseSession + static AK_FORCE_INLINE void *getSessionInstance(JNIEnv *env, jstring localeStr) { + return new DicTraverseSession(env, localeStr); + } + + static AK_FORCE_INLINE void initSessionInstance(DicTraverseSession *traverseSession, + const Dictionary *const dictionary, const int *prevWord, const int prevWordLength, + const SuggestOptions *const suggestOptions) { + if (traverseSession) { + DicTraverseSession *tSession = static_cast<DicTraverseSession *>(traverseSession); + tSession->init(dictionary, prevWord, prevWordLength, suggestOptions); + } + } + + static AK_FORCE_INLINE void releaseSessionInstance(DicTraverseSession *traverseSession) { + delete traverseSession; + } + AK_FORCE_INLINE DicTraverseSession(JNIEnv *env, jstring localeStr) : mPrevWordPos(NOT_VALID_WORD), mProximityInfo(0), mDictionary(0), mSuggestOptions(0), mDicNodesCache(), mMultiBigramMap(), |