Add reserve function to arrays

Francesco Pasa 11 months ago

include/alba.h   M +3 -1

12     float* data;
13 } FloatArray;
14 
15+void float_array_reserve(FloatArray* array, uint64_t capacity);
16 void float_array_append(FloatArray* array, float value);
17 void float_array_release(const FloatArray* array);
18 void float_array_clear(FloatArray* array);
24     uint32_t* data;
25 } Uint32Array;
26 
27+void uint32_array_reserve(Uint32Array* array, uint64_t capacity);
28 void uint32_array_append(Uint32Array* array, uint32_t value);
29 void uint32_array_release(const Uint32Array* array);
30 void uint32_array_clear(Uint32Array* array);
73 void window_render(AlbaWindow* window);
74 void window_release(AlbaWindow* window);
75 
76-void draw_triangles(AlbaWindow* window, uint64_t num_vertices, float* vertices);
77+void draw_triangles(AlbaWindow* window, uint64_t num_vertices, const float* vertices);
78 
79 #endif // ALBA_H

src/dynarray.c   M +15

 2 
 3 #include <stdlib.h>
 4 
 5+void 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+
12 void float_array_append(FloatArray* array, const float value)
13 {
14     if (array->capacity < array->length + 1)
35     array->length = 0;
36 }
37 
38+
39+void 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+
46 void uint32_array_append(Uint32Array* array, const uint32_t value)
47 {
48     if (array->capacity < array->length + 1)