Commits

Juri Pakaste committed 2ed889b

Cope better with zero value in mask enums.

  • Participants
  • Parent commits 48b67b2

Comments (0)

Files changed (1)

File nsstringgen/NSStringFromEnumGenerator.py

     ext_decl = "extern {0};".format(decl)
     defn = "{0} {{".format(decl)
 
-    lines = [ext_decl, defn]
+    startlines = [ext_decl, defn]
+    lines = []
+    zeroline = []
     lines.append("  NSMutableArray *bits = [NSMutableArray array];")
     for ev in parsed_enum.values:
-        check = "  if (v & {0}) [bits addObject:@\"{0}\"];".format(ev.name)
-        lines.append(check)
+        if ev.value == "0":
+            if len(zeroline) == 0:
+                zeroline = ["  if (v == {0}) return @\"{0}\";".format(ev.name), ""]
+        else:
+            check = "  if (v & {0}) [bits addObject:@\"{0}\"];".format(ev.name)
+            lines.append(check)
     lines.append("  return [bits componentsJoinedByString:@\" | \"];")
     lines.append("}")
-    return "\n".join(lines)
+    return "\n".join(startlines + zeroline + lines)
 
 def create_includeargs(includes):
     """Create an array of ["-include", i0, "-include", i1, …]