Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1563)

Unified Diff: mojo/public/tools/bindings/generators/mojom_cpp_generator.py

Issue 2715153004: Mojo: Support enums as map keys in WTF (Closed)
Patch Set: Address review comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/generators/mojom_cpp_generator.py
diff --git a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
index 87e39ecbbb027cf0822846b6cd9229b46a15e558..38d222b136995a93b668e607594989d1f2771b41 100644
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -153,10 +153,19 @@ def GetNameForKind(kind, internal=False, flatten_nested_kind=False,
internal=internal, flatten_nested_kind=flatten_nested_kind,
add_same_module_namespaces=add_same_module_namespaces)
-def GetQualifiedNameForKind(kind, internal=False, flatten_nested_kind=False):
- return _NameFormatter(kind, _variant).FormatForCpp(
- internal=internal, add_same_module_namespaces=True,
- flatten_nested_kind=flatten_nested_kind)
+def GetQualifiedNameForKind(kind, internal=False, flatten_nested_kind=False,
+ include_variant=True):
+ return _NameFormatter(
+ kind, _variant if include_variant else None).FormatForCpp(
+ internal=internal, add_same_module_namespaces=True,
+ flatten_nested_kind=flatten_nested_kind)
+
+
+def GetWtfHashFnNameForEnum(enum):
+ return _NameFormatter(
+ enum, None).Format("_", internal=True, add_same_module_namespaces=True,
+ flatten_nested_kind=True) + "HashFn"
+
def GetFullMojomNameForKind(kind):
return _NameFormatter(kind, _variant).FormatForMojom()
@@ -211,6 +220,18 @@ def IsHashableKind(kind):
return Check(kind)
+def AllEnumValues(enum):
+ """Return all enum values associated with an enum.
+
+ Args:
+ enum: {mojom.Enum} The enum type.
+
+ Returns:
+ {Set[int]} The values.
+ """
+ return set(field.numeric_value for field in enum.fields)
+
+
def GetNativeTypeName(typemapped_kind):
return _current_typemap[GetFullMojomNameForKind(typemapped_kind)]["typename"]
@@ -584,6 +605,7 @@ def GetNewContainerValidateParams(kind):
class Generator(generator.Generator):
cpp_filters = {
+ "all_enum_values": AllEnumValues,
"constant_value": ConstantValue,
"contains_handles_or_interfaces": mojom.ContainsHandlesOrInterfaces,
"contains_move_only_members": ContainsMoveOnlyMembers,
@@ -630,6 +652,7 @@ class Generator(generator.Generator):
"stylize_method": generator.StudlyCapsToCamel,
"under_to_camel": generator.UnderToCamel,
"unmapped_type_for_serializer": GetUnmappedTypeForSerializer,
+ "wtf_hash_fn_name_for_enum": GetWtfHashFnNameForEnum,
}
def GetExtraTraitsHeaders(self):

Powered by Google App Engine
This is Rietveld 408576698