20 static std::optional<CoordinateAxis>
try_parse(std::string_view);
45 axis_index_{static_cast<uint8_t>(axis_index)}
47 if (not (0 <= axis_index && axis_index <= 2)) {
48 throw std::runtime_error{
"out-of-range index given to a CoordinateAxis"};
58 return static_cast<size_t>(axis_index_);
64 return CoordinateAxis{
static_cast<uint8_t
>((axis_index_ + 2) % 3), SkipRangeCheck{}};
70 return CoordinateAxis{
static_cast<uint8_t
>((axis_index_ + 1) % 3), SkipRangeCheck{}};
73 struct SkipRangeCheck {};
78 uint8_t axis_index_ = 0;
Definition coordinate_axis.h:13
static constexpr CoordinateAxis z()
Definition coordinate_axis.h:35
constexpr CoordinateAxis next() const
Definition coordinate_axis.h:68
constexpr CoordinateAxis(int axis_index)
Definition coordinate_axis.h:44
static constexpr CoordinateAxis x()
Definition coordinate_axis.h:23
friend constexpr auto operator<=>(const CoordinateAxis &, const CoordinateAxis &)=default
constexpr size_t index() const
Definition coordinate_axis.h:56
static constexpr CoordinateAxis y()
Definition coordinate_axis.h:29
constexpr CoordinateAxis()=default
static std::optional< CoordinateAxis > try_parse(std::string_view)
constexpr CoordinateAxis previous() const
Definition coordinate_axis.h:62
Definition custom_decoration_generator.h:5
std::ostream & operator<<(std::ostream &, const Object &)