diff options
| author | John R. Lenton | 2014-01-05 01:57:54 +0000 |
|---|---|---|
| committer | John R. Lenton | 2014-01-05 01:57:54 +0000 |
| commit | 7e73a8fd09a8070a3bbb90d2ddc4f04af4e2828a (patch) | |
| tree | 606e074a1955f381c68d1689946066e9eb1a5a47 /py/objtype.c | |
| parent | 5d4a8213395b1e27d303379772c90b3b0adc82d5 (diff) | |
| parent | 45b43c21c4f8e30dcff00c2429eddba20ca002aa (diff) | |
Merge remote-tracking branch 'upstream/master' into list_index
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 83ae48d2d..aeeaebb95 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 |
