diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-05-17 06:08:35 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-05-17 06:08:35 -0700 |
commit | 0cb8bc8048c318e32382277bdf622bd227f31168 (patch) | |
tree | e31d70bb310f8c1b3f3c7768d9e9d5816bc8b3c7 | |
parent | 822d713065bcb44d1c1e035c34cb87fc085e74e3 (diff) | |
download | txr-0cb8bc8048c318e32382277bdf622bd227f31168.tar.gz txr-0cb8bc8048c318e32382277bdf622bd227f31168.tar.bz2 txr-0cb8bc8048c318e32382277bdf622bd227f31168.zip |
ffi: macro named ffi for type compiling shorthand.
* lisplib.c (ffi_set_entries): Add "ffi" to autoload name
list.
* share/txr/stdlib/ffi.tl (ffi): New macro.
* txr.1: Documented.
-rw-r--r-- | lisplib.c | 2 | ||||
-rw-r--r-- | share/txr/stdlib/ffi.tl | 3 | ||||
-rw-r--r-- | txr.1 | 15 |
3 files changed, 19 insertions, 1 deletions
@@ -524,7 +524,7 @@ static val ffi_set_entries(val dlt, val fun) { val name[] = { lit("with-dyn-lib"), lit("deffi"), lit("deffi-type"), lit("deffi-cb"), - lit("typedef"), lit("sizeof"), + lit("typedef"), lit("sizeof"), lit("ffi"), nil }; set_dlt_entries(dlt, name, fun); diff --git a/share/txr/stdlib/ffi.tl b/share/txr/stdlib/ffi.tl index b2a14787..902605fa 100644 --- a/share/txr/stdlib/ffi.tl +++ b/share/txr/stdlib/ffi.tl @@ -98,3 +98,6 @@ (defmacro sizeof (type) (ffi-size (ffi-type-compile type))) + +(defmacro ffi (type) + ^(ffi-type-compile ',type)) @@ -54473,6 +54473,21 @@ macro expander. That is to say, the macro expands to that integer, such that there is no run-time computation. +.coNP Macro @ ffi +.synb +.mets (ffi << type-syntax ) +.syne +.desc +The +.code ffi +macro provides a shorthand notation for compiling a literal +FFI type expression to the corresponding type object. The +following equivalence holds: + +.cblk + (ffi expr) <--> (ffi-type-compile 'expr) +.cble + .coNP Functions @ ffi-put and @ ffi-put-into .synb .mets (ffi-put < obj << type ) |