aboutsummaryrefslogtreecommitdiff
path: root/deque.c
diff options
context:
space:
mode:
Diffstat (limited to 'deque.c')
-rw-r--r--deque.c16
1 files changed, 16 insertions, 0 deletions
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)
169 return true; 169 return true;
170} 170}
171 171
172bool
173deque_set_at(struct deque *d, size_t idx, T data)
174{
175 if ( idx >= d->size ) {
176 return false;
177 }
178
179 const size_t pos = d->offset + idx;
180 const size_t chunk_off = pos % CHUNK_CAPACITY;
181 const size_t chunk_num = (pos / CHUNK_CAPACITY + d->map_begin) % d->map_capacity;
182
183 d->map[chunk_num][chunk_off] = data;
184
185 return true;
186}
187
172void 188void
173deque_push_back(struct deque *d, T data) 189deque_push_back(struct deque *d, T data)
174{ 190{