28 lines
866 B
C++
28 lines
866 B
C++
#ifndef CHESS_ENGINE_CASTLINGRIGHTS_HPP
|
|
#define CHESS_ENGINE_CASTLINGRIGHTS_HPP
|
|
|
|
#include <iosfwd>
|
|
|
|
enum class CastlingRights {
|
|
None = 0,
|
|
WhiteKingside = 1 << 0,
|
|
WhiteQueenside = 1 << 1,
|
|
BlackKingside = 1 << 2,
|
|
BlackQueenside = 1 << 3,
|
|
White = WhiteKingside | WhiteQueenside,
|
|
Black = BlackKingside | BlackQueenside,
|
|
KingSide = BlackKingside | WhiteKingside,
|
|
QueenSide = BlackQueenside | WhiteQueenside,
|
|
All = White | Black
|
|
};
|
|
|
|
CastlingRights operator&(CastlingRights lhs, CastlingRights rhs);
|
|
CastlingRights& operator&=(CastlingRights& lhs, CastlingRights rhs);
|
|
CastlingRights operator|(CastlingRights lhs, CastlingRights rhs);
|
|
CastlingRights& operator|=(CastlingRights& lhs, CastlingRights rhs);
|
|
CastlingRights operator~(CastlingRights cr);
|
|
|
|
std::ostream& operator<<(std::ostream& os, CastlingRights cr);
|
|
|
|
#endif
|