| // mojo/public/cpp/bindings/tests/enum_default_unittest.test-mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit |
| |
| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_PUBLIC_CPP_BINDINGS_TESTS_ENUM_DEFAULT_UNITTEST_TEST_MOJOM_SHARED_H_ |
| #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_ENUM_DEFAULT_UNITTEST_TEST_MOJOM_SHARED_H_ |
| |
| #include <stdint.h> |
| |
| #include <functional> |
| #include <iosfwd> |
| #include <type_traits> |
| #include <utility> |
| #include "mojo/public/cpp/bindings/array_data_view.h" |
| #include "mojo/public/cpp/bindings/enum_traits.h" |
| #include "mojo/public/cpp/bindings/interface_data_view.h" |
| #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
| #include "mojo/public/cpp/bindings/lib/serialization.h" |
| #include "mojo/public/cpp/bindings/map_data_view.h" |
| #include "mojo/public/cpp/bindings/string_data_view.h" |
| |
| #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" |
| |
| #include "mojo/public/cpp/bindings/tests/enum_default_unittest.test-mojom-shared-internal.h" |
| #include "mojo/public/cpp/bindings/lib/interface_serialization.h" |
| #include "mojo/public/cpp/system/data_pipe.h" |
| |
| |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace mojo::test::enum_default_unittest::mojom { |
| class StructWithExtensibleEnumWithDefaultDataView; |
| |
| class StructWithExtensibleEnumWithoutDefaultDataView; |
| |
| class StructWithoutInitializerDataView; |
| |
| class StructWithInitializerDataView; |
| |
| class UnionWithExtensibleEnumWithDefaultDataView; |
| class UnionWithExtensibleEnumWithoutDefaultDataView; |
| |
| |
| } // mojo::test::enum_default_unittest::mojom |
| |
| namespace mojo { |
| namespace internal { |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithDefaultDataView> { |
| using Data = ::mojo::test::enum_default_unittest::mojom::internal::StructWithExtensibleEnumWithDefault_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithoutDefaultDataView> { |
| using Data = ::mojo::test::enum_default_unittest::mojom::internal::StructWithExtensibleEnumWithoutDefault_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::enum_default_unittest::mojom::StructWithoutInitializerDataView> { |
| using Data = ::mojo::test::enum_default_unittest::mojom::internal::StructWithoutInitializer_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::enum_default_unittest::mojom::StructWithInitializerDataView> { |
| using Data = ::mojo::test::enum_default_unittest::mojom::internal::StructWithInitializer_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithDefaultDataView> { |
| using Data = ::mojo::test::enum_default_unittest::mojom::internal::UnionWithExtensibleEnumWithDefault_Data; |
| using DataAsArrayElement = Data; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kUnion; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithoutDefaultDataView> { |
| using Data = ::mojo::test::enum_default_unittest::mojom::internal::UnionWithExtensibleEnumWithoutDefault_Data; |
| using DataAsArrayElement = Data; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kUnion; |
| }; |
| |
| } // namespace internal |
| } // namespace mojo |
| |
| |
| namespace mojo::test::enum_default_unittest::mojom { |
| |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.ExtensibleEnumWithDefault |
| enum class ExtensibleEnumWithDefault : int32_t { |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.ExtensibleEnumWithDefault.kZeroth |
| kZeroth = 0, |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.ExtensibleEnumWithDefault.kFirst |
| kFirst = 1, |
| kMinValue = 0, |
| kMaxValue = 1, |
| kDefaultValue = 1 |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, ExtensibleEnumWithDefault value); |
| inline bool IsKnownEnumValue(ExtensibleEnumWithDefault value) { |
| return internal::ExtensibleEnumWithDefault_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| inline ExtensibleEnumWithDefault ToKnownEnumValue(ExtensibleEnumWithDefault value) { |
| if (IsKnownEnumValue(value)) { |
| return value; |
| } |
| return ExtensibleEnumWithDefault::kDefaultValue; |
| } |
| |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.ExtensibleEnumWithoutDefault |
| enum class ExtensibleEnumWithoutDefault : int32_t { |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.ExtensibleEnumWithoutDefault.kZeroth |
| kZeroth = 0, |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.ExtensibleEnumWithoutDefault.kFirst |
| kFirst = 1, |
| kMinValue = 0, |
| kMaxValue = 1, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, ExtensibleEnumWithoutDefault value); |
| inline bool IsKnownEnumValue(ExtensibleEnumWithoutDefault value) { |
| return internal::ExtensibleEnumWithoutDefault_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.EnumWithoutZeroValue |
| enum class EnumWithoutZeroValue : int32_t { |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.EnumWithoutZeroValue.kFirst |
| kFirst = 1, |
| |
| // @generated_from: mojo.test.enum_default_unittest.mojom.EnumWithoutZeroValue.kSecond |
| kSecond = 2, |
| kMinValue = 1, |
| kMaxValue = 2, |
| kDefaultValue = 1 |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, EnumWithoutZeroValue value); |
| inline bool IsKnownEnumValue(EnumWithoutZeroValue value) { |
| return internal::EnumWithoutZeroValue_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| inline EnumWithoutZeroValue ToKnownEnumValue(EnumWithoutZeroValue value) { |
| if (IsKnownEnumValue(value)) { |
| return value; |
| } |
| return EnumWithoutZeroValue::kDefaultValue; |
| } |
| // Interface base classes. They are used for type safety check. |
| class TestInterfaceInterfaceBase {}; |
| |
| using TestInterfacePtrDataView = |
| mojo::InterfacePtrDataView<TestInterfaceInterfaceBase>; |
| using TestInterfaceRequestDataView = |
| mojo::InterfaceRequestDataView<TestInterfaceInterfaceBase>; |
| using TestInterfaceAssociatedPtrInfoDataView = |
| mojo::AssociatedInterfacePtrInfoDataView<TestInterfaceInterfaceBase>; |
| using TestInterfaceAssociatedRequestDataView = |
| mojo::AssociatedInterfaceRequestDataView<TestInterfaceInterfaceBase>; |
| |
| |
| class StructWithExtensibleEnumWithDefaultDataView { |
| public: |
| StructWithExtensibleEnumWithDefaultDataView() = default; |
| |
| StructWithExtensibleEnumWithDefaultDataView( |
| internal::StructWithExtensibleEnumWithDefault_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { return !data_; } |
| template <typename UserType> |
| [[nodiscard]] bool ReadValue(UserType* output) const { |
| auto data_value = data_->value; |
| return mojo::internal::Deserialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>( |
| data_value, output); |
| } |
| ExtensibleEnumWithDefault value() const { |
| return ::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>(data_->value)); |
| } |
| private: |
| internal::StructWithExtensibleEnumWithDefault_Data* data_ = nullptr; |
| }; |
| |
| |
| class StructWithExtensibleEnumWithoutDefaultDataView { |
| public: |
| StructWithExtensibleEnumWithoutDefaultDataView() = default; |
| |
| StructWithExtensibleEnumWithoutDefaultDataView( |
| internal::StructWithExtensibleEnumWithoutDefault_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { return !data_; } |
| template <typename UserType> |
| [[nodiscard]] bool ReadValue(UserType* output) const { |
| auto data_value = data_->value; |
| return mojo::internal::Deserialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>( |
| data_value, output); |
| } |
| ExtensibleEnumWithoutDefault value() const { |
| return ::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>(data_->value)); |
| } |
| private: |
| internal::StructWithExtensibleEnumWithoutDefault_Data* data_ = nullptr; |
| }; |
| |
| |
| class StructWithoutInitializerDataView { |
| public: |
| StructWithoutInitializerDataView() = default; |
| |
| StructWithoutInitializerDataView( |
| internal::StructWithoutInitializer_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { return !data_; } |
| template <typename UserType> |
| [[nodiscard]] bool ReadValue(UserType* output) const { |
| auto data_value = data_->value; |
| return mojo::internal::Deserialize<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>( |
| data_value, output); |
| } |
| EnumWithoutZeroValue value() const { |
| return ::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>(data_->value)); |
| } |
| private: |
| internal::StructWithoutInitializer_Data* data_ = nullptr; |
| }; |
| |
| |
| class StructWithInitializerDataView { |
| public: |
| StructWithInitializerDataView() = default; |
| |
| StructWithInitializerDataView( |
| internal::StructWithInitializer_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { return !data_; } |
| template <typename UserType> |
| [[nodiscard]] bool ReadValue(UserType* output) const { |
| auto data_value = data_->value; |
| return mojo::internal::Deserialize<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>( |
| data_value, output); |
| } |
| EnumWithoutZeroValue value() const { |
| return ::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>(data_->value)); |
| } |
| private: |
| internal::StructWithInitializer_Data* data_ = nullptr; |
| }; |
| |
| |
| class UnionWithExtensibleEnumWithDefaultDataView { |
| public: |
| using Tag = internal::UnionWithExtensibleEnumWithDefault_Data::UnionWithExtensibleEnumWithDefault_Tag; |
| |
| UnionWithExtensibleEnumWithDefaultDataView() = default; |
| |
| UnionWithExtensibleEnumWithDefaultDataView( |
| internal::UnionWithExtensibleEnumWithDefault_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { |
| // For inlined unions, |data_| is always non-null. In that case we need to |
| // check |data_->is_null()|. |
| return !data_ || data_->is_null(); |
| } |
| |
| Tag tag() const { return data_->tag; } |
| bool is_value() const { return data_->tag == Tag::kValue; } |
| template <typename UserType> |
| [[nodiscard]] bool ReadValue(UserType* output) const { |
| CHECK(is_value()); |
| return mojo::internal::Deserialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>( |
| data_->data.f_value, output); |
| } |
| ExtensibleEnumWithDefault value() const { |
| CHECK(is_value()); |
| // TODO(dcheng): This seems incorrect, as it bypasses enum traits. |
| return ::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>(data_->data.f_value)); |
| } |
| |
| private: |
| internal::UnionWithExtensibleEnumWithDefault_Data* data_ = nullptr; |
| }; |
| |
| |
| |
| class UnionWithExtensibleEnumWithoutDefaultDataView { |
| public: |
| using Tag = internal::UnionWithExtensibleEnumWithoutDefault_Data::UnionWithExtensibleEnumWithoutDefault_Tag; |
| |
| UnionWithExtensibleEnumWithoutDefaultDataView() = default; |
| |
| UnionWithExtensibleEnumWithoutDefaultDataView( |
| internal::UnionWithExtensibleEnumWithoutDefault_Data* data, |
| mojo::Message* message) |
| : data_(data) {} |
| |
| bool is_null() const { |
| // For inlined unions, |data_| is always non-null. In that case we need to |
| // check |data_->is_null()|. |
| return !data_ || data_->is_null(); |
| } |
| |
| Tag tag() const { return data_->tag; } |
| bool is_value() const { return data_->tag == Tag::kValue; } |
| template <typename UserType> |
| [[nodiscard]] bool ReadValue(UserType* output) const { |
| CHECK(is_value()); |
| return mojo::internal::Deserialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>( |
| data_->data.f_value, output); |
| } |
| ExtensibleEnumWithoutDefault value() const { |
| CHECK(is_value()); |
| // TODO(dcheng): This seems incorrect, as it bypasses enum traits. |
| return ::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>(data_->data.f_value)); |
| } |
| |
| private: |
| internal::UnionWithExtensibleEnumWithoutDefault_Data* data_ = nullptr; |
| }; |
| |
| |
| |
| } // mojo::test::enum_default_unittest::mojom |
| |
| namespace std { |
| |
| template <> |
| struct hash<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault> |
| : public mojo::internal::EnumHashImpl<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault> {}; |
| |
| template <> |
| struct hash<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault> |
| : public mojo::internal::EnumHashImpl<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault> {}; |
| |
| template <> |
| struct hash<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue> |
| : public mojo::internal::EnumHashImpl<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue> {}; |
| |
| } // namespace std |
| |
| namespace mojo { |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithDefaultDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithDefaultDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::enum_default_unittest::mojom::internal::StructWithExtensibleEnumWithDefault_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| mojo::internal::Serialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>( |
| Traits::value(input), &fragment->value); |
| } |
| |
| static bool Deserialize(::mojo::test::enum_default_unittest::mojom::internal::StructWithExtensibleEnumWithDefault_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithDefaultDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithoutDefaultDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithoutDefaultDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::enum_default_unittest::mojom::internal::StructWithExtensibleEnumWithoutDefault_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| mojo::internal::Serialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>( |
| Traits::value(input), &fragment->value); |
| } |
| |
| static bool Deserialize(::mojo::test::enum_default_unittest::mojom::internal::StructWithExtensibleEnumWithoutDefault_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::enum_default_unittest::mojom::StructWithExtensibleEnumWithoutDefaultDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::StructWithoutInitializerDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::enum_default_unittest::mojom::StructWithoutInitializerDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::enum_default_unittest::mojom::internal::StructWithoutInitializer_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| mojo::internal::Serialize<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>( |
| Traits::value(input), &fragment->value); |
| } |
| |
| static bool Deserialize(::mojo::test::enum_default_unittest::mojom::internal::StructWithoutInitializer_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::enum_default_unittest::mojom::StructWithoutInitializerDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::StructWithInitializerDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::enum_default_unittest::mojom::StructWithInitializerDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::enum_default_unittest::mojom::internal::StructWithInitializer_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| mojo::internal::Serialize<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue>( |
| Traits::value(input), &fragment->value); |
| } |
| |
| static bool Deserialize(::mojo::test::enum_default_unittest::mojom::internal::StructWithInitializer_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::enum_default_unittest::mojom::StructWithInitializerDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithDefaultDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = UnionTraits<::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithDefaultDataView, UserType>; |
| |
| static void Serialize(MaybeConstUserType& input, |
| MessageFragment<::mojo::test::enum_default_unittest::mojom::internal::UnionWithExtensibleEnumWithDefault_Data>& fragment, |
| bool inlined) { |
| if (CallIsNullIfExists<Traits>(input)) { |
| if (inlined) |
| fragment->set_null(); |
| return; |
| } |
| |
| if (!inlined) |
| fragment.Allocate(); |
| |
| // TODO(azani): Handle unknown and objects. |
| // Set the not-null flag. |
| fragment->size = kUnionDataSize; |
| fragment->tag = Traits::GetTag(input); |
| switch (fragment->tag) { |
| case ::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithDefaultDataView::Tag::kValue: { |
| decltype(Traits::value(input)) |
| in_value = Traits::value(input); |
| mojo::internal::Serialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault>( |
| in_value, &fragment->data.f_value); |
| break; |
| } |
| } |
| } |
| |
| static bool Deserialize(::mojo::test::enum_default_unittest::mojom::internal::UnionWithExtensibleEnumWithDefault_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input || input->is_null()) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithDefaultDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithoutDefaultDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = UnionTraits<::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithoutDefaultDataView, UserType>; |
| |
| static void Serialize(MaybeConstUserType& input, |
| MessageFragment<::mojo::test::enum_default_unittest::mojom::internal::UnionWithExtensibleEnumWithoutDefault_Data>& fragment, |
| bool inlined) { |
| if (CallIsNullIfExists<Traits>(input)) { |
| if (inlined) |
| fragment->set_null(); |
| return; |
| } |
| |
| if (!inlined) |
| fragment.Allocate(); |
| |
| // TODO(azani): Handle unknown and objects. |
| // Set the not-null flag. |
| fragment->size = kUnionDataSize; |
| fragment->tag = Traits::GetTag(input); |
| switch (fragment->tag) { |
| case ::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithoutDefaultDataView::Tag::kValue: { |
| decltype(Traits::value(input)) |
| in_value = Traits::value(input); |
| mojo::internal::Serialize<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault>( |
| in_value, &fragment->data.f_value); |
| break; |
| } |
| } |
| } |
| |
| static bool Deserialize(::mojo::test::enum_default_unittest::mojom::internal::UnionWithExtensibleEnumWithoutDefault_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input || input->is_null()) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::enum_default_unittest::mojom::UnionWithExtensibleEnumWithoutDefaultDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| } // namespace mojo |
| |
| |
| namespace mojo::test::enum_default_unittest::mojom { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| } // mojo::test::enum_default_unittest::mojom |
| |
| // Declare TraceFormatTraits for enums, which should be defined in ::perfetto |
| // namespace. |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithDefault value); |
| }; |
| |
| } // namespace perfetto |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::mojo::test::enum_default_unittest::mojom::ExtensibleEnumWithoutDefault value); |
| }; |
| |
| } // namespace perfetto |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::mojo::test::enum_default_unittest::mojom::EnumWithoutZeroValue value); |
| }; |
| |
| } // namespace perfetto |
| |
| #endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_ENUM_DEFAULT_UNITTEST_TEST_MOJOM_SHARED_H_
|
| /* Metadata comment
|
| eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
|
| ZWdpbiI6IDQwNDEsICJlbmQiOiA0MDY2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
|
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
|
| c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvLnRlc3QuZW51bV9kZWZhdWx0X3VuaXR0ZXN0
|
| Lm1vam9tLkV4dGVuc2libGVFbnVtV2l0aERlZmF1bHQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
|
| L2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA0MTc2LCAi
|
| ZW5kIjogNDE4MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
|
| b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
|
| aWduYXR1cmUiOiAibW9qby50ZXN0LmVudW1fZGVmYXVsdF91bml0dGVzdC5tb2pvbS5FeHRlbnNp
|
| YmxlRW51bVdpdGhEZWZhdWx0LmtaZXJvdGgifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
|
| YXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA0Mjg1LCAiZW5kIjog
|
| NDI5MSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0u
|
| Z29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1
|
| cmUiOiAibW9qby50ZXN0LmVudW1fZGVmYXVsdF91bml0dGVzdC5tb2pvbS5FeHRlbnNpYmxlRW51
|
| bVdpdGhEZWZhdWx0LmtGaXJzdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
|
| IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDQ4OTMsICJlbmQiOiA0OTIxLCAi
|
| dm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
|
| b3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJt
|
| b2pvLnRlc3QuZW51bV9kZWZhdWx0X3VuaXR0ZXN0Lm1vam9tLkV4dGVuc2libGVFbnVtV2l0aG91
|
| dERlZmF1bHQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
|
| YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1MDM0LCAiZW5kIjogNTA0MSwgInZuYW1lIjogeyJs
|
| YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
|
| b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qby50ZXN0LmVu
|
| dW1fZGVmYXVsdF91bml0dGVzdC5tb2pvbS5FeHRlbnNpYmxlRW51bVdpdGhvdXREZWZhdWx0Lmta
|
| ZXJvdGgifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
|
| aG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1MTQ2LCAiZW5kIjogNTE1MiwgInZuYW1lIjogeyJsYW5n
|
| dWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rl
|
| c2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qby50ZXN0LmVudW1f
|
| ZGVmYXVsdF91bml0dGVzdC5tb2pvbS5FeHRlbnNpYmxlRW51bVdpdGhvdXREZWZhdWx0LmtGaXJz
|
| dCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
|
| ZGVmaW5lcyIsICJiZWdpbiI6IDU1NDIsICJlbmQiOiA1NTYyLCAidm5hbWUiOiB7Imxhbmd1YWdl
|
| IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
|
| Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvLnRlc3QuZW51bV9kZWZh
|
| dWx0X3VuaXR0ZXN0Lm1vam9tLkVudW1XaXRob3V0WmVyb1ZhbHVlIn0sICJlZGdlIjogIiUva3l0
|
| aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
|
| NTY2NiwgImVuZCI6IDU2NzIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVz
|
| IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21h
|
| aW4iLCAic2lnbmF0dXJlIjogIm1vam8udGVzdC5lbnVtX2RlZmF1bHRfdW5pdHRlc3QubW9qb20u
|
| RW51bVdpdGhvdXRaZXJvVmFsdWUua0ZpcnN0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
|
| cmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNTc3MCwgImVuZCI6
|
| IDU3NzcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
|
| Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
|
| dXJlIjogIm1vam8udGVzdC5lbnVtX2RlZmF1bHRfdW5pdHRlc3QubW9qb20uRW51bVdpdGhvdXRa
|
| ZXJvVmFsdWUua1NlY29uZCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn1dfQ==
|
| */ |