Module pcre

Exec-time and get/set-time error codesSpecific error codes for UTF-8 validity checksSpecific error codes for UTF-16 validity checksSpecific error codes for UTF-32 validity checksRequest types for pcre_fullinfo()Request types for pcre_config(). Do not re-arrange, in order to remain compatible.Request types for pcre_study(). Do not re-arrange, in order to remain compatible.Bit flags for the pcre[16|32]_extra structure. Do not re-arrange or redefine these bits, just add new ones on the end, in order to remain compatible.TypesThe structure for passing additional data to pcre_exec(). This is defined in such as way as to be extensible. Always add new fields at the end, in order to remain compatible.The structure for passing out data via the pcre_callout_function. We use a structure so that new fields can be added on the end in future versions, without changing the API of the function, thereby allowing old clients to work without modification.User defined callback which provides a stack just before the match starts.

Types

Pcre = object
  Source
Pcre16 = object
  Source
Pcre32 = object
  Source
JitStack = object
  Source
JitStack16 = object
  Source
JitStack32 = object
  Source
ExtraData = object
  flags*: clong
  study_data*: pointer         ## Opaque data from pcre_study()
  match_limit*: clong          ## Maximum number of calls to match()
  callout_data*: pointer       ## Data passed back in callouts
  tables*: pointer             ## Pointer to character tables
  match_limit_recursion*: clong ## Max recursive calls to match()
  mark*: pointer               ## For passing back a mark pointer
  executable_jit*: pointer     ## Contains a pointer to a compiled jit code
  
Bits for which fields are set   Source
CalloutBlock = object
  version*: cint
  callout_number*: cint        ## Number compiled into pattern
  offset_vector*: ptr cint      ## The offset vector
  subject*: cstring            ## The subject being matched
  subject_length*: cint        ## The length of the subject
  start_match*: cint           ## Offset to start of this match attempt
  current_position*: cint      ## Where we currently are in the subject
  capture_top*: cint           ## Max current capture
  capture_last*: cint          ## Most recently closed capture
  callout_data*: pointer       ## Data passed in with the call
  pattern_position*: cint      ## Offset to next item in the pattern
  next_item_length*: cint      ## Length of next item in the pattern
  mark*: pointer               ## Pointer to current mark or NULL
  
Identifies version of block   Source
JitCallback = proc (a: pointer): ptr JitStack {.cdecl.}
  Source
PPcre = ptr Pcre
  Source
PJitStack = ptr JitStack
  Source

Consts

PCRE_MAJOR = 8
  Source
PCRE_MINOR = 36
  Source
PCRE_PRERELEASE = true
  Source
PCRE_DATE = "2014-09-26"
  Source
CASELESS = 0x00000001
  Source
MULTILINE = 0x00000002
  Source
DOTALL = 0x00000004
  Source
EXTENDED = 0x00000008
  Source
ANCHORED = 0x00000010
  Source
DOLLAR_ENDONLY = 0x00000020
  Source
EXTRA = 0x00000040
  Source
NOTBOL = 0x00000080
  Source
NOTEOL = 0x00000100
  Source
UNGREEDY = 0x00000200
  Source
NOTEMPTY = 0x00000400
  Source
UTF8 = 0x00000800
  Source
UTF16 = 0x00000800
  Source
UTF32 = 0x00000800
  Source
NO_AUTO_CAPTURE = 0x00001000
  Source
NO_UTF8_CHECK = 0x00002000
  Source
NO_UTF16_CHECK = 0x00002000
  Source
NO_UTF32_CHECK = 0x00002000
  Source
AUTO_CALLOUT = 0x00004000
  Source
PARTIAL_SOFT = 0x00008000
  Source
PARTIAL = 0x00008000
  Source
NEVER_UTF = 0x00010000
  Source
DFA_SHORTEST = 0x00010000
  Source
NO_AUTO_POSSESS = 0x00020000
  Source
DFA_RESTART = 0x00020000
  Source
FIRSTLINE = 0x00040000
  Source
DUPNAMES = 0x00080000
  Source
NEWLINE_CR = 0x00100000
  Source
NEWLINE_LF = 0x00200000
  Source
NEWLINE_CRLF = 0x00300000
  Source
NEWLINE_ANY = 0x00400000
  Source
NEWLINE_ANYCRLF = 0x00500000
  Source
BSR_ANYCRLF = 0x00800000
  Source
BSR_UNICODE = 0x01000000
  Source
JAVASCRIPT_COMPAT = 0x02000000
  Source
NO_START_OPTIMIZE = 0x04000000
  Source
NO_START_OPTIMISE = 0x04000000
  Source
PARTIAL_HARD = 0x08000000
  Source
NOTEMPTY_ATSTART = 0x10000000
  Source
UCP = 0x20000000
  Source
ERROR_NOMATCH = -1
  Source
ERROR_NULL = -2
  Source
ERROR_BADOPTION = -3
  Source
ERROR_BADMAGIC = -4
  Source
ERROR_UNKNOWN_OPCODE = -5
  Source
ERROR_UNKNOWN_NODE = -5
For backward compatibility   Source
ERROR_NOMEMORY = -6
  Source
ERROR_NOSUBSTRING = -7
  Source
ERROR_MATCHLIMIT = -8
  Source
ERROR_CALLOUT = -9
Never used by PCRE itself   Source
ERROR_BADUTF8 = -10
Same for 8/16/32   Source
ERROR_BADUTF16 = -10
Same for 8/16/32   Source
ERROR_BADUTF32 = -10
Same for 8/16/32   Source
ERROR_BADUTF8_OFFSET = -11
Same for 8/16   Source
ERROR_BADUTF16_OFFSET = -11
Same for 8/16   Source
ERROR_PARTIAL = -12
  Source
ERROR_BADPARTIAL = -13
  Source
ERROR_INTERNAL = -14
  Source
ERROR_BADCOUNT = -15
  Source
ERROR_DFA_UITEM = -16
  Source
ERROR_DFA_UCOND = -17
  Source
ERROR_DFA_UMLIMIT = -18
  Source
ERROR_DFA_WSSIZE = -19
  Source
ERROR_DFA_RECURSE = -20
  Source
ERROR_RECURSIONLIMIT = -21
  Source
ERROR_NULLWSLIMIT = -22
No longer actually used   Source
ERROR_BADNEWLINE = -23
  Source
ERROR_BADOFFSET = -24
  Source
ERROR_SHORTUTF8 = -25
  Source
ERROR_SHORTUTF16 = -25
Same for 8/16   Source
ERROR_RECURSELOOP = -26
  Source
ERROR_JIT_STACKLIMIT = -27
  Source
ERROR_BADMODE = -28
  Source
ERROR_BADENDIANNESS = -29
  Source
ERROR_DFA_BADRESTART = -30
  Source
ERROR_JIT_BADOPTION = -31
  Source
ERROR_BADLENGTH = -32
  Source
ERROR_UNSET = -33
  Source
UTF8_ERR0 = 0
  Source
UTF8_ERR1 = 1
  Source
UTF8_ERR2 = 2
  Source
UTF8_ERR3 = 3
  Source
UTF8_ERR4 = 4
  Source
UTF8_ERR5 = 5
  Source
UTF8_ERR6 = 6
  Source
UTF8_ERR7 = 7
  Source
UTF8_ERR8 = 8
  Source
UTF8_ERR9 = 9
  Source
UTF8_ERR10 = 10
  Source
UTF8_ERR11 = 11
  Source
UTF8_ERR12 = 12
  Source
UTF8_ERR13 = 13
  Source
UTF8_ERR14 = 14
  Source
UTF8_ERR15 = 15
  Source
UTF8_ERR16 = 16
  Source
UTF8_ERR17 = 17
  Source
UTF8_ERR18 = 18
  Source
UTF8_ERR19 = 19
  Source
UTF8_ERR20 = 20
  Source
UTF8_ERR21 = 21
  Source
UTF8_ERR22 = 22
  Source
UTF16_ERR0 = 0
  Source
UTF16_ERR1 = 1
  Source
UTF16_ERR2 = 2
  Source
UTF16_ERR3 = 3
  Source
UTF16_ERR4 = 4
  Source
UTF32_ERR0 = 0
  Source
UTF32_ERR1 = 1
  Source
UTF32_ERR2 = 2
  Source
UTF32_ERR3 = 3
  Source
INFO_OPTIONS = 0
  Source
INFO_SIZE = 1
  Source
INFO_CAPTURECOUNT = 2
  Source
INFO_BACKREFMAX = 3
  Source
INFO_FIRSTBYTE = 4
  Source
INFO_FIRSTCHAR = 4
For backwards compatibility   Source
INFO_FIRSTTABLE = 5
  Source
INFO_LASTLITERAL = 6
  Source
INFO_NAMEENTRYSIZE = 7
  Source
INFO_NAMECOUNT = 8
  Source
INFO_NAMETABLE = 9
  Source
INFO_STUDYSIZE = 10
  Source
INFO_DEFAULT_TABLES = 11
  Source
INFO_OKPARTIAL = 12
  Source
INFO_JCHANGED = 13
  Source
INFO_HASCRORLF = 14
  Source
INFO_MINLENGTH = 15
  Source
INFO_JIT = 16
  Source
INFO_JITSIZE = 17
  Source
INFO_MAXLOOKBEHIND = 18
  Source
INFO_FIRSTCHARACTER = 19
  Source
INFO_FIRSTCHARACTERFLAGS = 20
  Source
INFO_REQUIREDCHAR = 21
  Source
INFO_REQUIREDCHARFLAGS = 22
  Source
INFO_MATCHLIMIT = 23
  Source
INFO_RECURSIONLIMIT = 24
  Source
INFO_MATCH_EMPTY = 25
  Source
CONFIG_UTF8 = 0
  Source
CONFIG_NEWLINE = 1
  Source
  Source
CONFIG_POSIX_MALLOC_THRESHOLD = 3
  Source
CONFIG_MATCH_LIMIT = 4
  Source
CONFIG_STACKRECURSE = 5
  Source
CONFIG_UNICODE_PROPERTIES = 6
  Source
CONFIG_MATCH_LIMIT_RECURSION = 7
  Source
CONFIG_BSR = 8
  Source
CONFIG_JIT = 9
  Source
CONFIG_UTF16 = 10
  Source
CONFIG_JITTARGET = 11
  Source
CONFIG_UTF32 = 12
  Source
CONFIG_PARENS_LIMIT = 13
  Source
STUDY_JIT_COMPILE = 0x00000001
  Source
STUDY_JIT_PARTIAL_SOFT_COMPILE = 0x00000002
  Source
STUDY_JIT_PARTIAL_HARD_COMPILE = 0x00000004
  Source
STUDY_EXTRA_NEEDED = 0x00000008
  Source
EXTRA_STUDY_DATA = 0x00000001
  Source
EXTRA_MATCH_LIMIT = 0x00000002
  Source
EXTRA_CALLOUT_DATA = 0x00000004
  Source
EXTRA_TABLES = 0x00000008
  Source
EXTRA_MATCH_LIMIT_RECURSION = 0x00000010
  Source
EXTRA_MARK = 0x00000020
  Source
EXTRA_EXECUTABLE_JIT = 0x00000040
  Source

Procs

proc compile(pattern: cstring; options: cint; errptr: ptr cstring; erroffset: ptr cint;
            tableptr: pointer): ptr Pcre
  Source
proc compile2(pattern: cstring; options: cint; errorcodeptr: ptr cint;
             errptr: ptr cstring; erroffset: ptr cint; tableptr: pointer): ptr Pcre
  Source
proc config(what: cint; where: pointer): cint
  Source
proc copy_named_substring(code: ptr Pcre; subject: cstring; ovector: ptr cint;
                         stringcount: cint; stringname: cstring; buffer: cstring;
                         buffersize: cint): cint
  Source
proc copy_substring(subject: cstring; ovector: ptr cint; stringcount: cint;
                   stringnumber: cint; buffer: cstring; buffersize: cint): cint
  Source
proc dfa_exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
             startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint;
             workspace: ptr cint; wscount: cint): cint
  Source
proc exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
         startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint): cint
  Source
proc jit_exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
             startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint;
             jstack: ptr JitStack): cint
  Source
proc free_substring(stringptr: cstring)
  Source
proc free_substring_list(stringptr: cstringArray)
  Source
proc fullinfo(code: ptr Pcre; extra: ptr ExtraData; what: cint; where: pointer): cint
  Source
proc get_named_substring(code: ptr Pcre; subject: cstring; ovector: ptr cint;
                        stringcount: cint; stringname: cstring;
                        stringptr: cstringArray): cint
  Source
proc get_stringnumber(code: ptr Pcre; name: cstring): cint
  Source
proc get_stringtable_entries(code: ptr Pcre; name: cstring; first: cstringArray;
                            last: cstringArray): cint
  Source
proc get_substring(subject: cstring; ovector: ptr cint; stringcount: cint;
                  stringnumber: cint; stringptr: cstringArray): cint
  Source
proc get_substring_list(subject: cstring; ovector: ptr cint; stringcount: cint;
                       listptr: ptr cstringArray): cint
  Source
proc maketables(): pointer
  Source
proc refcount(code: ptr Pcre; adjust: cint): cint
  Source
proc study(code: ptr Pcre; options: cint; errptr: ptr cstring): ptr ExtraData
  Source
proc free_study(extra: ptr ExtraData)
  Source
proc version(): cstring
  Source
proc pattern_to_host_byte_order(code: ptr Pcre; extra: ptr ExtraData; tables: pointer): cint
  Source
proc jit_stack_alloc(startsize: cint; maxsize: cint): ptr JitStack
  Source
proc jit_stack_free(stack: ptr JitStack)
  Source
proc assign_jit_stack(extra: ptr ExtraData; callback: JitCallback; data: pointer)
  Source
proc jit_free_unused_memory()
  Source
proc study(code: ptr Pcre; options: cint; errptr: var cstring): ptr ExtraData {.deprecated.}
  Source