#ifndef ARRAYS_H
#define ARRAYS_H

#include <stdbool.h>

#include "DataType.h"

typedef struct {
    int length;
    DataType type;
    int references;
    int next;
    int previous;
    void* data;
} Array;

typedef struct {
    int capacity;
    int usedStart;
    int freeStart;
    Array* data;
} Arrays;

void asInit(Arrays* as);
void asDelete(Arrays* as);
int asAllocate(Arrays* as, DataType type, Structs* sts, int length);
Array* asGet(Arrays* as, int p);
void aAddReference(Array* a);
void aRemoveReference(Array* a);
void asPrintDebug(Arrays* as);

#endif