summaryrefslogtreecommitdiff
path: root/py/objbool.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/objbool.c')
-rw-r--r--py/objbool.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/py/objbool.c b/py/objbool.c
index 5755b188e..4c046ac8f 100644
--- a/py/objbool.c
+++ b/py/objbool.c
@@ -28,21 +28,31 @@
#include "py/runtime.h"
+#if MICROPY_OBJ_IMMEDIATE_OBJS
+
+#define BOOL_VALUE(o) ((o) == mp_const_false ? 0 : 1)
+
+#else
+
+#define BOOL_VALUE(o) (((mp_obj_bool_t*)MP_OBJ_TO_PTR(o))->value)
+
typedef struct _mp_obj_bool_t {
mp_obj_base_t base;
bool value;
} mp_obj_bool_t;
+#endif
+
STATIC void bool_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
- mp_obj_bool_t *self = MP_OBJ_TO_PTR(self_in);
+ bool value = BOOL_VALUE(self_in);
if (MICROPY_PY_UJSON && kind == PRINT_JSON) {
- if (self->value) {
+ if (value) {
mp_print_str(print, "true");
} else {
mp_print_str(print, "false");
}
} else {
- if (self->value) {
+ if (value) {
mp_print_str(print, "True");
} else {
mp_print_str(print, "False");
@@ -65,13 +75,13 @@ STATIC mp_obj_t bool_unary_op(mp_unary_op_t op, mp_obj_t o_in) {
if (op == MP_UNARY_OP_LEN) {
return MP_OBJ_NULL;
}
- mp_obj_bool_t *self = MP_OBJ_TO_PTR(o_in);
- return mp_unary_op(op, MP_OBJ_NEW_SMALL_INT(self->value));
+ bool value = BOOL_VALUE(o_in);
+ return mp_unary_op(op, MP_OBJ_NEW_SMALL_INT(value));
}
STATIC mp_obj_t bool_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
- mp_obj_bool_t *self = MP_OBJ_TO_PTR(lhs_in);
- return mp_binary_op(op, MP_OBJ_NEW_SMALL_INT(self->value), rhs_in);
+ bool value = BOOL_VALUE(lhs_in);
+ return mp_binary_op(op, MP_OBJ_NEW_SMALL_INT(value), rhs_in);
}
const mp_obj_type_t mp_type_bool = {
@@ -83,5 +93,7 @@ const mp_obj_type_t mp_type_bool = {
.binary_op = bool_binary_op,
};
+#if !MICROPY_OBJ_IMMEDIATE_OBJS
const mp_obj_bool_t mp_const_false_obj = {{&mp_type_bool}, false};
const mp_obj_bool_t mp_const_true_obj = {{&mp_type_bool}, true};
+#endif