all repos — min @ 8a2bdd17ba07c08d169f0e79191d6bca6c0adefd

A small but practical concatenative programming language.

vendor/sgregex.nim

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
{.compile: "sgregex/libregex.c".}
const 
  RXSUCCESS* = 0
  RXEINMOD* = - 1
  RXEPART* = - 2
  RXEUNEXP* = - 3
  RXERANGE* = - 4
  RXELIMIT* = - 5
  RXEEMPTY* = - 6
  RXENOREF* = - 7
  RX_ALLMODS* = "mis"


type 
  srx_MemFunc* = proc (a2: pointer; a3: pointer; a4: csize): pointer

proc RX_STRLENGTHFUNC*(str: string): int = 
  return str.len

type 
  srx_Context* = pointer

{.push importc.}
proc srx_CreateExt*(str: cstring; strsize: csize; mods: cstring; errnpos: ptr cint; memfn: srx_MemFunc; memctx: pointer): ptr srx_Context
template srx_Create*(str, mods: string): ptr srx_Context = 
  srx_CreateExt(str, RX_STRLENGTHFUNC(str), mods, nil, nil, nil)

proc srx_Destroy*(R: ptr srx_Context): cint
proc srx_DumpToStdout*(R: ptr srx_Context)
proc srx_MatchExt*(R: ptr srx_Context; str: cstring; size: csize; 
                   offset: csize): cint
template srx_Match*(R, str, off: expr): expr = 
  srx_MatchExt(R, str, RX_STRLENGTHFUNC(str), off)

proc srx_GetCaptureCount*(R: ptr srx_Context): cint
proc srx_GetCaptured*(R: ptr srx_Context; which: cint; pbeg: ptr csize; 
                      pend: ptr csize): cint
proc srx_GetCapturedPtrs*(R: ptr srx_Context; which: cint; 
                          pbeg: cstringArray; pend: cstringArray): cint
proc srx_ReplaceExt*(R: ptr srx_Context; str: cstring; strsize: csize; 
                     rep: cstring; repsize: csize; outsize: ptr csize): cstring
template srx_Replace*(R, str, rep: expr): expr = 
  srx_ReplaceExt(R, str, RX_STRLENGTHFUNC(str), rep, RX_STRLENGTHFUNC(rep), nil)

proc srx_FreeReplaced*(R: ptr srx_Context; repstr: cstring)