From 183a8ad6d40b68df3f83be8be0f05ff965b25303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Br=C3=BCschweiler?= Date: Fri, 16 Jul 2010 15:13:45 +0200 Subject: [PATCH] gir.loader: add GError** error parameter to functions if they declare throws="1" --- basis/gir/loader/loader.factor | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/basis/gir/loader/loader.factor b/basis/gir/loader/loader.factor index fc3de0103b..0e9ed6257f 100644 --- a/basis/gir/loader/loader.factor +++ b/basis/gir/loader/loader.factor @@ -88,11 +88,25 @@ SYMBOL: namespace-PREFIX [ load-parameter ] } cleave ; -: load-parameters ( xml callable -- callable ) +: throws-parameter ( -- parameter ) + parameter new + "error" >>name + "in" >>direction + "none" >>transfer-ownership + "GError**" >>c-type + "GLib.Error" full-type-name>type >>type ; + +: extract-parameters ( xml -- parameters ) + "parameters" tag-named "parameter" tags-named + [ xml>parameter ] map ; + +: load-parameters ( callable xml -- callable ) [ - "parameters" tag-named "parameter" tags-named - [ xml>parameter ] map - dup { f } tail? [ but-last [ t >>varargs? ] dip ] when + [ + extract-parameters + dup { f } tail? [ but-last [ t >>varargs? ] dip ] when + ] + [ "throws" attr "1" = [ throws-parameter suffix ] when ] bi >>parameters ] [ "return-value" tag-named xml>return >>return ] bi ;