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