Skip to content

Commit 3ec0a1a

Browse files
committed
py: Add 'object' object.
1 parent eabdf67 commit 3ec0a1a

5 files changed

Lines changed: 39 additions & 0 deletions

File tree

py/obj.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,9 @@ mp_obj_t *mp_obj_get_array_fixed_n(mp_obj_t o, machine_int_t n);
315315
uint mp_get_index(const mp_obj_type_t *type, machine_uint_t len, mp_obj_t index, bool is_slice);
316316
mp_obj_t mp_obj_len_maybe(mp_obj_t o_in); /* may return NULL */
317317

318+
// object
319+
extern const mp_obj_type_t mp_type_object;
320+
318321
// none
319322
extern const mp_obj_type_t none_type;
320323

py/objobject.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include <stdlib.h>
2+
3+
#include "nlr.h"
4+
#include "misc.h"
5+
#include "mpconfig.h"
6+
#include "qstr.h"
7+
#include "obj.h"
8+
#include "runtime0.h"
9+
10+
typedef struct _mp_obj_object_t {
11+
mp_obj_base_t base;
12+
} mp_obj_object_t;
13+
14+
const mp_obj_type_t mp_type_object;
15+
16+
STATIC mp_obj_t object_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp_obj_t *args) {
17+
if (n_args != 0 || n_kw != 0) {
18+
nlr_jump(mp_obj_new_exception_msg(&mp_type_TypeError, "object takes no arguments"));
19+
}
20+
21+
mp_obj_object_t *o = m_new_obj(mp_obj_object_t);
22+
o->base.type = &mp_type_object;
23+
return o;
24+
}
25+
26+
const mp_obj_type_t mp_type_object = {
27+
{ &mp_type_type },
28+
.name = MP_QSTR_object,
29+
.make_new = object_make_new,
30+
};

py/py.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ PY_O_BASENAME = \
5858
objlist.o \
5959
objmap.o \
6060
objmodule.o \
61+
objobject.o \
6162
objnone.o \
6263
objnamedtuple.o \
6364
objrange.o \

py/qstrdefs.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ Q(ValueError)
9191
Q(Warning)
9292
Q(ZeroDivisionError)
9393

94+
Q(None)
95+
Q(False)
96+
Q(True)
97+
Q(object)
9498

9599
Q(NoneType)
96100

py/runtime.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ STATIC const mp_builtin_elem_t builtin_table[] = {
104104
{ MP_QSTR_int, (mp_obj_t)&int_type },
105105
{ MP_QSTR_list, (mp_obj_t)&list_type },
106106
{ MP_QSTR_map, (mp_obj_t)&map_type },
107+
{ MP_QSTR_object, (mp_obj_t)&mp_type_object },
107108
{ MP_QSTR_set, (mp_obj_t)&set_type },
108109
{ MP_QSTR_str, (mp_obj_t)&str_type },
109110
{ MP_QSTR_super, (mp_obj_t)&super_type },

0 commit comments

Comments
 (0)