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 boolean mUseFullEditDistance;
|
||||
private final DicTraverseSession mDicTraverseSession;
|
||||
|
||||
/**
|
||||
* Constructor for the binary dictionary. This is supposed to be called from the
|
||||
|
@ -76,6 +77,7 @@ public class BinaryDictionary extends Dictionary {
|
|||
super(dictType);
|
||||
mUseFullEditDistance = useFullEditDistance;
|
||||
loadDictionary(filename, offset, length);
|
||||
mDicTraverseSession = new DicTraverseSession(locale);
|
||||
}
|
||||
|
||||
static {
|
||||
|
@ -187,6 +189,7 @@ public class BinaryDictionary extends Dictionary {
|
|||
|
||||
@Override
|
||||
public synchronized void close() {
|
||||
mDicTraverseSession.close();
|
||||
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 := \
|
||||
com_android_inputmethod_keyboard_ProximityInfo.cpp \
|
||||
com_android_inputmethod_latin_BinaryDictionary.cpp \
|
||||
com_android_inputmethod_latin_DicTraverseSession.cpp \
|
||||
com_android_inputmethod_latin_NativeUtils.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_latin_BinaryDictionary.h"
|
||||
#include "com_android_inputmethod_latin_DicTraverseSession.h"
|
||||
#include "com_android_inputmethod_latin_NativeUtils.h"
|
||||
#include "defines.h"
|
||||
#include "jni.h"
|
||||
|
@ -45,6 +46,11 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|||
goto bail;
|
||||
}
|
||||
|
||||
if (!register_DicTraverseSession(env)) {
|
||||
AKLOGE("ERROR: DicTraverseSession native registration failed");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (!register_ProximityInfo(env)) {
|
||||
AKLOGE("ERROR: ProximityInfo native registration failed");
|
||||
goto bail;
|
||||
|
|
Loading…
Reference in New Issue