diff --git a/basis/alien/parser/parser.factor b/basis/alien/parser/parser.factor index 27c3024056..1db4ca5cd8 100755 --- a/basis/alien/parser/parser.factor +++ b/basis/alien/parser/parser.factor @@ -142,12 +142,15 @@ PRIVATE> current-library get scan-function-name ";" scan-c-args make-callback-type ; -PREDICATE: alien-function-word < word +PREDICATE: alien-function-alias-word < word def>> { [ length 5 = ] [ last \ alien-invoke eq? ] } 1&& ; +PREDICATE: alien-function-word < alien-function-alias-word + [ def>> third ] [ name>> ] bi = ; + PREDICATE: alien-callback-type-word < typedef-word "callback-effect" word-prop ; diff --git a/basis/alien/prettyprint/prettyprint.factor b/basis/alien/prettyprint/prettyprint.factor index 52e9978a5f..c47dafbfce 100644 --- a/basis/alien/prettyprint/prettyprint.factor +++ b/basis/alien/prettyprint/prettyprint.factor @@ -61,22 +61,36 @@ M: typedef-word synopsis* : pprint-library ( library -- ) [ \ LIBRARY: [ text ] pprint-prefix ] when* ; +: pprint-function ( word quot -- ) + [ def>> first pprint-c-type ] + swap + [ + > fourth ] [ stack-effect in>> ] bi + pprint-function-args + ")" text block> + ] tri ; inline + +M: alien-function-alias-word definer + drop \ FUNCTION-ALIAS: \ ; ; +M: alien-function-alias-word definition drop f ; +M: alien-function-alias-word synopsis* + { + [ seeing-word ] + [ def>> second pprint-library ] + [ definer. ] + [ pprint-word ] + [ [ def>> third text ] pprint-function ] + } cleave ; + M: alien-function-word definer drop \ FUNCTION: \ ; ; -M: alien-function-word definition drop f ; M: alien-function-word synopsis* { [ seeing-word ] [ def>> second pprint-library ] [ definer. ] - [ def>> first pprint-c-type ] - [ pprint-word ] - [ - > fourth ] [ stack-effect in>> ] bi - pprint-function-args - ")" text block> - ] + [ [ pprint-word ] pprint-function ] } cleave ; M: alien-callback-type-word definer