| 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 f946812d153480e9ad9891c215cfca1b70f59ee0..d2930d1116f5a73a17582b924ea1f71e8653fcdc 100644
|
| --- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
|
| +++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
|
| @@ -41,7 +41,7 @@ class _NameFormatter(object):
|
| self._variant = variant
|
|
|
| def Format(self, separator, prefixed=False, internal=False,
|
| - include_variant=False, add_same_module_namespaces=False,
|
| + include_variant=False, omit_namespace_for_module=None,
|
| flatten_nested_kind=False):
|
| """Formats the name according to the given configuration.
|
|
|
| @@ -51,15 +51,15 @@ class _NameFormatter(object):
|
| internal: Returns the name in the "internal" namespace.
|
| include_variant: Whether to include variant as namespace. If |internal| is
|
| True, then this flag is ignored and variant is not included.
|
| - add_same_module_namespaces: Includes all namespaces even if the token is
|
| - from the same module as the current mojom file.
|
| + omit_namespace_for_module: If the token is from the specified module,
|
| + don't add the namespaces of the module to the name.
|
| flatten_nested_kind: It is allowed to define enums inside structs and
|
| interfaces. If this flag is set to True, this method concatenates the
|
| parent kind and the nested kind with '_', instead of treating the
|
| parent kind as a scope."""
|
|
|
| parts = []
|
| - if self._ShouldIncludeNamespace(add_same_module_namespaces):
|
| + if self._ShouldIncludeNamespace(omit_namespace_for_module):
|
| if prefixed:
|
| parts.append("")
|
| parts.extend(self._GetNamespace())
|
| @@ -68,16 +68,16 @@ class _NameFormatter(object):
|
| parts.extend(self._GetName(internal, flatten_nested_kind))
|
| return separator.join(parts)
|
|
|
| - def FormatForCpp(self, add_same_module_namespaces=False, internal=False,
|
| + def FormatForCpp(self, omit_namespace_for_module=None, internal=False,
|
| flatten_nested_kind=False):
|
| return self.Format(
|
| "::", prefixed=True,
|
| - add_same_module_namespaces=add_same_module_namespaces,
|
| + omit_namespace_for_module=omit_namespace_for_module,
|
| internal=internal, include_variant=True,
|
| flatten_nested_kind=flatten_nested_kind)
|
|
|
| def FormatForMojom(self):
|
| - return self.Format(".", add_same_module_namespaces=True)
|
| + return self.Format(".")
|
|
|
| def _MapKindName(self, token, internal):
|
| if not internal:
|
| @@ -110,15 +110,14 @@ class _NameFormatter(object):
|
| name_parts.append(self._MapKindName(self._token, internal))
|
| return name_parts
|
|
|
| - def _ShouldIncludeNamespace(self, add_same_module_namespaces):
|
| - return add_same_module_namespaces or self._token.imported_from
|
| + def _ShouldIncludeNamespace(self, omit_namespace_for_module):
|
| + return self._token.module and (
|
| + not omit_namespace_for_module or
|
| + self._token.module.path != omit_namespace_for_module.path)
|
|
|
| def _GetNamespace(self):
|
| - if self._token.imported_from:
|
| - return NamespaceToArray(self._token.imported_from["namespace"])
|
| - elif hasattr(self._token, "module"):
|
| + if self._token.module:
|
| return NamespaceToArray(self._token.module.namespace)
|
| - return []
|
|
|
|
|
| def NamespaceToArray(namespace):
|
| @@ -126,9 +125,8 @@ def NamespaceToArray(namespace):
|
|
|
|
|
| def GetWtfHashFnNameForEnum(enum):
|
| - return _NameFormatter(
|
| - enum, None).Format("_", internal=True, add_same_module_namespaces=True,
|
| - flatten_nested_kind=True) + "HashFn"
|
| + return _NameFormatter(enum, None).Format("_", internal=True,
|
| + flatten_nested_kind=True) + "HashFn"
|
|
|
|
|
| def IsNativeOnlyKind(kind):
|
| @@ -152,48 +150,6 @@ def GetCppPodType(kind):
|
| return _kind_to_cpp_type[kind]
|
|
|
|
|
| -def GetCppDataViewType(kind, qualified=False):
|
| - def _GetName(input_kind):
|
| - return _NameFormatter(input_kind, None).FormatForCpp(
|
| - add_same_module_namespaces=qualified, flatten_nested_kind=True)
|
| -
|
| - if mojom.IsEnumKind(kind):
|
| - return _GetName(kind)
|
| - if mojom.IsStructKind(kind) or mojom.IsUnionKind(kind):
|
| - return "%sDataView" % _GetName(kind)
|
| - if mojom.IsArrayKind(kind):
|
| - return "mojo::ArrayDataView<%s>" % GetCppDataViewType(kind.kind, qualified)
|
| - if mojom.IsMapKind(kind):
|
| - return ("mojo::MapDataView<%s, %s>" % (
|
| - GetCppDataViewType(kind.key_kind, qualified),
|
| - GetCppDataViewType(kind.value_kind, qualified)))
|
| - if mojom.IsStringKind(kind):
|
| - return "mojo::StringDataView"
|
| - if mojom.IsInterfaceKind(kind):
|
| - return "%sPtrDataView" % _GetName(kind)
|
| - if mojom.IsInterfaceRequestKind(kind):
|
| - return "%sRequestDataView" % _GetName(kind.kind)
|
| - if mojom.IsAssociatedInterfaceKind(kind):
|
| - return "%sAssociatedPtrInfoDataView" % _GetName(kind.kind)
|
| - if mojom.IsAssociatedInterfaceRequestKind(kind):
|
| - return "%sAssociatedRequestDataView" % _GetName(kind.kind)
|
| - if mojom.IsGenericHandleKind(kind):
|
| - return "mojo::ScopedHandle"
|
| - if mojom.IsDataPipeConsumerKind(kind):
|
| - return "mojo::ScopedDataPipeConsumerHandle"
|
| - if mojom.IsDataPipeProducerKind(kind):
|
| - return "mojo::ScopedDataPipeProducerHandle"
|
| - if mojom.IsMessagePipeKind(kind):
|
| - return "mojo::ScopedMessagePipeHandle"
|
| - if mojom.IsSharedBufferKind(kind):
|
| - return "mojo::ScopedSharedBufferHandle"
|
| - return _kind_to_cpp_type[kind]
|
| -
|
| -
|
| -def GetUnmappedTypeForSerializer(kind):
|
| - return GetCppDataViewType(kind, qualified=True)
|
| -
|
| -
|
| def RequiresContextForDataView(kind):
|
| for field in kind.fields:
|
| if mojom.IsReferenceKind(field.kind):
|
| @@ -361,7 +317,7 @@ class Generator(generator.Generator):
|
| "contains_handles_or_interfaces": mojom.ContainsHandlesOrInterfaces,
|
| "contains_move_only_members": self._ContainsMoveOnlyMembers,
|
| "cpp_wrapper_param_type": self._GetCppWrapperParamType,
|
| - "cpp_data_view_type": GetCppDataViewType,
|
| + "cpp_data_view_type": self._GetCppDataViewType,
|
| "cpp_field_type": self._GetCppFieldType,
|
| "cpp_union_field_type": self._GetCppUnionFieldType,
|
| "cpp_pod_type": GetCppPodType,
|
| @@ -401,7 +357,7 @@ class Generator(generator.Generator):
|
| "passes_associated_kinds": mojom.PassesAssociatedKinds,
|
| "struct_constructors": self._GetStructConstructors,
|
| "under_to_camel": generator.UnderToCamel,
|
| - "unmapped_type_for_serializer": GetUnmappedTypeForSerializer,
|
| + "unmapped_type_for_serializer": self._GetUnmappedTypeForSerializer,
|
| "wtf_hash_fn_name_for_enum": GetWtfHashFnNameForEnum,
|
| }
|
| return cpp_filters
|
| @@ -461,14 +417,14 @@ class Generator(generator.Generator):
|
| add_same_module_namespaces=False):
|
| return _NameFormatter(kind, self.variant).FormatForCpp(
|
| internal=internal, flatten_nested_kind=flatten_nested_kind,
|
| - add_same_module_namespaces=add_same_module_namespaces)
|
| + omit_namespace_for_module = (None if add_same_module_namespaces
|
| + else self.module))
|
|
|
| def _GetQualifiedNameForKind(self, kind, internal=False,
|
| flatten_nested_kind=False, include_variant=True):
|
| return _NameFormatter(
|
| kind, self.variant if include_variant else None).FormatForCpp(
|
| - internal=internal, add_same_module_namespaces=True,
|
| - flatten_nested_kind=flatten_nested_kind)
|
| + internal=internal, flatten_nested_kind=flatten_nested_kind)
|
|
|
| def _GetFullMojomNameForKind(self, kind):
|
| return _NameFormatter(kind, self.variant).FormatForMojom()
|
| @@ -806,3 +762,45 @@ class Generator(generator.Generator):
|
|
|
| return "new mojo::internal::ContainerValidateParams(%s)" % (
|
| self._GetContainerValidateParamsCtorArgs(kind))
|
| +
|
| + def _GetCppDataViewType(self, kind, qualified=False):
|
| + def _GetName(input_kind):
|
| + return _NameFormatter(input_kind, None).FormatForCpp(
|
| + omit_namespace_for_module=(None if qualified else self.module),
|
| + flatten_nested_kind=True)
|
| +
|
| + if mojom.IsEnumKind(kind):
|
| + return _GetName(kind)
|
| + if mojom.IsStructKind(kind) or mojom.IsUnionKind(kind):
|
| + return "%sDataView" % _GetName(kind)
|
| + if mojom.IsArrayKind(kind):
|
| + return "mojo::ArrayDataView<%s>" % (
|
| + self._GetCppDataViewType(kind.kind, qualified))
|
| + if mojom.IsMapKind(kind):
|
| + return ("mojo::MapDataView<%s, %s>" % (
|
| + self._GetCppDataViewType(kind.key_kind, qualified),
|
| + self._GetCppDataViewType(kind.value_kind, qualified)))
|
| + if mojom.IsStringKind(kind):
|
| + return "mojo::StringDataView"
|
| + if mojom.IsInterfaceKind(kind):
|
| + return "%sPtrDataView" % _GetName(kind)
|
| + if mojom.IsInterfaceRequestKind(kind):
|
| + return "%sRequestDataView" % _GetName(kind.kind)
|
| + if mojom.IsAssociatedInterfaceKind(kind):
|
| + return "%sAssociatedPtrInfoDataView" % _GetName(kind.kind)
|
| + if mojom.IsAssociatedInterfaceRequestKind(kind):
|
| + return "%sAssociatedRequestDataView" % _GetName(kind.kind)
|
| + if mojom.IsGenericHandleKind(kind):
|
| + return "mojo::ScopedHandle"
|
| + if mojom.IsDataPipeConsumerKind(kind):
|
| + return "mojo::ScopedDataPipeConsumerHandle"
|
| + if mojom.IsDataPipeProducerKind(kind):
|
| + return "mojo::ScopedDataPipeProducerHandle"
|
| + if mojom.IsMessagePipeKind(kind):
|
| + return "mojo::ScopedMessagePipeHandle"
|
| + if mojom.IsSharedBufferKind(kind):
|
| + return "mojo::ScopedSharedBufferHandle"
|
| + return _kind_to_cpp_type[kind]
|
| +
|
| + def _GetUnmappedTypeForSerializer(self, kind):
|
| + return self._GetCppDataViewType(kind, qualified=True)
|
|
|