diff --git a/src/msr2data.cpp b/src/msr2data.cpp index 14836761..2bc9ab18 100644 --- a/src/msr2data.cpp +++ b/src/msr2data.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include // for to_lower() in std::string @@ -166,40 +167,6 @@ void msr2data_syntax() std::cout << std::endl << std::endl; } -//-------------------------------------------------------------------------- -/** - *

Cleaning up some used variables - * - * \param msr2dataHandler pointer to PMsr2Data object - * \param run_vec vector containing the run numbers - * \param arg vector containing the command line arguments - * - */ -void msr2data_cleanup(PMsr2Data *msr2dataHandler, std::vector &run_vec, std::vector &arg) -{ - delete msr2dataHandler; - msr2dataHandler = nullptr; - run_vec.clear(); - arg.clear(); - return; -} - -//-------------------------------------------------------------------------- -/** - *

Cleaning up some used variables - * - * \param msr2dataHandler pointer to PMsr2Data object - * \param arg vector containing the command line arguments - * - */ -void msr2data_cleanup(PMsr2Data *msr2dataHandler, std::vector &arg) -{ - delete msr2dataHandler; - msr2dataHandler = 0; - arg.clear(); - return; -} - //-------------------------------------------------------------------------- /** *

Checks if only valid options appear in the argument list @@ -588,8 +555,8 @@ int main(int argc, char *argv[]) run_list += arg[i] + " "; } // parse run_list string - PStringNumberList *nl = new PStringNumberList(run_list); - if (nl == 0) { // couldn't invoke object + std::unique_ptr nl = std::unique_ptr(new PStringNumberList(run_list)); + if (nl == nullptr) { // couldn't invoke object std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** Couldn't invoke run_list parser object! Quitting now." << std::endl; return 0; @@ -602,7 +569,6 @@ int main(int argc, char *argv[]) } // get run list vector run_vec = nl->GetList(); - delete nl; msrExtension = arg[rightbracket + 1]; @@ -696,7 +662,12 @@ int main(int argc, char *argv[]) realOutput = false; // create the msr2data-object and set the run numbers according to the runTAG above - PMsr2Data *msr2dataHandler = new PMsr2Data(msrExtension); + std::unique_ptr msr2dataHandler = std::unique_ptr(new PMsr2Data(msrExtension)); + if (msr2dataHandler == nullptr) { + std::cerr << std::endl; + std::cerr << ">> msr2data: **ERROR** couldn't invoke msr2dataHandler." << std::endl; + return -1; + } int status; @@ -716,17 +687,14 @@ int main(int argc, char *argv[]) default: std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** None of the possible run list specifications has been detected! Quitting now..." << std::endl; - msr2data_cleanup(msr2dataHandler, run_vec, arg); return 0; } if (status == 1) { std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** The run numbers are out of range! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, run_vec, arg); return status; } else if (status == -1) { - msr2data_cleanup(msr2dataHandler, run_vec, arg); return status; } @@ -742,12 +710,10 @@ int main(int argc, char *argv[]) if (temp == -2) { std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** More than one fitting options are specified! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, arg); return temp; } else if (temp == -3) { std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** The given template has not a valid run number! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, arg); return temp; } @@ -775,7 +741,6 @@ int main(int argc, char *argv[]) if (temp == -3) { std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** The given template has not a valid run number! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, arg); return temp; } } @@ -794,14 +759,13 @@ int main(int argc, char *argv[]) // At this point it should be clear if any template for input-file generation is given or not. // Therefore, the number of digits in the run number format is determined only here. - if(temp > 0) { + if (temp > 0) { status = msr2dataHandler->DetermineRunNumberDigits(temp, setNormalMode); } else { status = msr2dataHandler->DetermineRunNumberDigits(msr2dataHandler->GetPresentRun(), setNormalMode); } - if(status) { - msr2data_cleanup(msr2dataHandler, arg); + if (status) { return status; } @@ -810,7 +774,6 @@ int main(int argc, char *argv[]) if(status) { std::cerr << std::endl; std::cerr << ">> msr2data: **ERROR** At least one given run number is out of range! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, arg); return status; } @@ -820,7 +783,7 @@ int main(int argc, char *argv[]) // 1 - write header explicitly (even if the file is present already) // 2 - write header automatically if a new file is created and do not if the data is appended to an existing file - std::fstream *fileOutput = nullptr; + std::unique_ptr fileOutput; if (realOutput) { // check the arguments for the "header" and "noheader" options if (!msr2data_useOption(arg, "header")) { @@ -838,7 +801,7 @@ int main(int argc, char *argv[]) // delete old db/data file if the "new" option is given if (!msr2data_useOption(arg, "new")) { - fileOutput = new std::fstream; + fileOutput = std::unique_ptr(new std::fstream); fileOutput->open(outputFile.c_str(), std::ios::in); if (fileOutput->is_open()) { std::cout << std::endl << ">> msr2data: **INFO** Deleting output file " << outputFile << std::endl; @@ -848,8 +811,6 @@ int main(int argc, char *argv[]) } else { std::cout << std::endl << ">> msr2data: **INFO** Ignoring the 'new' option since " << outputFile << " does not exist yet." << std::endl; } - delete fileOutput; - fileOutput = 0; if (writeHeader == 2) { writeHeader = 1; } @@ -868,7 +829,6 @@ int main(int argc, char *argv[]) if (!success) { std::cerr << std::endl << ">> msr2data: **ERROR** Input file generation has not been successful! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, arg); return -1; } } @@ -922,7 +882,6 @@ int main(int argc, char *argv[]) // write DB or dat file status = msr2dataHandler->WriteOutput(outputFile, param_vec, db, writeHeader, !setNormalMode, counter); if (status == -1) { - msr2data_cleanup(msr2dataHandler, arg); return status; } ++counter; @@ -959,7 +918,6 @@ int main(int argc, char *argv[]) if (!success) { std::cerr << std::endl << ">> msr2data: **ERROR** Input file generation has not been successful! Quitting..." << std::endl; - msr2data_cleanup(msr2dataHandler, arg); return -1; } } @@ -997,7 +955,6 @@ int main(int argc, char *argv[]) // if the msr-file cannot be read, write no output but proceed to the next run status = msr2dataHandler->WriteOutput("none", param_vec, db, writeHeader); if (status == -1) { - msr2data_cleanup(msr2dataHandler, arg); return status; } else { continue; @@ -1012,7 +969,6 @@ int main(int argc, char *argv[]) // write DB or dat file status = msr2dataHandler->WriteOutput(outputFile, param_vec, db, writeHeader); if (status == -1) { - msr2data_cleanup(msr2dataHandler, arg); return status; } } @@ -1024,7 +980,7 @@ int main(int argc, char *argv[]) // Unfortunately, there are also problems with boost::filesystem::exists(outputFile) // Therefore, first try to open the file for reading and if this works, write to it - not clean but it works if (realOutput) { - fileOutput = new std::fstream; + fileOutput = std::unique_ptr(new std::fstream); fileOutput->open(outputFile.c_str(), std::ios::in); if (fileOutput->is_open()) { fileOutput->close(); @@ -1040,8 +996,6 @@ int main(int argc, char *argv[]) std::cerr << std::endl << ">> msr2data: **WARNING** No output has been written to the file " << outputFile << "!"; std::cerr << std::endl << ">> msr2data: **WARNING** Please check the range of runs and the specified options!" << std::endl; } - delete fileOutput; - fileOutput = 0; } if (!arg.empty()) { @@ -1052,8 +1006,6 @@ int main(int argc, char *argv[]) std::cout << std::endl; } - msr2data_cleanup(msr2dataHandler, arg); - std::cout << std::endl << ">> msr2data: done ..." << std::endl; return 1;