From b5633efd891b51e1a86aef6c7ab227586a76dbdf Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Fri, 29 Feb 2008 20:58:14 +0000 Subject: [PATCH] support GLib.Error as signal parameter type, fixes bug 519415 2008-02-29 Juerg Billeter * gobject/valaccodegeneratorinterface.vala, gobject/valaccodegeneratorsignal.vala: support GLib.Error as signal parameter type, fixes bug 519415 svn path=/trunk/; revision=1066 --- ChangeLog | 6 ++++++ gobject/valaccodegeneratorinterface.vala | 4 ++++ gobject/valaccodegeneratorsignal.vala | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/ChangeLog b/ChangeLog index 657d6d8..87e4477 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2008-02-29 Jürg Billeter + * gobject/valaccodegeneratorinterface.vala, + gobject/valaccodegeneratorsignal.vala: support GLib.Error as + signal parameter type, fixes bug 519415 + +2008-02-29 Jürg Billeter + * gobject/valaccodegenerator.vala: fix try catch statements without thrown exceptions, fixes bug 506016 diff --git a/gobject/valaccodegeneratorinterface.vala b/gobject/valaccodegeneratorinterface.vala index 89d33db..13fcb45 100644 --- a/gobject/valaccodegeneratorinterface.vala +++ b/gobject/valaccodegeneratorinterface.vala @@ -214,6 +214,8 @@ public class Vala.CCodeGenerator { var params_len = params.size; if (sig.return_type is PointerType || sig.return_type.type_parameter != null) { csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER")); + } else if (sig.return_type is ErrorType) { + csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER")); } else if (sig.return_type.data_type == null) { csignew.add_argument (new CCodeConstant ("G_TYPE_NONE")); } else { @@ -223,6 +225,8 @@ public class Vala.CCodeGenerator { foreach (FormalParameter param in params) { if (param.type_reference is PointerType || param.type_reference.type_parameter != null || param.type_reference.is_ref || param.type_reference.is_out) { csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER")); + } else if (param.type_reference is ErrorType) { + csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER")); } else { csignew.add_argument (new CCodeConstant (param.type_reference.data_type.get_type_id ())); } diff --git a/gobject/valaccodegeneratorsignal.vala b/gobject/valaccodegeneratorsignal.vala index a79ca22..9c45ed7 100644 --- a/gobject/valaccodegeneratorsignal.vala +++ b/gobject/valaccodegeneratorsignal.vala @@ -27,6 +27,8 @@ public class Vala.CCodeGenerator { private string get_marshaller_type_name (DataType t) { if (t is PointerType || t.type_parameter != null || t.is_ref || t.is_out) { return ("POINTER"); + } else if (t is ErrorType) { + return ("POINTER"); } else if (t is VoidType) { return ("VOID"); } else { @@ -80,6 +82,8 @@ public class Vala.CCodeGenerator { return "gint"; } else if (t is ArrayType) { return "gpointer"; + } else if (t is ErrorType) { + return "gpointer"; } return null; @@ -208,6 +212,8 @@ public class Vala.CCodeGenerator { string get_value_function; if (p.type_reference is PointerType || p.type_reference.type_parameter != null || p.type_reference.is_ref || p.type_reference.is_out) { get_value_function = "g_value_get_pointer"; + } else if (p.type_reference is ErrorType) { + get_value_function = "g_value_get_pointer"; } else { get_value_function = p.type_reference.data_type.get_get_value_function (); } @@ -224,6 +230,8 @@ public class Vala.CCodeGenerator { CCodeFunctionCall set_fc; if (sig.return_type.type_parameter != null) { set_fc = new CCodeFunctionCall (new CCodeIdentifier ("g_value_set_pointer")); + } else if (sig.return_type is ErrorType) { + set_fc = new CCodeFunctionCall (new CCodeIdentifier ("g_value_set_pointer")); } else if (sig.return_type.data_type is Class || sig.return_type.data_type is Interface) { set_fc = new CCodeFunctionCall (new CCodeIdentifier ("g_value_take_object")); } else if (sig.return_type.data_type == string_type.data_type) { -- 2.7.4