Update struct definition macro for conformed args

This commit is contained in:
Joshua Suskalo 2021-09-23 12:27:53 -05:00
parent 8ea6c27b38
commit ebe36e199c

View file

@ -1166,9 +1166,7 @@
;; TODO(Joshua): Support adding padding to the structure (and make it ;; TODO(Joshua): Support adding padding to the structure (and make it
;; extensible?) ;; extensible?)
(let [args (s/conform ::defstruct-args args)] (let [args (s/conform ::defstruct-args args)]
`(let [struct-type# [::struct [~@(->> (:fields args) `(let [struct-type# [::struct ~(mapv (juxt :field-name :field-type) (:fields args))]]
(partition 2)
(map vector))]]]
(defmethod c-layout ~(:struct-name args) (defmethod c-layout ~(:struct-name args)
[_type#] [_type#]
(c-layout struct-type#)) (c-layout struct-type#))