summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qjni.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qjni.cpp')
-rw-r--r--src/corelib/kernel/qjni.cpp2384
1 files changed, 0 insertions, 2384 deletions
diff --git a/src/corelib/kernel/qjni.cpp b/src/corelib/kernel/qjni.cpp
deleted file mode 100644
index 3750fdb9bc..0000000000
--- a/src/corelib/kernel/qjni.cpp
+++ /dev/null
@@ -1,2384 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qjni_p.h"
-#include "qjnihelpers_p.h"
-#include <QtCore/qthreadstorage.h>
-#include <QtCore/qhash.h>
-#include <QtCore/qstring.h>
-#include <QtCore/QThread>
-#include <QtCore/QReadWriteLock>
-
-QT_BEGIN_NAMESPACE
-
-static inline QLatin1String keyBase()
-{
- return QLatin1String("%1%2:%3");
-}
-
-static QString qt_convertJString(jstring string)
-{
- QJNIEnvironmentPrivate env;
- int strLength = env->GetStringLength(string);
- QString res(strLength, Qt::Uninitialized);
- env->GetStringRegion(string, 0, strLength, reinterpret_cast<jchar *>(res.data()));
- return res;
-}
-
-static inline bool exceptionCheckAndClear(JNIEnv *env)
-{
- if (Q_UNLIKELY(env->ExceptionCheck())) {
- env->ExceptionDescribe();
- env->ExceptionClear();
- return true;
- }
-
- return false;
-}
-
-typedef QHash<QString, jclass> JClassHash;
-Q_GLOBAL_STATIC(JClassHash, cachedClasses)
-Q_GLOBAL_STATIC(QReadWriteLock, cachedClassesLock)
-
-static QByteArray toBinaryEncClassName(const QByteArray &className)
-{
- return QByteArray(className).replace('/', '.');
-}
-
-static jclass getCachedClass(const QByteArray &classBinEnc, bool *isCached = nullptr)
-{
- QReadLocker locker(cachedClassesLock);
- const QHash<QString, jclass>::const_iterator &it = cachedClasses->constFind(QString::fromLatin1(classBinEnc));
- const bool found = (it != cachedClasses->constEnd());
-
- if (isCached != 0)
- *isCached = found;
-
- return found ? it.value() : 0;
-}
-
-inline static jclass loadClass(const QByteArray &className, JNIEnv *env, bool binEncoded = false)
-{
- const QByteArray &binEncClassName = binEncoded ? className : toBinaryEncClassName(className);
-
- bool isCached = false;
- jclass clazz = getCachedClass(binEncClassName, &isCached);
- if (clazz != 0 || isCached)
- return clazz;
-
- QJNIObjectPrivate classLoader(QtAndroidPrivate::classLoader());
- if (!classLoader.isValid())
- return 0;
-
- QWriteLocker locker(cachedClassesLock);
- // did we lose the race?
- const QLatin1String key(binEncClassName);
- const QHash<QString, jclass>::const_iterator &it = cachedClasses->constFind(key);
- if (it != cachedClasses->constEnd())
- return it.value();
-
- QJNIObjectPrivate stringName = QJNIObjectPrivate::fromString(key);
- QJNIObjectPrivate classObject = classLoader.callObjectMethod("loadClass",
- "(Ljava/lang/String;)Ljava/lang/Class;",
- stringName.object());
-
- if (!exceptionCheckAndClear(env) && classObject.isValid())
- clazz = static_cast<jclass>(env->NewGlobalRef(classObject.object()));
-
- cachedClasses->insert(key, clazz);
- return clazz;
-}
-
-typedef QHash<QString, jmethodID> JMethodIDHash;
-Q_GLOBAL_STATIC(JMethodIDHash, cachedMethodID)
-Q_GLOBAL_STATIC(QReadWriteLock, cachedMethodIDLock)
-
-static inline jmethodID getMethodID(JNIEnv *env,
- jclass clazz,
- const char *name,
- const char *sig,
- bool isStatic = false)
-{
- jmethodID id = isStatic ? env->GetStaticMethodID(clazz, name, sig)
- : env->GetMethodID(clazz, name, sig);
-
- if (exceptionCheckAndClear(env))
- return 0;
-
- return id;
-}
-
-static jmethodID getCachedMethodID(JNIEnv *env,
- jclass clazz,
- const QByteArray &className,
- const char *name,
- const char *sig,
- bool isStatic = false)
-{
- if (className.isEmpty())
- return getMethodID(env, clazz, name, sig, isStatic);
-
- const QString key = keyBase().arg(QLatin1String(className), QLatin1String(name), QLatin1String(sig));
- QHash<QString, jmethodID>::const_iterator it;
-
- {
- QReadLocker locker(cachedMethodIDLock);
- it = cachedMethodID->constFind(key);
- if (it != cachedMethodID->constEnd())
- return it.value();
- }
-
- {
- QWriteLocker locker(cachedMethodIDLock);
- it = cachedMethodID->constFind(key);
- if (it != cachedMethodID->constEnd())
- return it.value();
-
- jmethodID id = getMethodID(env, clazz, name, sig, isStatic);
-
- cachedMethodID->insert(key, id);
- return id;
- }
-}
-
-typedef QHash<QString, jfieldID> JFieldIDHash;
-Q_GLOBAL_STATIC(JFieldIDHash, cachedFieldID)
-Q_GLOBAL_STATIC(QReadWriteLock, cachedFieldIDLock)
-
-static inline jfieldID getFieldID(JNIEnv *env,
- jclass clazz,
- const char *name,
- const char *sig,
- bool isStatic = false)
-{
- jfieldID id = isStatic ? env->GetStaticFieldID(clazz, name, sig)
- : env->GetFieldID(clazz, name, sig);
-
- if (exceptionCheckAndClear(env))
- return 0;
-
- return id;
-}
-
-static jfieldID getCachedFieldID(JNIEnv *env,
- jclass clazz,
- const QByteArray &className,
- const char *name,
- const char *sig,
- bool isStatic = false)
-{
- if (className.isNull())
- return getFieldID(env, clazz, name, sig, isStatic);
-
- const QString key = keyBase().arg(QLatin1String(className), QLatin1String(name), QLatin1String(sig));
- QHash<QString, jfieldID>::const_iterator it;
-
- {
- QReadLocker locker(cachedFieldIDLock);
- it = cachedFieldID->constFind(key);
- if (it != cachedFieldID->constEnd())
- return it.value();
- }
-
- {
- QWriteLocker locker(cachedFieldIDLock);
- it = cachedFieldID->constFind(key);
- if (it != cachedFieldID->constEnd())
- return it.value();
-
- jfieldID id = getFieldID(env, clazz, name, sig, isStatic);
-
- cachedFieldID->insert(key, id);
- return id;
- }
-}
-
-void QJNILocalRefDeleter::cleanup(jobject obj)
-{
- if (obj == 0)
- return;
-
- QJNIEnvironmentPrivate env;
- env->DeleteLocalRef(obj);
-}
-
-class QJNIEnvironmentPrivateTLS
-{
-public:
- inline ~QJNIEnvironmentPrivateTLS()
- {
- QtAndroidPrivate::javaVM()->DetachCurrentThread();
- }
-};
-
-Q_GLOBAL_STATIC(QThreadStorage<QJNIEnvironmentPrivateTLS *>, jniEnvTLS)
-
-static const char qJniThreadName[] = "QtThread";
-
-QJNIEnvironmentPrivate::QJNIEnvironmentPrivate()
- : jniEnv(0)
-{
- JavaVM *vm = QtAndroidPrivate::javaVM();
- const jint ret = vm->GetEnv((void**)&jniEnv, JNI_VERSION_1_6);
- if (ret == JNI_OK) // Already attached
- return;
-
- if (ret == JNI_EDETACHED) { // We need to (re-)attach
- JavaVMAttachArgs args = { JNI_VERSION_1_6, qJniThreadName, nullptr };
- if (vm->AttachCurrentThread(&jniEnv, &args) != JNI_OK)
- return;
-
- if (!jniEnvTLS->hasLocalData()) // If we attached the thread we own it.
- jniEnvTLS->setLocalData(new QJNIEnvironmentPrivateTLS);
- }
-}
-
-JNIEnv *QJNIEnvironmentPrivate::operator->()
-{
- return jniEnv;
-}
-
-jclass QJNIEnvironmentPrivate::findClass(const char *className, JNIEnv *env)
-{
- const QByteArray &classDotEnc = toBinaryEncClassName(className);
- bool isCached = false;
- jclass clazz = getCachedClass(classDotEnc, &isCached);
-
- if (clazz || isCached)
- return clazz;
-
- const QLatin1String key(classDotEnc);
- if (env != 0) { // We got an env. pointer (We expect this to be the right env. and call FindClass())
- QWriteLocker locker(cachedClassesLock);
- const QHash<QString, jclass>::const_iterator &it = cachedClasses->constFind(key);
- // Did we lose the race?
- if (it != cachedClasses->constEnd())
- return it.value();
-
- jclass fclazz = env->FindClass(className);
- if (!exceptionCheckAndClear(env)) {
- clazz = static_cast<jclass>(env->NewGlobalRef(fclazz));
- env->DeleteLocalRef(fclazz);
- }
-
- if (clazz != 0)
- cachedClasses->insert(key, clazz);
- }
-
- if (clazz == 0) // We didn't get an env. pointer or we got one with the WRONG class loader...
- clazz = loadClass(classDotEnc, QJNIEnvironmentPrivate(), true);
-
- return clazz;
-}
-
-QJNIEnvironmentPrivate::operator JNIEnv* () const
-{
- return jniEnv;
-}
-
-QJNIEnvironmentPrivate::~QJNIEnvironmentPrivate()
-{
-}
-
-QJNIObjectData::QJNIObjectData()
- : m_jobject(0),
- m_jclass(0),
- m_own_jclass(true)
-{
-
-}
-
-QJNIObjectData::~QJNIObjectData()
-{
- QJNIEnvironmentPrivate env;
- if (m_jobject)
- env->DeleteGlobalRef(m_jobject);
- if (m_jclass && m_own_jclass)
- env->DeleteGlobalRef(m_jclass);
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate()
- : d(new QJNIObjectData())
-{
-
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(const char *className)
- : d(new QJNIObjectData())
-{
- QJNIEnvironmentPrivate env;
- d->m_className = toBinaryEncClassName(className);
- d->m_jclass = loadClass(d->m_className, env, true);
- d->m_own_jclass = false;
- if (d->m_jclass) {
- // get default constructor
- jmethodID constructorId = getCachedMethodID(env, d->m_jclass, d->m_className, "<init>", "()V");
- if (constructorId) {
- jobject obj = env->NewObject(d->m_jclass, constructorId);
- if (obj) {
- d->m_jobject = env->NewGlobalRef(obj);
- env->DeleteLocalRef(obj);
- }
- }
- }
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(const char *className, const char *sig, ...)
- : d(new QJNIObjectData())
-{
- QJNIEnvironmentPrivate env;
- d->m_className = toBinaryEncClassName(className);
- d->m_jclass = loadClass(d->m_className, env, true);
- d->m_own_jclass = false;
- if (d->m_jclass) {
- jmethodID constructorId = getCachedMethodID(env, d->m_jclass, d->m_className, "<init>", sig);
- if (constructorId) {
- va_list args;
- va_start(args, sig);
- jobject obj = env->NewObjectV(d->m_jclass, constructorId, args);
- va_end(args);
- if (obj) {
- d->m_jobject = env->NewGlobalRef(obj);
- env->DeleteLocalRef(obj);
- }
- }
- }
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(const char *className, const char *sig, const QVaListPrivate &args)
- : d(new QJNIObjectData())
-{
- QJNIEnvironmentPrivate env;
- d->m_className = toBinaryEncClassName(className);
- d->m_jclass = loadClass(d->m_className, env, true);
- d->m_own_jclass = false;
- if (d->m_jclass) {
- jmethodID constructorId = getCachedMethodID(env, d->m_jclass, d->m_className, "<init>", sig);
- if (constructorId) {
- jobject obj = env->NewObjectV(d->m_jclass, constructorId, args);
- if (obj) {
- d->m_jobject = env->NewGlobalRef(obj);
- env->DeleteLocalRef(obj);
- }
- }
- }
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(jclass clazz)
- : d(new QJNIObjectData())
-{
- QJNIEnvironmentPrivate env;
- d->m_jclass = static_cast<jclass>(env->NewGlobalRef(clazz));
- if (d->m_jclass) {
- // get default constructor
- jmethodID constructorId = getMethodID(env, d->m_jclass, "<init>", "()V");
- if (constructorId) {
- jobject obj = env->NewObject(d->m_jclass, constructorId);
- if (obj) {
- d->m_jobject = env->NewGlobalRef(obj);
- env->DeleteLocalRef(obj);
- }
- }
- }
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(jclass clazz, const char *sig, ...)
- : d(new QJNIObjectData())
-{
- QJNIEnvironmentPrivate env;
- if (clazz) {
- d->m_jclass = static_cast<jclass>(env->NewGlobalRef(clazz));
- if (d->m_jclass) {
- jmethodID constructorId = getMethodID(env, d->m_jclass, "<init>", sig);
- if (constructorId) {
- va_list args;
- va_start(args, sig);
- jobject obj = env->NewObjectV(d->m_jclass, constructorId, args);
- va_end(args);
- if (obj) {
- d->m_jobject = env->NewGlobalRef(obj);
- env->DeleteLocalRef(obj);
- }
- }
- }
- }
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(jclass clazz, const char *sig, const QVaListPrivate &args)
- : d(new QJNIObjectData())
-{
- QJNIEnvironmentPrivate env;
- if (clazz) {
- d->m_jclass = static_cast<jclass>(env->NewGlobalRef(clazz));
- if (d->m_jclass) {
- jmethodID constructorId = getMethodID(env, d->m_jclass, "<init>", sig);
- if (constructorId) {
- jobject obj = env->NewObjectV(d->m_jclass, constructorId, args);
- if (obj) {
- d->m_jobject = env->NewGlobalRef(obj);
- env->DeleteLocalRef(obj);
- }
- }
- }
- }
-}
-
-QJNIObjectPrivate::QJNIObjectPrivate(jobject obj)
- : d(new QJNIObjectData())
-{
- if (!obj)
- return;
-
- QJNIEnvironmentPrivate env;
- d->m_jobject = env->NewGlobalRef(obj);
- jclass cls = env->GetObjectClass(obj);
- d->m_jclass = static_cast<jclass>(env->NewGlobalRef(cls));
- env->DeleteLocalRef(cls);
-}
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callMethodV<void>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- env->CallVoidMethodV(d->m_jobject, id, args);
- }
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callMethod<void>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- callMethodV<void>(methodName, sig, args);
- va_end(args);
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callMethodV<jboolean>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jboolean res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallBooleanMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callMethod<jboolean>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jboolean res = callMethodV<jboolean>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callMethodV<jbyte>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jbyte res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallByteMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callMethod<jbyte>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jbyte res = callMethodV<jbyte>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callMethodV<jchar>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jchar res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallCharMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callMethod<jchar>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jchar res = callMethodV<jchar>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callMethodV<jshort>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jshort res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallShortMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callMethod<jshort>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jshort res = callMethodV<jshort>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callMethodV<jint>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jint res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallIntMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callMethod<jint>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jint res = callMethodV<jint>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callMethodV<jlong>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jlong res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallLongMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callMethod<jlong>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jlong res = callMethodV<jlong>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callMethodV<jfloat>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jfloat res = 0.f;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallFloatMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callMethod<jfloat>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jfloat res = callMethodV<jfloat>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callMethodV<jdouble>(const char *methodName, const char *sig, va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jdouble res = 0.;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallDoubleMethodV(d->m_jobject, id, args);
- }
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callMethod<jdouble>(const char *methodName, const char *sig, ...) const
-{
- va_list args;
- va_start(args, sig);
- jdouble res = callMethodV<jdouble>(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callMethod<void>(const char *methodName) const
-{
- callMethod<void>(methodName, "()V");
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callMethod<jboolean>(const char *methodName) const
-{
- return callMethod<jboolean>(methodName, "()Z");
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callMethod<jbyte>(const char *methodName) const
-{
- return callMethod<jbyte>(methodName, "()B");
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callMethod<jchar>(const char *methodName) const
-{
- return callMethod<jchar>(methodName, "()C");
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callMethod<jshort>(const char *methodName) const
-{
- return callMethod<jshort>(methodName, "()S");
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callMethod<jint>(const char *methodName) const
-{
- return callMethod<jint>(methodName, "()I");
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callMethod<jlong>(const char *methodName) const
-{
- return callMethod<jlong>(methodName, "()J");
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callMethod<jfloat>(const char *methodName) const
-{
- return callMethod<jfloat>(methodName, "()F");
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callMethod<jdouble>(const char *methodName) const
-{
- return callMethod<jdouble>(methodName, "()D");
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callStaticMethodV<void>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- env->CallStaticVoidMethodV(clazz, id, args);
- }
- }
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callStaticMethod<void>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- callStaticMethodV<void>(className, methodName, sig, args);
- va_end(args);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callStaticMethodV<void>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- env->CallStaticVoidMethodV(clazz, id, args);
- }
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callStaticMethod<void>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- callStaticMethodV<void>(clazz, methodName, sig, args);
- va_end(args);
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callStaticMethodV<jboolean>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jboolean res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticBooleanMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callStaticMethod<jboolean>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jboolean res = callStaticMethodV<jboolean>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callStaticMethodV<jboolean>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jboolean res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticBooleanMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callStaticMethod<jboolean>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jboolean res = callStaticMethodV<jboolean>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callStaticMethodV<jbyte>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jbyte res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticByteMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callStaticMethod<jbyte>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jbyte res = callStaticMethodV<jbyte>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callStaticMethodV<jbyte>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jbyte res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticByteMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callStaticMethod<jbyte>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jbyte res = callStaticMethodV<jbyte>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callStaticMethodV<jchar>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jchar res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticCharMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callStaticMethod<jchar>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jchar res = callStaticMethodV<jchar>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callStaticMethodV<jchar>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jchar res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticCharMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callStaticMethod<jchar>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jchar res = callStaticMethodV<jchar>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callStaticMethodV<jshort>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jshort res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticShortMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callStaticMethod<jshort>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jshort res = callStaticMethodV<jshort>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callStaticMethodV<jshort>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jshort res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticShortMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callStaticMethod<jshort>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jshort res = callStaticMethodV<jshort>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callStaticMethodV<jint>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jint res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticIntMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callStaticMethod<jint>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jint res = callStaticMethodV<jint>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callStaticMethodV<jint>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jint res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticIntMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callStaticMethod<jint>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jint res = callStaticMethodV<jint>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callStaticMethodV<jlong>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jlong res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticLongMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callStaticMethod<jlong>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jlong res = callStaticMethodV<jlong>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callStaticMethodV<jlong>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jlong res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticLongMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callStaticMethod<jlong>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jlong res = callStaticMethodV<jlong>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callStaticMethodV<jfloat>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jfloat res = 0.f;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticFloatMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callStaticMethod<jfloat>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jfloat res = callStaticMethodV<jfloat>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callStaticMethodV<jfloat>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jfloat res = 0.f;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticFloatMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callStaticMethod<jfloat>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jfloat res = callStaticMethodV<jfloat>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callStaticMethodV<jdouble>(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jdouble res = 0.;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticDoubleMethodV(clazz, id, args);
- }
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callStaticMethod<jdouble>(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jdouble res = callStaticMethodV<jdouble>(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callStaticMethodV<jdouble>(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jdouble res = 0.;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticDoubleMethodV(clazz, id, args);
- }
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callStaticMethod<jdouble>(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- jdouble res = callStaticMethodV<jdouble>(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callStaticMethod<void>(const char *className, const char *methodName)
-{
- callStaticMethod<void>(className, methodName, "()V");
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::callStaticMethod<void>(jclass clazz, const char *methodName)
-{
- callStaticMethod<void>(clazz, methodName, "()V");
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callStaticMethod<jboolean>(const char *className, const char *methodName)
-{
- return callStaticMethod<jboolean>(className, methodName, "()Z");
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::callStaticMethod<jboolean>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jboolean>(clazz, methodName, "()Z");
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callStaticMethod<jbyte>(const char *className, const char *methodName)
-{
- return callStaticMethod<jbyte>(className, methodName, "()B");
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::callStaticMethod<jbyte>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jbyte>(clazz, methodName, "()B");
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callStaticMethod<jchar>(const char *className, const char *methodName)
-{
- return callStaticMethod<jchar>(className, methodName, "()C");
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::callStaticMethod<jchar>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jchar>(clazz, methodName, "()C");
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callStaticMethod<jshort>(const char *className, const char *methodName)
-{
- return callStaticMethod<jshort>(className, methodName, "()S");
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::callStaticMethod<jshort>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jshort>(clazz, methodName, "()S");
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callStaticMethod<jint>(const char *className, const char *methodName)
-{
- return callStaticMethod<jint>(className, methodName, "()I");
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::callStaticMethod<jint>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jint>(clazz, methodName, "()I");
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callStaticMethod<jlong>(const char *className, const char *methodName)
-{
- return callStaticMethod<jlong>(className, methodName, "()J");
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::callStaticMethod<jlong>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jlong>(clazz, methodName, "()J");
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callStaticMethod<jfloat>(const char *className, const char *methodName)
-{
- return callStaticMethod<jfloat>(className, methodName, "()F");
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::callStaticMethod<jfloat>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jfloat>(clazz, methodName, "()F");
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callStaticMethod<jdouble>(const char *className, const char *methodName)
-{
- return callStaticMethod<jdouble>(className, methodName, "()D");
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::callStaticMethod<jdouble>(jclass clazz, const char *methodName)
-{
- return callStaticMethod<jdouble>(clazz, methodName, "()D");
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::callObjectMethodV(const char *methodName,
- const char *sig,
- va_list args) const
-{
- QJNIEnvironmentPrivate env;
- jobject res = 0;
- jmethodID id = getCachedMethodID(env, d->m_jclass, d->m_className, methodName, sig);
- if (id) {
- res = env->CallObjectMethodV(d->m_jobject, id, args);
- if (res && env->ExceptionCheck())
- res = 0;
- }
-
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod(const char *methodName,
- const char *sig,
- ...) const
-{
- va_list args;
- va_start(args, sig);
- QJNIObjectPrivate res = callObjectMethodV(methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jstring>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()Ljava/lang/String;");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jbooleanArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[Z");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jbyteArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[B");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jshortArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[S");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jintArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[I");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jlongArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[J");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jfloatArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[F");
-}
-
-template <>
-Q_CORE_EXPORT QJNIObjectPrivate QJNIObjectPrivate::callObjectMethod<jdoubleArray>(const char *methodName) const
-{
- return callObjectMethod(methodName, "()[D");
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::callStaticObjectMethodV(const char *className,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jobject res = 0;
- jclass clazz = loadClass(className, env);
- if (clazz) {
- jmethodID id = getCachedMethodID(env, clazz, toBinaryEncClassName(className), methodName, sig, true);
- if (id) {
- res = env->CallStaticObjectMethodV(clazz, id, args);
- if (res && env->ExceptionCheck())
- res = 0;
- }
- }
-
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::callStaticObjectMethod(const char *className,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- QJNIObjectPrivate res = callStaticObjectMethodV(className, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::callStaticObjectMethodV(jclass clazz,
- const char *methodName,
- const char *sig,
- va_list args)
-{
- QJNIEnvironmentPrivate env;
- jobject res = 0;
- jmethodID id = getMethodID(env, clazz, methodName, sig, true);
- if (id) {
- res = env->CallStaticObjectMethodV(clazz, id, args);
- if (res && env->ExceptionCheck())
- res = 0;
- }
-
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::callStaticObjectMethod(jclass clazz,
- const char *methodName,
- const char *sig,
- ...)
-{
- va_list args;
- va_start(args, sig);
- QJNIObjectPrivate res = callStaticObjectMethodV(clazz, methodName, sig, args);
- va_end(args);
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::getField<jboolean>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jboolean res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "Z");
- if (id)
- res = env->GetBooleanField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::getField<jbyte>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jbyte res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "B");
- if (id)
- res = env->GetByteField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::getField<jchar>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jchar res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "C");
- if (id)
- res = env->GetCharField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::getField<jshort>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jshort res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "S");
- if (id)
- res = env->GetShortField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::getField<jint>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jint res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "I");
- if (id)
- res = env->GetIntField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::getField<jlong>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jlong res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "J");
- if (id)
- res = env->GetLongField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::getField<jfloat>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jfloat res = 0.f;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "F");
- if (id)
- res = env->GetFloatField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::getField<jdouble>(const char *fieldName) const
-{
- QJNIEnvironmentPrivate env;
- jdouble res = 0.;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "D");
- if (id)
- res = env->GetDoubleField(d->m_jobject, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::getStaticField<jboolean>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jboolean res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, "Z", true);
- if (id)
- res = env->GetStaticBooleanField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jboolean QJNIObjectPrivate::getStaticField<jboolean>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "Z", true);
- if (id == 0)
- return 0;
-
- return env->GetStaticBooleanField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::getStaticField<jbyte>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jbyte res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, "B", true);
- if (id)
- res = env->GetStaticByteField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jbyte QJNIObjectPrivate::getStaticField<jbyte>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "B", true);
- if (id == 0)
- return 0;
-
- return env->GetStaticByteField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::getStaticField<jchar>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jchar res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, "C", true);
- if (id)
- res = env->GetStaticCharField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jchar QJNIObjectPrivate::getStaticField<jchar>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "C", true);
- if (id == 0)
- return 0;
-
- return env->GetStaticCharField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::getStaticField<jshort>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jshort res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, "S", true);
- if (id)
- res = env->GetStaticShortField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jshort QJNIObjectPrivate::getStaticField<jshort>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "S", true);
- if (id == 0)
- return 0;
-
- return env->GetStaticShortField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::getStaticField<jint>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jint res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, "I", true);
- if (id)
- res = env->GetStaticIntField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jint QJNIObjectPrivate::getStaticField<jint>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "I", true);
- if (id == 0)
- return 0;
-
- return env->GetStaticIntField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::getStaticField<jlong>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jlong res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, "J", true);
- if (id)
- res = env->GetStaticLongField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jlong QJNIObjectPrivate::getStaticField<jlong>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "J", true);
- if (id == 0)
- return 0;
-
- return env->GetStaticLongField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::getStaticField<jfloat>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jfloat res = 0.f;
- jfieldID id = getFieldID(env, clazz, fieldName, "F", true);
- if (id)
- res = env->GetStaticFloatField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jfloat QJNIObjectPrivate::getStaticField<jfloat>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0.f;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "F", true);
- if (id == 0)
- return 0.f;
-
- return env->GetStaticFloatField(clazz, id);
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::getStaticField<jdouble>(jclass clazz, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jdouble res = 0.;
- jfieldID id = getFieldID(env, clazz, fieldName, "D", true);
- if (id)
- res = env->GetStaticDoubleField(clazz, id);
-
- return res;
-}
-
-template <>
-Q_CORE_EXPORT jdouble QJNIObjectPrivate::getStaticField<jdouble>(const char *className, const char *fieldName)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return 0.;
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, "D", true);
- if (id == 0)
- return 0.;
-
- return env->GetStaticDoubleField(clazz, id);
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::getObjectField(const char *fieldName,
- const char *sig) const
-{
- QJNIEnvironmentPrivate env;
- jobject res = 0;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, sig);
- if (id) {
- res = env->GetObjectField(d->m_jobject, id);
- if (res && env->ExceptionCheck())
- res = 0;
- }
-
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::getStaticObjectField(const char *className,
- const char *fieldName,
- const char *sig)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return QJNIObjectPrivate();
-
- jfieldID id = getCachedFieldID(env, clazz, toBinaryEncClassName(className), fieldName, sig, true);
- if (id == 0)
- return QJNIObjectPrivate();
-
- jobject res = env->GetStaticObjectField(clazz, id);
- if (res && env->ExceptionCheck())
- res = 0;
-
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::getStaticObjectField(jclass clazz,
- const char *fieldName,
- const char *sig)
-{
- QJNIEnvironmentPrivate env;
- jobject res = 0;
- jfieldID id = getFieldID(env, clazz, fieldName, sig, true);
- if (id) {
- res = env->GetStaticObjectField(clazz, id);
- if (res && env->ExceptionCheck())
- res = 0;
- }
-
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jboolean>(const char *fieldName, jboolean value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "Z");
- if (id)
- env->SetBooleanField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jbyte>(const char *fieldName, jbyte value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "B");
- if (id)
- env->SetByteField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jchar>(const char *fieldName, jchar value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "C");
- if (id)
- env->SetCharField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jshort>(const char *fieldName, jshort value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "S");
- if (id)
- env->SetShortField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jint>(const char *fieldName, jint value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "I");
- if (id)
- env->SetIntField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jlong>(const char *fieldName, jlong value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "J");
- if (id)
- env->SetLongField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jfloat>(const char *fieldName, jfloat value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "F");
- if (id)
- env->SetFloatField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jdouble>(const char *fieldName, jdouble value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "D");
- if (id)
- env->SetDoubleField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jbooleanArray>(const char *fieldName, jbooleanArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[Z");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jbyteArray>(const char *fieldName, jbyteArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[B");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jcharArray>(const char *fieldName, jcharArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[C");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jshortArray>(const char *fieldName, jshortArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[S");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jintArray>(const char *fieldName, jintArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[I");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jlongArray>(const char *fieldName, jlongArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[J");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jfloatArray>(const char *fieldName, jfloatArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[F");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jdoubleArray>(const char *fieldName, jdoubleArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "[D");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jstring>(const char *fieldName, jstring value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, "Ljava/lang/String;");
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jobject>(const char *fieldName,
- const char *sig,
- jobject value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, sig);
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setField<jobjectArray>(const char *fieldName,
- const char *sig,
- jobjectArray value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getCachedFieldID(env, d->m_jclass, d->m_className, fieldName, sig);
- if (id)
- env->SetObjectField(d->m_jobject, id, value);
-
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jboolean>(jclass clazz,
- const char *fieldName,
- jboolean value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "Z", true);
- if (id)
- env->SetStaticBooleanField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jboolean>(const char *className,
- const char *fieldName,
- jboolean value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "Z", true);
- if (id == 0)
- return;
-
- env->SetStaticBooleanField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jbyte>(jclass clazz,
- const char *fieldName,
- jbyte value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "B", true);
- if (id)
- env->SetStaticByteField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jbyte>(const char *className,
- const char *fieldName,
- jbyte value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "B", true);
- if (id == 0)
- return;
-
- env->SetStaticByteField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jchar>(jclass clazz,
- const char *fieldName,
- jchar value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "C", true);
- if (id)
- env->SetStaticCharField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jchar>(const char *className,
- const char *fieldName,
- jchar value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "C", true);
- if (id == 0)
- return;
-
- env->SetStaticCharField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jshort>(jclass clazz,
- const char *fieldName,
- jshort value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "S", true);
- if (id)
- env->SetStaticShortField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jshort>(const char *className,
- const char *fieldName,
- jshort value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "S", true);
- if (id == 0)
- return;
-
- env->SetStaticShortField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jint>(jclass clazz,
- const char *fieldName,
- jint value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "I", true);
- if (id)
- env->SetStaticIntField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jint>(const char *className,
- const char *fieldName,
- jint value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "I", true);
- if (id == 0)
- return;
-
- env->SetStaticIntField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jlong>(jclass clazz,
- const char *fieldName,
- jlong value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "J", true);
- if (id)
- env->SetStaticLongField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jlong>(const char *className,
- const char *fieldName,
- jlong value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "J", true);
- if (id == 0)
- return;
-
- env->SetStaticLongField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jfloat>(jclass clazz,
- const char *fieldName,
- jfloat value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "F", true);
- if (id)
- env->SetStaticFloatField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jfloat>(const char *className,
- const char *fieldName,
- jfloat value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "F", true);
- if (id == 0)
- return;
-
- env->SetStaticFloatField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jdouble>(jclass clazz,
- const char *fieldName,
- jdouble value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, "D", true);
- if (id)
- env->SetStaticDoubleField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jdouble>(const char *className,
- const char *fieldName,
- jdouble value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, "D", true);
- if (id == 0)
- return;
-
- env->SetStaticDoubleField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jobject>(jclass clazz,
- const char *fieldName,
- const char *sig,
- jobject value)
-{
- QJNIEnvironmentPrivate env;
- jfieldID id = getFieldID(env, clazz, fieldName, sig, true);
- if (id)
- env->SetStaticObjectField(clazz, id, value);
-}
-
-template <>
-Q_CORE_EXPORT void QJNIObjectPrivate::setStaticField<jobject>(const char *className,
- const char *fieldName,
- const char *sig,
- jobject value)
-{
- QJNIEnvironmentPrivate env;
- jclass clazz = loadClass(className, env);
- if (clazz == 0)
- return;
-
- jfieldID id = getCachedFieldID(env, clazz, className, fieldName, sig, true);
- if (id == 0)
- return;
-
- env->SetStaticObjectField(clazz, id, value);
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::fromString(const QString &string)
-{
- QJNIEnvironmentPrivate env;
- jstring res = env->NewString(reinterpret_cast<const jchar*>(string.constData()),
- string.length());
- QJNIObjectPrivate obj(res);
- env->DeleteLocalRef(res);
- return obj;
-}
-
-QString QJNIObjectPrivate::toString() const
-{
- if (!isValid())
- return QString();
-
- QJNIObjectPrivate string = callObjectMethod<jstring>("toString");
- return qt_convertJString(static_cast<jstring>(string.object()));
-}
-
-bool QJNIObjectPrivate::isClassAvailable(const char *className)
-{
- QJNIEnvironmentPrivate env;
-
- if (!env)
- return false;
-
- jclass clazz = loadClass(className, env);
- return (clazz != 0);
-}
-
-bool QJNIObjectPrivate::isValid() const
-{
- return d->m_jobject;
-}
-
-QJNIObjectPrivate QJNIObjectPrivate::fromLocalRef(jobject lref)
-{
- QJNIObjectPrivate o(lref);
- QJNIEnvironmentPrivate()->DeleteLocalRef(lref);
- return o;
-}
-
-bool QJNIObjectPrivate::isSameObject(jobject obj) const
-{
- QJNIEnvironmentPrivate env;
- return env->IsSameObject(d->m_jobject, obj);
-}
-
-bool QJNIObjectPrivate::isSameObject(const QJNIObjectPrivate &other) const
-{
- return isSameObject(other.d->m_jobject);
-}
-
-QT_END_NAMESPACE