Square board_enpassant(Board self) { return self->enpassant; }
eCastle board_castle(Board self) { return self->castle; }
eColor board_side(Board self) { return self->side; }
U64 board_colorBB(Board self, eColor color) { return self->colorBB[color]; }
U64 board_pieceBB(Board self, ePiece piece) { return self->pieceBB[piece]; }
U64 board_color(Board self, eColor color) { return self->color[color]; }
U64 board_piece(Board self, ePiece piece) { return self->piece[piece]; }
U64 board_occupancy(Board self) {
return self->colorBB[WHITE] | self->colorBB[BLACK];
return self->color[WHITE] | self->color[BLACK];
}
U64 board_pieceBB_get(Board self, ePiece piece, Square target) {
return bit_get(self->pieceBB[piece], target);
return bit_get(self->piece[piece], target);
}
U64 board_pieceSet(Board self, Piece piece) {
return self->pieceBB[piece_piece(piece)] &
self->colorBB[piece_color(piece)];
return self->piece[piece_piece(piece)] & self->color[piece_color(piece)];
}
void board_enpassant_set(Board self, Square target) {
self->enpassant = target;
}
void board_colorBB_pop(Board self, eColor color, Square target) {
bit_pop(self->colorBB[color], target);
void board_color_pop(Board self, eColor color, Square target) {
bit_pop(self->color[color], target);
}
void board_colorBB_set(Board self, eColor color, Square target) {
bit_set(self->colorBB[color], target);
void board_color_set(Board self, eColor color, Square target) {
bit_set(self->color[color], target);
}
U64 board_colorBB_get(Board self, eColor color, Square target) {
return bit_get(self->colorBB[color], target);
U64 board_color_get(Board self, eColor color, Square target) {
return bit_get(self->color[color], target);
}
int board_piece_get(Board self, Square square) {
for (int i = 0; i < 6; i++)
if (bit_get(self->pieceBB[i], square)) return i;
if (bit_get(self->piece[i], square)) return i;
return -1;
}
void board_piece_pop(Board self, Piece piece, Square square) {
bit_pop(self->pieceBB[piece_piece(piece)], square);
bit_pop(self->colorBB[piece_color(piece)], square);
bit_pop(self->piece[piece_piece(piece)], square);
bit_pop(self->color[piece_color(piece)], square);
}
void board_piece_set(Board self, Piece piece, Square square) {
bit_set(self->pieceBB[piece_piece(piece)], square);
bit_set(self->colorBB[piece_color(piece)], square);
bit_set(self->piece[piece_piece(piece)], square);
bit_set(self->color[piece_color(piece)], square);
}
void board_piece_move(Board self, Piece Piece, Square source, Square target) {