| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef UCI_H_INCLUDED |
| #define UCI_H_INCLUDED |
|
|
| #include <map> |
| #include <string> |
|
|
| #include "types.h" |
|
|
| namespace Stockfish { |
|
|
| class Position; |
|
|
| namespace UCI { |
|
|
| |
| |
| |
| |
| |
| const int NormalizeToPawnValue = 361; |
|
|
| class Option; |
|
|
| |
| struct CaseInsensitiveLess { |
| bool operator() (const std::string&, const std::string&) const; |
| }; |
|
|
| |
| typedef std::map<std::string, Option, CaseInsensitiveLess> OptionsMap; |
|
|
| |
| class Option { |
|
|
| typedef void (*OnChange)(const Option&); |
|
|
| public: |
| Option(OnChange = nullptr); |
| Option(bool v, OnChange = nullptr); |
| Option(const char* v, OnChange = nullptr); |
| Option(double v, int minv, int maxv, OnChange = nullptr); |
| Option(const char* v, const char* cur, OnChange = nullptr); |
|
|
| Option& operator=(const std::string&); |
| void operator<<(const Option&); |
| operator double() const; |
| operator std::string() const; |
| bool operator==(const char*) const; |
|
|
| private: |
| friend std::ostream& operator<<(std::ostream&, const OptionsMap&); |
|
|
| std::string defaultValue, currentValue, type; |
| int min, max; |
| size_t idx; |
| OnChange on_change; |
| }; |
|
|
| void init(OptionsMap&); |
| void loop(int argc, char* argv[]); |
| std::string value(Value v); |
| std::string square(Square s); |
| std::string move(Move m, bool chess960); |
| std::string pv(const Position& pos, Depth depth); |
| std::string wdl(Value v, int ply); |
| Move to_move(const Position& pos, std::string& str); |
|
|
| } |
|
|
| extern UCI::OptionsMap Options; |
|
|
| } |
|
|
| #endif |
|
|