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