111 lines · 2.6 KB · C
RawDownload
#define GCSTACKSIZE 256 typedef union Trie Trie;#pragma incomplete Trie typedef struct aaContext aaContext;typedef struct aaHandlers aaHandlers;typedef struct aaNumber aaNumber;typedef struct aaObject aaObject; typedef union aaValue aaValue; typedef aaObject *(*aaCFunc)(aaContext *ctx, aaObject *args);typedef void (*aaErrorFn)(aaContext *ctx, const char *err, aaObject *cl);typedef char (*aaReadFn)(aaContext *ctx, void *udata); struct aaNumber {	double r;	//double i;};//#define aNumber(r,i) (aaNumber){r, i}#define aNumber(r,i) (aaNumber){r} union aaValue {	Biobuf *port;	aaObject *o;	aaCFunc f;	aaNumber n;	char c;}; struct aaObject {	aaValue car;	aaValue cdr;}; struct aaHandlers {	aaErrorFn error;	aaCFunc mark;	aaCFunc gc;}; struct aaContext {	aaHandlers handlers;	aaObject *gcstack[GCSTACKSIZE];	int gcstack_idx;	aaObject *objects;	int object_count;	aaObject *calllist;	aaObject *freelist;	aaObject *symlist;	Trie *symtrie;	aaObject *t;	Rune nextrune; 	Biobuf *fd[3];}; enum {	AA_TPAIR,	AA_TFREE,	AA_TNUMBER,	AA_TSYMBOL,	AA_TSTRING,	AA_TFUNC,	AA_TMACRO,	AA_TPRIM,	AA_TCFUNC,	AA_TPTR,	AA_TBOOL,	AA_TPORT, 	AA_TMAX, 	AA_NOSTDIO = 1<<0,}; extern aaObject Null;extern aaObject False;extern aaObject True; #pragma varargck argpos aa_error 2#pragma varargck type "ß" aaObject*#pragma varargck type "§" aaObject* aaContext *aa_open(void *ptr, int size, int flags);void aa_close(aaContext *ctx);aaHandlers *aa_handlers(aaContext *ctx);void aa_error(aaContext *ctx, const char *fmt, ...);aaObject *aa_nextarg(aaContext *ctx, aaObject **arg, int optional);int aa_type(aaContext *ctx, aaObject *obj);void aa_pushgc(aaContext *ctx, aaObject *obj);void aa_restoregc(aaContext *ctx, int idx);int aa_savegc(aaContext *ctx);void aa_mark(aaContext *ctx, aaObject *obj);aaObject *aa_cons(aaContext *ctx, aaObject *car, aaObject *cdr);aaObject *aa_bool(aaContext *ctx, int b);aaObject *aa_number(aaContext *ctx, aaNumber n);aaObject *aa_string(aaContext *ctx, const char *str);aaObject *aa_symbol_find(aaContext *ctx, const char *name);aaObject *aa_symbol(aaContext *ctx, const char *name);aaObject *aa_cfunc(aaContext *ctx, aaCFunc fn);aaObject *aa_ptr(aaContext *ctx, void *ptr);aaObject *aa_list(aaContext *ctx, aaObject **objs, int n);aaObject *aa_car(aaContext *ctx, aaObject *obj);aaObject *aa_cdr(aaContext *ctx, aaObject *obj);aaNumber aa_tonumber(aaContext *ctx, aaObject *obj);void *aa_toptr(aaContext *ctx, aaObject *obj);void aa_set(aaContext *ctx, aaObject *sym, aaObject *v);aaObject *aa_read(aaContext *ctx, Biobuf *fp);aaObject *aa_eval(aaContext *ctx, aaObject *obj);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t