mirror of
https://github.com/sockspls/badfish
synced 2025-05-02 17:49:35 +00:00
Retire struct OptionsMap
Directly use the underlying std::map instead and avoid a useless inheritance. As a nice side-effect Options global object has now a default c'tor avoiding possible issues with globals initializations. Suggested by Rein Halbersma. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
bc4de9edae
commit
b011818917
3 changed files with 16 additions and 19 deletions
|
@ -28,13 +28,14 @@
|
||||||
#include "tt.h"
|
#include "tt.h"
|
||||||
#include "ucioption.h"
|
#include "ucioption.h"
|
||||||
|
|
||||||
extern void uci_loop(const std::string&);
|
void uci_loop(const std::string&);
|
||||||
extern void kpk_bitbase_init();
|
void kpk_bitbase_init();
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
std::cout << engine_info() << std::endl;
|
std::cout << engine_info() << std::endl;
|
||||||
|
|
||||||
|
UCIOptions::init(Options);
|
||||||
Bitboards::init();
|
Bitboards::init();
|
||||||
Position::init();
|
Position::init();
|
||||||
kpk_bitbase_init();
|
kpk_bitbase_init();
|
||||||
|
|
|
@ -49,15 +49,14 @@ bool CaseInsensitiveLess::operator() (const string& s1, const string& s2) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// OptionsMap c'tor initializes the UCI options to their hard coded default
|
/// UCIOptions::init() initializes the UCI options to their hard coded default
|
||||||
/// values and initializes the default value of "Threads" and "Min Split Depth"
|
/// values and initializes the default value of "Threads" and "Min Split Depth"
|
||||||
/// parameters according to the number of CPU cores detected.
|
/// parameters according to the number of CPU cores detected.
|
||||||
|
|
||||||
OptionsMap::OptionsMap() {
|
void UCIOptions::init(OptionsMap& o) {
|
||||||
|
|
||||||
int cpus = std::min(cpu_count(), MAX_THREADS);
|
int cpus = std::min(cpu_count(), MAX_THREADS);
|
||||||
int msd = cpus < 8 ? 4 : 7;
|
int msd = cpus < 8 ? 4 : 7;
|
||||||
OptionsMap& o = *this;
|
|
||||||
|
|
||||||
o["Use Debug Log"] = UCIOption(false, on_logger);
|
o["Use Debug Log"] = UCIOption(false, on_logger);
|
||||||
o["Use Search Log"] = UCIOption(false);
|
o["Use Search Log"] = UCIOption(false);
|
||||||
|
|
|
@ -25,7 +25,15 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
struct OptionsMap;
|
class UCIOption;
|
||||||
|
|
||||||
|
/// Custom comparator because UCI options should be case insensitive
|
||||||
|
struct CaseInsensitiveLess {
|
||||||
|
bool operator() (const std::string&, const std::string&) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Our options container is actually a std::map
|
||||||
|
typedef std::map<std::string, UCIOption, CaseInsensitiveLess> OptionsMap;
|
||||||
|
|
||||||
/// UCIOption class implements an option as defined by UCI protocol
|
/// UCIOption class implements an option as defined by UCI protocol
|
||||||
class UCIOption {
|
class UCIOption {
|
||||||
|
@ -59,19 +67,8 @@ private:
|
||||||
Fn* on_change;
|
Fn* on_change;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/// Custom comparator because UCI options should be case insensitive
|
|
||||||
struct CaseInsensitiveLess {
|
|
||||||
bool operator() (const std::string&, const std::string&) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/// Our options container is actually a map with a customized c'tor
|
|
||||||
struct OptionsMap : public std::map<std::string, UCIOption, CaseInsensitiveLess> {
|
|
||||||
OptionsMap();
|
|
||||||
};
|
|
||||||
|
|
||||||
extern std::ostream& operator<<(std::ostream&, const OptionsMap&);
|
|
||||||
extern OptionsMap Options;
|
extern OptionsMap Options;
|
||||||
|
|
||||||
|
namespace UCIOptions { void init(OptionsMap&); }
|
||||||
|
|
||||||
#endif // !defined(UCIOPTION_H_INCLUDED)
|
#endif // !defined(UCIOPTION_H_INCLUDED)
|
||||||
|
|
Loading…
Add table
Reference in a new issue