#ifndef BASECONFIG__H #define BASECONFIG__H #include <string> #include <vector> #include <unordered_map> #include <boost/flyweight.hpp> #include "util.hpp" #include "Config.hpp" class SubConfig; class BaseConfig : public Config { private : std::vector<std::string> colIndex2Name; std::unordered_map<std::string, int> colName2Index; Utf8String rawInputUtf8; private : void readMCD(std::string_view mcdFilename); void readRawInput(std::string_view rawFilename); void readTSVInput(std::string_view tsvFilename); public : BaseConfig(std::string_view mcdFilename, std::string_view tsvFilename, std::string_view rawFilename); std::size_t getNbColumns() const override; std::size_t getFirstLineIndex() const override; std::size_t getColIndex(const std::string & colName) const override; bool hasColIndex(const std::string & colName) const override; const std::string & getColName(int colIndex) const override; friend SubConfig; }; #endif