blob: 7ff471e8e06b943efa25adc966077c1c295aa4ac [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
// fidl_experiment = output_index_json
#pragma once
#include <fidl/test.unionsandwich/cpp/common_types.h>
#include <fidl/test.unionsandwich/cpp/markers.h>
#include <lib/fidl/cpp/natural_coding_traits.h>
#include <lib/fidl/cpp/natural_types.h>
#include <cinttypes>
#include <string>
#ifdef __Fuchsia__
#endif // __Fuchsia__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"
namespace test_unionsandwich {
class SandwichUnionSize8Alignment4;
class SandwichUnionSize12Alignment4;
class StructSize16Alignment8;
class SandwichUnionSize24Alignment8;
class SandwichUnionSize36Alignment4;
class UnionSize8Alignment4;
class UnionSize12Alignment4;
class UnionSize24Alignment8;
class UnionSize36Alignment4;
class UnionSize8Alignment4 {
private:
using Storage_ =
std::variant<
std::monostate, uint32_t>;
public:
// TODO: share union tag types between wire & natural.
enum class Tag : fidl_xunion_tag_t {
kVariant = 1, // 0x1
};
UnionSize8Alignment4(UnionSize8Alignment4&& other) noexcept
: UnionSize8Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}) {
*storage_ = std::move(*other.storage_);
}
UnionSize8Alignment4& operator=(UnionSize8Alignment4&& other) noexcept {
if (this != &other) {
*storage_ = std::move(*other.storage_);
}
return *this;
}
UnionSize8Alignment4(const UnionSize8Alignment4& other) noexcept : UnionSize8Alignment4(other.CloneStorage_()) {}
UnionSize8Alignment4& operator=(const UnionSize8Alignment4& other) noexcept {
if (this != &other) {
storage_ = other.CloneStorage_();
}
return *this;
}
bool operator==(const UnionSize8Alignment4& other) const noexcept {
return *storage_ == *other.storage_;
}
bool operator!=(const UnionSize8Alignment4& other) const noexcept {
return *storage_ != *other.storage_;
}
constexpr ::test_unionsandwich::UnionSize8Alignment4::Tag Which() const {
return UnionSize8Alignment4::IndexToTag(storage_->index()).value();
}
static UnionSize8Alignment4 WithVariant(uint32_t val) {
return UnionSize8Alignment4(std::make_shared<Storage_>(
std::in_place_index_t<1>{},
std::move(val)));
}
const ::fidl::internal::UnionMemberView<1, Storage_> variant() const {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
::fidl::internal::UnionMemberView<1, Storage_> variant() {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
// Sets the union to hold the variant member.
//
UnionSize8Alignment4& variant(uint32_t value) {
storage_->emplace<1>(std::move(value));
return *this;
}
UnionSize8Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag)
: storage_(std::make_shared<Storage_>()) {}
private:
std::shared_ptr<Storage_> storage_;
std::shared_ptr<Storage_> CloneStorage_() const;
friend struct ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize8Alignment4>;
static constexpr auto kMembers = std::make_tuple(
::fidl::internal::NaturalUnionMember<::fidl::internal::NaturalCodingConstraintEmpty>(), ::fidl::internal::NaturalUnionMember<fidl::internal::NaturalCodingConstraintEmpty>());
explicit UnionSize8Alignment4(std::shared_ptr<Storage_> storage) : storage_(std::move(storage)) {}
static constexpr size_t TagToIndex(::fidl::internal::NaturalDecoder* decoder, ::test_unionsandwich::UnionSize8Alignment4::Tag tag) {
switch (tag) {
case ::test_unionsandwich::UnionSize8Alignment4::Tag::kVariant:
return 1;
default: {
decoder->SetError(::fidl::internal::kCodingErrorUnknownUnionTag);
return 0;
}
}
}
static constexpr std::optional<::test_unionsandwich::UnionSize8Alignment4::Tag> IndexToTag(size_t index) {
switch (index) {
case 1:
return ::test_unionsandwich::UnionSize8Alignment4::Tag::kVariant;
default:
return std::nullopt;
}
}
};
class SandwichUnionSize8Alignment4 {
private:
struct Storage_;
public:
SandwichUnionSize8Alignment4(Storage_ storage) noexcept;
SandwichUnionSize8Alignment4(uint32_t before, ::test_unionsandwich::UnionSize8Alignment4 union_, uint32_t after) noexcept;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
// Default constructs a |SandwichUnionSize8Alignment4| only if all of its members are default constructible.
SandwichUnionSize8Alignment4() = default;
#pragma clang diagnostic pop
SandwichUnionSize8Alignment4(SandwichUnionSize8Alignment4&&) noexcept = default;
SandwichUnionSize8Alignment4& operator=(SandwichUnionSize8Alignment4&&) noexcept = default;
SandwichUnionSize8Alignment4(const SandwichUnionSize8Alignment4& other) noexcept;
SandwichUnionSize8Alignment4& operator=(const SandwichUnionSize8Alignment4& other) noexcept;
bool operator==(const SandwichUnionSize8Alignment4& other) const noexcept {
return ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize8Alignment4, 32>::Equal(this, &other);
}
bool operator!=(const SandwichUnionSize8Alignment4& other) const noexcept {
return !::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize8Alignment4, 32>::Equal(this, &other);
}
uint32_t
before() const {
return storage_.before;
}
uint32_t& before() {
return storage_.before;
}
// Setter for before.
//
SandwichUnionSize8Alignment4& before(uint32_t value);
const ::test_unionsandwich::UnionSize8Alignment4&
union_() const {
return storage_.union_;
}
::test_unionsandwich::UnionSize8Alignment4& union_() {
return storage_.union_;
}
// Setter for union_.
//
SandwichUnionSize8Alignment4& union_(::test_unionsandwich::UnionSize8Alignment4 value);
uint32_t
after() const {
return storage_.after;
}
uint32_t& after() {
return storage_.after;
}
// Setter for after.
//
SandwichUnionSize8Alignment4& after(uint32_t value);
SandwichUnionSize8Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag);
private:
struct Storage_ final {
uint32_t before = {};
::test_unionsandwich::UnionSize8Alignment4 union_;
uint32_t after = {};
};
Storage_ storage_;
Storage_ CloneStorage_() const;
friend struct ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize8Alignment4, 32>;
friend struct ::fidl::internal::MemberVisitor<::test_unionsandwich::SandwichUnionSize8Alignment4>;
static constexpr auto kMembers = std::make_tuple(::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{
&Storage_::before, 0},
::fidl::internal::NaturalStructMember<Storage_, ::test_unionsandwich::UnionSize8Alignment4, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::union_, 8}, ::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::after, 24});
static constexpr auto kPadding = std::make_tuple(::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 0,
.mask = 0xffffffff00000000,
},
::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 24,
.mask = 0xffffffff00000000,
});
};
class UnionSize12Alignment4 {
private:
using Storage_ =
std::variant<
std::monostate, ::std::array<uint8_t, 6>>;
public:
// TODO: share union tag types between wire & natural.
enum class Tag : fidl_xunion_tag_t {
kVariant = 1, // 0x1
};
UnionSize12Alignment4(UnionSize12Alignment4&& other) noexcept
: UnionSize12Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}) {
*storage_ = std::move(*other.storage_);
}
UnionSize12Alignment4& operator=(UnionSize12Alignment4&& other) noexcept {
if (this != &other) {
*storage_ = std::move(*other.storage_);
}
return *this;
}
UnionSize12Alignment4(const UnionSize12Alignment4& other) noexcept : UnionSize12Alignment4(other.CloneStorage_()) {}
UnionSize12Alignment4& operator=(const UnionSize12Alignment4& other) noexcept {
if (this != &other) {
storage_ = other.CloneStorage_();
}
return *this;
}
bool operator==(const UnionSize12Alignment4& other) const noexcept {
return *storage_ == *other.storage_;
}
bool operator!=(const UnionSize12Alignment4& other) const noexcept {
return *storage_ != *other.storage_;
}
constexpr ::test_unionsandwich::UnionSize12Alignment4::Tag Which() const {
return UnionSize12Alignment4::IndexToTag(storage_->index()).value();
}
static UnionSize12Alignment4 WithVariant(::std::array<uint8_t, 6> val) {
return UnionSize12Alignment4(std::make_shared<Storage_>(
std::in_place_index_t<1>{},
std::move(val)));
}
const ::fidl::internal::UnionMemberView<1, Storage_> variant() const {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
::fidl::internal::UnionMemberView<1, Storage_> variant() {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
// Sets the union to hold the variant member.
//
UnionSize12Alignment4& variant(::std::array<uint8_t, 6> value) {
storage_->emplace<1>(std::move(value));
return *this;
}
UnionSize12Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag)
: storage_(std::make_shared<Storage_>()) {}
private:
std::shared_ptr<Storage_> storage_;
std::shared_ptr<Storage_> CloneStorage_() const;
friend struct ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize12Alignment4>;
static constexpr auto kMembers = std::make_tuple(
::fidl::internal::NaturalUnionMember<::fidl::internal::NaturalCodingConstraintEmpty>(), ::fidl::internal::NaturalUnionMember<fidl::internal::NaturalCodingConstraintEmpty>());
explicit UnionSize12Alignment4(std::shared_ptr<Storage_> storage) : storage_(std::move(storage)) {}
static constexpr size_t TagToIndex(::fidl::internal::NaturalDecoder* decoder, ::test_unionsandwich::UnionSize12Alignment4::Tag tag) {
switch (tag) {
case ::test_unionsandwich::UnionSize12Alignment4::Tag::kVariant:
return 1;
default: {
decoder->SetError(::fidl::internal::kCodingErrorUnknownUnionTag);
return 0;
}
}
}
static constexpr std::optional<::test_unionsandwich::UnionSize12Alignment4::Tag> IndexToTag(size_t index) {
switch (index) {
case 1:
return ::test_unionsandwich::UnionSize12Alignment4::Tag::kVariant;
default:
return std::nullopt;
}
}
};
class SandwichUnionSize12Alignment4 {
private:
struct Storage_;
public:
SandwichUnionSize12Alignment4(Storage_ storage) noexcept;
SandwichUnionSize12Alignment4(uint32_t before, ::test_unionsandwich::UnionSize12Alignment4 union_, int32_t after) noexcept;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
// Default constructs a |SandwichUnionSize12Alignment4| only if all of its members are default constructible.
SandwichUnionSize12Alignment4() = default;
#pragma clang diagnostic pop
SandwichUnionSize12Alignment4(SandwichUnionSize12Alignment4&&) noexcept = default;
SandwichUnionSize12Alignment4& operator=(SandwichUnionSize12Alignment4&&) noexcept = default;
SandwichUnionSize12Alignment4(const SandwichUnionSize12Alignment4& other) noexcept;
SandwichUnionSize12Alignment4& operator=(const SandwichUnionSize12Alignment4& other) noexcept;
bool operator==(const SandwichUnionSize12Alignment4& other) const noexcept {
return ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize12Alignment4, 32>::Equal(this, &other);
}
bool operator!=(const SandwichUnionSize12Alignment4& other) const noexcept {
return !::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize12Alignment4, 32>::Equal(this, &other);
}
uint32_t
before() const {
return storage_.before;
}
uint32_t& before() {
return storage_.before;
}
// Setter for before.
//
SandwichUnionSize12Alignment4& before(uint32_t value);
const ::test_unionsandwich::UnionSize12Alignment4&
union_() const {
return storage_.union_;
}
::test_unionsandwich::UnionSize12Alignment4& union_() {
return storage_.union_;
}
// Setter for union_.
//
SandwichUnionSize12Alignment4& union_(::test_unionsandwich::UnionSize12Alignment4 value);
int32_t
after() const {
return storage_.after;
}
int32_t& after() {
return storage_.after;
}
// Setter for after.
//
SandwichUnionSize12Alignment4& after(int32_t value);
SandwichUnionSize12Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag);
private:
struct Storage_ final {
uint32_t before = {};
::test_unionsandwich::UnionSize12Alignment4 union_;
int32_t after = {};
};
Storage_ storage_;
Storage_ CloneStorage_() const;
friend struct ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize12Alignment4, 32>;
friend struct ::fidl::internal::MemberVisitor<::test_unionsandwich::SandwichUnionSize12Alignment4>;
static constexpr auto kMembers = std::make_tuple(::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{
&Storage_::before, 0},
::fidl::internal::NaturalStructMember<Storage_, ::test_unionsandwich::UnionSize12Alignment4, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::union_, 8}, ::fidl::internal::NaturalStructMember<Storage_, int32_t, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::after, 24});
static constexpr auto kPadding = std::make_tuple(::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 0,
.mask = 0xffffffff00000000,
},
::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 24,
.mask = 0xffffffff00000000,
});
};
class StructSize16Alignment8 {
private:
struct Storage_;
public:
StructSize16Alignment8(Storage_ storage) noexcept;
StructSize16Alignment8(uint64_t f1, uint64_t f2) noexcept;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
// Default constructs a |StructSize16Alignment8| only if all of its members are default constructible.
StructSize16Alignment8() = default;
#pragma clang diagnostic pop
StructSize16Alignment8(StructSize16Alignment8&&) noexcept = default;
StructSize16Alignment8& operator=(StructSize16Alignment8&&) noexcept = default;
StructSize16Alignment8(const StructSize16Alignment8& other) noexcept;
StructSize16Alignment8& operator=(const StructSize16Alignment8& other) noexcept;
bool operator==(const StructSize16Alignment8& other) const noexcept {
return ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::StructSize16Alignment8, 16>::Equal(this, &other);
}
bool operator!=(const StructSize16Alignment8& other) const noexcept {
return !::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::StructSize16Alignment8, 16>::Equal(this, &other);
}
uint64_t
f1() const {
return storage_.f1;
}
uint64_t& f1() {
return storage_.f1;
}
// Setter for f1.
//
StructSize16Alignment8& f1(uint64_t value);
uint64_t
f2() const {
return storage_.f2;
}
uint64_t& f2() {
return storage_.f2;
}
// Setter for f2.
//
StructSize16Alignment8& f2(uint64_t value);
StructSize16Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag);
private:
struct Storage_ final {
uint64_t f1 = {};
uint64_t f2 = {};
};
Storage_ storage_;
Storage_ CloneStorage_() const;
friend struct ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::StructSize16Alignment8, 16>;
friend struct ::fidl::internal::MemberVisitor<::test_unionsandwich::StructSize16Alignment8>;
static constexpr auto kMembers = std::make_tuple(::fidl::internal::NaturalStructMember<Storage_, uint64_t, fidl::internal::NaturalCodingConstraintEmpty>{
&Storage_::f1, 0},
::fidl::internal::NaturalStructMember<Storage_, uint64_t, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::f2, 8});
static constexpr auto kPadding = std::make_tuple();
};
class UnionSize24Alignment8 {
private:
using Storage_ =
std::variant<
std::monostate, ::test_unionsandwich::StructSize16Alignment8>;
public:
// TODO: share union tag types between wire & natural.
enum class Tag : fidl_xunion_tag_t {
kVariant = 1, // 0x1
};
UnionSize24Alignment8(UnionSize24Alignment8&& other) noexcept
: UnionSize24Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}) {
*storage_ = std::move(*other.storage_);
}
UnionSize24Alignment8& operator=(UnionSize24Alignment8&& other) noexcept {
if (this != &other) {
*storage_ = std::move(*other.storage_);
}
return *this;
}
UnionSize24Alignment8(const UnionSize24Alignment8& other) noexcept : UnionSize24Alignment8(other.CloneStorage_()) {}
UnionSize24Alignment8& operator=(const UnionSize24Alignment8& other) noexcept {
if (this != &other) {
storage_ = other.CloneStorage_();
}
return *this;
}
bool operator==(const UnionSize24Alignment8& other) const noexcept {
return *storage_ == *other.storage_;
}
bool operator!=(const UnionSize24Alignment8& other) const noexcept {
return *storage_ != *other.storage_;
}
constexpr ::test_unionsandwich::UnionSize24Alignment8::Tag Which() const {
return UnionSize24Alignment8::IndexToTag(storage_->index()).value();
}
static UnionSize24Alignment8 WithVariant(::test_unionsandwich::StructSize16Alignment8 val) {
return UnionSize24Alignment8(std::make_shared<Storage_>(
std::in_place_index_t<1>{},
std::move(val)));
}
const ::fidl::internal::UnionMemberView<1, Storage_> variant() const {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
::fidl::internal::UnionMemberView<1, Storage_> variant() {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
// Sets the union to hold the variant member.
//
UnionSize24Alignment8& variant(::test_unionsandwich::StructSize16Alignment8 value) {
storage_->emplace<1>(std::move(value));
return *this;
}
UnionSize24Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag)
: storage_(std::make_shared<Storage_>()) {}
private:
std::shared_ptr<Storage_> storage_;
std::shared_ptr<Storage_> CloneStorage_() const;
friend struct ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize24Alignment8>;
static constexpr auto kMembers = std::make_tuple(
::fidl::internal::NaturalUnionMember<::fidl::internal::NaturalCodingConstraintEmpty>(), ::fidl::internal::NaturalUnionMember<fidl::internal::NaturalCodingConstraintEmpty>());
explicit UnionSize24Alignment8(std::shared_ptr<Storage_> storage) : storage_(std::move(storage)) {}
static constexpr size_t TagToIndex(::fidl::internal::NaturalDecoder* decoder, ::test_unionsandwich::UnionSize24Alignment8::Tag tag) {
switch (tag) {
case ::test_unionsandwich::UnionSize24Alignment8::Tag::kVariant:
return 1;
default: {
decoder->SetError(::fidl::internal::kCodingErrorUnknownUnionTag);
return 0;
}
}
}
static constexpr std::optional<::test_unionsandwich::UnionSize24Alignment8::Tag> IndexToTag(size_t index) {
switch (index) {
case 1:
return ::test_unionsandwich::UnionSize24Alignment8::Tag::kVariant;
default:
return std::nullopt;
}
}
};
class SandwichUnionSize24Alignment8 {
private:
struct Storage_;
public:
SandwichUnionSize24Alignment8(Storage_ storage) noexcept;
SandwichUnionSize24Alignment8(uint32_t before, ::test_unionsandwich::UnionSize24Alignment8 union_, uint32_t after) noexcept;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
// Default constructs a |SandwichUnionSize24Alignment8| only if all of its members are default constructible.
SandwichUnionSize24Alignment8() = default;
#pragma clang diagnostic pop
SandwichUnionSize24Alignment8(SandwichUnionSize24Alignment8&&) noexcept = default;
SandwichUnionSize24Alignment8& operator=(SandwichUnionSize24Alignment8&&) noexcept = default;
SandwichUnionSize24Alignment8(const SandwichUnionSize24Alignment8& other) noexcept;
SandwichUnionSize24Alignment8& operator=(const SandwichUnionSize24Alignment8& other) noexcept;
bool operator==(const SandwichUnionSize24Alignment8& other) const noexcept {
return ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize24Alignment8, 32>::Equal(this, &other);
}
bool operator!=(const SandwichUnionSize24Alignment8& other) const noexcept {
return !::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize24Alignment8, 32>::Equal(this, &other);
}
uint32_t
before() const {
return storage_.before;
}
uint32_t& before() {
return storage_.before;
}
// Setter for before.
//
SandwichUnionSize24Alignment8& before(uint32_t value);
const ::test_unionsandwich::UnionSize24Alignment8&
union_() const {
return storage_.union_;
}
::test_unionsandwich::UnionSize24Alignment8& union_() {
return storage_.union_;
}
// Setter for union_.
//
SandwichUnionSize24Alignment8& union_(::test_unionsandwich::UnionSize24Alignment8 value);
uint32_t
after() const {
return storage_.after;
}
uint32_t& after() {
return storage_.after;
}
// Setter for after.
//
SandwichUnionSize24Alignment8& after(uint32_t value);
SandwichUnionSize24Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag);
private:
struct Storage_ final {
uint32_t before = {};
::test_unionsandwich::UnionSize24Alignment8 union_;
uint32_t after = {};
};
Storage_ storage_;
Storage_ CloneStorage_() const;
friend struct ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize24Alignment8, 32>;
friend struct ::fidl::internal::MemberVisitor<::test_unionsandwich::SandwichUnionSize24Alignment8>;
static constexpr auto kMembers = std::make_tuple(::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{
&Storage_::before, 0},
::fidl::internal::NaturalStructMember<Storage_, ::test_unionsandwich::UnionSize24Alignment8, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::union_, 8}, ::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::after, 24});
static constexpr auto kPadding = std::make_tuple(::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 0,
.mask = 0xffffffff00000000,
},
::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 24,
.mask = 0xffffffff00000000,
});
};
class UnionSize36Alignment4 {
private:
using Storage_ =
std::variant<
std::monostate, ::std::array<uint8_t, 32>>;
public:
// TODO: share union tag types between wire & natural.
enum class Tag : fidl_xunion_tag_t {
kVariant = 1, // 0x1
};
UnionSize36Alignment4(UnionSize36Alignment4&& other) noexcept
: UnionSize36Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}) {
*storage_ = std::move(*other.storage_);
}
UnionSize36Alignment4& operator=(UnionSize36Alignment4&& other) noexcept {
if (this != &other) {
*storage_ = std::move(*other.storage_);
}
return *this;
}
UnionSize36Alignment4(const UnionSize36Alignment4& other) noexcept : UnionSize36Alignment4(other.CloneStorage_()) {}
UnionSize36Alignment4& operator=(const UnionSize36Alignment4& other) noexcept {
if (this != &other) {
storage_ = other.CloneStorage_();
}
return *this;
}
bool operator==(const UnionSize36Alignment4& other) const noexcept {
return *storage_ == *other.storage_;
}
bool operator!=(const UnionSize36Alignment4& other) const noexcept {
return *storage_ != *other.storage_;
}
constexpr ::test_unionsandwich::UnionSize36Alignment4::Tag Which() const {
return UnionSize36Alignment4::IndexToTag(storage_->index()).value();
}
static UnionSize36Alignment4 WithVariant(::std::array<uint8_t, 32> val) {
return UnionSize36Alignment4(std::make_shared<Storage_>(
std::in_place_index_t<1>{},
std::move(val)));
}
const ::fidl::internal::UnionMemberView<1, Storage_> variant() const {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
::fidl::internal::UnionMemberView<1, Storage_> variant() {
return ::fidl::internal::UnionMemberView<1, Storage_>(storage_);
}
// Sets the union to hold the variant member.
//
UnionSize36Alignment4& variant(::std::array<uint8_t, 32> value) {
storage_->emplace<1>(std::move(value));
return *this;
}
UnionSize36Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag)
: storage_(std::make_shared<Storage_>()) {}
private:
std::shared_ptr<Storage_> storage_;
std::shared_ptr<Storage_> CloneStorage_() const;
friend struct ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize36Alignment4>;
static constexpr auto kMembers = std::make_tuple(
::fidl::internal::NaturalUnionMember<::fidl::internal::NaturalCodingConstraintEmpty>(), ::fidl::internal::NaturalUnionMember<fidl::internal::NaturalCodingConstraintEmpty>());
explicit UnionSize36Alignment4(std::shared_ptr<Storage_> storage) : storage_(std::move(storage)) {}
static constexpr size_t TagToIndex(::fidl::internal::NaturalDecoder* decoder, ::test_unionsandwich::UnionSize36Alignment4::Tag tag) {
switch (tag) {
case ::test_unionsandwich::UnionSize36Alignment4::Tag::kVariant:
return 1;
default: {
decoder->SetError(::fidl::internal::kCodingErrorUnknownUnionTag);
return 0;
}
}
}
static constexpr std::optional<::test_unionsandwich::UnionSize36Alignment4::Tag> IndexToTag(size_t index) {
switch (index) {
case 1:
return ::test_unionsandwich::UnionSize36Alignment4::Tag::kVariant;
default:
return std::nullopt;
}
}
};
class SandwichUnionSize36Alignment4 {
private:
struct Storage_;
public:
SandwichUnionSize36Alignment4(Storage_ storage) noexcept;
SandwichUnionSize36Alignment4(uint32_t before, ::test_unionsandwich::UnionSize36Alignment4 union_, uint32_t after) noexcept;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
// Default constructs a |SandwichUnionSize36Alignment4| only if all of its members are default constructible.
SandwichUnionSize36Alignment4() = default;
#pragma clang diagnostic pop
SandwichUnionSize36Alignment4(SandwichUnionSize36Alignment4&&) noexcept = default;
SandwichUnionSize36Alignment4& operator=(SandwichUnionSize36Alignment4&&) noexcept = default;
SandwichUnionSize36Alignment4(const SandwichUnionSize36Alignment4& other) noexcept;
SandwichUnionSize36Alignment4& operator=(const SandwichUnionSize36Alignment4& other) noexcept;
bool operator==(const SandwichUnionSize36Alignment4& other) const noexcept {
return ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize36Alignment4, 32>::Equal(this, &other);
}
bool operator!=(const SandwichUnionSize36Alignment4& other) const noexcept {
return !::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize36Alignment4, 32>::Equal(this, &other);
}
uint32_t
before() const {
return storage_.before;
}
uint32_t& before() {
return storage_.before;
}
// Setter for before.
//
SandwichUnionSize36Alignment4& before(uint32_t value);
const ::test_unionsandwich::UnionSize36Alignment4&
union_() const {
return storage_.union_;
}
::test_unionsandwich::UnionSize36Alignment4& union_() {
return storage_.union_;
}
// Setter for union_.
//
SandwichUnionSize36Alignment4& union_(::test_unionsandwich::UnionSize36Alignment4 value);
uint32_t
after() const {
return storage_.after;
}
uint32_t& after() {
return storage_.after;
}
// Setter for after.
//
SandwichUnionSize36Alignment4& after(uint32_t value);
SandwichUnionSize36Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag);
private:
struct Storage_ final {
uint32_t before = {};
::test_unionsandwich::UnionSize36Alignment4 union_;
uint32_t after = {};
};
Storage_ storage_;
Storage_ CloneStorage_() const;
friend struct ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize36Alignment4, 32>;
friend struct ::fidl::internal::MemberVisitor<::test_unionsandwich::SandwichUnionSize36Alignment4>;
static constexpr auto kMembers = std::make_tuple(::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{
&Storage_::before, 0},
::fidl::internal::NaturalStructMember<Storage_, ::test_unionsandwich::UnionSize36Alignment4, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::union_, 8}, ::fidl::internal::NaturalStructMember<Storage_, uint32_t, fidl::internal::NaturalCodingConstraintEmpty>{&Storage_::after, 24});
static constexpr auto kPadding = std::make_tuple(::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 0,
.mask = 0xffffffff00000000,
},
::fidl::internal::NaturalStructPadding<uint64_t>{
.offset = 24,
.mask = 0xffffffff00000000,
});
};
inline SandwichUnionSize8Alignment4::SandwichUnionSize8Alignment4(Storage_ storage) noexcept : storage_(std::move(storage)) {}
inline SandwichUnionSize8Alignment4::SandwichUnionSize8Alignment4(uint32_t before, ::test_unionsandwich::UnionSize8Alignment4 union_, uint32_t after) noexcept
: storage_({.before = std::move(before),
.union_ = std::move(union_),
.after = std::move(after)}) {}
inline SandwichUnionSize8Alignment4::SandwichUnionSize8Alignment4(const ::test_unionsandwich::SandwichUnionSize8Alignment4& other) noexcept : ::test_unionsandwich::SandwichUnionSize8Alignment4(other.CloneStorage_()) {}
inline SandwichUnionSize8Alignment4& ::test_unionsandwich::SandwichUnionSize8Alignment4::operator=(const ::test_unionsandwich::SandwichUnionSize8Alignment4 & other) noexcept {
storage_ = other.CloneStorage_();
return *this;
}
inline SandwichUnionSize8Alignment4::SandwichUnionSize8Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize8Alignment4(Storage_{
.before = {},
.union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{},
.after = {},
}) {}
inline SandwichUnionSize8Alignment4& SandwichUnionSize8Alignment4::before(uint32_t value) {
storage_.before = std::move(value);
return *this;
}
inline SandwichUnionSize8Alignment4& SandwichUnionSize8Alignment4::union_(::test_unionsandwich::UnionSize8Alignment4 value) {
storage_.union_ = std::move(value);
return *this;
}
inline SandwichUnionSize8Alignment4& SandwichUnionSize8Alignment4::after(uint32_t value) {
storage_.after = std::move(value);
return *this;
}
inline SandwichUnionSize12Alignment4::SandwichUnionSize12Alignment4(Storage_ storage) noexcept : storage_(std::move(storage)) {}
inline SandwichUnionSize12Alignment4::SandwichUnionSize12Alignment4(uint32_t before, ::test_unionsandwich::UnionSize12Alignment4 union_, int32_t after) noexcept
: storage_({.before = std::move(before),
.union_ = std::move(union_),
.after = std::move(after)}) {}
inline SandwichUnionSize12Alignment4::SandwichUnionSize12Alignment4(const ::test_unionsandwich::SandwichUnionSize12Alignment4& other) noexcept : ::test_unionsandwich::SandwichUnionSize12Alignment4(other.CloneStorage_()) {}
inline SandwichUnionSize12Alignment4& ::test_unionsandwich::SandwichUnionSize12Alignment4::operator=(const ::test_unionsandwich::SandwichUnionSize12Alignment4 & other) noexcept {
storage_ = other.CloneStorage_();
return *this;
}
inline SandwichUnionSize12Alignment4::SandwichUnionSize12Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize12Alignment4(Storage_{
.before = {},
.union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{},
.after = {},
}) {}
inline SandwichUnionSize12Alignment4& SandwichUnionSize12Alignment4::before(uint32_t value) {
storage_.before = std::move(value);
return *this;
}
inline SandwichUnionSize12Alignment4& SandwichUnionSize12Alignment4::union_(::test_unionsandwich::UnionSize12Alignment4 value) {
storage_.union_ = std::move(value);
return *this;
}
inline SandwichUnionSize12Alignment4& SandwichUnionSize12Alignment4::after(int32_t value) {
storage_.after = std::move(value);
return *this;
}
inline StructSize16Alignment8::StructSize16Alignment8(Storage_ storage) noexcept : storage_(std::move(storage)) {}
inline StructSize16Alignment8::StructSize16Alignment8(uint64_t f1, uint64_t f2) noexcept
: storage_({.f1 = std::move(f1),
.f2 = std::move(f2)}) {}
inline StructSize16Alignment8::StructSize16Alignment8(const ::test_unionsandwich::StructSize16Alignment8& other) noexcept : ::test_unionsandwich::StructSize16Alignment8(other.CloneStorage_()) {}
inline StructSize16Alignment8& ::test_unionsandwich::StructSize16Alignment8::operator=(const ::test_unionsandwich::StructSize16Alignment8 & other) noexcept {
storage_ = other.CloneStorage_();
return *this;
}
inline StructSize16Alignment8::StructSize16Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : StructSize16Alignment8(Storage_{
.f1 = {},
.f2 = {},
}) {}
inline StructSize16Alignment8& StructSize16Alignment8::f1(uint64_t value) {
storage_.f1 = std::move(value);
return *this;
}
inline StructSize16Alignment8& StructSize16Alignment8::f2(uint64_t value) {
storage_.f2 = std::move(value);
return *this;
}
inline SandwichUnionSize24Alignment8::SandwichUnionSize24Alignment8(Storage_ storage) noexcept : storage_(std::move(storage)) {}
inline SandwichUnionSize24Alignment8::SandwichUnionSize24Alignment8(uint32_t before, ::test_unionsandwich::UnionSize24Alignment8 union_, uint32_t after) noexcept
: storage_({.before = std::move(before),
.union_ = std::move(union_),
.after = std::move(after)}) {}
inline SandwichUnionSize24Alignment8::SandwichUnionSize24Alignment8(const ::test_unionsandwich::SandwichUnionSize24Alignment8& other) noexcept : ::test_unionsandwich::SandwichUnionSize24Alignment8(other.CloneStorage_()) {}
inline SandwichUnionSize24Alignment8& ::test_unionsandwich::SandwichUnionSize24Alignment8::operator=(const ::test_unionsandwich::SandwichUnionSize24Alignment8 & other) noexcept {
storage_ = other.CloneStorage_();
return *this;
}
inline SandwichUnionSize24Alignment8::SandwichUnionSize24Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize24Alignment8(Storage_{
.before = {},
.union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{},
.after = {},
}) {}
inline SandwichUnionSize24Alignment8& SandwichUnionSize24Alignment8::before(uint32_t value) {
storage_.before = std::move(value);
return *this;
}
inline SandwichUnionSize24Alignment8& SandwichUnionSize24Alignment8::union_(::test_unionsandwich::UnionSize24Alignment8 value) {
storage_.union_ = std::move(value);
return *this;
}
inline SandwichUnionSize24Alignment8& SandwichUnionSize24Alignment8::after(uint32_t value) {
storage_.after = std::move(value);
return *this;
}
inline SandwichUnionSize36Alignment4::SandwichUnionSize36Alignment4(Storage_ storage) noexcept : storage_(std::move(storage)) {}
inline SandwichUnionSize36Alignment4::SandwichUnionSize36Alignment4(uint32_t before, ::test_unionsandwich::UnionSize36Alignment4 union_, uint32_t after) noexcept
: storage_({.before = std::move(before),
.union_ = std::move(union_),
.after = std::move(after)}) {}
inline SandwichUnionSize36Alignment4::SandwichUnionSize36Alignment4(const ::test_unionsandwich::SandwichUnionSize36Alignment4& other) noexcept : ::test_unionsandwich::SandwichUnionSize36Alignment4(other.CloneStorage_()) {}
inline SandwichUnionSize36Alignment4& ::test_unionsandwich::SandwichUnionSize36Alignment4::operator=(const ::test_unionsandwich::SandwichUnionSize36Alignment4 & other) noexcept {
storage_ = other.CloneStorage_();
return *this;
}
inline SandwichUnionSize36Alignment4::SandwichUnionSize36Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize36Alignment4(Storage_{
.before = {},
.union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{},
.after = {},
}) {}
inline SandwichUnionSize36Alignment4& SandwichUnionSize36Alignment4::before(uint32_t value) {
storage_.before = std::move(value);
return *this;
}
inline SandwichUnionSize36Alignment4& SandwichUnionSize36Alignment4::union_(::test_unionsandwich::UnionSize36Alignment4 value) {
storage_.union_ = std::move(value);
return *this;
}
inline SandwichUnionSize36Alignment4& SandwichUnionSize36Alignment4::after(uint32_t value) {
storage_.after = std::move(value);
return *this;
}
} // namespace test_unionsandwich
namespace fidl {
template <>
struct IsFidlType<::test_unionsandwich::SandwichUnionSize8Alignment4> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::SandwichUnionSize8Alignment4> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 32;
static constexpr uint32_t kMaxOutOfLine = 0;
static constexpr bool kHasPointer = true;
};
template <>
struct IsStruct<::test_unionsandwich::SandwichUnionSize8Alignment4> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::SandwichUnionSize8Alignment4, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize8Alignment4, 32> {};
template <>
struct IsFidlType<::test_unionsandwich::SandwichUnionSize12Alignment4> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::SandwichUnionSize12Alignment4> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 32;
static constexpr uint32_t kMaxOutOfLine = 8;
static constexpr bool kHasPointer = true;
};
template <>
struct IsStruct<::test_unionsandwich::SandwichUnionSize12Alignment4> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::SandwichUnionSize12Alignment4, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize12Alignment4, 32> {};
template <>
struct IsFidlType<::test_unionsandwich::StructSize16Alignment8> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::StructSize16Alignment8> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 0;
static constexpr uint32_t kPrimarySize = 16;
static constexpr uint32_t kMaxOutOfLine = 0;
static constexpr bool kHasPointer = false;
};
template <>
struct IsStruct<::test_unionsandwich::StructSize16Alignment8> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::StructSize16Alignment8, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::StructSize16Alignment8, 16> {};
template <>
struct IsFidlType<::test_unionsandwich::SandwichUnionSize24Alignment8> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::SandwichUnionSize24Alignment8> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 32;
static constexpr uint32_t kMaxOutOfLine = 16;
static constexpr bool kHasPointer = true;
};
template <>
struct IsStruct<::test_unionsandwich::SandwichUnionSize24Alignment8> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::SandwichUnionSize24Alignment8, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize24Alignment8, 32> {};
template <>
struct IsFidlType<::test_unionsandwich::SandwichUnionSize36Alignment4> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::SandwichUnionSize36Alignment4> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 32;
static constexpr uint32_t kMaxOutOfLine = 32;
static constexpr bool kHasPointer = true;
};
template <>
struct IsStruct<::test_unionsandwich::SandwichUnionSize36Alignment4> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::SandwichUnionSize36Alignment4, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalStructCodingTraits<::test_unionsandwich::SandwichUnionSize36Alignment4, 32> {};
template <>
struct IsFidlType<::test_unionsandwich::UnionSize8Alignment4> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::UnionSize8Alignment4> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 16;
static constexpr uint32_t kMaxOutOfLine = 0;
static constexpr bool kHasPointer = true;
};
template <>
struct IsUnion<::test_unionsandwich::UnionSize8Alignment4> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::UnionSize8Alignment4, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize8Alignment4> {};
template <>
struct IsFidlType<::test_unionsandwich::UnionSize12Alignment4> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::UnionSize12Alignment4> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 16;
static constexpr uint32_t kMaxOutOfLine = 8;
static constexpr bool kHasPointer = true;
};
template <>
struct IsUnion<::test_unionsandwich::UnionSize12Alignment4> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::UnionSize12Alignment4, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize12Alignment4> {};
template <>
struct IsFidlType<::test_unionsandwich::UnionSize24Alignment8> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::UnionSize24Alignment8> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 16;
static constexpr uint32_t kMaxOutOfLine = 16;
static constexpr bool kHasPointer = true;
};
template <>
struct IsUnion<::test_unionsandwich::UnionSize24Alignment8> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::UnionSize24Alignment8, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize24Alignment8> {};
template <>
struct IsFidlType<::test_unionsandwich::UnionSize36Alignment4> : public std::true_type {};
template <>
struct TypeTraits<::test_unionsandwich::UnionSize36Alignment4> {
static constexpr uint32_t kMaxNumHandles = 0;
static constexpr uint32_t kMaxDepth = 1;
static constexpr uint32_t kPrimarySize = 16;
static constexpr uint32_t kMaxOutOfLine = 32;
static constexpr bool kHasPointer = true;
};
template <>
struct IsUnion<::test_unionsandwich::UnionSize36Alignment4> : public std::true_type {};
template <>
struct internal::NaturalCodingTraits<::test_unionsandwich::UnionSize36Alignment4, ::fidl::internal::NaturalCodingConstraintEmpty> final
: public ::fidl::internal::NaturalUnionCodingTraits<::test_unionsandwich::UnionSize36Alignment4> {};
#pragma clang diagnostic pop
} // namespace fidl