MACRO: alloc-param ( out -- quot: ( len -- param ) )
[alloc-param] ;
-MACRO: unpack-params ( ins -- )
+MACRO: unpack-params ( ins -- quot )
[ c-type-count nip '[ _ firstn-unsafe ] ] map '[ _ spread ] ;
-MACRO: pack-params ( outs -- )
+MACRO: pack-params ( outs -- quot )
[ ] [ c-type-count nip dup [ [ ndip _ ] dip set-firstn ] 3curry ] reduce
fry [ call ] compose ;
[ orig>> ] , #outs , \ napply ,
] [ ] make fry \ call suffix ;
-MACRO: data-map ( ins outs -- )
+MACRO: data-map ( ins outs -- quot )
2dup
[
[ [ '[ _ >param ] ] map '[ _ spread ] ]
[ [ '[ _ alloc-param ] ] map '[ _ cleave ] ] bi* compose
[data-map] ;
-MACRO: data-map! ( ins outs -- )
+MACRO: data-map! ( ins outs -- quot )
2dup append [ '[ _ >param ] ] map '[ _ spread ] [data-map] ;
: parse-data-map-effect ( accum -- accum )