diff options
Diffstat (limited to 'deque.c')
| -rw-r--r-- | deque.c | 16 |
1 files changed, 16 insertions, 0 deletions
| @@ -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 | ||
| 172 | bool | ||
| 173 | deque_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 | |||
| 172 | void | 188 | void |
| 173 | deque_push_back(struct deque *d, T data) | 189 | deque_push_back(struct deque *d, T data) |
| 174 | { | 190 | { |
