aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/acid/acid.h
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-04-19 19:32:07 +0000
committerrsc <devnull@localhost>2004-04-19 19:32:07 +0000
commit564ca709d0e20d4fc46744bd858f14cff94ab382 (patch)
tree47bf49710238a6cb7112682e7bd0885f82544759 /src/cmd/acid/acid.h
parent22a7368ef24d5c530a275dd0db0bd4f23b1c3ce3 (diff)
downloadplan9port-564ca709d0e20d4fc46744bd858f14cff94ab382.tar.gz
plan9port-564ca709d0e20d4fc46744bd858f14cff94ab382.tar.bz2
plan9port-564ca709d0e20d4fc46744bd858f14cff94ab382.zip
acid
Diffstat (limited to 'src/cmd/acid/acid.h')
-rw-r--r--src/cmd/acid/acid.h313
1 files changed, 313 insertions, 0 deletions
diff --git a/src/cmd/acid/acid.h b/src/cmd/acid/acid.h
new file mode 100644
index 00000000..729341b3
--- /dev/null
+++ b/src/cmd/acid/acid.h
@@ -0,0 +1,313 @@
+/* acid.h */
+enum
+{
+ Eof = -1,
+ Strsize = 4096,
+ Hashsize = 128,
+ Maxarg = 512,
+ NFD = 100,
+ Maxproc = 50,
+ Maxval = 10,
+ Mempergc = 1024*1024,
+};
+
+/* #pragma varargck type "L" void */
+
+typedef struct Node Node;
+typedef struct String String;
+typedef struct Lsym Lsym;
+typedef struct List List;
+typedef struct Store Store;
+typedef struct Gc Gc;
+typedef struct Strc Strc;
+typedef struct Rplace Rplace;
+typedef struct Ptab Ptab;
+typedef struct Value Value;
+typedef struct Type Type;
+typedef struct Frtype Frtype;
+
+Extern int kernel;
+Extern int nlcount;
+Extern int remote;
+Extern int text;
+Extern int cor;
+Extern int silent;
+Extern Fhdr *fhdr;
+Extern Fhdr *chdr;
+Extern int line;
+Extern Biobuf* bout;
+Extern Biobuf* io[32];
+Extern int iop;
+Extern int pid;
+Extern char symbol[Strsize];
+Extern int interactive;
+Extern Node* code;
+Extern int na;
+Extern int wtflag;
+Extern Regs* correg;
+Extern Map* cormap;
+Extern Map* symmap;
+Extern Lsym* hash[Hashsize];
+Extern long dogc;
+Extern Rplace* ret;
+Extern char* symfil;
+Extern char* corfil;
+Extern int gotint;
+Extern long flen;
+Extern Gc* gcl;
+Extern int stacked;
+Extern jmp_buf err;
+Extern Node* prnt;
+Extern Node* fomt;
+Extern List* tracelist;
+Extern int initialising;
+Extern int quiet;
+Extern Fhdr* corhdr;
+Extern Fhdr* symhdr;
+
+extern void (*expop[])(Node*, Node*);
+#define expr(n, r) (r)->store.comt=0; (*expop[(unsigned char)((n)->op)])(n, r);
+
+enum
+{
+ TINT,
+ TFLOAT,
+ TSTRING,
+ TLIST,
+ TCODE,
+};
+
+struct Type
+{
+ Type* next;
+ int offset;
+ char fmt;
+ char depth;
+ Lsym* type;
+ Lsym* tag;
+ Lsym* base;
+};
+
+struct Frtype
+{
+ Lsym* var;
+ Type* type;
+ Frtype* next;
+};
+
+struct Ptab
+{
+ int pid;
+/* int ctl; */
+};
+Extern Ptab ptab[Maxproc];
+
+struct Rplace
+{
+ jmp_buf rlab;
+ Node* stak;
+ Node* val;
+ Lsym* local;
+ Lsym** tail;
+};
+
+struct Gc
+{
+ char gcmark;
+ Gc* gclink;
+};
+
+struct Store
+{
+ char fmt;
+ Type* comt;
+ union {
+ vlong ival;
+ double fval;
+ String* string;
+ List* l;
+ Node* cc;
+ } u;
+};
+
+struct List
+{
+ Gc gc;
+ List* next;
+ char type;
+ Store store;
+};
+
+struct Value
+{
+ char set;
+ char type;
+ Store store;
+ Value* pop;
+ Lsym* scope;
+ Rplace* ret;
+};
+
+struct Lsym
+{
+ char* name;
+ int lexval;
+ Lsym* hash;
+ Value* v;
+ Type* lt;
+ Node* proc;
+ Frtype* local;
+ void (*builtin)(Node*, Node*);
+};
+
+struct Node
+{
+ Gc gc;
+ char op;
+ char type;
+ Node* left;
+ Node* right;
+ Lsym* sym;
+ int builtin;
+ Store store;
+};
+#define ZN (Node*)0
+
+struct String
+{
+ Gc gc;
+ char *string;
+ int len;
+};
+
+List* addlist(List*, List*);
+void addvarsym(Fhdr*);
+List* al(int);
+Node* an(int, Node*, Node*);
+void append(Node*, Node*, Node*);
+int bool(Node*);
+void build(Node*);
+void call(char*, Node*, Node*, Node*, Node*);
+void catcher(void*, char*);
+void checkqid(int, int);
+void cmd(void);
+Node* con(int);
+List* construct(Node*);
+void ctrace(int);
+void decl(Node*);
+void defcomplex(Node*, Node*);
+void deinstall(int);
+void delete(List*, int n, Node*);
+void delvarsym(char*);
+void dostop(int);
+Lsym* enter(char*, int);
+void error(char*, ...);
+void execute(Node*);
+void fatal(char*, ...);
+ulong findframe(ulong);
+void flatten(Node**, Node*);
+void gc(void);
+char* getstatus(int);
+void* gmalloc(long);
+void indir(Map*, ulong, char, Node*);
+void installbuiltin(void);
+void kinit(void);
+int Zfmt(Fmt*);
+int listcmp(List*, List*);
+int listlen(List*);
+List* listvar(char*, long);
+void loadmodule(char*);
+void loadvars(void);
+Lsym* look(char*);
+void ltag(char*);
+void marklist(List*);
+Lsym* mkvar(char*);
+void msg(int, char*);
+void notes(int);
+int nproc(char**);
+void nthelem(List*, int, Node*);
+int numsym(char);
+void odot(Node*, Node*);
+void pcode(Node*, int);
+void pexpr(Node*);
+int popio(void);
+void pstr(String*);
+void pushfd(int);
+void pushfile(char*);
+void pushstr(Node*);
+ulong raddr(char*);
+void readtext(char*);
+void readcore(void);
+void restartio(void);
+String *runenode(Rune*);
+int scmp(String*, String*);
+void sproc(int);
+String* stradd(String*, String*);
+String* strnode(char*);
+String* strnodlen(char*, int);
+#define system acidsystem
+char* system(void);
+int trlist(Map*, Regs*, ulong, ulong, Symbol*, int);
+void unwind(void);
+void userinit(void);
+void varreg(void);
+void varsym(void);
+Waitmsg* waitfor(int);
+void whatis(Lsym*);
+void windir(Map*, Node*, Node*, Node*);
+void yyerror(char*, ...);
+int yylex(void);
+int yyparse(void);
+
+enum
+{
+ ONAME,
+ OCONST,
+ OMUL,
+ ODIV,
+ OMOD,
+ OADD,
+ OSUB,
+ ORSH,
+ OLSH,
+ OLT,
+ OGT,
+ OLEQ,
+ OGEQ,
+ OEQ,
+ ONEQ,
+ OLAND,
+ OXOR,
+ OLOR,
+ OCAND,
+ OCOR,
+ OASGN,
+ OINDM,
+ OEDEC,
+ OEINC,
+ OPINC,
+ OPDEC,
+ ONOT,
+ OIF,
+ ODO,
+ OLIST,
+ OCALL,
+ OCTRUCT,
+ OWHILE,
+ OELSE,
+ OHEAD,
+ OTAIL,
+ OAPPEND,
+ ORET,
+ OINDEX,
+ OINDC,
+ ODOT,
+ OLOCAL,
+ OFRAME,
+ OCOMPLEX,
+ ODELETE,
+ OCAST,
+ OFMT,
+ OEVAL,
+ OWHAT,
+};