From 7028633c6c6211a01bcad0515499a4cb893ea646 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 15 Aug 2020 09:27:30 +0200 Subject: code cleanup --- deque.c | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/deque.c b/deque.c index e019adc..3e78410 100644 --- a/deque.c +++ b/deque.c @@ -114,8 +114,9 @@ map_prepend_chunk(struct deque *d) static void map_remove_front_chunk(struct deque *d) { - if ( d->map_begin == d->map_end ) + if ( d->map_begin == d->map_end ) { return; + } const size_t next = (d->map_begin + 1) % d->map_capacity; @@ -128,8 +129,9 @@ map_remove_front_chunk(struct deque *d) static void map_remove_tail_chunk(struct deque *d) { - if ( d->map_begin == d->map_end ) + if ( d->map_begin == d->map_end ) { return; + } const size_t prev = (d->map_end + d->map_capacity - 1) % d->map_capacity; @@ -139,29 +141,36 @@ map_remove_tail_chunk(struct deque *d) d->map_end = prev; } -void +bool deque_get_at(struct deque *d, size_t idx, T *data) { - const size_t offset = d->offset + idx; - const size_t chunk_off = offset % CHUNK_CAPACITY; - const size_t chunk_num = (offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; + 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; *data = d->map[chunk_num][chunk_off]; + + return true; } void deque_push_back(struct deque *d, T data) { - const size_t offset = d->offset + d->size; - const size_t chunk_off = offset % CHUNK_CAPACITY; - size_t chunk_num = (offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; + const size_t pos = d->offset + d->size; + const size_t chunk_off = pos % CHUNK_CAPACITY; + size_t chunk_num = (pos / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; if ( chunk_num == d->map_end ) { map_append_chunk(d); - chunk_num = (offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; + chunk_num = (pos / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; } d->map[chunk_num][chunk_off] = data; + ++d->size; } @@ -176,7 +185,7 @@ deque_push_front(struct deque *d, T data) ++d->size; --d->offset; - size_t chunk_num = (d->offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; + const size_t chunk_num = (d->offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; d->map[chunk_num][d->offset] = data; } @@ -184,14 +193,15 @@ deque_push_front(struct deque *d, T data) bool deque_pop_back(struct deque *d, T *data) { - if ( d->size == 0 ) + if ( d->size == 0 ) { return false; + } --d->size; - const size_t offset = d->offset + d->size; - const size_t chunk_off = offset % CHUNK_CAPACITY; - const size_t chunk_num = (offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; + const size_t pos = d->offset + d->size; + const size_t chunk_off = pos % CHUNK_CAPACITY; + const size_t chunk_num = (pos / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; *data = d->map[chunk_num][chunk_off]; @@ -205,8 +215,9 @@ deque_pop_back(struct deque *d, T *data) bool deque_pop_front(struct deque *d, T *data) { - if ( d->size == 0 ) + if ( d->size == 0 ) { return false; + } const size_t chunk_num = (d->offset / CHUNK_CAPACITY + d->map_begin) % d->map_capacity; @@ -231,7 +242,7 @@ deque_show(struct deque *d) for ( size_t i = 0; i != d->map_capacity; ++i ) { printf("%zu(%p) ", i, (void *) d->map[i]); } - puts(""); + putchar('\n'); } int -- cgit v1.3