mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 17:19:36 +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 "ucioption.h"
|
||||
|
||||
extern void uci_loop(const std::string&);
|
||||
extern void kpk_bitbase_init();
|
||||
void uci_loop(const std::string&);
|
||||
void kpk_bitbase_init();
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
|
||||
std::cout << engine_info() << std::endl;
|
||||
|
||||
UCIOptions::init(Options);
|
||||
Bitboards::init();
|
||||
Position::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"
|
||||
/// 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 msd = cpus < 8 ? 4 : 7;
|
||||
OptionsMap& o = *this;
|
||||
|
||||
o["Use Debug Log"] = UCIOption(false, on_logger);
|
||||
o["Use Search Log"] = UCIOption(false);
|
||||
|
|
|
@ -25,7 +25,15 @@
|
|||
#include <map>
|
||||
#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
|
||||
class UCIOption {
|
||||
|
@ -59,19 +67,8 @@ private:
|
|||
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;
|
||||
|
||||
namespace UCIOptions { void init(OptionsMap&); }
|
||||
|
||||
#endif // !defined(UCIOPTION_H_INCLUDED)
|
||||
|
|
Loading…
Add table
Reference in a new issue