summaryrefslogtreecommitdiff
path: root/vapigen
diff options
context:
space:
mode:
authorJohann Prieur <johann.prieur@gmail.com>2009-11-13 11:45:10 +0100
committerJürg Billeter <j@bitron.ch>2009-11-13 11:45:10 +0100
commit6fbb9d07c97ba5da2dcc95a1ae8a4a3e840c893e (patch)
tree94aa3c1d2267192c5212355acfb5af0f5731da5b /vapigen
parent47920e3768f76299eadf84d4061044bd24f25296 (diff)
downloadvala-6fbb9d07c97ba5da2dcc95a1ae8a4a3e840c893e.tar.gz
vapigen: Support hidden attribute for enum values
Diffstat (limited to 'vapigen')
-rw-r--r--vapigen/valagidlparser.vala32
1 files changed, 30 insertions, 2 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index e2303bcb5..2e609a163 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) {