Belofte version 2.1.8
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 */
14public:
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 */
35class cmdParam final {
36public:
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;
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 */
57public:
58 UCIengineCommand(std::string const& s, std::string const& h);
59 ~UCIengineCommand() override;
60};
61
63public:
64 UCIengineOption(std::string const& s, std::string const& h);
65 ~UCIengineOption() override;
66};
67
68/** Sub-class to react uniformly on Xboard v1 interface specific stuff
69 */
71public:
72 Xboard1engineCommand(std::string const& s, std::string const& h);
73 ~Xboard1engineCommand() override;
74};
75
76/** Sub-class to react uniformly on Xboard v2 interface specific stuff
77 */
79public:
80 Xboard2engineCommand(std::string const& s, std::string const& h);
81 ~Xboard2engineCommand() override;
82};
83
84/** Do not react to command
85 */
87public:
88 dummyEngineCommand(std::string const& s, std::string const& h);
89 ~dummyEngineCommand() override;
90
91 void execute(std::string const& args UNUSED) override {}
92};
93
94//-----------------------------------------------------------------------
95
96/** implementation of single command
97 */
99public:
100 cmd_help() : engineUserCommand("help", "show help, ['command'] [--all/all] [unsupported] [hidden] for more complete lists") {}
101 void execute(std::string const& args) override;
102};
103
105public:
106 cmd_quit() : engineUserCommand("quit", "exit application") {}
107 void execute(std::string const& args) override;
108};
109
111public:
112 cmd_echo() : engineUserCommand("echo", "print line, mainly for batch operation") {}
113 void execute(std::string const& args) override;
114};
115
117public:
118 cmd_belofte() : engineUserCommand("belofte", "go back to belofte mode") {}
119 void execute(std::string const& args) override;
120};
121
123public:
124 cmd_uci() : engineUserCommand("uci", "go to uci mode") {}
125 void execute(std::string const& args) override;
126};
127
129public:
130 cmd_xboard() : engineUserCommand("xboard", "go to xboard mode") {}
131 void execute(std::string const& args) override;
132};
133
135public:
136 cmd_setoption() : UCIengineCommand("setoption", "set various options") {}
137 void execute(std::string const& args) override;
138};
139
141public:
142 cmd_isready() : UCIengineCommand("isready", "ask program if ready") {}
143 void execute(std::string const& args) override;
144};
145
147public:
148 cmd_position() : UCIengineCommand("position", "set-up board") {}
149 void execute(std::string const& args) override;
150};
151
152class cmd_go : public UCIengineCommand {
153public:
154 cmd_go() : UCIengineCommand("go", "start searching") {}
155 void execute(std::string const& args) override;
156};
157
159public:
160 cmd_stop() : engineUserCommand("stop", "stop searching") {}
161 void execute(std::string const& args) override;
162};
163
165public:
166 cmd_ponderhit() : dummyEngineCommand("ponderhit", "start search from ponderhit") {}
167};
168
170public:
171 cmd_ucinewgame() : UCIengineCommand("ucinewgame", "initialize new game") {}
172 void execute(std::string const& args) override;
173};
174
176public:
177 cmd_exit() : Xboard2engineCommand("exit", "exit analyze mode") {}
178};
179
181public:
182 cmd_debug() : engineUserCommand("debug", "various debug commands, type 'debug help' for more information") {}
183 void execute(std::string const& args) override;
184};
185
187public:
188 cmd_bench() : engineUserCommand("bench", "run bench command") {}
189 void execute(std::string const& args) override;
190};
191
193public:
194 cmd_perft() : engineUserCommand("perft", "run perft command") {}
195 void execute(std::string const& args) override;
196};
197
199public:
200 cmd_epd() : engineUserCommand("epd", "file|pos [-sts|-perf] parse epd file or position") {}
201 void execute(std::string const& args) override;
202};
203
205public:
206 cmd_epdpos() : engineUserCommand("epdpos", "parse epd position (deprecated)") {}
207 void execute(std::string const& args) override;
208};
209
210class cmd_ls : public engineUserCommand {
211public:
212 cmd_ls() : engineUserCommand("ls", "[pattern|subdir/] list content of directory") {}
213 void execute(std::string const& args) override;
214};
215
217public:
218 cmd_execat() : engineUserCommand("@", "execute command file") {}
219 void execute(std::string const& args) override;
220};
221
223public:
224 cmd_exec() : engineUserCommand("exec", "execute command file (alternative to @)") {}
225 void execute(std::string const& args) override;
226};
227
229public:
230 cmd_about() : engineUserCommand("about", "prints about message") {}
231 void execute(std::string const& args) override;
232};
233
235public:
236 cmd_export() : dummyEngineCommand("export", "export in standard PGN format") {}
237};
238
240public:
241 cmd_save() : engineUserCommand("save", "save game and all game information "
242 "(extended PGN)") {}
243 void execute(std::string const& args) override;
244};
245
247public:
248 cmd_game() : engineUserCommand("game", "display game and all game information "
249 "(extended PGN)") {}
250 void execute(std::string const& args) override;
251};
252
253class cmd_bd : public engineUserCommand {
254public:
255 cmd_bd() : engineUserCommand("bd", "show board") {}
256 void execute(std::string const& args) override;
257};
258
260public:
261 cmd_undo() : Xboard2engineCommand("undo", "undo last move, switches colour player to move") {}
262 void execute(std::string const& args) override;
263};
264
266public:
267 cmd_usage() : engineUserCommand("usage", "shows how to call the application") {}
268 void execute(std::string const& args) override;
269};
270
272public:
273 cmd_expect() : engineUserCommand("expect", "run next command in expect mode") {}
274 void execute(std::string const& args) override;
275};
276
278public:
279 cmd_new() : Xboard2engineCommand("new", "new game") {}
280 void execute(std::string const& args) override;
281};
282
284public:
285 cmd_setboard() : Xboard2engineCommand("setboard", "configure board") {}
286 void execute(std::string const& args) override;
287};
288
290public:
291 cmd_usermove() : Xboard2engineCommand("usermove", "apply coordmove to position") {}
292 void execute(std::string const& args) override;
293};
294
296public:
297 cmd_remove() : Xboard2engineCommand("remove", "undo last 2 moves") {}
298 void execute(std::string const& args) override;
299};
300
302public:
303 cmd_again() : engineUserCommand("again", "undo move and search again") {}
304 void execute(std::string const& args) override;
305};
306
308public:
309 cmd_protover() : Xboard2engineCommand("protover", "switch to xboard v2 mode") {}
310 void execute(std::string const& args) override;
311};
312
314public:
315 cmd_accepted() : dummyEngineCommand("accepted", "notify acceptance of feature") {}
316};
317
319public:
320 cmd_rejected() : dummyEngineCommand("rejected", "reject acceptance of feature") {}
321};
322
324public:
325 cmd_option() : Xboard2engineCommand("option", "allow to set various options eg. option alg=AB") {}
326 void execute(std::string const& args) override;
327};
328
330public:
331 cmd_playother() : Xboard2engineCommand("playother", "start engine for opponent side") {}
332 void execute(std::string const& args) override;
333};
334
336public:
337 cmd_force() : Xboard2engineCommand("force", "stop engine for both sides") {}
338 void execute(std::string const& args) override;
339};
340
342public:
343 cmd_level() : Xboard2engineCommand("level", "set level: moves time[:sec] increment") {}
344 void execute(std::string const& args) override;
345};
346
348public:
349 cmd_sd() : Xboard2engineCommand("sd", "set depth") {}
350 void execute(std::string const& args) override;
351};
352
354public:
355 cmd_fd() : Xboard2engineCommand("fd", "set fixed depth (e.g. mate in x)") {}
356 void execute(std::string const& args) override;
357};
358
360public:
361 cmd_st() : Xboard2engineCommand("st", "set exact time per move") {}
362 void execute(std::string const& args) override;
363};
364
366public:
367 cmd_time() : Xboard2engineCommand("time", "set remaining time") {}
368 void execute(std::string const& args) override;
369};
370
372public:
373 cmd_otim() : dummyEngineCommand("otim", "set remaining time opponent") {}
374};
375
377public:
378 cmd_ping() : Xboard2engineCommand("ping", "keep alive message") {}
379 void execute(std::string const& args) override;
380};
381
383public:
384 cmd_post() : Xboard2engineCommand("post", "activate search output") {}
385 void execute(std::string const& args) override;
386};
387
389public:
390 cmd_nopost() : Xboard2engineCommand("nopost", "deactivate search output") {}
391 void execute(std::string const& args) override;
392};
393
395public:
396 cmd_easy() : Xboard1engineCommand("easy", "set ponder off") {}
397 void execute(std::string const& args) override;
398};
399
401public:
402 cmd_hard() : Xboard1engineCommand("hard", "set ponder on (unsupported)") {}
403 void execute(std::string const& args) override;
404};
405
407public:
408 cmd_random() : Xboard2engineCommand("random", "toggle random mode") {}
409 void execute(std::string const& args) override;
410};
411
413public:
414 cmd_computer() : Xboard1engineCommand("computer", "indicate opponent is computer") {}
415 void execute(std::string const& args) override;
416};
417
419public:
420 cmd_questionmark() : Xboard2engineCommand("?", "stop searching") {}
421 void execute(std::string const& args) override;
422};
423
425public:
426 cmd_white() : dummyEngineCommand("white", "white to move, engine plays "
427 "black, stops clocks") {}
428};
429
431public:
432 cmd_black() : dummyEngineCommand("black", "black to move, engine plays "
433 "white, stops clocks") {}
434};
435
437public:
438 cmd_dot() : dummyEngineCommand(".", "end edit command") {}
439};
440
442public:
443 cmd_result() : dummyEngineCommand("result", "inform engine of result") {}
444};
445
447public:
448 /// @todo get values dynamically
450 "set algorithm: Random|StaticEval|BruteForce|SearchIterativeBF|"
451 "AB|ABFS|ABFH") {}
452 void execute(std::string const& args) override;
453};
454
456public:
458 "give name of opponent") {}
459 void execute(std::string const& args) override;
460};
461
463public:
465 "return info about engine") {}
466 void execute(std::string const& args) override;
467};
468
470public:
472 "give name of opponent") {}
473 void execute(std::string const& args) override;
474};
475
477public:
478 cmd_info() : engineUserCommand("info", "print info on program") {}
479 void execute(std::string const& args) override;
480};
481
483public:
484 /// @todo get values dynamically
486 "set evaluation type: PiecesOnly|StaticBoard|PositionalBoard") {}
487 void execute(std::string const& args) override;
488};
489
491public:
492 cmd_eval() : engineUserCommand("eval", "return position evaluation") {}
493 void execute(std::string const& args) override;
494};
495
496#endif // defined USERCMD_H
497
498// eof
Sub-class to react uniformly on UCI interface specific stuff.
Definition usercmd.h:56
~UCIengineCommand() override
Definition usercmd.cpp:37
~UCIengineOption() override
Definition usercmd.cpp:47
Sub-class to react uniformly on Xboard v1 interface specific stuff.
Definition usercmd.h:70
~Xboard1engineCommand() override
Definition usercmd.cpp:57
Sub-class to react uniformly on Xboard v2 interface specific stuff.
Definition usercmd.h:78
~Xboard2engineCommand() override
Definition usercmd.cpp:66
void execute(std::string const &args) override
Definition usercmd.cpp:920
void execute(std::string const &args) override
Definition usercmd.cpp:924
void execute(std::string const &args) override
Definition usercmd.cpp:429
cmd_about()
Definition usercmd.h:230
void execute(std::string const &args) override
Definition usercmd.cpp:750
cmd_again()
Definition usercmd.h:303
cmd_alg()
Definition usercmd.h:449
void execute(std::string const &args) override
Definition usercmd.cpp:910
void execute(std::string const &args) override
Definition usercmd.cpp:798
cmd_bd()
Definition usercmd.h:255
void execute(std::string const &args) override
Definition usercmd.cpp:477
cmd_bench()
Definition usercmd.h:188
void execute(std::string const &args) override
Definition usercmd.cpp:595
cmd_black()
Definition usercmd.h:432
void execute(std::string const &args) override
Definition usercmd.cpp:864
cmd_debug()
Definition usercmd.h:182
void execute(std::string const &args) override
Definition usercmd.cpp:529
cmd_dot()
Definition usercmd.h:438
cmd_easy()
Definition usercmd.h:396
void execute(std::string const &args) override
Definition usercmd.cpp:809
cmd_echo()
Definition usercmd.h:112
void execute(std::string const &args) override
Definition usercmd.cpp:504
cmd_epd()
Definition usercmd.h:200
void execute(std::string const &args) override
Parse epd position or epd file e.g.
Definition usercmd.cpp:651
void execute(std::string const &args) override
Parse epd position e.g.
Definition usercmd.cpp:689
void execute(std::string const &args) override
Definition usercmd.cpp:959
cmd_eval()
Definition usercmd.h:492
void execute(std::string const &args) override
Definition usercmd.cpp:915
void execute(std::string const &args) override
execute command file with exec command
Definition usercmd.cpp:499
cmd_exec()
Definition usercmd.h:224
void execute(std::string const &args) override
execute command file with @ command
Definition usercmd.cpp:486
cmd_exit()
Definition usercmd.h:177
void execute(std::string const &args) override
Definition usercmd.cpp:841
void execute(std::string const &args) override
Definition usercmd.cpp:1001
cmd_fd()
Definition usercmd.h:355
cmd_force()
Definition usercmd.h:337
void execute(std::string const &args) override
Definition usercmd.cpp:905
void execute(std::string const &args) override
Definition usercmd.cpp:793
cmd_game()
Definition usercmd.h:248
void execute(std::string const &args) override
Definition usercmd.cpp:695
cmd_go()
Definition usercmd.h:154
void execute(std::string const &args) override
Definition usercmd.cpp:814
cmd_hard()
Definition usercmd.h:402
implementation of single command
Definition usercmd.h:98
void execute(std::string const &args) override
Definition usercmd.cpp:418
cmd_help()
Definition usercmd.h:100
cmd_info()
Definition usercmd.h:478
void execute(std::string const &args) override
Definition usercmd.cpp:954
void execute(std::string const &args) override
check if engine still alive, doing delayed constructors
Definition usercmd.cpp:511
cmd_level()
Definition usercmd.h:343
void execute(std::string const &args) override
Definition usercmd.cpp:1006
void execute(std::string const &args) override
Definition usercmd.cpp:819
cmd_ls()
Definition usercmd.h:212
void execute(std::string const &args) override
Definition usercmd.cpp:930
cmd_name()
Definition usercmd.h:471
void execute(std::string const &args) override
Definition usercmd.cpp:846
cmd_new()
Definition usercmd.h:279
void execute(std::string const &args) override
Definition usercmd.cpp:1060
void execute(std::string const &args) override
Definition usercmd.cpp:936
cmd_otim()
Definition usercmd.h:373
cmd_perft()
Definition usercmd.h:194
void execute(std::string const &args) override
Definition usercmd.cpp:612
void execute(std::string const &args) override
check if engine still alive, doing delayed constructors
Definition usercmd.cpp:519
cmd_ping()
Definition usercmd.h:378
void execute(std::string const &args) override
Definition usercmd.cpp:900
void execute(std::string const &args) override
set start position, alternatives args = [fen 'fenstring' | startpos ] moves 'move1' ....
Definition usercmd.cpp:572
Definition usercmd.h:382
cmd_post()
Definition usercmd.h:384
void execute(std::string const &args) override
Definition usercmd.cpp:1055
void execute(std::string const &args) override
Definition usercmd.cpp:875
void execute(std::string const &args) override
Definition usercmd.cpp:778
void execute(std::string const &args) override
Definition usercmd.cpp:423
cmd_quit()
Definition usercmd.h:106
void execute(std::string const &args) override
Definition usercmd.cpp:858
void execute(std::string const &args) override
Definition usercmd.cpp:869
void execute(std::string const &args) override
Definition usercmd.cpp:788
cmd_save()
Definition usercmd.h:241
void execute(std::string const &args) override
Definition usercmd.cpp:996
cmd_sd()
Definition usercmd.h:349
void execute(std::string const &args) override
Definition usercmd.cpp:853
void execute(std::string const &args) override
Read setoption command.
Definition usercmd.cpp:537
cmd_st()
Definition usercmd.h:361
void execute(std::string const &args) override
Definition usercmd.cpp:1044
void execute(std::string const &args) override
Definition usercmd.cpp:783
cmd_stop()
Definition usercmd.h:160
void execute(std::string const &args) override
Definition usercmd.cpp:1049
cmd_time()
Definition usercmd.h:367
cmd_uci()
Definition usercmd.h:124
void execute(std::string const &args) override
Definition usercmd.cpp:447
void execute(std::string const &args) override
Definition usercmd.cpp:524
cmd_undo()
Definition usercmd.h:261
void execute(std::string const &args) override
Definition usercmd.cpp:804
void execute(std::string const &args) override
Definition usercmd.cpp:436
cmd_usage()
Definition usercmd.h:267
void execute(std::string const &args) override
Definition usercmd.cpp:756
cmd_white()
Definition usercmd.h:426
void execute(std::string const &args) override
Definition usercmd.cpp:471
command and parameters
Definition usercmd.h:35
cmdParam & operator=(cmdParam const &)=delete
~cmdParam()
Definition usercmd.cpp:88
cmdParam(cmdParam const &)=delete
cmdParam(cmdParam &&)=default
std::string m_command
Definition usercmd.h:48
cmdParam & operator=(cmdParam &&)=delete
std::string m_args
Definition usercmd.h:49
Do not react to command.
Definition usercmd.h:86
~dummyEngineCommand() override
Definition usercmd.cpp:76
void execute(std::string const &args UNUSED) override
Definition usercmd.h:91
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 const &)=delete
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(engineUserCommand const &)=delete
bool m_isImplemented
Definition usercmd.h:29