From: Rico Tzschichholz Date: Tue, 8 Feb 2022 23:05:24 +0000 (+0100) Subject: gtkmodule: Recurse inner classes of ObjectTypeSymbols X-Git-Tag: 0.48.23~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=efc75e395175f782a9b148bd0186fdb239b28f5a;p=thirdparty%2Fvala.git gtkmodule: Recurse inner classes of ObjectTypeSymbols --- diff --git a/codegen/valagtkmodule.vala b/codegen/valagtkmodule.vala index a8b0d31c0..16442f621 100644 --- a/codegen/valagtkmodule.vala +++ b/codegen/valagtkmodule.vala @@ -45,8 +45,19 @@ public class Vala.GtkModule : GSignalModule { recurse_type_id_to_vala_map (context.root); } - private void recurse_type_id_to_vala_map (Namespace ns) { - foreach (var cl in ns.get_classes()) { + private void recurse_type_id_to_vala_map (Symbol sym) { + unowned List classes; + if (sym is Namespace) { + foreach (var inner in ((Namespace) sym).get_namespaces()) { + recurse_type_id_to_vala_map (inner); + } + classes = ((Namespace) sym).get_classes (); + } else if (sym is ObjectTypeSymbol) { + classes = ((ObjectTypeSymbol) sym).get_classes (); + } else { + return; + } + foreach (var cl in classes) { if (!cl.is_compact) { var type_id = get_ccode_type_id (cl); if (type_id == null) @@ -60,9 +71,7 @@ public class Vala.GtkModule : GSignalModule { } type_id_to_vala_map.set (type_id, cl); } - } - foreach (var inner in ns.get_namespaces()) { - recurse_type_id_to_vala_map (inner); + recurse_type_id_to_vala_map (cl); } } @@ -75,14 +84,23 @@ public class Vala.GtkModule : GSignalModule { recurse_cclass_to_vala_map (context.root); } - private void recurse_cclass_to_vala_map (Namespace ns) { - foreach (var cl in ns.get_classes()) { + private void recurse_cclass_to_vala_map (Symbol sym) { + unowned List classes; + if (sym is Namespace) { + foreach (var inner in ((Namespace) sym).get_namespaces()) { + recurse_cclass_to_vala_map (inner); + } + classes = ((Namespace) sym).get_classes (); + } else if (sym is ObjectTypeSymbol) { + classes = ((ObjectTypeSymbol) sym).get_classes (); + } else { + return; + } + foreach (var cl in classes) { if (!cl.is_compact) { cclass_to_vala_map.set (get_ccode_name (cl), cl); } - } - foreach (var inner in ns.get_namespaces()) { - recurse_cclass_to_vala_map (inner); + recurse_cclass_to_vala_map (cl); } }