// // Created by erki on 28.02.21. // #include "OperationStorage.hpp" #include #include #include #include void to_json(nlohmann::json& j, const OperationStorage::Log& l) { j = nlohmann::json{ {"operation", l.operation}, {"line", l.line}, {"operand_lhs", l.operand_lhs}, {"operand_rhs", l.operand_rhs}, {"operand_result", l.operand_result} }; } void from_json(const nlohmann::json& j, OperationStorage::Log& l) { j.at("operation").get_to(l.operation); j.at("line").get_to(l.line); j.at("operand_lhs").get_to(l.operand_lhs); j.at("operand_rhs").get_to(l.operand_rhs); j.at("operand_result").get_to(l.operand_result); } OperationStorage::OperationStorage(const std::string& output_filename) : _output_filename(output_filename) { } OperationStorage::~OperationStorage() { _dumpToFile(); } void OperationStorage::pushOperation(const std::string& filename, const Log& op) { auto it = _operations.find(filename); if (it == _operations.end()) it = _operations.insert({ filename, {} }).first; it->second.push_back(op); } const std::unordered_map>& OperationStorage::getOperations() const { return _operations; } void OperationStorage::_dumpToFile() { nlohmann::json json = _operations; std::ofstream file(_output_filename); file << json; }