X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FSub%2FOp.pm;h=3ed2f4694cf3d3af5d238f45f3e9d514b22d4d8a;hb=HEAD;hp=c7b705de91d83b91b608ddade95ea24de38f9767;hpb=45db99eaea3d62c21f1f9ca9503b671a4040af6f;p=perl%2Fmodules%2FSub-Op.git diff --git a/lib/Sub/Op.pm b/lib/Sub/Op.pm index c7b705d..3ed2f46 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; @@ -148,7 +149,7 @@ my $sw = Variable::Magic::wizard( CORE::warn(@_) unless $_[0] =~ /^Constant subroutine.*redefined/; } if _constant_sub(do { no strict 'refs'; \&$fqn }); no strict 'refs'; - no warnings qw/prototype redefine/; + no warnings qw; *$fqn = $placeholder; } @@ -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>. @@ -395,6 +412,9 @@ I know a few ways of fixing this, but I've not yet decided on which. L 5.10. +A C compiler. +This module may happen to build with a C++ compiler as well, but don't rely on it, as no guarantee is made in this regard. + L, L. L.