From c4aabe2fb4c29d0cf5d8d7814580045684e51ad6 Mon Sep 17 00:00:00 2001 From: Jeremy Hughes Date: Thu, 9 Jul 2009 10:35:18 +1200 Subject: [PATCH] alien.marshall.structs: generate struct constructors --- basis/alien/marshall/structs/structs.factor | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/basis/alien/marshall/structs/structs.factor b/basis/alien/marshall/structs/structs.factor index 75c36a3cb5..b14d49762b 100644 --- a/basis/alien/marshall/structs/structs.factor +++ b/basis/alien/marshall/structs/structs.factor @@ -26,9 +26,18 @@ M: struct-wrapper dispose* underlying>> free ; [ drop swap define-struct-getter ] [ nip swap define-struct-setter ] 5 nbi ; +: define-struct-constructor ( class -- ) + { + [ name>> "<" prepend ">" append create-in ] + [ '[ _ new ] ] + [ name>> '[ _ malloc-object >>underlying ] append ] + [ name>> 1array ] + } cleave { } swap define-declared ; + :: define-struct-tuple ( name -- ) name create-in :> class class struct-wrapper { } define-tuple-class + class define-struct-constructor name c-type fields>> [ class swap {