#ifndef SUB_OP_H
#define SUB_OP_H 1
+typedef OP *(*sub_op_check_t)(pTHX_ OP *, void *);
+
typedef struct {
- const char *name;
- STRLEN len;
- Perl_ppaddr_t pp;
- void (*check)(pTHX_ OP *);
-} sub_op_keyword;
+ const char *name;
+ STRLEN namelen;
+ const char *proto;
+ STRLEN protolen;
+ sub_op_check_t call;
+ sub_op_check_t ref;
+ void *ud;
+} sub_op_config_t;
+
+#define SUB_OP_REGISTER_STEAL 1
-void sub_op_register(pTHX_ const sub_op_keyword *k);
+void sub_op_init (sub_op_config_t *c);
+void sub_op_register(pTHX_ const sub_op_config_t *c, U32 flags);
+sub_op_config_t *sub_op_dup (pTHX_ const sub_op_config_t *c);
+void sub_op_free (pTHX_ sub_op_config_t *c);
+OP * sub_op_study (const OP *o, OP **last_arg_p, OP **rv2cv_p);
#endif /* SUB_OP_H */