No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
bool ambiguousMove, ambiguousFile, ambiguousRank;
Square sq, from = move_from(m);
Square to = move_to(m);
bool ambiguousMove, ambiguousFile, ambiguousRank;
Square sq, from = move_from(m);
Square to = move_to(m);
- PieceType pt = type_of_piece(pos.piece_on(from));
+ PieceType pt = piece_type(pos.piece_on(from));
string san;
if (m == MOVE_NONE)
string san;
if (m == MOVE_NONE)
while (b)
{
from = pop_1st_bit(&b);
while (b)
{
from = pop_1st_bit(&b);
- switch (type_of_piece(pos.piece_on(from)))
+ switch (piece_type(pos.piece_on(from)))
{
case PAWN: /* Will be generated togheter with pawns direct checks */ break;
case KNIGHT: mlist = generate_discovered_checks<KNIGHT>(pos, mlist, from); break;
{
case PAWN: /* Will be generated togheter with pawns direct checks */ break;
case KNIGHT: mlist = generate_discovered_checks<KNIGHT>(pos, mlist, from); break;
checkersCnt++;
checksq = pop_1st_bit(&b);
checkersCnt++;
checksq = pop_1st_bit(&b);
- assert(color_of_piece(pos.piece_on(checksq)) == opposite_color(us));
+ assert(piece_color(pos.piece_on(checksq)) == opposite_color(us));
- switch (type_of_piece(pos.piece_on(checksq)))
+ switch (piece_type(pos.piece_on(checksq)))
{
case BISHOP: sliderAttacks |= BishopPseudoAttacks[checksq]; break;
case ROOK: sliderAttacks |= RookPseudoAttacks[checksq]; break;
{
case BISHOP: sliderAttacks |= BishopPseudoAttacks[checksq]; break;
case ROOK: sliderAttacks |= RookPseudoAttacks[checksq]; break;
{
m = cur->move;
cur->score = piece_value_midgame(pos.piece_on(move_to(m)))
{
m = cur->move;
cur->score = piece_value_midgame(pos.piece_on(move_to(m)))
- - type_of_piece(pos.piece_on(move_from(m)));
+ - piece_type(pos.piece_on(move_from(m)));
if (move_is_promotion(m))
cur->score += QueenValueMidgame;
if (move_is_promotion(m))
cur->score += QueenValueMidgame;
cur->score = seeScore - History::MaxValue; // Be sure we are at the bottom
else if (pos.move_is_capture(m))
cur->score = piece_value_midgame(pos.piece_on(move_to(m)))
cur->score = seeScore - History::MaxValue; // Be sure we are at the bottom
else if (pos.move_is_capture(m))
cur->score = piece_value_midgame(pos.piece_on(move_to(m)))
- - type_of_piece(pos.piece_on(move_from(m))) + History::MaxValue;
+ - piece_type(pos.piece_on(move_from(m))) + History::MaxValue;
else
cur->score = H.value(pos.piece_on(move_from(m)), move_to(m));
}
else
cur->score = H.value(pos.piece_on(move_from(m)), move_to(m));
}
if (move)
{
Position p(*this, thread());
if (move)
{
Position p(*this, thread());
- string dd = (color_of_piece(piece_on(move_from(move))) == BLACK ? ".." : "");
+ string dd = (piece_color(piece_on(move_from(move))) == BLACK ? ".." : "");
cout << "\nMove is: " << dd << move_to_san(p, move);
}
cout << "\nMove is: " << dd << move_to_san(p, move);
}
if (piece == PIECE_NONE && square_color(sq) == DARK)
piece = PIECE_NONE_DARK_SQ;
if (piece == PIECE_NONE && square_color(sq) == DARK)
piece = PIECE_NONE_DARK_SQ;
- char c = (color_of_piece(piece_on(sq)) == BLACK ? '=' : ' ');
+ char c = (piece_color(piece_on(sq)) == BLACK ? '=' : ' ');
cout << c << PieceToChar[piece] << c << '|';
}
}
cout << c << PieceToChar[piece] << c << '|';
}
}
do_move_bb(&occ, make_move_bb(f, t));
xray = ( (rook_attacks_bb(s, occ) & pieces(ROOK, QUEEN))
|(bishop_attacks_bb(s, occ) & pieces(BISHOP, QUEEN)))
do_move_bb(&occ, make_move_bb(f, t));
xray = ( (rook_attacks_bb(s, occ) & pieces(ROOK, QUEEN))
|(bishop_attacks_bb(s, occ) & pieces(BISHOP, QUEEN)))
- & pieces_of_color(color_of_piece(piece_on(f)));
+ & pieces_of_color(piece_color(piece_on(f)));
// If we have attacks we need to verify that are caused by our move
// and are not already existent ones.
// If we have attacks we need to verify that are caused by our move
// and are not already existent ones.
Color us = side_to_move();
Square from = move_from(m);
Color us = side_to_move();
Square from = move_from(m);
- assert(color_of_piece(piece_on(from)) == us);
+ assert(piece_color(piece_on(from)) == us);
assert(piece_on(king_square(us)) == make_piece(us, KING));
// En passant captures are a tricky special case. Because they are
assert(piece_on(king_square(us)) == make_piece(us, KING));
// En passant captures are a tricky special case. Because they are
// If the moving piece is a king, check whether the destination
// square is attacked by the opponent. Castling moves are checked
// for legality during move generation.
// If the moving piece is a king, check whether the destination
// square is attacked by the opponent. Castling moves are checked
// for legality during move generation.
- if (type_of_piece(piece_on(from)) == KING)
+ if (piece_type(piece_on(from)) == KING)
return move_is_castle(m) || !(attackers_to(move_to(m)) & pieces_of_color(opposite_color(us)));
// A non-king move is legal if and only if it is not pinned or it
return move_is_castle(m) || !(attackers_to(move_to(m)) & pieces_of_color(opposite_color(us)));
// A non-king move is legal if and only if it is not pinned or it
// If the from square is not occupied by a piece belonging to the side to
// move, the move is obviously not legal.
// If the from square is not occupied by a piece belonging to the side to
// move, the move is obviously not legal.
- if (pc == PIECE_NONE || color_of_piece(pc) != us)
+ if (pc == PIECE_NONE || piece_color(pc) != us)
return false;
// The destination square cannot be occupied by a friendly piece
return false;
// The destination square cannot be occupied by a friendly piece
- if (color_of_piece(piece_on(to)) == us)
+ if (piece_color(piece_on(to)) == us)
return false;
// Handle the special case of a pawn move
return false;
// Handle the special case of a pawn move
- if (type_of_piece(pc) == PAWN)
+ if (piece_type(pc) == PAWN)
{
// Move direction must be compatible with pawn color
int direction = to - from;
{
// Move direction must be compatible with pawn color
int direction = to - from;
case DELTA_SE:
// Capture. The destination square must be occupied by an enemy
// piece (en passant captures was handled earlier).
case DELTA_SE:
// Capture. The destination square must be occupied by an enemy
// piece (en passant captures was handled earlier).
- if (color_of_piece(piece_on(to)) != them)
+ if (piece_color(piece_on(to)) != them)
return false;
// From and to files must be one file apart, avoids a7h5
return false;
// From and to files must be one file apart, avoids a7h5
{
// In case of king moves under check we have to remove king so to catch
// as invalid moves like b1a1 when opposite queen is on c1.
{
// In case of king moves under check we have to remove king so to catch
// as invalid moves like b1a1 when opposite queen is on c1.
- if (type_of_piece(piece_on(from)) == KING)
+ if (piece_type(piece_on(from)) == KING)
{
Bitboard b = occupied_squares();
clear_bit(&b, from);
{
Bitboard b = occupied_squares();
clear_bit(&b, from);
assert(is_ok());
assert(move_is_ok(m));
assert(ci.dcCandidates == discovered_check_candidates(side_to_move()));
assert(is_ok());
assert(move_is_ok(m));
assert(ci.dcCandidates == discovered_check_candidates(side_to_move()));
- assert(color_of_piece(piece_on(move_from(m))) == side_to_move());
+ assert(piece_color(piece_on(move_from(m))) == side_to_move());
Square from = move_from(m);
Square to = move_to(m);
Square from = move_from(m);
Square to = move_to(m);
- PieceType pt = type_of_piece(piece_on(from));
+ PieceType pt = piece_type(piece_on(from));
// Direct check ?
if (bit_is_set(ci.checkSq[pt], to))
// Direct check ?
if (bit_is_set(ci.checkSq[pt], to))
bool pm = move_is_promotion(m);
Piece piece = piece_on(from);
bool pm = move_is_promotion(m);
Piece piece = piece_on(from);
- PieceType pt = type_of_piece(piece);
- PieceType capture = ep ? PAWN : type_of_piece(piece_on(to));
+ PieceType pt = piece_type(piece);
+ PieceType capture = ep ? PAWN : piece_type(piece_on(to));
- assert(color_of_piece(piece_on(from)) == us);
- assert(color_of_piece(piece_on(to)) == them || square_is_empty(to));
+ assert(piece_color(piece_on(from)) == us);
+ assert(piece_color(piece_on(to)) == them || square_is_empty(to));
assert(!(ep || pm) || piece == make_piece(us, PAWN));
assert(!pm || relative_rank(us, to) == RANK_8);
assert(!(ep || pm) || piece == make_piece(us, PAWN));
assert(!pm || relative_rank(us, to) == RANK_8);
bool ep = move_is_ep(m);
bool pm = move_is_promotion(m);
bool ep = move_is_ep(m);
bool pm = move_is_promotion(m);
- PieceType pt = type_of_piece(piece_on(to));
+ PieceType pt = piece_type(piece_on(to));
assert(square_is_empty(from));
assert(square_is_empty(from));
- assert(color_of_piece(piece_on(to)) == us);
+ assert(piece_color(piece_on(to)) == us);
assert(!pm || relative_rank(us, to) == RANK_8);
assert(!ep || to == st->previous->epSquare);
assert(!ep || relative_rank(us, to) == RANK_6);
assert(!pm || relative_rank(us, to) == RANK_8);
assert(!ep || to == st->previous->epSquare);
assert(!ep || relative_rank(us, to) == RANK_6);
from = move_from(m);
to = move_to(m);
from = move_from(m);
to = move_to(m);
- capturedType = type_of_piece(piece_on(to));
+ capturedType = piece_type(piece_on(to));
occupied = occupied_squares();
// Handle en passant moves
occupied = occupied_squares();
// Handle en passant moves
- if (st->epSquare == to && type_of_piece(piece_on(from)) == PAWN)
+ if (st->epSquare == to && piece_type(piece_on(from)) == PAWN)
{
Square capQq = (side_to_move() == WHITE ? to - DELTA_N : to - DELTA_S);
assert(capturedType == PIECE_TYPE_NONE);
{
Square capQq = (side_to_move() == WHITE ? to - DELTA_N : to - DELTA_S);
assert(capturedType == PIECE_TYPE_NONE);
- assert(type_of_piece(piece_on(capQq)) == PAWN);
+ assert(piece_type(piece_on(capQq)) == PAWN);
// Remove the captured pawn
clear_bit(&occupied, capQq);
// Remove the captured pawn
clear_bit(&occupied, capQq);
attackers = attackers_to(to, occupied);
// If the opponent has no attackers we are finished
attackers = attackers_to(to, occupied);
// If the opponent has no attackers we are finished
- stm = opposite_color(color_of_piece(piece_on(from)));
+ stm = opposite_color(piece_color(piece_on(from)));
stmAttackers = attackers & pieces_of_color(stm);
if (!stmAttackers)
return PieceValueMidgame[capturedType];
stmAttackers = attackers & pieces_of_color(stm);
if (!stmAttackers)
return PieceValueMidgame[capturedType];
// capture with the least valuable piece. After each capture, we look for
// new X-ray attacks from behind the capturing piece.
swapList[0] = PieceValueMidgame[capturedType];
// capture with the least valuable piece. After each capture, we look for
// new X-ray attacks from behind the capturing piece.
swapList[0] = PieceValueMidgame[capturedType];
- capturedType = type_of_piece(piece_on(from));
+ capturedType = piece_type(piece_on(from));
do {
// Locate the least valuable attacker for the side to move. The loop
do {
// Locate the least valuable attacker for the side to move. The loop
void Position::put_piece(Piece p, Square s) {
void Position::put_piece(Piece p, Square s) {
- Color c = color_of_piece(p);
- PieceType pt = type_of_piece(p);
+ Color c = piece_color(p);
+ PieceType pt = piece_type(p);
board[s] = p;
index[s] = pieceCount[c][pt]++;
board[s] = p;
index[s] = pieceCount[c][pt]++;
for (Square s = SQ_A1; s <= SQ_H8; s++)
if (square_is_occupied(s))
for (Square s = SQ_A1; s <= SQ_H8; s++)
if (square_is_occupied(s))
- result ^= zobrist[color_of_piece(piece_on(s))][type_of_piece(piece_on(s))][s];
+ result ^= zobrist[piece_color(piece_on(s))][piece_type(piece_on(s))][s];
if (ep_square() != SQ_NONE)
result ^= zobEp[ep_square()];
if (ep_square() != SQ_NONE)
result ^= zobEp[ep_square()];
{
int kingCount[2] = {0, 0};
for (Square s = SQ_A1; s <= SQ_H8; s++)
{
int kingCount[2] = {0, 0};
for (Square s = SQ_A1; s <= SQ_H8; s++)
- if (type_of_piece(piece_on(s)) == KING)
- kingCount[color_of_piece(piece_on(s))]++;
+ if (piece_type(piece_on(s)) == KING)
+ kingCount[piece_color(piece_on(s))]++;
if (kingCount[0] != 1 || kingCount[1] != 1)
return false;
if (kingCount[0] != 1 || kingCount[1] != 1)
return false;
if (moveIsCheck && pos.see_sign(m) >= 0)
result += CheckExtension[PvNode];
if (moveIsCheck && pos.see_sign(m) >= 0)
result += CheckExtension[PvNode];
- if (type_of_piece(pos.piece_on(move_from(m))) == PAWN)
+ if (piece_type(pos.piece_on(move_from(m))) == PAWN)
{
Color c = pos.side_to_move();
if (relative_rank(c, move_to(m)) == RANK_7)
{
Color c = pos.side_to_move();
if (relative_rank(c, move_to(m)) == RANK_7)
}
if ( captureOrPromotion
}
if ( captureOrPromotion
- && type_of_piece(pos.piece_on(move_to(m))) != PAWN
+ && piece_type(pos.piece_on(move_to(m))) != PAWN
&& ( pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK)
- piece_value_midgame(pos.piece_on(move_to(m))) == VALUE_ZERO)
&& !move_is_special(m))
&& ( pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK)
- piece_value_midgame(pos.piece_on(move_to(m))) == VALUE_ZERO)
&& !move_is_special(m))
return true;
// Rule 2. Queen contact check is very dangerous
return true;
// Rule 2. Queen contact check is very dangerous
- if ( type_of_piece(pc) == QUEEN
+ if ( piece_type(pc) == QUEEN
&& bit_is_set(kingAtt, to))
return true;
&& bit_is_set(kingAtt, to))
return true;
// value of the threatening piece, don't prune moves which defend it.
if ( pos.move_is_capture(threat)
&& ( piece_value_midgame(pos.piece_on(tfrom)) >= piece_value_midgame(pos.piece_on(tto))
// value of the threatening piece, don't prune moves which defend it.
if ( pos.move_is_capture(threat)
&& ( piece_value_midgame(pos.piece_on(tfrom)) >= piece_value_midgame(pos.piece_on(tto))
- || type_of_piece(pos.piece_on(tfrom)) == KING)
+ || piece_type(pos.piece_on(tfrom)) == KING)
&& pos.move_attacks_square(m, tto))
return true;
&& pos.move_attacks_square(m, tto))
return true;
return Piece((c << 3) | pt);
}
return Piece((c << 3) | pt);
}
-inline PieceType type_of_piece(Piece p) {
+inline PieceType piece_type(Piece p) {
return PieceType(p & 7);
}
return PieceType(p & 7);
}
-inline Color color_of_piece(Piece p) {
+inline Color piece_color(Piece p) {