diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/doc-syms.tl | 2 | ||||
-rw-r--r-- | share/txr/stdlib/ffi.tl | 6 |
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) |