Juri Pakaste avatar Juri Pakaste committed 2ed889b

Cope better with zero value in mask enums.

Comments (0)

Files changed (1)

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, …]
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.