Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad
- Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad
+ Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad
Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Square ep_square() const;
bool empty(Square s) const;
template<PieceType Pt> int count(Color c) const;
+ template<PieceType Pt> int count() const;
template<PieceType Pt> const Square* squares(Color c) const;
template<PieceType Pt> Square square(Color c) const;
bool is_chess960() const;
Thread* this_thread() const;
uint64_t nodes_searched() const;
- bool is_draw() const;
+ bool is_draw(int ply) const;
int rule50_count() const;
Score psq_score() const;
Value non_pawn_material(Color c) const;
+ Value non_pawn_material() const;
// Position consistency check, for debugging
bool pos_is_ok(int* failedStep = nullptr) const;
bool chess960;
};
-extern std::ostream& operator<<(std::ostream& os, Position& pos);
+extern std::ostream& operator<<(std::ostream& os, const Position& pos);
inline Color Position::side_to_move() const {
return sideToMove;
return pieceCount[make_piece(c, Pt)];
}
+template<PieceType Pt> inline int Position::count() const {
+ return pieceCount[make_piece(WHITE, Pt)] + pieceCount[make_piece(BLACK, Pt)];
+}
+
template<PieceType Pt> inline const Square* Position::squares(Color c) const {
return pieceList[make_piece(c, Pt)];
}
return st->nonPawnMaterial[c];
}
+inline Value Position::non_pawn_material() const {
+ return st->nonPawnMaterial[WHITE] + st->nonPawnMaterial[BLACK];
+}
+
inline int Position::game_ply() const {
return gamePly;
}