unix/modjni: Factor out is_object_type().
This commit is contained in:
parent
941040e9e8
commit
e632b1fda7
@ -77,6 +77,18 @@ typedef struct _mp_obj_jmethod_t {
|
|||||||
bool is_static;
|
bool is_static;
|
||||||
} mp_obj_jmethod_t;
|
} mp_obj_jmethod_t;
|
||||||
|
|
||||||
|
// Utility functions
|
||||||
|
|
||||||
|
STATIC bool is_object_type(const char *jtypesig) {
|
||||||
|
while (*jtypesig != ' ' && *jtypesig) {
|
||||||
|
if (*jtypesig == '.') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
jtypesig++;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// jclass
|
// jclass
|
||||||
|
|
||||||
STATIC void jclass_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
STATIC void jclass_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
|
||||||
@ -281,24 +293,18 @@ STATIC bool py2jvalue(const char **jtypesig, mp_obj_t arg, jvalue *out) {
|
|||||||
// it.
|
// it.
|
||||||
#define MATCH(s, static) (!strncmp(s, static, sizeof(static) - 1))
|
#define MATCH(s, static) (!strncmp(s, static, sizeof(static) - 1))
|
||||||
STATIC mp_obj_t jvalue2py(const char *jtypesig, jobject arg) {
|
STATIC mp_obj_t jvalue2py(const char *jtypesig, jobject arg) {
|
||||||
const char *org_jtype = jtypesig;
|
|
||||||
if (arg == NULL || MATCH(jtypesig, "void")) {
|
if (arg == NULL || MATCH(jtypesig, "void")) {
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
} else if (MATCH(jtypesig, "boolean")) {
|
} else if (MATCH(jtypesig, "boolean")) {
|
||||||
return mp_obj_new_bool((bool)arg);
|
return mp_obj_new_bool((bool)arg);
|
||||||
} else if (MATCH(jtypesig, "int")) {
|
} else if (MATCH(jtypesig, "int")) {
|
||||||
return mp_obj_new_int((mp_int_t)arg);
|
return mp_obj_new_int((mp_int_t)arg);
|
||||||
} else {
|
} else if (is_object_type(jtypesig)) {
|
||||||
while (*jtypesig != ' ' && *jtypesig) {
|
|
||||||
if (*jtypesig == '.') {
|
|
||||||
// Non-primitive, object type
|
// Non-primitive, object type
|
||||||
return new_jobject(arg);
|
return new_jobject(arg);
|
||||||
}
|
}
|
||||||
jtypesig++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Unknown return type: %s\n", org_jtype);
|
printf("Unknown return type: %s\n", jtypesig);
|
||||||
|
|
||||||
return MP_OBJ_NULL;
|
return MP_OBJ_NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user