From: Marco Costalba Date: Sat, 18 Aug 2012 10:23:18 +0000 (+0100) Subject: Retire struct OptionsMap X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=b011818917fc6fddb3b4e4210f4a408eb4779d59;hp=bc4de9edaec0a618279092abbf465f47720736b8 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 --- diff --git a/src/main.cpp b/src/main.cpp index 6e889883..e7540f9c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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(); diff --git a/src/ucioption.cpp b/src/ucioption.cpp index 58f3dbc0..7c38283c 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -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); diff --git a/src/ucioption.h b/src/ucioption.h index 0be8c7e3..b78bf6fd 100644 --- a/src/ucioption.h +++ b/src/ucioption.h @@ -25,7 +25,15 @@ #include #include -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 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 { - OptionsMap(); -}; - -extern std::ostream& operator<<(std::ostream&, const OptionsMap&); extern OptionsMap Options; +namespace UCIOptions { void init(OptionsMap&); } + #endif // !defined(UCIOPTION_H_INCLUDED)