[vala] codewriter: Write enum cname when it differs from the default cname



commit d3f3dbf16787e95f7bf26b2ce57e8f769f3d8309
Author: Luca Bruno <lucabru src gnome org>
Date:   Mon Apr 4 21:53:45 2011 +0200

    codewriter: Write enum cname when it differs from the default cname
    
    Based on patch by Evan Nemerson.
    
    Fixes bug 615493.

 vala/valacodewriter.vala |    4 ++++
 vala/valaenum.vala       |   11 ++++++++++-
 2 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala
index 6b83956..6c11da9 100644
--- a/vala/valacodewriter.vala
+++ b/vala/valacodewriter.vala
@@ -591,6 +591,10 @@ public class Vala.CodeWriter : CodeVisitor {
 			write_string ("has_type_id = false, ");
 		}
 
+		if (en.get_cname () != en.get_default_cname ()) {
+			write_string ("cname = \"%s\", ".printf (en.get_cname ()));
+		}
+
 		write_string ("cheader_filename = \"%s\")]".printf (get_cheaders(en)));
 
 		if (en.is_flags) {
diff --git a/vala/valaenum.vala b/vala/valaenum.vala
index f5fca29..fed3286 100644
--- a/vala/valaenum.vala
+++ b/vala/valaenum.vala
@@ -160,12 +160,21 @@ public class Vala.Enum : TypeSymbol {
 				cname = attr.get_string ("cname");
 			}
 			if (cname == null) {
-				cname = "%s%s".printf (parent_symbol.get_cprefix (), name);
+				cname = get_default_cname ();
 			}
 		}
 		return cname;
 	}
 
+	/**
+	 * Returns the default name of this enum as it is used in C code.
+	 *
+	 * @return the name to be used in C code by default
+	 */
+	public string get_default_cname () {
+		return "%s%s".printf (parent_symbol.get_cprefix (), name);
+	}
+
 	public void set_cname (string cname) {
 		this.cname = cname;
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]