|
|
|
@ -332,7 +332,7 @@ mp_obj_t mp_obj_instance_make_new(const mp_obj_type_t *self, size_t n_args, size
|
|
|
|
|
return MP_OBJ_FROM_PTR(o);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const uint16_t mp_unary_op_method_name[] = {
|
|
|
|
|
const uint16_t mp_unary_op_method_name[MP_UNARY_OP_NUM_RUNTIME] = {
|
|
|
|
|
[MP_UNARY_OP_BOOL] = MP_QSTR___bool__,
|
|
|
|
|
[MP_UNARY_OP_LEN] = MP_QSTR___len__,
|
|
|
|
|
[MP_UNARY_OP_HASH] = MP_QSTR___hash__,
|
|
|
|
@ -344,7 +344,6 @@ const uint16_t mp_unary_op_method_name[] = {
|
|
|
|
|
#if MICROPY_PY_SYS_GETSIZEOF
|
|
|
|
|
[MP_UNARY_OP_SIZEOF] = MP_QSTR_getsizeof,
|
|
|
|
|
#endif
|
|
|
|
|
[MP_UNARY_OP_NOT] = MP_QSTR_, // don't need to implement this, used to make sure array has full size
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t instance_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
|
|
|
|
@ -406,14 +405,23 @@ STATIC mp_obj_t instance_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const uint16_t mp_binary_op_method_name[] = {
|
|
|
|
|
/*
|
|
|
|
|
MP_BINARY_OP_OR,
|
|
|
|
|
MP_BINARY_OP_XOR,
|
|
|
|
|
MP_BINARY_OP_AND,
|
|
|
|
|
MP_BINARY_OP_LSHIFT,
|
|
|
|
|
MP_BINARY_OP_RSHIFT,
|
|
|
|
|
*/
|
|
|
|
|
// Binary-op enum values not listed here will have the default value of 0 in the
|
|
|
|
|
// table, corresponding to MP_QSTR_, and are therefore unsupported (a lookup will
|
|
|
|
|
// fail). They can be added at the expense of code size for the qstr.
|
|
|
|
|
const uint16_t mp_binary_op_method_name[MP_BINARY_OP_NUM_RUNTIME] = {
|
|
|
|
|
[MP_BINARY_OP_LESS] = MP_QSTR___lt__,
|
|
|
|
|
[MP_BINARY_OP_MORE] = MP_QSTR___gt__,
|
|
|
|
|
[MP_BINARY_OP_EQUAL] = MP_QSTR___eq__,
|
|
|
|
|
[MP_BINARY_OP_LESS_EQUAL] = MP_QSTR___le__,
|
|
|
|
|
[MP_BINARY_OP_MORE_EQUAL] = MP_QSTR___ge__,
|
|
|
|
|
// MP_BINARY_OP_NOT_EQUAL, // a != b calls a == b and inverts result
|
|
|
|
|
[MP_BINARY_OP_IN] = MP_QSTR___contains__,
|
|
|
|
|
|
|
|
|
|
#if MICROPY_PY_ALL_SPECIAL_METHODS
|
|
|
|
|
[MP_BINARY_OP_INPLACE_ADD] = MP_QSTR___iadd__,
|
|
|
|
|
[MP_BINARY_OP_INPLACE_SUBTRACT] = MP_QSTR___isub__,
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
[MP_BINARY_OP_ADD] = MP_QSTR___add__,
|
|
|
|
|
[MP_BINARY_OP_SUBTRACT] = MP_QSTR___sub__,
|
|
|
|
|
#if MICROPY_PY_ALL_SPECIAL_METHODS
|
|
|
|
@ -421,44 +429,12 @@ const uint16_t mp_binary_op_method_name[] = {
|
|
|
|
|
[MP_BINARY_OP_FLOOR_DIVIDE] = MP_QSTR___floordiv__,
|
|
|
|
|
[MP_BINARY_OP_TRUE_DIVIDE] = MP_QSTR___truediv__,
|
|
|
|
|
#endif
|
|
|
|
|
/*
|
|
|
|
|
MP_BINARY_OP_MODULO,
|
|
|
|
|
MP_BINARY_OP_POWER,
|
|
|
|
|
MP_BINARY_OP_DIVMOD,
|
|
|
|
|
MP_BINARY_OP_INPLACE_OR,
|
|
|
|
|
MP_BINARY_OP_INPLACE_XOR,
|
|
|
|
|
MP_BINARY_OP_INPLACE_AND,
|
|
|
|
|
MP_BINARY_OP_INPLACE_LSHIFT,
|
|
|
|
|
MP_BINARY_OP_INPLACE_RSHIFT,*/
|
|
|
|
|
#if MICROPY_PY_ALL_SPECIAL_METHODS
|
|
|
|
|
[MP_BINARY_OP_INPLACE_ADD] = MP_QSTR___iadd__,
|
|
|
|
|
[MP_BINARY_OP_INPLACE_SUBTRACT] = MP_QSTR___isub__,
|
|
|
|
|
#endif
|
|
|
|
|
/*MP_BINARY_OP_INPLACE_MULTIPLY,
|
|
|
|
|
MP_BINARY_OP_INPLACE_FLOOR_DIVIDE,
|
|
|
|
|
MP_BINARY_OP_INPLACE_TRUE_DIVIDE,
|
|
|
|
|
MP_BINARY_OP_INPLACE_MODULO,
|
|
|
|
|
MP_BINARY_OP_INPLACE_POWER,*/
|
|
|
|
|
|
|
|
|
|
#if MICROPY_PY_REVERSE_SPECIAL_METHODS
|
|
|
|
|
[MP_BINARY_OP_REVERSE_ADD] = MP_QSTR___radd__,
|
|
|
|
|
[MP_BINARY_OP_REVERSE_SUBTRACT] = MP_QSTR___rsub__,
|
|
|
|
|
[MP_BINARY_OP_REVERSE_MULTIPLY] = MP_QSTR___rmul__,
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
[MP_BINARY_OP_LESS] = MP_QSTR___lt__,
|
|
|
|
|
[MP_BINARY_OP_MORE] = MP_QSTR___gt__,
|
|
|
|
|
[MP_BINARY_OP_EQUAL] = MP_QSTR___eq__,
|
|
|
|
|
[MP_BINARY_OP_LESS_EQUAL] = MP_QSTR___le__,
|
|
|
|
|
[MP_BINARY_OP_MORE_EQUAL] = MP_QSTR___ge__,
|
|
|
|
|
/*
|
|
|
|
|
MP_BINARY_OP_NOT_EQUAL, // a != b calls a == b and inverts result
|
|
|
|
|
*/
|
|
|
|
|
[MP_BINARY_OP_IN] = MP_QSTR___contains__,
|
|
|
|
|
/*
|
|
|
|
|
MP_BINARY_OP_IS,
|
|
|
|
|
*/
|
|
|
|
|
[MP_BINARY_OP_LAST] = 0, // used to make sure array has full size, TODO: FIXME
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
STATIC mp_obj_t instance_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
|
|
|
|
|