mirror of
https://github.com/sockspls/badfish
synced 2025-05-02 01:29:36 +00:00
Restore original UCI option printing order
For each option store its index so to be printed according to insertion order. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
f0701e2b0f
commit
ebb0f31928
1 changed files with 30 additions and 15 deletions
|
@ -22,6 +22,7 @@
|
||||||
//// Includes
|
//// Includes
|
||||||
////
|
////
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -56,15 +57,18 @@ namespace {
|
||||||
|
|
||||||
struct Option {
|
struct Option {
|
||||||
|
|
||||||
std::string defaultValue, currentValue;
|
std::string name, defaultValue, currentValue;
|
||||||
OptionType type;
|
OptionType type;
|
||||||
int minValue, maxValue;
|
int minValue, maxValue;
|
||||||
ComboValues comboValues;
|
ComboValues comboValues;
|
||||||
|
size_t idx;
|
||||||
|
|
||||||
Option();
|
Option();
|
||||||
Option(const std::string& defaultValue, OptionType = STRING);
|
Option(const std::string& defaultValue, OptionType = STRING);
|
||||||
Option(bool defaultValue, OptionType = CHECK);
|
Option(bool defaultValue, OptionType = CHECK);
|
||||||
Option(int defaultValue, int minValue, int maxValue);
|
Option(int defaultValue, int minValue, int maxValue);
|
||||||
|
|
||||||
|
bool operator<(const Option& o) { return this->idx < o.idx; }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::map<std::string, Option> Options;
|
typedef std::map<std::string, Option> Options;
|
||||||
|
@ -142,6 +146,10 @@ namespace {
|
||||||
o["MultiPV"] = Option(1, 1, 500);
|
o["MultiPV"] = Option(1, 1, 500);
|
||||||
o["UCI_ShowCurrLine"] = Option(false);
|
o["UCI_ShowCurrLine"] = Option(false);
|
||||||
o["UCI_Chess960"] = Option(false);
|
o["UCI_Chess960"] = Option(false);
|
||||||
|
|
||||||
|
// Any option should know its name so to be easily printed
|
||||||
|
for (Options::iterator it = o.begin(); it != o.end(); ++it)
|
||||||
|
it->second.name = it->first;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
@ -240,23 +248,30 @@ void print_uci_options() {
|
||||||
"spin", "combo", "check", "string", "button"
|
"spin", "combo", "check", "string", "button"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Build up a vector out of the options map and sort it according to idx
|
||||||
|
// field, that is the chronological insertion order in options map.
|
||||||
|
std::vector<Option> vec;
|
||||||
for (Options::const_iterator it = options.begin(); it != options.end(); ++it)
|
for (Options::const_iterator it = options.begin(); it != options.end(); ++it)
|
||||||
|
vec.push_back(it->second);
|
||||||
|
|
||||||
|
std::sort(vec.begin(), vec.end());
|
||||||
|
|
||||||
|
for (std::vector<Option>::const_iterator it = vec.begin(); it != vec.end(); ++it)
|
||||||
{
|
{
|
||||||
const Option& o = it->second;
|
std::cout << "option name " << it->name
|
||||||
std::cout << "option name " << it->first
|
<< " type " << optionTypeName[it->type];
|
||||||
<< " type " << optionTypeName[o.type];
|
|
||||||
|
|
||||||
if (o.type != BUTTON)
|
if (it->type != BUTTON)
|
||||||
{
|
{
|
||||||
std::cout << " default " << o.defaultValue;
|
std::cout << " default " << it->defaultValue;
|
||||||
|
|
||||||
if (o.type == SPIN)
|
if (it->type == SPIN)
|
||||||
std::cout << " min " << o.minValue
|
std::cout << " min " << it->minValue
|
||||||
<< " max " << o.maxValue;
|
<< " max " << it->maxValue;
|
||||||
|
|
||||||
else if (o.type == COMBO)
|
else if (it->type == COMBO)
|
||||||
for (ComboValues::const_iterator itc = o.comboValues.begin();
|
for (ComboValues::const_iterator itc = it->comboValues.begin();
|
||||||
itc != o.comboValues.end(); ++itc)
|
itc != it->comboValues.end(); ++itc)
|
||||||
std::cout << " var " << *itc;
|
std::cout << " var " << *itc;
|
||||||
}
|
}
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
@ -337,12 +352,12 @@ namespace {
|
||||||
Option::Option() {} // To allow insertion in a std::map
|
Option::Option() {} // To allow insertion in a std::map
|
||||||
|
|
||||||
Option::Option(const std::string& def, OptionType t)
|
Option::Option(const std::string& def, OptionType t)
|
||||||
: defaultValue(def), currentValue(def), type(t), minValue(0), maxValue(0) {}
|
: defaultValue(def), currentValue(def), type(t), idx(options.size()), minValue(0), maxValue(0) {}
|
||||||
|
|
||||||
Option::Option(bool def, OptionType t)
|
Option::Option(bool def, OptionType t)
|
||||||
: defaultValue(stringify(def)), currentValue(stringify(def)), type(t), minValue(0), maxValue(0) {}
|
: defaultValue(stringify(def)), currentValue(stringify(def)), type(t), idx(options.size()), minValue(0), maxValue(0) {}
|
||||||
|
|
||||||
Option::Option(int def, int minv, int maxv)
|
Option::Option(int def, int minv, int maxv)
|
||||||
: defaultValue(stringify(def)), currentValue(stringify(def)), type(SPIN), minValue(minv), maxValue(maxv) {}
|
: defaultValue(stringify(def)), currentValue(stringify(def)), type(SPIN), idx(options.size()), minValue(minv), maxValue(maxv) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue