BenBot 1.7.5
A chess engine
Loading...
Searching...
No Matches
CommandParsing.hpp
Go to the documentation of this file.
1/*
2 * ======================================================================================
3 *
4 * ░▒▓███████▓▒░░▒▓████████▓▒░▒▓███████▓▒░ ░▒▓███████▓▒░ ░▒▓██████▓▒░▒▓████████▓▒░
5 * ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
6 * ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
7 * ░▒▓███████▓▒░░▒▓██████▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
8 * ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
9 * ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
10 * ░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓███████▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░
11 *
12 * ======================================================================================
13 */
14
20
25
26#pragma once
27
28#include <chrono>
29#include <cstddef> // IWYU pragma: keep - for size_t
30#include <expected>
32#include <optional>
33#include <string>
34#include <string_view>
35
36namespace chess::game {
37struct Position;
38} // namespace chess::game
39
43namespace chess::uci {
44
45using game::Position;
46using std::chrono::milliseconds;
47using std::optional;
48using std::size_t;
49using std::string_view;
50
58[[nodiscard]] auto parse_position_options(string_view options)
59 -> std::expected<Position, std::string>;
60
66struct RegisterNowOptions final {
68 std::string name;
69
71 std::string code;
72};
73
77using RegisterOptions = optional<RegisterNowOptions>;
78
85[[nodiscard]] auto parse_register_options(string_view options) -> RegisterOptions;
86
92struct [[nodiscard]] GoCommandOptions final {
97
99 bool ponderMode { false };
100
102 bool infinite { false };
103
105 optional<milliseconds> whiteTimeLeft;
106
108 optional<milliseconds> blackTimeLeft;
109
111 optional<milliseconds> whiteInc;
112
114 optional<milliseconds> blackInc;
115
117 optional<milliseconds> searchTime;
118
120 optional<size_t> movesToGo;
121
123 optional<size_t> depth;
124
126 optional<size_t> nodes;
127
129 optional<size_t> mateIn;
130};
131
138[[nodiscard]] auto parse_go_options(
139 string_view options, const Position& currentPosition)
141
142} // namespace chess::uci
optional< RegisterNowOptions > RegisterOptions
auto parse_go_options(string_view options, const Position &currentPosition) -> GoCommandOptions
auto parse_position_options(string_view options) -> std::expected< Position, std::string >
auto parse_register_options(string_view options) -> RegisterOptions
beman::inplace_vector::inplace_vector< Move, MAX_MOVES > MoveList
Definition MoveGen.hpp:63
optional< milliseconds > searchTime
optional< milliseconds > whiteTimeLeft
optional< milliseconds > blackTimeLeft
optional< milliseconds > whiteInc
optional< milliseconds > blackInc