about summary refs log tree commit diff stats
path: root/src/bindings/libunicode.nim
blob: cb041e5011f3729d21771c3b433d8554d4c8bf02 (plain) (blame)
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
type
  DynBufReallocFunc = proc(opaque: pointer, p: pointer, size: csize_t): pointer {.cdecl.}

  CharRange* = object
    len*: cint # in points, always even
    size*: cint
    points*: ptr uint32 # points sorted by increasing value
    mem_opaque*: pointer
    realloc_func*: DynBufReallocFunc

  UnicodeNormalizationEnum* {.size: sizeof(cint).} = enum
    UNICODE_NFC, UNICODE_NFD, UNICODE_NKFC, UNICODE_NKFD

{.passc: "-Ilib/".}

{.push header: "quickjs/libunicode.h", importc.}

proc cr_init*(cr: ptr CharRange, mem_opaque: pointer,
              realloc_func: DynBufReallocFunc) {.importc.}

proc cr_free*(cr: ptr CharRange) {.importc.}

proc unicode_normalize*(pdst: ptr ptr uint32, src: ptr uint32, src_len: cint,
                        n_type: UnicodeNormalizationEnum, opaque: pointer,
                        realloc_func: DynBufReallocFunc): cint {.importc.}

proc unicode_general_category*(cr: ptr CharRange, gc_name: cstring): cint {.importc.}
{.pop.}