#ifndef _PRIMS_H_f60ccbd0_ #define _PRIMS_H_f60ccbd0_ /* This software is Copyright 1989, 1990, 1992, 1993 by various individuals. Please see the accompanying file COPYRIGHT for details. */ #define __P_PROTO dbref, dbref, struct inst *, struct inst *, int *, \ struct frame * #include #include #include "db.h" #include "inst.h" #include "match.h" #include "params.h" #include "config.h" #include "inlines.h" #include "strings.h" #include "externs.h" #include "interface.h" #include "unused-arg.h" extern const char *uppercase, *lowercase; #define UPCASE(x) (uppercase[(int)(x)]) #define DOWNCASE(x) (lowercase[(int)(x)]) #define DoNullInd(x) ((x) ? (x) : "") #define CLEAR(x) do { if ((x)->type&PROG__CLEAR) interp_clear(x); } while (0) #define copyinst(a,b) copyinst_(a,b,__FILE__,__LINE__) void copyinst_(struct inst *, struct inst *, const char *, int); void copyobj(dbref, dbref, dbref); int false(struct inst *); void interp_clear(struct inst *); void interp_err(dbref, dbref, const char *, const char *); int is_home(struct inst *); int permissions(dbref, dbref); void push(struct inst *, int *, int, ...); int valid_object(struct inst *); int valid_player(struct inst *); void stack_pop_n(struct inst *, int *, int); extern int critical_start(struct frame *); #define PRIM(name)\ void prims_##name( \ UNUSED_ARG(dbref player), \ UNUSED_ARG(dbref program), \ UNUSED_ARG(struct inst *pc), \ UNUSED_ARG(struct inst *arg), \ UNUSED_ARG(int *top), \ UNUSED_ARG(struct frame *fr) \ ) #define NARGS(n) \ do { if (*top < (n)) { \ interp_err(player,program,insttotext(pc),"Stack underflow."); \ return; } } while (0) #define TOS(n) (arg+(*top)-1-(n)) #define POP(n) stack_pop_n(arg,top,(n)) /* db.h got to PUSH() first */ #define MPUSH(type,value) push(arg,top,(type),(value)) #define ABORT_INTERP(s) \ do { interp_err(player,program,insttotext(pc),(s)); return; } while (0) #define STACKROOM(n) do { if ((*top)+(n)-1 >= STACK_SIZE) \ ABORT_INTERP("Stack overflow."); } while (0) #define PGOD ProgGod(program) #define PWIZARD ProgWizard(program) #define PROYALTY ProgRoyalty(program) extern dbref program_uid(dbref, dbref, struct frame *); #define UID program_uid(program,player,fr) INLINE_FUNCTION dbref program_uid(dbref program, dbref player, struct frame *fr) { if (FLAGS(program) & SETUID) return(OWNER(program)); if (FLAGS(program) & TRIGGERUID) return(OWNER(fr->trigger)); return(OWNER(player)); } #ifdef BUILDER #define PBUILD (PWIZARD || Builder(UID) || (FLAGS(program)&BUILDER)) #else #define PBUILD 1 #endif #endif