Coverage report: /development/source/library/com/dydra/gitlab/dydra-cgi/ffi/lisp/rdfcache/utf8.lisp

KindCoveredAll%
expression036 0.0
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 (in-package :rdfcache)
2
 
3
 ;; UTF-8 String API
4
 
5
 (declaim (inline %%utf8-get-size))
6
 (defcfun ("rdfcache_utf8_get_size" %%utf8-get-size) size_t (text :string))
7
 
8
 ;(declaim (inline %%utf8-get-length))
9
 (defcfun ("rdfcache_utf8_get_length" %%utf8-get-length) size_t (text :string))
10
 
11
 (declaim (inline %%utf8-get-char))
12
 (defcfun ("rdfcache_utf8_get_char" %%utf8-get-char) wchar_t (text :string))
13
 
14
 (declaim (inline %%utf8-next-char))
15
 (defcfun ("rdfcache_utf8_next_char" %%utf8-next-char) :pointer (text :string))
16
 
17
 (declaim (inline %%utf8-validate))
18
 (defcfun ("rdfcache_utf8_validate" %%utf8-validate) :boolean (text :string))
19
 
20
 (declaim (inline %%utf8-to-utf32))
21
 (defcfun ("rdfcache_utf8_to_utf32" %%utf8-to-utf32) ssize_t (input :string) (input-size ssize_t) (output :string) (output-size size_t))
22
 
23
 #+(or )
24
 (progn
25
   (defvar &utf8-get-size   (foreign-symbol-pointer "rdfcache_utf8_get_size"))
26
   (defvar &utf8-get-length (foreign-symbol-pointer "rdfcache_utf8_get_length"))
27
   (defvar &utf8-get-char   (foreign-symbol-pointer "rdfcache_utf8_get_char"))
28
   (defvar &utf8-next-char  (foreign-symbol-pointer "rdfcache_utf8_next_char"))
29
   (defvar &utf8-validate   (foreign-symbol-pointer "rdfcache_utf8_validate"))
30
   (defvar &utf8-to-utf32   (foreign-symbol-pointer "rdfcache_utf8_to_utf32"))
31
 )
32
 
33
 (defun %%utf8-to-hexstring (str) ;; a debugging helper
34
   "Returns a hexadecimal string representation of the NUL-terminated
35
    foreign UTF-8 byte string STR."
36
   (declare (type foreign-pointer str))
37
   (with-checked-pointer (str)
38
     (let* ((+hexchars+ "0123456789abcdef")
39
            (size (%%utf8-get-size str))
40
            (string (make-string (* size 2))))
41
       (dotimes (index size)
42
         (let ((c (mem-aref str :uint8 index))
43
               (i (* index 2)))
44
           (setf (char string (+ i 0))
45
                 (aref +hexchars+ (ldb (byte 8 4) c)))
46
           (setf (char string (+ i 1))
47
                 (aref +hexchars+ (ldb (byte 4 0) c)))))
48
       string)))