/* $Header: /belch_a/users/rearl/tinymuck/include/RCS/inst.h,v 1.9 90/09/28 12:16:12 rearl Exp $
 * $Log:	inst.h,v $
 * Revision 1.9  90/09/28  12:16:12  rearl
 * Added PROGRAM primitive to deal with CALLing setuid or wizard programs.
 * 
 * Revision 1.8  90/09/18  08:06:19  rearl
 * Added hash tables for primitive lookup.
 * 
 * Revision 1.7	 90/09/16  13:59:24  rearl
 * Changed CONTENTS, added EXITS and NEXT primitives.
 * 
 * Revision 1.6	 90/09/13  06:34:33  rearl
 * EXECUTE, PUT added.
 * 
 * Revision 1.5	 90/08/27  14:08:02  rearl
 * New primitives: INSTR, RINSTR, OK?, TIME.
 * 
 * Revision 1.4	 90/07/30  00:11:51  rearl
 * Added new primitives: strncmp, strcut, strlen.
 * 
 * Revision 1.3	 90/07/29  17:19:56  rearl
 * Added primitives FLAGP and GETLINK, replacing various P's and DEST,
 * added PRONOUN_SUB.
 * 
 * Revision 1.2	 90/07/19  23:14:34  casie
 * Removed log comments from top.
 * 
 *
 */

#include "copyright.h"

/* most of these are built-in functions, but some of them are not. */
#define IN_IF		   1			     /* IF */
#define IN_ADD		   2
#define IN_SUBTRACT	   3
#define IN_MULTIPLY	   4
#define IN_DIVIDE	   5
#define IN_POP		   6
#define IN_DUP		   7
#define IN_CALL		   8
#define IN_NUMBERP	   9			   /* number predicate */
#define IN_STRCMP	   10
#define IN_STRINGCMP	   11
#define IN_STRCAT	   12
#define IN_ATOI            13
#define IN_AND		   14
#define IN_OR		   15
#define IN_NOT		   16
#define IN_READ		   17
#define IN_NOTIFY	   18
#define IN_NOTIFY_EXCEPT   19
#define IN_RET		   20
#define IN_JMP		   21
#define IN_ADDPENNIES	   22
#define IN_AT		   23	 /* @ */
#define IN_BANG		   24	 /* ! */
#define IN_GETPROPVAL	   25
#define IN_GETPROPSTR	   26
#define IN_SETPROP	   27
#define IN_REMOVE_PROP	   28
#define IN_MOVETO	   29
#define IN_PENNIES	   30
#define IN_LESSTHAN	   31
#define IN_GREATHAN	   32
#define IN_EQUAL	   33
#define IN_LESSEQ	   34
#define IN_GREATEQ	   35
#define IN_RANDOM	   36
#define IN_MOD		   37
#define IN_INTOSTR	   38
#define IN_DBCOMP	   39
#define IN_DBREF	   40
#define IN_INT		   41
#define IN_VAR		   42
#define IN_SWAP		   43
#define IN_CONTENTS	   44
#define IN_NAME		   45
#define IN_SETNAME	   46
#define IN_EXPLODE	   47
#define IN_MATCH	   48
#ifdef COPYOBJ
#define IN_COPYOBJ	   49
#endif /* COPYOBJ */
#define IN_SUBST	   50
#define IN_SET		   51
#define IN_LOCATION	   52
#define IN_PLAYERP	   53
#define IN_THINGP	   54
#define IN_ROOMP	   55
#define IN_PROGRAMP	   56
#define IN_EXITP	   57
#define IN_FLAGP	   58
#define IN_OWNER	   59
#define IN_RMATCH	   60
#define IN_OVER		   61
#define IN_PICK		   62
#define IN_PUT		   63
#define IN_ROT		   64
#define IN_ROTATE	   65
#define IN_GETLINK	   66
#define IN_PRONOUN_SUB	   67
#define IN_STRNCMP	   68
#define IN_STRCUT	   69
#define IN_STRLEN	   70
#define IN_INSTR	   71
#define IN_RINSTR	   72
#define IN_OKP		   73
#define IN_TIME		   74
#define IN_EXECUTE	   75
#define IN_EXITS	   76
#define IN_NEXT		   77
#define IN_PROGRAM	   78

/* TinyMUCK 2.3 primitives */
#define IN_ONLINE	   79
#define IN_AWAKEP	   80
#define IN_CONBOOT	   81
#define IN_CONCOUNT	   82
#define IN_CONDBREF	   83
#define IN_CONHOST	   84
#define IN_CONIDLE	   85
#define IN_CONNECTIONS	   86
#define IN_CONTIME	   87
#define IN_STRINGNCMP	   88
#define IN_PROG		   89
#define IN_SELF		   90
#define IN_SYSTIME	   91
#define IN_STRFTIME	   92
#define IN_DEPTH	   93

/* TinyMAGE-only primtives */
#define IN_WILD_MATCH	   94
#define IN_PRONOUN_EVAL	   95
#define IN_CHECKFUNC	   96
#define IN_HALT		   97
#define IN_TRIGOBJ	   98

#define BASE_MIN	   1
#define BASE_MAX	   98

/* now refer to tables to map instruction number to name */
extern const char *base_inst[];

extern char * insttotext(struct inst *);
/* and declare debug instruction diagnostic routine */
extern char * debug_inst(struct inst *, struct inst *, int, dbref);