diff options
author | 2014-04-22 17:08:50 +0000 | |
---|---|---|
committer | 2014-04-22 17:08:50 +0000 | |
commit | 1f5d2f6746f31c87b591c4a4159b1550a9a899d7 (patch) | |
tree | b5d6624ddf1b94062a8291628431bd7bcf51b6d6 /native/jni/src/utils/jni_data_utils.h | |
parent | 6d2fb203a8642c9779b51bb875a29aa71001921f (diff) | |
parent | 361881b82b387345ca8ddfad401feb71c21bee55 (diff) | |
download | latinime-1f5d2f6746f31c87b591c4a4159b1550a9a899d7.tar.gz latinime-1f5d2f6746f31c87b591c4a4159b1550a9a899d7.tar.xz latinime-1f5d2f6746f31c87b591c4a4159b1550a9a899d7.zip |
am 361881b8: Merge "Separate JniDataUtils::constructAttributeMap()."
* commit '361881b82b387345ca8ddfad401feb71c21bee55':
Separate JniDataUtils::constructAttributeMap().
Diffstat (limited to 'native/jni/src/utils/jni_data_utils.h')
-rw-r--r-- | native/jni/src/utils/jni_data_utils.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/native/jni/src/utils/jni_data_utils.h b/native/jni/src/utils/jni_data_utils.h index e0bbdfdc3..2ce02dc05 100644 --- a/native/jni/src/utils/jni_data_utils.h +++ b/native/jni/src/utils/jni_data_utils.h @@ -21,6 +21,8 @@ #include "defines.h" #include "jni.h" +#include "suggest/core/policy/dictionary_header_structure_policy.h" +#include "suggest/policyimpl/dictionary/header/header_read_write_utils.h" namespace latinime { @@ -36,6 +38,33 @@ class JniDataUtils { env->GetIntArrayRegion(array, 0 /* start */, arrayLength, outVector->data()); } + static DictionaryHeaderStructurePolicy::AttributeMap constructAttributeMap(JNIEnv *env, + jobjectArray attributeKeyStringArray, jobjectArray attributeValueStringArray) { + DictionaryHeaderStructurePolicy::AttributeMap attributeMap; + const int keyCount = env->GetArrayLength(attributeKeyStringArray); + for (int i = 0; i < keyCount; i++) { + jstring keyString = static_cast<jstring>( + env->GetObjectArrayElement(attributeKeyStringArray, i)); + const jsize keyUtf8Length = env->GetStringUTFLength(keyString); + char keyChars[keyUtf8Length + 1]; + env->GetStringUTFRegion(keyString, 0, env->GetStringLength(keyString), keyChars); + keyChars[keyUtf8Length] = '\0'; + DictionaryHeaderStructurePolicy::AttributeMap::key_type key; + HeaderReadWriteUtils::insertCharactersIntoVector(keyChars, &key); + + jstring valueString = static_cast<jstring>( + env->GetObjectArrayElement(attributeValueStringArray, i)); + const jsize valueUtf8Length = env->GetStringUTFLength(valueString); + char valueChars[valueUtf8Length + 1]; + env->GetStringUTFRegion(valueString, 0, env->GetStringLength(valueString), valueChars); + valueChars[valueUtf8Length] = '\0'; + DictionaryHeaderStructurePolicy::AttributeMap::mapped_type value; + HeaderReadWriteUtils::insertCharactersIntoVector(valueChars, &value); + attributeMap[key] = value; + } + return attributeMap; + } + private: DISALLOW_IMPLICIT_CONSTRUCTORS(JniDataUtils); }; |