#ifndef ARRAY_H
#define ARRAY_H
#include <stdbool.h>
typedef struct
{
char *data;
unsigned int length;
} Array;
extern Array *array_create(unsigned int type_size);
extern Array *array_create_by_size(unsigned int type_size, unsigned int reserved_size);
extern void array_append(Array *arr, void *data);
extern void array_insert(Array *arr, int index, void *data);
extern void array_remove(Array *arr, int index);
extern void array_reserve(Array *arr, unsigned int length);
extern unsigned int array_get_type_size(Array *arr);
extern void array_free(Array *arr);
#endif // ARRAY_H