NAME
B::Hooks::OP::Check::StashChange - Invoke callbacks when the stash code is being compiled in changes
SYNOPSIS
From Perl
package
Foo;
our
$id
= B::Hooks::OP::Check::StashChange::register(
sub
{
my
(
$new
,
$old
) =
@_
;
warn
"${old} -> ${new}"
;
});
B::Hooks::OP::Check::StashChange::unregister(
$Foo::id
);
From C/XS
#include "hooks_op_check_stashchange.h"
STATIC OP *
my_callback (pTHX_ OP
*op
, char
*new_stash
, char
*old_stash
, void
*user_data
) {
/* ... */
return
op;
}
UV id;
/* register callback */
id = hook_op_check_stashchange (cv, my_callback, NULL);
/* unregister */
hook_op_check_stashchange_remove (id);
DESCRIPTION
Perl API
register
B::Hooks::OP::Check::
# or
my
$id
= B::Hooks::OP::Check::StashChange::register(\
&callback
);
Register callback
when an opcode is being compiled in a different namespace than the previous one.
An id that can be used for later removal of the handler using unregister
is returned.
unregister
B::Hooks::OP::Check::StashChange::unregister(
$id
);
Disable the callback referenced by $id
.
C API
TYPES
OP *(*hook_op_check_stashchange_cb) (pTHX_ OP *op, const char *new_stash, const char *old_stash, void *user_data)
The type the callbacks need to implement.
FUNCTIONS
UV hook_op_check_stashchange (hook_op_check_stashchange_cb cb, void *user_data)
Register the callback cb
to be when an opcode is compiled in a different namespace than the previous. user_data
will be passed to the callback as the last argument.
Returns an id that can be used to remove the handler using hook_op_check_stashchange_remove
.
void *hook_op_check_stashchange_remove (UV id)
Remove a previously registered handler referred to by id
.
Returns the user data that was associated with the handler.
SEE ALSO
AUTHOR
Florian Ragwitz <rafl@debian.org>
COPYRIGHT AND LICENSE
Copyright (c) 2008 Florian Ragwitz
This module is free software.
You may distribute this code under the same terms as Perl itself.