// function that reads in data from screen into data maps static bool readFromScreen(DataManager<T>& data) { bool finished{false}; while (!finished) { // declare experiment object Experiment<T> experiment; try { // call read from screen function experiment.readFromScreen(); } catch (const std::invalid_argument& e) { ErrorMsg::print(e.what()); return false; } // insert data into maps data.insertExperiment(experiment); ScreenMsg::print("Type <y> to add another experiment "); ScreenMsg::print("or any other letter to finish >> "); std::string reply{getInput<std::string>()}; // convert to uppercase letters in case user used upper case std::transform(reply.begin(), reply.end(), reply.begin(), ::toupper); // check reply if (reply == "Y") { continue; } else { finished = true; break; } } return true; }
// function that reads in data from file into data maps static bool readFromFile(DataManager<T>& data, const std::string& dataPath) { // declare vector for saving file names std::vector<std::string> fileList; try { // get file list getFileList(fileList, dataPath); // count number of files size_t noOfFiles{fileList.size()}; // loop through all files for (size_t i{}; i < noOfFiles; ++i) { // declare experiment object Experiment<T> userExperiment; // pass file name to experiment read from file function userExperiment.readFromFile(fileList[i]); // insert data into maps data.insertExperiment(userExperiment); } } catch (const std::invalid_argument& e) { ErrorMsg::print(e.what()); return false; } return true; }