/* Getters */
inline constexpr U64 get_hash(void) const;
inline constexpr color::Color get_side(void) const;
inline constexpr uint8_t get_castle(void) const;
inline constexpr square::Square get_enpassant(void) const;
[[nodiscard]] inline constexpr U64 get_hash() const;
[[nodiscard]] inline constexpr color::Color get_side() const;
[[nodiscard]] inline constexpr uint8_t get_castle() const;
[[nodiscard]] inline constexpr square::Square get_enpassant() const;
inline constexpr U64 get_bitboard_color(color::Color side) const;
inline constexpr U64 get_bitboard_occupancy(void) const;
[[nodiscard]] inline constexpr U64 get_bitboard_color(color::Color side) const;
[[nodiscard]] inline constexpr U64 get_bitboard_occupancy() const;
inline constexpr U64 get_bitboard_piece(piece::Type piece) const;
inline constexpr U64 get_bitboard_piece(piece::Type piece, color::Color color) const;
[[nodiscard]] inline constexpr U64 get_bitboard_piece(piece::Type piece) const;
[[nodiscard]] inline constexpr U64 get_bitboard_piece(piece::Type piece, color::Color color) const;
inline constexpr U64 get_bitboard_piece_attacks(piece::Type piece, color::Color color,
[[nodiscard]] inline constexpr U64 get_bitboard_piece_attacks(piece::Type piece, color::Color color,
square::Square from) const;
inline constexpr U64 get_bitboard_piece_moves(piece::Type piece, color::Color color,
[[nodiscard]] inline constexpr U64 get_bitboard_piece_moves(piece::Type piece, color::Color color,
square::Square from) const;
inline constexpr U64 get_bitboard_square_land(square::Square land, piece::Type piece,
[[nodiscard]] inline constexpr U64 get_bitboard_square_land(square::Square land, piece::Type piece,
color::Color side) const;
inline constexpr color::Color get_square_piece_color(square::Square square) const;
inline constexpr piece::Type get_square_piece_type(square::Square square) const;
inline constexpr const piece::Piece *get_square_piece(square::Square square) const;
[[nodiscard]] inline constexpr color::Color get_square_piece_color(square::Square square) const;
[[nodiscard]] inline constexpr piece::Type get_square_piece_type(square::Square square) const;
[[nodiscard]] inline constexpr const piece::Piece *get_square_piece(square::Square square) const;
/* Setters */
inline constexpr void xor_hash(U64 op);
inline constexpr void switch_side(void);
inline constexpr void switch_side();
inline constexpr void and_castle(uint8_t right);
inline constexpr void set_enpassant(square::Square target);