aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@theqtcompany.com>2014-12-03 17:49:08 +0100
committerChristian Stromme <christian.stromme@theqtcompany.com>2015-01-11 23:19:30 +0100
commitd57cef7332c8b0669b469202b9f5e5e2dab5387f (patch)
tree4c89971715c3e6e369c417479c2b33981811b40c /src
parent211e92a604bb617ed08ef6324adb191fc7221ef6 (diff)
Android: Add more convenience types to QAndroidJniObject.
This change adds more convenience methods for jclass, jobject, jthrowable etc. while some of them don't add much value, they should be included for completeness. [ChangeLog][QAndroidJniObject] Added convenience functions for jclass, jobject, jobjectArray and jthrowable Change-Id: I46099f21b7806a22a8a539a1e91535ed61e395bb Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/androidextras/jni/qandroidjniobject.cpp306
1 files changed, 267 insertions, 39 deletions
diff --git a/src/androidextras/jni/qandroidjniobject.cpp b/src/androidextras/jni/qandroidjniobject.cpp
index ff1d563..587d508 100644
--- a/src/androidextras/jni/qandroidjniobject.cpp
+++ b/src/androidextras/jni/qandroidjniobject.cpp
@@ -148,14 +148,19 @@ QT_BEGIN_NAMESPACE
\li Signature
\row
\li jobject
- \li {1, 3} L\e<fully-qualified-name>;
+ \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 [L\e<fully-qualified-name>;
+ \li [Ljava/lang/Object;
\row
\li jarray
\li [\e<type>
@@ -225,6 +230,9 @@ QT_BEGIN_NAMESPACE
\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
@@ -909,12 +917,30 @@ jdouble QAndroidJniObject::callMethod<jdouble>(const char *methodName) const
}
template <>
+QAndroidJniObject QAndroidJniObject::callObjectMethod<jobject>(const char *methodName) const
+{
+ return d->callObjectMethod(methodName, "()Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::callObjectMethod<jclass>(const char *methodName) const
+{
+ return d->callObjectMethod(methodName, "()Ljava/lang/Class;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::callObjectMethod<jstring>(const char *methodName) const
{
return d->callObjectMethod(methodName, "()Ljava/lang/String;");
}
template <>
+QAndroidJniObject QAndroidJniObject::callObjectMethod<jobjectArray>(const char *methodName) const
+{
+ return d->callObjectMethod(methodName, "()[Ljava/lang/Object;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::callObjectMethod<jbooleanArray>(const char *methodName) const
{
return d->callObjectMethod(methodName, "()[Z");
@@ -963,6 +989,12 @@ QAndroidJniObject QAndroidJniObject::callObjectMethod<jdoubleArray>(const char *
}
template <>
+QAndroidJniObject QAndroidJniObject::callObjectMethod<jthrowable>(const char *methodName) const
+{
+ return d->callObjectMethod(methodName, "()Ljava/lang/Throwable;");
+}
+
+template <>
void QAndroidJniObject::callStaticMethod<void>(const char *className,
const char *methodName,
const char *sig,
@@ -1331,6 +1363,34 @@ jdouble QAndroidJniObject::callStaticMethod<jdouble>(jclass clazz, const char *m
}
template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobject>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod(className, methodName, "()Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobject>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jclass>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod(className, methodName, "()Ljava/lang/Class;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jclass>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/Class;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jstring>(const char *className,
const char *methodName)
{
@@ -1345,6 +1405,20 @@ QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jstring>(jclass claz
}
template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobjectArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod(className, methodName, "()[Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jobjectArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod(clazz, methodName, "()[Ljava/lang/Object;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jbooleanArray>(const char *className,
const char *methodName)
{
@@ -1457,6 +1531,20 @@ QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jdoubleArray>(jclass
}
template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jthrowable>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod(className, methodName, "()Ljava/lang/Throwable;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::callStaticObjectMethod<jthrowable>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/Throwable;");
+}
+
+template <>
jboolean QAndroidJniObject::getField<jboolean>(const char *fieldName) const
{
return d->getField<jboolean>(fieldName);
@@ -1516,6 +1604,18 @@ QAndroidJniObject QAndroidJniObject::getObjectField<jobject>(const char *fieldNa
}
template <>
+QAndroidJniObject QAndroidJniObject::getObjectField<jobject>(const char *fieldName) const
+{
+ return d->getObjectField(fieldName, "Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::getObjectField<jclass>(const char *fieldName) const
+{
+ return d->getObjectField(fieldName, "Ljava/lang/Class;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::getObjectField<jbooleanArray>(const char *fieldName) const
{
return d->getObjectField(fieldName, "[Z");
@@ -1570,6 +1670,12 @@ QAndroidJniObject QAndroidJniObject::getObjectField<jstring>(const char *fieldNa
}
template <>
+QAndroidJniObject QAndroidJniObject::getObjectField<jthrowable>(const char *fieldName) const
+{
+ return d->getObjectField(fieldName, "Ljava/lang/Throwable;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::getObjectField<jobjectArray>(const char *fieldName,
const char *sig) const
{
@@ -1625,6 +1731,42 @@ void QAndroidJniObject::setField<jdouble>(const char *fieldName, jdouble value)
}
template <>
+void QAndroidJniObject::setField<jobject>(const char *fieldName,
+ const char *sig,
+ jobject value)
+{
+ d->setField<jobject>(fieldName, sig, value);
+}
+
+template <>
+void QAndroidJniObject::setField<jobjectArray>(const char *fieldName,
+ const char *sig,
+ jobjectArray value)
+{
+ d->setField<jobjectArray>(fieldName, sig, value);
+}
+
+template <>
+void QAndroidJniObject::setField<jobject>(const char *fieldName,
+ jobject value)
+{
+ setField<jobject>(fieldName, "Ljava/lang/Object;", value);
+}
+
+template <>
+void QAndroidJniObject::setField<jclass>(const char *fieldName,
+ jclass value)
+{
+ setField<jobject>(fieldName, "Ljava/lang/Class;", value);
+}
+
+template <>
+void QAndroidJniObject::setField<jstring>(const char *fieldName, jstring value)
+{
+ d->setField<jstring>(fieldName, value);
+}
+
+template <>
void QAndroidJniObject::setField<jbooleanArray>(const char *fieldName, jbooleanArray value)
{
d->setField<jbooleanArray>(fieldName, value);
@@ -1673,25 +1815,9 @@ void QAndroidJniObject::setField<jdoubleArray>(const char *fieldName, jdoubleArr
}
template <>
-void QAndroidJniObject::setField<jstring>(const char *fieldName, jstring value)
+void QAndroidJniObject::setField<jthrowable>(const char *fieldName, jthrowable value)
{
- d->setField<jstring>(fieldName, value);
-}
-
-template <>
-void QAndroidJniObject::setField<jobject>(const char *fieldName,
- const char *sig,
- jobject value)
-{
- d->setField<jobject>(fieldName, sig, value);
-}
-
-template <>
-void QAndroidJniObject::setField<jobjectArray>(const char *fieldName,
- const char *sig,
- jobjectArray value)
-{
- d->setField<jobjectArray>(fieldName, sig, value);
+ d->setField<jobject>(fieldName, "Ljava/lang/Throwable;", value);
}
template <>
@@ -1790,6 +1916,14 @@ jdouble QAndroidJniObject::getStaticField<jdouble>(const char *className, const
return QJNIObjectPrivate::getStaticField<jdouble>(className, fieldName);
}
+template <>
+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)
@@ -1797,23 +1931,66 @@ QAndroidJniObject QAndroidJniObject::getStaticObjectField(jclass clazz,
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 <>
-QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(jclass clazz,
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(const char *className,
const char *fieldName,
const char *sig)
{
+ return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig);
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(jclass clazz,
+ const char *fieldName,
+ const char *sig)
+{
return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, sig);
}
template <>
-QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(const char *className,
- const char *fieldName,
- const char *sig)
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(const char *className,
+ const char *fieldName,
+ const char *sig)
{
return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig);
}
template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(jclass clazz,
+ const char *fieldName)
+{
+ return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobject>(const char *className,
+ const char *fieldName)
+{
+ return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jclass>(jclass clazz,
+ const char *fieldName)
+{
+ return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/Class;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jclass>(const char *className,
+ const char *fieldName)
+{
+ return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/Class;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::getStaticObjectField<jstring>(jclass clazz,
const char *fieldName)
{
@@ -1828,6 +2005,20 @@ QAndroidJniObject QAndroidJniObject::getStaticObjectField<jstring>(const char *c
}
template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(jclass clazz,
+ const char *fieldName)
+{
+ return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "[Ljava/lang/Object;");
+}
+
+template <>
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(const char *className,
+ const char *fieldName)
+{
+ return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[Ljava/lang/Object;");
+}
+
+template <>
QAndroidJniObject QAndroidJniObject::getStaticObjectField<jbooleanArray>(jclass clazz,
const char *fieldName)
{
@@ -1939,27 +2130,18 @@ QAndroidJniObject QAndroidJniObject::getStaticObjectField<jdoubleArray>(const ch
return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "[D");
}
-QAndroidJniObject QAndroidJniObject::getStaticObjectField(const char *className,
- const char *fieldName,
- const char *sig)
-{
- return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig);
-}
-
template <>
-QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(jclass clazz,
- const char *fieldName,
- const char *sig)
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jthrowable>(jclass clazz,
+ const char *fieldName)
{
- return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, sig);
+ return QJNIObjectPrivate::getStaticObjectField(clazz, fieldName, "Ljava/lang/Throwable;");
}
template <>
-QAndroidJniObject QAndroidJniObject::getStaticObjectField<jobjectArray>(const char *className,
- const char *fieldName,
- const char *sig)
+QAndroidJniObject QAndroidJniObject::getStaticObjectField<jthrowable>(const char *className,
+ const char *fieldName)
{
- return QJNIObjectPrivate::getStaticObjectField(className, fieldName, sig);
+ return QJNIObjectPrivate::getStaticObjectField(className, fieldName, "Ljava/lang/Throwable;");
}
template <>
@@ -2091,6 +2273,20 @@ void QAndroidJniObject::setStaticField<jobject>(const char *className,
}
template <>
+void QAndroidJniObject::setStaticField<jclass>(const char *className,
+ const char *fieldName,
+ jclass value)
+{
+ QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "Ljava/lang/Class;", value);
+}
+
+template <>
+void QAndroidJniObject::setStaticField<jclass>(jclass clazz, const char *fieldName, jclass value)
+{
+ QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "Ljava/lang/Class;", value);
+}
+
+template <>
void QAndroidJniObject::setStaticField<jstring>(const char *className,
const char *fieldName,
jstring value)
@@ -2105,6 +2301,22 @@ void QAndroidJniObject::setStaticField<jstring>(jclass clazz, const char *fieldN
}
template <>
+void QAndroidJniObject::setStaticField<jobjectArray>(const char *className,
+ const char *fieldName,
+ jobjectArray value)
+{
+ QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "[Ljava/lang/Object;", value);
+}
+
+template <>
+void QAndroidJniObject::setStaticField<jobjectArray>(jclass clazz,
+ const char *fieldName,
+ jobjectArray value)
+{
+ QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[Ljava/lang/Object;", value);
+}
+
+template <>
void QAndroidJniObject::setStaticField<jbooleanArray>(const char *className,
const char *fieldName,
jbooleanArray value)
@@ -2232,6 +2444,22 @@ void QAndroidJniObject::setStaticField<jdoubleArray>(jclass clazz,
QJNIObjectPrivate::setStaticField<jobject>(clazz, fieldName, "[D", value);
}
+template <>
+void QAndroidJniObject::setStaticField<jthrowable>(const char *className,
+ const char *fieldName,
+ jthrowable value)
+{
+ QJNIObjectPrivate::setStaticField<jobject>(className, fieldName, "Ljava/lang/Throwable;", value);
+}
+
+template <>
+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);