diff options
Diffstat (limited to 'rushs/evalexpr/vector/vector.h')
| -rw-r--r-- | rushs/evalexpr/vector/vector.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/rushs/evalexpr/vector/vector.h b/rushs/evalexpr/vector/vector.h new file mode 100644 index 0000000..5afada7 --- /dev/null +++ b/rushs/evalexpr/vector/vector.h @@ -0,0 +1,64 @@ +#ifndef VECTOR_H +#define VECTOR_H + +#include <stddef.h> + +struct vector +{ + // The number of elements in the vector + size_t size; + // The maximum number of elements in the vector + size_t capacity; + // The elements themselves + int *data; +}; + +/* +** Initialize the vector with `n` capacity. +** Returns `NULL` if an error occured. +*/ +struct vector *vector_init(size_t n); + +/* +** Release the memory used by the vector. +** Does nothing if `v` is `NULL`. +*/ +void vector_destroy(struct vector *v); + +/* +** Resize the vector to `n` capacity. +** Returns `NULL` if an error occured. +*/ +struct vector *vector_resize(struct vector *v, size_t n); + +/* +** Append an element to the end of the vector. Expand the vector if needed. +** Returns `NULL` if an error occured. +*/ +struct vector *vector_append(struct vector *v, int elt); + +/* +** Display the vector contents on `stdout`. +** Displays `\n` if `v` is `NULL`. +*/ +void vector_print(const struct vector *v); + +/* +** Remove all the elements of the vector, and resize it to `n` capacity. +** Returns `NULL` if an error occured. +*/ +struct vector *vector_reset(struct vector *v, size_t n); + +/* +** Insert `n` at the index `i`. Expand the vector if needed. +** Returns `NULL` if an error occured. +*/ +struct vector *vector_insert(struct vector *v, size_t i, int elt); + +/* +** Remove the element at the index `i`. +** Returns `NULL` if an error occured. +*/ +struct vector *vector_remove(struct vector *v, size_t i); + +#endif /* !VECTOR_H */ |
