.TH PCRE2_COMPILE 3 "23 March 2015" "PCRE2 10.20"
.SH NAME
PCRE2 - Perl-compatible regular expressions (revised API)
.SH SYNOPSIS
.rs
.sp
.B #include <pcre2.h>
.PP
.nf
.B int pcre2_callout_enumerate(const pcre2_code *\fIcode\fP,
.B "  int (*\fIcallback\fP)(pcre2_callout_enumerate_block *, void *),"
.B "  void *\fIcallout_data\fP);"
.fi
.
.SH DESCRIPTION
.rs
.sp
This function scans a compiled regular expression and calls the \fIcallback()\fP
function for each callout within the pattern. The yield of the function is zero
for success and non-zero otherwise. The arguments are:
.sp
  \fIcode\fP           Points to the compiled pattern
  \fIcallback\fP       The callback function
  \fIcallout_data\fP   User data that is passed to the callback
.sp
The \fIcallback()\fP function is passed a pointer to a data block containing
the following fields:
.sp
  \fIversion\fP                Block version number
  \fIpattern_position\fP       Offset to next item in pattern
  \fInext_item_length\fP       Length of next item in pattern
  \fIcallout_number\fP         Number for numbered callouts
  \fIcallout_string_offset\fP  Offset to string within pattern
  \fIcallout_string_length\fP  Length of callout string
  \fIcallout_string\fP         Points to callout string or is NULL
.sp
The second argument is the callout data that was passed to
\fBpcre2_callout_enumerate()\fP. The \fBcallback()\fP function must return zero
for success. Any other value causes the pattern scan to stop, with the value
being passed back as the result of \fBpcre2_callout_enumerate()\fP.
.P
There is a complete description of the PCRE2 native API in the
.\" HREF
\fBpcre2api\fP
.\"
page and a description of the POSIX API in the
.\" HREF
\fBpcre2posix\fP
.\"
page.
