From: Marc-André Lureau Date: Wed, 4 Aug 2010 13:05:54 +0000 (+0200) Subject: Fix default values of flag enums X-Git-Tag: 0.9.5~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54caefae22d8b3a493d07bfc11807fc3d440adc6;p=thirdparty%2Fvala.git Fix default values of flag enums Fixes bug 605812. --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 67a6d7c0e..71137b5bf 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -681,10 +681,15 @@ public class Vala.CCodeBaseModule : CCodeModule { cenum.deprecated = en.deprecated; + int flag_shift = 0; foreach (EnumValue ev in en.get_values ()) { CCodeEnumValue c_ev; if (ev.value == null) { c_ev = new CCodeEnumValue (ev.get_cname ()); + if (en.is_flags) { + c_ev.value = new CCodeConstant ("1 << %d".printf (flag_shift)); + flag_shift += 1; + } } else { ev.value.accept (codegen); c_ev = new CCodeEnumValue (ev.get_cname (), (CCodeExpression) ev.value.ccodenode);