Browse Source

py: Add mp_binary_set_val_array_from_int, to store an int directly.

pull/512/head
Damien George 11 years ago
parent
commit
71e9bfa20d
  1. 20
      py/binary.c
  2. 1
      py/binary.h

20
py/binary.c

@ -151,11 +151,21 @@ mp_obj_t mp_binary_get_val(char struct_type, char val_type, byte **ptr) {
} }
void mp_binary_set_val_array(char typecode, void *p, int index, mp_obj_t val_in) { void mp_binary_set_val_array(char typecode, void *p, int index, mp_obj_t val_in) {
machine_int_t val = 0; switch (typecode) {
if (MP_OBJ_IS_INT(val_in)) { #if MICROPY_ENABLE_FLOAT
val = mp_obj_int_get(val_in); case 'f':
((float*)p)[index] = mp_obj_float_get(val_in);
break;
case 'd':
((double*)p)[index] = mp_obj_float_get(val_in);
break;
#endif
default:
mp_binary_set_val_array_from_int(typecode, p, index, mp_obj_get_int(val_in));
} }
}
void mp_binary_set_val_array_from_int(char typecode, void *p, int index, machine_int_t val) {
switch (typecode) { switch (typecode) {
case 'b': case 'b':
((int8_t*)p)[index] = val; ((int8_t*)p)[index] = val;
@ -187,10 +197,10 @@ void mp_binary_set_val_array(char typecode, void *p, int index, mp_obj_t val_in)
#endif #endif
#if MICROPY_ENABLE_FLOAT #if MICROPY_ENABLE_FLOAT
case 'f': case 'f':
((float*)p)[index] = mp_obj_float_get(val_in); ((float*)p)[index] = val;
break; break;
case 'd': case 'd':
((double*)p)[index] = mp_obj_float_get(val_in); ((double*)p)[index] = val;
break; break;
#endif #endif
} }

1
py/binary.h

@ -6,3 +6,4 @@ int mp_binary_get_size(char typecode);
mp_obj_t mp_binary_get_val_array(char typecode, void *p, int index); mp_obj_t mp_binary_get_val_array(char typecode, void *p, int index);
mp_obj_t mp_binary_get_val(char struct_type, char val_type, byte **ptr); mp_obj_t mp_binary_get_val(char struct_type, char val_type, byte **ptr);
void mp_binary_set_val_array(char typecode, void *p, int index, mp_obj_t val_in); void mp_binary_set_val_array(char typecode, void *p, int index, mp_obj_t val_in);
void mp_binary_set_val_array_from_int(char typecode, void *p, int index, machine_int_t val);

Loading…
Cancel
Save