HooverChessUtils_PgnReader 0.9.0
Loading...
Searching...
No Matches
Namespaces | Typedefs | Enumerations | Functions
chessboard-types.h File Reference
#include <array>
#include <bit>
#include <cassert>
#include <cinttypes>
#include <cstdint>
#include <string_view>
#include <type_traits>
Include dependency graph for chessboard-types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  hoover_chess_utils
 
namespace  hoover_chess_utils::pgn_reader
 

Typedefs

using hoover_chess_utils::pgn_reader::SquareUnderlyingType = std::uint_fast8_t
 Underlying type of Square
 
using hoover_chess_utils::pgn_reader::SquareCompactType = std::uint8_t
 Compact type for Square. The compact type can store all legal enumeration values.
 
using hoover_chess_utils::pgn_reader::ColorUnderlyingType = std::uint_fast8_t
 Underlying type of Color
 
using hoover_chess_utils::pgn_reader::ColorCompactType = std::uint8_t
 Compact type for Color. The compact type can store all legal enumeration values.
 
using hoover_chess_utils::pgn_reader::PieceUnderlyingType = std::uint_fast8_t
 Underlying type of Piece
 
using hoover_chess_utils::pgn_reader::PieceCompactType = std::uint8_t
 Compact type for Piece. The compact type can store all legal enumeration values.
 
using hoover_chess_utils::pgn_reader::PieceAndColorUnderlyingType = std::uint_fast8_t
 Underlying type of PieceAndColor
 
using hoover_chess_utils::pgn_reader::PieceAndColorCompactType = std::uint8_t
 Compact type for PieceAndColor. The compact type can store all legal enumeration values.
 
using hoover_chess_utils::pgn_reader::PositionStatusUnderlyingType = std::uint_fast8_t
 Underlying type of PositionStatus
 
using hoover_chess_utils::pgn_reader::PositionStatusCompactType = std::uint8_t
 Compact type for PositionStatus. The compact type can store all legal enumeration values.
 
using hoover_chess_utils::pgn_reader::RowColumnUnderlyingType = std::uint_fast8_t
 Underlying type of RowColumn
 
using hoover_chess_utils::pgn_reader::RowColumnCompactType = std::uint8_t
 Compact type for RowColumn. The compact type can store all legal enumeration values.
 
using hoover_chess_utils::pgn_reader::RowColumn = RowColumnUnderlyingType
 Row/column coordinate type. Valid range: [0, 7] signifying ranks 1–8 (as rows) or files A–H (as columns). The numbering is always from White's point of view.
 

Enumerations

enum class  hoover_chess_utils::pgn_reader::Square : SquareUnderlyingType {
  hoover_chess_utils::pgn_reader::Square::A1 = 0U , hoover_chess_utils::pgn_reader::Square::B1 = 1U , hoover_chess_utils::pgn_reader::Square::C1 = 2U , hoover_chess_utils::pgn_reader::Square::D1 = 3U ,
  hoover_chess_utils::pgn_reader::Square::E1 = 4U , hoover_chess_utils::pgn_reader::Square::F1 = 5U , hoover_chess_utils::pgn_reader::Square::G1 = 6U , hoover_chess_utils::pgn_reader::Square::H1 = 7U ,
  hoover_chess_utils::pgn_reader::Square::A2 = 8U , hoover_chess_utils::pgn_reader::Square::B2 = 9U , hoover_chess_utils::pgn_reader::Square::C2 = 10U , hoover_chess_utils::pgn_reader::Square::D2 = 11U ,
  hoover_chess_utils::pgn_reader::Square::E2 = 12U , hoover_chess_utils::pgn_reader::Square::F2 = 13U , hoover_chess_utils::pgn_reader::Square::G2 = 14U , hoover_chess_utils::pgn_reader::Square::H2 = 15U ,
  hoover_chess_utils::pgn_reader::Square::A3 = 16U , hoover_chess_utils::pgn_reader::Square::B3 = 17U , hoover_chess_utils::pgn_reader::Square::C3 = 18U , hoover_chess_utils::pgn_reader::Square::D3 = 19U ,
  hoover_chess_utils::pgn_reader::Square::E3 = 20U , hoover_chess_utils::pgn_reader::Square::F3 = 21U , hoover_chess_utils::pgn_reader::Square::G3 = 22U , hoover_chess_utils::pgn_reader::Square::H3 = 23U ,
  hoover_chess_utils::pgn_reader::Square::A4 = 24U , hoover_chess_utils::pgn_reader::Square::B4 = 25U , hoover_chess_utils::pgn_reader::Square::C4 = 26U , hoover_chess_utils::pgn_reader::Square::D4 = 27U ,
  hoover_chess_utils::pgn_reader::Square::E4 = 28U , hoover_chess_utils::pgn_reader::Square::F4 = 29U , hoover_chess_utils::pgn_reader::Square::G4 = 30U , hoover_chess_utils::pgn_reader::Square::H4 = 31U ,
  hoover_chess_utils::pgn_reader::Square::A5 = 32U , hoover_chess_utils::pgn_reader::Square::B5 = 33U , hoover_chess_utils::pgn_reader::Square::C5 = 34U , hoover_chess_utils::pgn_reader::Square::D5 = 35U ,
  hoover_chess_utils::pgn_reader::Square::E5 = 36U , hoover_chess_utils::pgn_reader::Square::F5 = 37U , hoover_chess_utils::pgn_reader::Square::G5 = 38U , hoover_chess_utils::pgn_reader::Square::H5 = 39U ,
  hoover_chess_utils::pgn_reader::Square::A6 = 40U , hoover_chess_utils::pgn_reader::Square::B6 = 41U , hoover_chess_utils::pgn_reader::Square::C6 = 42U , hoover_chess_utils::pgn_reader::Square::D6 = 43U ,
  hoover_chess_utils::pgn_reader::Square::E6 = 44U , hoover_chess_utils::pgn_reader::Square::F6 = 45U , hoover_chess_utils::pgn_reader::Square::G6 = 46U , hoover_chess_utils::pgn_reader::Square::H6 = 47U ,
  hoover_chess_utils::pgn_reader::Square::A7 = 48U , hoover_chess_utils::pgn_reader::Square::B7 = 49U , hoover_chess_utils::pgn_reader::Square::C7 = 50U , hoover_chess_utils::pgn_reader::Square::D7 = 51U ,
  hoover_chess_utils::pgn_reader::Square::E7 = 52U , hoover_chess_utils::pgn_reader::Square::F7 = 53U , hoover_chess_utils::pgn_reader::Square::G7 = 54U , hoover_chess_utils::pgn_reader::Square::H7 = 55U ,
  hoover_chess_utils::pgn_reader::Square::A8 = 56U , hoover_chess_utils::pgn_reader::Square::B8 = 57U , hoover_chess_utils::pgn_reader::Square::C8 = 58U , hoover_chess_utils::pgn_reader::Square::D8 = 59U ,
  hoover_chess_utils::pgn_reader::Square::E8 = 60U , hoover_chess_utils::pgn_reader::Square::F8 = 61U , hoover_chess_utils::pgn_reader::Square::G8 = 62U , hoover_chess_utils::pgn_reader::Square::H8 = 63U ,
  hoover_chess_utils::pgn_reader::Square::NONE = 64U
}
 Named square. More...
 
enum class  hoover_chess_utils::pgn_reader::Color : ColorUnderlyingType { hoover_chess_utils::pgn_reader::Color::WHITE = 0U , hoover_chess_utils::pgn_reader::Color::BLACK = 8U }
 Color of a piece or side to move. More...
 
enum class  hoover_chess_utils::pgn_reader::Piece : PieceUnderlyingType {
  hoover_chess_utils::pgn_reader::Piece::NONE = 0U , hoover_chess_utils::pgn_reader::Piece::PAWN , hoover_chess_utils::pgn_reader::Piece::KNIGHT , hoover_chess_utils::pgn_reader::Piece::BISHOP ,
  hoover_chess_utils::pgn_reader::Piece::ROOK , hoover_chess_utils::pgn_reader::Piece::QUEEN , hoover_chess_utils::pgn_reader::Piece::KING
}
 Named piece. More...
 
enum class  hoover_chess_utils::pgn_reader::PieceAndColor : PieceAndColorUnderlyingType {
  hoover_chess_utils::pgn_reader::PieceAndColor::NONE = 0U , hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_PAWN = 1U , hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_KNIGHT , hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_BISHOP ,
  hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_ROOK , hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_QUEEN , hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_KING , hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_PAWN = 9U ,
  hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_KNIGHT , hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_BISHOP , hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_ROOK , hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_QUEEN ,
  hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_KING , hoover_chess_utils::pgn_reader::PieceAndColor::WHITE_NONE = 0U , hoover_chess_utils::pgn_reader::PieceAndColor::BLACK_NONE = 8U
}
 Named piece and color. More...
 
enum class  hoover_chess_utils::pgn_reader::PieceAndColorCompact : PieceAndColorCompactType {
  hoover_chess_utils::pgn_reader::PieceAndColorCompact::NONE = 0U , hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_PAWN = 1U , hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_KNIGHT , hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_BISHOP ,
  hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_ROOK , hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_QUEEN , hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_KING , hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_PAWN = 9U ,
  hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_KNIGHT , hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_BISHOP , hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_ROOK , hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_QUEEN ,
  hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_KING , hoover_chess_utils::pgn_reader::PieceAndColorCompact::WHITE_NONE = 0U , hoover_chess_utils::pgn_reader::PieceAndColorCompact::BLACK_NONE = 8U
}
 Named piece and color (compact representation) More...
 
enum class  hoover_chess_utils::pgn_reader::PositionStatus : PositionStatusUnderlyingType { hoover_chess_utils::pgn_reader::PositionStatus::NORMAL , hoover_chess_utils::pgn_reader::PositionStatus::CHECK , hoover_chess_utils::pgn_reader::PositionStatus::STALEMATE , hoover_chess_utils::pgn_reader::PositionStatus::MATE }
 Status of a position. More...
 

Functions

constexpr bool hoover_chess_utils::pgn_reader::isValidValue (Square sq) noexcept
 Checks whether a value is a valid enumeration value.
 
constexpr bool hoover_chess_utils::pgn_reader::isValidSquare (Square sq) noexcept
 Checks whether a value is a square.
 
constexpr Square hoover_chess_utils::pgn_reader::makeSquare (RowColumn col, RowColumn row) noexcept
 Constructs a square from column and row.
 
constexpr RowColumn hoover_chess_utils::pgn_reader::columnOf (Square sq) noexcept
 Returns column number of square.
 
constexpr RowColumn hoover_chess_utils::pgn_reader::rowOf (Square sq) noexcept
 Returns row number of square.
 
constexpr Square hoover_chess_utils::pgn_reader::getSquareForIndex (std::size_t index) noexcept
 Returns a square for an index. In essence, this is the ordinal of the square.
 
constexpr std::size_t hoover_chess_utils::pgn_reader::getIndexOfSquare (Square sq) noexcept
 Returns an index for a square.
 
constexpr Square hoover_chess_utils::pgn_reader::addToSquareNoOverflowCheck (Square sq, std::int_fast8_t shift) noexcept
 Adds to square. This function performs no overflow checking.
 
constexpr bool hoover_chess_utils::pgn_reader::isValidValue (Color c) noexcept
 Checks whether a value is a valid enumeration value.
 
constexpr Color hoover_chess_utils::pgn_reader::oppositeColor (Color c) noexcept
 Flips the color.
 
constexpr Color hoover_chess_utils::pgn_reader::colorOf (PieceAndColor pc) noexcept
 Returns color of a piece.
 
constexpr bool hoover_chess_utils::pgn_reader::isValidValue (Piece p) noexcept
 Checks whether a value is a valid enumeration value.
 
constexpr bool hoover_chess_utils::pgn_reader::isValidValue (PieceAndColor pc) noexcept
 Checks whether a value is a valid enumeration value.
 
constexpr Piece hoover_chess_utils::pgn_reader::pieceOf (PieceAndColor pc) noexcept
 Returns piece of a piece and color enumeration value.
 
constexpr PieceAndColor hoover_chess_utils::pgn_reader::makePieceAndColor (Piece p, Color c) noexcept
 Constructs a PieceAndColor enumeration value from Piece and Color.
 
constexpr PieceAndColorCompact hoover_chess_utils::pgn_reader::toCompactType (PieceAndColor pc) noexcept
 Converts PieceAndColor (fast type) to PieceAndColorCompact (compact type).
 
constexpr PieceAndColor hoover_chess_utils::pgn_reader::toFastType (PieceAndColorCompact pc) noexcept
 Converts PieceAndColorCompact (compact type) to PieceAndColor (fast type).