diff options
Diffstat (limited to 'src/vector.c')
-rw-r--r-- | src/vector.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/vector.c b/src/vector.c index 143e6a1..72b41e2 100644 --- a/src/vector.c +++ b/src/vector.c @@ -18,6 +18,7 @@ #include "vector.h" + struct Vector { const void **values; size_t capacity; @@ -27,6 +28,7 @@ struct Vector { const size_t value_size; }; + static const size_t VECTOR_MAX_CAPACITY = SIZE_MAX; @@ -37,6 +39,7 @@ static const size_t GROWTH_MULTIPLIER = 2; + int vector_new_with( const size_t capacity, @@ -157,6 +160,26 @@ out: } int +vector_assign( + const struct Vector *const v, + const size_t idx, + const void *const value +) { + int rc = -1; + + const size_t count = vector_count(v); + if (idx >= count) { + logerr(_(MSG_ERR_VECTOR_OUT_OF_BOUNDS), idx, count); + goto out; + } + + memcpy(&v->values[idx], value, v->value_size); + rc = 0; +out: + return rc; +} + +int vector_push_back(const struct Vector *const v, const void *const value) { int rc = -1; |