aboutsummaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
Diffstat (limited to 'native')
-rw-r--r--native/jni/NativeFileList.mk2
-rw-r--r--native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp13
-rw-r--r--native/jni/src/suggest/core/dictionary/dictionary.cpp4
-rw-r--r--native/jni/src/suggest/core/dictionary/dictionary.h6
-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.h4
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h6
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp14
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h2
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: