summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/doc-syms.tl2
-rw-r--r--share/txr/stdlib/ffi.tl6
2 files changed, 8 insertions, 0 deletions
diff --git a/share/txr/stdlib/doc-syms.tl b/share/txr/stdlib/doc-syms.tl
index 177ac266..20e7cf0e 100644
--- a/share/txr/stdlib/doc-syms.tl
+++ b/share/txr/stdlib/doc-syms.tl
@@ -450,7 +450,9 @@
("deffi" "N-00DCE51D")
("deffi-cb" "N-00C54FC8")
("deffi-cb-unsafe" "N-00C54FC8")
+ ("deffi-struct" "N-0040FFE6")
("deffi-sym" "N-02B237BB")
+ ("deffi-union" "N-0040FFE6")
("deffi-var" "N-03C237C9")
("deffilter" "N-00BDE41F")
("define-accessor" "N-03C5F850")
diff --git a/share/txr/stdlib/ffi.tl b/share/txr/stdlib/ffi.tl
index 58729ceb..73ee1936 100644
--- a/share/txr/stdlib/ffi.tl
+++ b/share/txr/stdlib/ffi.tl
@@ -130,6 +130,12 @@
(defvarl ,var-sym (carray-cptr ,var-ref ,type-sym 1))
(defsymacro ,name (carray-ref ,var-sym 0)))))
+(defmacro deffi-struct (name . body)
+ ^(typedef ,name (struct ,name ,*body)))
+
+(defmacro deffi-union (name . body)
+ ^(typedef ,name (union ,name ,*body)))
+
(defmacro sizeof (type : (obj nil obj-p) :env menv)
(if obj-p
(if (constantp obj menv)