diff --git a/src/configFile.cpp b/src/configFile.cpp index 78072d1..dc7bc40 100644 --- a/src/configFile.cpp +++ b/src/configFile.cpp @@ -7,12 +7,16 @@ Config cf::openConfig() { if (file.is_open()) { std::string line; line = cf::getLine(&file); - int8_t nh = std::stoi(line); - std::string t = cf::getLine(&file); - Config config = Config(nh, t); + if (line == "") { + return Config(0, ""); + } + int8_t numHilos = std::stoi(line); + std::string tiempo = cf::getLine(&file); + if (tiempo == "") { + return Config(0, ""); + } file.close(); - // Config *ptr = &config; - return config; + return Config(numHilos, tiempo); } else { return Config(0, ""); } @@ -22,23 +26,33 @@ void cf::closeConfig(Config *config) { delete config; } std::string cf::getLine(std::ifstream *file) { std::string line; - std::getline(*file, line); + if (file->peek() != EOF) { + std::getline(*file, line); - if (line[0] == '#' || line == "") { - return cf::getLine(file); + // Mientras se leen las lineas se comprueban que no estén vacias + // o sean comentarios de manera que se devuelva el primera línea + // correcta. De esta manera se puede cambiar el documento añadiendo + // cuantos comentarios o líneas vacias se desee y dinámicamente se + // buscará la línea deseada. + + if (line[0] == '#' || line == "") { + return cf::getLine(file); + } + + line = line.substr(line.find("= ") + 1, line.length()); + return line; + } else { + return ""; } - - line = line.substr(line.find("= ") + 1, line.length()); - return line; } void cf::saveConfig(Config *config) { std::ofstream file(g_configFile); - file << "# Archivo autogenerado por Stress_UI\n"; - file << "# No editar manualmente a no ser que se sepa lo que se hace\n"; - file << "\n"; - file << "Número de hilos\t\t= " << std::to_string(config->getNumHilos()) - << "\n"; + file << "# Archivo autogenerado por Stress_UI" << std::endl; + file << "# No editar manualmente a no ser que se sepa lo que se hace"; + file << std::endl << std::endl; + file << "Número de hilos\t\t= " << std::to_string(config->getNumHilos()); + file << std::endl; file << "Tiempo de ejecución\t= " << config->getTiempo(); // std::string str = "shit"; // file << str;