1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 08:43:09 +00:00

UCI buttons don't need a value

Take advantage of this to further simplify the code.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2012-03-17 21:18:02 +01:00
parent 9b26356347
commit 55376219b7
3 changed files with 10 additions and 17 deletions

View file

@ -175,14 +175,10 @@ namespace {
while (is >> token)
value += string(" ", !value.empty()) + token;
if (!Options.count(name))
cout << "No such option: " << name << endl;
else if (value.empty()) // UCI buttons don't have a value
Options[name] = true;
else
if (Options.count(name))
Options[name] = value;
else
cout << "No such option: " << name << endl;
}

View file

@ -122,7 +122,7 @@ UCIOption::UCIOption(bool v, Fn* f) : type("check"), min(0), max(0), idx(Options
{ defaultValue = currentValue = (v ? "true" : "false"); }
UCIOption::UCIOption(Fn* f) : type("button"), min(0), max(0), idx(Options.size()), on_change(f)
{ defaultValue = currentValue = "false"; }
{}
UCIOption::UCIOption(int v, int minv, int maxv, Fn* f) : type("spin"), min(minv), max(maxv), idx(Options.size()), on_change(f)
{ std::ostringstream ss; ss << v; defaultValue = currentValue = ss.str(); }
@ -136,16 +136,14 @@ void UCIOption::operator=(const string& v) {
assert(!type.empty());
if ( !v.empty()
&& (type == "check" || type == "button") == (v == "true" || v == "false")
&& (type != "spin" || (atoi(v.c_str()) >= min && atoi(v.c_str()) <= max)))
if ( (type == "button" || !v.empty())
&& (type != "check" || (v == "true" || v == "false"))
&& (type != "spin" || (atoi(v.c_str()) >= min && atoi(v.c_str()) <= max)))
{
currentValue = v;
if (type != "button")
currentValue = v;
if (on_change)
(*on_change)(*this);
if (type == "button")
currentValue = "false";
}
}

View file

@ -39,10 +39,9 @@ public:
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"); }
operator int() const {
assert(type == "check" || type == "button" || type == "spin");
assert(type == "check" || type == "spin");
return (type == "spin" ? atoi(currentValue.c_str()) : currentValue == "true");
}