From 2a2e2b40d59b15d4d1bcbc7adda61fb2225aeb43 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Fri, 13 Oct 2023 12:10:06 +0200 Subject: [PATCH] replaced raw pointers by smart pointers for musrview.cpp. --- src/musrview.cpp | 63 ++++++++++-------------------------------------- 1 file changed, 13 insertions(+), 50 deletions(-) diff --git a/src/musrview.cpp b/src/musrview.cpp index 66463d96..df3f018f 100644 --- a/src/musrview.cpp +++ b/src/musrview.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -199,48 +200,30 @@ int main(int argc, char *argv[]) // read startup file char startup_path_name[128]; - TSAXParser *saxParser = new TSAXParser(); - PStartupHandler *startupHandler = new PStartupHandler(); + std::unique_ptr saxParser = std::unique_ptr(new TSAXParser()); + std::unique_ptr startupHandler = std::unique_ptr(new PStartupHandler()); if (!startupHandler->StartupFileFound()) { std::cerr << std::endl << ">> musrview **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data(); std::cerr << std::endl; - // clean up - if (saxParser) { - delete saxParser; - saxParser = nullptr; - } - if (startupHandler) { - delete startupHandler; - startupHandler = nullptr; - } } else { strcpy(startup_path_name, startupHandler->GetStartupFilePath().Data()); - saxParser->ConnectToHandler("PStartupHandler", startupHandler); + saxParser->ConnectToHandler("PStartupHandler", startupHandler.get()); //status = saxParser->ParseFile(startup_path_name); // parsing the file as above seems to lead to problems in certain environments; // use the parseXmlFile function instead (see PStartupHandler.cpp for the definition) - status = parseXmlFile(saxParser, startup_path_name); + status = parseXmlFile(saxParser.get(), startup_path_name); // check for parse errors if (status) { // error std::cerr << std::endl << ">> musrview **WARNING** Reading/parsing musrfit_startup.xml failed."; std::cerr << std::endl << ">> Any graph will appear with random symbols and colors!"; std::cerr << std::endl; - // clean up - if (saxParser) { - delete saxParser; - saxParser = nullptr; - } - if (startupHandler) { - delete startupHandler; - startupHandler = nullptr; - } } else { startupHandler->CheckLists(); } } // read msr-file - PMsrHandler *msrHandler = new PMsrHandler(fileName); + std::unique_ptr msrHandler = std::unique_ptr(new PMsrHandler(fileName)); status = msrHandler->ReadMsrFile(); if (status != PMUSR_SUCCESS) { switch (status) { @@ -277,11 +260,11 @@ int main(int argc, char *argv[]) } // read all the necessary runs (raw data) - PRunDataHandler *dataHandler; + std::unique_ptr dataHandler; if (startupHandler) - dataHandler = new PRunDataHandler(msrHandler, startupHandler->GetDataPathList()); + dataHandler = std::unique_ptr(new PRunDataHandler(msrHandler.get(), startupHandler->GetDataPathList())); else - dataHandler = new PRunDataHandler(msrHandler); + dataHandler = std::unique_ptr(new PRunDataHandler(msrHandler.get())); dataHandler->ReadData(); @@ -292,10 +275,10 @@ int main(int argc, char *argv[]) } // generate the necessary histogramms for the view - PRunListCollection *runListCollection = nullptr; + std::unique_ptr runListCollection; if (result == PMUSR_SUCCESS) { // feed all the necessary histogramms for the view - runListCollection = new PRunListCollection(msrHandler, dataHandler, theoAtData); + runListCollection = std::unique_ptr(new PRunListCollection(msrHandler.get(), dataHandler.get(), theoAtData)); for (unsigned int i=0; iGetMsrRunList()->size(); i++) { // if run is in plotList add it, otherwise go to the next runPresent = false; @@ -356,8 +339,8 @@ int main(int argc, char *argv[]) musrCanvas->SetTimeout(timeout); // ugly but rootcling cannot handle the spirit-parser framework - musrCanvas->SetMsrHandler(msrHandler); - musrCanvas->SetRunListCollection(runListCollection); + musrCanvas->SetMsrHandler(msrHandler.get()); + musrCanvas->SetRunListCollection(runListCollection.get()); musrCanvas->UpdateParamTheoryPad(); musrCanvas->UpdateDataTheoryPad(); @@ -406,26 +389,6 @@ int main(int argc, char *argv[]) // clean up plotList.clear(); - if (saxParser) { - delete saxParser; - saxParser = nullptr; - } - if (startupHandler) { - delete startupHandler; - startupHandler = nullptr; - } - if (msrHandler) { - delete msrHandler; - msrHandler = nullptr; - } - if (dataHandler) { - delete dataHandler; - dataHandler = nullptr; - } - if (runListCollection) { - delete runListCollection; - runListCollection = nullptr; - } return result; }