/* instr.h */

/* contains the definitions for the object-code instructions */

#define NUM_OPERS      38
#define NUM_SCALLS     73

#define COMMA_OPER     0    /*  ,   */
#define EQ_OPER        1    /*  =   */
#define PLEQ_OPER      2    /*  +=  */
#define MIEQ_OPER      3    /*  -=  */
#define MUEQ_OPER      4    /*  *=  */
#define DIEQ_OPER      5    /*  /=  */
#define MOEQ_OPER      6    /*  %=  */
#define ANEQ_OPER      7    /*  &=  */
#define EXEQ_OPER      8    /*  ^=  */
#define OREQ_OPER      9    /*  |=  */
#define LSEQ_OPER      10   /*  <<= */
#define RSEQ_OPER      11   /*  >>= */
#define COND_OPER      12   /*  ?   */
#define OR_OPER        13   /*  ||  */
#define AND_OPER       14   /*  &&  */
#define BITOR_OPER     15   /*  |   */
#define EXOR_OPER      16   /*  ^   */
#define BITAND_OPER    17   /*  &   */
#define CONDEQ_OPER    18   /*  ==  */
#define NOTEQ_OPER     19   /*  !=  */
#define LESS_OPER      20   /*  <   */
#define LESSEQ_OPER    21   /*  <=  */
#define GREAT_OPER     22   /*  >   */
#define GREATEQ_OPER   23   /*  >=  */
#define LS_OPER        24   /*  <<  */
#define RS_OPER        25   /*  >>  */
#define ADD_OPER       26   /*  +   */
#define MIN_OPER       27   /*  -   */
#define MUL_OPER       28   /*  *   */
#define DIV_OPER       29   /*  /   */
#define MOD_OPER       30   /*  %   */
#define NOT_OPER       31   /*  !   */
#define BITNOT_OPER    32   /*  ~   */
#define POSTADD_OPER   33   /*  ++  */
#define PREADD_OPER    34   /*  ++  */
#define POSTMIN_OPER   35   /*  --  */
#define PREMIN_OPER    36   /*  --  */
#define UMIN_OPER      37   /*  -   */

/* System Calls */

/* Object Commands */

#define S_ADD_VERB       38 /* PROTO: add_verb(string action, string func) */
#define S_ADD_XVERB      39 /* PROTO: add_xverb(string action, string func) */
#define S_CALL_OTHER     40 /* call_other(object obj, string func, ...) */
#define S_ALARM          41 /* alarm(int delay, string func) */
#define S_REMOVE_ALARM   42 /* remove_alarm([string func]) */
#define S_CALLER_OBJECT  43 /* caller_object() */
#define S_CLONE_OBJECT   44 /* clone_object(object obj|string path) */
#define S_DESTRUCT       45 /* destruct(object obj) */
#define S_CONTENTS       46 /* contents(object obj) */
#define S_NEXT_OBJECT    47 /* next_object(object obj) */
#define S_LOCATION       48 /* location(object obj) */
#define S_NEXT_CHILD     49 /* next_child(object obj) */
#define S_PARENT         50 /* parent(object obj) */
#define S_NEXT_PROTO     51 /* next_proto(object obj) */
#define S_MOVE_OBJECT    52 /* move_object(object item, object dest) */
#define S_THIS_OBJECT    53 /* this_object() */
#define S_THIS_PLAYER    54 /* this_player() */

/* Flag Setting & Reading */

#define S_SET_INTERACTIVE 55 /* set_interactive() */
#define S_INTERACTIVE    56 /* interactive(object obj) */
#define S_SET_PRIV       57 /* PRIV: set_priv(object obj) */
#define S_PRIV           58 /* priv(object obj) */
#define S_IN_EDITOR      59 /* in_editor(object obj) */
#define S_CONNECTED      60 /* connected(object obj) */

/* Device Functions */

#define S_GET_DEVCONN    61 /* get_devconn(object obj) */
#define S_SEND_DEVICE    62 /* send_device(string msg) */
#define S_RECONNECT_DEVICE 63 /* PRIV: reconnect_device(object obj) */
#define S_DISCONNECT_DEVICE 64 /* disconnect device() */

/* Miscellaneous Functions */

#define S_RANDOM         65 /* random(int limit) */
#define S_TIME           66 /* time() */
#define S_MKTIME         67 /* mktime(int tm) */
#define S_TYPEOF         68 /* typeof(var x) */
#define S_COMMAND        69 /* command(string action) */

/* File Handling Functions */

#define S_COMPILE_OBJECT 70 /* compile_object(string path) */
#define S_EDIT           71 /* edit(string path) */
#define S_CAT            72 /* cat(string path) */
#define S_LS             73 /* ls(string path) */
#define S_RM             74 /* rm(string path) */
#define S_CP             75 /* cp(string path, string destpath) */
#define S_MV             76 /* mv(string path, string newpath) */
#define S_MKDIR          77 /* mkdir(string path) */
#define S_RMDIR          78 /* rmdir(string path) */
#define S_HIDE           79 /* PRIV: hide(string path) */
#define S_UNHIDE         80 /* PRIV: unhide(string path, object owner,
                                            int flags) */
#define S_CHOWN          81 /* chown(string path, object owner) */
#define S_SYSLOG         82 /* PRIV: syslog(string msg) */

/* String Manipulation */

#define S_SSCANF         83 /* sscanf(string s, string format, ...) */
#define S_SPRINTF        84 /* sprintf(string s, string format, ...) */
#define S_MIDSTR         85 /* midstr(string s, int pos, int len) */
#define S_STRLEN         86 /* strlen(s) */
#define S_LEFTSTR        87 /* leftstr(string s, int len) */
#define S_RIGHTSTR       88 /* rightstr(string s, int len) */
#define S_SUBST          89 /* subst(string s, int pos, int len, string s2) */
#define S_INSTR          90 /* instr(string s, int startpos, string search) */
#define S_OTOA           91 /* otoa(object obj) */
#define S_ITOA           92 /* itoa(int val) */
#define S_ATOI           93 /* atoi(string s) */
#define S_ATOO           94 /* atoo(string s) */
#define S_UPCASE         95 /* upcase(string s) */
#define S_DOWNCASE       96 /* downcase(string s) */
#define S_IS_LEGAL       97 /* is_legal(string s) */

/* Stuff I Forgot and Added Later */

#define S_OTOI           98 /* otoi(object o) */
#define S_ITOO           99 /* itoo(int i) */
#define S_CHMOD         100 /* chmod(string path, int flags) */
#define S_FREAD         101 /* fread(string pathname, int pos) */
#define S_FWRITE        102 /* fwrite(string pathname, string s) */
#define S_REMOVE_VERB   103 /* remove_verb(string action) */
#define S_FERASE        104 /* ferase(string pathname) */
#define S_CHR           105 /* chr(int c) */
#define S_ASC           106 /* asc(string c) */
#define S_SYSCTL        107 /* PRIV: sysctl(int oper, ...) */
#define S_PROTOTYPE     108 /* prototype(object obj) */
#define S_ITERATE       109 /* iterate(object obj, string func, ...) */
#define S_NEXT_WHO      110 /* next_who(object obj) */