text/plain
•
828 B
•
32 lines
#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);
lVal *lnfArrLength (lClosure *c, lVal *v);
lVal *lnfArrRef (lClosure *c, lVal *v);
lVal *lnfArrSet (lClosure *c, lVal *v);
lVal *lnfArrNew (lClosure *c, lVal *v);
lVal *lnfArr (lClosure *c, lVal *v);
void lAddArrayFuncs(lClosure *c);