Login
7 branches 0 tags
Ben (X13/Arch) Improved the GC a bit 47ea149 4 years ago 82 Commits
nujel / lib / types / native-function.h
#pragma once
#include "../nujel.h"

struct lNFunc {
	union {
		lVal *(*fp)(lClosure *, lVal *);
		lNFunc *nextFree;
	};
	lVal *doc;
};

#define NFN_MAX (1<<10)

extern lNFunc   lNFuncList  [NFN_MAX];
extern uint     lNFuncMax;
extern uint     lNFuncActive;

int       lNFuncID(const lNFunc *n);
void      lInitNativeFunctions();
void      lNFuncFree(uint i);
lNFunc   *lNFuncAlloc();

lVal     *lAddNativeFunc    (lClosure *c, const char *sym, const char *args, const char *doc, lVal *(*func)(lClosure *,lVal *));
lVal     *lAddSpecialForm   (lClosure *c, const char *sym, const char *args, const char *doc, lVal *(*func)(lClosure *,lVal *));