changelog shortlog graph tags branches changeset files revisions annotate raw help

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

changeset 88: 17bdf95bc114
parent: 8203bd080c77
child: 53be9cb1511b
author: ellis <ellis@rwest.io>
date: Sat, 09 Dec 2023 00:56:36 -0500
permissions: -rw-r--r--
description: ffi tests
1 (in-package :rocksdb)
2 
3 ;;; Macros
4 (defmacro def-with-errptr (name result-type &rest args)
5  `(define-alien-routine ,name ,result-type ,@args (errptr rocksdb-errptr)))
6 
7 (defmacro define-opt (name &rest fields)
8  `(progn
9  (define-alien-type ,name (struct ,(symbolicate name '-t)))
10  (define-alien-routine ,(symbolicate name '-create) (* ,name))
11  (define-alien-routine ,(symbolicate name '-destroy) void
12  (opt (* ,name)))
13  ,@(dolist (f fields)
14  (if (listp f)
15  (eval
16  (nconc
17  (list
18  'define-alien-routine
19  (symbolicate name '-set- (car f))
20  'void
21  `(opt (* ,name)))
22  (cdr f)))
23  (eval
24  (list
25  'define-alien-routine
26  (symbolicate name '-set- f)
27  'void
28  `(opt (* ,name))
29  '(val boolean)))))))