55
54
s_dynamic_array_for_each (self, (ForEachFunc) _private_for_each_item_free,
58
for (int i = 0; i < self->len; i++) {
57
for (int i = 0; i < self->last_item; i++) {
59
58
free (self->priv->array[i]);
67
66
return self->priv->array[index];
70
size_t s_dynamic_array_len (SDynamicArray * self) {
69
void s_dynamic_array_set (SDynamicArray * self, size_t index, spointer item) {
70
if (self->max_size <= index) {
71
size_t new_size = round_up (index + ARRAY_PADDING, ARRAY_PADDING) + 1;
72
s_dbg_print ("Index: %d current array size: %d new array size: %d ",
73
index, self->max_size, new_size);
75
self->max_size = new_size;
77
self->priv->array = realloc (self->priv->array,
78
(sizeof (* self->priv->array) * (self->max_size)));
81
if (self->last_item < index) {
82
self->last_item = index;
85
self->priv->array[index] = item;
74
88
size_t s_dynamic_array_size (SDynamicArray * self) {
75
89
return self->max_size;
78
void s_dynamic_array_add (SDynamicArray * self, spointer data) {
79
if (self->len >= self->max_size - 1) {
80
self->priv->array = realloc (self->priv->array,
81
(sizeof (* self->priv->array) *
82
(self->max_size + ARRAY_PADDING)));
83
self->max_size = self->max_size + ARRAY_PADDING;
85
self->priv->array[self->len] = data;
92
size_t s_dynamic_array_last_item (SDynamicArray * self) {
93
return self->last_item;
89
96
spointer * s_dynamic_array_dump_array (SDynamicArray * self) {
90
spointer * ret_val = malloc (sizeof (* self->priv->array) * (self->len + 1));
91
for (int i = 0; i < self->len; i++) {
97
spointer * ret_val = calloc (self->last_item + 1, sizeof (* self->priv->array));
98
for (int i = 0; i < self->last_item; i++) {
92
99
ret_val[i] = self->priv->array[i];
94
ret_val[self->len] = NULL;
101
ret_val[self->last_item] = NULL;
98
105
void s_dynamic_array_for_each (SDynamicArray * self, ForEachFunc func,
100
for (int i = 0; i < self->len; i++) {
101
func (self, self->priv->array[i], data);
107
for (int i = 0; i < self->max_size && i <= self->last_item; i++) {
108
spointer item = self->priv->array[i];
110
func (self, item, data);