/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2009 Marco Costalba
+ Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, 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
//// Variables
////
-int Position::castleRightsMask[64];
-
Key Position::zobrist[2][8][64];
Key Position::zobEp[64];
Key Position::zobCastle[16];
Position::Position(const Position& pos) {
- fast_copy(pos);
+ memcpy(this, &pos, sizeof(Position));
detach(); // Always detach() in copy c'tor to avoid surprises
}
}
-/// Position::fast_copy() creates a partial copy of the given position,
-/// only data that changes with a do_move() / undo_move() cycle is copied,
-/// in particular for stateInfo are copied only the pointers, so that the
-/// actual data remains stored in the parent Position. This is not a problem
-/// if the parent Position is known not to be destroyed while we are still alive,
-/// as is the common case, see detach() otherwise.
-
-void Position::fast_copy(const Position& pos) {
-
- memcpy(this, &pos, sizeof(Position));
-}
-
-
/// Position::detach() copies the content of the current state and castling
/// masks inside the position itself. This is needed when the st pointee could
/// become stale, as example because the caller is about to going out of scope.
}
-///
-PieceType Position::captured_piece() const {
- return st->capture;
-}
-
/// Position::see() is a static exchange evaluator: It tries to estimate the
/// material gain or loss resulting from a move. There are three versions of
/// this function: One which takes a destination square as input, one takes a