Belofte version 2.2.0
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/**
12 * basic format for single command
13 */
15public:
16 engineUserCommand(std::string const& s, std::string const& h)
17 : m_name(s)
18 , m_hint(h)
19 {}
21 {}
22
23 // no copy or move ctor nor assignment defined
28
29 virtual void execute(std::string const& args);
30
31 // declared public as there is not much logic and to avoid getter/setter
32 std::string m_name;
33 std::string m_hint;
34 bool m_isImplemented = true;
35 bool m_isHidden = false;
36};
37
38/**
39 * command and parameters
40 */
41class cmdParam {
42public:
44 : m_command("")
45 , m_args("")
46 {}
48 {}
49
50 cmdParam(cmdParam&&) = default;
51
52 // no copy or move ctor nor assignment defined
53 cmdParam(cmdParam const&) = delete;
54 cmdParam& operator=(cmdParam const&) = delete;
56
57 // declared public as there is not much logic and to avoid getter/setter
58 std::string m_command;
59 std::string m_args;
60};
61
62//-----------------------------------------------------------------------
63
64/**
65 * Sub-class to react uniformly on UCI interface specific stuff
66 */
68public:
69 UCIengineCommand(std::string const& s, std::string const& h)
70 : engineUserCommand(s, h)
71 {}
73 {}
74};
75
77public:
78 UCIengineOption(std::string const& s, std::string const& h)
79 : UCIengineCommand(s, h)
80 {}
82 {}
83};
84
85/**
86 * Sub-class to react uniformly on Xboard v1 interface specific stuff
87 */
89public:
90 Xboard1engineCommand(std::string const& s, std::string const& h)
91 : engineUserCommand(s, h)
92 {}
94 {}
95};
96
97/**
98 * Sub-class to react uniformly on Xboard v2 interface specific stuff
99 */
101public:
102 Xboard2engineCommand(std::string const& s, std::string const& h)
103 : engineUserCommand(s, h)
104 {}
106 {}
107};
108
109/**
110 * Do not react to command
111 */
113public:
114 dummyEngineCommand(std::string const& s, std::string const& h)
115 : engineUserCommand(s, h)
116 { m_isImplemented = false; }
118 {}
119
120 void execute(std::string const& args UNUSED) override {}
121};
122
123//-----------------------------------------------------------------------
124
125/**
126 * implementation of single command
127 */
129public:
130 cmd_help() : engineUserCommand("help", "show help, ['command'] [--all/all] [unsupported] [hidden] for more complete lists")
131 {}
132 void execute(std::string const& args) override;
133};
134
136public:
137 cmd_quit() : engineUserCommand("quit", "exit application")
138 {}
139 void execute(std::string const& args) override;
140};
141
143public:
144 cmd_echo() : engineUserCommand("echo", "print line, mainly for batch operation")
145 {}
146 void execute(std::string const& args) override;
147};
148
150public:
151 cmd_belofte() : engineUserCommand("belofte", "go back to belofte mode")
152 {}
153 void execute(std::string const& args) override;
154};
155
157public:
158 cmd_uci() : engineUserCommand("uci", "go to uci mode")
159 {}
160 void execute(std::string const& args) override;
161};
162
164public:
165 cmd_xboard() : engineUserCommand("xboard", "go to xboard mode")
166 {}
167 void execute(std::string const& args) override;
168};
169
171public:
172 cmd_setoption() : UCIengineCommand("setoption", "set various options")
173 {}
174 void execute(std::string const& args) override;
175};
176
178public:
179 cmd_isready() : UCIengineCommand("isready", "ask program if ready")
180 {}
181 void execute(std::string const& args) override;
182};
183
185public:
186 cmd_position() : UCIengineCommand("position", "set-up board")
187 {}
188 void execute(std::string const& args) override;
189};
190
191class cmd_go : public UCIengineCommand {
192public:
193 cmd_go() : UCIengineCommand("go", "start searching uci: [wtime ms btime ms winc ms binc ms movestogo n]")
194 {}
195 void execute(std::string const& args) override;
196};
197
199public:
200 cmd_stop() : engineUserCommand("stop", "stop searching")
201 {}
202 void execute(std::string const& args) override;
203};
204
206public:
207 cmd_ponderhit() : dummyEngineCommand("ponderhit", "start search from ponderhit")
208 {}
209};
210
212public:
213 cmd_ucinewgame() : UCIengineCommand("ucinewgame", "initialize new game")
214 {}
215 void execute(std::string const& args) override;
216};
217
219public:
220 cmd_exit() : Xboard2engineCommand("exit", "exit analyze mode")
221 {}
222};
223
225public:
226 cmd_debug() : engineUserCommand("debug", "various debug commands, type 'debug help' for more information")
227 {}
228 void execute(std::string const& args) override;
229};
230
232public:
233 cmd_bench() : engineUserCommand("bench", "run bench command")
234 {}
235 void execute(std::string const& args) override;
236};
237
239public:
240 cmd_perft() : engineUserCommand("perft", "run perft command")
241 {}
242 void execute(std::string const& args) override;
243};
244
246public:
247 cmd_epd() : engineUserCommand("epd", "file|pos [-sts|-perf] parse epd file or position")
248 {}
249 void execute(std::string const& args) override;
250};
251
252/**
253 * Parse epd position
254 * @note use `epd pos` instead (with space)
255 */
257public:
258 cmd_epdpos() : engineUserCommand("epdpos", "parse epd position (deprecated)")
259 {}
260 void execute(std::string const& args) override;
261};
262
263class cmd_ls : public engineUserCommand {
264public:
265 cmd_ls() : engineUserCommand("ls", "[pattern|subdir/] list content of directory")
266 {}
267 void execute(std::string const& args) override;
268};
269
271public:
272 cmd_execat() : engineUserCommand("@", "execute command file")
273 {}
274 void execute(std::string const& args) override;
275};
276
278public:
279 cmd_exec() : engineUserCommand("exec", "execute command file (alternative to @)")
280 {}
281 void execute(std::string const& args) override;
282};
283
285public:
286 cmd_about() : engineUserCommand("about", "prints about message")
287 {}
288 void execute(std::string const& args) override;
289};
290
292public:
293 cmd_export() : engineUserCommand("export", "export to file in standard PGN format")
294 {}
295 void execute(std::string const& args) override;
296};
297
299public:
300 cmd_save() : engineUserCommand("save", "save game and all game information to file "
301 "(extended PGN)")
302 {}
303 void execute(std::string const& args) override;
304};
305
307public:
308 cmd_game() : engineUserCommand("game", "display game and game information "
309 "(standard or extended PGN)")
310 {}
311 void execute(std::string const& args) override;
312};
313
315public:
316 cmd_load() : engineUserCommand("load", "save game from PGN file ")
317 {}
318 void execute(std::string const& args) override;
319};
320
321class cmd_bd : public engineUserCommand {
322public:
323 cmd_bd() : engineUserCommand("bd", "show board")
324 {}
325 void execute(std::string const& args) override;
326};
327
329public:
330 cmd_undo() : Xboard2engineCommand("undo", "undo last move, switches colour player to move")
331 {}
332 void execute(std::string const& args) override;
333};
334
336public:
337 cmd_usage() : engineUserCommand("usage", "shows how to call the application")
338 {}
339 void execute(std::string const& args) override;
340};
341
343public:
344 cmd_expect() : engineUserCommand("expect", "run next command in expect mode")
345 {}
346 void execute(std::string const& args) override;
347};
348
350public:
351 cmd_new() : Xboard2engineCommand("new", "new game")
352 {}
353 void execute(std::string const& args) override;
354};
355
357public:
358 cmd_setboard() : Xboard2engineCommand("setboard", "configure board")
359 {}
360 void execute(std::string const& args) override;
361};
362
364public:
365 cmd_usermove() : Xboard2engineCommand("usermove", "apply coordmove to position")
366 {}
367 void execute(std::string const& args) override;
368};
369
371public:
372 cmd_remove() : Xboard2engineCommand("remove", "undo last 2 moves")
373 {}
374 void execute(std::string const& args) override;
375};
376
378public:
379 cmd_again() : engineUserCommand("again", "undo move and search again")
380 {}
381 void execute(std::string const& args) override;
382};
383
385public:
386 cmd_protover() : Xboard2engineCommand("protover", "switch to xboard v2 mode")
387 {}
388 void execute(std::string const& args) override;
389};
390
392public:
393 cmd_accepted() : dummyEngineCommand("accepted", "notify acceptance of feature")
394 {}
395};
396
398public:
399 cmd_rejected() : dummyEngineCommand("rejected", "reject acceptance of feature")
400 {}
401};
402
404public:
405 cmd_option() : Xboard2engineCommand("option", "allow to set various options eg. option alg=AB")
406 {}
407 void execute(std::string const& args) override;
408};
409
411public:
412 cmd_playother() : Xboard2engineCommand("playother", "start engine for opponent side")
413 {}
414 void execute(std::string const& args) override;
415};
416
418public:
419 cmd_force() : Xboard2engineCommand("force", "stop engine for both sides")
420 {}
421 void execute(std::string const& args) override;
422};
423
425public:
426 cmd_level() : Xboard2engineCommand("level", "set level: moves time[:sec] increment")
427 {}
428 void execute(std::string const& args) override;
429};
430
432public:
433 cmd_sd() : Xboard2engineCommand("sd", "set depth")
434 {}
435 void execute(std::string const& args) override;
436};
437
439public:
440 cmd_fd() : Xboard2engineCommand("fd", "set fixed depth (e.g. mate in x)")
441 {}
442 void execute(std::string const& args) override;
443};
444
446public:
447 cmd_st() : Xboard2engineCommand("st", "set exact time per move")
448 {}
449 void execute(std::string const& args) override;
450};
451
453public:
454 cmd_time() : Xboard2engineCommand("time", "set remaining time")
455 {}
456 void execute(std::string const& args) override;
457};
458
460public:
461 cmd_otim() : dummyEngineCommand("otim", "set remaining time opponent")
462 {}
463};
464
466public:
467 cmd_ping() : Xboard2engineCommand("ping", "keep alive message")
468 {}
469 void execute(std::string const& args) override;
470};
471
473public:
474 cmd_post() : Xboard2engineCommand("post", "activate search output")
475 {}
476 void execute(std::string const& args) override;
477};
478
480public:
481 cmd_nopost() : Xboard2engineCommand("nopost", "deactivate search output")
482 {}
483 void execute(std::string const& args) override;
484};
485
487public:
488 cmd_easy() : Xboard1engineCommand("easy", "set ponder off")
489 {}
490 void execute(std::string const& args) override;
491};
492
494public:
495 cmd_hard() : Xboard1engineCommand("hard", "set ponder on (unsupported)")
496 {}
497 void execute(std::string const& args) override;
498};
499
501public:
502 cmd_random() : Xboard2engineCommand("random", "toggle random mode")
503 {}
504 void execute(std::string const& args) override;
505};
506
508public:
509 cmd_computer() : Xboard1engineCommand("computer", "indicate opponent is computer")
510 {}
511 void execute(std::string const& args) override;
512};
513
515public:
516 cmd_questionmark() : Xboard2engineCommand("?", "stop searching")
517 {}
518 void execute(std::string const& args) override;
519};
520
522public:
523 /// @note white command is only valid for winboard 1 modes
524 cmd_white() : dummyEngineCommand("white", "white to move, engine plays "
525 "black, stops clocks")
526 {}
527};
528
530public:
531 /// @note black command is only valid for winboard 1 modes
532 cmd_black() : dummyEngineCommand("black", "black to move, engine plays "
533 "white, stops clocks")
534 {}
535};
536
538public:
539 cmd_dot() : dummyEngineCommand(".", "end edit command")
540 {}
541};
542
544public:
545 cmd_result() : dummyEngineCommand("result", "inform engine of result")
546 {}
547};
548
550public:
551 /// @todo get values dynamically
553 "set algorithm: Random|StaticEval|BruteForce|MiniMax|SearchIterativeBF|"
554 "AB|ABFS|ABFH")
555 {}
556 void execute(std::string const& args) override;
557};
558
560public:
562 "give name of opponent")
563 {}
564 void execute(std::string const& args) override;
565};
566
568public:
570 "return info about engine")
571 {}
572 void execute(std::string const& args) override;
573};
574
576public:
578 "give name of opponent")
579 {}
580 void execute(std::string const& args) override;
581};
582
584public:
585 cmd_info() : engineUserCommand("info", "print info on program")
586 {}
587 void execute(std::string const& args) override;
588};
589
591public:
592 /// @todo get values dynamically
594 "set evaluation type: None|PiecesOnly|StaticBoard|PositionalBoard")
595 {}
596 void execute(std::string const& args) override;
597};
598
600public:
601 cmd_eval() : engineUserCommand("eval", "return position evaluation")
602 {}
603 void execute(std::string const& args) override;
604};
605
606#endif // defined USERCMD_H
607
608// eof
UCIengineCommand(std::string const &s, std::string const &h)
Definition usercmd.h:69
~UCIengineCommand() override
Definition usercmd.h:72
~UCIengineOption() override
Definition usercmd.h:81
UCIengineOption(std::string const &s, std::string const &h)
Definition usercmd.h:78
~Xboard1engineCommand() override
Definition usercmd.h:93
Xboard1engineCommand(std::string const &s, std::string const &h)
Definition usercmd.h:90
~Xboard2engineCommand() override
Definition usercmd.h:105
Xboard2engineCommand(std::string const &s, std::string const &h)
Definition usercmd.h:102
void execute(std::string const &args) override
Definition usercmd.cpp:593
void execute(std::string const &args) override
Definition usercmd.cpp:597
void execute(std::string const &args) override
Definition usercmd.cpp:33
cmd_about()
Definition usercmd.h:286
void execute(std::string const &args) override
Definition usercmd.cpp:369
cmd_again()
Definition usercmd.h:379
cmd_alg()
Definition usercmd.h:552
void execute(std::string const &args) override
Definition usercmd.cpp:583
void execute(std::string const &args) override
Definition usercmd.cpp:470
cmd_bd()
Definition usercmd.h:323
void execute(std::string const &args) override
Definition usercmd.cpp:82
cmd_bench()
Definition usercmd.h:233
void execute(std::string const &args) override
Definition usercmd.cpp:208
cmd_black()
Definition usercmd.h:532
void execute(std::string const &args) override
Definition usercmd.cpp:537
cmd_debug()
Definition usercmd.h:226
void execute(std::string const &args) override
Definition usercmd.cpp:140
cmd_dot()
Definition usercmd.h:539
cmd_easy()
Definition usercmd.h:488
void execute(std::string const &args) override
Definition usercmd.cpp:482
cmd_echo()
Definition usercmd.h:144
void execute(std::string const &args) override
Definition usercmd.cpp:111
cmd_epd()
Definition usercmd.h:247
void execute(std::string const &args) override
Parse epd position or epd file e.g.
Definition usercmd.cpp:268
void execute(std::string const &args) override
Parse epd position e.g.
Definition usercmd.cpp:308
void execute(std::string const &args) override
Definition usercmd.cpp:632
cmd_eval()
Definition usercmd.h:601
void execute(std::string const &args) override
Definition usercmd.cpp:588
void execute(std::string const &args) override
execute command file with exec command
Definition usercmd.cpp:106
cmd_exec()
Definition usercmd.h:279
void execute(std::string const &args) override
execute command file with @ command
Definition usercmd.cpp:92
cmd_exit()
Definition usercmd.h:220
void execute(std::string const &args) override
Definition usercmd.cpp:514
void execute(std::string const &args) override
Definition usercmd.cpp:418
void execute(std::string const &args) override
Definition usercmd.cpp:684
cmd_fd()
Definition usercmd.h:440
cmd_force()
Definition usercmd.h:419
void execute(std::string const &args) override
Definition usercmd.cpp:578
void execute(std::string const &args) override
Definition usercmd.cpp:429
cmd_game()
Definition usercmd.h:308
void execute(std::string const &args) override
Definition usercmd.cpp:314
cmd_go()
Definition usercmd.h:193
void execute(std::string const &args) override
Definition usercmd.cpp:487
cmd_hard()
Definition usercmd.h:495
void execute(std::string const &args) override
Definition usercmd.cpp:21
cmd_help()
Definition usercmd.h:130
cmd_info()
Definition usercmd.h:585
void execute(std::string const &args) override
Definition usercmd.cpp:627
void execute(std::string const &args) override
check if engine still alive, doing delayed constructors
Definition usercmd.cpp:119
cmd_level()
Definition usercmd.h:426
void execute(std::string const &args) override
Definition usercmd.cpp:689
cmd_load()
Definition usercmd.h:316
void execute(std::string const &args) override
Definition usercmd.cpp:436
void execute(std::string const &args) override
Definition usercmd.cpp:492
cmd_ls()
Definition usercmd.h:265
void execute(std::string const &args) override
Definition usercmd.cpp:603
cmd_name()
Definition usercmd.h:577
void execute(std::string const &args) override
Definition usercmd.cpp:519
cmd_new()
Definition usercmd.h:351
void execute(std::string const &args) override
Definition usercmd.cpp:743
void execute(std::string const &args) override
Definition usercmd.cpp:609
cmd_otim()
Definition usercmd.h:461
cmd_perft()
Definition usercmd.h:240
void execute(std::string const &args) override
Definition usercmd.cpp:225
void execute(std::string const &args) override
check if engine still alive, doing delayed constructors
Definition usercmd.cpp:128
cmd_ping()
Definition usercmd.h:467
void execute(std::string const &args) override
Definition usercmd.cpp:573
void execute(std::string const &args) override
set start position, alternatives args = [fen 'fenstring' | startpos ] moves 'move1' ....
Definition usercmd.cpp:185
cmd_post()
Definition usercmd.h:474
void execute(std::string const &args) override
Definition usercmd.cpp:738
void execute(std::string const &args) override
Definition usercmd.cpp:548
void execute(std::string const &args) override
Definition usercmd.cpp:397
void execute(std::string const &args) override
Definition usercmd.cpp:26
cmd_quit()
Definition usercmd.h:137
void execute(std::string const &args) override
Definition usercmd.cpp:531
void execute(std::string const &args) override
Definition usercmd.cpp:542
void execute(std::string const &args) override
Definition usercmd.cpp:407
cmd_save()
Definition usercmd.h:300
void execute(std::string const &args) override
Definition usercmd.cpp:679
cmd_sd()
Definition usercmd.h:433
void execute(std::string const &args) override
Definition usercmd.cpp:526
void execute(std::string const &args) override
Read setoption command.
Definition usercmd.cpp:149
cmd_st()
Definition usercmd.h:447
void execute(std::string const &args) override
Definition usercmd.cpp:727
void execute(std::string const &args) override
Definition usercmd.cpp:402
cmd_stop()
Definition usercmd.h:200
void execute(std::string const &args) override
Definition usercmd.cpp:732
cmd_time()
Definition usercmd.h:454
cmd_uci()
Definition usercmd.h:158
void execute(std::string const &args) override
Definition usercmd.cpp:51
void execute(std::string const &args) override
Definition usercmd.cpp:133
cmd_undo()
Definition usercmd.h:330
void execute(std::string const &args) override
Definition usercmd.cpp:477
void execute(std::string const &args) override
Definition usercmd.cpp:40
cmd_usage()
Definition usercmd.h:337
void execute(std::string const &args) override
Definition usercmd.cpp:375
cmd_white()
Definition usercmd.h:524
void execute(std::string const &args) override
Definition usercmd.cpp:76
cmdParam & operator=(cmdParam const &)=delete
~cmdParam()
Definition usercmd.h:47
cmdParam(cmdParam const &)=delete
cmdParam(cmdParam &&)=default
cmdParam()
Definition usercmd.h:43
std::string m_command
Definition usercmd.h:58
cmdParam & operator=(cmdParam &&)=delete
std::string m_args
Definition usercmd.h:59
~dummyEngineCommand() override
Definition usercmd.h:117
dummyEngineCommand(std::string const &s, std::string const &h)
Definition usercmd.h:114
void execute(std::string const &args UNUSED) override
Definition usercmd.h:120
std::string m_hint
Definition usercmd.h:33
engineUserCommand & operator=(engineUserCommand const &)=delete
engineUserCommand & operator=(engineUserCommand &&)=delete
virtual ~engineUserCommand()
Definition usercmd.h:20
virtual void execute(std::string const &args)
Definition usercmd.cpp:12
engineUserCommand(engineUserCommand &&)=delete
std::string m_name
Definition usercmd.h:32
engineUserCommand(std::string const &s, std::string const &h)
Definition usercmd.h:16
engineUserCommand(engineUserCommand const &)=delete
bool m_isImplemented
Definition usercmd.h:34