unix/modjni: array(): Support creation of object arrays.

esp8266-idle-ticks
Paul Sokolovsky 2016-09-18 13:37:40 +03:00
parent d08c9d342f
commit 5bf1b4e9d9
1 changed files with 36 additions and 28 deletions

View File

@ -655,13 +655,19 @@ STATIC mp_obj_t mod_jni_cls(mp_obj_t cls_name_in) {
MP_DEFINE_CONST_FUN_OBJ_1(mod_jni_cls_obj, mod_jni_cls);
STATIC mp_obj_t mod_jni_array(mp_obj_t type_in, mp_obj_t size_in) {
const char *type = mp_obj_str_get_str(type_in);
mp_int_t size = mp_obj_get_int(size_in);
if (!env) {
create_jvm();
}
mp_int_t size = mp_obj_get_int(size_in);
jobject res = NULL;
if (MP_OBJ_IS_TYPE(type_in, &jclass_type)) {
mp_obj_jclass_t *jcls = type_in;
res = JJ(NewObjectArray, size, jcls->cls, NULL);
} else if (MP_OBJ_IS_STR(type_in)) {
const char *type = mp_obj_str_get_str(type_in);
switch (*type) {
case 'Z':
res = JJ(NewBooleanArray, size);
@ -689,6 +695,8 @@ STATIC mp_obj_t mod_jni_array(mp_obj_t type_in, mp_obj_t size_in) {
break;
}
}
return new_jobject(res);
}
MP_DEFINE_CONST_FUN_OBJ_2(mod_jni_array_obj, mod_jni_array);