PCRE2_SERIALIZE_ENCODE(3)
π NAME π
pcre2_serialize_encode β okay bestie, this is PCRE2 - Perl-compatible regular expressions (revised API), straight out of the Library Functions Manual. Itβs the function that turns a list of compiled patterns into a byte stream you can save. Iconic storage behavior, fr fr. π
β¨ SYNOPSIS β¨
#include <pcre2.h>
int32_t pcre2_serialize_encode(const pcre2_code **codes,
int32_t number_of_codes, uint8_t **serialized_bytes,
PCRE2_SIZE *serialized_size, pcre2_general_context *gcontext);
π DESCRIPTION π
Okay so this function encodes a list of compiled patterns into a byte stream that can be saved on disc or elsewhere. Cute for storage, but read this next part twice: this is not an abstract format like Java or .NET. Conversion of the byte stream back into usable compiled patterns can only happen on a host that is running the same version of PCRE2, with the same code unit width, and the host must also have the same endianness, pointer width and PCRE2_SIZE type. No cap. π
The arguments for pcre2_serialize_encode() are lowkey the whole plot:
codesβ pointer to a vector containing the list.number_of_codesβ number of slots in the vector.serialized_bytesβ set to point to the serialized byte stream.serialized_sizeβ set to the number of bytes in the byte stream.gcontextβ pointer to a general context orNULL.
The context argument is used to obtain memory for the byte stream. When the serialized data is no longer needed, it must be freed by calling pcre2_serialize_free(). The yield of the function is the number of serialized patterns, or one of these negative error codes, which are giving βsomething went wrongβ energy:
PCRE2_ERROR_BADDATAβnumber_of_codesis zero or less.PCRE2_ERROR_BADMAGICβ mismatch of id bytes in one of the patterns.PCRE2_ERROR_MEMORYβ memory allocation failed.PCRE2_ERROR_MIXEDTABLESβ the patterns do not all use the same tables.PCRE2_ERROR_NULLβ an argument other thangcontextisNULL.
PCRE2_ERROR_BADMAGIC means either that a patternβs code has been corrupted, or that a slot in the vector does not point to a compiled pattern. So like, check your pointers and your vibes. π
There is a complete description of the PCRE2 native API in the pcre2api page and a description of the serialization functions in the pcre2serialize page. Go read those for the full lore. π¦
π Thatβs the tea from PCRE2 10.47, dated 13 August 2018. Periodt. π
π¦ where this page comes from
- fedora 43: pcre2-devel 10.47-1.fc43 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 43: pcre2-devel 10.47-1.fc43 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 44: pcre2-devel 10.47-1.fc44.1 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 44: pcre2-devel 10.47-1.fc44.1 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms