Files

51 lines
989 B
C
Raw Permalink Normal View History

2026-06-09 07:23:41 -05:00
#ifndef LTYPES_ARRAY_H
#define LTYPES_ARRAY_H
2026-06-10 09:06:08 -05:00
#include "version.h"
2026-06-09 07:23:41 -05:00
#include <stddef.h>
typedef struct {
size_t count;
size_t capacity;
void** items;
2026-06-10 08:39:58 -05:00
} LArray;
2026-06-09 07:23:41 -05:00
2026-06-10 08:39:58 -05:00
LArray* l_array_create();
void l_array_delete(LArray* array);
int l_array_append(LArray* array, void* item);
void l_array_clear(LArray* array);
2026-06-09 07:23:41 -05:00
#ifdef L_ARRAY_IMPLEMENTATION
#include <stdlib.h>
2026-06-10 08:39:58 -05:00
LArray* l_array_create() {
return (LArray*) calloc(1, sizeof(LArray));
2026-06-09 07:23:41 -05:00
}
2026-06-10 08:39:58 -05:00
void l_array_delete(LArray* array) {
2026-06-09 07:23:41 -05:00
free(array);
}
2026-06-10 08:39:58 -05:00
int l_array_append(LArray* array, void* item) {
2026-06-09 07:23:41 -05:00
if (array->count >= array->capacity) {
if (array->capacity == 0) array->capacity = 8;
else array->capacity *= 2;
array->items = realloc(array->items, array->capacity * sizeof(*array->items));
}
array->items[array->count++] = item;
return 0;
}
2026-06-10 08:39:58 -05:00
void l_array_clear(LArray* array) {
2026-06-09 07:23:41 -05:00
free(array->items);
array->items = NULL;
array->capacity = 0;
array->count = 0;
}
#endif
#endif