X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FSub%2FOp.pm;h=a3334428a1b9a0885b1cc02736530884746d31cc;hb=52c227e1dba7dd319c434e84f3a4ff2d29dd7325;hp=c7b705de91d83b91b608ddade95ea24de38f9767;hpb=45db99eaea3d62c21f1f9ca9503b671a4040af6f;p=perl%2Fmodules%2FSub-Op.git diff --git a/lib/Sub/Op.pm b/lib/Sub/Op.pm index c7b705d..a333442 100644 --- a/lib/Sub/Op.pm +++ b/lib/Sub/Op.pm @@ -50,7 +50,8 @@ In your XS file : refgen = pushmark->op_sibling; gvop = sub_op_study(o, &last_arg, &rv2cv); - /* Replace the function name by the refgen that contains the anon sub */ + /* Replace the function name by the refgen that contains + the anon sub */ op_free(rv2cv); last_arg->op_sibling = refgen; pushmark->op_sibling = refgen->op_sibling; @@ -275,27 +276,37 @@ An optional user data passed to the C and C callbacks. =back -=head2 C +=head2 C + + void sub_op_init(sub_op_config_t *c); Initializes the fields of the C object. For future compatibility, it is required to call this function with your config object before storing your actual values. It will store safe defaults for members you won't set. -=head2 C +=head2 C + + void sub_op_register(pTHX_ const sub_op_config_t *c, U32 flags); Registers a name and its configuration into L. The caller is responsible for allocating and freeing the C object. No pointer to it or to its members is kept, except if you pass the flag C in which case the configuration object will be stolen to be stored into L's internal datastructure. -=head2 C +=head2 C + + sub_op_config_t *sub_op_dup(pTHX_ const sub_op_config_t *orig); Deeply clones the specified C object. -=head2 C +=head2 C + + void sub_op_free(pTHX_ sub_op_config_t *c); Free the memory associated with the specified C object. -=head2 C +=head2 C + + OP *sub_op_study(OP *o, OP **last_arg_p, OP **rv2cv_p); Studies the subset of the optree based on C, expecting it to be an C or C op (the ones you get in the C and C callbacks). If the tree is well-formed, C<*last_arg_p> will be set to the last argument of the call, C<*rv2cv_p> to the C op that resolves the function name, and the C op will be returned. @@ -303,7 +314,10 @@ Otherwise, this function returns C. =head1 PERL API -=head2 C +=head2 C + + enable($name); + enable($name, $pkg); Enable the capture of function calls and references constructors to C<$name> in the C<$pkg> package in the current lexical scope. You must have registered an appropriate C configuration by calling the C function C in the XS section of your module. @@ -338,7 +352,10 @@ sub enable { return; } -=head2 C +=head2 C + + disable($name); + disable($name, $pkg); Disable the capture of function calls and reference constructors to C<$name> in the package C<$pkg>.