Belofte  version 2.1.5
A promising chess program using the UCI or Winboard interface
usercmd.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------+
2  * File: usercmd.h
3  * Project: part of belofte - A Promising Chess Program
4  * Author: yves
5  * SPDX-License-Identifier: GPL-2.0-only
6 +----------------------------------------------------------------------*/
7 
8 #if !defined(USERCMD_H)
9 #define USERCMD_H
10 
11 /** basic format for single command
12  */
14 public:
15  engineUserCommand(std::string const& s, std::string const& h);
16  virtual ~engineUserCommand();
17 
18  // no copy or move ctor nor assignment defined
23 
24  virtual void execute(std::string const& args);
25 
26  // declared public as there is not much logic and to avoid getter/setter
27  std::string m_name;
28  std::string m_hint;
29  bool m_isImplemented = true;
30  bool m_isHidden = false;
31 };
32 
33 /** command and parameters
34  */
35 class cmdParam final {
36 public:
37  cmdParam();
38  ~cmdParam();
39 
40  cmdParam(cmdParam&&) = default;
41 
42  // no copy or move ctor nor assignment defined
43  cmdParam(cmdParam const&) = delete;
44  cmdParam& operator=(cmdParam const&) = delete;
45  cmdParam& operator=(cmdParam&&) = delete;
46 
47  // declared public as there is not much logic and to avoid getter/setter
48  std::string m_command;
49  std::string m_args;
50 };
51 
52 //-----------------------------------------------------------------------
53 
54 /** Sub-class to react uniformly on UCI interface specific stuff
55  */
57 public:
58  UCIengineCommand(std::string const& s, std::string const& h);
59  ~UCIengineCommand() override;
60 };
61 
62 /** Sub-class to react uniformly on Xboard v1 interface specific stuff
63  */
65 public:
66  Xboard1engineCommand(std::string const& s, std::string const& h);
67  ~Xboard1engineCommand() override;
68 };
69 
70 /** Sub-class to react uniformly on Xboard v2 interface specific stuff
71  */
73 public:
74  Xboard2engineCommand(std::string const& s, std::string const& h);
75  ~Xboard2engineCommand() override;
76 };
77 
78 /** Do not react to command
79  */
81 public:
82  dummyEngineCommand(std::string const& s, std::string const& h);
83  ~dummyEngineCommand() override;
84 
85  void execute(std::string const& args UNUSED) override {}
86 };
87 
88 //-----------------------------------------------------------------------
89 
90 /** implementation of single command
91  */
92 class cmd_help : public engineUserCommand {
93 public:
94  cmd_help() : engineUserCommand("help", "show help, --all for complete list") {}
95  void execute(std::string const& args) override;
96 };
97 
98 class cmd_quit : public engineUserCommand {
99 public:
100  cmd_quit() : engineUserCommand("quit", "exit application") {}
101  void execute(std::string const& args) override;
102 };
103 
104 class cmd_echo : public engineUserCommand {
105 public:
106  cmd_echo() : engineUserCommand("echo", "print line, mainly for batch operation") {}
107  void execute(std::string const& args) override;
108 };
109 
111 public:
112  cmd_belofte() : engineUserCommand("belofte", "go back to belofte mode") {}
113  void execute(std::string const& args) override;
114 };
115 
116 class cmd_uci : public engineUserCommand {
117 public:
118  cmd_uci() : engineUserCommand("uci", "go to uci mode") {}
119  void execute(std::string const& args) override;
120 };
121 
123 public:
124  cmd_xboard() : engineUserCommand("xboard", "go to xboard mode") {}
125  void execute(std::string const& args) override;
126 };
127 
129 public:
130  cmd_setoption() : UCIengineCommand("setoption", "set various options") {}
131  void execute(std::string const& args) override;
132 };
133 
135 public:
136  cmd_isready() : UCIengineCommand("isready", "ask program if ready") {}
137  void execute(std::string const& args) override;
138 };
139 
141 public:
142  cmd_position() : UCIengineCommand("position", "set-up board") {}
143  void execute(std::string const& args) override;
144 };
145 
146 class cmd_go : public UCIengineCommand {
147 public:
148  cmd_go() : UCIengineCommand("go", "start searching") {}
149  void execute(std::string const& args) override;
150 };
151 
152 class cmd_stop : public engineUserCommand {
153 public:
154  cmd_stop() : engineUserCommand("stop", "stop searching") {}
155  void execute(std::string const& args) override;
156 };
157 
159 public:
160  cmd_ponderhit() : UCIengineCommand("ponderhit", "start search from ponderhit") {}
161 };
162 
164 public:
165  cmd_ucinewgame() : UCIengineCommand("ucinewgame", "initialize new game") {}
166  void execute(std::string const& args) override;
167 };
168 
170 public:
171  cmd_exit() : Xboard2engineCommand("exit", "exit analyze mode") {}
172 };
173 
174 class cmd_debug : public engineUserCommand {
175 public:
176  cmd_debug() : engineUserCommand("debug", "various debug commands") {}
177  void execute(std::string const& args) override;
178 };
179 
180 class cmd_bench : public engineUserCommand {
181 public:
182  cmd_bench() : engineUserCommand("bench", "run bench command") {}
183  void execute(std::string const& args) override;
184 };
185 
186 class cmd_perft : public engineUserCommand {
187 public:
188  cmd_perft() : engineUserCommand("perft", "run perft command") {}
189  void execute(std::string const& args) override;
190 };
191 
192 class cmd_epd : public engineUserCommand {
193 public:
194  void execute(std::string const& args) override;
195  cmd_epd() : engineUserCommand("epd", "file|pos [-sts|perf] parse epd file or position") {}
196 };
197 
199 public:
200  cmd_epdpos() : engineUserCommand("epdpos", "parse epd position (deprecated)") {}
201  void execute(std::string const& args) override;
202 };
203 
204 #if !defined(NODIRENT)
205 class cmd_ls : public engineUserCommand {
206 public:
207  cmd_ls() : engineUserCommand("ls", "[pattern|subdir/] list content of directory") {}
208  void execute(std::string const& args) override;
209 };
210 #endif
211 
213 public:
214  cmd_execat() : engineUserCommand("@", "execute command file") {}
215  void execute(std::string const& args) override;
216 };
217 
218 class cmd_exec : public engineUserCommand {
219 public:
220  cmd_exec() : engineUserCommand("exec", "execute command file (alternative to @)") {}
221  void execute(std::string const& args) override;
222 };
223 
224 class cmd_about : public engineUserCommand {
225 public:
226  cmd_about() : engineUserCommand("about", "prints about message") {}
227  void execute(std::string const& args) override;
228 };
229 
231 public:
232  cmd_export() : dummyEngineCommand("export", "export in standard PGN format") {}
233 };
234 
235 class cmd_save : public engineUserCommand {
236 public:
237  cmd_save() : engineUserCommand("save", "save game and all game information "
238  "(extended PGN)") {}
239  void execute(std::string const& args) override;
240 };
241 
242 class cmd_game : public engineUserCommand {
243 public:
244  cmd_game() : engineUserCommand("game", "display game and all game information "
245  "(extended PGN)") {}
246  void execute(std::string const& args) override;
247 };
248 
249 class cmd_bd : public engineUserCommand {
250 public:
251  cmd_bd() : engineUserCommand("bd", "show board") {}
252  void execute(std::string const& args) override;
253 };
254 
256 public:
257  cmd_undo() : Xboard2engineCommand("undo", "undo last move, switches colour player to move") {}
258  void execute(std::string const& args) override;
259 };
260 
261 class cmd_usage : public engineUserCommand {
262 public:
263  cmd_usage() : engineUserCommand("usage", "shows how to call the application") {}
264  void execute(std::string const& args) override;
265 };
266 
268 public:
269  cmd_expect() : engineUserCommand("expect", "run next command in expect mode") {}
270  void execute(std::string const& args) override;
271 };
272 
274 public:
275  cmd_new() : Xboard2engineCommand("new", "new game") {}
276  void execute(std::string const& args) override;
277 };
278 
280 public:
281  cmd_setboard() : Xboard2engineCommand("setboard", "configure board") {}
282  void execute(std::string const& args) override;
283 };
284 
286 public:
287  cmd_usermove() : Xboard2engineCommand("usermove", "apply coordmove to position") {}
288  void execute(std::string const& args) override;
289 };
290 
292 public:
293  cmd_remove() : Xboard2engineCommand("remove", "undo last 2 moves") {}
294  void execute(std::string const& args) override;
295 };
296 
297 class cmd_again : public engineUserCommand {
298 public:
299  cmd_again() : engineUserCommand("again", "undo move and search again") {}
300  void execute(std::string const& args) override;
301 };
302 
304 public:
305  cmd_protover() : Xboard2engineCommand("protover", "switch to xboard v2 mode") {}
306  void execute(std::string const& args) override;
307 };
308 
310 public:
311  cmd_accepted() : dummyEngineCommand("accepted", "notify acceptance of feature") {}
312 };
313 
315 public:
316  cmd_rejected() : Xboard2engineCommand("rejected", "reject acceptance of feature") {}
317  void execute(std::string const& args) override;
318 };
319 
321 public:
322  cmd_option() : Xboard2engineCommand("option", "unused") {}
323  void execute(std::string const& args) override;
324 };
325 
327 public:
328  cmd_force() : Xboard2engineCommand("force", "stop engine for both sides") {}
329  void execute(std::string const& args) override;
330 };
331 
333 public:
334  cmd_playother() : Xboard2engineCommand("playother", "start engine for opponent side") {}
335  void execute(std::string const& args) override;
336 };
337 
339 public:
340  cmd_level() : Xboard2engineCommand("level", "set level: moves time[:sec] increment") {}
341  void execute(std::string const& args) override;
342 };
343 
344 class cmd_sd : public Xboard2engineCommand {
345 public:
346  cmd_sd() : Xboard2engineCommand("sd", "set depth") {}
347  void execute(std::string const& args) override;
348 };
349 
350 class cmd_fd : public Xboard2engineCommand {
351 public:
352  cmd_fd() : Xboard2engineCommand("fd", "set fixed depth (e.g. mate in x)") {}
353  void execute(std::string const& args) override;
354 };
355 
356 class cmd_st : public Xboard2engineCommand {
357 public:
358  cmd_st() : Xboard2engineCommand("st", "set exact time per move") {}
359  void execute(std::string const& args) override;
360 };
361 
363 public:
364  cmd_time() : Xboard2engineCommand("time", "set remaining time") {}
365  void execute(std::string const& args) override;
366 };
367 
368 class cmd_otim : public dummyEngineCommand {
369 public:
370  cmd_otim() : dummyEngineCommand("otim", "set remaining time opponent") {}
371 };
372 
374 public:
375  cmd_ping() : Xboard2engineCommand("ping", "keep alive message") {}
376  void execute(std::string const& args) override;
377 };
378 
380 public:
381  cmd_post() : Xboard2engineCommand("post", "activate search output") {}
382  void execute(std::string const& args) override;
383 };
384 
386 public:
387  cmd_nopost() : Xboard2engineCommand("nopost", "deactivate search output") {}
388  void execute(std::string const& args) override;
389 };
390 
392 public:
393  cmd_easy() : Xboard1engineCommand("easy", "set ponder off") {}
394  void execute(std::string const& args) override;
395 };
396 
398 public:
399  cmd_hard() : Xboard1engineCommand("hard", "set ponder on") {}
400  void execute(std::string const& args) override;
401 };
402 
404 public:
405  cmd_verbose() : engineUserCommand("verbose", "set level of detail in output") {}
406  void execute(std::string const& args) override;
407 };
408 
410 public:
411  cmd_random() : Xboard2engineCommand("random", "toggle random mode") {}
412  void execute(std::string const& args) override;
413 };
414 
416 public:
417  cmd_computer() : dummyEngineCommand("computer", "indicate opponent is computer") {}
418 };
419 
421 public:
422  cmd_questionmark() : Xboard2engineCommand("?", "stop searching") {}
423  void execute(std::string const& args) override;
424 };
425 
427 public:
428  cmd_white() : dummyEngineCommand("white", "white to move, engine plays "
429  "black, stops clocks") {}
430 };
431 
433 public:
434  cmd_black() : dummyEngineCommand("black", "black to move, engine plays "
435  "white, stops clocks") {}
436 };
437 
438 class cmd_dot : public dummyEngineCommand {
439 public:
440  cmd_dot() : dummyEngineCommand(".", "end edit command") {}
441 };
442 
444 public:
445  cmd_result() : dummyEngineCommand("result", "inform engine of result") {}
446 };
447 
448 class cmd_alg : public engineUserCommand {
449 public:
450  /// @todo get values dynamically
452  "set algorithm: Random|StaticEval|BruteForce|SearchIterativeBF|"
453  "AB|ABFS|ABFH") {}
454  void execute(std::string const& args) override;
455 };
456 
458 public:
459  cmd_UCI_ShowCurrLine(): UCIengineCommand("UCI_ShowCurrLine",
460  "show during thinking") {}
461  void execute(std::string const& args) override;
462 };
463 
465 public:
467  "give name of opponent") {}
468  void execute(std::string const& args) override;
469 };
470 
472 public:
474  "give name of opponent") {}
475  void execute(std::string const& args) override;
476 };
477 
478 class cmd_info : public engineUserCommand {
479 public:
480  cmd_info() : engineUserCommand("info", "print info on program") {}
481  void execute(std::string const& args) override;
482 };
483 
485 public:
487  "set evaluation type: PiecesOnly|StaticBoard|PositionalBoard") {}
488  void execute(std::string const& args) override;
489 };
490 
491 class cmd_eval : public engineUserCommand {
492 public:
493  cmd_eval() : engineUserCommand("eval", "return position evaluation") {}
494  void execute(std::string const& args) override;
495 };
496 
497 #endif // defined USERCMD_H
498 
499 // eof
Sub-class to react uniformly on UCI interface specific stuff.
Definition: usercmd.h:56
UCIengineCommand(std::string const &s, std::string const &h)
Definition: usercmd.cpp:31
~UCIengineCommand() override
Definition: usercmd.cpp:37
Sub-class to react uniformly on Xboard v1 interface specific stuff.
Definition: usercmd.h:64
~Xboard1engineCommand() override
Definition: usercmd.cpp:47
Xboard1engineCommand(std::string const &s, std::string const &h)
Definition: usercmd.cpp:41
Sub-class to react uniformly on Xboard v2 interface specific stuff.
Definition: usercmd.h:72
~Xboard2engineCommand() override
Definition: usercmd.cpp:57
Xboard2engineCommand(std::string const &s, std::string const &h)
Definition: usercmd.cpp:51
void execute(std::string const &args) override
void execute(std::string const &args) override
void execute(std::string const &args) override
Definition: usercmd.cpp:341
cmd_about()
Definition: usercmd.h:226
cmd_accepted()
Definition: usercmd.h:311
void execute(std::string const &args) override
cmd_again()
Definition: usercmd.h:299
cmd_alg()
Definition: usercmd.h:451
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_bd()
Definition: usercmd.h:251
void execute(std::string const &args) override
cmd_belofte()
Definition: usercmd.h:112
cmd_bench()
Definition: usercmd.h:182
void execute(std::string const &args) override
cmd_black()
Definition: usercmd.h:434
cmd_computer()
Definition: usercmd.h:417
cmd_debug()
Definition: usercmd.h:176
void execute(std::string const &args) override
cmd_dot()
Definition: usercmd.h:440
cmd_easy()
Definition: usercmd.h:393
void execute(std::string const &args) override
cmd_echo()
Definition: usercmd.h:106
void execute(std::string const &args) override
cmd_epd()
Definition: usercmd.h:195
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_epdpos()
Definition: usercmd.h:200
void execute(std::string const &args) override
cmd_eval()
Definition: usercmd.h:493
cmd_evaltype()
Definition: usercmd.h:486
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_exec()
Definition: usercmd.h:220
cmd_execat()
Definition: usercmd.h:214
void execute(std::string const &args) override
cmd_exit()
Definition: usercmd.h:171
void execute(std::string const &args) override
cmd_expect()
Definition: usercmd.h:269
cmd_export()
Definition: usercmd.h:232
void execute(std::string const &args) override
cmd_fd()
Definition: usercmd.h:352
cmd_force()
Definition: usercmd.h:328
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_game()
Definition: usercmd.h:244
void execute(std::string const &args) override
cmd_go()
Definition: usercmd.h:148
void execute(std::string const &args) override
cmd_hard()
Definition: usercmd.h:399
implementation of single command
Definition: usercmd.h:92
void execute(std::string const &args) override
Definition: usercmd.cpp:330
cmd_help()
Definition: usercmd.h:94
cmd_info()
Definition: usercmd.h:480
void execute(std::string const &args) override
cmd_isready()
Definition: usercmd.h:136
void execute(std::string const &args) override
cmd_level()
Definition: usercmd.h:340
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_ls()
Definition: usercmd.h:207
void execute(std::string const &args) override
cmd_name()
Definition: usercmd.h:473
void execute(std::string const &args) override
cmd_new()
Definition: usercmd.h:275
cmd_nopost()
Definition: usercmd.h:387
void execute(std::string const &args) override
cmd_option()
Definition: usercmd.h:322
void execute(std::string const &args) override
cmd_otim()
Definition: usercmd.h:370
cmd_perft()
Definition: usercmd.h:188
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_ping()
Definition: usercmd.h:375
void execute(std::string const &args) override
cmd_position()
Definition: usercmd.h:142
void execute(std::string const &args) override
Definition: usercmd.h:379
cmd_post()
Definition: usercmd.h:381
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_protover()
Definition: usercmd.h:305
void execute(std::string const &args) override
void execute(std::string const &args) override
Definition: usercmd.cpp:335
cmd_quit()
Definition: usercmd.h:100
cmd_random()
Definition: usercmd.h:411
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_rejected()
Definition: usercmd.h:316
cmd_remove()
Definition: usercmd.h:293
void execute(std::string const &args) override
cmd_result()
Definition: usercmd.h:445
void execute(std::string const &args) override
cmd_save()
Definition: usercmd.h:237
void execute(std::string const &args) override
cmd_sd()
Definition: usercmd.h:346
void execute(std::string const &args) override
cmd_setboard()
Definition: usercmd.h:281
void execute(std::string const &args) override
cmd_st()
Definition: usercmd.h:358
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_stop()
Definition: usercmd.h:154
void execute(std::string const &args) override
cmd_time()
Definition: usercmd.h:364
cmd_uci()
Definition: usercmd.h:118
void execute(std::string const &args) override
void execute(std::string const &args) override
cmd_undo()
Definition: usercmd.h:257
void execute(std::string const &args) override
void execute(std::string const &args) override
Definition: usercmd.cpp:348
cmd_usage()
Definition: usercmd.h:263
void execute(std::string const &args) override
cmd_usermove()
Definition: usercmd.h:287
cmd_verbose()
Definition: usercmd.h:405
void execute(std::string const &args) override
cmd_white()
Definition: usercmd.h:428
void execute(std::string const &args) override
cmd_xboard()
Definition: usercmd.h:124
command and parameters
Definition: usercmd.h:35
~cmdParam()
Definition: usercmd.cpp:80
cmdParam & operator=(cmdParam const &)=delete
cmdParam(cmdParam const &)=delete
cmdParam & operator=(cmdParam &&)=delete
cmdParam(cmdParam &&)=default
cmdParam()
Definition: usercmd.cpp:74
std::string m_command
Definition: usercmd.h:48
std::string m_args
Definition: usercmd.h:49
Do not react to command.
Definition: usercmd.h:80
~dummyEngineCommand() override
Definition: usercmd.cpp:68
dummyEngineCommand(std::string const &s, std::string const &h)
Definition: usercmd.cpp:61
void execute(std::string const &args UNUSED) override
Definition: usercmd.h:85
basic format for single command
Definition: usercmd.h:13
std::string m_hint
Definition: usercmd.h:28
virtual ~engineUserCommand()
Definition: usercmd.cpp:19
engineUserCommand & operator=(engineUserCommand &&)=delete
virtual void execute(std::string const &args)
Definition: usercmd.cpp:23
engineUserCommand(engineUserCommand &&)=delete
std::string m_name
Definition: usercmd.h:27
engineUserCommand(std::string const &s, std::string const &h)
Definition: usercmd.cpp:12
engineUserCommand(engineUserCommand const &)=delete
bool m_isImplemented
Definition: usercmd.h:29
engineUserCommand & operator=(engineUserCommand const &)=delete