Loading native/jni/Android.mk +2 −43 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ LATIN_IME_CORE_SRC_FILES := \ proximity_info.cpp \ proximity_info_state.cpp \ unigram_dictionary.cpp \ gesture/incremental_decoder_interface.cpp gesture/gesture_decoder_wrapper.cpp LOCAL_SRC_FILES := \ $(LATIN_IME_JNI_SRC_FILES) \ Loading Loading @@ -78,49 +78,8 @@ include $(BUILD_STATIC_LIBRARY) ###################################### include $(CLEAR_VARS) LOCAL_C_INCLUDES += $(LATIN_IME_SRC_FULLPATH_DIR) \ $(addprefix $(LATIN_IME_SRC_FULLPATH_DIR)/, gesture gesture/impl) LOCAL_CFLAGS += -Werror -Wall # To suppress compiler warnings for unused variables/functions used for debug features etc. LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function LATIN_IME_GESTURE_IMPL_SRC_FILES := \ gesture/impl/gesture_decoder_impl.cpp \ gesture/impl/incremental_decoder_impl.cpp \ gesture/impl/token_beam_impl.cpp \ gesture/impl/token_impl.cpp LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_GESTURE_IMPL_SRC_FILES)) ifeq ($(FLAG_DO_PROFILE), true) $(warning Making profiling version of native library) LOCAL_CFLAGS += -DFLAG_DO_PROFILE else # FLAG_DO_PROFILE ifeq ($(FLAG_DBG), true) $(warning Making debug version of native library) LOCAL_CFLAGS += -DFLAG_DBG endif # FLAG_DBG endif # FLAG_DO_PROFILE # TODO: Can remove this static library from AOSP completely? LOCAL_MODULE := libjni_latinime_gesture_impl_aosp_static LOCAL_MODULE_TAGS := optional ifdef HISTORICAL_NDK_VERSIONS_ROOT # In the platform build system include external/stlport/libstlport.mk else # In the NDK build system LOCAL_C_INCLUDES += external/stlport/stlport bionic endif include $(BUILD_STATIC_LIBRARY) ###################################### include $(CLEAR_VARS) # All code in LOCAL_WHOLE_STATIC_LIBRARIES will be built into this shared library. LOCAL_WHOLE_STATIC_LIBRARIES := \ libjni_latinime_common_static libjni_latinime_gesture_impl_aosp_static LOCAL_WHOLE_STATIC_LIBRARIES := libjni_latinime_common_static ifdef HISTORICAL_NDK_VERSIONS_ROOT # In the platform build system LOCAL_SHARED_LIBRARIES := libstlport Loading native/jni/src/dictionary.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include "binary_format.h" #include "defines.h" #include "dictionary.h" #include "incremental_decoder_interface.h" #include "gesture_decoder_wrapper.h" namespace latinime { Loading @@ -44,8 +44,7 @@ Dictionary::Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust, mUnigramDictionary = new UnigramDictionary(mDict + headerSize, typedLetterMultiplier, fullWordMultiplier, maxWordLength, maxWords, options); mBigramDictionary = new BigramDictionary(mDict + headerSize, maxWordLength); mGestureDecoder = IncrementalDecoderInterface::getGestureDecoderInstance(maxWordLength, maxWords); mGestureDecoder = new GestureDecoderWrapper(maxWordLength, maxWords); mGestureDecoder->setDict(mUnigramDictionary, mBigramDictionary, mDict + headerSize /* dict root */, 0 /* root pos */); } Loading native/jni/src/dictionary.h +2 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ class Dictionary { result = mGestureDecoder->getSuggestions(proximityInfo, xcoordinates, ycoordinates, times, pointerIds, codes, codesSize, commitPoint, outWords, frequencies, spaceIndices); return result; } else { std::map<int, int> bigramMap; uint8_t bigramFilter[BIGRAM_FILTER_BYTE_SIZE]; Loading @@ -53,9 +54,9 @@ class Dictionary { result = mUnigramDictionary->getSuggestions(proximityInfo, xcoordinates, ycoordinates, codes, codesSize, &bigramMap, bigramFilter, useFullEditDistance, outWords, frequencies); } return result; } } int getBigrams(const int32_t *word, int length, int *codes, int codesSize, unsigned short *outWords, int *frequencies, int maxWordLength, int maxBigrams) const { Loading native/jni/src/gesture/impl/token_impl.cpp→native/jni/src/gesture/gesture_decoder_wrapper.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,9 @@ * limitations under the License. */ #include "token_impl.h" #include "gesture_decoder_wrapper.h" namespace latinime { IncrementalDecoderInterface * (*GestureDecoderWrapper::sGestureDecoderFactoryMethod)(int, int) = 0; } // namespace latinime native/jni/src/gesture/impl/incremental_decoder_impl.h→native/jni/src/gesture/gesture_decoder_wrapper.h +91 −0 Original line number Diff line number Diff line Loading @@ -14,9 +14,10 @@ * limitations under the License. */ #ifndef LATINIME_INCREMENTAL_DECODER_IMPL_H #define LATINIME_INCREMENTAL_DECODER_IMPL_H #ifndef LATINIME_GESTURE_DECODER_WRAPPER_H #define LATINIME_GESTURE_DECODER_WRAPPER_H #include <stdint.h> #include "defines.h" #include "incremental_decoder_interface.h" Loading @@ -24,23 +25,67 @@ namespace latinime { class UnigramDictionary; class BigramDictionary; class ProximityInfo; class IncrementalDecoderImpl : public IncrementalDecoderInterface { class GestureDecoderWrapper : public IncrementalDecoderInterface { public: IncrementalDecoderImpl(int maxWordLength, int maxWords) { }; void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, const uint8_t *dictRoot, int rootPos) { }; void setPrevWord(const int32_t *prevWord, int prevWordLength) { }; void reset() { }; GestureDecoderWrapper(const int maxWordLength, const int maxWords) { mIncrementalDecoderInterface = getGestureDecoderInstance(maxWordLength, maxWords); } virtual ~GestureDecoderWrapper() { delete mIncrementalDecoderInterface; } int getSuggestions(ProximityInfo *pInfo, int *inputXs, int *inputYs, int *times, int *pointerIds, int *codes, int inputSize, int commitPoint, unsigned short *outWords, int *frequencies, int *outputIndices) { if (!mIncrementalDecoderInterface) { return 0; } return mIncrementalDecoderInterface->getSuggestions( pInfo, inputXs, inputYs, times, pointerIds, codes, inputSize, commitPoint, outWords, frequencies, outputIndices); } void reset() { if (!mIncrementalDecoderInterface) { return; } mIncrementalDecoderInterface->reset(); } void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, const uint8_t *dictRoot, int rootPos) { if (!mIncrementalDecoderInterface) { return; } mIncrementalDecoderInterface->setDict(dict, bigram, dictRoot, rootPos); } void setPrevWord(const int32_t *prevWord, int prevWordLength) { if (!mIncrementalDecoderInterface) { return; } mIncrementalDecoderInterface->setPrevWord(prevWord, prevWordLength); } static void setGestureDecoderFactoryMethod( IncrementalDecoderInterface *(*factoryMethod)(int, int)) { sGestureDecoderFactoryMethod = factoryMethod; } private: DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalDecoderImpl); DISALLOW_COPY_AND_ASSIGN(GestureDecoderWrapper); static IncrementalDecoderInterface *getGestureDecoderInstance(int maxWordLength, int maxWords) { if (sGestureDecoderFactoryMethod) { return sGestureDecoderFactoryMethod(maxWordLength, maxWords); } return 0; } static IncrementalDecoderInterface *(*sGestureDecoderFactoryMethod)(int, int); IncrementalDecoderInterface *mIncrementalDecoderInterface; }; } // namespace latinime #endif // LATINIME_INCREMENTAL_DECODER_IMPL_H #endif // LATINIME_GESTURE_DECODER_WRAPPER_H Loading
native/jni/Android.mk +2 −43 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ LATIN_IME_CORE_SRC_FILES := \ proximity_info.cpp \ proximity_info_state.cpp \ unigram_dictionary.cpp \ gesture/incremental_decoder_interface.cpp gesture/gesture_decoder_wrapper.cpp LOCAL_SRC_FILES := \ $(LATIN_IME_JNI_SRC_FILES) \ Loading Loading @@ -78,49 +78,8 @@ include $(BUILD_STATIC_LIBRARY) ###################################### include $(CLEAR_VARS) LOCAL_C_INCLUDES += $(LATIN_IME_SRC_FULLPATH_DIR) \ $(addprefix $(LATIN_IME_SRC_FULLPATH_DIR)/, gesture gesture/impl) LOCAL_CFLAGS += -Werror -Wall # To suppress compiler warnings for unused variables/functions used for debug features etc. LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function LATIN_IME_GESTURE_IMPL_SRC_FILES := \ gesture/impl/gesture_decoder_impl.cpp \ gesture/impl/incremental_decoder_impl.cpp \ gesture/impl/token_beam_impl.cpp \ gesture/impl/token_impl.cpp LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_GESTURE_IMPL_SRC_FILES)) ifeq ($(FLAG_DO_PROFILE), true) $(warning Making profiling version of native library) LOCAL_CFLAGS += -DFLAG_DO_PROFILE else # FLAG_DO_PROFILE ifeq ($(FLAG_DBG), true) $(warning Making debug version of native library) LOCAL_CFLAGS += -DFLAG_DBG endif # FLAG_DBG endif # FLAG_DO_PROFILE # TODO: Can remove this static library from AOSP completely? LOCAL_MODULE := libjni_latinime_gesture_impl_aosp_static LOCAL_MODULE_TAGS := optional ifdef HISTORICAL_NDK_VERSIONS_ROOT # In the platform build system include external/stlport/libstlport.mk else # In the NDK build system LOCAL_C_INCLUDES += external/stlport/stlport bionic endif include $(BUILD_STATIC_LIBRARY) ###################################### include $(CLEAR_VARS) # All code in LOCAL_WHOLE_STATIC_LIBRARIES will be built into this shared library. LOCAL_WHOLE_STATIC_LIBRARIES := \ libjni_latinime_common_static libjni_latinime_gesture_impl_aosp_static LOCAL_WHOLE_STATIC_LIBRARIES := libjni_latinime_common_static ifdef HISTORICAL_NDK_VERSIONS_ROOT # In the platform build system LOCAL_SHARED_LIBRARIES := libstlport Loading
native/jni/src/dictionary.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include "binary_format.h" #include "defines.h" #include "dictionary.h" #include "incremental_decoder_interface.h" #include "gesture_decoder_wrapper.h" namespace latinime { Loading @@ -44,8 +44,7 @@ Dictionary::Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust, mUnigramDictionary = new UnigramDictionary(mDict + headerSize, typedLetterMultiplier, fullWordMultiplier, maxWordLength, maxWords, options); mBigramDictionary = new BigramDictionary(mDict + headerSize, maxWordLength); mGestureDecoder = IncrementalDecoderInterface::getGestureDecoderInstance(maxWordLength, maxWords); mGestureDecoder = new GestureDecoderWrapper(maxWordLength, maxWords); mGestureDecoder->setDict(mUnigramDictionary, mBigramDictionary, mDict + headerSize /* dict root */, 0 /* root pos */); } Loading
native/jni/src/dictionary.h +2 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ class Dictionary { result = mGestureDecoder->getSuggestions(proximityInfo, xcoordinates, ycoordinates, times, pointerIds, codes, codesSize, commitPoint, outWords, frequencies, spaceIndices); return result; } else { std::map<int, int> bigramMap; uint8_t bigramFilter[BIGRAM_FILTER_BYTE_SIZE]; Loading @@ -53,9 +54,9 @@ class Dictionary { result = mUnigramDictionary->getSuggestions(proximityInfo, xcoordinates, ycoordinates, codes, codesSize, &bigramMap, bigramFilter, useFullEditDistance, outWords, frequencies); } return result; } } int getBigrams(const int32_t *word, int length, int *codes, int codesSize, unsigned short *outWords, int *frequencies, int maxWordLength, int maxBigrams) const { Loading
native/jni/src/gesture/impl/token_impl.cpp→native/jni/src/gesture/gesture_decoder_wrapper.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,9 @@ * limitations under the License. */ #include "token_impl.h" #include "gesture_decoder_wrapper.h" namespace latinime { IncrementalDecoderInterface * (*GestureDecoderWrapper::sGestureDecoderFactoryMethod)(int, int) = 0; } // namespace latinime
native/jni/src/gesture/impl/incremental_decoder_impl.h→native/jni/src/gesture/gesture_decoder_wrapper.h +91 −0 Original line number Diff line number Diff line Loading @@ -14,9 +14,10 @@ * limitations under the License. */ #ifndef LATINIME_INCREMENTAL_DECODER_IMPL_H #define LATINIME_INCREMENTAL_DECODER_IMPL_H #ifndef LATINIME_GESTURE_DECODER_WRAPPER_H #define LATINIME_GESTURE_DECODER_WRAPPER_H #include <stdint.h> #include "defines.h" #include "incremental_decoder_interface.h" Loading @@ -24,23 +25,67 @@ namespace latinime { class UnigramDictionary; class BigramDictionary; class ProximityInfo; class IncrementalDecoderImpl : public IncrementalDecoderInterface { class GestureDecoderWrapper : public IncrementalDecoderInterface { public: IncrementalDecoderImpl(int maxWordLength, int maxWords) { }; void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, const uint8_t *dictRoot, int rootPos) { }; void setPrevWord(const int32_t *prevWord, int prevWordLength) { }; void reset() { }; GestureDecoderWrapper(const int maxWordLength, const int maxWords) { mIncrementalDecoderInterface = getGestureDecoderInstance(maxWordLength, maxWords); } virtual ~GestureDecoderWrapper() { delete mIncrementalDecoderInterface; } int getSuggestions(ProximityInfo *pInfo, int *inputXs, int *inputYs, int *times, int *pointerIds, int *codes, int inputSize, int commitPoint, unsigned short *outWords, int *frequencies, int *outputIndices) { if (!mIncrementalDecoderInterface) { return 0; } return mIncrementalDecoderInterface->getSuggestions( pInfo, inputXs, inputYs, times, pointerIds, codes, inputSize, commitPoint, outWords, frequencies, outputIndices); } void reset() { if (!mIncrementalDecoderInterface) { return; } mIncrementalDecoderInterface->reset(); } void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, const uint8_t *dictRoot, int rootPos) { if (!mIncrementalDecoderInterface) { return; } mIncrementalDecoderInterface->setDict(dict, bigram, dictRoot, rootPos); } void setPrevWord(const int32_t *prevWord, int prevWordLength) { if (!mIncrementalDecoderInterface) { return; } mIncrementalDecoderInterface->setPrevWord(prevWord, prevWordLength); } static void setGestureDecoderFactoryMethod( IncrementalDecoderInterface *(*factoryMethod)(int, int)) { sGestureDecoderFactoryMethod = factoryMethod; } private: DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalDecoderImpl); DISALLOW_COPY_AND_ASSIGN(GestureDecoderWrapper); static IncrementalDecoderInterface *getGestureDecoderInstance(int maxWordLength, int maxWords) { if (sGestureDecoderFactoryMethod) { return sGestureDecoderFactoryMethod(maxWordLength, maxWords); } return 0; } static IncrementalDecoderInterface *(*sGestureDecoderFactoryMethod)(int, int); IncrementalDecoderInterface *mIncrementalDecoderInterface; }; } // namespace latinime #endif // LATINIME_INCREMENTAL_DECODER_IMPL_H #endif // LATINIME_GESTURE_DECODER_WRAPPER_H