From: Jürg Billeter Date: Wed, 11 Feb 2009 00:43:44 +0000 (+0000) Subject: Recognize c:type attributes in .gir X-Git-Tag: 0.5.7~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bef1a8ceb0f272a302eb158cbff43f949d72d2cb;p=thirdparty%2Fvala.git Recognize c:type attributes in .gir 2009-02-11 Jürg Billeter * vala/valaenum.vala: * vala/valainterface.vala: * vala/valastruct.vala: * vapigen/valagirparser.vala: Recognize c:type attributes in .gir svn path=/trunk/; revision=2426 --- diff --git a/ChangeLog b/ChangeLog index 9e87172c6..cd0f91d5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-02-11 Jürg Billeter + + * vala/valaenum.vala: + * vala/valainterface.vala: + * vala/valastruct.vala: + * vapigen/valagirparser.vala: + + Recognize c:type attributes in .gir + 2009-02-10 Ryan Lortie Bug 571169 – make floating references generic diff --git a/vala/valaenum.vala b/vala/valaenum.vala index 4f2a73ee5..e709f8660 100644 --- a/vala/valaenum.vala +++ b/vala/valaenum.vala @@ -132,6 +132,10 @@ public class Vala.Enum : TypeSymbol { return cname; } + public void set_cname (string cname) { + this.cname = cname; + } + public override string get_lower_case_cprefix () { if (lower_case_cprefix == null) { lower_case_cprefix = "%s_".printf (get_lower_case_cname (null)); diff --git a/vala/valainterface.vala b/vala/valainterface.vala index a998229db..66e3068e7 100644 --- a/vala/valainterface.vala +++ b/vala/valainterface.vala @@ -1,6 +1,6 @@ /* valainterface.vala * - * Copyright (C) 2006-2008 Jürg Billeter + * Copyright (C) 2006-2009 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -263,6 +263,10 @@ public class Vala.Interface : ObjectTypeSymbol { } return cname; } + + public void set_cname (string cname) { + this.cname = cname; + } /** * Returns the string to be prepended to the name of members of this diff --git a/vala/valastruct.vala b/vala/valastruct.vala index b5ef8fb68..1546af10b 100644 --- a/vala/valastruct.vala +++ b/vala/valastruct.vala @@ -229,6 +229,10 @@ public class Vala.Struct : TypeSymbol { return cname; } + public void set_cname (string cname) { + this.cname = cname; + } + /** * Returns the default name of this struct as it is used in C code. * diff --git a/vapigen/valagirparser.vala b/vapigen/valagirparser.vala index 686e1a838..e23e14c06 100644 --- a/vapigen/valagirparser.vala +++ b/vapigen/valagirparser.vala @@ -242,6 +242,12 @@ public class Vala.GirParser : CodeVisitor { start_element ("enumeration"); var en = new Enum (reader.get_attribute ("name"), get_current_src ()); en.access = SymbolAccessibility.PUBLIC; + + string enum_cname = reader.get_attribute ("c:type"); + if (enum_cname != null) { + en.set_cname (enum_cname); + } + next (); string common_prefix = null; @@ -476,6 +482,11 @@ public class Vala.GirParser : CodeVisitor { var cl = new Class (reader.get_attribute ("name"), get_current_src ()); cl.access = SymbolAccessibility.PUBLIC; + string cname = reader.get_attribute ("c:type"); + if (cname != null) { + cl.set_cname (cname); + } + string parent = reader.get_attribute ("parent"); if (parent != null) { cl.add_base_type (parse_type_from_name (parent)); @@ -573,6 +584,12 @@ public class Vala.GirParser : CodeVisitor { start_element ("interface"); var iface = new Interface (reader.get_attribute ("name"), get_current_src ()); iface.access = SymbolAccessibility.PUBLIC; + + string cname = reader.get_attribute ("c:type"); + if (cname != null) { + iface.set_cname (cname); + } + next (); var methods = new ArrayList (); var vmethods = new ArrayList (); @@ -811,6 +828,12 @@ public class Vala.GirParser : CodeVisitor { start_element ("glib:boxed"); var st = new Struct (reader.get_attribute ("glib:name")); st.access = SymbolAccessibility.PUBLIC; + + string cname = reader.get_attribute ("c:type"); + if (cname != null) { + st.set_cname (cname); + } + next (); while (current_token == MarkupTokenType.START_ELEMENT) {