From 0cb8bc8048c318e32382277bdf622bd227f31168 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 17 May 2017 06:08:35 -0700 Subject: 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. --- lisplib.c | 2 +- share/txr/stdlib/ffi.tl | 3 +++ txr.1 | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lisplib.c b/lisplib.c index 18ade143..39159edd 100644 --- a/lisplib.c +++ b/lisplib.c @@ -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)) diff --git a/txr.1 b/txr.1 index 0202fa9f..83c20001 100644 --- a/txr.1 +++ b/txr.1 @@ -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 ) -- cgit v1.2.3