PCRE2_COMPILE(3)

πŸŽ€ NAME πŸŽ€

PCRE2 - Perl-compatible regular expressions (revised API)

Hi bestie! This is the PCRE2_COMPILE(3) page from the Library Functions Manual, and the function we're actually stanning here is pcre2_callout_enumerate(). Yes, the title and the function name are doing their own thing β€” keep both in your brain, okay? πŸ’–

✨ SYNOPSIS ✨

#include <pcre2.h>

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

Okay so that's the whole shape of it. Now let's get into the lore πŸ”₯

πŸ’… 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. Periodt. The arguments are:

  • code β€” points to the compiled pattern, bestie.
  • 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().

⚠️ Important vibe check: "must return zero for success" is not a suggestion, bestie. Return zero if you want the scan to keep going. Return anything else and the whole pattern scan stops, and that value becomes the result of pcre2_callout_enumerate(). No cap.

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. Go read those if you want the full deep lore πŸ¦‹


That's the whole page, bestie! This was PCRE2 10.47, dated 23 March 2017. Stay hydrated, read your manpages, and slay your regexes πŸ’…πŸ’–

πŸ“¦ where this page comes from