diff options
| author | 2011-09-23 14:49:35 -0700 | |
|---|---|---|
| committer | 2011-09-23 14:49:35 -0700 | |
| commit | 382ece5707c7b7c61f44a01f57ac22df9a8197d0 (patch) | |
| tree | 1a881a51db58dbec2ffa7661b716797aabeae3ff /src | |
| parent | 4a801a4f0138a3a4a5a7615af567c5755abe0d7a (diff) | |
| parent | dd8df69d5f6fcd8de424fa25484d698f9e614526 (diff) | |
Merge "Class.isAssignableFrom and Class.isInstance." into dalvik-dev
Diffstat (limited to 'src')
| -rw-r--r-- | src/java_lang_Class.cc | 23 |
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;"), |