Login
7 branches 0 tags
Benjamin Vincent Schulenburg Added srht CI job using Arch bd6a09e 4 years ago 32 Commits
nujel / lib / datatypes / array.h
#pragma once
#include "../nujel.h"

typedef struct {
	u32 *data;
	i32 length;
	u16 flags;
	u16 nextFree;
} lArray;

#define ARR_MAX (1<<12)
#define ARR_MASK ((ARR_MAX)-1)
extern uint   lArrayActive;
extern uint   lArrayMax;
extern lArray lArrayList[ARR_MAX];

#define lArrNull(val)   (((val->vCdr & ARR_MASK) == 0) || (lArrayList[val->vCdr & ARR_MASK].data == NULL))
#define lArr(val)       lArrayList[val->vCdr & ARR_MASK]
#define lArrLength(val) lArr(val).length
#define lArrData(val)   lArr(val).data

void lInitArray    ();
uint lArrayAlloc   ();
void lArrayFree    (uint v);