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

KindCoveredAll%
expression8120 6.7
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 (in-package :rdfcache)
2
 
3
 ;;; Structs
4
 
5
 (cffi:defcfun ("rdfcache_sizeof" %%sizeof) ssize_t (type struct-type))
6
 
7
 (defun %default-context-pointer ()
8
   "Return the current value of the external variable.
9
  nb. this is a symbol-macro which effects a ffi call to resolve the address."
10
   %default-context-pointer)
11
 
12
 (defun %make-term (type value &key (language (null-pointer)) (datatype (null-pointer)))
13
   (declare (type keyword type)
14
            (type foreign-pointer value))
15
   (let ((term (foreign-alloc 'term)))
16
     (setf (foreign-slot-value term 'term 'type) type
17
           (foreign-slot-value term 'term 'value) value
18
           (foreign-slot-value term 'term 'language) language
19
           (foreign-slot-value term 'term 'datatype) datatype)
20
     term))
21
 
22
 (defun %free-term (term)
23
   (declare (type foreign-pointer term))
24
   (with-checked-pointer (term)
25
     (foreign-free term)))
26
 
27
 ;;;; Structs: Triples
28
 
29
 (defun %make-triple (subject predicate object)
30
   (declare (type foreign-pointer subject predicate object))
31
   (let ((triple (foreign-alloc 'triple)))
32
     (setf (foreign-slot-value triple 'triple 'subject) subject
33
           (foreign-slot-value triple 'triple 'predicate) predicate
34
           (foreign-slot-value triple 'triple 'object) object)
35
     triple))
36
 
37
 (defun %free-triple (triple)
38
   (declare (type foreign-pointer triple))
39
   (with-checked-pointer (triple)
40
     ;(%%reset-triple triple)
41
     (foreign-free triple)))
42
 
43
 ;;;; Structs: Quads
44
 
45
 (defun %make-quad (context subject predicate object)
46
   (declare (type foreign-pointer context subject predicate object))
47
   (let ((quad (foreign-alloc 'quad)))
48
     (setf (foreign-slot-value quad 'quad 'subject) subject
49
           (foreign-slot-value quad 'quad 'predicate) predicate
50
           (foreign-slot-value quad 'quad 'object) object
51
           (foreign-slot-value quad 'quad 'context) context)
52
     quad))
53
 
54
 (defun %free-quad (quad)
55
   (declare (type foreign-pointer quad))
56
   (with-checked-pointer (quad)
57
     ;(%%reset-quad quad)
58
     (foreign-free quad)))
59
 
60
 ;;; Structs
61
 
62
 (defcfun ("spocq_term_init"      %%clear-term)   :int (term :pointer))
63
 (defcfun ("rdfcache_cursor_init" %%clear-cursor) :int (cursor :pointer))
64
 
65
 (defun %clear-term (term)
66
   (declare (type foreign-pointer term))
67
   (with-checked-pointer (term)
68
     (%%clear-term term)))
69
 
70
 (defun %clear-cursor (cursor)
71
   (declare (type foreign-pointer cursor))
72
   (with-checked-pointer (cursor)
73
     (with-checked-errno-result "rdfcache_cursor_init"
74
       (%%clear-cursor cursor))))
75
 
76
 ;;; Cursor API
77
 
78
 (declaim (inline %%skip %%next))
79
 (defcfun ("rdfcache_cursor_close" %%close) :int (cursor cursor))
80
 (defcfun ("rdfcache_cursor_skip"  %%skip)  :int (cursor cursor) (count :int))
81
 (defcfun ("rdfcache_cursor_next"  %%next)  :int (cursor cursor))
82
 
83
 (defun/deprecated %open (cursor unused revision pattern options) (values)) ;; TODO: still referenced in SPOCQ
84
 
85
 (defun %close (cursor)
86
   (declare (type foreign-pointer cursor))
87
   (with-checked-pointer (cursor)
88
     (with-checked-errno-result "rdfcache_cursor_close"
89
       (%%close cursor))))
90
 
91
 (defun %skip (cursor count)
92
   (declare (type foreign-pointer cursor)
93
            (type fixnum count))
94
   (with-checked-pointer (cursor)
95
     (with-checked-int-result "rdfcache_cursor_skip"
96
       (%%skip cursor count))))
97
 
98
 (defun %next (cursor)
99
   (declare (type foreign-pointer cursor))
100
   (with-checked-pointer (cursor)
101
     (with-checked-ssize-result "rdfcache_cursor_next"
102
       (%%next cursor))))
103
 
104
 ;;; Serialization API
105
 
106
 (defcfun ("ntriples_text_length"      %%measure-text)     ssize_t (text :string))
107
 (defcfun ("ntriples_term_length"      %%measure-term)     ssize_t (term term))
108
 (defcfun ("ntriples_triple_length"    %%measure-triple)   ssize_t (triple triple))
109
 (defcfun ("ntriples_quad_length"      %%measure-quad)     ssize_t (quad quad))
110
 (defcfun ("ntriples_text_serialize"   %%serialize-text)   ssize_t (text :string) (buffer :pointer) (buffer-size size_t))
111
 (defcfun ("ntriples_term_serialize"   %%serialize-term)   ssize_t (term term) (buffer :pointer) (buffer-size size_t))
112
 (defcfun ("ntriples_triple_serialize" %%serialize-triple) ssize_t (triple triple) (buffer :pointer) (buffer-size size_t))
113
 (defcfun ("ntriples_quad_serialize"   %%serialize-quad)   ssize_t (quad quad) (buffer :pointer) (buffer-size size_t))
114
 
115
 (defun %measure-text (text)
116
   (declare (type foreign-pointer text))
117
   (with-checked-pointer (text)
118
     (with-checked-ssize-result "ntriples_text_length"
119
       (%%measure-text text))))
120
 
121
 (defun %measure-term (term)
122
   (declare (type foreign-pointer term))
123
   (with-checked-pointer (term)
124
     (with-checked-ssize-result "ntriples_term_length"
125
       (%%measure-term term))))
126
 
127
 (defun %measure-triple (triple)
128
   (declare (type foreign-pointer triple))
129
   (with-checked-pointer (triple)
130
     (with-checked-ssize-result "ntriples_triple_length"
131
       (%%measure-triple triple))))
132
 
133
 (defun %measure-quad (quad)
134
   (declare (type foreign-pointer quad))
135
   (with-checked-pointer (quad)
136
     (with-checked-ssize-result "ntriples_quad_length"
137
       (%%measure-quad quad))))
138
 
139
 (defun %serialize-text (text buffer buffer-size)
140
   (declare (type foreign-pointer text buffer)
141
            (type fixnum buffer-size))
142
   (with-checked-pointers (text buffer)
143
     (with-checked-ssize-result "ntriples_text_serialize"
144
       (%%serialize-text text buffer buffer-size))))
145
 
146
 (defun %serialize-term (term buffer buffer-size)
147
   (declare (type foreign-pointer term buffer)
148
            (type fixnum buffer-size))
149
   (with-checked-pointers (term buffer)
150
     (with-checked-ssize-result "ntriples_term_serialize"
151
       (%%serialize-term term buffer buffer-size))))
152
 
153
 (defun %serialize-triple (triple buffer buffer-size)
154
   (declare (type foreign-pointer triple buffer)
155
            (type fixnum buffer-size))
156
   (with-checked-pointers (triple buffer)
157
     (with-checked-ssize-result "ntriples_triple_serialize"
158
       (%%serialize-triple triple buffer buffer-size))))
159
 
160
 (defun %serialize-quad (quad buffer buffer-size)
161
   (declare (type foreign-pointer quad buffer)
162
            (type fixnum buffer-size))
163
   (with-checked-pointers (quad buffer)
164
     (with-checked-ssize-result "ntriples_quad_serialize"
165
       (%%serialize-quad quad buffer buffer-size))))