it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Stockfish is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Stockfish is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
/// Maximum number of plies per game (220 should be enough, because the
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
/// Maximum number of plies per game (220 should be enough, because the
/// * For each piece type, a bitboard representing the squares occupied
/// by pieces of that type.
/// * For each color, a bitboard representing the squares occupiecd by
/// * For each piece type, a bitboard representing the squares occupied
/// by pieces of that type.
/// * For each color, a bitboard representing the squares occupiecd by
// Number of pieces of each color and type
int piece_count(Color c, PieceType pt) const;
// Number of pieces of each color and type
int piece_count(Color c, PieceType pt) const;
Square ep_square() const;
// Current king position for each color
Square king_square(Color c) const;
Square ep_square() const;
// Current king position for each color
Square king_square(Color c) const;
bool can_castle_kingside(Color c) const;
bool can_castle_queenside(Color c) const;
bool can_castle(Color c) const;
bool can_castle_kingside(Color c) const;
bool can_castle_queenside(Color c) const;
bool can_castle(Color c) const;
- bool move_is_legal(Move m) const;
- bool move_is_legal(Move m, Bitboard pinned) const;
+ bool pl_move_is_legal(Move m) const;
+ bool pl_move_is_legal(Move m, Bitboard pinned) const;
bool move_is_check(Move m) const;
bool move_is_check(Move m, Bitboard dcCandidates) const;
bool move_is_capture(Move m) const;
bool move_is_check(Move m) const;
bool move_is_check(Move m, Bitboard dcCandidates) const;
bool move_is_capture(Move m) const;
// Static exchange evaluation
int see(Square from, Square to) const;
int see(Move m) const;
// Static exchange evaluation
int see(Square from, Square to) const;
int see(Move m) const;
// Position consistency check, for debugging
bool is_ok(int* failedStep = NULL) const;
// Position consistency check, for debugging
bool is_ok(int* failedStep = NULL) const;
void do_castle_move(Move m);
void do_promotion_move(Move m, UndoInfo &u);
void do_ep_move(Move m);
void do_castle_move(Move m);
void do_promotion_move(Move m, UndoInfo &u);
void do_ep_move(Move m);
inline bool Position::square_is_weak(Square s, Color c) const {
return !(pawns(c) & outpost_mask(opposite_color(c), s));
}
inline bool Position::square_is_weak(Square s, Color c) const {
return !(pawns(c) & outpost_mask(opposite_color(c), s));
}
static const Value EndgameLimit = 4 * RookValueMidgame - Value(325);
Value npm = non_pawn_material(WHITE) + non_pawn_material(BLACK);
static const Value EndgameLimit = 4 * RookValueMidgame - Value(325);
Value npm = non_pawn_material(WHITE) + non_pawn_material(BLACK);
inline bool Position::opposite_colored_bishops() const {
return piece_count(WHITE, BISHOP) == 1
inline bool Position::opposite_colored_bishops() const {
return piece_count(WHITE, BISHOP) == 1
&& square_color(piece_list(WHITE, BISHOP, 0)) != square_color(piece_list(BLACK, BISHOP, 0));
}
&& square_color(piece_list(WHITE, BISHOP, 0)) != square_color(piece_list(BLACK, BISHOP, 0));
}