summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Elliott Hughes <enh@google.com> 2011-09-23 14:49:35 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-09-23 14:49:35 -0700
commit382ece5707c7b7c61f44a01f57ac22df9a8197d0 (patch)
tree1a881a51db58dbec2ffa7661b716797aabeae3ff /src
parent4a801a4f0138a3a4a5a7615af567c5755abe0d7a (diff)
parentdd8df69d5f6fcd8de424fa25484d698f9e614526 (diff)
Merge "Class.isAssignableFrom and Class.isInstance." into dalvik-dev
Diffstat (limited to 'src')
-rw-r--r--src/java_lang_Class.cc23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/java_lang_Class.cc b/src/java_lang_Class.cc
index 69ad9104a7..ec0b0edf15 100644
--- a/src/java_lang_Class.cc
+++ b/src/java_lang_Class.cc
@@ -198,6 +198,25 @@ jboolean Class_isAnonymousClass(JNIEnv* env, jobject javaThis) {
return JNI_FALSE;
}
+jboolean Class_isAssignableFrom(JNIEnv* env, jobject javaLhs, jclass javaRhs) {
+ Class* lhs = Decode<Class*>(env, javaLhs);
+ Class* rhs = Decode<Class*>(env, javaRhs);
+ if (rhs == NULL) {
+ Thread::Current()->ThrowNewException("Ljava/lang/NullPointerException;", "class == null");
+ return JNI_FALSE;
+ }
+ return lhs->IsAssignableFrom(rhs) ? JNI_TRUE : JNI_FALSE;
+}
+
+jboolean Class_isInstance(JNIEnv* env, jobject javaClass, jobject javaObject) {
+ Class* c = Decode<Class*>(env, javaClass);
+ Object* o = Decode<Object*>(env, javaObject);
+ if (o == NULL) {
+ return JNI_FALSE;
+ }
+ return Object::InstanceOf(o, c) ? JNI_TRUE : JNI_FALSE;
+}
+
jboolean Class_isInterface(JNIEnv* env, jobject javaThis) {
Class* c = Decode<Class*>(env, javaThis);
return c->IsInterface();
@@ -320,8 +339,8 @@ static JNINativeMethod gMethods[] = {
NATIVE_METHOD(Class, getNameNative, "()Ljava/lang/String;"),
NATIVE_METHOD(Class, getSuperclass, "()Ljava/lang/Class;"),
NATIVE_METHOD(Class, isAnonymousClass, "()Z"),
- //NATIVE_METHOD(Class, isAssignableFrom, "(Ljava/lang/Class;)Z"),
- //NATIVE_METHOD(Class, isInstance, "(Ljava/lang/Object;)Z"),
+ NATIVE_METHOD(Class, isAssignableFrom, "(Ljava/lang/Class;)Z"),
+ NATIVE_METHOD(Class, isInstance, "(Ljava/lang/Object;)Z"),
NATIVE_METHOD(Class, isInterface, "()Z"),
NATIVE_METHOD(Class, isPrimitive, "()Z"),
NATIVE_METHOD(Class, newInstanceImpl, "()Ljava/lang/Object;"),