.TH PCRE2_COMPILE 3 "23 March 2017" "PCRE2 10.30"
.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 (not necessarily in this order):
.sp
  uint32_t   \fIversion\fP                Block version number
  uint32_t   \fIcallout_number\fP         Number for numbered callouts
  PCRE2_SIZE \fIpattern_position\fP       Offset to next item in pattern
  PCRE2_SIZE \fInext_item_length\fP       Length of next item in pattern
  PCRE2_SIZE \fIcallout_string_offset\fP  Offset to string within pattern
  PCRE2_SIZE \fIcallout_string_length\fP  Length of callout string
  PCRE2_SPTR \fIcallout_string\fP         Points to callout string or is NULL
.sp
The second argument passed to the \fBcallback()\fP function 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.
