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}