-/// UCIOption class implements an option as defined by UCI protocol
-class UCIOption {
-public:
- UCIOption() {} // Required by std::map::operator[]
- UCIOption(const char* v);
- UCIOption(bool v, std::string type = "check");
- UCIOption(int v, int min, int max);
+class Option;
+
+/// 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, Option, CaseInsensitiveLess> OptionsMap;
+
+/// Option class implements an option as defined by UCI protocol
+class Option {