From 861f4a49a425dcf052fc36cef963a99d82a9c974 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 15 Aug 2020 14:06:30 +0200 Subject: neue Funktion: deque_set_at() implementiert. --- deque.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/deque.c b/deque.c index da3c221..a4fbc1b 100644 --- a/deque.c +++ b/deque.c @@ -169,6 +169,22 @@ deque_get_at(struct deque *d, size_t idx, T *data) return true; } +bool +deque_set_at(struct deque *d, size_t idx, T data) +{ + if ( idx >= d->size ) { + return false; + } + + const size_t pos = d->offset + idx; + const size_t chunk_off = pos % CHUNK_CAPACITY; + const size_t chunk_num = (pos / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; + + d->map[chunk_num][chunk_off] = data; + + return true; +} + void deque_push_back(struct deque *d, T data) { -- cgit v1.3