]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'gtk' of git://github.com/Blei/factor
authorAnton Gorenko <ex.rzrjck@gmail.com>
Sat, 17 Jul 2010 08:17:47 +0000 (14:17 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Sat, 17 Jul 2010 08:17:47 +0000 (14:17 +0600)
basis/gir/loader/loader.factor

index fc3de0103bc1c20ad9f314ecbe86fb1e2d05532e..0e9ed6257f00e760e9ad94d397f336bb4236e52d 100644 (file)
@@ -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 ;