GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — cppchess_engine/ucioption.h at HandcraftedEngine · winapiadmin/cppchess_engine Expand file tree/ Copy pathucioption.hMore file actions 106 lines (80 loc) · 3.07 KB / Copy pathucioption.hFile metadata and controls106 lines (80 loc) · 3.07 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2025 The Stockfish developers (see AUTHORS file) Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Stockfish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef UCIOPTION_H_INCLUDED #define UCIOPTION_H_INCLUDED #include <cstddef> #include <functional> #include <iosfwd> #include <map> #include <optional> #include <string> namespace engine { // Define a custom comparator, because the UCI options should be // case-insensitive struct CaseInsensitiveLess { bool operator()(const std::string &, const std::string &) const; }; class OptionsMap; // The Option class implements each option as specified by the UCI protocol class Option { public: using OnChange = std::function<std::optional<std::string>(const Option &)>; Option(const OptionsMap *); Option(OnChange = nullptr); Option(bool v, OnChange = nullptr); Option(const char *v, OnChange = nullptr); Option(int v, int minv, int maxv, OnChange = nullptr); Option(const char *v, const char *cur, OnChange = nullptr); Option &operator=(const std::string &); operator int() const; operator std::string() const; bool operator==(const char *) const; bool operator!=(const char *) const; friend std::ostream &operator<<(std::ostream &, const OptionsMap &); int operator<<(const Option &) = delete; private: friend class OptionsMap; friend class Engine; friend class Tune; std::string defaultValue, currentValue, type; int min, max; size_t idx; OnChange on_change; const OptionsMap *parent = nullptr; }; class OptionsMap { public: using InfoListener = std::function<void(std::optional<std::string>)>; OptionsMap() = default; OptionsMap(const OptionsMap &) = delete; OptionsMap(OptionsMap &&) = delete; OptionsMap &operator=(const OptionsMap &) = delete; OptionsMap &operator=(OptionsMap &&) = delete; void add_info_listener(InfoListener &&); void setoption(std::istringstream &); const Option &operator[](const std::string &) const; void add(const std::string &, const Option &option); std::size_t count(const std::string &) const; private: friend class Engine; friend class Option; friend std::ostream &operator<<(std::ostream &, const OptionsMap &); // The options container is defined as a std::map using OptionsStore = std::map<std::string, Option, CaseInsensitiveLess>; OptionsStore options_map; InfoListener info; }; } // namespace engine #endif // #ifndef UCIOPTION_H_INCLUDED |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |