diff options
author | Christian Strømme <christian.stromme@digia.com> | 2013-09-19 17:02:53 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-20 23:45:06 +0200 |
commit | e4f1d83b6ac0e1462160907cf44bb6532652ef76 (patch) | |
tree | 6edf8f32dfea37ce26487db3dac3fb0afe36c94c /src/platformsupport | |
parent | 1f47ceec478f662ed893cb69563c8f0e91ff1cda (diff) |
Remove jniconvenience from platformsupport.
The jniconvenience api is replaces with private API's in core and
public API's in the qtandroidextras module.
Change-Id: Iaf4b4343f8022197e7ec3fdde2406eb3c881208d
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/jniconvenience/jniconvenience.pri | 7 | ||||
-rw-r--r-- | src/platformsupport/jniconvenience/qjnihelpers.cpp | 115 | ||||
-rw-r--r-- | src/platformsupport/jniconvenience/qjnihelpers_p.h | 197 | ||||
-rw-r--r-- | src/platformsupport/jniconvenience/qjniobject.cpp | 3118 | ||||
-rw-r--r-- | src/platformsupport/jniconvenience/qjniobject_p.h | 188 | ||||
-rw-r--r-- | src/platformsupport/platformsupport.pro | 1 |
6 files changed, 0 insertions, 3626 deletions
diff --git a/src/platformsupport/jniconvenience/jniconvenience.pri b/src/platformsupport/jniconvenience/jniconvenience.pri deleted file mode 100644 index 30c672e6ba..0000000000 --- a/src/platformsupport/jniconvenience/jniconvenience.pri +++ /dev/null @@ -1,7 +0,0 @@ -android:!android-no-sdk { - HEADERS += $$PWD/qjnihelpers_p.h \ - $$PWD/qjniobject_p.h - - SOURCES += $$PWD/qjnihelpers.cpp \ - $$PWD/qjniobject.cpp -} diff --git a/src/platformsupport/jniconvenience/qjnihelpers.cpp b/src/platformsupport/jniconvenience/qjnihelpers.cpp deleted file mode 100644 index 3f9b568368..0000000000 --- a/src/platformsupport/jniconvenience/qjnihelpers.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qjnihelpers_p.h" - -#include <qpa/qplatformnativeinterface.h> -#include <qguiapplication.h> - -QT_BEGIN_NAMESPACE - -QString qt_convertJString(jstring string) -{ - QAttachedJNIEnv env; - int strLength = env->GetStringLength(string); - QString res; - res.resize(strLength); - env->GetStringRegion(string, 0, strLength, (jchar*)res.utf16()); - return res; -} - -QJNILocalRef<jstring> qt_toJString(const QString &string) -{ - QAttachedJNIEnv env; - return QJNILocalRef<jstring>(env->NewString(reinterpret_cast<const jchar*>(string.constData()), - string.length())); -} - - -static JavaVM *g_javaVM = 0; - -static JavaVM *getJavaVM() -{ - if (!g_javaVM){ - QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); - g_javaVM = static_cast<JavaVM*>(nativeInterface->nativeResourceForIntegration("JavaVM")); - } - return g_javaVM; -} - -QThreadStorage<int> QAttachedJNIEnv::m_refCount; - -QAttachedJNIEnv::QAttachedJNIEnv() -{ - JavaVM *vm = javaVM(); - if (vm->GetEnv((void**)&jniEnv, JNI_VERSION_1_6) == JNI_EDETACHED) { - if (vm->AttachCurrentThread(&jniEnv, 0) < 0) { - jniEnv = 0; - return; - } - } - - if (!m_refCount.hasLocalData()) - m_refCount.setLocalData(1); - else - m_refCount.setLocalData(m_refCount.localData() + 1); -} - -QAttachedJNIEnv::~QAttachedJNIEnv() -{ - if (!jniEnv) - return; - - int newRef = m_refCount.localData() - 1; - m_refCount.setLocalData(newRef); - - if (newRef == 0) - javaVM()->DetachCurrentThread(); - - jniEnv = 0; -} - -JavaVM *QAttachedJNIEnv::javaVM() -{ - return getJavaVM(); -} - -QT_END_NAMESPACE diff --git a/src/platformsupport/jniconvenience/qjnihelpers_p.h b/src/platformsupport/jniconvenience/qjnihelpers_p.h deleted file mode 100644 index 437a0d039a..0000000000 --- a/src/platformsupport/jniconvenience/qjnihelpers_p.h +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QJNIHELPERS_H -#define QJNIHELPERS_H - -#include <jni.h> -#include <qglobal.h> -#include <QString> -#include <QThreadStorage> - -QT_BEGIN_NAMESPACE - -template <typename T> -class QJNILocalRef; - -QString qt_convertJString(jstring string); -QJNILocalRef<jstring> qt_toJString(const QString &string); - - -struct QAttachedJNIEnv -{ - QAttachedJNIEnv(); - ~QAttachedJNIEnv(); - - static JavaVM *javaVM(); - - JNIEnv *operator->() - { - return jniEnv; - } - - operator JNIEnv*() const - { - return jniEnv; - } - - JNIEnv *jniEnv; - -private: - static QThreadStorage<int> m_refCount; -}; - - -template <typename T> -class QJNILocalRef -{ -public: - inline QJNILocalRef() : m_obj(0) { } - inline explicit QJNILocalRef(T o) : m_obj(o) { } - inline QJNILocalRef(const QJNILocalRef<T> &other) : m_obj(other.m_obj) - { - if (other.m_obj) - m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj)); - } - - template <typename X> - inline QJNILocalRef(const QJNILocalRef<X> &other) : m_obj(other.m_obj) - { - if (other.m_obj) - m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj)); - } - - inline ~QJNILocalRef() { release(); } - - inline QJNILocalRef<T> &operator=(const QJNILocalRef<T> &other) - { - release(); - m_obj = other.m_obj; // for type checking - if (other.m_obj) - m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj)); - return *this; - } - - template <typename X> - inline QJNILocalRef<T> &operator=(const QJNILocalRef<X> &other) - { - release(); - m_obj = other.m_obj; // for type checking - if (other.m_obj) - m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj)); - return *this; - } - - inline QJNILocalRef<T> &operator=(T o) - { - release(); - m_obj = o; - return *this; - } - - template <typename X> - inline QJNILocalRef<T> &operator=(X o) - { - release(); - m_obj = o; - return *this; - } - - inline bool operator !() const { return !m_obj; } - inline bool isNull() const { return !m_obj; } - inline T object() const { return m_obj; } - -private: - void release() - { - if (m_obj) { - m_env->DeleteLocalRef(m_obj); - m_obj = 0; - } - } - - QAttachedJNIEnv m_env; - T m_obj; - - template <class X> friend class QJNILocalRef; -}; - -template <class T, class X> -bool operator==(const QJNILocalRef<T> &ptr1, const QJNILocalRef<X> &ptr2) -{ - QAttachedJNIEnv env; - return env->IsSameObject(ptr1.m_obj, ptr2.m_obj); -} -template <class T, class X> -bool operator!=(const QJNILocalRef<T> &ptr1, const QJNILocalRef<X> &ptr2) -{ - QAttachedJNIEnv env; - return !env->IsSameObject(ptr1.m_obj, ptr2.m_obj); -} - -template <class T, class X> -bool operator==(const QJNILocalRef<T> &ptr1, X ptr2) -{ - QAttachedJNIEnv env; - return env->IsSameObject(ptr1.m_obj, ptr2); -} -template <class T, class X> -bool operator==(T ptr1, const QJNILocalRef<X> &ptr2) -{ - QAttachedJNIEnv env; - return env->IsSameObject(ptr1, ptr2.m_obj); -} -template <class T, class X> -bool operator!=(const QJNILocalRef<T> &ptr1, X ptr2) -{ - QAttachedJNIEnv env; - return !env->IsSameObject(ptr1.m_obj, ptr2); -} -template <class T, class X> -bool operator!=(const T *ptr1, const QJNILocalRef<X> &ptr2) -{ - QAttachedJNIEnv env; - return !env->IsSameObject(ptr1, ptr2.m_obj); -} - -QT_END_NAMESPACE - -#endif // QJNIHELPERS_H diff --git a/src/platformsupport/jniconvenience/qjniobject.cpp b/src/platformsupport/jniconvenience/qjniobject.cpp deleted file mode 100644 index ecf247aabf..0000000000 --- a/src/platformsupport/jniconvenience/qjniobject.cpp +++ /dev/null @@ -1,3118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qjniobject_p.h" - -#include "qjnihelpers_p.h" -#include <qhash.h> - -QT_BEGIN_NAMESPACE - -static QHash<QString, jclass> g_cachedClasses; - -static jclass getCachedClass(JNIEnv *env, const char *className) -{ - jclass clazz = 0; - QString key = QLatin1String(className); - QHash<QString, jclass>::iterator it = g_cachedClasses.find(key); - if (it == g_cachedClasses.end()) { - jclass c = env->FindClass(className); - if (env->ExceptionCheck()) { - c = 0; -#ifdef QT_DEBUG - env->ExceptionDescribe(); -#endif // QT_DEBUG - env->ExceptionClear(); - } - if (c) - clazz = static_cast<jclass>(env->NewGlobalRef(c)); - g_cachedClasses.insert(key, clazz); - } else { - clazz = it.value(); - } - return clazz; -} - -static QHash<QString, jmethodID> g_cachedMethodIDs; -static QString g_keyBase(QLatin1String("%1%2%3")); - -static jmethodID getCachedMethodID(JNIEnv *env, - jclass clazz, - const char *name, - const char *sig, - bool isStatic = false) -{ - jmethodID id = 0; - QString key = g_keyBase.arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig)); - QHash<QString, jmethodID>::iterator it = g_cachedMethodIDs.find(key); - if (it == g_cachedMethodIDs.end()) { - if (isStatic) - id = env->GetStaticMethodID(clazz, name, sig); - else - id = env->GetMethodID(clazz, name, sig); - - if (env->ExceptionCheck()) { - id = 0; -#ifdef QT_DEBUG - env->ExceptionDescribe(); -#endif // QT_DEBUG - env->ExceptionClear(); - } - - g_cachedMethodIDs.insert(key, id); - } else { - id = it.value(); - } - return id; -} - -static QHash<QString, jfieldID> g_cachedFieldIDs; - -static jfieldID getCachedFieldID(JNIEnv *env, - jclass clazz, - const char *name, - const char *sig, - bool isStatic = false) -{ - jfieldID id = 0; - QString key = g_keyBase.arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig)); - QHash<QString, jfieldID>::iterator it = g_cachedFieldIDs.find(key); - if (it == g_cachedFieldIDs.end()) { - if (isStatic) - id = env->GetStaticFieldID(clazz, name, sig); - else - id = env->GetFieldID(clazz, name, sig); - - if (env->ExceptionCheck()) { - id = 0; -#ifdef QT_DEBUG - env->ExceptionDescribe(); -#endif // QT_DEBUG - env->ExceptionClear(); - } - - g_cachedFieldIDs.insert(key, id); - } else { - id = it.value(); - } - return id; -} - -QJNIObjectPrivate::QJNIObjectPrivate(const char *className) - : m_jobject(0) - , m_jclass(0) - , m_own_jclass(false) -{ - QAttachedJNIEnv env; - m_jclass = getCachedClass(env, className); - if (m_jclass) { - // get default constructor - jmethodID constructorId = getCachedMethodID(env, m_jclass, "<init>", "()V"); - if (constructorId) { - jobject obj = env->NewObject(m_jclass, constructorId); - if (obj) { - m_jobject = env->NewGlobalRef(obj); - env->DeleteLocalRef(obj); - } - } - } -} - -QJNIObjectPrivate::QJNIObjectPrivate(const char *className, const char *sig, va_list args) - : m_jobject(0) - , m_jclass(0) - , m_own_jclass(false) -{ - QAttachedJNIEnv env; - m_jclass = getCachedClass(env, className); - if (m_jclass) { - jmethodID constructorId = getCachedMethodID(env, m_jclass, "<init>", sig); - if (constructorId) { - jobject obj = env->NewObjectV(m_jclass, constructorId, args); - if (obj) { - m_jobject = env->NewGlobalRef(obj); - env->DeleteLocalRef(obj); - } - } - } -} - -QJNIObjectPrivate::QJNIObjectPrivate(jclass clazz) - : m_jobject(0) - , m_jclass(0) - , m_own_jclass(true) -{ - QAttachedJNIEnv env; - m_jclass = static_cast<jclass>(env->NewGlobalRef(clazz)); - if (m_jclass) { - // get default constructor - jmethodID constructorId = getCachedMethodID(env, m_jclass, "<init>", "()V"); - if (constructorId) { - jobject obj = env->NewObject(m_jclass, constructorId); - if (obj) { - m_jobject = env->NewGlobalRef(obj); - env->DeleteLocalRef(obj); - } - } - } -} - -QJNIObjectPrivate::QJNIObjectPrivate(jclass clazz, const char *sig, va_list args) - : m_jobject(0) - , m_jclass(0) - , m_own_jclass(true) -{ - QAttachedJNIEnv env; - if (clazz) { - m_jclass = static_cast<jclass>(env->NewGlobalRef(clazz)); - if (m_jclass) { - jmethodID constructorId = getCachedMethodID(env, m_jclass, "<init>", sig); - if (constructorId) { - jobject obj = env->NewObjectV(m_jclass, constructorId, args); - if (obj) { - m_jobject = env->NewGlobalRef(obj); - env->DeleteLocalRef(obj); - } - } - } - } -} - -QJNIObjectPrivate::QJNIObjectPrivate(jobject obj) - : m_jobject(0) - , m_jclass(0) - , m_own_jclass(true) -{ - QAttachedJNIEnv env; - m_jobject = env->NewGlobalRef(obj); - m_jclass = static_cast<jclass>(env->NewGlobalRef(env->GetObjectClass(m_jobject))); -} - -QJNIObjectPrivate::~QJNIObjectPrivate() -{ - QAttachedJNIEnv env; - if (m_jobject) - env->DeleteGlobalRef(m_jobject); - if (m_jclass && m_own_jclass) - env->DeleteGlobalRef(m_jclass); -} - -QJNIObject::QJNIObject(const char *className, const char *sig, ...) -{ - va_list args; - va_start(args, sig); - d = QSharedPointer<QJNIObjectPrivate>(new QJNIObjectPrivate(className, sig, args)); - va_end(args); -} - -QJNIObject::QJNIObject(jclass clazz, const char *sig, ...) -{ - va_list args; - va_start(args, sig); - d = QSharedPointer<QJNIObjectPrivate>(new QJNIObjectPrivate(clazz, sig, args)); - va_end(args); -} - - -bool QJNIObject::isClassAvailable(const char *className) -{ - QAttachedJNIEnv env; - - if (!env.jniEnv) - return false; - - jclass clazz = getCachedClass(env, className); - - return (clazz != 0); -} - -template <> -void QJNIObject::callMethod<void>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - env->CallVoidMethodV(d->m_jobject, id, args); - va_end(args); - } -} - -template <> -jboolean QJNIObject::callMethod<jboolean>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jboolean res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallBooleanMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jbyte QJNIObject::callMethod<jbyte>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jbyte res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallByteMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jchar QJNIObject::callMethod<jchar>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jchar res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallCharMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jshort QJNIObject::callMethod<jshort>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jshort res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallShortMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jint QJNIObject::callMethod<jint>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jint res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallIntMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jlong QJNIObject::callMethod<jlong>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jlong res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallLongMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jfloat QJNIObject::callMethod<jfloat>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jfloat res = 0.f; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallFloatMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -jdouble QJNIObject::callMethod<jdouble>(const char *methodName, const char *sig, ...) -{ - QAttachedJNIEnv env; - jdouble res = 0.; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallDoubleMethodV(d->m_jobject, id, args); - va_end(args); - } - return res; -} - -template <> -QJNILocalRef<jobject> QJNIObject::callObjectMethod<jobject>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jobject res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallObjectMethodV(d->m_jobject, id, args); - va_end(args); - } - return QJNILocalRef<jobject>(res); -} - -template <> -QJNILocalRef<jstring> QJNIObject::callObjectMethod<jstring>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jstring res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jstring>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jstring>(res); -} - -template <> -QJNILocalRef<jobjectArray> QJNIObject::callObjectMethod<jobjectArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jobjectArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jobjectArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jobjectArray>(res); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::callObjectMethod<jbooleanArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jbooleanArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jbooleanArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jbooleanArray>(res); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::callObjectMethod<jbyteArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jbyteArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jbyteArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jbyteArray>(res); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::callObjectMethod<jcharArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jcharArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jcharArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jcharArray>(res); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::callObjectMethod<jshortArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jshortArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jshortArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jshortArray>(res); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::callObjectMethod<jintArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jintArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jintArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jintArray>(res); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::callObjectMethod<jlongArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jlongArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jlongArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jlongArray>(res); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::callObjectMethod<jfloatArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jfloatArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jfloatArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jfloatArray>(res); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::callObjectMethod<jdoubleArray>(const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jdoubleArray res = 0; - jmethodID id = getCachedMethodID(env, d->m_jclass, methodName, sig); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jdoubleArray>(env->CallObjectMethodV(d->m_jobject, id, args)); - va_end(args); - } - return QJNILocalRef<jdoubleArray>(res); -} - -template <> -void QJNIObject::callMethod<void>(const char *methodName) -{ - callMethod<void>(methodName, "()V"); -} - -template <> -jboolean QJNIObject::callMethod<jboolean>(const char *methodName) -{ - return callMethod<jboolean>(methodName, "()Z"); -} - -template <> -jbyte QJNIObject::callMethod<jbyte>(const char *methodName) -{ - return callMethod<jbyte>(methodName, "()B"); -} - -template <> -jchar QJNIObject::callMethod<jchar>(const char *methodName) -{ - return callMethod<jchar>(methodName, "()C"); -} - -template <> -jshort QJNIObject::callMethod<jshort>(const char *methodName) -{ - return callMethod<jshort>(methodName, "()S"); -} - -template <> -jint QJNIObject::callMethod<jint>(const char *methodName) -{ - return callMethod<jint>(methodName, "()I"); -} - -template <> -jlong QJNIObject::callMethod<jlong>(const char *methodName) -{ - return callMethod<jlong>(methodName, "()J"); -} - -template <> -jfloat QJNIObject::callMethod<jfloat>(const char *methodName) -{ - return callMethod<jfloat>(methodName, "()F"); -} - -template <> -jdouble QJNIObject::callMethod<jdouble>(const char *methodName) -{ - return callMethod<jdouble>(methodName, "()D"); -} - -template <> -QJNILocalRef<jstring> QJNIObject::callObjectMethod<jstring>(const char *methodName) -{ - return callObjectMethod<jstring>(methodName, "()Ljava/lang/String;"); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::callObjectMethod<jbooleanArray>(const char *methodName) -{ - return callObjectMethod<jbooleanArray>(methodName, "()[Z"); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::callObjectMethod<jbyteArray>(const char *methodName) -{ - return callObjectMethod<jbyteArray>(methodName, "()[B"); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::callObjectMethod<jshortArray>(const char *methodName) -{ - return callObjectMethod<jshortArray>(methodName, "()[S"); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::callObjectMethod<jintArray>(const char *methodName) -{ - return callObjectMethod<jintArray>(methodName, "()[I"); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::callObjectMethod<jlongArray>(const char *methodName) -{ - return callObjectMethod<jlongArray>(methodName, "()[J"); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::callObjectMethod<jfloatArray>(const char *methodName) -{ - return callObjectMethod<jfloatArray>(methodName, "()[F"); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::callObjectMethod<jdoubleArray>(const char *methodName) -{ - return callObjectMethod<jdoubleArray>(methodName, "()[D"); -} - -template <> -void QJNIObject::callStaticMethod<void>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - env->CallStaticVoidMethodV(clazz, id, args); - va_end(args); - } - } -} - -template <> -void QJNIObject::callStaticMethod<void>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - env->CallStaticVoidMethodV(clazz, id, args); - va_end(args); - } -} - -template <> -jboolean QJNIObject::callStaticMethod<jboolean>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jboolean res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticBooleanMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jboolean QJNIObject::callStaticMethod<jboolean>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jboolean res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticBooleanMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -jbyte QJNIObject::callStaticMethod<jbyte>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jbyte res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticByteMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jbyte QJNIObject::callStaticMethod<jbyte>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jbyte res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticByteMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -jchar QJNIObject::callStaticMethod<jchar>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jchar res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticCharMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jchar QJNIObject::callStaticMethod<jchar>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jchar res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticCharMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - - -template <> -jshort QJNIObject::callStaticMethod<jshort>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jshort res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticShortMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jshort QJNIObject::callStaticMethod<jshort>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jshort res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticShortMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -jint QJNIObject::callStaticMethod<jint>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jint res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticIntMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jint QJNIObject::callStaticMethod<jint>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jint res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticIntMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -jlong QJNIObject::callStaticMethod<jlong>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jlong res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticLongMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jlong QJNIObject::callStaticMethod<jlong>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jlong res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticLongMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -jfloat QJNIObject::callStaticMethod<jfloat>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jfloat res = 0.f; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticFloatMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jfloat QJNIObject::callStaticMethod<jfloat>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jfloat res = 0.f; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticFloatMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -jdouble QJNIObject::callStaticMethod<jdouble>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jdouble res = 0.; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticDoubleMethodV(clazz, id, args); - va_end(args); - } - } - - return res; -} - -template <> -jdouble QJNIObject::callStaticMethod<jdouble>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jdouble res = 0.; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticDoubleMethodV(clazz, id, args); - va_end(args); - } - - return res; -} - -template <> -QJNILocalRef<jobject> QJNIObject::callStaticObjectMethod<jobject>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jobject res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticObjectMethodV(clazz, id, args); - va_end(args); - } - } - - return QJNILocalRef<jobject>(res); -} - -template <> -QJNILocalRef<jobject> QJNIObject::callStaticObjectMethod<jobject>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jobject res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = env->CallStaticObjectMethodV(clazz, id, args); - va_end(args); - } - - return QJNILocalRef<jobject>(res); -} - -template <> -QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jstring res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jstring>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jstring>(res); -} - -template <> -QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jstring res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jstring>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jstring>(res); -} - -template <> -QJNILocalRef<jobjectArray> QJNIObject::callStaticObjectMethod<jobjectArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jobjectArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jobjectArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jobjectArray>(res); -} - -template <> -QJNILocalRef<jobjectArray> QJNIObject::callStaticObjectMethod<jobjectArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jobjectArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jobjectArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jobjectArray>(res); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jbooleanArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jbooleanArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jbooleanArray>(res); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jbooleanArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jbooleanArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jbooleanArray>(res); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jbyteArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jbyteArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jbyteArray>(res); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jbyteArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jbyteArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jbyteArray>(res); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jcharArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jcharArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jcharArray>(res); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jcharArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jcharArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jcharArray>(res); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jshortArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jshortArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jshortArray>(res); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jshortArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jshortArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jshortArray>(res); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jintArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jintArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jintArray>(res); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jintArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jintArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jintArray>(res); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jlongArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jlongArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jlongArray>(res); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jlongArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jlongArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jlongArray>(res); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jfloatArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jfloatArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jfloatArray>(res); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jfloatArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jfloatArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jfloatArray>(res); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jdoubleArray res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) { - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jdoubleArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - } - - return QJNILocalRef<jdoubleArray>(res); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - QAttachedJNIEnv env; - - jdoubleArray res = 0; - - jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); - if (id) { - va_list args; - va_start(args, sig); - res = static_cast<jdoubleArray>(env->CallStaticObjectMethodV(clazz, id, args)); - va_end(args); - } - - return QJNILocalRef<jdoubleArray>(res); -} - -template <> -void QJNIObject::callStaticMethod<void>(const char *className, const char *methodName) -{ - callStaticMethod<void>(className, methodName, "()V"); -} - -template <> -void QJNIObject::callStaticMethod<void>(jclass clazz, const char *methodName) -{ - callStaticMethod<void>(clazz, methodName, "()V"); -} - -template <> -jboolean QJNIObject::callStaticMethod<jboolean>(const char *className, const char *methodName) -{ - return callStaticMethod<jboolean>(className, methodName, "()Z"); -} - -template <> -jboolean QJNIObject::callStaticMethod<jboolean>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jboolean>(clazz, methodName, "()Z"); -} - -template <> -jbyte QJNIObject::callStaticMethod<jbyte>(const char *className, const char *methodName) -{ - return callStaticMethod<jbyte>(className, methodName, "()B"); -} - -template <> -jbyte QJNIObject::callStaticMethod<jbyte>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jbyte>(clazz, methodName, "()B"); -} - -template <> -jchar QJNIObject::callStaticMethod<jchar>(const char *className, const char *methodName) -{ - return callStaticMethod<jchar>(className, methodName, "()C"); -} - -template <> -jchar QJNIObject::callStaticMethod<jchar>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jchar>(clazz, methodName, "()C"); -} - -template <> -jshort QJNIObject::callStaticMethod<jshort>(const char *className, const char *methodName) -{ - return callStaticMethod<jshort>(className, methodName, "()S"); -} - -template <> -jshort QJNIObject::callStaticMethod<jshort>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jshort>(clazz, methodName, "()S"); -} - -template <> -jint QJNIObject::callStaticMethod<jint>(const char *className, const char *methodName) -{ - return callStaticMethod<jint>(className, methodName, "()I"); -} - -template <> -jint QJNIObject::callStaticMethod<jint>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jint>(clazz, methodName, "()I"); -} - -template <> -jlong QJNIObject::callStaticMethod<jlong>(const char *className, const char *methodName) -{ - return callStaticMethod<jlong>(className, methodName, "()J"); -} - -template <> -jlong QJNIObject::callStaticMethod<jlong>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jlong>(clazz, methodName, "()J"); -} - -template <> -jfloat QJNIObject::callStaticMethod<jfloat>(const char *className, const char *methodName) -{ - return callStaticMethod<jfloat>(className, methodName, "()F"); -} - -template <> -jfloat QJNIObject::callStaticMethod<jfloat>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jfloat>(clazz, methodName, "()F"); -} - -template <> -jdouble QJNIObject::callStaticMethod<jdouble>(const char *className, const char *methodName) -{ - return callStaticMethod<jdouble>(className, methodName, "()D"); -} - -template <> -jdouble QJNIObject::callStaticMethod<jdouble>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jdouble>(clazz, methodName, "()D"); -} - -template <> -QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jstring>(className, methodName, "()Ljava/lang/String;"); -} - -template <> -QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jstring>(clazz, methodName, "()Ljava/lang/String;"); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jbooleanArray>(className, methodName, "()[Z"); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jbooleanArray>(clazz, methodName, "()[Z"); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jbyteArray>(className, methodName, "()[B"); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jbyteArray>(clazz, methodName, "()[B"); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jcharArray>(className, methodName, "()[C"); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jcharArray>(clazz, methodName, "()[C"); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jshortArray>(className, methodName, "()[S"); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jshortArray>(clazz, methodName, "()[S"); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jintArray>(className, methodName, "()[I"); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jintArray>(clazz, methodName, "()[I"); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jlongArray>(className, methodName, "()[J"); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jlongArray>(clazz, methodName, "()[J"); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jfloatArray>(className, methodName, "()[F"); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jfloatArray>(clazz, methodName, "()[F"); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod<jdoubleArray>(className, methodName, "()[D"); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod<jdoubleArray>(clazz, methodName, "()[D"); -} - -template <> -jboolean QJNIObject::getField<jboolean>(const char *fieldName) -{ - QAttachedJNIEnv env; - jboolean res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "Z"); - if (id) - res = env->GetBooleanField(d->m_jobject, id); - - return res; -} - -template <> -jbyte QJNIObject::getField<jbyte>(const char *fieldName) -{ - QAttachedJNIEnv env; - jbyte res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "B"); - if (id) - res = env->GetByteField(d->m_jobject, id); - - return res; -} - -template <> -jchar QJNIObject::getField<jchar>(const char *fieldName) -{ - QAttachedJNIEnv env; - jchar res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "C"); - if (id) - res = env->GetCharField(d->m_jobject, id); - - return res; -} - -template <> -jshort QJNIObject::getField<jshort>(const char *fieldName) -{ - QAttachedJNIEnv env; - jshort res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "S"); - if (id) - res = env->GetShortField(d->m_jobject, id); - - return res; -} - -template <> -jint QJNIObject::getField<jint>(const char *fieldName) -{ - QAttachedJNIEnv env; - jint res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "I"); - if (id) - res = env->GetIntField(d->m_jobject, id); - - return res; -} - -template <> -jlong QJNIObject::getField<jlong>(const char *fieldName) -{ - QAttachedJNIEnv env; - jlong res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "J"); - if (id) - res = env->GetLongField(d->m_jobject, id); - - return res; -} - -template <> -jfloat QJNIObject::getField<jfloat>(const char *fieldName) -{ - QAttachedJNIEnv env; - jfloat res = 0.f; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "F"); - if (id) - res = env->GetFloatField(d->m_jobject, id); - - return res; -} - -template <> -jdouble QJNIObject::getField<jdouble>(const char *fieldName) -{ - QAttachedJNIEnv env; - jdouble res = 0.; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "D"); - if (id) - res = env->GetDoubleField(d->m_jobject, id); - - return res; -} - -template <> -QJNILocalRef<jobject> QJNIObject::getObjectField<jobject>(const char *fieldName, const char *sig) -{ - QAttachedJNIEnv env; - jobject res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, sig); - if (id) - res = env->GetObjectField(d->m_jobject, id); - - return QJNILocalRef<jobject>(res); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::getObjectField<jbooleanArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jbooleanArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[Z"); - if (id) - res = static_cast<jbooleanArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jbooleanArray>(res); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::getObjectField<jbyteArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jbyteArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[B"); - if (id) - res = static_cast<jbyteArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jbyteArray>(res); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::getObjectField<jcharArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jcharArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[C"); - if (id) - res = static_cast<jcharArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jcharArray>(res); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::getObjectField<jshortArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jshortArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[S"); - if (id) - res = static_cast<jshortArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jshortArray>(res); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::getObjectField<jintArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jintArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[I"); - if (id) - res = static_cast<jintArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jintArray>(res); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::getObjectField<jlongArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jlongArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[J"); - if (id) - res = static_cast<jlongArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jlongArray>(res); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::getObjectField<jfloatArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jfloatArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[F"); - if (id) - res = static_cast<jfloatArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jfloatArray>(res); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::getObjectField<jdoubleArray>(const char *fieldName) -{ - QAttachedJNIEnv env; - jdoubleArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[D"); - if (id) - res = static_cast<jdoubleArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jdoubleArray>(res); -} - -template <> -QJNILocalRef<jstring> QJNIObject::getObjectField<jstring>(const char *fieldName) -{ - QAttachedJNIEnv env; - jstring res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "Ljava/lang/String;"); - if (id) - res = static_cast<jstring>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jstring>(res); -} - -template <> -QJNILocalRef<jobjectArray> QJNIObject::getObjectField<jobjectArray>(const char *fieldName, - const char *sig) -{ - QAttachedJNIEnv env; - jobjectArray res = 0; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, sig); - if (id) - res = static_cast<jobjectArray>(env->GetObjectField(d->m_jobject, id)); - - return QJNILocalRef<jobjectArray>(res); -} - -template <> -void QJNIObject::setField<jboolean>(const char *fieldName, jboolean value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "Z"); - if (id) - env->SetBooleanField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jbyte>(const char *fieldName, jbyte value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "B"); - if (id) - env->SetByteField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jchar>(const char *fieldName, jchar value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "C"); - if (id) - env->SetCharField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jshort>(const char *fieldName, jshort value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "S"); - if (id) - env->SetShortField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jint>(const char *fieldName, jint value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "I"); - if (id) - env->SetIntField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jlong>(const char *fieldName, jlong value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "J"); - if (id) - env->SetLongField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jfloat>(const char *fieldName, jfloat value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "F"); - if (id) - env->SetFloatField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jdouble>(const char *fieldName, jdouble value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "D"); - if (id) - env->SetDoubleField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jbooleanArray>(const char *fieldName, jbooleanArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[Z"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jbyteArray>(const char *fieldName, jbyteArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[B"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jcharArray>(const char *fieldName, jcharArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[C"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jshortArray>(const char *fieldName, jshortArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[S"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jintArray>(const char *fieldName, jintArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[I"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jlongArray>(const char *fieldName, jlongArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[J"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jfloatArray>(const char *fieldName, jfloatArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[F"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jdoubleArray>(const char *fieldName, jdoubleArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "[D"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jstring>(const char *fieldName, jstring value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, "Ljava/lang/String;"); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jobject>(const char *fieldName, const char *sig, jobject value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, sig); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -void QJNIObject::setField<jobjectArray>(const char *fieldName, - const char *sig, - jobjectArray value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, d->m_jclass, fieldName, sig); - if (id) - env->SetObjectField(d->m_jobject, id, value); - -} - -template <> -jboolean QJNIObject::getStaticField<jboolean>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jboolean res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "Z", true); - if (id) - res = env->GetStaticBooleanField(clazz, id); - - return res; -} - -template <> -jboolean QJNIObject::getStaticField<jboolean>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jboolean res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jboolean>(clazz, fieldName); - - return res; -} - -template <> -jbyte QJNIObject::getStaticField<jbyte>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jbyte res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "B", true); - if (id) - res = env->GetStaticByteField(clazz, id); - - return res; -} - -template <> -jbyte QJNIObject::getStaticField<jbyte>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jbyte res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jbyte>(clazz, fieldName); - - return res; -} - -template <> -jchar QJNIObject::getStaticField<jchar>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jchar res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "C", true); - if (id) - res = env->GetStaticCharField(clazz, id); - - return res; -} - -template <> -jchar QJNIObject::getStaticField<jchar>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jchar res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jchar>(clazz, fieldName); - - return res; -} - -template <> -jshort QJNIObject::getStaticField<jshort>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jshort res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "S", true); - if (id) - res = env->GetStaticShortField(clazz, id); - - return res; -} - -template <> -jshort QJNIObject::getStaticField<jshort>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jshort res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jshort>(clazz, fieldName); - - return res; -} - -template <> -jint QJNIObject::getStaticField<jint>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jint res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "I", true); - if (id) - res = env->GetStaticIntField(clazz, id); - - return res; -} - -template <> -jint QJNIObject::getStaticField<jint>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jint res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jint>(clazz, fieldName); - - return res; -} - -template <> -jlong QJNIObject::getStaticField<jlong>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jlong res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "J", true); - if (id) - res = env->GetStaticLongField(clazz, id); - - return res; -} - -template <> -jlong QJNIObject::getStaticField<jlong>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jlong res = 0; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jlong>(clazz, fieldName); - - return res; -} - -template <> -jfloat QJNIObject::getStaticField<jfloat>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jfloat res = 0.f; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "F", true); - if (id) - res = env->GetStaticFloatField(clazz, id); - - return res; -} - -template <> -jfloat QJNIObject::getStaticField<jfloat>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jfloat res = 0.f; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jfloat>(clazz, fieldName); - - return res; -} - -template <> -jdouble QJNIObject::getStaticField<jdouble>(jclass clazz, const char *fieldName) -{ - QAttachedJNIEnv env; - - jdouble res = 0.; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "D", true); - if (id) - res = env->GetStaticDoubleField(clazz, id); - - return res; -} - -template <> -jdouble QJNIObject::getStaticField<jdouble>(const char *className, const char *fieldName) -{ - QAttachedJNIEnv env; - - jdouble res = 0.; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticField<jdouble>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jobject> QJNIObject::getStaticObjectField<jobject>(jclass clazz, - const char *fieldName, - const char *sig) -{ - QAttachedJNIEnv env; - - jobject res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, sig, true); - if (id) - res = env->GetStaticObjectField(clazz, id); - - return QJNILocalRef<jobject>(res); -} - -template <> -QJNILocalRef<jobject> QJNIObject::getStaticObjectField<jobject>(const char *className, - const char *fieldName, - const char *sig) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jobject> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jobject>(clazz, fieldName, sig); - - return res; -} - -template <> -QJNILocalRef<jstring> QJNIObject::getStaticObjectField<jstring>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jstring res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "Ljava/lang/String;", true); - if (id) - res = static_cast<jstring>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jstring>(res); -} - -template <> -QJNILocalRef<jstring> QJNIObject::getStaticObjectField<jstring>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jstring> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jstring>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::getStaticObjectField<jbooleanArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jbooleanArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[Z", true); - if (id) - res = static_cast<jbooleanArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jbooleanArray>(res); -} - -template <> -QJNILocalRef<jbooleanArray> QJNIObject::getStaticObjectField<jbooleanArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jbooleanArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jbooleanArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::getStaticObjectField<jbyteArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jbyteArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[B", true); - if (id) - res = static_cast<jbyteArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jbyteArray>(res); -} - -template <> -QJNILocalRef<jbyteArray> QJNIObject::getStaticObjectField<jbyteArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jbyteArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jbyteArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::getStaticObjectField<jcharArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jcharArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[C", true); - if (id) - res = static_cast<jcharArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jcharArray>(res); -} - -template <> -QJNILocalRef<jcharArray> QJNIObject::getStaticObjectField<jcharArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jcharArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jcharArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::getStaticObjectField<jshortArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jshortArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[S", true); - if (id) - res = static_cast<jshortArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jshortArray>(res); -} - -template <> -QJNILocalRef<jshortArray> QJNIObject::getStaticObjectField<jshortArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jshortArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jshortArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jintArray> QJNIObject::getStaticObjectField<jintArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jintArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[I", true); - if (id) - res = static_cast<jintArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jintArray>(res); -} - -template <> -QJNILocalRef<jintArray> QJNIObject::getStaticObjectField<jintArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jintArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jintArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::getStaticObjectField<jlongArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jlongArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[J", true); - if (id) - res = static_cast<jlongArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jlongArray>(res); -} - -template <> -QJNILocalRef<jlongArray> QJNIObject::getStaticObjectField<jlongArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jlongArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jlongArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::getStaticObjectField<jfloatArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jfloatArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[F", true); - if (id) - res = static_cast<jfloatArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jfloatArray>(res); -} - -template <> -QJNILocalRef<jfloatArray> QJNIObject::getStaticObjectField<jfloatArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jfloatArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jfloatArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::getStaticObjectField<jdoubleArray>(jclass clazz, - const char *fieldName) -{ - QAttachedJNIEnv env; - - jdoubleArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, "[D", true); - if (id) - res = static_cast<jdoubleArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jdoubleArray>(res); -} - -template <> -QJNILocalRef<jdoubleArray> QJNIObject::getStaticObjectField<jdoubleArray>(const char *className, - const char *fieldName) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jdoubleArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jdoubleArray>(clazz, fieldName); - - return res; -} - -template <> -QJNILocalRef<jobjectArray> QJNIObject::getStaticObjectField<jobjectArray>(jclass clazz, - const char *fieldName, - const char *sig) -{ - QAttachedJNIEnv env; - - jobjectArray res = 0; - - jfieldID id = getCachedFieldID(env, clazz, fieldName, sig, true); - if (id) - res = static_cast<jobjectArray>(env->GetStaticObjectField(clazz, id)); - - return QJNILocalRef<jobjectArray>(res); -} - -template <> -QJNILocalRef<jobjectArray> QJNIObject::getStaticObjectField<jobjectArray>(const char *className, - const char *fieldName, - const char *sig) -{ - QAttachedJNIEnv env; - - QJNILocalRef<jobjectArray> res; - - jclass clazz = getCachedClass(env, className); - if (clazz) - res = getStaticObjectField<jobjectArray>(clazz, fieldName, sig); - - return res; -} - -template <> -void QJNIObject::setStaticField<jboolean>(jclass clazz, const char *fieldName, jboolean value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "Z", true); - if (id) - env->SetStaticBooleanField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jboolean>(const char *className, - const char *fieldName, - jboolean value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jboolean>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jbyte>(jclass clazz, const char *fieldName, jbyte value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "B", true); - if (id) - env->SetStaticByteField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jbyte>(const char *className, - const char *fieldName, - jbyte value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jbyte>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jchar>(jclass clazz, const char *fieldName, jchar value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "C", true); - if (id) - env->SetStaticCharField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jchar>(const char *className, - const char *fieldName, - jchar value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jchar>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jshort>(jclass clazz, const char *fieldName, jshort value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "S", true); - if (id) - env->SetStaticShortField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jshort>(const char *className, - const char *fieldName, - jshort value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jshort>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jint>(jclass clazz, const char *fieldName, jint value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "I", true); - if (id) - env->SetStaticIntField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jint>(const char *className, const char *fieldName, jint value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jint>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jlong>(jclass clazz, const char *fieldName, jlong value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "J", true); - if (id) - env->SetStaticLongField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jlong>(const char *className, - const char *fieldName, - jlong value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jlong>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jfloat>(jclass clazz, const char *fieldName, jfloat value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "F", true); - if (id) - env->SetStaticFloatField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jfloat>(const char *className, - const char *fieldName, - jfloat value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jfloat>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jdouble>(jclass clazz, const char *fieldName, jdouble value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, "D", true); - if (id) - env->SetStaticDoubleField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jdouble>(const char *className, - const char *fieldName, - jdouble value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jdouble>(clazz, fieldName, value); -} - -template <> -void QJNIObject::setStaticField<jobject>(jclass clazz, - const char *fieldName, - const char *sig, - jobject value) -{ - QAttachedJNIEnv env; - jfieldID id = getCachedFieldID(env, clazz, fieldName, sig, true); - if (id) - env->SetStaticObjectField(clazz, id, value); -} - -template <> -void QJNIObject::setStaticField<jobject>(const char *className, - const char *fieldName, - const char *sig, - jobject value) -{ - QAttachedJNIEnv env; - jclass clazz = getCachedClass(env, className); - if (clazz) - setStaticField<jobject>(clazz, fieldName, sig, value); -} - -template <> -void QJNIObject::setStaticField<jstring>(const char *className, - const char *fieldName, - jstring value) -{ - setStaticField<jobject>(className, fieldName, "Ljava/lang/String;", value); -} - -template <> -void QJNIObject::setStaticField<jstring>(jclass clazz, const char *fieldName, jstring value) -{ - setStaticField<jobject>(clazz, fieldName, "Ljava/lang/String;", value); -} - -template <> -void QJNIObject::setStaticField<jbooleanArray>(const char *className, - const char *fieldName, - jbooleanArray value) -{ - setStaticField<jobject>(className, fieldName, "[Z", value); -} - -template <> -void QJNIObject::setStaticField<jbooleanArray>(jclass clazz, - const char *fieldName, - jbooleanArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[Z", value); -} - -template <> -void QJNIObject::setStaticField<jbyteArray>(const char *className, - const char *fieldName, - jbyteArray value) -{ - setStaticField<jobject>(className, fieldName, "[B", value); -} - -template <> -void QJNIObject::setStaticField<jbyteArray>(jclass clazz, - const char *fieldName, - jbyteArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[B", value); -} - -template <> -void QJNIObject::setStaticField<jcharArray>(const char *className, - const char *fieldName, - jcharArray value) -{ - setStaticField<jobject>(className, fieldName, "[C", value); -} - -template <> -void QJNIObject::setStaticField<jcharArray>(jclass clazz, - const char *fieldName, - jcharArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[C", value); -} - -template <> -void QJNIObject::setStaticField<jshortArray>(const char *className, - const char *fieldName, - jshortArray value) -{ - setStaticField<jobject>(className, fieldName, "[S", value); -} - -template <> -void QJNIObject::setStaticField<jshortArray>(jclass clazz, - const char *fieldName, - jshortArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[S", value); -} - -template <> -void QJNIObject::setStaticField<jintArray>(const char *className, - const char *fieldName, - jintArray value) -{ - setStaticField<jobject>(className, fieldName, "[I", value); -} - -template <> -void QJNIObject::setStaticField<jintArray>(jclass clazz, - const char *fieldName, - jintArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[I", value); -} - -template <> -void QJNIObject::setStaticField<jlongArray>(const char *className, - const char *fieldName, - jlongArray value) -{ - setStaticField<jobject>(className, fieldName, "[J", value); -} - -template <> -void QJNIObject::setStaticField<jlongArray>(jclass clazz, - const char *fieldName, - jlongArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[J", value); -} - -template <> -void QJNIObject::setStaticField<jfloatArray>(const char *className, - const char *fieldName, - jfloatArray value) -{ - setStaticField<jobject>(className, fieldName, "[F", value); -} - -template <> -void QJNIObject::setStaticField<jfloatArray>(jclass clazz, - const char *fieldName, - jfloatArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[F", value); -} - -template <> -void QJNIObject::setStaticField<jdoubleArray>(const char *className, - const char *fieldName, - jdoubleArray value) -{ - setStaticField<jobject>(className, fieldName, "[D", value); -} - -template <> -void QJNIObject::setStaticField<jdoubleArray>(jclass clazz, - const char *fieldName, - jdoubleArray value) -{ - setStaticField<jobject>(clazz, fieldName, "[D", value); -} - - -QT_END_NAMESPACE diff --git a/src/platformsupport/jniconvenience/qjniobject_p.h b/src/platformsupport/jniconvenience/qjniobject_p.h deleted file mode 100644 index 8721ec3a6a..0000000000 --- a/src/platformsupport/jniconvenience/qjniobject_p.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QJNIOBJECT_H -#define QJNIOBJECT_H - -#include <qglobal.h> -#include <qsharedpointer.h> -#include <jni.h> - -QT_BEGIN_NAMESPACE - -template <typename T> -class QJNILocalRef; - -/** - * Allows to wrap any Java class and partially hide some of the jni calls. - * - * Usage example: - * - * QJNIObject javaString("java/lang/String"); - * jchar char = javaString.callMethod<jchar>("charAt", "(I)C", 0); - * - * ---- - * - * jstring string = QJNIObject::callStaticMethod<jstring>("java/lang/String", - * "valueOf", - * "(I)Ljava/lang/String;", 2); - * - * ---- - * - * // Constructor with argument - * jstring someString; - * QJNIObject someObject("java/some/Class", "(Ljava/lang/String;)V", someString); - * someObject.setField<jint>("fieldName", 10); - * someObject.callMethod<void>("doStuff"); - */ - -class QJNIObjectPrivate -{ -public: - QJNIObjectPrivate(const char *className); - QJNIObjectPrivate(const char *className, const char *sig, va_list args); - QJNIObjectPrivate(jclass clazz); - QJNIObjectPrivate(jclass clazz, const char *sig, va_list args); - QJNIObjectPrivate(jobject obj); - ~QJNIObjectPrivate(); - -private: - Q_DISABLE_COPY(QJNIObjectPrivate) - friend class QJNIObject; - jobject m_jobject; - jclass m_jclass; - bool m_own_jclass; -}; - -class QJNIObject -{ -public: - explicit QJNIObject(const char *className) : d(new QJNIObjectPrivate(className)) { } - QJNIObject(const char *className, const char *sig, ...); - explicit QJNIObject(jclass clazz) : d(new QJNIObjectPrivate(clazz)) { } - QJNIObject(jclass clazz, const char *sig, ...); - explicit QJNIObject(jobject obj) : d(new QJNIObjectPrivate(obj)) { } - - virtual ~QJNIObject() { } - - static bool isClassAvailable(const char *className); - - bool isValid() const { return d->m_jobject != 0; } - jobject object() const { return d->m_jobject; } - - template <typename T> - T callMethod(const char *methodName); - template <typename T> - T callMethod(const char *methodName, const char *sig, ...); - template <typename T> - QJNILocalRef<T> callObjectMethod(const char *methodName); - template <typename T> - QJNILocalRef<T> callObjectMethod(const char *methodName, const char *sig, ...); - - template <typename T> - static T callStaticMethod(const char *className, const char *methodName); - template <typename T> - static T callStaticMethod(const char *className, const char *methodName, const char *sig, ...); - template <typename T> - static QJNILocalRef<T> callStaticObjectMethod(const char *className, const char *methodName); - template <typename T> - static QJNILocalRef<T> callStaticObjectMethod(const char *className, - const char *methodName, - const char *sig, ...); - template <typename T> - static T callStaticMethod(jclass clazz, const char *methodName); - template <typename T> - static T callStaticMethod(jclass clazz, const char *methodName, const char *sig, ...); - template <typename T> - static QJNILocalRef<T> callStaticObjectMethod(jclass clazz, const char *methodName); - template <typename T> - static QJNILocalRef<T> callStaticObjectMethod(jclass clazz, - const char *methodName, - const char *sig, ...); - - template <typename T> - T getField(const char *fieldName); - template <typename T> - T getField(const char *fieldName, const char *sig); - template <typename T> - QJNILocalRef<T> getObjectField(const char *fieldName); - template <typename T> - QJNILocalRef<T> getObjectField(const char *fieldName, const char *sig); - - template <typename T> - void setField(const char *fieldName, T value); - template <typename T> - void setField(const char *fieldName, const char *sig, T value); - - template <typename T> - static QJNILocalRef<T> getStaticObjectField(const char *className, const char *fieldName); - template <typename T> - static QJNILocalRef<T> getStaticObjectField(const char *className, - const char *fieldName, - const char *sig); - template <typename T> - static T getStaticField(const char *className, const char *fieldName); - template <typename T> - static QJNILocalRef<T> getStaticObjectField(jclass clazz, const char *fieldName); - template <typename T> - static QJNILocalRef<T> getStaticObjectField(jclass clazz, const char *fieldName, const char *sig); - template <typename T> - static T getStaticField(jclass clazz, const char *fieldName); - - template <typename T> - static void setStaticField(const char *className, - const char *fieldName, - const char *sig, - T value); - template <typename T> - static void setStaticField(const char *className, const char *fieldName, T value); - template <typename T> - static void setStaticField(jclass clazz, const char *fieldName, const char *sig, T value); - template <typename T> - static void setStaticField(jclass clazz, const char *fieldName, T value); - -private: - QSharedPointer<QJNIObjectPrivate> d; -}; - -QT_END_NAMESPACE - -#endif // QJNIOBJECT_H diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro index da87f395fd..f5291ab216 100644 --- a/src/platformsupport/platformsupport.pro +++ b/src/platformsupport/platformsupport.pro @@ -19,6 +19,5 @@ include(devicediscovery/devicediscovery.pri) include(services/services.pri) include(themes/themes.pri) include(linuxaccessibility/linuxaccessibility.pri) -include(jniconvenience/jniconvenience.pri) load(qt_module) |