# std/pcre

Dark Mode

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

# Types

    CalloutBlock = object
      version*: cint             ## Identifies version of block
      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

  Source Edit

    ExtraData = object
      flags*: clong              ## Bits for which fields are set
      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

  Source Edit

    JitCallback = proc (a: pointer): ptr JitStack {.cdecl.}

  Source Edit

    JitStack = object

  Source Edit

    JitStack16 = object

  Source Edit

    JitStack32 = object

  Source Edit

    Pcre = object

  Source Edit

    Pcre16 = object

  Source Edit

    Pcre32 = object

  Source Edit

    PJitStack {....deprecated.} = ptr JitStack

  Deprecated
  Source Edit

    PPcre {....deprecated.} = ptr Pcre

  Deprecated
  Source Edit

# Consts

    ANCHORED = 0x00000010

  Source Edit

    AUTO_CALLOUT = 0x00004000

  Source Edit

    BSR_ANYCRLF = 0x00800000

  Source Edit

    BSR_UNICODE = 0x01000000

  Source Edit

    CASELESS = 0x00000001

  Source Edit

    CONFIG_BSR = 8

  Source Edit

    CONFIG_JIT = 9

  Source Edit

    CONFIG_JITTARGET = 11

  Source Edit

    CONFIG_LINK_SIZE = 2

  Source Edit

    CONFIG_MATCH_LIMIT = 4

  Source Edit

    CONFIG_MATCH_LIMIT_RECURSION = 7

  Source Edit

    CONFIG_NEWLINE = 1

  Source Edit

    CONFIG_PARENS_LIMIT = 13

  Source Edit

    CONFIG_POSIX_MALLOC_THRESHOLD = 3

  Source Edit

    CONFIG_STACKRECURSE = 5

  Source Edit

    CONFIG_UNICODE_PROPERTIES = 6

  Source Edit

    CONFIG_UTF8 = 0

  Source Edit

    CONFIG_UTF16 = 10

  Source Edit

    CONFIG_UTF32 = 12

  Source Edit

    DFA_RESTART = 0x00020000

  Source Edit

    DFA_SHORTEST = 0x00010000

  Source Edit

    DOLLAR_ENDONLY = 0x00000020

  Source Edit

    DOTALL = 0x00000004

  Source Edit

    DUPNAMES = 0x00080000

  Source Edit

    ERROR_BADCOUNT = -15

  Source Edit

    ERROR_BADENDIANNESS = -29

  Source Edit

    ERROR_BADLENGTH = -32

  Source Edit

    ERROR_BADMAGIC = -4

  Source Edit

    ERROR_BADMODE = -28

  Source Edit

    ERROR_BADNEWLINE = -23

  Source Edit

    ERROR_BADOFFSET = -24

  Source Edit

    ERROR_BADOPTION = -3

  Source Edit

    ERROR_BADPARTIAL = -13

  Source Edit

    ERROR_BADUTF8 = -10

  Same for 8/16/32 Source Edit

    ERROR_BADUTF8_OFFSET = -11

  Same for 8/16 Source Edit

    ERROR_BADUTF16 = -10

  Same for 8/16/32 Source Edit

    ERROR_BADUTF16_OFFSET = -11

  Same for 8/16 Source Edit

    ERROR_BADUTF32 = -10

  Same for 8/16/32 Source Edit

    ERROR_CALLOUT = -9

  Never used by PCRE itself Source Edit

    ERROR_DFA_BADRESTART = -30

  Source Edit

    ERROR_DFA_RECURSE = -20

  Source Edit

    ERROR_DFA_UCOND = -17

  Source Edit

    ERROR_DFA_UITEM = -16

  Source Edit

    ERROR_DFA_UMLIMIT = -18

  Source Edit

    ERROR_DFA_WSSIZE = -19

  Source Edit

    ERROR_INTERNAL = -14

  Source Edit

    ERROR_JIT_BADOPTION = -31

  Source Edit

    ERROR_JIT_STACKLIMIT = -27

  Source Edit

    ERROR_MATCHLIMIT = -8

  Source Edit

    ERROR_NOMATCH = -1

  Source Edit

    ERROR_NOMEMORY = -6

  Source Edit

    ERROR_NOSUBSTRING = -7

  Source Edit

    ERROR_NULL = -2

  Source Edit

    ERROR_NULLWSLIMIT = -22

  No longer actually used Source Edit

    ERROR_PARTIAL = -12

  Source Edit

    ERROR_RECURSELOOP = -26

  Source Edit

    ERROR_RECURSIONLIMIT = -21

  Source Edit

    ERROR_SHORTUTF8 = -25

  Source Edit

    ERROR_SHORTUTF16 = -25

  Same for 8/16 Source Edit

    ERROR_UNKNOWN_NODE = -5

  For backward compatibility Source Edit

    ERROR_UNKNOWN_OPCODE = -5

  Source Edit

    ERROR_UNSET = -33

  Source Edit

    EXTENDED = 0x00000008

  Source Edit

    EXTRA = 0x00000040

  Source Edit

    EXTRA_CALLOUT_DATA = 0x00000004

  Source Edit

    EXTRA_EXECUTABLE_JIT = 0x00000040

  Source Edit

    EXTRA_MARK = 0x00000020

  Source Edit

    EXTRA_MATCH_LIMIT = 0x00000002

  Source Edit

    EXTRA_MATCH_LIMIT_RECURSION = 0x00000010

  Source Edit

    EXTRA_STUDY_DATA = 0x00000001

  Source Edit

    EXTRA_TABLES = 0x00000008

  Source Edit

    FIRSTLINE = 0x00040000

  Source Edit

    INFO_BACKREFMAX = 3

  Source Edit

    INFO_CAPTURECOUNT = 2

  Source Edit

    INFO_DEFAULT_TABLES = 11

  Source Edit

    INFO_FIRSTBYTE = 4

  Source Edit

    INFO_FIRSTCHAR = 4

  For backwards compatibility Source Edit

    INFO_FIRSTCHARACTER = 19

  Source Edit

    INFO_FIRSTCHARACTERFLAGS = 20

  Source Edit

    INFO_FIRSTTABLE = 5

  Source Edit

    INFO_HASCRORLF = 14

  Source Edit

    INFO_JCHANGED = 13

  Source Edit

    INFO_JIT = 16

  Source Edit

    INFO_JITSIZE = 17

  Source Edit

    INFO_LASTLITERAL = 6

  Source Edit

    INFO_MATCH_EMPTY = 25

  Source Edit

    INFO_MATCHLIMIT = 23

  Source Edit

    INFO_MAXLOOKBEHIND = 18

  Source Edit

    INFO_MINLENGTH = 15

  Source Edit

    INFO_NAMECOUNT = 8

  Source Edit

    INFO_NAMEENTRYSIZE = 7

  Source Edit

    INFO_NAMETABLE = 9

  Source Edit

    INFO_OKPARTIAL = 12

  Source Edit

    INFO_OPTIONS = 0

  Source Edit

    INFO_RECURSIONLIMIT = 24

  Source Edit

    INFO_REQUIREDCHAR = 21

  Source Edit

    INFO_REQUIREDCHARFLAGS = 22

  Source Edit

    INFO_SIZE = 1

  Source Edit

    INFO_STUDYSIZE = 10

  Source Edit

    JAVASCRIPT_COMPAT = 0x02000000

  Source Edit

    MULTILINE = 0x00000002

  Source Edit

    NEVER_UTF = 0x00010000

  Source Edit

    NEWLINE_ANY = 0x00400000

  Source Edit

    NEWLINE_ANYCRLF = 0x00500000

  Source Edit

    NEWLINE_CR = 0x00100000

  Source Edit

    NEWLINE_CRLF = 0x00300000

  Source Edit

    NEWLINE_LF = 0x00200000

  Source Edit

    NO_AUTO_CAPTURE = 0x00001000

  Source Edit

    NO_AUTO_POSSESS = 0x00020000

  Source Edit

    NO_START_OPTIMISE = 0x04000000

  Source Edit

    NO_START_OPTIMIZE = 0x04000000

  Source Edit

    NO_UTF8_CHECK = 0x00002000

  Source Edit

    NO_UTF16_CHECK = 0x00002000

  Source Edit

    NO_UTF32_CHECK = 0x00002000

  Source Edit

    NOTBOL = 0x00000080

  Source Edit

    NOTEMPTY = 0x00000400

  Source Edit

    NOTEMPTY_ATSTART = 0x10000000

  Source Edit

    NOTEOL = 0x00000100

  Source Edit

    PARTIAL = 0x00008000

  Source Edit

    PARTIAL_HARD = 0x08000000

  Source Edit

    PARTIAL_SOFT = 0x00008000

  Source Edit

    PCRE_DATE = "2014-09-26"

  Source Edit

    PCRE_MAJOR = 8

  Source Edit

    PCRE_MINOR = 36

  Source Edit

    PCRE_PRERELEASE = true

  Source Edit

    STUDY_EXTRA_NEEDED = 0x00000008

  Source Edit

    STUDY_JIT_COMPILE = 0x00000001

  Source Edit

    STUDY_JIT_PARTIAL_HARD_COMPILE = 0x00000004

  Source Edit

    STUDY_JIT_PARTIAL_SOFT_COMPILE = 0x00000002

  Source Edit

    UCP = 0x20000000

  Source Edit

    UNGREEDY = 0x00000200

  Source Edit

    UTF8 = 0x00000800

  Source Edit

    UTF8_ERR0 = 0

  Source Edit

    UTF8_ERR1 = 1

  Source Edit

    UTF8_ERR2 = 2

  Source Edit

    UTF8_ERR3 = 3

  Source Edit

    UTF8_ERR4 = 4

  Source Edit

    UTF8_ERR5 = 5

  Source Edit

    UTF8_ERR6 = 6

  Source Edit

    UTF8_ERR7 = 7

  Source Edit

    UTF8_ERR8 = 8

  Source Edit

    UTF8_ERR9 = 9

  Source Edit

    UTF8_ERR10 = 10

  Source Edit

    UTF8_ERR11 = 11

  Source Edit

    UTF8_ERR12 = 12

  Source Edit

    UTF8_ERR13 = 13

  Source Edit

    UTF8_ERR14 = 14

  Source Edit

    UTF8_ERR15 = 15

  Source Edit

    UTF8_ERR16 = 16

  Source Edit

    UTF8_ERR17 = 17

  Source Edit

    UTF8_ERR18 = 18

  Source Edit

    UTF8_ERR19 = 19

  Source Edit

    UTF8_ERR20 = 20

  Source Edit

    UTF8_ERR21 = 21

  Source Edit

    UTF8_ERR22 = 22

  Source Edit

    UTF16 = 0x00000800

  Source Edit

    UTF16_ERR0 = 0

  Source Edit

    UTF16_ERR1 = 1

  Source Edit

    UTF16_ERR2 = 2

  Source Edit

    UTF16_ERR3 = 3

  Source Edit

    UTF16_ERR4 = 4

  Source Edit

    UTF32 = 0x00000800

  Source Edit

    UTF32_ERR0 = 0

  Source Edit

    UTF32_ERR1 = 1

  Source Edit

    UTF32_ERR2 = 2

  Source Edit

    UTF32_ERR3 = 3

  Source Edit

# Procs

    proc assign_jit_stack(extra: ptr ExtraData; callback: JitCallback; data: pointer) {.
        cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc compile(pattern: cstring; options: cint; errptr: ptr cstring;
                 erroffset: ptr cint; tableptr: pointer): ptr Pcre {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc compile2(pattern: cstring; options: cint; errorcodeptr: ptr cint;
                  errptr: ptr cstring; erroffset: ptr cint; tableptr: pointer): ptr Pcre {.
        cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc config(what: cint; where: pointer): cint {.cdecl, importc: "pcre_$1",
        ...raises: [], tags: [].}

  Source Edit

    proc copy_named_substring(code: ptr Pcre; subject: cstring; ovector: ptr cint;
                              stringcount: cint; stringname: cstring;
                              buffer: cstring; buffersize: cint): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc copy_substring(subject: cstring; ovector: ptr cint; stringcount: cint;
                        stringnumber: cint; buffer: cstring; buffersize: cint): cint {.
        cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    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 {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc exec(code: ptr Pcre; extra: ptr ExtraData; subject: cstring; length: cint;
              startoffset: cint; options: cint; ovector: ptr cint; ovecsize: cint): cint {.
        cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc free_study(extra: ptr ExtraData) {.cdecl, importc: "pcre_$1", ...raises: [],
                                            tags: [].}

  Source Edit

    proc free_substring(stringptr: cstring) {.cdecl, importc: "pcre_$1", ...raises: [],
        tags: [].}

  Source Edit

    proc free_substring_list(stringptr: cstringArray) {.cdecl, importc: "pcre_$1",
        ...raises: [], tags: [].}

  Source Edit

    proc fullinfo(code: ptr Pcre; extra: ptr ExtraData; what: cint; where: pointer): cint {.
        cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc get_named_substring(code: ptr Pcre; subject: cstring; ovector: ptr cint;
                             stringcount: cint; stringname: cstring;
                             stringptr: cstringArray): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc get_stringnumber(code: ptr Pcre; name: cstring): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc get_stringtable_entries(code: ptr Pcre; name: cstring; first: cstringArray;
                                 last: cstringArray): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc get_substring(subject: cstring; ovector: ptr cint; stringcount: cint;
                       stringnumber: cint; stringptr: cstringArray): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc get_substring_list(subject: cstring; ovector: ptr cint; stringcount: cint;
                            listptr: ptr cstringArray): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    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 {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc jit_free_unused_memory() {.cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc jit_stack_alloc(startsize: cint; maxsize: cint): ptr JitStack {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc jit_stack_free(stack: ptr JitStack) {.cdecl, importc: "pcre_$1",
        ...raises: [], tags: [].}

  Source Edit

    proc maketables(): pointer {.cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc pattern_to_host_byte_order(code: ptr Pcre; extra: ptr ExtraData;
                                    tables: pointer): cint {.cdecl,
        importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc refcount(code: ptr Pcre; adjust: cint): cint {.cdecl, importc: "pcre_$1",
        ...raises: [], tags: [].}

  Source Edit

    proc study(code: ptr Pcre; options: cint; errptr: ptr cstring): ptr ExtraData {.
        cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit

    proc study(code: ptr Pcre; options: cint; errptr: var cstring): ptr ExtraData {.
        ...deprecated, cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Deprecated
  Source Edit

    proc version(): cstring {.cdecl, importc: "pcre_$1", ...raises: [], tags: [].}

  Source Edit