From 8d4ec22ef2ec442648e146e8f6957a9855c7aa25 Mon Sep 17 00:00:00 2001 From: Stephan Sundermann Date: Tue, 8 Oct 2013 17:46:19 +0200 Subject: [PATCH] generator: Added throws attribute to parameters This enables gapi to decide whether a parameter is really throwing or should be handled as a usual parameter. --- generator/Parameters.cs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/generator/Parameters.cs b/generator/Parameters.cs index b35b0658c..c2c50dbd6 100644 --- a/generator/Parameters.cs +++ b/generator/Parameters.cs @@ -49,6 +49,18 @@ namespace GtkSharp.Generation { get { return param_list.Count; } } + // gapi assumes GError** parameters to be error parameters in version 1 and 2 + private bool throws = false; + public bool Throws { + get { + if (ParserVersion <= 2) + return true; + if (!throws && elem.HasAttribute ("throws")) + throws = elem.GetAttributeAsBoolean ("throws"); + return throws; + } + } + public int VisibleCount { get { int visible = 0; @@ -76,7 +88,7 @@ namespace GtkSharp.Generation { if (p.IsCount) return true; - if (p.CType == "GError**") + if (p.CType == "GError**" && Throws) return true; if (HasCB || HideData) { @@ -212,7 +224,7 @@ namespace GtkSharp.Generation { } } } - } else if (p.CType == "GError**") + } else if (p.CType == "GError**" && Throws) p = new ErrorParameter (parm); else if (gen is StructBase || gen is ByRefGen) { p = new StructParameter (parm); @@ -277,5 +289,12 @@ namespace GtkSharp.Generation { return String.Join (", ", result); } } + + private int ParserVersion { + get { + XmlElement root = elem.OwnerDocument.DocumentElement; + return root.HasAttribute ("parser_version") ? int.Parse (root.GetAttribute ("parser_version")) : 1; + } + } } }