diff --git a/basis/alien/marshall/structs/structs.factor b/basis/alien/marshall/structs/structs.factor index 2fbe73563d..2ebade8f02 100644 --- a/basis/alien/marshall/structs/structs.factor +++ b/basis/alien/marshall/structs/structs.factor @@ -2,7 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.marshall arrays assocs classes.tuple combinators destructors generalizations generic -kernel libc locals parser quotations sequences slots words ; +kernel libc locals parser quotations sequences slots words +alien.structs ; IN: alien.marshall.structs M: struct-wrapper dispose* underlying>> free ; @@ -35,3 +36,6 @@ M: struct-wrapper dispose* underlying>> free ; [ type>> ] [ reader>> ] [ writer>> ] } cleave define-struct-accessors ] each ; + +: define-marshalled-struct ( name vocab fields -- ) + [ define-struct ] [ 2drop define-struct-tuple ] 3bi ; diff --git a/basis/alien/marshall/syntax/syntax.factor b/basis/alien/marshall/syntax/syntax.factor index ab794ed4a8..4453b1a405 100644 --- a/basis/alien/marshall/syntax/syntax.factor +++ b/basis/alien/marshall/syntax/syntax.factor @@ -34,3 +34,7 @@ SYNTAX: C-MARSHALLED: SYNTAX: MARSHALLED: function-types-effect marshalled-function define-declared ; + +SYNTAX: M-STRUCTURE: + scan current-vocab parse-definition + define-marshalled-struct ; diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor index ba2cbd9e53..d479e6d498 100644 --- a/basis/alien/syntax/syntax.factor +++ b/basis/alien/syntax/syntax.factor @@ -4,8 +4,7 @@ USING: accessors arrays alien alien.c-types alien.structs alien.arrays alien.strings kernel math namespaces parser sequences words quotations math.parser splitting grouping effects assocs combinators lexer strings.parser alien.parser -fry vocabs.parser words.constant alien.libraries -alien.marshall.structs ; +fry vocabs.parser words.constant alien.libraries ; IN: alien.syntax SYNTAX: DLL" lexer get skip-blank parse-string dlopen parsed ; @@ -23,8 +22,7 @@ SYNTAX: TYPEDEF: scan scan typedef ; SYNTAX: C-STRUCT: - scan current-vocab parse-definition [ define-struct ] 3keep - 2drop define-struct-tuple ; + scan current-vocab parse-definition define-struct ; SYNTAX: C-UNION: scan parse-definition define-union ;