test.h
#include "cctl/vector.h"
vector_imp_h(int);main.c
#include "test.h"
vector_imp_c(int);
int main(void) {
vector(int) v;
vector_init(int, &v);
vector_push_back(int, &v, 10);
vector_push_back(int, &v, 20);
vector_push_back(int, &v, 30);
for (int i = 0; i < v.size; i++) {
printf("%d\n", vector_at(int, &v, i));
}
vector_free(int, &v);
}Dynamic array
cctl/vector.hsize_t sizesize_t capacityvoid vector_init(T, vector(T)* p_v)void vector_free(T, vector(T)* p_v)void vector_clear(T, vector(T)* p_v)bool vector_reserve(T, vector(T)* p_v, size_t size)bool vector_resize(T, vector(T)* p_v, size_t size)bool vector_push_back(T, vector(T)* p_v, T item)bool vector_pop_back(T, vector(T)* p_v)T* vector_at(T, vector(T)* p_v, size_t index)T* vector_front(T, vector(T)* p_v)T* vector_back(T, vector(T)* p_v)
Dynamic double-ended queue
cctl/deque.hsize_t sizevoid deque_init(T, deque(T)* p_v)void deque_free(T, deque(T)* p_v)void deque_clear(T, deque(T)* p_v)bool deque_resize(T, deque(T)* p_v, size_t size)bool deque_push_front(T, deque(T)* p_v, T item)bool deque_pop_front(T, deque(T)* p_v)bool deque_push_back(T, deque(T)* p_v, T item)bool deque_pop_back(T, deque(T)* p_v)T* deque_at(T, deque(T)* p_v, size_t index)T* deque_front(T, deque(T)* p_v)T* deque_back(T, deque(T)* p_v)
Doubly linked list
cctl/list.hsize_t sizevoid list_init(T, list(T)* p_v)void list_free(T, list(T)* p_v)bool list_push_front(T, list(T)* p_v, T item)bool list_pop_front(T, list(T)* p_v)bool list_push_back(T, list(T)* p_v, T item)bool list_pop_back(T, list(T)* p_v)T* list_at(T, list(T)* p_v, size_t index)T* list_front(T, list(T)* p_v)T* list_back(T, list(T)* p_v)node(T)* list_node_at(T, list(T)* p_v, size_t index)node(T)* list_node_front(T, list(T)* p_v)node(T)* list_node_back(T, list(T)* p_v)
Trie
cctl/trie.hvoid trie_init(T, trie(T)* p_t)void trie_free(T, trie(T)* p_t)T* trie_insert(T, trie(T)* p_t, const char* key, T item)void trie_remove(T, trie(T)* p_t, const char* key)T* trie_find(T, trie(T)* p_t, const char* key)
Red-black tree
cctl/rbt.hbool rbt_init(T, rbt(T)* p_r)void rbt_free(T, rbt(T)* p_r)bool rbt_insert(T, rbt(T)* p_r, size_t index, T item)T* rbt_find(T, rbt(T)* p_r, size_t index)void rbt_delete(T, rbt(T)* p_r, size_t index)
cctl/cctl.h
cctl_concat(A, B)=>ABcctl_join(A, B)=>A_Bcctl_ptr_def(T)=>typedef T *cctl_ptr(T)cctl_ptr(T)=>T_ptrcctl_num_args(...)=> Return count of...