#ifndef _INCL_U_H /* It is inevitable that someone will complain that having structure elements named such things as n->rv.t or n->r->rv.t is cryptic and is hard to read. The author actually finds such code fairly easy to read, and the compiler has no problems with it either, therefore the author advises the complainer to simply Deal With It. */ typedef struct _n { struct _n *l; struct _n *r; struct { /* this could be a union, but.. */ int t; /* value of node */ char *cv; /* char pointer value */ int iv; /* integral value */ } rv, nv; /* nv:node, rv:return stack */ } Nod; #define NNULL ((Nod *)0) /* builtin intrinsic table */ typedef struct { char *nam; int argc; int flgs; int (*func) (); } Bltin; extern Bltin *u_bltlookup (char *s); #define BLT_NOFLGS 00 #define BLT_WIZONLY 01 #define BLT_FIXARG 02 extern int eval_castbool(Nod *n); extern int eval_castint(Nod *n); extern char *eval_caststr(Nod *n); extern void eval_adopt(Nod *n1, Nod *n2, int lrh); extern int eval_cmd_returnedtrue(void); #define _INCL_U_H #endif