changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate tk.lisp

changeset 8: bebb76da449c
parent: 315fedf35bc7
child: 79737134254d
author: ellis <ellis@rwest.io>
date: Sun, 07 May 2023 20:42:26 -0400
permissions: -rw-r--r--
description: tests and stuff
3
ellis <ellis@rwest.io>
parents: 0
diff changeset
1
 (in-package #:demo)
0
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
5
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
3
 (defvar *cargo-target* #P"/Users/ellis/dev/otom8/demo/target/")
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
4
 
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
5
 (defvar *rs-macros* nil)
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
6
 
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
7
 (defmacro rs-find-dll (name &optional debug)
5
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
8
   "Find the rust dll specified by NAME."
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
9
   (cond
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
10
     ((uiop:directory-exists-p (merge-pathnames *cargo-target* "release"))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
11
      `,(mkstr "./target/release/" name))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
12
     ((uiop:directory-exists-p  (merge-pathnames *cargo-target* "debug"))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
13
      `,(mkstr "./target/debug/" name))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
14
     (t (progn
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
15
 	 (uiop:run-program `("cargo" "build" ,(unless debug "--release")) :output t)
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
16
 	 `,(find-rust-dll name debug)))))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
17
 
8
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
18
 (defmacro rs-defmacro (args &body body)
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
19
   "Define a macro which expands to a string of Rust code.")
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
20
 
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
21
 (defun rs-macroexpand-1 (form &optional env))
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
22
 
bebb76da449c tests and stuff
ellis <ellis@rwest.io>
parents: 7
diff changeset
23
 (defun rs-macroexpand (env &rest body)
7
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
24
   "Cbindgen is quite the menace and really doesn't like our macros used
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
25
 to generate C FFI bindings. To compensate for this, we use a tool
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
26
 called cargo-expand by the most excellent dtolnay which expands Rust
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
27
 macros. The expansions are assembled into an equivalent Rust source
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
28
 file which cbindgen won't get stuck in an infinite compile loop on.")
315fedf35bc7 rust ffi macros, general stuff
ellis <ellis@rwest.io>
parents: 6
diff changeset
29
 
0
ellis <ellis@rwest.io>
parents:
diff changeset
30
 (defun random-id ()
ellis <ellis@rwest.io>
parents:
diff changeset
31
   (format NIL "~8,'0x-~8,'0x" (random #xFFFFFFFF) (get-universal-time)))
ellis <ellis@rwest.io>
parents:
diff changeset
32
 
ellis <ellis@rwest.io>
parents:
diff changeset
33
 (defun scan-dir (dir filename callback)
ellis <ellis@rwest.io>
parents:
diff changeset
34
   (dolist (path (directory (merge-pathnames (merge-pathnames filename "**/") dir)))
ellis <ellis@rwest.io>
parents:
diff changeset
35
     (funcall callback path)))
5
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
36
 
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
37
 (defun mkstr (&rest args)
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
38
   (with-output-to-string (s)
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
39
     (dolist (a args) (princ a s))))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
40
 
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
41
 (defun symb (&rest args)
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
42
   (values (intern (apply #'mkstr args))))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
43
 
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
44
 (defun sbq-reader (stream sub-char numarg)
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
45
   "The anaphoric sharp-backquote reader: #`((,a1))"
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
46
   (declare (ignore sub-char))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
47
   (unless numarg (setq numarg 1))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
48
   `(lambda ,(loop for i from 1 to numarg
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
49
 		  collect (symb 'a i))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
50
      ,(funcall
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
51
        (get-macro-character #\`) stream nil)))
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
52
 
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
53
 (eval-when (:execute)
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
54
   (set-dispatch-macro-character
4230ce61dcfa db ffi from cl-rocksdb
ellis <ellis@rwest.io>
parents: 3
diff changeset
55
    #\# #\` #'demo:sbq-reader))