Mercurial > core / lisp/ffi/rocksdb/macs.lisp
changeset 607: |
1a5828267b90 |
parent: |
6fc04c4d465c
|
child: |
57813b8ee029 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Sun, 18 Aug 2024 21:37:07 -0400 |
permissions: |
-rw-r--r-- |
description: |
rocksdb logger function and callback macros |
1 ;;; macs.lisp --- RocksDB Alien Macros 3 ;; Convenience Macros for working with RocksDB Alien types 8 (defmacro define-full-merge-op (name &body body) 9 `(define-alien-callable ,name (* t) 10 ,*rocksdb-full-merge-lambda-list* 13 (defmacro define-partial-merge-op (name &body body) 14 `(define-alien-callable ,name (* t) 15 ,*rocksdb-partial-merge-lambda-list* 18 (defvar *rocksdb-destructor-callback* (alien-callable-function 'rocksdb-destructor)) 19 (defvar *rocksdb-delete-callback* (alien-callable-function 'rocksdb-delete-value)) 21 (defmacro define-merge-operator (name state &key full 23 (destructor 'rocksdb-destructor) 24 (delete 'rocksdb-delete-value)) 25 (with-gensyms (fmerge pmerge mcreate mname) 26 (setf fmerge (symbolicate name "-FULL-MERGE") 27 pmerge (symbolicate name "-PARTIAL-MERGE") 28 mcreate (symbolicate "CREATE-" name "-MERGEOPERATOR") 29 mname (symbolicate name "-MERGEOPERATOR-NAME")) 31 (define-full-merge-op ,fmerge ,@full) 32 (define-partial-merge-op ,pmerge ,@partial) 33 (define-alien-callable ,mname c-string () ,name) 35 (rocksdb-mergeoperator-create ,state 36 (alien-sap (alien-callable-function ',destructor)) 37 (alien-sap (alien-callable-function ',fmerge)) 38 (alien-sap (alien-callable-function ',pmerge)) 39 (alien-sap (alien-callable-function ',delete)) 40 (alien-sap (alien-callable-function ',mname)))))))