diff --git a/doc/Container.ods b/doc/Container.ods index 5576240c..6b43ad76 100644 Binary files a/doc/Container.ods and b/doc/Container.ods differ diff --git a/m-deque.h b/m-deque.h index 8c2f7494..016a34b0 100644 --- a/m-deque.h +++ b/m-deque.h @@ -413,6 +413,40 @@ DEQUEI_CONTRACT(d); \ return d->count; \ } \ + \ + static inline size_t \ + M_C(name, _capacity_back)(const deque_t v) \ + { \ + DEQUEI_CONTRACT(v); \ + size_t s = 0; \ + for(M_C(name, _node_t) *n = M_C(name, _node_list_back)(v->list); \ + n != NULL ; \ + n = (n == v->back->node) ? NULL : \ + M_C(name, _node_list_previous_obj)(v->list, n) ){ \ + s += (n == v->back->node ? v->back->index : n->size); \ + } \ + return s; \ + } \ + \ + static inline size_t \ + M_C(name, _capacity_front)(const deque_t v) \ + { \ + DEQUEI_CONTRACT(v); \ + size_t s = 0; \ + for(M_C(name, _node_t) *n = M_C(name, _node_list_front)(v->list); \ + n != NULL ; \ + n = (n == v->front->node) ? NULL : \ + M_C(name, _node_list_next_obj)(v->list, n) ){ \ + s += n->size - (n == v->front->node ? v->front->index : 0); \ + } \ + return s; \ + } \ + \ + static inline size_t \ + M_C(name, _capacity)(const deque_t v) \ + { \ + return M_C(name, _capacity_back)(v)+M_C(name, _capacity_front)(v); \ + } \ \ static inline bool \ M_C(name, _empty_p)(const deque_t d) \ diff --git a/tests/test-mdeque.c b/tests/test-mdeque.c index e248c182..bca914cf 100644 --- a/tests/test-mdeque.c +++ b/tests/test-mdeque.c @@ -40,7 +40,8 @@ static void test_ti1(int n) deque_t d; deque_init(d); - + assert(deque_capacity(d) == DEQUEUI_DEFAULT_SIZE); + for(int i =0; i < n ;i++) { deque_push_back(d, i); assert(*deque_back(d) == i);