diff options
Diffstat (limited to 'vapigen/valagidlparser.vala')
-rw-r--r-- | vapigen/valagidlparser.vala | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index c707d9f07..a5fc598c2 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -1524,6 +1524,18 @@ public class Vala.GIdlParser : CodeVisitor { if (eval (nv[1]) == "1") { cl.set_attribute ("Experimental", true); } + } else if (nv[0] == "compact") { + if (eval (nv[1]) == "1") { + cl.is_compact = true; + } + } else if (nv[0] == "ref_function") { + cl.set_attribute_string ("CCode", "ref_function", eval (nv[1])); + } else if (nv[0] == "unref_function") { + cl.set_attribute_string ("CCode", "unref_function", eval (nv[1])); + } else if (nv[0] == "copy_function") { + cl.set_attribute_string ("CCode", "copy_function", eval (nv[1])); + } else if (nv[0] == "free_function") { + cl.set_attribute_string ("CCode", "free_function", eval (nv[1])); } } } @@ -1536,8 +1548,10 @@ public class Vala.GIdlParser : CodeVisitor { var parent = parse_type_string (base_class); cl.add_base_type (parent); } else if (node.parent != null) { - var parent = parse_type_string (node.parent); - cl.add_base_type (parent); + if (!cl.is_compact) { + var parent = parse_type_string (node.parent); + cl.add_base_type (parent); + } } else { var gobject_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "GLib"), "Object"); cl.add_base_type (new UnresolvedType.from_symbol (gobject_symbol)); |