X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FSub-Op.git;a=blobdiff_plain;f=sub_op.h;h=c66580eeb7aa7bd52c348d2f2adaec3938bcbc93;hp=161d147f80549bb5d6c6f2a5a9255198e104c4f9;hb=HEAD;hpb=a4ea0141e593c7b7afc86b15fb96d7f0ec5ab38a diff --git a/sub_op.h b/sub_op.h index 161d147..c66580e 100644 --- a/sub_op.h +++ b/sub_op.h @@ -4,13 +4,24 @@ #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 */