#ifndef PRIMS_H
#define PRIMS_H
#define __P_PROTO dbref player, dbref program, inst *pc, inst *arg, int *top, \
frame *fr
#include "copyright.h"
#include "config.h"
#include <sys/types.h>
#include <time.h>
#include "db.h"
#include "inst.h"
#include "externs.h"
#include "match.h"
#include "interface.h"
#include "params.h"
#ifdef MIPS
typedef char *voidptr;
#define MIPSCAST (char *)
#else
typedef void *voidptr;
#define MIPSCAST
#endif
extern char *uppercase, *lowercase;
#define UPCASE(x) (uppercase[x])
#define DOWNCASE(x) (lowercase[x])
#ifdef COMPRESS
#define alloc_compressed(x) dup_string(compress(x))
#define get_compress(x) compress(x)
#define get_uncompress(x) uncompress(x)
#else /* COMPRESS */
#define alloc_compressed(x) dup_string(x)
#define get_compress(x) (x)
#define get_uncompress(x) (x)
#endif /* COMPRESS */
#define DoNullInd(x) ((x) ? (x) : "")
#define CLEAR(C) \
{ \
if ((C)->type == PROG_STRING) free((void *) (C)->data.string); \
}
void push (inst *, int *, int, voidptr);
int valid_object(inst *);
int false (inst *);
void copyinst(inst *, inst *);
void push (inst *, int *, int, voidptr);
int valid_player(inst *);
void copyobj(dbref, dbref, dbref);
int valid_object(inst *);
int is_home(inst *);
int permissions(dbref, dbref);
int arith_type(inst *, inst *);
void interp_err(dbref, char *, char *, dbref);
#define CHECKOP(N) \
{ \
if ((*top) < (N)) \
{ \
interp_err(player, insttoerr(pc), "Stack underflow.", program); \
return; \
} \
p_nargs = (N); \
}
#define POP() (arg + --(*top))
#define abort_interp(C) \
{ \
interp_err(player, insttoerr(pc), (C), program); \
switch(p_nargs) \
{ \
case 4: CLEAR(p_oper4); \
case 3: CLEAR(p_oper3); \
case 2: CLEAR(p_oper2); \
case 1: CLEAR(p_oper1); \
} \
return; \
}
#endif /* PRIMS_H */