blob: ad400c05bd52c0dfc451ec23cbca922496d72aed [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_enum {
enum class MyStrictEnum : uint32_t {
kFoo = 1u,
kBar = 2u,
};
} // namespace test_enum
template <>
struct fidl::internal::DisplayError<::test_enum::MyStrictEnum> {
static size_t Format(const ::test_enum::MyStrictEnum& value, char* destination, size_t capacity);
};
namespace fidl {
constexpr inline auto ToUnderlying(::test_enum::MyStrictEnum value) -> uint32_t {
return static_cast<uint32_t>(value);
}
} // namespace fidl
namespace test_enum {
class MyFlexibleEnum final {
private:
enum class EnumForSwitching_ : uint32_t {
kFoo = 1u,
kBar = 2u,
_do_not_handle_this__write_a_default_case_instead = 0xffffffff,
};
constexpr explicit MyFlexibleEnum(EnumForSwitching_ value) : value_(static_cast<uint32_t>(value)) {}
public:
constexpr MyFlexibleEnum() : value_(static_cast<uint32_t>(Unknown())) {}
constexpr explicit MyFlexibleEnum(uint32_t value) : value_(value) {}
constexpr operator EnumForSwitching_() const { return static_cast<EnumForSwitching_>(value_); }
constexpr explicit operator uint32_t() const { return value_; }
constexpr bool IsUnknown() const {
switch (value_) {
case 1u:
case 2u:
return false;
}
return true;
}
// Returns an enum corresponding to the member designated as @unknown in the
// FIDL schema if exists, or a compiler-reserved unknown value otherwise.
constexpr static MyFlexibleEnum Unknown() {
return MyFlexibleEnum(0xffffffff);
}
static const MyFlexibleEnum kFoo;
static const MyFlexibleEnum kBar;
private:
uint32_t value_;
};
constexpr const ::test_enum::MyFlexibleEnum MyFlexibleEnum::kFoo =
::test_enum::MyFlexibleEnum(1u);
constexpr const ::test_enum::MyFlexibleEnum MyFlexibleEnum::kBar =
::test_enum::MyFlexibleEnum(2u);
} // namespace test_enum
template <>
struct fidl::internal::DisplayError<::test_enum::MyFlexibleEnum> {
static size_t Format(const ::test_enum::MyFlexibleEnum& value, char* destination, size_t capacity);
};
namespace fidl {
constexpr inline auto ToUnderlying(::test_enum::MyFlexibleEnum value) -> uint32_t {
return static_cast<uint32_t>(value);
}
} // namespace fidl
namespace test_enum {
class MyFlexibleEnumWithCustomUnknown final {
private:
enum class EnumForSwitching_ : uint32_t {
kFoo = 1u,
kBar = 2u,
kCustomUnknown = 3u,
_do_not_handle_this__write_a_default_case_instead = 0xffffffff,
};
constexpr explicit MyFlexibleEnumWithCustomUnknown(EnumForSwitching_ value) : value_(static_cast<uint32_t>(value)) {}
public:
constexpr MyFlexibleEnumWithCustomUnknown() : value_(static_cast<uint32_t>(Unknown())) {}
constexpr explicit MyFlexibleEnumWithCustomUnknown(uint32_t value) : value_(value) {}
constexpr operator EnumForSwitching_() const { return static_cast<EnumForSwitching_>(value_); }
constexpr explicit operator uint32_t() const { return value_; }
constexpr bool IsUnknown() const {
switch (value_) {
case 1u:
case 2u:
return false;
}
return true;
}
// Returns an enum corresponding to the member designated as @unknown in the
// FIDL schema if exists, or a compiler-reserved unknown value otherwise.
constexpr static MyFlexibleEnumWithCustomUnknown Unknown() {
return MyFlexibleEnumWithCustomUnknown(0x3);
}
static const MyFlexibleEnumWithCustomUnknown kFoo;
static const MyFlexibleEnumWithCustomUnknown kBar;
static const MyFlexibleEnumWithCustomUnknown kCustomUnknown;
private:
uint32_t value_;
};
constexpr const ::test_enum::MyFlexibleEnumWithCustomUnknown MyFlexibleEnumWithCustomUnknown::kFoo =
::test_enum::MyFlexibleEnumWithCustomUnknown(1u);
constexpr const ::test_enum::MyFlexibleEnumWithCustomUnknown MyFlexibleEnumWithCustomUnknown::kBar =
::test_enum::MyFlexibleEnumWithCustomUnknown(2u);
constexpr const ::test_enum::MyFlexibleEnumWithCustomUnknown MyFlexibleEnumWithCustomUnknown::kCustomUnknown =
::test_enum::MyFlexibleEnumWithCustomUnknown(3u);
} // namespace test_enum
template <>
struct fidl::internal::DisplayError<::test_enum::MyFlexibleEnumWithCustomUnknown> {
static size_t Format(const ::test_enum::MyFlexibleEnumWithCustomUnknown& value, char* destination, size_t capacity);
};
namespace fidl {
constexpr inline auto ToUnderlying(::test_enum::MyFlexibleEnumWithCustomUnknown value) -> uint32_t {
return static_cast<uint32_t>(value);
}
} // namespace fidl
namespace test_enum {
class MyEmptyFlexibleEnum final {
private:
enum class EnumForSwitching_ : uint32_t {
_do_not_handle_this__write_a_default_case_instead = 0xffffffff,
};
constexpr explicit MyEmptyFlexibleEnum(EnumForSwitching_ value) : value_(static_cast<uint32_t>(value)) {}
public:
constexpr MyEmptyFlexibleEnum() : value_(static_cast<uint32_t>(Unknown())) {}
constexpr explicit MyEmptyFlexibleEnum(uint32_t value) : value_(value) {}
constexpr operator EnumForSwitching_() const { return static_cast<EnumForSwitching_>(value_); }
constexpr explicit operator uint32_t() const { return value_; }
constexpr bool IsUnknown() const {
return true;
}
// Returns an enum corresponding to the member designated as @unknown in the
// FIDL schema if exists, or a compiler-reserved unknown value otherwise.
constexpr static MyEmptyFlexibleEnum Unknown() {
return MyEmptyFlexibleEnum(0xffffffff);
}
private:
uint32_t value_;
};
} // namespace test_enum
template <>
struct fidl::internal::DisplayError<::test_enum::MyEmptyFlexibleEnum> {
static size_t Format(const ::test_enum::MyEmptyFlexibleEnum& value, char* destination, size_t capacity);
};
namespace fidl {
constexpr inline auto ToUnderlying(::test_enum::MyEmptyFlexibleEnum value) -> uint32_t {
return static_cast<uint32_t>(value);
}
template <>
struct IsFidlType<::test_enum::MyStrictEnum> : public std::true_type {};
template <>
struct ContainsHandle<::test_enum::MyStrictEnum> : public std::false_type {};
template <>
struct IsFidlType<::test_enum::MyFlexibleEnum> : public std::true_type {};
template <>
struct ContainsHandle<::test_enum::MyFlexibleEnum> : public std::false_type {};
template <>
struct IsFidlType<::test_enum::MyFlexibleEnumWithCustomUnknown> : public std::true_type {};
template <>
struct ContainsHandle<::test_enum::MyFlexibleEnumWithCustomUnknown> : public std::false_type {};
template <>
struct IsFidlType<::test_enum::MyEmptyFlexibleEnum> : public std::true_type {};
template <>
struct ContainsHandle<::test_enum::MyEmptyFlexibleEnum> : public std::false_type {};
#pragma clang diagnostic pop
} // namespace fidl