bool VkData::LoadCSV(const std::string & f) { S_LOG("LoadCSV"); using namespace csv; Parser parser; Filter filter; parser.SetFilter(&filter); static const Parser::Line fields{"Date", "Criterion", "Parameter 1", "Parameter 2", "Value"}; filter.AddRequiredFields(fields); filter.AddPossibleValue("Criterion", "members"); filter.AddPossibleValues("Parameter 1",{"New members", "Members lost"}); if (!parser.Load(f)) { log(Log::error) << "VkData::LoadCSV " << "Failed to load file" << Log::endl; return false; } else { if (!parser.FindFields(fields)) { auto &s = log(Log::error) << "Wrong fields, should be: "; Parser::PrintFields(fields, s); s << Log::endl; return false; } else { ParseCSV(parser); return true; } } }