コード例 #1
0
ファイル: bc.c プロジェクト: SinoJerk/robovm
Object* _bcCheckcastArray(Env* env, Class* arrayClass, Object* o) {
    if (!o) return o;
    ENTER;
    jboolean b = rvmIsAssignableFrom(env, o->clazz, arrayClass);
    if (!rvmExceptionCheck(env) && !b) {
        rvmThrowClassCastException(env, arrayClass, o->clazz);
    }
    LEAVE(o);
}
コード例 #2
0
ファイル: class.c プロジェクト: John-Chan/robovm
jboolean rvmUnboxChar(Env* env, Object* arg, jvalue* value) {
    if (!arg) {
        rvmThrowNullPointerException(env);
        return FALSE;
    }
    if (arg->clazz != java_lang_Character) {
        rvmThrowClassCastException(env, java_lang_Character, arg->clazz);
        return FALSE;
    }
    value->c = ((Character*) arg)->value;
    return TRUE;
}
コード例 #3
0
ファイル: bc.c プロジェクト: SinoJerk/robovm
Object* _bcCheckcast(Env* env, ClassInfoHeader* header, Object* o) {
    if (!o) return o;
    ENTER;
    Class* clazz = ldcClass(env, header);
    if (clazz) {
        jboolean b = rvmIsAssignableFrom(env, o->clazz, clazz);
        if (!rvmExceptionCheck(env) && !b) {
            rvmThrowClassCastException(env, clazz, o->clazz);
        }
    }
    LEAVE(o);
}
コード例 #4
0
ファイル: class.c プロジェクト: John-Chan/robovm
jboolean rvmUnboxByte(Env* env, Object* arg, jvalue* value) {
    if (!arg) {
        rvmThrowNullPointerException(env);
        return FALSE;
    }
    if (arg->clazz != java_lang_Byte) {
        rvmThrowClassCastException(env, java_lang_Byte, arg->clazz);
        return FALSE;
    }
    value->b = ((Byte*) arg)->value;
    return TRUE;
}
コード例 #5
0
ファイル: class.c プロジェクト: John-Chan/robovm
jboolean rvmUnboxFloat(Env* env, Object* arg, jvalue* value) {
    if (!arg) {
        rvmThrowNullPointerException(env);
        return FALSE;
    }
    if (arg->clazz != java_lang_Float) {
        if (rvmUnboxLong(env, arg, value)) {
            value->f = value->j;
            return TRUE;
        } else {
            rvmExceptionClear(env);
        }
        rvmThrowClassCastException(env, java_lang_Float, arg->clazz);
        return FALSE;
    }
    value->f = ((Float*) arg)->value;
    return TRUE;
}
コード例 #6
0
ファイル: class.c プロジェクト: John-Chan/robovm
jboolean rvmUnboxInt(Env* env, Object* arg, jvalue* value) {
    if (!arg) {
        rvmThrowNullPointerException(env);
        return FALSE;
    }
    if (arg->clazz != java_lang_Integer) {
        if (rvmUnboxShort(env, arg, value)) {
            value->i = value->s;
            return TRUE;
        } else {
            rvmExceptionClear(env);
        }
        rvmThrowClassCastException(env, java_lang_Integer, arg->clazz);
        return FALSE;
    }
    value->i = ((Integer*) arg)->value;
    return TRUE;
}
コード例 #7
0
ファイル: bc.c プロジェクト: SinoJerk/robovm
void _bcThrowClassCastExceptionArray(Env* env, Class* arrayClass, Object* o) {
    ENTER;
    rvmThrowClassCastException(env, arrayClass, o->clazz);
    LEAVEV;
}
コード例 #8
0
ファイル: bc.c プロジェクト: SinoJerk/robovm
void _bcThrowClassCastException(Env* env, ClassInfoHeader* header, Object* o) {
    ENTER;
    Class* clazz = ldcClass(env, header);
    rvmThrowClassCastException(env, clazz, o->clazz);
    LEAVEV;
}