/* * NAME: object.h * DESCRIPTION: constants for object.c */ # define PROP_OWNER 0 # define PROP_PERMS 1 # define PROP_VALUE 2 # define PROP_CNAME 3 # define INHERITED(prop) (sizeof(prop) == 3) # define VERB_OWNER 0 # define VERB_PERMS 1 # define VERB_ARGS 1 # define VERB_NAMES 2 # define VERB_PREP 3 # define VERB_OBJECT 4 # define VP_DOBJSHIFT 4 # define VP_IOBJSHIFT 6 # define VP_OBJMASK 0x03 # define VP_PERMMASK 0x0F # define VP_DOBJMASK (VP_OBJMASK << VP_DOBJSHIFT) # define VP_IOBJMASK (VP_OBJMASK << VP_IOBJSHIFT) # define DOBJ(perms) (-(((perms) >> VP_DOBJSHIFT) & VP_OBJMASK) - 1) # define IOBJ(perms) (-(((perms) >> VP_IOBJSHIFT) & VP_OBJMASK) - 1) # define SDOBJ(perms) (((-(perms) - 1) & VP_OBJMASK) << VP_DOBJSHIFT) # define SIOBJ(perms) (((-(perms) - 1) & VP_OBJMASK) << VP_IOBJSHIFT) # define F_PLAYER 0x0001 /* standard flags */ # define F_PROGRAMMER 0x0002 # define F_WIZARD 0x0004 # define F_OBSOLETE_1 0x0008 # define F_READ 0x0010 # define F_WRITE 0x0020 # define F_OBSOLETE_2 0x0040 # define F_FERTILE 0x0080 # define F_RECYCLING 0x0100 /* private flags */ # define F_OWNER 0x0200 # define VSPEC(prep, dobj, iobj) \ ((((prep) + 4) << 4) | ((-(iobj) - 1) << 2) | (-(dobj) - 1)) # define VSPEC_PREP(vspec) (((vspec) >> 4) - 4) # define VSPEC_DOBJ(vspec) (-((vspec) & 0x03) - 1) # define VSPEC_IOBJ(vspec) (-(((vspec) >> 2) & 0x03) - 1) # define VSPEC_ANY 0xFFFFFFFF # define VSPEC_EXEC 0xFFFFFFFE # define UNPROGRAMMED(verb) ((verb)[VERB_OBJECT] == 0)