blob: 80797e95bf54edfb9fc8d77b1cfd41b4ff395b28 [file] [log] [blame]
// 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==
*/