diff options
Diffstat (limited to 'src/androidextras/jni')
-rw-r--r-- | src/androidextras/jni/qandroidjnienvironment.cpp | 203 | ||||
-rw-r--r-- | src/androidextras/jni/qandroidjnienvironment.h | 86 | ||||
-rw-r--r-- | src/androidextras/jni/qandroidjniobject.cpp | 2507 | ||||
-rw-r--r-- | src/androidextras/jni/qandroidjniobject.h | 215 |
4 files changed, 0 insertions, 3011 deletions
diff --git a/src/androidextras/jni/qandroidjnienvironment.cpp b/src/androidextras/jni/qandroidjnienvironment.cpp deleted file mode 100644 index 70fd3e0..0000000 --- a/src/androidextras/jni/qandroidjnienvironment.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qandroidjnienvironment.h" -#include <QtCore/private/qjni_p.h> -#include <QtCore/private/qjnihelpers_p.h> -#include <QtCore/qthreadstorage.h> - -QT_BEGIN_NAMESPACE - -/*! - \class QAndroidJniEnvironment - \inmodule QtAndroidExtras - \brief The QAndroidJniEnvironment provides access to the JNI Environment. - \since 5.2 -*/ - -/*! - \fn QAndroidJniEnvironment::QAndroidJniEnvironment() - - Constructs a new QAndroidJniEnvironment object and attach the current thread to the Java VM. - - \snippet code/src_androidextras_qandroidjnienvironment.cpp Create QAndroidJniEnvironment -*/ - -/*! - \fn QAndroidJniEnvironment::~QAndroidJniEnvironment() - - Detaches the current thread from the Java VM and destroys the QAndroidJniEnvironment object. -*/ - -/*! - \fn JavaVM *QAndroidJniEnvironment::javaVM() - - Returns the Java VM interface. -*/ - -/*! - \fn JNIEnv *QAndroidJniEnvironment::operator->() - - Provides access to the QAndroidJniEnvironment's JNIEnv pointer. -*/ - -/*! - \fn QAndroidJniEnvironment::operator JNIEnv *() const - - Returns the JNI Environment pointer. - */ - -/*! - \fn jclass QAndroidJniEnvironment::findClass(const char *className) - - Searches for \a className using all available class loaders. Qt on Android - uses a custom class loader to load all the .jar files and it must be used - to find any classes that are created by that class loader because these - classes are not visible in the default class loader. - - Returns the class pointer or null if is not found. - - A use case for this function is searching for a custom class then calling - its memeber method. The following code snippet create an instance of the - class \c CustomClass and then calls \c printFromJava() method: - - \code - QAndroidJniEnvironment env; - jclass javaClass = env.findClass("org/qtproject/example/qtandroidextras/CustomClass"); - QAndroidJniObject classObject(javaClass); - - QAndroidJniObject javaMessage = QAndroidJniObject::fromString("findClass example"); - classObject.callMethod<void>("printFromJava", - "(Ljava/lang/String;)V", - javaMessage.object<jstring>()); - \endcode - - \since Qt 5.12 - */ - - -QAndroidJniEnvironment::QAndroidJniEnvironment() - : d(new QJNIEnvironmentPrivate) -{ -} - -QAndroidJniEnvironment::~QAndroidJniEnvironment() -{ -} - -JavaVM *QAndroidJniEnvironment::javaVM() -{ - return QtAndroidPrivate::javaVM(); -} - -JNIEnv *QAndroidJniEnvironment::operator->() -{ - return d->jniEnv; -} - -QAndroidJniEnvironment::operator JNIEnv*() const -{ - return d->jniEnv; -} - -jclass QAndroidJniEnvironment::findClass(const char *className) -{ - return QJNIEnvironmentPrivate::findClass(className, d->jniEnv); -} - -static void clearException(bool silent) -{ - QAndroidJniEnvironment env; - if (Q_UNLIKELY(env->ExceptionCheck())) { - if (!silent) - env->ExceptionDescribe(); - env->ExceptionClear(); - } -} - -/*! - \class QAndroidJniExceptionCleaner - \inmodule QtAndroidExtras - \brief Cleans pending JNI exceptions. - - The QAndroidJniExceptionCleaner is a convenience class useful to clean - the pending JNI exceptions from the current scope. - - \since 5.10 -*/ - -/*! - \enum QAndroidJniExceptionCleaner::OutputMode - - \value Silent the exceptions are cleaned silently - \value Verbose discribes the exceptions before cleaning them -*/ - -/*! - \fn QAndroidJniExceptionCleaner::QAndroidJniExceptionCleaner(OutputMode outputMode = OutputMode::Silent) - - Cleans any pending exceptions either silently or with descriptions, depending on the \a outputMode. - */ -QAndroidJniExceptionCleaner::QAndroidJniExceptionCleaner(QAndroidJniExceptionCleaner::OutputMode outputMode) - : m_outputMode(outputMode) -{ - clearException(outputMode == OutputMode::Silent); -} - -/*! - \fn QAndroidJniExceptionCleaner::~QAndroidJniExceptionCleaner() - - Clean any pending exceptions. - */ -QAndroidJniExceptionCleaner::~QAndroidJniExceptionCleaner() -{ - clearException(m_outputMode == OutputMode::Silent); -} - -/*! - \fn void QAndroidJniExceptionCleaner::clean() - - Manually cleans any pending exceptions - */ -void QAndroidJniExceptionCleaner::clean() -{ - clearException(m_outputMode == OutputMode::Silent); -} - -QT_END_NAMESPACE diff --git a/src/androidextras/jni/qandroidjnienvironment.h b/src/androidextras/jni/qandroidjnienvironment.h deleted file mode 100644 index 46d443d..0000000 --- a/src/androidextras/jni/qandroidjnienvironment.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QANDROIDJNIENVIRONMENT_H -#define QANDROIDJNIENVIRONMENT_H - -#include <jni.h> -#include <QtAndroidExtras/qandroidextrasglobal.h> -#include <QtCore/qglobal.h> -#include <QtCore/qscopedpointer.h> - -QT_BEGIN_NAMESPACE - -class QJNIEnvironmentPrivate; - -class Q_ANDROIDEXTRAS_EXPORT QAndroidJniEnvironment -{ -public: - QAndroidJniEnvironment(); - ~QAndroidJniEnvironment(); - static JavaVM *javaVM(); - JNIEnv *operator->(); - operator JNIEnv*() const; - jclass findClass(const char *className); - -private: - Q_DISABLE_COPY(QAndroidJniEnvironment) - QScopedPointer<QJNIEnvironmentPrivate> d; -}; - -class Q_ANDROIDEXTRAS_EXPORT QAndroidJniExceptionCleaner -{ -public: - enum class OutputMode { - Silent, - Verbose - }; - -public: - explicit QAndroidJniExceptionCleaner(OutputMode outputMode = OutputMode::Silent); - ~QAndroidJniExceptionCleaner(); - - void clean(); -private: - OutputMode m_outputMode; -}; - -QT_END_NAMESPACE - -#endif // QANDROIDJNIENVIRONMENT_H diff --git a/src/androidextras/jni/qandroidjniobject.cpp b/src/androidextras/jni/qandroidjniobject.cpp deleted file mode 100644 index 4f00494..0000000 --- a/src/androidextras/jni/qandroidjniobject.cpp +++ /dev/null @@ -1,2507 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qandroidjniobject.h" -#include <QtCore/private/qjni_p.h> -#include <QtCore/qhash.h> - -QT_BEGIN_NAMESPACE - -/*! - \class QAndroidJniObject - \inmodule QtAndroidExtras - \brief Provides APIs to call Java code from C++. - \since 5.2 - - \sa QAndroidJniEnvironment - - \section1 General Notes - - \list - \li Class names needs to contain the fully-qualified class name, for example: \b"java/lang/String". - \li Method signatures are written as \b"(Arguments)ReturnType" - \li All object types are returned as a QAndroidJniObject. - \endlist - - \section1 Method Signatures - - For functions that take no arguments, QAndroidJniObject provides convenience functions that will use - the correct signature based on the provided template type. For example: - - \code - jint x = QAndroidJniObject::callMethod<jint>("getSize"); - QAndroidJniObject::callMethod<void>("touch"); - \endcode - - In other cases you will need to supply the signature yourself, and it is important that the - signature matches the function you want to call. The signature structure is \b \(A\)R, where \b A - is the type of the argument\(s\) and \b R is the return type. Array types in the signature must - have the \b\[ suffix and the fully-qualified type names must have the \b L prefix and \b ; suffix. - - The example below demonstrates how to call two different static functions. - \code - // Java class - package org.qtproject.qt; - class TestClass - { - static String fromNumber(int x) { ... } - static String[] stringArray(String s1, String s2) { ... } - } - \endcode - - The signature for the first function is \b"\(I\)Ljava/lang/String;" - - \code - // C++ code - QAndroidJniObject stringNumber = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt/TestClass", - "fromNumber" - "(I)Ljava/lang/String;", - 10); - \endcode - - and the signature for the second function is \b"\(Ljava/lang/String;Ljava/lang/String;\)\[Ljava/lang/String;" - - \code - // C++ code - QAndroidJniObject string1 = QAndroidJniObject::fromString("String1"); - QAndroidJniObject string2 = QAndroidJniObject::fromString("String2"); - QAndroidJniObject stringArray = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt/TestClass", - "stringArray" - "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" - string1.object<jstring>(), - string2.object<jstring>()); - \endcode - - - \section1 Handling Java Exception - - When calling Java functions that might throw an exception, it is important that you check, handle - and clear out the exception before continuing. - - \note It is unsafe to make a JNI call when there are exceptions pending. - - \snippet code/src_androidextras_qandroidjniobject.cpp Check for exceptions - - \section1 Java Native Methods - - Java native methods makes it possible to call native code from Java, this is done by creating a - function declaration in Java and prefixing it with the \b native keyword. - Before a native function can be called from Java, you need to map the Java native function to a - native function in your code. Mapping functions can be done by calling the RegisterNatives() function - through the \l{QAndroidJniEnvironment}{JNI environment pointer}. - - The example below demonstrates how this could be done. - - Java implementation: - \snippet code/src_androidextras_qandroidjniobject.cpp Java native methods - - C++ Implementation: - \snippet code/src_androidextras_qandroidjniobject.cpp Registering native methods - - \section1 The Lifetime of a Java Object - - Most \l{Object types}{objects} received from Java will be local references and will only stay valid - in the scope you received them. After that, the object becomes eligible for garbage collection. If you - want to keep a Java object alive you need to either create a new global reference to the object and - release it when you are done, or construct a new QAndroidJniObject and let it manage the lifetime of the Java object. - \sa object() - - \note The QAndroidJniObject does only manage its own references, if you construct a QAndroidJniObject from a - global or local reference that reference will not be released by the QAndroidJniObject. - - \section1 JNI Types - - \section2 Object Types - \table - \header - \li Type - \li Signature - \row - \li jobject - \li Ljava/lang/Object; - \row - \li jclass - \li Ljava/lang/Class; - \row - \li jstring - \li Ljava/lang/String; - \row - \li jthrowable - \li Ljava/lang/Throwable; - \row - \li jobjectArray - \li [Ljava/lang/Object; - \row - \li jarray - \li [\e<type> - \row - \li jbooleanArray - \li [Z - \row - \li jbyteArray - \li [B - \row - \li jcharArray - \li [C - \row - \li jshortArray - \li [S - \row - \li jintArray - \li [I - \row - \li jlongArray - \li [J - \row - \li jfloatArray - \li [F - \row - \li jdoubleArray - \li [D - \endtable - - - \section2 Primitive Types - \table - \header - \li Type - \li Signature - \row - \li jboolean - \li Z - \row - \li jbyte - \li B - \row - \li jchar - \li C - \row - \li jshort - \li S - \row - \li jint - \li I - \row - \li jlong - \li J - \row - \li jfloat - \li F - \row - \li jdouble - \li D - \endtable - - \section3 Other - \table - \header - \li Type - \li Signature - \row - \li void - \li V - \row - \li \e{Custom type} - \li L\e<fully-qualified-name>; - \endtable - - For more information about JNI see: \l http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html -*/ - -/*! - \fn QAndroidJniObject::QAndroidJniObject() - - Constructs an invalid QAndroidJniObject. - - \sa isValid() -*/ - -/*! - \fn QAndroidJniObject::QAndroidJniObject(const char *className) - - Constructs a new QAndroidJniObject by calling the default constructor of \a className. - - \code - - ... - QAndroidJniObject myJavaString("java/lang/String"); - ... - - \endcode -*/ - -/*! - \fn QAndroidJniObject::QAndroidJniObject(const char *className, const char *signature, ...) - - Constructs a new QAndroidJniObject by calling the constructor of \a className with \a signature - and arguments. - - \code - - ... - jstring myJStringArg = ...; - QAndroidJniObject myNewJavaString("java/lang/String", "(Ljava/lang/String;)V", myJStringArg); - ... - - \endcode -*/ - -/*! - \fn QAndroidJniObject::QAndroidJniObject(jclass clazz) - - Constructs a new QAndroidJniObject by calling the default constructor of \a clazz. - - Note: The QAndroidJniObject will create a new reference to the class \a clazz - and releases it again when it is destroyed. References to the class created - outside the QAndroidJniObject needs to be managed by the caller. - -*/ - -/*! - \fn QAndroidJniObject::QAndroidJniObject(jclass clazz, const char *signature, ...) - - Constructs a new QAndroidJniObject from \a clazz by calling the constructor with \a signature - and arguments. - - \code - jclass myClazz = ...; - QAndroidJniObject::QAndroidJniObject(myClazz, "(I)V", 3); - \endcode -*/ - -/*! - \fn QAndroidJniObject::QAndroidJniObject(jobject object) - - Constructs a new QAndroidJniObject around the Java object \a object. - - Note: The QAndroidJniObject will hold a reference to the Java object \a object - and release it when destroyed. Any references to the Java object \a object - outside QAndroidJniObject needs to be managed by the caller. - - \sa fromLocalRef() -*/ - -/*! - Destroys the QAndroidJniObject and releases any references held by the QAndroidJniObject. -*/ -QAndroidJniObject::~QAndroidJniObject() -{ - // must be empty until ### Qt 6 -} - -/*! - \fn template <typename T> T QAndroidJniObject::callMethod(const char *methodName, const char *sig, ...) const - - Calls the method \a methodName with a signature \a sig and returns the value. - - \code - QAndroidJniObject myJavaString = ...; - jint index = myJavaString.callMethod<jint>("indexOf", "(I)I", 0x0051); - \endcode - -*/ - -/*! - \fn template <typename T> T QAndroidJniObject::callMethod(const char *methodName) const - - Calls the method \a methodName and returns the value. - - \code - QAndroidJniObject myJavaString = ...; - jint size = myJavaString.callMethod<jint>("length"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::callObjectMethod(const char *methodName) const - - Calls the Java objects method \a methodName and returns a new QAndroidJniObject for - the returned Java object. - - \code - ... - QAndroidJniObject myJavaString1 = ...; - QAndroidJniObject myJavaString2 = myJavaString1.callObjectMethod<jstring>("toString"); - ... - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::callObjectMethod(const char *methodName, const char *signature, ...) const - - Calls the Java object's method \a methodName with the signature \a signature and arguments - - \code - QAndroidJniObject myJavaString; ==> "Hello, Java" - QAndroidJniObject mySubstring = myJavaString.callObjectMethod("substring", "(II)Ljava/lang/String;", 7, 10); - \endcode -*/ - -/*! - \fn template <typename T> T QAndroidJniObject::callStaticMethod(jclass clazz, const char *methodName) - - Calls the static method \a methodName on \a clazz and returns the value. - - \code - ... - jclass javaMathClass = ...; // ("java/lang/Math") - jdouble randNr = QAndroidJniObject::callStaticMethod<jdouble>(javaMathClass, "random"); - ... - \endcode -*/ - -/*! - \fn template <typename T> T QAndroidJniObject::callStaticMethod(const char *className, const char *methodName) - - Calls the static method \a methodName on class \a className and returns the value. - - \code - jint value = QAndroidJniObject::callStaticMethod<jint>("MyClass", "staticMethod"); - \endcode -*/ - -/*! - \fn template <typename T> T QAndroidJniObject::callStaticMethod(const char *className, const char *methodName, const char *signature, ...) - - Calls the static method with \a methodName with \a signature on class \a className with optional arguments. - - \code - ... - jint a = 2; - jint b = 4; - jint max = QAndroidJniObject::callStaticMethod<jint>("java/lang/Math", "max", "(II)I", a, b); - ... - \endcode -*/ - -/*! - \fn template <typename T> T QAndroidJniObject::callStaticMethod(jclass clazz, const char *methodName, const char *signature, ...) - - Calls the static method \a methodName with \a signature on \a clazz and returns the value. - - \code - ... - jclass javaMathClass = ...; // ("java/lang/Math") - jint a = 2; - jint b = 4; - jint max = QAndroidJniObject::callStaticMethod<jint>(javaMathClass, "max", "(II)I", a, b); - ... - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::callStaticObjectMethod(const char *className, const char *methodName) - - Calls the static method with \a methodName on the class \a className. - - \code - QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("CustomClass", "getClassName"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::callStaticObjectMethod(const char *className, const char *methodName, const char *signature, ...) - - Calls the static method with \a methodName and \a signature on the class \a className. - - \code - QAndroidJniObject thread = QAndroidJniObject::callStaticObjectMethod("java/lang/Thread", "currentThread", "()Ljava/lang/Thread;"); - QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod("java/lang/String", "valueOf", "(I)Ljava/lang/String;", 10); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::callStaticObjectMethod(jclass clazz, const char *methodName) - - Calls the static method with \a methodName on \a clazz. - -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::callStaticObjectMethod(jclass clazz, const char *methodName, const char *signature, ...) - - Calls the static method with \a methodName and \a signature on class \a clazz. -*/ - -/*! - \fn T QAndroidJniObject::getField(const char *fieldName) const - - Retrieves the value of the field \a fieldName. - - \code - QAndroidJniObject volumeControl = ...; - jint fieldValue = volumeControl.getField<jint>("MAX_VOLUME"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::getObjectField(const char *fieldName) const - - Retrieves the object of field \a fieldName. - - \code - QAndroidJniObject field = jniObject.getObjectField<jstring>("FIELD_NAME"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::getObjectField(const char *fieldName, const char *signature) const - - Retrieves the object from the field with \a signature and \a fieldName. - - \note Since \b{Qt 5.3} this function can be used without a template type. - - \code - QAndroidJniObject field = jniObject.getObjectField("FIELD_NAME", "Ljava/lang/String;"); - \endcode -*/ - -/*! - \fn T QAndroidJniObject::getStaticField(const char *className, const char *fieldName) - - Retrieves the value from the static field \a fieldName on the class \a className. -*/ - -/*! - \fn T QAndroidJniObject::getStaticField(jclass clazz, const char *fieldName) - - Retrieves the value from the static field \a fieldName on \a clazz. -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::getStaticObjectField(const char *className, const char *fieldName) - - Retrieves the object from the field \a fieldName on the class \a className. - - \code - QAndroidJniObject jobj = QAndroidJniObject::getStaticObjectField<jstring>("class/with/Fields", "FIELD_NAME"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::getStaticObjectField(const char *className, const char *fieldName, const char *signature) - Retrieves the object from the field with \a signature and \a fieldName on class \a className. - - \note Since \b{Qt 5.3} this function can be used without a template type. - - \code - QAndroidJniObject jobj = QAndroidJniObject::getStaticObjectField("class/with/Fields", "FIELD_NAME", "Ljava/lang/String;"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::getStaticObjectField(jclass clazz, const char *fieldName) - - Retrieves the object from the field \a fieldName on \a clazz. - - \code - QAndroidJniObject jobj = QAndroidJniObject::getStaticObjectField<jstring>(clazz, "FIELD_NAME"); - \endcode -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::getStaticObjectField(jclass clazz, const char *fieldName, const char *signature) - Retrieves the object from the field with \a signature and \a fieldName on \a clazz. - - \note Since \b{Qt 5.3} this function can be used without a template type. - - \code - QAndroidJniObject jobj = QAndroidJniObject::getStaticObjectField(clazz, "FIELD_NAME", "Ljava/lang/String;"); - \endcode -*/ - -/*! - \fn template <typename T> void QAndroidJniObject::setField(const char *fieldName, T value) - - Sets the value of \a fieldName to \a value. - - \code - ... - QAndroidJniObject obj; - obj.setField<jint>("AN_INT_FIELD", 10); - jstring myString = ... - obj.setField<jstring>("A_STRING_FIELD", myString); - ... - \endcode -*/ - -/*! - \fn template <typename T> void QAndroidJniObject::setField(const char *fieldName, const char *signature, T value) - - Sets the value of \a fieldName with \a signature to \a value. - - \code - QAndroidJniObject stringArray = ...; - QAndroidJniObject obj = ...; - obj.setField<jobjectArray>("KEY_VALUES", "([Ljava/lang/String;)V", stringArray.object<jobjectArray>()) - \endcode -*/ - -/*! - \fn template <typename T> void QAndroidJniObject::setStaticField(const char *className, const char *fieldName, T value) - - Sets the value of the static field \a fieldName in class \a className to \a value. -*/ - -/*! - \fn template <typename T> void QAndroidJniObject::setStaticField(const char *className, const char *fieldName, const char *signature, T value); - - Sets the static field with \a fieldName and \a signature to \a value on class \a className. -*/ - -/*! - \fn template <typename T> void QAndroidJniObject::setStaticField(jclass clazz, const char *fieldName, T value) - - Sets the static field \a fieldName of the class \a clazz to \a value. -*/ - -/*! - \fn template <typename T> void QAndroidJniObject::setStaticField(jclass clazz, const char *fieldName, const char *signature, T value); - - Sets the static field with \a fieldName and \a signature to \a value on class \a clazz. -*/ - -/*! - \fn bool QAndroidJniObject::isClassAvailable(const char *className) - - Returns true if the Java class \a className is available. - - \code - ... - if (QAndroidJniObject::isClassAvailable("java/lang/String")) { - ... - } - ... - \endcode -*/ - -/*! - \fn bool QAndroidJniObject::isValid() const - - Returns true if this instance holds a valid Java object. - - \code - ... - QAndroidJniObject qjniObject; ==> isValid() == false - QAndroidJniObject qjniObject(0) ==> isValid() == false - QAndroidJniObject qjniObject("could/not/find/Class") ==> isValid() == false - ... - \endcode -*/ - -/*! - \fn template <typename T> T QAndroidJniObject::object() const - - Returns the object held by the QAndroidJniObject as type T. - - \code - QAndroidJniObject string = QAndroidJniObject::fromString("Hello, JNI"); - jstring jstring = string.object<jstring>(); - \endcode - - \note The returned object is still owned by the QAndroidJniObject. If you want to keep the object valid - you should create a new QAndroidJniObject or make a new global reference to the object and - free it yourself. - - \snippet code/src_androidextras_qandroidjniobject.cpp QAndroidJniObject scope - - \note Since \b{Qt 5.3} this function can be used without a template type, if the returned type - is a \c jobject. - - \code - jobject object = jniObject.object(); - \endcode -*/ - -/*! - \fn template <typename T> QAndroidJniObject &QAndroidJniObject::operator=(T object) - - Replace the current object with \a object. The old Java object will be released. -*/ - -/*! - \fn QString QAndroidJniObject::toString() const - - Returns a QString with a string representation of the java object. - Calling this function on a Java String object is a convenient way of getting the actual string - data. - - \code - QAndroidJniObject string = ...; // "Hello Java" - QString qstring = string.toString(); // "Hello Java" - \endcode - - \sa fromString() -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::fromString(const QString &string) - - Creates a Java string from the QString \a string and returns a QAndroidJniObject holding that string. - - \code - ... - QString myQString = "QString"; - QAndroidJniObject myJavaString = QAndroidJniObject::fromString(myQString); - ... - \endcode - - \sa toString() -*/ - -/*! - \fn QAndroidJniObject QAndroidJniObject::fromLocalRef(jobject localRef) - \since 5.7 - - Creates a QAndroidJniObject from the local JNI reference \a localRef. - This function takes ownership of \a localRef and frees it before returning. - - \note Only call this function with a local JNI reference. For example, most raw JNI calls, through - the JNI environment, returns local references to a java object. - - \code - jobject localRef = env->GetObjectArrayElement(array, index); - QAndroidJniObject element = QAndroidJniObject::fromLocalRef(localRef); - \endcode -*/ - -/*! - \fn bool operator==(const QAndroidJniObject &o1, const QAndroidJniObject &o2) - \relates QAndroidJniObject - - Returns true if both objects, \a o1 and \a o2, are referencing the same Java object, or if both - are NULL. In any other cases false will be returned. -*/ - -/*! - \fn bool operator!=(const QAndroidJniObject &o1, const QAndroidJniObject &o2) - \relates QAndroidJniObject - - Returns true if \a o1 holds a reference to a different object then \a o2. -*/ - - -QAndroidJniObject::QAndroidJniObject(const char *className, const char *sig, ...) -{ - va_list args; - QJNIObjectPrivate::QVaListPrivate vargs = { args }; - va_start(args, sig); - d = QSharedPointer<QJNIObjectPrivate>(new QJNIObjectPrivate(className, sig, vargs)); - va_end(args); -} - -QAndroidJniObject::QAndroidJniObject(jclass clazz, const char *sig, ...) -{ - va_list args; - QJNIObjectPrivate::QVaListPrivate vargs = { args }; - va_start(args, sig); - d = QSharedPointer<QJNIObjectPrivate>(new QJNIObjectPrivate(clazz, sig, vargs)); - va_end(args); -} - - -QAndroidJniObject::QAndroidJniObject() : d(new QJNIObjectPrivate) -{ - -} - -QAndroidJniObject::QAndroidJniObject(const char *className) : d(new QJNIObjectPrivate(className)) -{ -} - -QAndroidJniObject::QAndroidJniObject(jclass clazz) : d(new QJNIObjectPrivate(clazz)) -{ -} - -QAndroidJniObject::QAndroidJniObject(jobject obj) : d(new QJNIObjectPrivate(obj)) -{ -} - -QAndroidJniObject::QAndroidJniObject(const QJNIObjectPrivate &o) : d(new QJNIObjectPrivate(o)) -{ - -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::callMethod<void>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - d->callMethodV<void>(methodName, sig, args); - va_end(args); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::callMethod<jboolean>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jboolean res = d->callMethodV<jboolean>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::callMethod<jbyte>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jbyte res = d->callMethodV<jbyte>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::callMethod<jchar>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jchar res = d->callMethodV<jchar>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::callMethod<jshort>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jshort res = d->callMethodV<jshort>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::callMethod<jint>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jint res = d->callMethodV<jint>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::callMethod<jlong>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jlong res = d->callMethodV<jlong>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::callMethod<jfloat>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jfloat res = d->callMethodV<jfloat>(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::callMethod<jdouble>(const char *methodName, const char *sig, ...) const -{ - va_list args; - va_start(args, sig); - jdouble res = d->callMethodV<jdouble>(methodName, sig, args); - va_end(args); - return res; -} - -QAndroidJniObject QAndroidJniObject::callObjectMethod(const char *methodName, - const char *sig, - ...) const -{ - va_list args; - va_start(args, sig); - QJNIObjectPrivate res = d->callObjectMethodV(methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::callMethod<void>(const char *methodName) const -{ - callMethod<void>(methodName, "()V"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::callMethod<jboolean>(const char *methodName) const -{ - return callMethod<jboolean>(methodName, "()Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::callMethod<jbyte>(const char *methodName) const -{ - return callMethod<jbyte>(methodName, "()B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::callMethod<jchar>(const char *methodName) const -{ - return callMethod<jchar>(methodName, "()C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::callMethod<jshort>(const char *methodName) const -{ - return callMethod<jshort>(methodName, "()S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::callMethod<jint>(const char *methodName) const -{ - return callMethod<jint>(methodName, "()I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::callMethod<jlong>(const char *methodName) const -{ - return callMethod<jlong>(methodName, "()J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::callMethod<jfloat>(const char *methodName) const -{ - return callMethod<jfloat>(methodName, "()F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::callMethod<jdouble>(const char *methodName) const -{ - return callMethod<jdouble>(methodName, "()D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jobject>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jclass>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()Ljava/lang/Class;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jstring>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()Ljava/lang/String;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jobjectArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jbooleanArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jbyteArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jcharArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jshortArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jintArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jlongArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jfloatArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jdoubleArray>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()[D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callObjectMethod<jthrowable>(const char *methodName) const -{ - return d->callObjectMethod(methodName, "()Ljava/lang/Throwable;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::callStaticMethod<void>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - QJNIObjectPrivate::callStaticMethodV<void>(className, methodName, sig, args); - va_end(args); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::callStaticMethod<void>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - QJNIObjectPrivate::callStaticMethodV<void>(clazz, methodName, sig, args); - va_end(args); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::callStaticMethod<jboolean>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jboolean res = QJNIObjectPrivate::callStaticMethodV<jboolean>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::callStaticMethod<jboolean>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jboolean res = QJNIObjectPrivate::callStaticMethodV<jboolean>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::callStaticMethod<jbyte>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jbyte res = QJNIObjectPrivate::callStaticMethodV<jbyte>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::callStaticMethod<jbyte>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jbyte res = QJNIObjectPrivate::callStaticMethodV<jbyte>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::callStaticMethod<jchar>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jchar res = QJNIObjectPrivate::callStaticMethodV<jchar>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::callStaticMethod<jchar>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jchar res = QJNIObjectPrivate::callStaticMethodV<jchar>(clazz, methodName, sig, args); - va_end(args); - return res; -} - - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::callStaticMethod<jshort>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jshort res = QJNIObjectPrivate::callStaticMethodV<jshort>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::callStaticMethod<jshort>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jshort res = QJNIObjectPrivate::callStaticMethodV<jshort>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::callStaticMethod<jint>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jint res = QJNIObjectPrivate::callStaticMethodV<jint>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::callStaticMethod<jint>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jint res = QJNIObjectPrivate::callStaticMethodV<jint>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::callStaticMethod<jlong>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jlong res = QJNIObjectPrivate::callStaticMethodV<jlong>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::callStaticMethod<jlong>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jlong res = QJNIObjectPrivate::callStaticMethodV<jlong>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::callStaticMethod<jfloat>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jfloat res = QJNIObjectPrivate::callStaticMethodV<jfloat>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::callStaticMethod<jfloat>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jfloat res = QJNIObjectPrivate::callStaticMethodV<jfloat>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::callStaticMethod<jdouble>(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jdouble res = QJNIObjectPrivate::callStaticMethodV<jdouble>(className, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::callStaticMethod<jdouble>(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - jdouble res = QJNIObjectPrivate::callStaticMethodV<jdouble>(clazz, methodName, sig, args); - va_end(args); - return res; -} - -QAndroidJniObject QAndroidJniObject::callStaticObjectMethod(const char *className, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - QJNIObjectPrivate res = QJNIObjectPrivate::callStaticObjectMethodV(className, - methodName, - sig, - args); - va_end(args); - return res; -} - -QAndroidJniObject QAndroidJniObject::callStaticObjectMethod(jclass clazz, - const char *methodName, - const char *sig, - ...) -{ - va_list args; - va_start(args, sig); - QJNIObjectPrivate res = QJNIObjectPrivate::callStaticObjectMethodV(clazz, methodName, sig, args); - va_end(args); - return res; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::callStaticMethod<void>(const char *className, const char *methodName) -{ - callStaticMethod<void>(className, methodName, "()V"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::callStaticMethod<void>(jclass clazz, const char *methodName) -{ - callStaticMethod<void>(clazz, methodName, "()V"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::callStaticMethod<jboolean>(const char *className, const char *methodName) -{ - return callStaticMethod<jboolean>(className, methodName, "()Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::callStaticMethod<jboolean>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jboolean>(clazz, methodName, "()Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::callStaticMethod<jbyte>(const char *className, const char *methodName) -{ - return callStaticMethod<jbyte>(className, methodName, "()B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::callStaticMethod<jbyte>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jbyte>(clazz, methodName, "()B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::callStaticMethod<jchar>(const char *className, const char *methodName) -{ - return callStaticMethod<jchar>(className, methodName, "()C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::callStaticMethod<jchar>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jchar>(clazz, methodName, "()C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::callStaticMethod<jshort>(const char *className, const char *methodName) -{ - return callStaticMethod<jshort>(className, methodName, "()S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::callStaticMethod<jshort>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jshort>(clazz, methodName, "()S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::callStaticMethod<jint>(const char *className, const char *methodName) -{ - return callStaticMethod<jint>(className, methodName, "()I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::callStaticMethod<jint>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jint>(clazz, methodName, "()I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::callStaticMethod<jlong>(const char *className, const char *methodName) -{ - return callStaticMethod<jlong>(className, methodName, "()J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::callStaticMethod<jlong>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jlong>(clazz, methodName, "()J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::callStaticMethod<jfloat>(const char *className, const char *methodName) -{ - return callStaticMethod<jfloat>(className, methodName, "()F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::callStaticMethod<jfloat>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jfloat>(clazz, methodName, "()F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::callStaticMethod<jdouble>(const char *className, const char *methodName) -{ - return callStaticMethod<jdouble>(className, methodName, "()D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::callStaticMethod<jdouble>(jclass clazz, const char *methodName) -{ - return callStaticMethod<jdouble>(clazz, methodName, "()D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobject>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobject>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jclass>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()Ljava/lang/Class;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jclass>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/Class;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jstring>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()Ljava/lang/String;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jstring>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/String;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobjectArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobjectArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jbooleanArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jbooleanArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jbyteArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jbyteArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jcharArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jcharArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jshortArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jshortArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jintArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jintArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jlongArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jlongArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jfloatArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jfloatArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jdoubleArray>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()[D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jdoubleArray>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()[D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jthrowable>(const char *className, - const char *methodName) -{ - return callStaticObjectMethod(className, methodName, "()Ljava/lang/Throwable;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jthrowable>(jclass clazz, - const char *methodName) -{ - return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/Throwable;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::getField<jboolean>(const char *fieldName) const -{ - return d->getField<jboolean>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::getField<jbyte>(const char *fieldName) const -{ - return d->getField<jbyte>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::getField<jchar>(const char *fieldName) const -{ - return d->getField<jchar>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::getField<jshort>(const char *fieldName) const -{ - return d->getField<jshort>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::getField<jint>(const char *fieldName) const -{ - return d->getField<jint>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::getField<jlong>(const char *fieldName) const -{ - return d->getField<jlong>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::getField<jfloat>(const char *fieldName) const -{ - return d->getField<jfloat>(fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::getField<jdouble>(const char *fieldName) const -{ - return d->getField<jdouble>(fieldName); -} - -QAndroidJniObject QAndroidJniObject::getObjectField(const char *fieldName, const char *sig) const -{ - return d->getObjectField(fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jobject>(const char *fieldName, const char *sig) const -{ - return d->getObjectField(fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jobject>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jclass>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "Ljava/lang/Class;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jbooleanArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jbyteArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jcharArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jshortArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jintArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jlongArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jfloatArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jdoubleArray>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "[D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jstring>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "Ljava/lang/String;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jthrowable>(const char *fieldName) const -{ - return d->getObjectField(fieldName, "Ljava/lang/Throwable;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getObjectField<jobjectArray>(const char *fieldName, - const char *sig) const -{ - return d->getObjectField(fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jboolean>(const char *fieldName, jboolean value) -{ - d->setField<jboolean>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jbyte>(const char *fieldName, jbyte value) -{ - d->setField<jbyte>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jchar>(const char *fieldName, jchar value) -{ - d->setField<jchar>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jshort>(const char *fieldName, jshort value) -{ - d->setField<jshort>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jint>(const char *fieldName, jint value) -{ - d->setField<jint>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jlong>(const char *fieldName, jlong value) -{ - d->setField<jlong>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jfloat>(const char *fieldName, jfloat value) -{ - d->setField<jfloat>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jdouble>(const char *fieldName, jdouble value) -{ - d->setField<jdouble>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jobject>(const char *fieldName, - const char *sig, - jobject value) -{ - d->setField<jobject>(fieldName, sig, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jobjectArray>(const char *fieldName, - const char *sig, - jobjectArray value) -{ - d->setField<jobjectArray>(fieldName, sig, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jobject>(const char *fieldName, - jobject value) -{ - setField<jobject>(fieldName, "Ljava/lang/Object;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jclass>(const char *fieldName, - jclass value) -{ - setField<jobject>(fieldName, "Ljava/lang/Class;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jstring>(const char *fieldName, jstring value) -{ - d->setField<jstring>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jbooleanArray>(const char *fieldName, jbooleanArray value) -{ - d->setField<jbooleanArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jbyteArray>(const char *fieldName, jbyteArray value) -{ - d->setField<jbyteArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jcharArray>(const char *fieldName, jcharArray value) -{ - d->setField<jcharArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jshortArray>(const char *fieldName, jshortArray value) -{ - d->setField<jshortArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jintArray>(const char *fieldName, jintArray value) -{ - d->setField<jintArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jlongArray>(const char *fieldName, jlongArray value) -{ - d->setField<jlongArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jfloatArray>(const char *fieldName, jfloatArray value) -{ - d->setField<jfloatArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jdoubleArray>(const char *fieldName, jdoubleArray value) -{ - d->setField<jdoubleArray>(fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setField<jthrowable>(const char *fieldName, jthrowable value) -{ - d->setField<jobject>(fieldName, "Ljava/lang/Throwable;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::getStaticField<jboolean>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jboolean>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jboolean QAndroidJniObject::getStaticField<jboolean>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jboolean>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::getStaticField<jbyte>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jbyte>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jbyte QAndroidJniObject::getStaticField<jbyte>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jbyte>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::getStaticField<jchar>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jchar>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jchar QAndroidJniObject::getStaticField<jchar>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jchar>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::getStaticField<jshort>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jshort>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jshort QAndroidJniObject::getStaticField<jshort>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jshort>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::getStaticField<jint>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jint>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jint QAndroidJniObject::getStaticField<jint>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jint>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::getStaticField<jlong>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jlong>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jlong QAndroidJniObject::getStaticField<jlong>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jlong>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::getStaticField<jfloat>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jfloat>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jfloat QAndroidJniObject::getStaticField<jfloat>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jfloat>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::getStaticField<jdouble>(jclass clazz, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jdouble>(clazz, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT jdouble QAndroidJniObject::getStaticField<jdouble>(const char *className, const char *fieldName) -{ - return QJNIObjectPrivate::getStaticField<jdouble>(className, fieldName); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(jclass clazz, - const char *fieldName, - const char *sig) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, sig); -} - -QAndroidJniObject QAndroidJniObject::getStaticObjectField(jclass clazz, - const char *fieldName, - const char *sig) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, sig); -} - -QAndroidJniObject QAndroidJniObject::getStaticObjectField(const char *className, - const char *fieldName, - const char *sig) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(const char *className, - const char *fieldName, - const char *sig) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(jclass clazz, - const char *fieldName, - const char *sig) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(const char *className, - const char *fieldName, - const char *sig) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jclass>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/Class;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jclass>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/Class;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jstring>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/String;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jstring>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/String;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[Ljava/lang/Object;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jbooleanArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jbooleanArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[Z"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jbyteArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[B"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jbyteArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[B");; -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jcharArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jcharArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[C"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jshortArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jshortArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[S"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jintArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jintArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[I"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jlongArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jlongArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[J"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jfloatArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jfloatArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[F"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jdoubleArray>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jdoubleArray>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[D"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jthrowable>(jclass clazz, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/Throwable;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject QAndroidJniObject::getStaticObjectField<jthrowable>(const char *className, - const char *fieldName) -{ - return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/Throwable;"); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jboolean>(jclass clazz, const char *fieldName, jboolean value) -{ - QJNIObjectPrivate::setStaticField<jboolean>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jboolean>(const char *className, - const char *fieldName, - jboolean value) -{ - QJNIObjectPrivate::setStaticField<jboolean>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jbyte>(jclass clazz, const char *fieldName, jbyte value) -{ - QJNIObjectPrivate::setStaticField<jbyte>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jbyte>(const char *className, - const char *fieldName, - jbyte value) -{ - QJNIObjectPrivate::setStaticField<jbyte>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jchar>(jclass clazz, const char *fieldName, jchar value) -{ - QJNIObjectPrivate::setStaticField<jchar>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jchar>(const char *className, - const char *fieldName, - jchar value) -{ - QJNIObjectPrivate::setStaticField<jchar>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jshort>(jclass clazz, const char *fieldName, jshort value) -{ - QJNIObjectPrivate::setStaticField<jshort>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jshort>(const char *className, - const char *fieldName, - jshort value) -{ - QJNIObjectPrivate::setStaticField<jshort>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jint>(jclass clazz, const char *fieldName, jint value) -{ - QJNIObjectPrivate::setStaticField<jint>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jint>(const char *className, const char *fieldName, jint value) -{ - QJNIObjectPrivate::setStaticField<jint>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jlong>(jclass clazz, const char *fieldName, jlong value) -{ - QJNIObjectPrivate::setStaticField<jlong>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jlong>(const char *className, - const char *fieldName, - jlong value) -{ - QJNIObjectPrivate::setStaticField<jlong>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jfloat>(jclass clazz, const char *fieldName, jfloat value) -{ - QJNIObjectPrivate::setStaticField<jfloat>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jfloat>(const char *className, - const char *fieldName, - jfloat value) -{ - QJNIObjectPrivate::setStaticField<jfloat>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jdouble>(jclass clazz, const char *fieldName, jdouble value) -{ - QJNIObjectPrivate::setStaticField<jdouble>(clazz, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jdouble>(const char *className, - const char *fieldName, - jdouble value) -{ - QJNIObjectPrivate::setStaticField<jdouble>(className, fieldName, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jobject>(jclass clazz, - const char *fieldName, - const char *sig, - jobject value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, sig, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jobject>(const char *className, - const char *fieldName, - const char *sig, - jobject value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, sig, value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jclass>(const char *className, - const char *fieldName, - jclass value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "Ljava/lang/Class;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jclass>(jclass clazz, const char *fieldName, jclass value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "Ljava/lang/Class;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jstring>(const char *className, - const char *fieldName, - jstring value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "Ljava/lang/String;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jstring>(jclass clazz, const char *fieldName, jstring value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "Ljava/lang/String;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jobjectArray>(const char *className, - const char *fieldName, - jobjectArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[Ljava/lang/Object;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jobjectArray>(jclass clazz, - const char *fieldName, - jobjectArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[Ljava/lang/Object;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jbooleanArray>(const char *className, - const char *fieldName, - jbooleanArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[Z", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jbooleanArray>(jclass clazz, - const char *fieldName, - jbooleanArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[Z", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jbyteArray>(const char *className, - const char *fieldName, - jbyteArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[B", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jbyteArray>(jclass clazz, - const char *fieldName, - jbyteArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[B", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jcharArray>(const char *className, - const char *fieldName, - jcharArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[C", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jcharArray>(jclass clazz, - const char *fieldName, - jcharArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[C", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jshortArray>(const char *className, - const char *fieldName, - jshortArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[S", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jshortArray>(jclass clazz, - const char *fieldName, - jshortArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[S", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jintArray>(const char *className, - const char *fieldName, - jintArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[I", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jintArray>(jclass clazz, - const char *fieldName, - jintArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[I", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jlongArray>(const char *className, - const char *fieldName, - jlongArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[J", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jlongArray>(jclass clazz, - const char *fieldName, - jlongArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[J", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jfloatArray>(const char *className, - const char *fieldName, - jfloatArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[F", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jfloatArray>(jclass clazz, - const char *fieldName, - jfloatArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[F", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jdoubleArray>(const char *className, - const char *fieldName, - jdoubleArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[D", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jdoubleArray>(jclass clazz, - const char *fieldName, - jdoubleArray value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[D", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jthrowable>(const char *className, - const char *fieldName, - jthrowable value) -{ - QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "Ljava/lang/Throwable;", value); -} - -template <> -Q_ANDROIDEXTRAS_EXPORT void QAndroidJniObject::setStaticField<jthrowable>(jclass clazz, - const char *fieldName, - jthrowable value) -{ - QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "Ljava/lang/Throwable;", value); -} - -QAndroidJniObject QAndroidJniObject::fromString(const QString &string) -{ - return QJNIObjectPrivate::fromString(string); -} - -QString QAndroidJniObject::toString() const -{ - return d->toString(); -} - -bool QAndroidJniObject::isClassAvailable(const char *className) -{ - return QJNIObjectPrivate::isClassAvailable(className); -} - -bool QAndroidJniObject::isValid() const -{ - return d->isValid(); -} - -QAndroidJniObject QAndroidJniObject::fromLocalRef(jobject obj) -{ - return QJNIObjectPrivate::fromLocalRef(obj); -} - -jobject QAndroidJniObject::javaObject() const -{ - return d->object(); -} - -bool QAndroidJniObject::isSameObject(jobject obj) const -{ - return d->isSameObject(obj); -} - -bool QAndroidJniObject::isSameObject(const QAndroidJniObject &obj) const -{ - return d->isSameObject(*obj.d); -} - -void QAndroidJniObject::assign(jobject o) -{ - if (d->isSameObject(o)) - return; - - d = QSharedPointer<QJNIObjectPrivate>(new QJNIObjectPrivate(o)); -} - -QT_END_NAMESPACE diff --git a/src/androidextras/jni/qandroidjniobject.h b/src/androidextras/jni/qandroidjniobject.h deleted file mode 100644 index 94bd901..0000000 --- a/src/androidextras/jni/qandroidjniobject.h +++ /dev/null @@ -1,215 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QANDROIDJNIOBJECT_H -#define QANDROIDJNIOBJECT_H - -#include <jni.h> -#include <QtAndroidExtras/qandroidextrasglobal.h> -#include <QtCore/qglobal.h> -#include <QtCore/qsharedpointer.h> - -QT_BEGIN_NAMESPACE - -class QJNIObjectPrivate; - -class Q_ANDROIDEXTRAS_EXPORT QAndroidJniObject -{ -public: - QAndroidJniObject(); - explicit QAndroidJniObject(const char *className); - explicit QAndroidJniObject(const char *className, const char *sig, ...); - explicit QAndroidJniObject(jclass clazz); - explicit QAndroidJniObject(jclass clazz, const char *sig, ...); - QAndroidJniObject(jobject obj); - ~QAndroidJniObject(); - - template <typename T> - inline T object() const { return static_cast<T>(javaObject()); } -#ifndef Q_QDOC - inline jobject object() const { return javaObject(); } -#endif // Q_QDOC - - template <typename T> - T callMethod(const char *methodName) const; - template <typename T> - T callMethod(const char *methodName, const char *sig, ...) const; - template <typename T> - QAndroidJniObject callObjectMethod(const char *methodName) const; - QAndroidJniObject callObjectMethod(const char *methodName, - const char *sig, - ...) const; - - 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 QAndroidJniObject callStaticObjectMethod(const char *className, const char *methodName); - static QAndroidJniObject 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 QAndroidJniObject callStaticObjectMethod(jclass clazz, const char *methodName); - static QAndroidJniObject callStaticObjectMethod(jclass clazz, - const char *methodName, - const char *sig, ...); - template <typename T> - T getField(const char *fieldName) const; - template <typename T> - QAndroidJniObject getObjectField(const char *fieldName) const; -#if QT_DEPRECATED_SINCE(5, 5) -# ifndef Q_QDOC - template <typename T> - QT_DEPRECATED_X("Use the non-template version instead") - QAndroidJniObject getObjectField(const char *fieldName, const char *sig) const; -# endif // Q_QDOC -#endif // QT_DEPRECATED_SINCE - QAndroidJniObject getObjectField(const char *fieldName, const char *sig) const; - 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 QAndroidJniObject getStaticObjectField(const char *className, const char *fieldName); -#if QT_DEPRECATED_SINCE(5, 5) -# ifndef Q_QDOC - template <typename T> - QT_DEPRECATED_X("Use the non-template version instead") - static QAndroidJniObject getStaticObjectField(const char *className, - const char *fieldName, - const char *sig); -# endif // Q_QDOC -#endif // QT_DEPRECATED_SINCE - static QAndroidJniObject 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 QAndroidJniObject getStaticObjectField(jclass clazz, const char *fieldName); -#if QT_DEPRECATED_SINCE(5, 5) -# ifndef Q_QDOC - template <typename T> - QT_DEPRECATED_X("Use the non-template version instead") - static QAndroidJniObject getStaticObjectField(jclass clazz, - const char *fieldName, - const char *sig); -# endif // Q_QDOC -#endif // QT_DEPRECATED_SINCE - static QAndroidJniObject 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); - - static QAndroidJniObject fromString(const QString &string); - QString toString() const; - - static bool isClassAvailable(const char *className); - bool isValid() const; - - static QAndroidJniObject fromLocalRef(jobject obj); - - template <typename T> - inline QAndroidJniObject &operator=(T o) - { - assign(static_cast<jobject>(o)); - return *this; - } - -private: - friend bool operator==(const QAndroidJniObject &, const QAndroidJniObject &); - friend bool operator!=(const QAndroidJniObject &, const QAndroidJniObject &); - template <typename T> friend bool operator!=(const QAndroidJniObject &, const QAndroidJniObject &); - template <typename T> friend bool operator==(const QAndroidJniObject &, const QAndroidJniObject &); - - QAndroidJniObject(const QJNIObjectPrivate &o); - - void assign(jobject o); - jobject javaObject() const; - bool isSameObject(jobject obj) const; - bool isSameObject(const QAndroidJniObject &obj) const; - - QSharedPointer<QJNIObjectPrivate> d; -}; - -inline bool operator==(const QAndroidJniObject &obj1, const QAndroidJniObject &obj2) -{ - return obj1.isSameObject(obj2); -} - -inline bool operator!=(const QAndroidJniObject &obj1, const QAndroidJniObject &obj2) -{ - return !obj1.isSameObject(obj2); -} - -#if QT_DEPRECATED_SINCE(5, 5) -template<typename T> -QT_DEPRECATED inline bool operator==(const QAndroidJniObject &obj1, const QAndroidJniObject &obj2) -{ - return obj1.isSameObject(obj2.object()); -} - -template <typename T> -QT_DEPRECATED inline bool operator!=(const QAndroidJniObject &obj1, const QAndroidJniObject &obj2) -{ - return !obj1.isSameObject(obj2.object()); -} -#endif // QT_DEPRECATED_SINCE - -QT_END_NAMESPACE - -#endif // QANDROIDJNIOBJECT_H |