23std::string_view format_as(CardCategory);
27#define _ENUMERATE_SUSPECTS \
28 _ENUMERATE_CARD(Green) \
29 _ENUMERATE_CARD(Mustard) \
30 _ENUMERATE_CARD(Orchid) \
31 _ENUMERATE_CARD(Peacock) \
32 _ENUMERATE_CARD(Plum) \
33 _ENUMERATE_CARD(Scarlet)
37#define _ENUMERATE_WEAPONS \
38 _ENUMERATE_CARD(Candlestick) \
39 _ENUMERATE_CARD(Knife) \
40 _ENUMERATE_CARD(Pipe) \
41 _ENUMERATE_CARD(Pistol) \
42 _ENUMERATE_CARD(Rope) \
43 _ENUMERATE_CARD(Wrench)
47#define _ENUMERATE_ROOMS \
48 _ENUMERATE_CARD(BilliardRoom) \
49 _ENUMERATE_CARD(Ballroom) \
50 _ENUMERATE_CARD(DiningRoom) \
51 _ENUMERATE_CARD(Greenhouse) \
52 _ENUMERATE_CARD(Hall) \
53 _ENUMERATE_CARD(Kitchen) \
54 _ENUMERATE_CARD(Library) \
55 _ENUMERATE_CARD(Lounge) \
56 _ENUMERATE_CARD(Study)
60#define _ENUMERATE_CARDS \
66enum class Card : std::uint8_t {
67#define _ENUMERATE_CARD(x) x,
77std::string_view format_as(Card);
82 static constexpr std::size_t
CARD_COUNT =
static_cast<std::size_t
>(Card::_Count);
90 auto card_u8 =
static_cast<std::uint8_t
>(card);
136 constexpr CardIterator end()
const {
return static_cast<std::uint8_t
>(Card::_Count); }
148 constexpr std::uint8_t
count()
const {
CardCategory
The categories of the cards in Cluedo.
Definition Card.hpp:13
@ Suspect
Suspect cards.
Definition Card.hpp:14
@ Weapon
Weapon cards.
Definition Card.hpp:15
@ Room
Room cards.
Definition Card.hpp:16
#define _ENUMERATE_CARDS
Enumerates all the cards.
Definition Card.hpp:60
Card
All the cards in Cluedo.
Definition Card.hpp:66
An iterator for cards.
Definition Card.hpp:102
constexpr CardIterator(std::uint8_t i)
Definition Card.hpp:108
constexpr bool operator!=(CardIterator const &other) const
Definition Card.hpp:121
constexpr void operator++()
Advances the iterator to the next card.
Definition Card.hpp:124
constexpr Card operator*() const
Definition Card.hpp:114
std::uint8_t index
The index of the card.
Definition Card.hpp:103
constexpr std::uint8_t count() const
Returns the number of cards in the category.
Definition Card.hpp:148
constexpr cards_per_category(CardCategory c)
Constructs the helper class.
Definition Card.hpp:144
constexpr CardIterator begin() const
Definition Card.hpp:164
CardCategory category
The category of the cards to iterate on.
Definition Card.hpp:141
constexpr CardIterator end() const
Definition Card.hpp:168
Helper class for iterator on all the cards.
Definition Card.hpp:128
constexpr CardIterator begin() const
Definition Card.hpp:132
constexpr CardIterator end() const
Definition Card.hpp:136
A series of utilities for the cards.
Definition Card.hpp:80
static constexpr std::size_t CARD_COUNT
The number of cards in Cluedo.
Definition Card.hpp:82
static constexpr std::array card_categories
The categories of the cards stored as an array.
Definition Card.hpp:84
static constexpr CardCategory card_category(Card card)
Definition Card.hpp:89