Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7870a2c authored by Jean Chalard's avatar Jean Chalard
Browse files

Add an initial JNI interface to dicttool.

Bug: 10100269
Change-Id: I883992c2033e7d9e7c754c0bf653767728b221b6
parent dc83fe37
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.inputmethod.latin.makedict.FusionDictionary.CharGroup;
import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
import com.android.inputmethod.latin.makedict.FusionDictionary.Node;
import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
import com.android.inputmethod.latin.utils.JniUtils;

import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -48,6 +49,13 @@ public final class BinaryDictInputOutput {

    private static final boolean DBG = MakedictLog.DBG;

    static {
        JniUtils.loadNativeLibrary();
    }

    // TODO: implement something sensical instead of just a phony method
    private static native int doNothing();

    // Arbitrary limit to how much passes we consider address size compression should
    // terminate in. At the time of this writing, our largest dictionary completes
    // compression in five passes.
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ 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_makedict_BinaryDictInputOutput.cpp \
    jni_common.cpp

LATIN_IME_CORE_SRC_FILES := \
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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: BinaryDictInputOutput"

#include "com_android_inputmethod_latin_makedict_BinaryDictInputOutput.h"

#include "defines.h"
#include "jni.h"
#include "jni_common.h"

namespace latinime {
static int latinime_BinaryDictInputOutput_doNothing(JNIEnv *env, jclass clazz) {
    // This is a phony method for test - it does nothing. It just returns some value
    // unlikely to be in memory by chance for testing purposes.
    // TODO: remove this method.
    return 2097;
}

static const JNINativeMethod sMethods[] = {
    {
        // TODO: remove this entry when we have one useful method in here
        const_cast<char *>("doNothing"),
        const_cast<char *>("()I"),
        reinterpret_cast<void *>(latinime_BinaryDictInputOutput_doNothing)
    },
};

int register_BinaryDictInputOutput(JNIEnv *env) {
    const char *const kClassPathName =
            "com/android/inputmethod/latin/makedict/BinaryDictInputOutput";
    return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
}
} // namespace latinime
+25 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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_MAKEDICT_BINARYDICTINPUTOUTPUT_H
#define _COM_ANDROID_INPUTMETHOD_LATIN_MAKEDICT_BINARYDICTINPUTOUTPUT_H

#include "jni.h"

namespace latinime {
int register_BinaryDictInputOutput(JNIEnv *env);
} // namespace latinime
#endif // _COM_ANDROID_INPUTMETHOD_LATIN_MAKEDICT_BINARYDICTINPUTOUTPUT_H
+9 −0
Original line number Diff line number Diff line
@@ -18,9 +18,12 @@

#include "jni_common.h"

#ifndef HOST_TOOL
#include "com_android_inputmethod_keyboard_ProximityInfo.h"
#include "com_android_inputmethod_latin_BinaryDictionary.h"
#include "com_android_inputmethod_latin_DicTraverseSession.h"
#endif
#include "com_android_inputmethod_latin_makedict_BinaryDictInputOutput.h"
#include "defines.h"

/*
@@ -38,6 +41,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
        AKLOGE("ERROR: JNIEnv is invalid");
        return -1;
    }
#ifndef HOST_TOOL
    if (!latinime::register_BinaryDictionary(env)) {
        AKLOGE("ERROR: BinaryDictionary native registration failed");
        return -1;
@@ -50,6 +54,11 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
        AKLOGE("ERROR: ProximityInfo native registration failed");
        return -1;
    }
#endif
    if (!latinime::register_BinaryDictInputOutput(env)) {
        AKLOGE("ERROR: BinaryDictInputOutput native registration failed");
        return -1;
    }
    /* success -- return valid version number */
    return JNI_VERSION_1_6;
}
Loading