From f5d9fe6211bd397deb0ac19b634f551edfa0f6b8 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Sun, 30 Jan 2022 20:19:02 +0100 Subject: Initialize project --- src/UCI.hpp | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/UCI.hpp (limited to 'src/UCI.hpp') diff --git a/src/UCI.hpp b/src/UCI.hpp new file mode 100644 index 0000000..19cc1e9 --- /dev/null +++ b/src/UCI.hpp @@ -0,0 +1,125 @@ +#ifdef UNIX +#include "ProcessLinux.hpp" +#define INIT_PROCESS(p) \ + { p = static_cast(new ProcessLinux()); } +#else +#include "ProcessWindows.hpp" +#endif +#include +#include +#include +#include +#include + +#define IS_OPT_PARAM(str) \ + ((str) == "name" || (str) == "type" | (str) == "default" || \ + (str) == "min" || (str) == "max" || (str) == "var") + +namespace uciadapter { + +/// @brief Empty string and option if not specified +typedef struct Option { + std::string name; + std::string type; + std::string default_value; + std::string min; + std::string max; + std::string var; +} Option; + +/// @brief All long are initiated to -1 if not set +class Info { +public: + long depth; + long seldepth; + long multipv; + long score_cp; + long score_mate; + long score_lowerbound; + long score_upperbound; + long cp; + long nodes; + long nps; + long tbhits; + long time; + long hashfull; + long cpuload; + long currmovenumber; + std::vector pv; + std::string currmove; + Info(); +}; + +/// @brief Calling go(Go()) will perform a Command("go"). Just leave unused +/// parameters untouched +class Go { +public: + std::string searchmoves; + std::string ponder; + int wtime, btime, winc, binc, movestogo, depth, nodes, mate, movetime; + bool infinite; + Go(); +}; + +class UCI { + Process *p; + /// @brief Reset on each call to go() + std::string buffer; + /// @brief Reset on each call to go() + std::string bestmove, ponder; + /// @brief Setup on engine startup + std::string name, author; + /// @brief Setup on engine startup + std::vector