Async UCI options actions

Introduce 'on change' actions that are triggered as soon as
an UCI option is changed by the GUI. This allows to set hash
size before to start the game, helpful especially on very fast
TC and big TT size.

As a side effect remove the 'button' type option, that now
is managed as a 'check' type.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2012-03-04 17:57:01 +01:00
parent 482b5b7ece
commit 2ef5b4066e
5 changed files with 32 additions and 20 deletions

View File

@@ -29,11 +29,14 @@ struct OptionsMap;
/// UCIOption class implements an option as defined by UCI protocol
class UCIOption {
typedef void (Fn)(UCIOption&);
public:
UCIOption() {} // Required by std::map::operator[]
UCIOption(const char* v);
UCIOption(bool v, std::string type = "check");
UCIOption(int v, int min, int max);
UCIOption(const char* v, Fn* = NULL);
UCIOption(bool v, Fn* = NULL);
UCIOption(int v, int min, int max, Fn* = NULL);
void operator=(const std::string& v);
void operator=(bool v) { *this = std::string(v ? "true" : "false"); }
@@ -54,6 +57,7 @@ private:
std::string defaultValue, currentValue, type;
int min, max;
size_t idx;
Fn* on_change_action;
};