101 lines
4.0 KiB

package pcre
import "go.elara.ws/pcre/lib"
type CompileOption uint32
// Compile option bits
const (
Anchored = CompileOption(lib.DPCRE2_ANCHORED)
AllowEmptyClass = CompileOption(lib.DPCRE2_ALLOW_EMPTY_CLASS)
AltBsux = CompileOption(lib.DPCRE2_ALT_BSUX)
AltCircumflex = CompileOption(lib.DPCRE2_ALT_CIRCUMFLEX)
AltVerbnames = CompileOption(lib.DPCRE2_ALT_VERBNAMES)
AutoCallout = CompileOption(lib.DPCRE2_AUTO_CALLOUT)
Caseless = CompileOption(lib.DPCRE2_CASELESS)
DollarEndOnly = CompileOption(lib.DPCRE2_DOLLAR_ENDONLY)
DotAll = CompileOption(lib.DPCRE2_DOTALL)
DupNames = CompileOption(lib.DPCRE2_DUPNAMES)
EndAnchored = CompileOption(lib.DPCRE2_ENDANCHORED)
Extended = CompileOption(lib.DPCRE2_EXTENDED)
FirstLine = CompileOption(lib.DPCRE2_FIRSTLINE)
Literal = CompileOption(lib.DPCRE2_LITERAL)
MatchInvalidUTF = CompileOption(lib.DPCRE2_MATCH_INVALID_UTF)
MatchUnsetBackref = CompileOption(lib.DPCRE2_MATCH_UNSET_BACKREF)
Multiline = CompileOption(lib.DPCRE2_MULTILINE)
NeverBackslashC = CompileOption(lib.DPCRE2_NEVER_BACKSLASH_C)
NeverUCP = CompileOption(lib.DPCRE2_NEVER_UCP)
NeverUTF = CompileOption(lib.DPCRE2_NEVER_UTF)
NoAutoCapture = CompileOption(lib.DPCRE2_NO_AUTO_CAPTURE)
NoAutoPossess = CompileOption(lib.DPCRE2_NO_AUTO_POSSESS)
NoDotStarAnchor = CompileOption(lib.DPCRE2_NO_DOTSTAR_ANCHOR)
NoStartOptimize = CompileOption(lib.DPCRE2_NO_START_OPTIMIZE)
NoUTFCheck = CompileOption(lib.DPCRE2_NO_UTF_CHECK)
UCP = CompileOption(lib.DPCRE2_UCP)
Ungreedy = CompileOption(lib.DPCRE2_UNGREEDY)
UseOffsetLimit = CompileOption(lib.DPCRE2_USE_OFFSET_LIMIT)
UTF = CompileOption(lib.DPCRE2_UTF)
type CalloutFlags uint32
const (
CalloutStartMatch = CalloutFlags(lib.DPCRE2_CALLOUT_STARTMATCH)
CalloutBacktrack = CalloutFlags(lib.DPCRE2_CALLOUT_BACKTRACK)
// CalloutBlock contains the data passed to callout functions
type CalloutBlock struct {
// Version contains the version number of the block format.
// The current version is 2.
Version uint32
// CalloutNumber contains the number of the callout, in the range 0-255.
// This is the number that follows "?C". For callouts with string arguments,
// this will always be zero.
CalloutNumber uint32
// CaptureTop contains the number of the highest numbered substring
// captured so far plus one. If no substrings have yet been captured,
// CaptureTop will be set to 1.
CaptureTop uint32
// CaptureLast contains the number of the last substring that was captured.
CaptureLast uint32
// Substrings contains all of the substrings captured so far.
Substrings []string
Mark string
// Subject contains the string passed to the match function.
Subject string
// StartMatch contains the offset within the subject at which the current match attempt started.
StartMatch uint
// CurrentPosition contains the offset of the current match pointer within the subject.
CurrentPosition uint
// PatternPosition contains the offset within the pattern string to the next item to be matched.
PatternPosition uint
// NextItemLength contains the length of the next item to be processed in the pattern string.
NextItemLength uint
// CalloutStringOffset contains the code unit offset to the start of the callout argument string within the original pattern string.
CalloutStringOffset uint
// CalloutString is the string for the callout. For numerical callouts, this will always be empty.
CalloutString string
// CalloutFlags contains the following flags:
// CalloutStartMatch
// This is set for the first callout after the start of matching for each new starting position in the subject.
// CalloutBacktrack
// This is set if there has been a matching backtrack since the previous callout, or since the start of matching if this is the first callout from a pcre2_match() run.
// Both bits are set when a backtrack has caused a "bumpalong" to a new starting position in the subject.
CalloutFlags CalloutFlags