Coverage report: /development/source/library/com/dydra/gitlab/dydra-cgi/ffi/lisp/rdfcache/matrix.lisp
| Kind | Covered | All | % |
| expression | 0 | 291 | 0.0 |
| branch | 0 | 12 | 0.0 |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
3
;;; Matrix API: Constructors
5
(defun cursor-to-matrix (transaction-pointer cursor-pointer &key (row-offset 0) (row-limit 0))
6
(declare (type foreign-pointer transaction-pointer cursor-pointer)
7
(type fixnum row-offset row-limit))
8
(with-checked-pointer (cursor-pointer)
9
(let* ((row-count row-limit)
11
(matrix-pointer (dydra-ndk::make-term-matrix row-count column-count)))
12
(when (and row-offset (> row-offset 0))
13
(%skip cursor-pointer row-offset))
14
(loop (when (or (not (next cursor-pointer))
15
(and row-limit (= (decf row-limit) -1)))
17
(let ((context-number (cursor-context-number cursor-pointer))
18
(subject-number (cursor-subject-number cursor-pointer))
19
(predicate-number (cursor-predicate-number cursor-pointer))
20
(object-number (cursor-object-number cursor-pointer))
21
(row-index (1- (cursor-slot-value cursor-pointer 'position))))
22
(dydra-ndk::%%term-matrix-set matrix-pointer row-index 0 context-number)
23
(dydra-ndk::%%term-matrix-set matrix-pointer row-index 1 subject-number)
24
(dydra-ndk::%%term-matrix-set matrix-pointer row-index 2 predicate-number)
25
(dydra-ndk::%%term-matrix-set matrix-pointer row-index 3 object-number)))
26
;; FIXME: shrink matrix if returned rows were < ROW-LIMIT. not needed
27
;; at the moment, as SPOCQ always passes an accurate figure for ROW-LIMIT.
30
;;; this is a dumb implementation
31
;;; better is, to modify cursor-to-matrix to accept a matrix to append to directly
32
(defun cursor-append-matrix (transaction-pointer cursor-pointer %matrix &key (row-offset nil) (row-limit nil))
33
(declare (type foreign-pointer transaction-pointer cursor-pointer %matrix)
34
(type (or fixnum null) row-offset row-limit))
35
(with-checked-pointer (cursor-pointer)
36
(multiple-value-bind (%cursor-matrix count)
37
(cursor-to-matrix transaction-pointer cursor-pointer :row-offset row-offset :row-limit row-limit)
39
(setf count (dydra-ndk::term-matrix-row-count %cursor-matrix)))
40
(cond ((or (null-pointer-p %matrix)
41
(dydra-ndk::term-matrix-empty-p %matrix))
42
(values %cursor-matrix count))
44
(dydra-ndk::term-matrix-append %matrix %cursor-matrix)
45
(matrix-free %cursor-matrix)
46
(values %matrix count))))))
48
(defun list-to-matrix (data)
49
(let ((matrix-pointer (make-matrix (length data) (length (car data)))))
50
(declare (type foreign-pointer matrix-pointer))
53
do (loop for value in row
54
for column-index from 0
55
do (dydra-ndk::term-matrix-set matrix-pointer row-index column-index value)))
58
;(declaim (inline make-matrix))
59
(defun make-matrix (&optional (row-count 0) (column-count 0))
60
(dydra-ndk::make-term-matrix row-count column-count))
62
;;; Matrix API: Memory management
64
;(declaim (inline matrix-free))
65
(defun matrix-free (matrix-pointer)
66
(dydra-ndk::term-matrix-dispose matrix-pointer)
69
;(declaim (inline matrix-release))
70
(defun matrix-release (matrix-pointer)
71
(dydra-ndk::term-matrix-dispose matrix-pointer)
74
(defun/deprecated matrix-clone (matrix-pointer)
75
(dydra-ndk::term-matrix-clone matrix-pointer))
77
(defun matrix-concatenate (matrix1-pointer matrix2-pointer)
78
"Returns a new matrix which catenates the given data."
79
(declare (type foreign-pointer matrix1-pointer matrix2-pointer))
80
(with-checked-pointers (matrix1-pointer matrix2-pointer)
81
(cond ((or (null-pointer-p matrix1-pointer)
82
(dydra-ndk::term-matrix-empty-p matrix1-pointer))
83
(dydra-ndk::term-matrix-clone matrix2-pointer))
84
((or (null-pointer-p matrix2-pointer)
85
(dydra-ndk::term-matrix-empty-p matrix2-pointer))
86
(dydra-ndk::term-matrix-clone matrix1-pointer))
88
(let ((result-pointer (dydra-ndk::term-matrix-clone matrix1-pointer)))
89
(dydra-ndk::term-matrix-append result-pointer matrix2-pointer)
92
;;; Matrix API: Accessors
94
;; NOTE: all remaining call sites in SPOCQ are as follows:
95
;; (rdfcache::matrix-slot-value solutions 'rdfcache::data)
96
(defmacro matrix-slot-value (matrix-var slot-name)
97
(declare (ignore slot-name))
98
(deprecation-warning 'matrix-slot-value 'matrix-data-pointer)
99
`(dydra-ndk::term-matrix-data-pointer ,matrix-var))
101
;(declaim (inline matrix-size))
102
(defun matrix-size (matrix-pointer)
103
(dydra-ndk::term-matrix-size matrix-pointer))
105
;(declaim (inline matrix-data-pointer))
106
(defun matrix-data-pointer (matrix-pointer)
107
(dydra-ndk::term-matrix-data-pointer matrix-pointer))
109
(defun matrix-to-list (matrix-pointer)
110
(declare (type foreign-pointer matrix-pointer))
112
(dotimes (row-index (dydra-ndk::term-matrix-row-count matrix-pointer))
114
(dotimes (column-index (dydra-ndk::term-matrix-column-count matrix-pointer))
115
(push (dydra-ndk::term-matrix-get matrix-pointer row-index column-index) row))
116
(push (reverse row) rows)))
119
;(declaim (inline matrix-row-count))
120
(defun matrix-row-count (matrix-pointer)
121
(dydra-ndk::term-matrix-row-count matrix-pointer))
123
(defun matrix-row-to-list (matrix-pointer row-index)
124
(declare (type foreign-pointer matrix-pointer)
125
(type fixnum row-index))
126
;(deprecation-warning 'matrix-row-to-list 'dydra-ndk::term-matrix-row-to-list)
128
(dotimes (column-index (dydra-ndk::term-matrix-column-count matrix-pointer))
129
(push (dydra-ndk::term-matrix-get matrix-pointer row-index column-index) result))
132
;(declaim (inline matrix-column-count))
133
(defun matrix-column-count (matrix-pointer)
134
(dydra-ndk::term-matrix-column-count matrix-pointer))
136
(defun matrix-column-to-list (matrix-pointer column-index)
137
(declare (type foreign-pointer matrix-pointer)
138
(type fixnum column-index))
139
;(deprecation-warning 'matrix-column-to-list 'dydra-ndk::term-matrix-column-to-list)
141
(dotimes (row-index (dydra-ndk::term-matrix-row-count matrix-pointer))
142
(push (dydra-ndk::term-matrix-get matrix-pointer row-index column-index) result))
145
;(declaim (inline matrix-element-count))
146
(defun matrix-element-count (matrix-pointer)
147
(dydra-ndk::term-matrix-element-count matrix-pointer))
149
;(declaim (inline matrix-row-size))
150
(defun matrix-row-size (matrix-pointer)
151
(dydra-ndk::term-matrix-row-size matrix-pointer))
153
;(declaim (inline matrix-get))
154
(defun matrix-get (matrix-pointer row-index column-index)
155
(dydra-ndk::term-matrix-get matrix-pointer row-index column-index))
157
;;; Matrix API: Mutators
159
;(declaim (inline matrix-set))
160
(defun matrix-set (matrix-pointer row-index column-index element-value)
161
(dydra-ndk::term-matrix-set matrix-pointer row-index column-index element-value))
163
(defun/deprecated matrix-clear (matrix-pointer)
164
(dydra-ndk::term-matrix-clear matrix-pointer))
166
(defun/deprecated matrix-clear-row (matrix-pointer row-index)
167
(dydra-ndk::term-matrix-clear-row matrix-pointer row-index))
169
(defun/deprecated matrix-clear-column (matrix-pointer column-index)
170
(dydra-ndk::term-matrix-clear-column matrix-pointer column-index))
172
;(declaim (inline matrix-fill))
173
(defun matrix-fill (matrix-pointer element-value)
174
(dydra-ndk::term-matrix-fill matrix-pointer element-value))
176
(defun/deprecated matrix-fill-row (matrix-pointer row-index element-value)
177
(dydra-ndk::term-matrix-fill-row matrix-pointer row-index element-value))
179
(defun/deprecated matrix-fill-column (matrix-pointer column-index element-value)
180
(dydra-ndk::term-matrix-fill-column matrix-pointer column-index element-value))
182
(defun/deprecated matrix-drop-column (matrix-pointer &optional column-index)
183
(dydra-ndk::term-matrix-drop-column matrix-pointer column-index))
185
(defun/deprecated matrix-drop-columns (matrix-pointer column-indexes)
186
(dydra-ndk::term-matrix-drop-columns matrix-pointer column-indexes))
188
(defun/deprecated matrix-append-row (matrix-pointer)
189
(dydra-ndk::term-matrix-append-row matrix-pointer))
191
;(declaim (inline matrix-append-rows))
192
(defun matrix-append-rows (matrix-pointer count)
193
(dydra-ndk::term-matrix-append-rows matrix-pointer count))
195
(defun/deprecated matrix-append-column (matrix-pointer)
196
(dydra-ndk::term-matrix-append-column matrix-pointer))
198
(defun/deprecated matrix-append-columns (matrix-pointer count)
199
(dydra-ndk::term-matrix-append-columns matrix-pointer count))
201
;(declaim (inline matrix-resize))
202
(defun matrix-resize (matrix-pointer row-count &optional column-count)
203
(dydra-ndk::term-matrix-resize matrix-pointer row-count column-count))
205
(defun/deprecated matrix-sort (matrix-pointer &optional reversed)
206
(dydra-ndk::term-matrix-sort matrix-pointer reversed))
208
;(declaim (inline matrix-sort-by))
209
(defun matrix-sort-by (matrix-pointer column-indexes &optional row-count)
210
(dydra-ndk::term-matrix-sort-by matrix-pointer column-indexes row-count))
212
;;; Matrix API: Debugging
214
(defun print-matrix (matrix-pointer &optional (stream *standard-output*))
215
(dydra-ndk::print-term-matrix matrix-pointer stream))
217
;;; a place-holder for index operations
218
(defun index-match (transaction result-matrix context subject predicate-vector index-expression &optional (score-p nil))
219
(declare (ignore transaction context subject predicate-vector index-expression score-p))