mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-20 01:08:15 +01:00
Update MicroPython from 1.12 to 1.17
This commit is contained in:
@@ -49,8 +49,8 @@ STATIC mp_obj_t object___init__(mp_obj_t self) {
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(object___init___obj, object___init__);
|
||||
|
||||
STATIC mp_obj_t object___new__(mp_obj_t cls) {
|
||||
if (!mp_obj_is_type(cls, &mp_type_type) || !mp_obj_is_instance_type((mp_obj_type_t*)MP_OBJ_TO_PTR(cls))) {
|
||||
mp_raise_TypeError("__new__ arg must be a user-type");
|
||||
if (!mp_obj_is_type(cls, &mp_type_type) || !mp_obj_is_instance_type((mp_obj_type_t *)MP_OBJ_TO_PTR(cls))) {
|
||||
mp_raise_TypeError(MP_ERROR_TEXT("arg must be user-type"));
|
||||
}
|
||||
// This executes only "__new__" part of instance creation.
|
||||
// TODO: This won't work well for classes with native bases.
|
||||
@@ -62,6 +62,40 @@ STATIC mp_obj_t object___new__(mp_obj_t cls) {
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(object___new___fun_obj, object___new__);
|
||||
STATIC MP_DEFINE_CONST_STATICMETHOD_OBJ(object___new___obj, MP_ROM_PTR(&object___new___fun_obj));
|
||||
|
||||
#if MICROPY_PY_DELATTR_SETATTR
|
||||
STATIC mp_obj_t object___setattr__(mp_obj_t self_in, mp_obj_t attr, mp_obj_t value) {
|
||||
if (!mp_obj_is_instance_type(mp_obj_get_type(self_in))) {
|
||||
mp_raise_TypeError(MP_ERROR_TEXT("arg must be user-type"));
|
||||
}
|
||||
|
||||
if (!mp_obj_is_str(attr)) {
|
||||
mp_raise_TypeError(NULL);
|
||||
}
|
||||
|
||||
mp_obj_instance_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
mp_map_lookup(&self->members, attr, MP_MAP_LOOKUP_ADD_IF_NOT_FOUND)->value = value;
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(object___setattr___obj, object___setattr__);
|
||||
|
||||
STATIC mp_obj_t object___delattr__(mp_obj_t self_in, mp_obj_t attr) {
|
||||
if (!mp_obj_is_instance_type(mp_obj_get_type(self_in))) {
|
||||
mp_raise_TypeError(MP_ERROR_TEXT("arg must be user-type"));
|
||||
}
|
||||
|
||||
if (!mp_obj_is_str(attr)) {
|
||||
mp_raise_TypeError(NULL);
|
||||
}
|
||||
|
||||
mp_obj_instance_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
if (mp_map_lookup(&self->members, attr, MP_MAP_LOOKUP_REMOVE_IF_FOUND) == NULL) {
|
||||
mp_raise_msg(&mp_type_AttributeError, MP_ERROR_TEXT("no such attribute"));
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(object___delattr___obj, object___delattr__);
|
||||
#endif
|
||||
|
||||
STATIC const mp_rom_map_elem_t object_locals_dict_table[] = {
|
||||
#if MICROPY_CPYTHON_COMPAT
|
||||
{ MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&object___init___obj) },
|
||||
@@ -69,6 +103,10 @@ STATIC const mp_rom_map_elem_t object_locals_dict_table[] = {
|
||||
#if MICROPY_CPYTHON_COMPAT
|
||||
{ MP_ROM_QSTR(MP_QSTR___new__), MP_ROM_PTR(&object___new___obj) },
|
||||
#endif
|
||||
#if MICROPY_PY_DELATTR_SETATTR
|
||||
{ MP_ROM_QSTR(MP_QSTR___setattr__), MP_ROM_PTR(&object___setattr___obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___delattr__), MP_ROM_PTR(&object___delattr___obj) },
|
||||
#endif
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(object_locals_dict, object_locals_dict_table);
|
||||
@@ -79,6 +117,6 @@ const mp_obj_type_t mp_type_object = {
|
||||
.name = MP_QSTR_object,
|
||||
.make_new = object_make_new,
|
||||
#if MICROPY_CPYTHON_COMPAT
|
||||
.locals_dict = (mp_obj_dict_t*)&object_locals_dict,
|
||||
.locals_dict = (mp_obj_dict_t *)&object_locals_dict,
|
||||
#endif
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user