---
name: "pcre2_callout_enumerate"
section: "3"
platform: "linux"
package: "pcre2"
version: "10.49-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/pcre2_callout_enumerate"
---

# pcre2\_callout\_enumerate(3)

Perl-compatible regular expressions (revised API)

## NAME

PCRE2 - Perl-compatible regular expressions (revised API)

## SYNOPSIS

**#include \<pcre2.h\>**

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

## 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.
