diff options
author | Johann Prieur <johann.prieur@gmail.com> | 2009-11-13 11:45:10 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2009-11-13 11:45:10 +0100 |
commit | 6fbb9d07c97ba5da2dcc95a1ae8a4a3e840c893e (patch) | |
tree | 94aa3c1d2267192c5212355acfb5af0f5731da5b /vapigen | |
parent | 47920e3768f76299eadf84d4061044bd24f25296 (diff) | |
download | vala-6fbb9d07c97ba5da2dcc95a1ae8a4a3e840c893e.tar.gz |
vapigen: Support hidden attribute for enum values
Diffstat (limited to 'vapigen')
-rw-r--r-- | vapigen/valagidlparser.vala | 32 |
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) { |