From 150b2e3bec703091f23c3c49e0f04280b8c70e83 Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Thu, 27 Dec 2007 22:32:05 +0000 Subject: [PATCH] support base_class attribute for non-GObject classes 2007-12-27 Juerg Billeter * vapigen/valagidlparser.vala: support base_class attribute for non-GObject classes svn path=/trunk/; revision=797 --- ChangeLog | 5 +++++ vapigen/valagidlparser.vala | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/ChangeLog b/ChangeLog index a570708..f28f9ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2007-12-27 Jürg Billeter + * vapigen/valagidlparser.vala: support base_class attribute for + non-GObject classes + +2007-12-27 Jürg Billeter + * vala/valainterfacewriter.vala: fix symbol modifiers, based on patch by Andrea Del Signore, fixes bug 505804 diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 9245398..ca4bbdc 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -364,6 +364,8 @@ public class Vala.GIdlParser : CodeVisitor { } else { var cl = ns.scope.lookup (name) as Class; if (cl == null) { + string base_class = null; + cl = new Class (name, current_source_reference); cl.access = SymbolAccessibility.PUBLIC; @@ -373,6 +375,8 @@ public class Vala.GIdlParser : CodeVisitor { var nv = attr.split ("=", 2); if (nv[0] == "cheader_filename") { cl.add_cheader_filename (eval (nv[1])); + } else if (nv[0] == "base_class") { + base_class = eval (nv[1]); } else if (nv[0] == "hidden") { if (eval (nv[1]) == "1") { return; @@ -383,6 +387,12 @@ public class Vala.GIdlParser : CodeVisitor { ns.add_class (cl); current_source_file.add_node (cl); + + if (base_class != null) { + var parent = new UnresolvedType (); + parse_type_string (parent, base_class); + cl.add_base_type (parent); + } } current_data_type = cl; @@ -1352,6 +1362,7 @@ public class Vala.GIdlParser : CodeVisitor { } var c = new Constant (node.name, type, null, current_source_reference); + c.access = SymbolAccessibility.PUBLIC; return c; } -- 2.7.4