| // WARNING: This file is machine generated by fidlgen. |
| |
| #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__ |
| |
| namespace test_unionsandwich { |
| |
| class SandwichUnionSize8Alignment4; |
| |
| class SandwichUnionSize36Alignment4; |
| |
| class SandwichUnionSize12Alignment4; |
| |
| class StructSize16Alignment8; |
| |
| class SandwichUnionSize24Alignment8; |
| |
| class UnionSize8Alignment4; |
| |
| class UnionSize36Alignment4; |
| |
| class UnionSize12Alignment4; |
| |
| class UnionSize24Alignment8; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize8Alignment4Table; |
| |
| class UnionSize8Alignment4 { |
| private: |
| using Storage_ = |
| std::variant< |
| std::monostate, uint32_t>; |
| |
| public: |
| // TODO: share union tag types between wire & natural. |
| enum class Tag : fidl_union_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_); |
| } |
| |
| 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; |
| } |
| } |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize8Alignment4Table; |
| |
| class SandwichUnionSize8Alignment4 { |
| private: |
| struct Storage_; |
| |
| public: |
| SandwichUnionSize8Alignment4(Storage_ storage) noexcept : storage_(std::move(storage)) {} |
| 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)}) {} |
| |
| #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(other.CloneStorage_()) {} |
| SandwichUnionSize8Alignment4& operator=(const SandwichUnionSize8Alignment4& other) noexcept { |
| storage_ = other.CloneStorage_(); |
| return *this; |
| } |
| |
| 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; |
| } |
| |
| const ::test_unionsandwich::UnionSize8Alignment4& |
| union_() const { |
| return storage_.union_; |
| } |
| |
| ::test_unionsandwich::UnionSize8Alignment4& union_() { |
| return storage_.union_; |
| } |
| |
| uint32_t |
| after() const { |
| return storage_.after; |
| } |
| |
| uint32_t& after() { |
| return storage_.after; |
| } |
| |
| SandwichUnionSize8Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize8Alignment4(Storage_{ |
| .before = {}, |
| .union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}, |
| .after = {}, |
| }) {} |
| |
| 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 = 0xffffffff00000000ull, |
| }, |
| ::fidl::internal::NaturalStructPadding<uint64_t>{ |
| .offset = 24, |
| .mask = 0xffffffff00000000ull, |
| }); |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize36Alignment4Table; |
| |
| 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_union_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_); |
| } |
| |
| 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; |
| } |
| } |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize36Alignment4Table; |
| |
| class SandwichUnionSize36Alignment4 { |
| private: |
| struct Storage_; |
| |
| public: |
| SandwichUnionSize36Alignment4(Storage_ storage) noexcept : storage_(std::move(storage)) {} |
| 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)}) {} |
| |
| #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(other.CloneStorage_()) {} |
| SandwichUnionSize36Alignment4& operator=(const SandwichUnionSize36Alignment4& other) noexcept { |
| storage_ = other.CloneStorage_(); |
| return *this; |
| } |
| |
| 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; |
| } |
| |
| const ::test_unionsandwich::UnionSize36Alignment4& |
| union_() const { |
| return storage_.union_; |
| } |
| |
| ::test_unionsandwich::UnionSize36Alignment4& union_() { |
| return storage_.union_; |
| } |
| |
| uint32_t |
| after() const { |
| return storage_.after; |
| } |
| |
| uint32_t& after() { |
| return storage_.after; |
| } |
| |
| SandwichUnionSize36Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize36Alignment4(Storage_{ |
| .before = {}, |
| .union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}, |
| .after = {}, |
| }) {} |
| |
| 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 = 0xffffffff00000000ull, |
| }, |
| ::fidl::internal::NaturalStructPadding<uint64_t>{ |
| .offset = 24, |
| .mask = 0xffffffff00000000ull, |
| }); |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize12Alignment4Table; |
| |
| 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_union_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_); |
| } |
| |
| 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; |
| } |
| } |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize12Alignment4Table; |
| |
| class SandwichUnionSize12Alignment4 { |
| private: |
| struct Storage_; |
| |
| public: |
| SandwichUnionSize12Alignment4(Storage_ storage) noexcept : storage_(std::move(storage)) {} |
| 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)}) {} |
| |
| #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(other.CloneStorage_()) {} |
| SandwichUnionSize12Alignment4& operator=(const SandwichUnionSize12Alignment4& other) noexcept { |
| storage_ = other.CloneStorage_(); |
| return *this; |
| } |
| |
| 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; |
| } |
| |
| const ::test_unionsandwich::UnionSize12Alignment4& |
| union_() const { |
| return storage_.union_; |
| } |
| |
| ::test_unionsandwich::UnionSize12Alignment4& union_() { |
| return storage_.union_; |
| } |
| |
| int32_t |
| after() const { |
| return storage_.after; |
| } |
| |
| int32_t& after() { |
| return storage_.after; |
| } |
| |
| SandwichUnionSize12Alignment4(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize12Alignment4(Storage_{ |
| .before = {}, |
| .union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}, |
| .after = {}, |
| }) {} |
| |
| 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 = 0xffffffff00000000ull, |
| }, |
| ::fidl::internal::NaturalStructPadding<uint64_t>{ |
| .offset = 24, |
| .mask = 0xffffffff00000000ull, |
| }); |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_StructSize16Alignment8Table; |
| |
| class StructSize16Alignment8 { |
| private: |
| struct Storage_; |
| |
| public: |
| StructSize16Alignment8(Storage_ storage) noexcept : storage_(std::move(storage)) {} |
| StructSize16Alignment8(uint64_t f1, uint64_t f2) noexcept |
| : storage_({.f1 = std::move(f1), |
| .f2 = std::move(f2)}) {} |
| |
| #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(other.CloneStorage_()) {} |
| StructSize16Alignment8& operator=(const StructSize16Alignment8& other) noexcept { |
| storage_ = other.CloneStorage_(); |
| return *this; |
| } |
| |
| 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; |
| } |
| |
| uint64_t |
| f2() const { |
| return storage_.f2; |
| } |
| |
| uint64_t& f2() { |
| return storage_.f2; |
| } |
| |
| StructSize16Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : StructSize16Alignment8(Storage_{ |
| .f1 = {}, |
| .f2 = {}, |
| }) {} |
| |
| 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(); |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize24Alignment8Table; |
| |
| 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_union_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_); |
| } |
| |
| 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; |
| } |
| } |
| }; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize24Alignment8Table; |
| |
| class SandwichUnionSize24Alignment8 { |
| private: |
| struct Storage_; |
| |
| public: |
| SandwichUnionSize24Alignment8(Storage_ storage) noexcept : storage_(std::move(storage)) {} |
| 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)}) {} |
| |
| #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(other.CloneStorage_()) {} |
| SandwichUnionSize24Alignment8& operator=(const SandwichUnionSize24Alignment8& other) noexcept { |
| storage_ = other.CloneStorage_(); |
| return *this; |
| } |
| |
| 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; |
| } |
| |
| const ::test_unionsandwich::UnionSize24Alignment8& |
| union_() const { |
| return storage_.union_; |
| } |
| |
| ::test_unionsandwich::UnionSize24Alignment8& union_() { |
| return storage_.union_; |
| } |
| |
| uint32_t |
| after() const { |
| return storage_.after; |
| } |
| |
| uint32_t& after() { |
| return storage_.after; |
| } |
| |
| SandwichUnionSize24Alignment8(::fidl::internal::DefaultConstructPossiblyInvalidObjectTag) : SandwichUnionSize24Alignment8(Storage_{ |
| .before = {}, |
| .union_ = ::fidl::internal::DefaultConstructPossiblyInvalidObjectTag{}, |
| .after = {}, |
| }) {} |
| |
| 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 = 0xffffffff00000000ull, |
| }, |
| ::fidl::internal::NaturalStructPadding<uint64_t>{ |
| .offset = 24, |
| .mask = 0xffffffff00000000ull, |
| }); |
| }; |
| |
| } // namespace test_unionsandwich |
| namespace fidl { |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize8Alignment4Table; |
| |
| template <> |
| struct IsFidlType<::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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize36Alignment4Table; |
| |
| template <> |
| struct IsFidlType<::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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize12Alignment4Table; |
| |
| template <> |
| struct IsFidlType<::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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_StructSize16Alignment8Table; |
| |
| template <> |
| struct IsFidlType<::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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_SandwichUnionSize24Alignment8Table; |
| |
| template <> |
| struct IsFidlType<::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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize8Alignment4Table; |
| |
| template <> |
| struct IsFidlType<::test_unionsandwich::UnionSize8Alignment4> : public std::true_type {}; |
| 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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize36Alignment4Table; |
| |
| template <> |
| struct IsFidlType<::test_unionsandwich::UnionSize36Alignment4> : public std::true_type {}; |
| 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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize12Alignment4Table; |
| |
| template <> |
| struct IsFidlType<::test_unionsandwich::UnionSize12Alignment4> : public std::true_type {}; |
| 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> {}; |
| |
| extern "C" const fidl_type_t test_unionsandwich_UnionSize24Alignment8Table; |
| |
| template <> |
| struct IsFidlType<::test_unionsandwich::UnionSize24Alignment8> : public std::true_type {}; |
| 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> {}; |
| |
| } // namespace fidl |