B::Hooks::OP::Check::StashChange.3pm

Langue: en

Version: 2009-04-19 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

B::Hooks::OP::Check::StashChange - Invoke callbacks when the stash code is being compiled in changes

SYNOPSIS

From Perl

     package Foo;
 
     use B::Hooks::OP::Check::StashChange;
 
     our $id = B::Hooks::OP::Check::StashChange::register(sub {
         my ($new, $old) = @_;
         warn "${old} -> ${new}";
     });
 
     package Bar; # "Foo -> Bar"
 
     B::Hooks::OP::Check::StashChange::unregister($Foo::id);
 
     package Moo; # callback not invoked
 
 

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

B::Hooks::OP::Check

AUTHOR

Florian Ragwitz <rafl@debian.org> Copyright (c) 2008 Florian Ragwitz

This module is free software.

You may distribute this code under the same terms as Perl itself.