Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +2 −3 Original line number Diff line number Diff line Loading @@ -217,9 +217,8 @@ public final class BinaryDictionary extends Dictionary { outAttributeValues.get(i)); attributes.put(attributeKey, attributeValue); } final boolean hasHistoricalInfo = attributes.get(DictionaryHeader.HAS_HISTORICAL_INFO_KEY).equals( DictionaryHeader.ATTRIBUTE_VALUE_TRUE); final boolean hasHistoricalInfo = DictionaryHeader.ATTRIBUTE_VALUE_TRUE.equals( attributes.get(DictionaryHeader.HAS_HISTORICAL_INFO_KEY)); return new DictionaryHeader(outHeaderSize[0], new DictionaryOptions(attributes), new FormatSpec.FormatOptions(outFormatVersion[0], hasHistoricalInfo)); } Loading java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +10 −1 Original line number Diff line number Diff line Loading @@ -23,10 +23,12 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.makedict.DictionaryHeader; import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.UnsupportedFormatException; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.utils.AsyncResultHolder; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.CombinedFormatUtils; import com.android.inputmethod.latin.utils.FileUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; import com.android.inputmethod.latin.utils.PrioritizedSerialExecutor; Loading Loading @@ -785,7 +787,14 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { getExecutor(mDictName).execute(new Runnable() { @Override public void run() { Log.d(TAG, "dictionary=" + mDictName); Log.d(TAG, "Dump dictionary: " + mDictName); try { final DictionaryHeader header = mBinaryDictionary.getHeader(); Log.d(TAG, CombinedFormatUtils.formatAttributeMap( header.mDictionaryOptions.mAttributes)); } catch (final UnsupportedFormatException e) { Log.d(TAG, "Cannot fetch header information.", e); } int token = 0; do { final BinaryDictionary.GetNextWordPropertyResult result = Loading java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java +3 −3 Original line number Diff line number Diff line Loading @@ -37,11 +37,11 @@ public class CombinedFormatUtils { public static String formatAttributeMap(final HashMap<String, String> attributeMap) { final StringBuilder builder = new StringBuilder(); builder.append(DICTIONARY_TAG + "="); if (attributeMap.containsKey(DictionaryHeader.DICTIONARY_DESCRIPTION_KEY)) { builder.append(attributeMap.get(DictionaryHeader.DICTIONARY_DESCRIPTION_KEY)); if (attributeMap.containsKey(DictionaryHeader.DICTIONARY_ID_KEY)) { builder.append(attributeMap.get(DictionaryHeader.DICTIONARY_ID_KEY)); } for (final String key : attributeMap.keySet()) { if (key == DictionaryHeader.DICTIONARY_DESCRIPTION_KEY) { if (key.equals(DictionaryHeader.DICTIONARY_ID_KEY)) { continue; } final String value = attributeMap.get(key); Loading native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +32 −6 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclas return false; } HeaderReadWriteUtils::AttributeMap attributeMap; DictionaryHeaderStructurePolicy::AttributeMap attributeMap; for (int i = 0; i < keyCount; i++) { jstring keyString = static_cast<jstring>( env->GetObjectArrayElement(attributeKeyStringArray, i)); Loading @@ -61,7 +61,7 @@ static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclas char keyChars[keyUtf8Length + 1]; env->GetStringUTFRegion(keyString, 0, env->GetStringLength(keyString), keyChars); keyChars[keyUtf8Length] = '\0'; HeaderReadWriteUtils::AttributeMap::key_type key; DictionaryHeaderStructurePolicy::AttributeMap::key_type key; HeaderReadWriteUtils::insertCharactersIntoVector(keyChars, &key); jstring valueString = static_cast<jstring>( Loading @@ -70,7 +70,7 @@ static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclas char valueChars[valueUtf8Length + 1]; env->GetStringUTFRegion(valueString, 0, env->GetStringLength(valueString), valueChars); valueChars[valueUtf8Length] = '\0'; HeaderReadWriteUtils::AttributeMap::mapped_type value; DictionaryHeaderStructurePolicy::AttributeMap::mapped_type value; HeaderReadWriteUtils::insertCharactersIntoVector(valueChars, &value); attributeMap[key] = value; } Loading Loading @@ -145,16 +145,42 @@ static void latinime_BinaryDictionary_getHeaderInfo(JNIEnv *env, jclass clazz, j jobject outAttributeValues) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) return; const int formatVersion = dictionary->getFormatVersionNumber(); const DictionaryHeaderStructurePolicy *const headerPolicy = dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy(); const int headerSize = headerPolicy->getSize(); env->SetIntArrayRegion(outHeaderSize, 0 /* start */, 1 /* len */, &headerSize); const int formatVersion = headerPolicy->getFormatVersionNumber(); env->SetIntArrayRegion(outFormatVersion, 0 /* start */, 1 /* len */, &formatVersion); // TODO: Implement // Output attribute map jclass arrayListClass = env->FindClass("java/util/ArrayList"); jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z"); const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap = headerPolicy->getAttributeMap(); for (DictionaryHeaderStructurePolicy::AttributeMap::const_iterator it = attributeMap->begin(); it != attributeMap->end(); ++it) { // Output key jintArray keyCodePointArray = env->NewIntArray(it->first.size()); env->SetIntArrayRegion( keyCodePointArray, 0 /* start */, it->first.size(), &it->first.at(0)); env->CallVoidMethod(outAttributeKeys, addMethodId, keyCodePointArray); env->DeleteLocalRef(keyCodePointArray); // Output value jintArray valueCodePointArray = env->NewIntArray(it->second.size()); env->SetIntArrayRegion( valueCodePointArray, 0 /* start */, it->second.size(), &it->second.at(0)); env->CallVoidMethod(outAttributeValues, addMethodId, valueCodePointArray); env->DeleteLocalRef(valueCodePointArray); } env->DeleteLocalRef(arrayListClass); return; } static int latinime_BinaryDictionary_getFormatVersion(JNIEnv *env, jclass clazz, jlong dict) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) return 0; return dictionary->getFormatVersionNumber(); const DictionaryHeaderStructurePolicy *const headerPolicy = dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy(); return headerPolicy->getFormatVersionNumber(); } static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, jlong dict, Loading native/jni/src/suggest/core/dictionary/dictionary.h +0 −5 Original line number Diff line number Diff line Loading @@ -105,11 +105,6 @@ class Dictionary { return mDictionaryStructureWithBufferPolicy.get(); } int getFormatVersionNumber() const { return mDictionaryStructureWithBufferPolicy.get()->getHeaderStructurePolicy() ->getFormatVersionNumber(); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(Dictionary); Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +2 −3 Original line number Diff line number Diff line Loading @@ -217,9 +217,8 @@ public final class BinaryDictionary extends Dictionary { outAttributeValues.get(i)); attributes.put(attributeKey, attributeValue); } final boolean hasHistoricalInfo = attributes.get(DictionaryHeader.HAS_HISTORICAL_INFO_KEY).equals( DictionaryHeader.ATTRIBUTE_VALUE_TRUE); final boolean hasHistoricalInfo = DictionaryHeader.ATTRIBUTE_VALUE_TRUE.equals( attributes.get(DictionaryHeader.HAS_HISTORICAL_INFO_KEY)); return new DictionaryHeader(outHeaderSize[0], new DictionaryOptions(attributes), new FormatSpec.FormatOptions(outFormatVersion[0], hasHistoricalInfo)); } Loading
java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +10 −1 Original line number Diff line number Diff line Loading @@ -23,10 +23,12 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.makedict.DictionaryHeader; import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.UnsupportedFormatException; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.utils.AsyncResultHolder; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.CombinedFormatUtils; import com.android.inputmethod.latin.utils.FileUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; import com.android.inputmethod.latin.utils.PrioritizedSerialExecutor; Loading Loading @@ -785,7 +787,14 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { getExecutor(mDictName).execute(new Runnable() { @Override public void run() { Log.d(TAG, "dictionary=" + mDictName); Log.d(TAG, "Dump dictionary: " + mDictName); try { final DictionaryHeader header = mBinaryDictionary.getHeader(); Log.d(TAG, CombinedFormatUtils.formatAttributeMap( header.mDictionaryOptions.mAttributes)); } catch (final UnsupportedFormatException e) { Log.d(TAG, "Cannot fetch header information.", e); } int token = 0; do { final BinaryDictionary.GetNextWordPropertyResult result = Loading
java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java +3 −3 Original line number Diff line number Diff line Loading @@ -37,11 +37,11 @@ public class CombinedFormatUtils { public static String formatAttributeMap(final HashMap<String, String> attributeMap) { final StringBuilder builder = new StringBuilder(); builder.append(DICTIONARY_TAG + "="); if (attributeMap.containsKey(DictionaryHeader.DICTIONARY_DESCRIPTION_KEY)) { builder.append(attributeMap.get(DictionaryHeader.DICTIONARY_DESCRIPTION_KEY)); if (attributeMap.containsKey(DictionaryHeader.DICTIONARY_ID_KEY)) { builder.append(attributeMap.get(DictionaryHeader.DICTIONARY_ID_KEY)); } for (final String key : attributeMap.keySet()) { if (key == DictionaryHeader.DICTIONARY_DESCRIPTION_KEY) { if (key.equals(DictionaryHeader.DICTIONARY_ID_KEY)) { continue; } final String value = attributeMap.get(key); Loading
native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +32 −6 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclas return false; } HeaderReadWriteUtils::AttributeMap attributeMap; DictionaryHeaderStructurePolicy::AttributeMap attributeMap; for (int i = 0; i < keyCount; i++) { jstring keyString = static_cast<jstring>( env->GetObjectArrayElement(attributeKeyStringArray, i)); Loading @@ -61,7 +61,7 @@ static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclas char keyChars[keyUtf8Length + 1]; env->GetStringUTFRegion(keyString, 0, env->GetStringLength(keyString), keyChars); keyChars[keyUtf8Length] = '\0'; HeaderReadWriteUtils::AttributeMap::key_type key; DictionaryHeaderStructurePolicy::AttributeMap::key_type key; HeaderReadWriteUtils::insertCharactersIntoVector(keyChars, &key); jstring valueString = static_cast<jstring>( Loading @@ -70,7 +70,7 @@ static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclas char valueChars[valueUtf8Length + 1]; env->GetStringUTFRegion(valueString, 0, env->GetStringLength(valueString), valueChars); valueChars[valueUtf8Length] = '\0'; HeaderReadWriteUtils::AttributeMap::mapped_type value; DictionaryHeaderStructurePolicy::AttributeMap::mapped_type value; HeaderReadWriteUtils::insertCharactersIntoVector(valueChars, &value); attributeMap[key] = value; } Loading Loading @@ -145,16 +145,42 @@ static void latinime_BinaryDictionary_getHeaderInfo(JNIEnv *env, jclass clazz, j jobject outAttributeValues) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) return; const int formatVersion = dictionary->getFormatVersionNumber(); const DictionaryHeaderStructurePolicy *const headerPolicy = dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy(); const int headerSize = headerPolicy->getSize(); env->SetIntArrayRegion(outHeaderSize, 0 /* start */, 1 /* len */, &headerSize); const int formatVersion = headerPolicy->getFormatVersionNumber(); env->SetIntArrayRegion(outFormatVersion, 0 /* start */, 1 /* len */, &formatVersion); // TODO: Implement // Output attribute map jclass arrayListClass = env->FindClass("java/util/ArrayList"); jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z"); const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap = headerPolicy->getAttributeMap(); for (DictionaryHeaderStructurePolicy::AttributeMap::const_iterator it = attributeMap->begin(); it != attributeMap->end(); ++it) { // Output key jintArray keyCodePointArray = env->NewIntArray(it->first.size()); env->SetIntArrayRegion( keyCodePointArray, 0 /* start */, it->first.size(), &it->first.at(0)); env->CallVoidMethod(outAttributeKeys, addMethodId, keyCodePointArray); env->DeleteLocalRef(keyCodePointArray); // Output value jintArray valueCodePointArray = env->NewIntArray(it->second.size()); env->SetIntArrayRegion( valueCodePointArray, 0 /* start */, it->second.size(), &it->second.at(0)); env->CallVoidMethod(outAttributeValues, addMethodId, valueCodePointArray); env->DeleteLocalRef(valueCodePointArray); } env->DeleteLocalRef(arrayListClass); return; } static int latinime_BinaryDictionary_getFormatVersion(JNIEnv *env, jclass clazz, jlong dict) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) return 0; return dictionary->getFormatVersionNumber(); const DictionaryHeaderStructurePolicy *const headerPolicy = dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy(); return headerPolicy->getFormatVersionNumber(); } static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, jlong dict, Loading
native/jni/src/suggest/core/dictionary/dictionary.h +0 −5 Original line number Diff line number Diff line Loading @@ -105,11 +105,6 @@ class Dictionary { return mDictionaryStructureWithBufferPolicy.get(); } int getFormatVersionNumber() const { return mDictionaryStructureWithBufferPolicy.get()->getHeaderStructurePolicy() ->getFormatVersionNumber(); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(Dictionary); Loading