changelog shortlog graph tags branches changeset file revisions annotate raw help

Mercurial > core / lisp/ffi/rocksdb/macs.lisp

revision 679: 12287fab15d0
parent 618: 5e57683a0c28
     1.1--- a/lisp/ffi/rocksdb/macs.lisp	Wed Sep 25 21:39:39 2024 -0400
     1.2+++ b/lisp/ffi/rocksdb/macs.lisp	Thu Sep 26 21:16:45 2024 -0400
     1.3@@ -18,6 +18,37 @@
     1.4 (deftype rocksdb-logger-function ()
     1.5   '(function (unsigned-byte string) (values)))
     1.6 
     1.7+;;; Options
     1.8+(defmacro with-latest-options (db-path (db-opts-var cf-names-var cf-opts-var) &body body)
     1.9+  ;;  TODO 2024-09-26: ignore unknown?
    1.10+  (with-gensyms (db-opts cf-names cf-opts)
    1.11+    `(with-alien ((,db-opts (* rocksdb-options))
    1.12+                  (,cf-names (* c-string))
    1.13+                  (,cf-opts (* (* rocksdb-options)))
    1.14+                  (ncols size-t)
    1.15+                  (errptr rocksdb-errptr))
    1.16+       (rocksdb-load-latest-options 
    1.17+        ,db-path 
    1.18+        (rocksdb-create-default-env) 
    1.19+        t
    1.20+        (rocksdb-cache-create-lru 1080)
    1.21+        (addr ,db-opts)
    1.22+        (addr ncols)
    1.23+        (addr ,cf-names)
    1.24+        (addr ,cf-opts)
    1.25+        errptr)
    1.26+       (let ((,db-opts-var ,db-opts)
    1.27+             (,cf-names-var (coerce
    1.28+                             (loop for i below ncols
    1.29+                                   collect (deref ,cf-names i))
    1.30+                             'vector))
    1.31+             (,cf-opts-var (coerce
    1.32+                            (loop for i below ncols
    1.33+                                  collect (deref ,cf-opts i))
    1.34+                            'vector)))
    1.35+         (unwind-protect ,@body
    1.36+           (rocksdb-load-latest-options-destroy ,db-opts ,cf-names ,cf-opts ncols))))))
    1.37+      
    1.38 ;;; Merge Ops
    1.39 (defmacro define-full-merge-op (name &body body)
    1.40   `(define-alien-callable ,name (* t)