diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-05-10 22:23:00 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-05-10 22:24:31 +0300 |
commit | 94d8246272b2df7dbfb70ec85ed06e3b13793bac (patch) | |
tree | 391a83a4bfc111060aa515c8cad0a415711422e2 /py/obj.h | |
parent | d915a52eb650a0809e15e6be25e58a3db7e73025 (diff) |
objlist: Implement non-growing slice assignment.
Slice value to assign can be only a list so far too.
Diffstat (limited to 'py/obj.h')
-rw-r--r-- | py/obj.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -573,3 +573,8 @@ mp_obj_t mp_seq_index_obj(const mp_obj_t *items, uint len, uint n_args, const mp mp_obj_t mp_seq_count_obj(const mp_obj_t *items, uint len, mp_obj_t value); // Helper to clear stale pointers from allocated, but unused memory, to preclude GC problems #define mp_seq_clear(start, len, alloc_len, item_sz) memset((byte*)(start) + (len) * (item_sz), 0, ((alloc_len) - (len)) * (item_sz)) +#define mp_seq_replace_slice_no_grow(dest, dest_len, beg, end, slice, slice_len, item_t) \ + /*printf("memcpy(%p, %p, %d)\n", dest + beg, slice, slice_len * sizeof(item_t));*/ \ + memcpy(dest + beg, slice, slice_len * sizeof(item_t)); \ + /*printf("memcpy(%p, %p, %d)\n", dest + (beg + slice_len), dest + end, (dest_len - end) * sizeof(item_t));*/ \ + memcpy(dest + (beg + slice_len), dest + end, (dest_len - end) * sizeof(item_t)); |