blob: e77fbb48dd7d00a8a2fe08a792b395e7c3e033d1 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
// fidl_experiment = output_index_json
#pragma once
#include <lib/fidl/cpp/wire/internal/display_error.h>
#include <lib/fidl/cpp/wire/traits.h>
#include <lib/stdcompat/optional.h>
#include <cinttypes>
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"
namespace test_bits {
// |MyBits| 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 MyBits final {
public:
constexpr MyBits() = default;
// Constructs an instance of |MyBits| from an underlying primitive value,
// preserving any bit member not defined in the FIDL schema.
explicit constexpr MyBits(uint32_t value) : value_(value) {}
const static MyBits kMyFirstBit;
const static MyBits kMyOtherBit;
const static MyBits kMask_;
const static MyBits 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 MyBits& other) const { return value_ == other.value_; }
constexpr inline bool operator!=(const MyBits& other) const { return value_ != other.value_; }
constexpr inline MyBits operator~() const;
constexpr inline MyBits operator|(const MyBits& other) const;
constexpr inline MyBits operator&(const MyBits& other) const;
constexpr inline MyBits operator^(const MyBits& other) const;
constexpr inline MyBits operator-(const MyBits& other) const;
constexpr inline void operator|=(const MyBits& other);
constexpr inline void operator&=(const MyBits& other);
constexpr inline void operator^=(const MyBits& other);
constexpr inline void operator-=(const MyBits& other);
// Constructs an instance of |MyBits| 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<MyBits> TryFrom(uint32_t value) {
if (value & ~kMask.value_) {
return std::nullopt;
}
return MyBits(value & MyBits::kMask.value_);
}
// Constructs an instance of |MyBits| from an underlying primitive value,
// clearing any bit member not defined in the FIDL schema.
constexpr inline static MyBits TruncatingUnknown(uint32_t value) {
return MyBits(value & MyBits::kMask.value_);
}
private:
uint32_t value_ = 0;
};
constexpr const ::test_bits::MyBits MyBits::kMyFirstBit =
::test_bits::MyBits(1u);
constexpr const ::test_bits::MyBits MyBits::kMyOtherBit =
::test_bits::MyBits(2u);
constexpr const ::test_bits::MyBits MyBits::kMask_ =
::test_bits::MyBits(4u);
constexpr const ::test_bits::MyBits MyBits::kMask = ::test_bits::MyBits(7u);
constexpr inline ::test_bits::MyBits MyBits::operator~() const {
return ::test_bits::MyBits(static_cast<uint32_t>(~this->value_ & kMask.value_));
}
constexpr inline ::test_bits::MyBits MyBits::operator|(
const ::test_bits::MyBits& other) const {
return ::test_bits::MyBits(static_cast<uint32_t>(this->value_ | other.value_));
}
constexpr inline ::test_bits::MyBits MyBits::operator&(
const ::test_bits::MyBits& other) const {
return ::test_bits::MyBits(static_cast<uint32_t>(this->value_ & other.value_));
}
constexpr inline ::test_bits::MyBits MyBits::operator^(
const ::test_bits::MyBits& other) const {
return ::test_bits::MyBits(static_cast<uint32_t>(this->value_ ^ other.value_));
}
constexpr inline ::test_bits::MyBits MyBits::operator-(
const ::test_bits::MyBits& other) const {
return ::test_bits::MyBits(static_cast<uint32_t>(this->value_ & ~other.value_));
}
constexpr inline void MyBits::operator|=(
const ::test_bits::MyBits& other) {
this->value_ |= other.value_;
}
constexpr inline void MyBits::operator&=(
const ::test_bits::MyBits& other) {
this->value_ &= other.value_;
}
constexpr inline void MyBits::operator^=(
const ::test_bits::MyBits& other) {
this->value_ ^= other.value_;
}
constexpr inline void MyBits::operator-=(
const ::test_bits::MyBits& other) {
this->value_ &= ~other.value_;
}
// |StrictBits| 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 StrictBits final {
public:
constexpr StrictBits() = default;
// Constructs an instance of |StrictBits| from an underlying primitive value,
// preserving any bit member not defined in the FIDL schema.
explicit constexpr StrictBits(uint64_t value) : value_(value) {}
const static StrictBits kSmallest;
const static StrictBits kBiggest;
const static StrictBits kMask;
explicit constexpr inline operator uint64_t() const { return value_; }
explicit constexpr inline operator bool() const { return static_cast<bool>(value_); }
constexpr inline bool operator==(const StrictBits& other) const { return value_ == other.value_; }
constexpr inline bool operator!=(const StrictBits& other) const { return value_ != other.value_; }
constexpr inline StrictBits operator~() const;
constexpr inline StrictBits operator|(const StrictBits& other) const;
constexpr inline StrictBits operator&(const StrictBits& other) const;
constexpr inline StrictBits operator^(const StrictBits& other) const;
constexpr inline StrictBits operator-(const StrictBits& other) const;
constexpr inline void operator|=(const StrictBits& other);
constexpr inline void operator&=(const StrictBits& other);
constexpr inline void operator^=(const StrictBits& other);
constexpr inline void operator-=(const StrictBits& other);
// Constructs an instance of |StrictBits| 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<StrictBits> TryFrom(uint64_t value) {
if (value & ~kMask.value_) {
return std::nullopt;
}
return StrictBits(value & StrictBits::kMask.value_);
}
// Constructs an instance of |StrictBits| from an underlying primitive value,
// clearing any bit member not defined in the FIDL schema.
constexpr inline static StrictBits TruncatingUnknown(uint64_t value) {
return StrictBits(value & StrictBits::kMask.value_);
}
private:
uint64_t value_ = 0;
};
constexpr const ::test_bits::StrictBits StrictBits::kSmallest =
::test_bits::StrictBits(1u);
constexpr const ::test_bits::StrictBits StrictBits::kBiggest =
::test_bits::StrictBits(9223372036854775808u);
constexpr const ::test_bits::StrictBits StrictBits::kMask = ::test_bits::StrictBits(9223372036854775809u);
constexpr inline ::test_bits::StrictBits StrictBits::operator~() const {
return ::test_bits::StrictBits(static_cast<uint64_t>(~this->value_ & kMask.value_));
}
constexpr inline ::test_bits::StrictBits StrictBits::operator|(
const ::test_bits::StrictBits& other) const {
return ::test_bits::StrictBits(static_cast<uint64_t>(this->value_ | other.value_));
}
constexpr inline ::test_bits::StrictBits StrictBits::operator&(
const ::test_bits::StrictBits& other) const {
return ::test_bits::StrictBits(static_cast<uint64_t>(this->value_ & other.value_));
}
constexpr inline ::test_bits::StrictBits StrictBits::operator^(
const ::test_bits::StrictBits& other) const {
return ::test_bits::StrictBits(static_cast<uint64_t>(this->value_ ^ other.value_));
}
constexpr inline ::test_bits::StrictBits StrictBits::operator-(
const ::test_bits::StrictBits& other) const {
return ::test_bits::StrictBits(static_cast<uint64_t>(this->value_ & ~other.value_));
}
constexpr inline void StrictBits::operator|=(
const ::test_bits::StrictBits& other) {
this->value_ |= other.value_;
}
constexpr inline void StrictBits::operator&=(
const ::test_bits::StrictBits& other) {
this->value_ &= other.value_;
}
constexpr inline void StrictBits::operator^=(
const ::test_bits::StrictBits& other) {
this->value_ ^= other.value_;
}
constexpr inline void StrictBits::operator-=(
const ::test_bits::StrictBits& other) {
this->value_ &= ~other.value_;
}
// |FlexibleBits| is flexible, hence may contain unknown members not
// defined in the FIDL schema.
class FlexibleBits final {
public:
constexpr FlexibleBits() = default;
// Constructs an instance of |FlexibleBits| from an underlying primitive value,
// preserving any bit member not defined in the FIDL schema.
explicit constexpr FlexibleBits(uint64_t value) : value_(value) {}
const static FlexibleBits kSmallest;
const static FlexibleBits kBiggest;
const static FlexibleBits kMask;
explicit constexpr inline operator uint64_t() const { return value_; }
explicit constexpr inline operator bool() const { return static_cast<bool>(value_); }
constexpr inline bool operator==(const FlexibleBits& other) const { return value_ == other.value_; }
constexpr inline bool operator!=(const FlexibleBits& other) const { return value_ != other.value_; }
constexpr inline FlexibleBits operator~() const;
constexpr inline FlexibleBits operator|(const FlexibleBits& other) const;
constexpr inline FlexibleBits operator&(const FlexibleBits& other) const;
constexpr inline FlexibleBits operator^(const FlexibleBits& other) const;
constexpr inline FlexibleBits operator-(const FlexibleBits& other) const;
constexpr inline void operator|=(const FlexibleBits& other);
constexpr inline void operator&=(const FlexibleBits& other);
constexpr inline void operator^=(const FlexibleBits& other);
constexpr inline void operator-=(const FlexibleBits& other);
// Constructs an instance of |FlexibleBits| 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<FlexibleBits> TryFrom(uint64_t value) {
if (value & ~kMask.value_) {
return std::nullopt;
}
return FlexibleBits(value & FlexibleBits::kMask.value_);
}
// Constructs an instance of |FlexibleBits| from an underlying primitive value,
// clearing any bit member not defined in the FIDL schema.
constexpr inline static FlexibleBits TruncatingUnknown(uint64_t value) {
return FlexibleBits(value & FlexibleBits::kMask.value_);
}
constexpr inline FlexibleBits unknown_bits() const {
return *this & FlexibleBits(~kMask.value_);
}
constexpr inline bool has_unknown_bits() const { return static_cast<bool>(unknown_bits()); }
private:
uint64_t value_ = 0;
};
constexpr const ::test_bits::FlexibleBits FlexibleBits::kSmallest =
::test_bits::FlexibleBits(1u);
constexpr const ::test_bits::FlexibleBits FlexibleBits::kBiggest =
::test_bits::FlexibleBits(9223372036854775808u);
constexpr const ::test_bits::FlexibleBits FlexibleBits::kMask = ::test_bits::FlexibleBits(9223372036854775809u);
constexpr inline ::test_bits::FlexibleBits FlexibleBits::operator~() const {
return ::test_bits::FlexibleBits(static_cast<uint64_t>(~this->value_ & kMask.value_));
}
constexpr inline ::test_bits::FlexibleBits FlexibleBits::operator|(
const ::test_bits::FlexibleBits& other) const {
return ::test_bits::FlexibleBits(static_cast<uint64_t>(this->value_ | other.value_));
}
constexpr inline ::test_bits::FlexibleBits FlexibleBits::operator&(
const ::test_bits::FlexibleBits& other) const {
return ::test_bits::FlexibleBits(static_cast<uint64_t>(this->value_ & other.value_));
}
constexpr inline ::test_bits::FlexibleBits FlexibleBits::operator^(
const ::test_bits::FlexibleBits& other) const {
return ::test_bits::FlexibleBits(static_cast<uint64_t>(this->value_ ^ other.value_));
}
constexpr inline ::test_bits::FlexibleBits FlexibleBits::operator-(
const ::test_bits::FlexibleBits& other) const {
return ::test_bits::FlexibleBits(static_cast<uint64_t>(this->value_ & ~other.value_));
}
constexpr inline void FlexibleBits::operator|=(
const ::test_bits::FlexibleBits& other) {
this->value_ |= other.value_;
}
constexpr inline void FlexibleBits::operator&=(
const ::test_bits::FlexibleBits& other) {
this->value_ &= other.value_;
}
constexpr inline void FlexibleBits::operator^=(
const ::test_bits::FlexibleBits& other) {
this->value_ ^= other.value_;
}
constexpr inline void FlexibleBits::operator-=(
const ::test_bits::FlexibleBits& other) {
this->value_ &= ~other.value_;
}
// |EmptyBits| is flexible, hence may contain unknown members not
// defined in the FIDL schema.
class EmptyBits final {
public:
constexpr EmptyBits() = default;
// Constructs an instance of |EmptyBits| from an underlying primitive value,
// preserving any bit member not defined in the FIDL schema.
explicit constexpr EmptyBits(uint32_t value) : value_(value) {}
const static EmptyBits 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 EmptyBits& other) const { return value_ == other.value_; }
constexpr inline bool operator!=(const EmptyBits& other) const { return value_ != other.value_; }
constexpr inline EmptyBits operator~() const;
constexpr inline EmptyBits operator|(const EmptyBits& other) const;
constexpr inline EmptyBits operator&(const EmptyBits& other) const;
constexpr inline EmptyBits operator^(const EmptyBits& other) const;
constexpr inline EmptyBits operator-(const EmptyBits& other) const;
constexpr inline void operator|=(const EmptyBits& other);
constexpr inline void operator&=(const EmptyBits& other);
constexpr inline void operator^=(const EmptyBits& other);
constexpr inline void operator-=(const EmptyBits& other);
// Constructs an instance of |EmptyBits| 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<EmptyBits> TryFrom(uint32_t value) {
if (value & ~kMask.value_) {
return std::nullopt;
}
return EmptyBits(value & EmptyBits::kMask.value_);
}
// Constructs an instance of |EmptyBits| from an underlying primitive value,
// clearing any bit member not defined in the FIDL schema.
constexpr inline static EmptyBits TruncatingUnknown(uint32_t value) {
return EmptyBits(value & EmptyBits::kMask.value_);
}
constexpr inline EmptyBits unknown_bits() const {
return *this & EmptyBits(~kMask.value_);
}
constexpr inline bool has_unknown_bits() const { return static_cast<bool>(unknown_bits()); }
private:
uint32_t value_ = 0;
};
constexpr const ::test_bits::EmptyBits EmptyBits::kMask = ::test_bits::EmptyBits(0u);
constexpr inline ::test_bits::EmptyBits EmptyBits::operator~() const {
return ::test_bits::EmptyBits(static_cast<uint32_t>(~this->value_ & kMask.value_));
}
constexpr inline ::test_bits::EmptyBits EmptyBits::operator|(
const ::test_bits::EmptyBits& other) const {
return ::test_bits::EmptyBits(static_cast<uint32_t>(this->value_ | other.value_));
}
constexpr inline ::test_bits::EmptyBits EmptyBits::operator&(
const ::test_bits::EmptyBits& other) const {
return ::test_bits::EmptyBits(static_cast<uint32_t>(this->value_ & other.value_));
}
constexpr inline ::test_bits::EmptyBits EmptyBits::operator^(
const ::test_bits::EmptyBits& other) const {
return ::test_bits::EmptyBits(static_cast<uint32_t>(this->value_ ^ other.value_));
}
constexpr inline ::test_bits::EmptyBits EmptyBits::operator-(
const ::test_bits::EmptyBits& other) const {
return ::test_bits::EmptyBits(static_cast<uint32_t>(this->value_ & ~other.value_));
}
constexpr inline void EmptyBits::operator|=(
const ::test_bits::EmptyBits& other) {
this->value_ |= other.value_;
}
constexpr inline void EmptyBits::operator&=(
const ::test_bits::EmptyBits& other) {
this->value_ &= other.value_;
}
constexpr inline void EmptyBits::operator^=(
const ::test_bits::EmptyBits& other) {
this->value_ ^= other.value_;
}
constexpr inline void EmptyBits::operator-=(
const ::test_bits::EmptyBits& other) {
this->value_ &= ~other.value_;
}
} // namespace test_bits
namespace fidl {
template <>
struct IsFidlType<::test_bits::MyBits> : public std::true_type {};
template <>
struct ContainsHandle<::test_bits::MyBits> : public std::false_type {};
static_assert(std::is_standard_layout_v<::test_bits::MyBits>);
static_assert(sizeof(::test_bits::MyBits) == sizeof(uint32_t));
template <>
struct IsFidlType<::test_bits::StrictBits> : public std::true_type {};
template <>
struct ContainsHandle<::test_bits::StrictBits> : public std::false_type {};
static_assert(std::is_standard_layout_v<::test_bits::StrictBits>);
static_assert(sizeof(::test_bits::StrictBits) == sizeof(uint64_t));
template <>
struct IsFidlType<::test_bits::FlexibleBits> : public std::true_type {};
template <>
struct ContainsHandle<::test_bits::FlexibleBits> : public std::false_type {};
static_assert(std::is_standard_layout_v<::test_bits::FlexibleBits>);
static_assert(sizeof(::test_bits::FlexibleBits) == sizeof(uint64_t));
template <>
struct IsFidlType<::test_bits::EmptyBits> : public std::true_type {};
template <>
struct ContainsHandle<::test_bits::EmptyBits> : public std::false_type {};
static_assert(std::is_standard_layout_v<::test_bits::EmptyBits>);
static_assert(sizeof(::test_bits::EmptyBits) == sizeof(uint32_t));
#pragma clang diagnostic pop
} // namespace fidl