#pragma once

#include "../COMMON.h"

typedef struct Vector
{
	u32 count;
	u32 limit;
	size_t itemSize;
	void* data;
} Vector;

typedef s32 (*SortCompareFunction)(const void*, const void*);

s32 vector_index_get(Vector* self, void* data);
size_t vector_size_get(Vector* self);
void vector_free(Vector* self);
void vector_init(Vector* self, size_t size);
void vector_pop(Vector* self);
void vector_remove(Vector* self, s32 index);
void vector_clear(Vector* self);
void vector_remove_from_data(Vector* self, void* data);
void* vector_get(Vector* self, s32 index);
void* vector_insert(Vector* self, void* data, s32 index);
void* vector_push(Vector* self, void* data);
void vector_print(Vector* self);
void vector_sort(Vector* self, SortCompareFunction);
