blob: 7f0653bab75c28b6b8c217cc168f28348965edf4 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
// fidl_experiment = output_index_json
#pragma once
#include "lib/fidl/cpp/internal/header.h"
namespace test {
namespace bits {
//
// Domain objects declarations
//
enum class MyBits : uint32_t {
MY_FIRST_BIT = 1u,
MY_OTHER_BIT = 2u,
MASK = 4u,
};
const static MyBits MyBitsMask = static_cast<MyBits>(7u);
constexpr inline ::test::bits::MyBits operator|(::test::bits::MyBits _lhs, ::test::bits::MyBits _rhs) {
return static_cast<::test::bits::MyBits>(
static_cast<uint32_t>(_lhs) | static_cast<uint32_t>(_rhs));
}
constexpr inline ::test::bits::MyBits& operator|=(::test::bits::MyBits& _lhs,
::test::bits::MyBits _rhs) {
_lhs = _lhs | _rhs;
return _lhs;
}
constexpr inline ::test::bits::MyBits operator&(::test::bits::MyBits _lhs,
::test::bits::MyBits _rhs) {
return static_cast<::test::bits::MyBits>(
static_cast<uint32_t>(_lhs) & static_cast<uint32_t>(_rhs));
}
constexpr inline ::test::bits::MyBits& operator&=(::test::bits::MyBits& _lhs,
::test::bits::MyBits _rhs) {
_lhs = _lhs & _rhs;
return _lhs;
}
constexpr inline ::test::bits::MyBits operator^(::test::bits::MyBits _lhs,
::test::bits::MyBits _rhs) {
return static_cast<::test::bits::MyBits>(
static_cast<uint32_t>(_lhs) ^ static_cast<uint32_t>(_rhs));
}
constexpr inline ::test::bits::MyBits& operator^=(::test::bits::MyBits& _lhs,
::test::bits::MyBits _rhs) {
_lhs = _lhs ^ _rhs;
return _lhs;
}
constexpr inline ::test::bits::MyBits operator~(::test::bits::MyBits _value) {
return static_cast<::test::bits::MyBits>(
~static_cast<uint32_t>(_value) & static_cast<uint32_t>(::test::bits::MyBitsMask));
}
inline zx_status_t Clone(::test::bits::MyBits value,
::test::bits::MyBits* result) {
*result = value;
return ZX_OK;
}
enum class StrictBits : uint64_t {
SMALLEST = 1u,
BIGGEST = 9223372036854775808u,
};
const static StrictBits StrictBitsMask = static_cast<StrictBits>(9223372036854775809u);
constexpr inline ::test::bits::StrictBits operator|(::test::bits::StrictBits _lhs, ::test::bits::StrictBits _rhs) {
return static_cast<::test::bits::StrictBits>(
static_cast<uint64_t>(_lhs) | static_cast<uint64_t>(_rhs));
}
constexpr inline ::test::bits::StrictBits& operator|=(::test::bits::StrictBits& _lhs,
::test::bits::StrictBits _rhs) {
_lhs = _lhs | _rhs;
return _lhs;
}
constexpr inline ::test::bits::StrictBits operator&(::test::bits::StrictBits _lhs,
::test::bits::StrictBits _rhs) {
return static_cast<::test::bits::StrictBits>(
static_cast<uint64_t>(_lhs) & static_cast<uint64_t>(_rhs));
}
constexpr inline ::test::bits::StrictBits& operator&=(::test::bits::StrictBits& _lhs,
::test::bits::StrictBits _rhs) {
_lhs = _lhs & _rhs;
return _lhs;
}
constexpr inline ::test::bits::StrictBits operator^(::test::bits::StrictBits _lhs,
::test::bits::StrictBits _rhs) {
return static_cast<::test::bits::StrictBits>(
static_cast<uint64_t>(_lhs) ^ static_cast<uint64_t>(_rhs));
}
constexpr inline ::test::bits::StrictBits& operator^=(::test::bits::StrictBits& _lhs,
::test::bits::StrictBits _rhs) {
_lhs = _lhs ^ _rhs;
return _lhs;
}
constexpr inline ::test::bits::StrictBits operator~(::test::bits::StrictBits _value) {
return static_cast<::test::bits::StrictBits>(
~static_cast<uint64_t>(_value) & static_cast<uint64_t>(::test::bits::StrictBitsMask));
}
inline zx_status_t Clone(::test::bits::StrictBits value,
::test::bits::StrictBits* result) {
*result = value;
return ZX_OK;
}
// |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
// if the primitive does not contain any unknown members not defined in the
// FIDL schema. Otherwise, returns |cpp17::nullopt|.
constexpr inline static cpp17::optional<FlexibleBits> TryFrom(uint64_t value) {
if (value & ~kMask.value_) {
return cpp17::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_);
}
// Constructs an instance of |FlexibleBits| from an underlying primitive value,
// preserving any bit member not defined in the FIDL schema.
constexpr explicit FlexibleBits(uint64_t value) : value_(value) {}
const static FlexibleBits SMALLEST;
const static FlexibleBits BIGGEST;
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 void operator|=(const FlexibleBits& other);
constexpr inline void operator&=(const FlexibleBits& other);
constexpr inline void operator^=(const FlexibleBits& other);
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;
};
#if !(__cplusplus < 201703)
constexpr const ::test::bits::FlexibleBits FlexibleBits::SMALLEST = ::test::bits::FlexibleBits(1u);
constexpr const ::test::bits::FlexibleBits FlexibleBits::BIGGEST = ::test::bits::FlexibleBits(9223372036854775808u);
constexpr const ::test::bits::FlexibleBits FlexibleBits::kMask = ::test::bits::FlexibleBits(9223372036854775809u);
#endif // !(__cplusplus < 201703)
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 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_;
}
inline zx_status_t Clone(::test::bits::FlexibleBits value,
::test::bits::FlexibleBits* result) {
*result = value;
return ZX_OK;
}
// |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
// if the primitive does not contain any unknown members not defined in the
// FIDL schema. Otherwise, returns |cpp17::nullopt|.
constexpr inline static cpp17::optional<EmptyBits> TryFrom(uint32_t value) {
if (value & ~kMask.value_) {
return cpp17::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_);
}
// Constructs an instance of |EmptyBits| from an underlying primitive value,
// preserving any bit member not defined in the FIDL schema.
constexpr explicit 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 void operator|=(const EmptyBits& other);
constexpr inline void operator&=(const EmptyBits& other);
constexpr inline void operator^=(const EmptyBits& other);
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;
};
#if !(__cplusplus < 201703)
constexpr const ::test::bits::EmptyBits EmptyBits::kMask = ::test::bits::EmptyBits(0u);
#endif // !(__cplusplus < 201703)
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 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_;
}
inline zx_status_t Clone(::test::bits::EmptyBits value,
::test::bits::EmptyBits* result) {
*result = value;
return ZX_OK;
}
} // namespace bits
} // namespace test
namespace fidl {
template <>
struct CodingTraits<::test::bits::MyBits> {
static constexpr size_t kInlineSize = sizeof(::test::bits::MyBits);
static void Encode(Encoder* encoder, ::test::bits::MyBits* value, size_t offset,
cpp17::optional<::fidl::HandleInformation> maybe_handle_info) {
ZX_DEBUG_ASSERT(!maybe_handle_info);
uint32_t underlying = static_cast<uint32_t>(*value);
::fidl::Encode(encoder, &underlying, offset);
}
static void Decode(Decoder* decoder, ::test::bits::MyBits* value, size_t offset) {
uint32_t underlying = {};
::fidl::Decode(decoder, &underlying, offset);
*value = static_cast<::test::bits::MyBits>(underlying);
}
};
inline zx_status_t Clone(::test::bits::MyBits value,
::test::bits::MyBits* result) {
return ::test::bits::Clone(value, result);
}
template <>
struct Equality<::test::bits::MyBits> {
bool operator()(const ::test::bits::MyBits& _lhs, const ::test::bits::MyBits& _rhs) const {
uint32_t _lhs_underlying = static_cast<uint32_t>(_lhs);
uint32_t _rhs_underlying = static_cast<uint32_t>(_rhs);
return ::fidl::Equals(_lhs_underlying, _rhs_underlying);
}
};
template <>
struct CodingTraits<::test::bits::StrictBits> {
static constexpr size_t kInlineSize = sizeof(::test::bits::StrictBits);
static void Encode(Encoder* encoder, ::test::bits::StrictBits* value, size_t offset,
cpp17::optional<::fidl::HandleInformation> maybe_handle_info) {
ZX_DEBUG_ASSERT(!maybe_handle_info);
uint64_t underlying = static_cast<uint64_t>(*value);
::fidl::Encode(encoder, &underlying, offset);
}
static void Decode(Decoder* decoder, ::test::bits::StrictBits* value, size_t offset) {
uint64_t underlying = {};
::fidl::Decode(decoder, &underlying, offset);
*value = static_cast<::test::bits::StrictBits>(underlying);
}
};
inline zx_status_t Clone(::test::bits::StrictBits value,
::test::bits::StrictBits* result) {
return ::test::bits::Clone(value, result);
}
template <>
struct Equality<::test::bits::StrictBits> {
bool operator()(const ::test::bits::StrictBits& _lhs, const ::test::bits::StrictBits& _rhs) const {
uint64_t _lhs_underlying = static_cast<uint64_t>(_lhs);
uint64_t _rhs_underlying = static_cast<uint64_t>(_rhs);
return ::fidl::Equals(_lhs_underlying, _rhs_underlying);
}
};
template <>
struct CodingTraits<::test::bits::FlexibleBits> {
static constexpr size_t kInlineSize = sizeof(::test::bits::FlexibleBits);
static void Encode(Encoder* encoder, ::test::bits::FlexibleBits* value, size_t offset,
cpp17::optional<::fidl::HandleInformation> maybe_handle_info) {
ZX_DEBUG_ASSERT(!maybe_handle_info);
uint64_t underlying = static_cast<uint64_t>(*value);
::fidl::Encode(encoder, &underlying, offset);
}
static void Decode(Decoder* decoder, ::test::bits::FlexibleBits* value, size_t offset) {
uint64_t underlying = {};
::fidl::Decode(decoder, &underlying, offset);
*value = static_cast<::test::bits::FlexibleBits>(underlying);
}
};
inline zx_status_t Clone(::test::bits::FlexibleBits value,
::test::bits::FlexibleBits* result) {
return ::test::bits::Clone(value, result);
}
template <>
struct Equality<::test::bits::FlexibleBits> {
bool operator()(const ::test::bits::FlexibleBits& _lhs, const ::test::bits::FlexibleBits& _rhs) const {
uint64_t _lhs_underlying = static_cast<uint64_t>(_lhs);
uint64_t _rhs_underlying = static_cast<uint64_t>(_rhs);
return ::fidl::Equals(_lhs_underlying, _rhs_underlying);
}
};
template <>
struct CodingTraits<::test::bits::EmptyBits> {
static constexpr size_t kInlineSize = sizeof(::test::bits::EmptyBits);
static void Encode(Encoder* encoder, ::test::bits::EmptyBits* value, size_t offset,
cpp17::optional<::fidl::HandleInformation> maybe_handle_info) {
ZX_DEBUG_ASSERT(!maybe_handle_info);
uint32_t underlying = static_cast<uint32_t>(*value);
::fidl::Encode(encoder, &underlying, offset);
}
static void Decode(Decoder* decoder, ::test::bits::EmptyBits* value, size_t offset) {
uint32_t underlying = {};
::fidl::Decode(decoder, &underlying, offset);
*value = static_cast<::test::bits::EmptyBits>(underlying);
}
};
inline zx_status_t Clone(::test::bits::EmptyBits value,
::test::bits::EmptyBits* result) {
return ::test::bits::Clone(value, result);
}
template <>
struct Equality<::test::bits::EmptyBits> {
bool operator()(const ::test::bits::EmptyBits& _lhs, const ::test::bits::EmptyBits& _rhs) const {
uint32_t _lhs_underlying = static_cast<uint32_t>(_lhs);
uint32_t _rhs_underlying = static_cast<uint32_t>(_rhs);
return ::fidl::Equals(_lhs_underlying, _rhs_underlying);
}
};
//
// Proxies and stubs declarations
//
} // namespace fidl