diff options
Diffstat (limited to 'native')
-rw-r--r-- | native/jni/NativeFileList.mk | 2 | ||||
-rw-r--r-- | native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp | 13 | ||||
-rw-r--r-- | native/jni/src/suggest/core/dictionary/dictionary.cpp | 4 | ||||
-rw-r--r-- | native/jni/src/suggest/core/dictionary/dictionary.h | 6 | ||||
-rw-r--r-- | native/jni/src/suggest/core/dictionary/word_property.cpp (renamed from native/jni/src/suggest/core/dictionary/unigram_property.cpp) | 6 | ||||
-rw-r--r-- | native/jni/src/suggest/core/dictionary/word_property.h (renamed from native/jni/src/suggest/core/dictionary/unigram_property.h) | 48 | ||||
-rw-r--r-- | native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h | 4 | ||||
-rw-r--r-- | native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h | 6 | ||||
-rw-r--r-- | native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp | 14 | ||||
-rw-r--r-- | native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h | 2 |
10 files changed, 45 insertions, 60 deletions
diff --git a/native/jni/NativeFileList.mk b/native/jni/NativeFileList.mk index d2f22598e..c7061c8c3 100644 --- a/native/jni/NativeFileList.mk +++ b/native/jni/NativeFileList.mk @@ -32,7 +32,7 @@ LATIN_IME_CORE_SRC_FILES := \ error_type_utils.cpp \ multi_bigram_map.cpp \ suggestions_output_utils.cpp \ - unigram_property.cpp) \ + word_property.cpp) \ $(addprefix suggest/core/layout/, \ additional_proximity_chars.cpp \ proximity_info.cpp \ diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index 586a306ec..16a3fe825 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -24,7 +24,7 @@ #include "jni.h" #include "jni_common.h" #include "suggest/core/dictionary/dictionary.h" -#include "suggest/core/dictionary/unigram_property.h" +#include "suggest/core/dictionary/word_property.h" #include "suggest/core/suggest_options.h" #include "suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h" #include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h" @@ -260,7 +260,7 @@ static jint latinime_BinaryDictionary_getBigramProbability(JNIEnv *env, jclass c word1Length); } -static void latinime_BinaryDictionary_getUnigramProperty(JNIEnv *env, jclass clazz, +static void latinime_BinaryDictionary_getWordProperty(JNIEnv *env, jclass clazz, jlong dict, jintArray word, jintArray outCodePoints, jbooleanArray outFlags, jintArray outProbability, jintArray outHistoricalInfo, jobject outShortcutTargets, jobject outShortcutProbabilities) { @@ -269,9 +269,8 @@ static void latinime_BinaryDictionary_getUnigramProperty(JNIEnv *env, jclass cla const jsize wordLength = env->GetArrayLength(word); int wordCodePoints[wordLength]; env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints); - const UnigramProperty unigramProperty = dictionary->getUnigramProperty( - wordCodePoints, wordLength); - unigramProperty.outputProperties(env, outCodePoints, outFlags, outProbability, + const WordProperty wordProperty = dictionary->getWordProperty(wordCodePoints, wordLength); + wordProperty.outputProperties(env, outCodePoints, outFlags, outProbability, outHistoricalInfo, outShortcutTargets, outShortcutProbabilities); } @@ -521,9 +520,9 @@ static const JNINativeMethod sMethods[] = { reinterpret_cast<void *>(latinime_BinaryDictionary_getBigramProbability) }, { - const_cast<char *>("getUnigramPropertyNative"), + const_cast<char *>("getWordPropertyNative"), const_cast<char *>("(J[I[I[Z[I[ILjava/util/ArrayList;Ljava/util/ArrayList;)V"), - reinterpret_cast<void *>(latinime_BinaryDictionary_getUnigramProperty) + reinterpret_cast<void *>(latinime_BinaryDictionary_getWordProperty) }, { const_cast<char *>("calcNormalizedScoreNative"), diff --git a/native/jni/src/suggest/core/dictionary/dictionary.cpp b/native/jni/src/suggest/core/dictionary/dictionary.cpp index e68c0a6d8..16b1a56b1 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.cpp +++ b/native/jni/src/suggest/core/dictionary/dictionary.cpp @@ -143,10 +143,10 @@ void Dictionary::getProperty(const char *const query, const int queryLength, cha maxResultLength); } -const UnigramProperty Dictionary::getUnigramProperty(const int *const codePoints, +const WordProperty Dictionary::getWordProperty(const int *const codePoints, const int codePointCount) { TimeKeeper::setCurrentTime(); - return mDictionaryStructureWithBufferPolicy.get()->getUnigramProperty( + return mDictionaryStructureWithBufferPolicy.get()->getWordProperty( codePoints, codePointCount); } diff --git a/native/jni/src/suggest/core/dictionary/dictionary.h b/native/jni/src/suggest/core/dictionary/dictionary.h index b37b4aa18..4a468f3df 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.h +++ b/native/jni/src/suggest/core/dictionary/dictionary.h @@ -22,7 +22,7 @@ #include "defines.h" #include "jni.h" #include "suggest/core/dictionary/bigram_dictionary.h" -#include "suggest/core/dictionary/unigram_property.h" +#include "suggest/core/dictionary/word_property.h" #include "suggest/core/policy/dictionary_header_structure_policy.h" #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h" #include "suggest/core/suggest_interface.h" @@ -34,7 +34,7 @@ class DictionaryStructureWithBufferPolicy; class DicTraverseSession; class ProximityInfo; class SuggestOptions; -class UnigramProperty; +class WordProperty; class Dictionary { public: @@ -94,7 +94,7 @@ class Dictionary { void getProperty(const char *const query, const int queryLength, char *const outResult, const int maxResultLength); - const UnigramProperty getUnigramProperty(const int *const codePoints, const int codePointCount); + const WordProperty getWordProperty(const int *const codePoints, const int codePointCount); const DictionaryStructureWithBufferPolicy *getDictionaryStructurePolicy() const { return mDictionaryStructureWithBufferPolicy.get(); diff --git a/native/jni/src/suggest/core/dictionary/unigram_property.cpp b/native/jni/src/suggest/core/dictionary/word_property.cpp index 16bbb69d8..ed32bde8b 100644 --- a/native/jni/src/suggest/core/dictionary/unigram_property.cpp +++ b/native/jni/src/suggest/core/dictionary/word_property.cpp @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "suggest/core/dictionary/unigram_property.h" +#include "suggest/core/dictionary/word_property.h" namespace latinime { -void UnigramProperty::outputProperties(JNIEnv *const env, jintArray outCodePoints, +void WordProperty::outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags, jintArray outProbability, jintArray outHistoricalInfo, jobject outShortcutTargets, jobject outShortcutProbabilities) const { - env->SetIntArrayRegion(outCodePoints, 0 /* start */, mCodePointCount, mCodePoints); + env->SetIntArrayRegion(outCodePoints, 0 /* start */, mCodePoints.size(), &mCodePoints[0]); jboolean flags[] = {mIsNotAWord, mIsBlacklisted, mHasBigrams, mHasShortcuts}; env->SetBooleanArrayRegion(outFlags, 0 /* start */, NELEMS(flags), flags); env->SetIntArrayRegion(outProbability, 0 /* start */, 1 /* len */, &mProbability); diff --git a/native/jni/src/suggest/core/dictionary/unigram_property.h b/native/jni/src/suggest/core/dictionary/word_property.h index c4ebb86ab..dcac8536a 100644 --- a/native/jni/src/suggest/core/dictionary/unigram_property.h +++ b/native/jni/src/suggest/core/dictionary/word_property.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#ifndef LATINIME_UNIGRAM_PROPERTY_H -#define LATINIME_UNIGRAM_PROPERTY_H +#ifndef LATINIME_WORD_PROPERTY_H +#define LATINIME_WORD_PROPERTY_H #include <cstring> #include <vector> @@ -25,51 +25,35 @@ namespace latinime { -// This class is used for returning information belonging to a unigram to java side. -class UnigramProperty { +// This class is used for returning information belonging to a word to java side. +class WordProperty { public: - // Invalid unigram. - UnigramProperty() - : mCodePoints(), mCodePointCount(0), mIsNotAWord(false), mIsBlacklisted(false), + // TODO: Add bigram information. + // Invalid word. + WordProperty() + : mCodePoints(), mIsNotAWord(false), mIsBlacklisted(false), mHasBigrams(false), mHasShortcuts(false), mProbability(NOT_A_PROBABILITY), mTimestamp(0), mLevel(0), mCount(0), mShortcutTargets(), mShortcutProbabilities() {} - UnigramProperty(const UnigramProperty &unigramProperty) - : mCodePoints(), mCodePointCount(unigramProperty.mCodePointCount), - mIsNotAWord(unigramProperty.mIsNotAWord), - mIsBlacklisted(unigramProperty.mIsBlacklisted), - mHasBigrams(unigramProperty.mHasBigrams), - mHasShortcuts(unigramProperty.mHasShortcuts), - mProbability(unigramProperty.mProbability), - mTimestamp(unigramProperty.mTimestamp), mLevel(unigramProperty.mLevel), - mCount(unigramProperty.mCount), mShortcutTargets(unigramProperty.mShortcutTargets), - mShortcutProbabilities(unigramProperty.mShortcutProbabilities) { - memcpy(mCodePoints, unigramProperty.mCodePoints, sizeof(mCodePoints)); - } - - UnigramProperty(const int *const codePoints, const int codePointCount, + WordProperty(const std::vector<int> *const codePoints, const bool isNotAWord, const bool isBlacklisted, const bool hasBigrams, const bool hasShortcuts, const int probability, const int timestamp, const int level, const int count, const std::vector<std::vector<int> > *const shortcutTargets, const std::vector<int> *const shortcutProbabilities) - : mCodePoints(), mCodePointCount(codePointCount), - mIsNotAWord(isNotAWord), mIsBlacklisted(isBlacklisted), mHasBigrams(hasBigrams), - mHasShortcuts(hasShortcuts), mProbability(probability), mTimestamp(timestamp), - mLevel(level), mCount(count), mShortcutTargets(*shortcutTargets), - mShortcutProbabilities(*shortcutProbabilities) { - memcpy(mCodePoints, codePoints, sizeof(mCodePoints)); - } + : mCodePoints(*codePoints), mIsNotAWord(isNotAWord), mIsBlacklisted(isBlacklisted), + mHasBigrams(hasBigrams), mHasShortcuts(hasShortcuts), mProbability(probability), + mTimestamp(timestamp), mLevel(level), mCount(count), + mShortcutTargets(*shortcutTargets), mShortcutProbabilities(*shortcutProbabilities) {} void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags, jintArray outProbability, jintArray outHistoricalInfo, jobject outShortcutTargets, jobject outShortcutProbabilities) const; private: - DISALLOW_ASSIGNMENT_OPERATOR(UnigramProperty); + DISALLOW_ASSIGNMENT_OPERATOR(WordProperty); - int mCodePoints[MAX_WORD_LENGTH]; - int mCodePointCount; + std::vector<int> mCodePoints; bool mIsNotAWord; bool mIsBlacklisted; bool mHasBigrams; @@ -84,4 +68,4 @@ class UnigramProperty { std::vector<int> mShortcutProbabilities; }; } // namespace latinime -#endif // LATINIME_UNIGRAM_PROPERTY_H +#endif // LATINIME_WORD_PROPERTY_H diff --git a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h index c74a4ebbe..b878984f1 100644 --- a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +++ b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h @@ -18,7 +18,7 @@ #define LATINIME_DICTIONARY_STRUCTURE_POLICY_H #include "defines.h" -#include "suggest/core/dictionary/unigram_property.h" +#include "suggest/core/dictionary/word_property.h" #include "utils/exclusive_ownership_pointer.h" namespace latinime { @@ -92,7 +92,7 @@ class DictionaryStructureWithBufferPolicy { const int maxResultLength) = 0; // Used for testing. - virtual const UnigramProperty getUnigramProperty(const int *const codePonts, + virtual const WordProperty getWordProperty(const int *const codePonts, const int codePointCount) const = 0; protected: diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h index 2adafd22b..67d615e86 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h @@ -123,10 +123,10 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { } } - const UnigramProperty getUnigramProperty(const int *const codePoints, + const WordProperty getWordProperty(const int *const codePoints, const int codePointCount) const { - // getUnigramProperty is not supported. - return UnigramProperty(); + // getWordProperty is not supported. + return WordProperty(); } private: diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp index b4730fe68..0b067e127 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp @@ -20,7 +20,7 @@ #include "suggest/core/dicnode/dic_node.h" #include "suggest/core/dicnode/dic_node_vector.h" -#include "suggest/core/dictionary/unigram_property.h" +#include "suggest/core/dictionary/word_property.h" #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h" #include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h" #include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h" @@ -317,15 +317,17 @@ void Ver4PatriciaTriePolicy::getProperty(const char *const query, const int quer } } -const UnigramProperty Ver4PatriciaTriePolicy::getUnigramProperty(const int *const codePoints, +const WordProperty Ver4PatriciaTriePolicy::getWordProperty(const int *const codePoints, const int codePointCount) const { const int ptNodePos = getTerminalPtNodePositionOfWord(codePoints, codePointCount, false /* forceLowerCaseSearch */); if (ptNodePos == NOT_A_DICT_POS) { - AKLOGE("fetchUnigramProperty is called for invalid word."); - return UnigramProperty(); + AKLOGE("getWordProperty is called for invalid word."); + return WordProperty(); } const PtNodeParams ptNodeParams = mNodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos); + std::vector<int> codePointVector(ptNodeParams.getCodePoints(), + ptNodeParams.getCodePoints() + ptNodeParams.getCodePointCount()); const ProbabilityEntry probabilityEntry = mBuffers.get()->getProbabilityDictContent()->getProbabilityEntry( ptNodeParams.getTerminalId()); @@ -349,8 +351,8 @@ const UnigramProperty Ver4PatriciaTriePolicy::getUnigramProperty(const int *cons shortcutProbabilities.push_back(shortcutProbability); } } - return UnigramProperty(ptNodeParams.getCodePoints(), ptNodeParams.getCodePointCount(), - ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.hasBigrams(), + return WordProperty(&codePointVector, ptNodeParams.isNotAWord(), + ptNodeParams.isBlacklisted(), ptNodeParams.hasBigrams(), ptNodeParams.hasShortcutTargets(), ptNodeParams.getProbability(), historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount(), &shortcutTargets, &shortcutProbabilities); diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h index 81aed20a3..a43bd0eca 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h @@ -106,7 +106,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { void getProperty(const char *const query, const int queryLength, char *const outResult, const int maxResultLength); - const UnigramProperty getUnigramProperty(const int *const codePoints, + const WordProperty getWordProperty(const int *const codePoints, const int codePointCount) const; private: |