binary: Factor out mp_binary_set_int().
This commit is contained in:
parent
539681fffd
commit
5fa5ca40e6
34
py/binary.c
34
py/binary.c
|
@ -177,6 +177,23 @@ mp_obj_t mp_binary_get_val(char struct_type, char val_type, byte **ptr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mp_binary_set_int(uint val_sz, bool big_endian, byte *p, byte *val_ptr) {
|
||||||
|
int in_delta, out_delta;
|
||||||
|
if (big_endian) {
|
||||||
|
in_delta = -1;
|
||||||
|
out_delta = 1;
|
||||||
|
val_ptr += val_sz - 1;
|
||||||
|
} else {
|
||||||
|
in_delta = out_delta = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint i = val_sz; i > 0; i--) {
|
||||||
|
*p = *val_ptr;
|
||||||
|
p += out_delta;
|
||||||
|
val_ptr += in_delta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte **ptr) {
|
void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte **ptr) {
|
||||||
byte *p = *ptr;
|
byte *p = *ptr;
|
||||||
uint align;
|
uint align;
|
||||||
|
@ -206,22 +223,7 @@ void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte **
|
||||||
val = mp_obj_get_int(val_in);
|
val = mp_obj_get_int(val_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
int in_delta, out_delta;
|
mp_binary_set_int(MIN(size, sizeof(val)), struct_type == '>', p, in);
|
||||||
uint val_sz = MIN(size, sizeof(val));
|
|
||||||
if (struct_type == '>') {
|
|
||||||
in_delta = -1;
|
|
||||||
out_delta = 1;
|
|
||||||
in += val_sz - 1;
|
|
||||||
} else {
|
|
||||||
in_delta = out_delta = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint i = val_sz; i > 0; i--) {
|
|
||||||
*p = *in;
|
|
||||||
p += out_delta;
|
|
||||||
in += in_delta;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
|
|
|
@ -35,3 +35,4 @@ void mp_binary_set_val_array_from_int(char typecode, void *p, int index, mp_int_
|
||||||
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(char struct_type, char val_type, mp_obj_t val_in, byte **ptr);
|
void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte **ptr);
|
||||||
mp_int_t mp_binary_get_int(uint size, bool is_signed, bool big_endian, byte *p);
|
mp_int_t mp_binary_get_int(uint size, bool is_signed, bool big_endian, byte *p);
|
||||||
|
void mp_binary_set_int(uint val_sz, bool big_endian, byte *p, byte *val_ptr);
|
||||||
|
|
Loading…
Reference in New Issue