/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad
+ Copyright (C) 2008-2013 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
typedef Stats<false> History;
typedef Stats<true> Gains;
+// FIXME: Document me
+struct RefutationTable {
+
+ void clear() { memset(table, 0, sizeof(table)); }
+ void update(Piece p, Square to, Move m) { table[p][to] = m; }
+ Move get(Piece p, Square to) const { return table[p][to]; }
+
+private:
+ Move table[PIECE_NB][SQUARE_NB]; // Mapping: "move A" -> "move B which refutes move A"
+
+};
/// MovePicker class is used to pick one pseudo legal move at a time from the
/// current position. The most important method is next_move(), which returns a
MovePicker& operator=(const MovePicker&); // Silence a warning under MSVC
public:
- MovePicker(const Position&, Move, Depth, const History&, Search::Stack*, Value);
+ MovePicker(const Position&, Move, Depth, const History&, Search::Stack*, Move, Value);
MovePicker(const Position&, Move, Depth, const History&, Square);
MovePicker(const Position&, Move, const History&, PieceType);
template<bool SpNode> Move next_move();
Search::Stack* ss;
Depth depth;
Move ttMove;
- MoveStack killers[2];
+ MoveStack killers[3];
Square recaptureSquare;
int captureThreshold, phase;
MoveStack *cur, *end, *endQuiets, *endBadCaptures;