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

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

Issue 2715153004: Mojo: Support enums as map keys in WTF (Closed)
Patch Set: Qualify name of generated hash fn 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 c75013badf88a19cab5a678a1b77174e20c877fc..0d972de0d5254610f97109efb416ccd71a936e88 100644
--- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -152,10 +152,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()
@@ -210,6 +219,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"]
@@ -530,6 +551,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,
@@ -575,6 +597,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