PCRE2\_COMPILE(3) Library Functions Manual PCRE2\_COMPILE(3)

# [NAME](#NAME)

PCRE2 - Perl-compatible regular expressions (revised API)

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;pcre2.h&gt;**

```
int pcre2_callout_enumerate(const pcre2_code *code,
  int (*callback)(pcre2_callout_enumerate_block *, void *),
  void *callout_data);
```

# [DESCRIPTION](#DESCRIPTION)

This function scans a compiled regular expression and calls the *callback()* function for each callout within the pattern. The yield of the function is zero for success and non-zero otherwise. The arguments are:

*code* Points to the compiled pattern  
*callback* The callback function  
*callout\_data* User data that is passed to the callback

The *callback()* function is passed a pointer to a data block containing the following fields (not necessarily in this order):

uint32\_t *version* Block version number  
uint32\_t *callout\_number* Number for numbered callouts  
PCRE2\_SIZE *pattern\_position* Offset to next item in pattern  
PCRE2\_SIZE *next\_item\_length* Length of next item in pattern  
PCRE2\_SIZE *callout\_string\_offset* Offset to string within pattern  
PCRE2\_SIZE *callout\_string\_length* Length of callout string  
PCRE2\_SPTR *callout\_string* Points to callout string or is NULL

The second argument passed to the **callback()** function is the callout data that was passed to **pcre2\_callout\_enumerate()**. The **callback()** 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 **pcre2\_callout\_enumerate()**.

There is a complete description of the PCRE2 native API in the **pcre2api** page and a description of the POSIX API in the **pcre2posix** page.

23 March 2017 PCRE2 10.49

---

Document: pcre2_callout_enumerate(3) from pcre2 10.49-r1 (Chainguard OS)
Source: https://github.com/PCRE2Project/pcre2.git
