- /* 
-     Texel - A UCI chess engine. 
-     Copyright (C) 2012-2014  Peter Ă–sterlund, peterosterlund2@gmail.com 
-   
-     This program is free software: you can redistribute it and/or modify 
-     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. 
-   
-     This program 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/>. 
- */ 
-   
- /* 
-  * computerPlayer.hpp 
-  * 
-  *  Created on: Feb 25, 2012 
-  *      Author: petero 
-  */ 
-   
- #ifndef COMPUTERPLAYER_HPP_ 
- #define COMPUTERPLAYER_HPP_ 
-   
- #include "player.hpp" 
- #include "transpositionTable.hpp" 
- #include "book.hpp" 
- #include "search.hpp" 
-   
- #include <string> 
- #include <memory> 
-   
- class ComputerPlayerTest; 
-   
- /** 
-  * A computer algorithm player. 
-  */ 
- class ComputerPlayer : public Player { 
-     friend class ComputerPlayerTest; 
- public: 
-     static std::string engineName; 
-     bool verbose; 
-   
-     ComputerPlayer(); 
-     ComputerPlayer(const ComputerPlayer& other) = delete; 
-     ComputerPlayer& operator=(const ComputerPlayer& other) = delete; 
-   
-     void setTTLogSize(int logSize); 
-   
-     void setListener(const std::shared_ptr<Search::Listener>& listener); 
-   
-     std::string getCommand(const Position& posIn, bool drawOffer, const std::vector<Position>& history) override; 
-   
-     bool isHumanPlayer() override; 
-   
-     void useBook(bool bookOn) override; 
-   
-     void timeLimit(int minTimeLimit, int maxTimeLimit) override; 
-   
-     void clearTT() override; 
-   
-     /** Search a position and return the best move and score. Used for test suite processing. */ 
-     std::pair<Move, std::string> searchPosition(Position& pos, int maxTimeMillis); 
-   
-     /** Initialize static data. */ 
-     static void staticInitialize(); 
-   
-     /** Performs initialization that must happen after static initialization. */ 
-     static void initEngine(); 
-   
- private: 
-     /** Check if a draw claim is allowed, possibly after playing "move". 
-      * @param move The move that may have to be made before claiming draw. 
-      * @return The draw string that claims the draw, or empty string if draw claim not valid. 
-      */ 
-     std::string canClaimDraw(Position& pos, std::vector<U64>& posHashList, 
-                              int posHashListSize, const Move& move); 
-   
-   
-     int minTimeMillis; 
-     int maxTimeMillis; 
-     int maxDepth; 
-   
-     int maxNodes; 
-     TranspositionTable tt; 
-     ParallelData pd; 
-     std::shared_ptr<Evaluate::EvalHashTables> et; 
-     Book book; 
-     bool bookEnabled; 
-     Search* currentSearch; 
-     std::shared_ptr<Search::Listener> listener; 
- }; 
-   
-   
- inline void 
- ComputerPlayer::setTTLogSize(int logSize) { 
-     tt.reSize(logSize); 
- } 
-   
- inline void 
- ComputerPlayer::setListener(const std::shared_ptr<Search::Listener>& listener) { 
-     this->listener = listener; 
- } 
-   
- inline bool 
- ComputerPlayer::isHumanPlayer() { 
-     return false; 
- } 
-   
- inline void 
- ComputerPlayer::useBook(bool bookOn) { 
-     bookEnabled = bookOn; 
- } 
-   
- inline void 
- ComputerPlayer::clearTT() { 
-     tt.clear(); 
- } 
-   
- #endif /* COMPUTERPLAYER_HPP_ */ 
-