Add reserve function to arrays
Francesco Pasa 11 months ago
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)