浏览代码

LibWeb: Generate to_value_id() functions

Sam Atkins 3 年之前
父节点
当前提交
9bf511caa3
共有 1 个文件被更改,包括 25 次插入0 次删除
  1. 25 0
      Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp

+ 25 - 0
Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSEnums.cpp

@@ -76,6 +76,7 @@ enum class ValueID;
 
         enum_generator.appendln("};");
         enum_generator.appendln("Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID);");
+        enum_generator.appendln("ValueID to_value_id(@name:titlecase@);");
         enum_generator.append("\n");
     });
 
@@ -131,6 +132,30 @@ Optional<@name:titlecase@> value_id_to_@name:snakecase@(ValueID value_id)
         return {};
     }
 }
+)~~~");
+
+        enum_generator.append(R"~~~(
+ValueID to_value_id(@name:titlecase@ @name:snakecase@_value)
+{
+    switch (@name:snakecase@_value) {)~~~");
+
+        for (auto& member : members.values()) {
+            auto member_generator = enum_generator.fork();
+            auto member_name = member.to_string();
+            if (member_name.contains('='))
+                continue;
+            member_generator.set("member:titlecase", title_casify(member_name));
+
+            member_generator.append(R"~~~(
+    case @name:titlecase@::@member:titlecase@:
+        return ValueID::@member:titlecase@;)~~~");
+        }
+
+        enum_generator.append(R"~~~(
+    default:
+        VERIFY_NOT_REACHED();
+    }
+}
 )~~~");
     });