prevent conflicts in type macros
authorJuerg Billeter <j@bitron.ch>
Sun, 2 Dec 2007 11:53:15 +0000 (11:53 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 2 Dec 2007 11:53:15 +0000 (11:53 +0000)
2007-12-02  Juerg Billeter  <j@bitron.ch>

* vala/valaclass.vala, vala/valainterface.vala: prevent conflicts in
  type macros

svn path=/trunk/; revision=747

ChangeLog
vala/valaclass.vala
vala/valainterface.vala

index f5240b1..336adad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2007-12-02  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valaclass.vala, vala/valainterface.vala: prevent conflicts in
+         type macros
+
+2007-12-02  Jürg Billeter  <j@bitron.ch>
+
        * vala/valadatatype.vala, vala/Makefile.am: rename TypeReference to
          DataType
 
index 4da15e6..404fb1e 100644 (file)
@@ -373,6 +373,16 @@ public class Vala.Class : Typesymbol {
        private string get_lower_case_csuffix () {
                if (lower_case_csuffix == null) {
                        lower_case_csuffix = camel_case_to_lower_case (name);
+
+                       // remove underscores in some cases to avoid conflicts of type macros
+                       if (lower_case_csuffix.has_prefix ("type_")) {
+                               lower_case_csuffix = "type" + lower_case_csuffix.offset ("type_".len ());
+                       } else if (lower_case_csuffix.has_prefix ("is_")) {
+                               lower_case_csuffix = "is" + lower_case_csuffix.offset ("is_".len ());
+                       }
+                       if (lower_case_csuffix.has_suffix ("_class")) {
+                               lower_case_csuffix = lower_case_csuffix.substring (0, lower_case_csuffix.len () - "_class".len ()) + "class";
+                       }
                }
                return lower_case_csuffix;
        }
index 2287c08..b330ab3 100644 (file)
@@ -215,6 +215,16 @@ public class Vala.Interface : Typesymbol {
        public string! get_lower_case_csuffix () {
                if (lower_case_csuffix == null) {
                        lower_case_csuffix = camel_case_to_lower_case (name);
+
+                       // remove underscores in some cases to avoid conflicts of type macros
+                       if (lower_case_csuffix.has_prefix ("type_")) {
+                               lower_case_csuffix = "type" + lower_case_csuffix.offset ("type_".len ());
+                       } else if (lower_case_csuffix.has_prefix ("is_")) {
+                               lower_case_csuffix = "is" + lower_case_csuffix.offset ("is_".len ());
+                       }
+                       if (lower_case_csuffix.has_suffix ("_class")) {
+                               lower_case_csuffix = lower_case_csuffix.substring (0, lower_case_csuffix.len () - "_class".len ()) + "class";
+                       }
                }
                return lower_case_csuffix;
        }