aboutsummaryrefslogtreecommitdiff
path: root/py/binary.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-11-21 18:16:25 +0000
committerDamien George <damien.p.george@gmail.com>2014-11-21 18:16:25 +0000
commitc9f8f653adbff865d5cebdf0e46dc22680cebce4 (patch)
tree92c9c05007acedc724a7b0213e0630998a7654c1 /py/binary.c
parent9d1ca65b59614c38674d0c8c4dc2e8da9618df69 (diff)
py: Add support for float/double arrays in array module.
Addresses issue #981.
Diffstat (limited to 'py/binary.c')
-rw-r--r--py/binary.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/py/binary.c b/py/binary.c
index fed69f9d1..46a4eb694 100644
--- a/py/binary.c
+++ b/py/binary.c
@@ -61,6 +61,10 @@ int mp_binary_get_size(char struct_type, char val_type, mp_uint_t *palign) {
size = 8; break;
case 'P': case 'O': case 'S':
size = sizeof(void*); break;
+ case 'f':
+ size = sizeof(float); break;
+ case 'd':
+ size = sizeof(double); break;
}
break;
case '@': {
@@ -90,6 +94,12 @@ int mp_binary_get_size(char struct_type, char val_type, mp_uint_t *palign) {
case 'P': case 'O': case 'S':
align = alignof(void*);
size = sizeof(void*); break;
+ case 'f':
+ align = alignof(float);
+ size = sizeof(float); break;
+ case 'd':
+ align = alignof(double);
+ size = sizeof(double); break;
}
}
}
@@ -252,10 +262,10 @@ void mp_binary_set_val_array(char typecode, void *p, mp_uint_t index, mp_obj_t v
switch (typecode) {
#if MICROPY_PY_BUILTINS_FLOAT
case 'f':
- ((float*)p)[index] = mp_obj_float_get(val_in);
+ ((float*)p)[index] = mp_obj_get_float(val_in);
break;
case 'd':
- ((double*)p)[index] = mp_obj_float_get(val_in);
+ ((double*)p)[index] = mp_obj_get_float(val_in);
break;
#endif
default: