Merge "Add traverse session" into jb-mr1-dev
commit
181567f9c7
|
@ -58,6 +58,7 @@ public class BinaryDictionary extends Dictionary {
|
||||||
private final int[] mOutputTypes = new int[MAX_RESULTS];
|
private final int[] mOutputTypes = new int[MAX_RESULTS];
|
||||||
|
|
||||||
private final boolean mUseFullEditDistance;
|
private final boolean mUseFullEditDistance;
|
||||||
|
private final DicTraverseSession mDicTraverseSession;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the binary dictionary. This is supposed to be called from the
|
* Constructor for the binary dictionary. This is supposed to be called from the
|
||||||
|
@ -76,6 +77,7 @@ public class BinaryDictionary extends Dictionary {
|
||||||
super(dictType);
|
super(dictType);
|
||||||
mUseFullEditDistance = useFullEditDistance;
|
mUseFullEditDistance = useFullEditDistance;
|
||||||
loadDictionary(filename, offset, length);
|
loadDictionary(filename, offset, length);
|
||||||
|
mDicTraverseSession = new DicTraverseSession(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
@ -187,6 +189,7 @@ public class BinaryDictionary extends Dictionary {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void close() {
|
public synchronized void close() {
|
||||||
|
mDicTraverseSession.close();
|
||||||
closeInternal();
|
closeInternal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
public class DicTraverseSession {
|
||||||
|
static {
|
||||||
|
JniUtils.loadNativeLibrary();
|
||||||
|
}
|
||||||
|
|
||||||
|
private long mNativeDicTraverseSession;
|
||||||
|
|
||||||
|
public DicTraverseSession(Locale locale) {
|
||||||
|
mNativeDicTraverseSession = createNativeDicTraverseSession(
|
||||||
|
locale != null ? locale.toString() : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
private native long setDicTraverseSessionNative(String locale);
|
||||||
|
private native void releaseDicTraverseSessionNative(long nativeDicTraverseSession);
|
||||||
|
|
||||||
|
private final long createNativeDicTraverseSession(String locale) {
|
||||||
|
return setDicTraverseSessionNative(locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeInternal() {
|
||||||
|
if (mNativeDicTraverseSession != 0) {
|
||||||
|
releaseDicTraverseSessionNative(mNativeDicTraverseSession);
|
||||||
|
mNativeDicTraverseSession = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
closeInternal();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void finalize() throws Throwable {
|
||||||
|
try {
|
||||||
|
closeInternal();
|
||||||
|
} finally {
|
||||||
|
super.finalize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -36,6 +36,7 @@ LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
|
||||||
LATIN_IME_JNI_SRC_FILES := \
|
LATIN_IME_JNI_SRC_FILES := \
|
||||||
com_android_inputmethod_keyboard_ProximityInfo.cpp \
|
com_android_inputmethod_keyboard_ProximityInfo.cpp \
|
||||||
com_android_inputmethod_latin_BinaryDictionary.cpp \
|
com_android_inputmethod_latin_BinaryDictionary.cpp \
|
||||||
|
com_android_inputmethod_latin_DicTraverseSession.cpp \
|
||||||
com_android_inputmethod_latin_NativeUtils.cpp \
|
com_android_inputmethod_latin_NativeUtils.cpp \
|
||||||
jni_common.cpp
|
jni_common.cpp
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LOG_TAG "LatinIME: jni: Session"
|
||||||
|
|
||||||
|
#include "com_android_inputmethod_latin_DicTraverseSession.h"
|
||||||
|
#include "jni.h"
|
||||||
|
#include "jni_common.h"
|
||||||
|
|
||||||
|
namespace latinime {
|
||||||
|
void *(*DicTraverseWrapper::sDicTraverseSessionFactoryMethod)() = 0;
|
||||||
|
void (*DicTraverseWrapper::sDicTraverseSessionReleaseMethod)(void *) = 0;
|
||||||
|
|
||||||
|
static jlong latinime_setDicTraverseSession(JNIEnv *env, jobject object,
|
||||||
|
jstring localejStr) {
|
||||||
|
void *session = DicTraverseWrapper::getDicTraverseSession();
|
||||||
|
return reinterpret_cast<jlong>(session);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void latinime_DicTraverseSession_release(JNIEnv *env, jobject object, jlong session) {
|
||||||
|
void *pi = reinterpret_cast<void*>(session);
|
||||||
|
if (!pi) return;
|
||||||
|
DicTraverseWrapper::releaseDicTraverseSession(pi);
|
||||||
|
}
|
||||||
|
|
||||||
|
static JNINativeMethod sMethods[] = {
|
||||||
|
{"setDicTraverseSessionNative", "(Ljava/lang/String;)J", (void*)latinime_setDicTraverseSession},
|
||||||
|
{"releaseDicTraverseSessionNative", "(J)V", (void*)latinime_DicTraverseSession_release}
|
||||||
|
};
|
||||||
|
|
||||||
|
int register_DicTraverseSession(JNIEnv *env) {
|
||||||
|
const char *const kClassPathName = "com/android/inputmethod/latin/DicTraverseSession";
|
||||||
|
return registerNativeMethods(env, kClassPathName, sMethods,
|
||||||
|
sizeof(sMethods) / sizeof(sMethods[0]));
|
||||||
|
}
|
||||||
|
} // namespace latinime
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012, The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _COM_ANDROID_INPUTMETHOD_LATIN_DICTRAVERSESESSION_H
|
||||||
|
#define _COM_ANDROID_INPUTMETHOD_LATIN_DICTRAVERSESESSION_H
|
||||||
|
|
||||||
|
#include "defines.h"
|
||||||
|
#include "jni.h"
|
||||||
|
|
||||||
|
namespace latinime {
|
||||||
|
|
||||||
|
// TODO: Remove
|
||||||
|
class DicTraverseWrapper {
|
||||||
|
public:
|
||||||
|
static void *getDicTraverseSession() {
|
||||||
|
if (sDicTraverseSessionFactoryMethod) {
|
||||||
|
return sDicTraverseSessionFactoryMethod();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static void releaseDicTraverseSession(void *session) {
|
||||||
|
if (sDicTraverseSessionReleaseMethod) {
|
||||||
|
sDicTraverseSessionReleaseMethod(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
DISALLOW_IMPLICIT_CONSTRUCTORS(DicTraverseWrapper);
|
||||||
|
static void *(*sDicTraverseSessionFactoryMethod)();
|
||||||
|
static void (*sDicTraverseSessionReleaseMethod)(void *);
|
||||||
|
};
|
||||||
|
int register_DicTraverseSession(JNIEnv *env);
|
||||||
|
} // namespace latinime
|
||||||
|
#endif // _COM_ANDROID_INPUTMETHOD_LATIN_DICTRAVERSESESSION_H
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "com_android_inputmethod_keyboard_ProximityInfo.h"
|
#include "com_android_inputmethod_keyboard_ProximityInfo.h"
|
||||||
#include "com_android_inputmethod_latin_BinaryDictionary.h"
|
#include "com_android_inputmethod_latin_BinaryDictionary.h"
|
||||||
|
#include "com_android_inputmethod_latin_DicTraverseSession.h"
|
||||||
#include "com_android_inputmethod_latin_NativeUtils.h"
|
#include "com_android_inputmethod_latin_NativeUtils.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
|
@ -45,6 +46,11 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!register_DicTraverseSession(env)) {
|
||||||
|
AKLOGE("ERROR: DicTraverseSession native registration failed");
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
|
||||||
if (!register_ProximityInfo(env)) {
|
if (!register_ProximityInfo(env)) {
|
||||||
AKLOGE("ERROR: ProximityInfo native registration failed");
|
AKLOGE("ERROR: ProximityInfo native registration failed");
|
||||||
goto bail;
|
goto bail;
|
||||||
|
|
Loading…
Reference in New Issue