#ifndef READING_MACHINE__H #define READING_MACHINE__H #include <filesystem> #include <memory> #include "Classifier.hpp" #include "Strategy.hpp" #include "Dict.hpp" class ReadingMachine { public : static inline const std::string defaultMachineFilename = "machine.rm"; static inline const std::string defaultModelFilename = "{}.pt"; static inline const std::string defaultDictFilename = "{}.dict"; static inline const std::string defaultDictName = "_default_"; private : std::string name; std::filesystem::path path; std::unique_ptr<Classifier> classifier; std::unique_ptr<Strategy> strategy; std::map<std::string, Dict> dicts; std::set<std::string> predicted; private : void readFromFile(std::filesystem::path path); public : ReadingMachine(std::filesystem::path path); ReadingMachine(std::filesystem::path path, std::vector<std::filesystem::path> models, std::vector<std::filesystem::path> dicts); TransitionSet & getTransitionSet(); Strategy & getStrategy(); Dict & getDict(const std::string & state); std::map<std::string, Dict> & getDicts(); Classifier * getClassifier(); void save() const; bool isPredicted(const std::string & columnName) const; const std::set<std::string> & getPredicted() const; void trainMode(bool isTrainMode); }; #endif