Login
7 branches 0 tags
Ben (Win10) Made casting a lot stricter/better b2de7fb 3 years ago 544 Commits
nujel / lib / allocation / symbol.h
#ifndef NUJEL_LIB_ALLOC_SYMBOL
#define NUJEL_LIB_ALLOC_SYMBOL
#include "../nujel.h"

#define SYM_MAX (1<<14)
extern lSymbol  lSymbolList [SYM_MAX];
extern lSymbol *lSymbolFFree;
extern uint     lSymbolActive;
extern uint     lSymbolMax;

extern lSymbol *symNull;
extern lSymbol *symQuote;
extern lSymbol *symQuasiquote;
extern lSymbol *symUnquote;
extern lSymbol *symUnquoteSplicing;
extern lSymbol *symArr;
extern lSymbol *symIf;
extern lSymbol *symCond;
extern lSymbol *symDo;
extern lSymbol *symMinus;
extern lSymbol *symLambda;
extern lSymbol *symLambdAst;
extern lSymbol *symTreeNew;

void      lSymbolInit  ();
void      lSymbolFree  (lSymbol *s);
lSymbol  *lSymS        (const char *s);
lSymbol  *lSymSL       (const char *s, uint len);
lSymbol  *getTypeSymbol(const lVal *a);

static inline int lSymIndex(const lSymbol *s){
	return s - lSymbolList;
}
static inline lSymbol *lIndexSym(uint i){
	return (i >= lSymbolMax) ? NULL : &lSymbolList[i];
}

#endif