[vala] vapigen: Support hidden attribute for enum values



commit 6fbb9d07c97ba5da2dcc95a1ae8a4a3e840c893e
Author: Johann Prieur <johann prieur gmail com>
Date:   Fri Nov 13 11:45:10 2009 +0100

    vapigen: Support hidden attribute for enum values

 vapigen/valagidlparser.vala |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index e2303bc..2e609a1 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -863,6 +863,21 @@ public class Vala.GIdlParser : CodeVisitor {
 		string common_prefix = null;
 		
 		foreach (weak IdlNode value in en_node.values) {
+			var val_attributes = get_attributes (value.name);
+			bool is_hidden = false;
+			if (val_attributes != null) {
+				foreach (string attr in val_attributes) {
+					var nv = attr.split ("=", 2);
+					if (nv[0] == "hidden" && eval(nv[1]) == "1") {
+						is_hidden = true;
+					}
+				}
+			}
+
+			if (is_hidden) {
+				continue;
+			}
+
 			if (common_prefix == null) {
 				common_prefix = value.name;
 				while (common_prefix.len () > 0 && !common_prefix.has_suffix ("_")) {
@@ -919,8 +934,21 @@ public class Vala.GIdlParser : CodeVisitor {
 		en.set_cprefix (common_prefix);
 		
 		foreach (weak IdlNode value2 in en_node.values) {
-			var ev = new EnumValue (value2.name.offset (common_prefix.len ()));
-			en.add_value (ev);
+			var val_attributes = get_attributes (value2.name);
+			bool is_hidden = false;
+			if (val_attributes != null) {
+				foreach (string attr in val_attributes) {
+					var nv = attr.split ("=", 2);
+					if (nv[0] == "hidden" && eval(nv[1]) == "1") {
+						is_hidden = true;
+					}
+				}
+			}
+
+			if (!is_hidden) {
+				var ev = new EnumValue (value2.name.offset (common_prefix.len ()));
+				en.add_value (ev);
+			}
 		}
 
 		if (is_errordomain) {



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