src/dynarray.c
 1#include "alba.h"
 2
 3#include <stdlib.h>
 4
 5void float_array_reserve(FloatArray* array, const uint64_t capacity)
 6{
 7    if (array->capacity > capacity) return;
 8    array->capacity = capacity;
 9    array->data = reallocarray(array->data, array->capacity, sizeof(float));
10}
11
12void float_array_append(FloatArray* array, const float value)
13{
14    if (array->capacity < array->length + 1)
15    {
16        while (array->capacity < array->length + 1)
17        {
18            if (array->capacity == 0) array->capacity = 4;
19            array->capacity = array->capacity * 2;
20        }
21        array->data = reallocarray(array->data, array->capacity, sizeof(float));
22    }
23
24    array->data[array->length] = value;
25    array->length += 1;
26}
27
28void float_array_release(const FloatArray* array)
29{
30    free(array->data);
31}
32
33void float_array_clear(FloatArray* array)
34{
35    array->length = 0;
36}
37
38
39void uint32_array_reserve(Uint32Array* array, const uint64_t capacity)
40{
41    if (array->capacity > capacity) return;
42    array->capacity = capacity;
43    array->data = reallocarray(array->data, array->capacity, sizeof(uint32_t));
44}
45
46void uint32_array_append(Uint32Array* array, const uint32_t value)
47{
48    if (array->capacity < array->length + 1)
49    {
50        while (array->capacity < array->length + 1)
51        {
52            if (array->capacity == 0) array->capacity = 4;
53            array->capacity = array->capacity * 2;
54        }
55        array->data = reallocarray(array->data, array->capacity, sizeof(uint32_t));
56    }
57
58    array->data[array->length] = value;
59    array->length += 1;
60}
61
62void uint32_array_release(const Uint32Array* array)
63{
64    free(array->data);
65}
66
67void uint32_array_clear(Uint32Array* array)
68{
69    array->length = 0;
70}