| // WARNING: This file is machine generated by fidlgen. |
| |
| #pragma once |
| |
| #include <lib/fidl/llcpp/internal/display_error.h> |
| #include <lib/fidl/llcpp/traits.h> |
| #include <lib/stdcompat/optional.h> |
| |
| #include <cinttypes> |
| |
| namespace test_doccomments { |
| /// strict bits comment #1 |
| /// |
| /// strict bits comment #2 |
| // |MyStrictBits| is strict, hence is guaranteed to only contain |
| // members defined in the FIDL schema when receiving it in a message. |
| // Sending unknown members will fail at runtime. |
| class MyStrictBits final { |
| public: |
| constexpr MyStrictBits() = default; |
| |
| // Constructs an instance of |MyStrictBits| from an underlying primitive |
| // value, preserving any bit member not defined in the FIDL schema. |
| explicit constexpr MyStrictBits(uint32_t value) : value_(value) {} |
| const static MyStrictBits kMyFirstBit; |
| const static MyStrictBits kMyOtherBit; |
| const static MyStrictBits kMask; |
| |
| explicit constexpr inline operator uint32_t() const { return value_; } |
| explicit constexpr inline operator bool() const { |
| return static_cast<bool>(value_); |
| } |
| constexpr inline bool operator==(const MyStrictBits& other) const { |
| return value_ == other.value_; |
| } |
| constexpr inline bool operator!=(const MyStrictBits& other) const { |
| return value_ != other.value_; |
| } |
| constexpr inline MyStrictBits operator~() const; |
| constexpr inline MyStrictBits operator|(const MyStrictBits& other) const; |
| constexpr inline MyStrictBits operator&(const MyStrictBits& other) const; |
| constexpr inline MyStrictBits operator^(const MyStrictBits& other) const; |
| constexpr inline void operator|=(const MyStrictBits& other); |
| constexpr inline void operator&=(const MyStrictBits& other); |
| constexpr inline void operator^=(const MyStrictBits& other); |
| |
| // Constructs an instance of |MyStrictBits| from an underlying primitive value |
| // if the primitive does not contain any unknown members not defined in the |
| // FIDL schema. Otherwise, returns |std::nullopt|. |
| constexpr inline static std::optional<MyStrictBits> TryFrom(uint32_t value) { |
| if (value & ~kMask.value_) { |
| return std::nullopt; |
| } |
| return MyStrictBits(value & MyStrictBits::kMask.value_); |
| } |
| |
| // Constructs an instance of |MyStrictBits| from an underlying primitive |
| // value, clearing any bit member not defined in the FIDL schema. |
| constexpr inline static MyStrictBits TruncatingUnknown(uint32_t value) { |
| return MyStrictBits(value & MyStrictBits::kMask.value_); |
| } |
| |
| private: |
| uint32_t value_ = 0; |
| }; |
| constexpr const ::test_doccomments::MyStrictBits MyStrictBits::kMyFirstBit = |
| ::test_doccomments::MyStrictBits(1u); |
| constexpr const ::test_doccomments::MyStrictBits MyStrictBits::kMyOtherBit = |
| ::test_doccomments::MyStrictBits(2u); |
| constexpr const ::test_doccomments::MyStrictBits MyStrictBits::kMask = |
| ::test_doccomments::MyStrictBits(3u); |
| |
| constexpr inline ::test_doccomments::MyStrictBits MyStrictBits::operator~() |
| const { |
| return ::test_doccomments::MyStrictBits( |
| static_cast<uint32_t>(~this->value_ & kMask.value_)); |
| } |
| |
| constexpr inline ::test_doccomments::MyStrictBits MyStrictBits::operator|( |
| const ::test_doccomments::MyStrictBits& other) const { |
| return ::test_doccomments::MyStrictBits( |
| static_cast<uint32_t>(this->value_ | other.value_)); |
| } |
| |
| constexpr inline ::test_doccomments::MyStrictBits MyStrictBits::operator&( |
| const ::test_doccomments::MyStrictBits& other) const { |
| return ::test_doccomments::MyStrictBits( |
| static_cast<uint32_t>(this->value_ & other.value_)); |
| } |
| |
| constexpr inline ::test_doccomments::MyStrictBits MyStrictBits::operator^( |
| const ::test_doccomments::MyStrictBits& other) const { |
| return ::test_doccomments::MyStrictBits( |
| static_cast<uint32_t>(this->value_ ^ other.value_)); |
| } |
| |
| constexpr inline void MyStrictBits::operator|=( |
| const ::test_doccomments::MyStrictBits& other) { |
| this->value_ |= other.value_; |
| } |
| |
| constexpr inline void MyStrictBits::operator&=( |
| const ::test_doccomments::MyStrictBits& other) { |
| this->value_ &= other.value_; |
| } |
| |
| constexpr inline void MyStrictBits::operator^=( |
| const ::test_doccomments::MyStrictBits& other) { |
| this->value_ ^= other.value_; |
| } |
| |
| /// flexible bits comment #1 |
| /// |
| /// flexible bits comment #2 |
| // |MyFlexibleBits| is flexible, hence may contain unknown members not |
| // defined in the FIDL schema. |
| class MyFlexibleBits final { |
| public: |
| constexpr MyFlexibleBits() = default; |
| |
| // Constructs an instance of |MyFlexibleBits| from an underlying primitive |
| // value, preserving any bit member not defined in the FIDL schema. |
| explicit constexpr MyFlexibleBits(uint32_t value) : value_(value) {} |
| const static MyFlexibleBits kMyFirstBit; |
| const static MyFlexibleBits kMyOtherBit; |
| const static MyFlexibleBits kMask; |
| |
| explicit constexpr inline operator uint32_t() const { return value_; } |
| explicit constexpr inline operator bool() const { |
| return static_cast<bool>(value_); |
| } |
| constexpr inline bool operator==(const MyFlexibleBits& other) const { |
| return value_ == other.value_; |
| } |
| constexpr inline bool operator!=(const MyFlexibleBits& other) const { |
| return value_ != other.value_; |
| } |
| constexpr inline MyFlexibleBits operator~() const; |
| constexpr inline MyFlexibleBits operator|(const MyFlexibleBits& other) const; |
| constexpr inline MyFlexibleBits operator&(const MyFlexibleBits& other) const; |
| constexpr inline MyFlexibleBits operator^(const MyFlexibleBits& other) const; |
| constexpr inline void operator|=(const MyFlexibleBits& other); |
| constexpr inline void operator&=(const MyFlexibleBits& other); |
| constexpr inline void operator^=(const MyFlexibleBits& other); |
| |
| // Constructs an instance of |MyFlexibleBits| from an underlying primitive |
| // value if the primitive does not contain any unknown members not defined in |
| // the FIDL schema. Otherwise, returns |std::nullopt|. |
| constexpr inline static std::optional<MyFlexibleBits> TryFrom( |
| uint32_t value) { |
| if (value & ~kMask.value_) { |
| return std::nullopt; |
| } |
| return MyFlexibleBits(value & MyFlexibleBits::kMask.value_); |
| } |
| |
| // Constructs an instance of |MyFlexibleBits| from an underlying primitive |
| // value, clearing any bit member not defined in the FIDL schema. |
| constexpr inline static MyFlexibleBits TruncatingUnknown(uint32_t value) { |
| return MyFlexibleBits(value & MyFlexibleBits::kMask.value_); |
| } |
| constexpr inline MyFlexibleBits unknown_bits() const { |
| return *this & MyFlexibleBits(~kMask.value_); |
| } |
| constexpr inline bool has_unknown_bits() const { |
| return static_cast<bool>(unknown_bits()); |
| } |
| |
| private: |
| uint32_t value_ = 0; |
| }; |
| constexpr const ::test_doccomments::MyFlexibleBits MyFlexibleBits::kMyFirstBit = |
| ::test_doccomments::MyFlexibleBits(1u); |
| constexpr const ::test_doccomments::MyFlexibleBits MyFlexibleBits::kMyOtherBit = |
| ::test_doccomments::MyFlexibleBits(2u); |
| constexpr const ::test_doccomments::MyFlexibleBits MyFlexibleBits::kMask = |
| ::test_doccomments::MyFlexibleBits(3u); |
| |
| constexpr inline ::test_doccomments::MyFlexibleBits MyFlexibleBits::operator~() |
| const { |
| return ::test_doccomments::MyFlexibleBits( |
| static_cast<uint32_t>(~this->value_ & kMask.value_)); |
| } |
| |
| constexpr inline ::test_doccomments::MyFlexibleBits MyFlexibleBits::operator|( |
| const ::test_doccomments::MyFlexibleBits& other) const { |
| return ::test_doccomments::MyFlexibleBits( |
| static_cast<uint32_t>(this->value_ | other.value_)); |
| } |
| |
| constexpr inline ::test_doccomments::MyFlexibleBits MyFlexibleBits::operator&( |
| const ::test_doccomments::MyFlexibleBits& other) const { |
| return ::test_doccomments::MyFlexibleBits( |
| static_cast<uint32_t>(this->value_ & other.value_)); |
| } |
| |
| constexpr inline ::test_doccomments::MyFlexibleBits MyFlexibleBits::operator^( |
| const ::test_doccomments::MyFlexibleBits& other) const { |
| return ::test_doccomments::MyFlexibleBits( |
| static_cast<uint32_t>(this->value_ ^ other.value_)); |
| } |
| |
| constexpr inline void MyFlexibleBits::operator|=( |
| const ::test_doccomments::MyFlexibleBits& other) { |
| this->value_ |= other.value_; |
| } |
| |
| constexpr inline void MyFlexibleBits::operator&=( |
| const ::test_doccomments::MyFlexibleBits& other) { |
| this->value_ &= other.value_; |
| } |
| |
| constexpr inline void MyFlexibleBits::operator^=( |
| const ::test_doccomments::MyFlexibleBits& other) { |
| this->value_ ^= other.value_; |
| } |
| |
| /// strict enum comment #1. |
| /// |
| /// strict enum comment #2. |
| enum class MyStrictEnum : uint32_t { |
| |
| /// FOO member comment #1 |
| /// |
| /// FOO member comment #3 |
| kFoo = 1u, |
| |
| /// BAR member comment #1 |
| /// |
| /// BAR member comment #3 |
| kBar = 2u, |
| }; |
| |
| } // namespace test_doccomments |
| template <> |
| struct fidl::internal::DisplayError<::test_doccomments::MyStrictEnum> { |
| static size_t Format(const ::test_doccomments::MyStrictEnum& value, |
| char* destination, size_t capacity); |
| }; |
| |
| namespace test_doccomments { |
| |
| /// flexible enum comment #1. |
| /// |
| /// flexible enum comment #2. |
| class MyFlexibleEnum final { |
| public: |
| constexpr MyFlexibleEnum() : value_(0) {} |
| constexpr explicit MyFlexibleEnum(uint32_t value) : value_(value) {} |
| constexpr operator uint32_t() const { return value_; } |
| |
| constexpr bool IsUnknown() const { |
| switch (value_) { |
| case 1u: |
| |
| case 2u: |
| |
| return false; |
| } |
| return true; |
| } |
| |
| constexpr static MyFlexibleEnum Unknown() { |
| return MyFlexibleEnum(0xffffffff); |
| } |
| |
| /// FOO member comment #1 |
| /// |
| /// FOO member comment #3 |
| static const MyFlexibleEnum kFoo; |
| |
| /// BAR member comment #1 |
| /// |
| /// BAR member comment #3 |
| static const MyFlexibleEnum kBar; |
| |
| private: |
| uint32_t value_; |
| }; |
| constexpr const ::test_doccomments::MyFlexibleEnum MyFlexibleEnum::kFoo = |
| ::test_doccomments::MyFlexibleEnum(1u); |
| constexpr const ::test_doccomments::MyFlexibleEnum MyFlexibleEnum::kBar = |
| ::test_doccomments::MyFlexibleEnum(2u); |
| |
| } // namespace test_doccomments |
| template <> |
| struct fidl::internal::DisplayError<::test_doccomments::MyFlexibleEnum> { |
| static size_t Format(const ::test_doccomments::MyFlexibleEnum& value, |
| char* destination, size_t capacity); |
| }; |
| |
| namespace fidl { |
| |
| template <> |
| struct IsFidlType<::test_doccomments::MyStrictBits> : public std::true_type {}; |
| template <> |
| struct ContainsHandle<::test_doccomments::MyStrictBits> |
| : public std::false_type {}; |
| static_assert(std::is_standard_layout_v<::test_doccomments::MyStrictBits>); |
| static_assert(sizeof(::test_doccomments::MyStrictBits) == sizeof(uint32_t)); |
| |
| template <> |
| struct IsFidlType<::test_doccomments::MyFlexibleBits> : public std::true_type { |
| }; |
| template <> |
| struct ContainsHandle<::test_doccomments::MyFlexibleBits> |
| : public std::false_type {}; |
| static_assert(std::is_standard_layout_v<::test_doccomments::MyFlexibleBits>); |
| static_assert(sizeof(::test_doccomments::MyFlexibleBits) == sizeof(uint32_t)); |
| |
| template <> |
| struct IsFidlType<::test_doccomments::MyStrictEnum> : public std::true_type {}; |
| template <> |
| struct ContainsHandle<::test_doccomments::MyStrictEnum> |
| : public std::false_type {}; |
| |
| template <> |
| struct IsFidlType<::test_doccomments::MyFlexibleEnum> : public std::true_type { |
| }; |
| template <> |
| struct ContainsHandle<::test_doccomments::MyFlexibleEnum> |
| : public std::false_type {}; |
| |
| } // namespace fidl |