- (let* ((raw (uffi:convert-from-foreign-string
- (uffi:make-pointer
- (+ (uffi:pointer-address arrayptr) (* string-index size))
- :unsigned-char)))
- (trimmed (string-trim " " raw)))
- (if (equal trimmed "NULL") nil trimmed)))
+ (let ((str (uffi:convert-from-foreign-string
+ (uffi:make-pointer
+ (+ (uffi:pointer-address arrayptr) (* string-index size))
+ :unsigned-char))))
+ (if (string-equal str "NULL") nil str)))
+
+(defun deref-oci-int64 (arrayptr index)
+ (let ((low32 (uffi:deref-array arrayptr '(:array :unsigned-int)
+ (+ index index)))
+ (high32 (uffi:deref-array arrayptr '(:array :unsigned-int)
+ (+ 1 index index))))
+ (make-64-bit-integer high32 low32)))
+
+(defun deref-oci-int128 (arrayptr index)
+ (let* ((base (* 4 index))
+ (d (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base)))
+ (c (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base)))
+ (b (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base)))
+ (a (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base))))
+ (make-128-bit-integer a b c d)))