21#ifndef SCID_ECO_BOOK_H
22#define SCID_ECO_BOOK_H
25#include "scid/eco/code.h"
30#include <unordered_map>
39using Error = scid::core::errorT;
42inline constexpr Error OK = scid::core::OK;
43inline constexpr Error ERROR_FileOpen = scid::core::ERROR_FileOpen;
44inline constexpr Error ERROR_Corrupt = scid::core::ERROR_Corrupt;
53 std::string_view code;
54 std::string_view name;
55 std::string_view moves;
60 std::unique_ptr<char[]> compactStr;
61 std::unique_ptr<char[]> comment;
63 BookData(
char* compact,
char* comm)
64 : compactStr(compact), comment(comm) {}
67 std::unordered_multimap<unsigned, BookData> pos_;
68 std::vector<const char*> comments_;
69 unsigned lineCount_ = 0;
70 unsigned leastMaterial_ = 32;
83 static std::pair<Error, Book>
load(
const std::filesystem::path& path);
99 std::vector<Line> linesWithPrefix(std::string_view ecoPrefix)
const;
101 unsigned lineCount()
const {
return lineCount_; }
102 unsigned fewestPieces()
const {
return leastMaterial_; }
103 size_t size()
const {
return pos_.size(); }
A Book is a collection of chess positions, each with the corresponding ECO code, a mnemonic name,...
Definition book.h:50
Code findEco(const Position &position) const
Retrieve the ECO code of a position.
static std::pair< Error, Book > load(const std::filesystem::path &path)
Read a file with a list of ECO codes and creates a Book object.
std::string_view findEcoString(const Position &position) const
Retrieve an ECO string containing the ECO code and the mnemonic name.
Shared status and error codes.