#ifndef ICI_OP_H
#define ICI_OP_H

#ifndef ICI_OBJECT_H
#include "object.h"
#endif

/*
 * The following portion of this file exports to ici.h. --ici.h-start--
 */
struct op
{
    object_t    o_head;
    int         (*op_func)();
    int         op_ecode;       /* See OP_* below. */
    int         op_code;
};
#define opof(o) ((op_t *)o)
#define isop(o) ((o)->o_tcode == TC_OP)

#define OP_OTHER        0       /* Use op_func. */
#define OP_CALL         1
#define OP_NAMELVALUE   2
#define OP_DOT          3
#define OP_DOTKEEP      4
#define OP_DOTRKEEP     5
#define OP_ASSIGN       6
#define OP_ASSIGNLOCAL  7
#define OP_EXEC         8
#define OP_LOOP         9
#define OP_IFNOTBREAK   10
#define OP_BREAK        11
#define OP_QUOTE        12
#define OP_BINOP        13
#define OP_AT           14
#define OP_SWAP         15
#define OP_BINOP_FOR_TEMP 16
#define OP_AGGR_KEY_CALL 17
#define OP_COLON        18
#define OP_COLONCARET   19
#define OP_METHOD_CALL  20
#define OP_SUPER_CALL   21
#define OP_ASSIGNLOCALVAR 22
/*
 * End of ici.h export. --ici.h-end--
 */

#endif /* ICI_OP_H */
