/** @file role.hpp * * @author Roland Conybeare, Dec 2025 **/ #pragma once #include #include namespace xo { namespace mm { static constexpr uint32_t c_n_role = 2; struct role { using value_type = std::uint32_t; explicit constexpr role(value_type x) : role_{x} {} static constexpr role to_space() { return role{0}; } static constexpr role from_space() { return role{1}; } static constexpr std::array all() { return {{to_space(), from_space()}}; } static constexpr role begin() { return role{0}; } static constexpr role end() { return role{2}; } operator value_type() const { return role_; } value_type role_ = 0; }; } /*namespace mm*/ } /*namespace xo*/ /* end role.hpp */