From: Levi Bard Date: Wed, 15 Apr 2009 21:02:15 +0000 (+0200) Subject: Fix GType declaration for structs X-Git-Tag: 0.7.1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79b4d15b1ed7b2810639c831f321ca3c4dd47464;p=thirdparty%2Fvala.git Fix GType declaration for structs Fixes bug 578162. --- diff --git a/gobject/valaccodestructmodule.vala b/gobject/valaccodestructmodule.vala index d1cfe5e88..7a61de852 100644 --- a/gobject/valaccodestructmodule.vala +++ b/gobject/valaccodestructmodule.vala @@ -34,6 +34,16 @@ internal class Vala.CCodeStructModule : CCodeBaseModule { return; } + if (st.has_type_id) { + decl_space.add_type_declaration (new CCodeNewline ()); + var macro = "(%s_get_type ())".printf (st.get_lower_case_cname (null)); + decl_space.add_type_declaration (new CCodeMacroReplacement (st.get_type_id (), macro)); + + var type_fun = new StructRegisterFunction (st, context); + type_fun.init_from_type (false); + decl_space.add_type_member_declaration (type_fun.get_declaration ()); + } + var instance_struct = new CCodeStruct ("_%s".printf (st.get_cname ())); foreach (Field f in st.get_fields ()) { diff --git a/gobject/valagtypemodule.vala b/gobject/valagtypemodule.vala index 8b6be984f..7a7acbb15 100644 --- a/gobject/valagtypemodule.vala +++ b/gobject/valagtypemodule.vala @@ -1760,13 +1760,10 @@ internal class Vala.GTypeModule : GErrorModule { public override void visit_struct (Struct st) { base.visit_struct (st); - source_declarations.add_type_declaration (new CCodeNewline ()); - var macro = "(%s_get_type ())".printf (st.get_lower_case_cname (null)); - source_declarations.add_type_declaration (new CCodeMacroReplacement (st.get_type_id (), macro)); - - var type_fun = new StructRegisterFunction (st, context); - type_fun.init_from_type (false); - source_declarations.add_type_member_declaration (type_fun.get_declaration ()); - source_type_member_definition.append (type_fun.get_definition ()); + if (st.has_type_id) { + var type_fun = new StructRegisterFunction (st, context); + type_fun.init_from_type (false); + source_type_member_definition.append (type_fun.get_definition ()); + } } }