From: Juerg Billeter Date: Fri, 19 Oct 2007 14:05:37 +0000 (+0000) Subject: fix state changes in `requires' elements support flags and use name X-Git-Tag: VALA_0_1_5~64 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3a87a25c47fa1f375d2cd0e31acbe99cf7bf0ede;p=thirdparty%2Fvala.git fix state changes in `requires' elements support flags and use name 2007-10-19 Juerg Billeter * gobject-introspection/gidlparser.c: fix state changes in `requires' elements * vapigen/valagidlparser.vala: support flags and use name attribute of object elements svn path=/trunk/; revision=657 --- diff --git a/ChangeLog b/ChangeLog index 081d706db..001d04760 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-10-19 Jürg Billeter + + * gobject-introspection/gidlparser.c: fix state changes in `requires' + elements + * vapigen/valagidlparser.vala: support flags and use name attribute + of object elements + 2007-10-19 Jürg Billeter * vala/valaenum.vala: support Flags attribute diff --git a/gobject-introspection/gidlparser.c b/gobject-introspection/gidlparser.c index b774bb984..adc0723b3 100644 --- a/gobject-introspection/gidlparser.c +++ b/gobject-introspection/gidlparser.c @@ -1945,7 +1945,8 @@ end_element_handler (GMarkupParseContext *context, ctx->state = STATE_OBJECT; break; case STATE_REQUIRES: - ctx->state = STATE_INTERFACE; + if (strcmp (element_name, "requires") == 0) + ctx->state = STATE_INTERFACE; break; case STATE_PARAMETERS: if (strcmp (element_name, "parameters") == 0) diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 82ee26c19..20871ecda 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -235,6 +235,12 @@ public class Vala.GIdlParser : CodeVisitor { en.name = fix_type_name (en.name, ns); ns.add_enum (en); current_source_file.add_node (en); + } else if (node.type == IdlNodeTypeId.FLAGS) { + var en = parse_enum ((IdlNodeEnum) node); + en.name = fix_type_name (en.name, ns); + en.is_flags = true; + ns.add_enum (en); + current_source_file.add_node (en); } else if (node.type == IdlNodeTypeId.OBJECT) { parse_object ((IdlNodeInterface) node, ns, module); } else if (node.type == IdlNodeTypeId.INTERFACE) { @@ -580,7 +586,7 @@ public class Vala.GIdlParser : CodeVisitor { } private void parse_object (IdlNodeInterface! node, Namespace! ns, IdlModule! module) { - string name = fix_type_name (node.gtype_name, ns); + string name = fix_type_name (((IdlNode) node).name, ns); string base_class = null;