diff options
author | John R. Lenton <jlenton@gmail.com> | 2014-01-05 22:29:03 +0000 |
---|---|---|
committer | John R. Lenton <jlenton@gmail.com> | 2014-01-05 22:29:03 +0000 |
commit | ba3f87c94776538fece5e87ff1d7de547930397a (patch) | |
tree | 3112b328cff278168a1ef48fc37a65778ea9324a /py/objtype.c | |
parent | 6e1e98f8648d327098a03ce8d175c9854dd06cc8 (diff) | |
parent | 12e2656472bf53e467c066eda6f3e177a97210ca (diff) | |
download | micropython-ba3f87c94776538fece5e87ff1d7de547930397a.tar.gz micropython-ba3f87c94776538fece5e87ff1d7de547930397a.zip |
Merge remote-tracking branch 'upstream/master' into list_reverse
Diffstat (limited to 'py/objtype.c')
-rw-r--r-- | py/objtype.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/py/objtype.c b/py/objtype.c index 83ae48d2d1..aeeaebb95d 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -4,17 +4,30 @@ #include "nlr.h" #include "misc.h" #include "mpconfig.h" +#include "mpqstr.h" #include "obj.h" -void type_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t self_in) { - print(env, "<a type>"); +static void type_print(void (*print)(void *env, const char *fmt, ...), void *env, mp_obj_t self_in) { + mp_obj_type_t *self = self_in; + print(env, "<class '%s'>", self->name); +} + +static mp_obj_t type_call_n(mp_obj_t self_in, int n_args, const mp_obj_t *args) { + mp_obj_type_t *self = self_in; + if (self->make_new != NULL) { + // TODO we need to init the object if it's an instance of a type + return self->make_new(self, n_args, args); + } else { + nlr_jump(mp_obj_new_exception_msg_1_arg(MP_QSTR_TypeError, "cannot create '%s' instances", self->name)); + } } const mp_obj_type_t mp_const_type = { { &mp_const_type }, - "<a type>", + "type", type_print, // print - NULL, // call_n + NULL, // make_new + type_call_n, // call_n NULL, // unary_op NULL, // binary_op NULL, // getiter |