.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "B::Hooks::OP::Check 3pm" .TH B::Hooks::OP::Check 3pm "2011-09-10" "perl v5.20.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" B::Hooks::OP::Check \- Wrap OP check callbacks .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& # include "hook_op_check.h" \& \& STATIC OP *my_const_check_op (pTHX_ OP *op, void *user_data) { \& /* ... */ \& return op; \& } \& \& STATIC hook_op_check_id my_hook_id = 0; \& \& void \& setup () \& CODE: \& my_hook_id = hook_op_check (OP_CONST, my_const_check_op, NULL); \& \& void \& teardown () \& CODE: \& hook_op_check_remove (OP_CONST, my_hook_id); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module provides a c api for \s-1XS\s0 modules to hook into the callbacks of \&\f(CW\*(C`PL_check\*(C'\fR. .PP ExtUtils::Depends is used to export all functions for other \s-1XS\s0 modules to use. Include the following in your Makefile.PL: .PP .Vb 5 \& my $pkg = ExtUtils::Depends\->new(\*(AqYour::XSModule\*(Aq, \*(AqB::Hooks::OP::Check\*(Aq); \& WriteMakefile( \& ... # your normal makefile flags \& $pkg\->get_makefile_vars, \& ); .Ve .PP Your \s-1XS\s0 module can now include \f(CW\*(C`hook_op_check.h\*(C'\fR. .SH "TYPES" .IX Header "TYPES" .SS "typedef \s-1OP\s0 *(*hook_op_check_cb) (pTHX_ \s-1OP\s0 *, void *);" .IX Subsection "typedef OP *(*hook_op_check_cb) (pTHX_ OP *, void *);" Type that callbacks need to implement. .SS "typedef \s-1UV\s0 hook_op_check_id" .IX Subsection "typedef UV hook_op_check_id" Type to identify a callback. .SH "FUNCTIONS" .IX Header "FUNCTIONS" .SS "hook_op_check_id hook_op_check (opcode type, hook_op_check_cb cb, void *user_data)" .IX Subsection "hook_op_check_id hook_op_check (opcode type, hook_op_check_cb cb, void *user_data)" Register the callback \f(CW\*(C`cb\*(C'\fR to be called after the \f(CW\*(C`PL_check\*(C'\fR function for opcodes of the given \f(CW\*(C`type\*(C'\fR. \f(CW\*(C`user_data\*(C'\fR will be passed to the callback as the last argument. Returns an id that can be used to remove the callback later on. .SS "void *hook_op_check_remove (opcode type, hook_op_check_id id)" .IX Subsection "void *hook_op_check_remove (opcode type, hook_op_check_id id)" Remove the callback identified by \f(CW\*(C`id\*(C'\fR. Returns the userdata the callback had. .SH "AUTHOR" .IX Header "AUTHOR" Florian Ragwitz .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (c) 2008 Florian Ragwitz .PP This module is free software. .PP You may distribute this code under the same terms as Perl itself.