dbm/
misc/
old-docs/
/* dbm.h */

/*
 * Header for the TeenyMUD database manager. Of course. 
 */

/* Atom types */

#define AND	-1
#define OR	-2
#define NOT	-3
#define STOP	-4

/*
 * These aren't strictly atom types. We use them as token types to indicate
 * open parens and close parens respectively, in the parse phase Also, bad
 * tokens. The expression parser should die when it gets a BADTOK back. 
 */

#define OPEN	-5
#define CLOSE	-6
#define BADTOK	-7

/* More atom types */

#define DBM_NAME	0
#define DBM_FLAG	1
#define DBM_TIME	2
#define DBM_OWNER	3
#define DBM_NUMBER	4
#define DBM_TYPE	5

/*
 * These are atoms. We fill an array up with a list of these to form an RPN
 * expression which we evaluate for every item in the DB. 
 */

struct atom {
  int             type;
  union {
    char           *name;
    int             flag;
    int             time;
    int             owner;
    int             number;
  }               data;
};

typedef struct atom atom;

/* The biggest an expression can be. (Number of atoms) */

#define MAXEXPR	256

/*
 * Flags for DB lookup. A bit vector tells us what elements from each object
 * to retrieve from the DB for the given expression. 
 */

#define REQ_FLAG	0x0001
#define REQ_TIME	0x0002
#define REQ_OWNER	0x0004
#define REQ_NUMBER	0x0008
#define REQ_NAME	0x0010


char           *malloc();