Browse Source

fixing a few memory issues

tempestpy_adaptions
gereon 12 years ago
parent
commit
b28c1f64c4
  1. 3
      src/mrmc.cpp
  2. 14
      src/utility/settings.cpp
  3. 9
      src/utility/settings.h

3
src/mrmc.cpp

@ -84,14 +84,17 @@ int main(const int argc, const char* argv[]) {
if (s->isSet("help")) {
std::cout << mrmc::settings::help;
delete s;
return 0;
}
if (s->isSet("help-config")) {
std::cout << mrmc::settings::helpConfigfile;
delete s;
return 0;
}
if (s->isSet("test-prctl")) {
mrmc::parser::PRCTLParser parser(s->getString("test-prctl").c_str());
delete s;
return 0;
}

14
src/utility/settings.cpp

@ -19,8 +19,8 @@ namespace bpo = boost::program_options;
/*
* static initializers
*/
bpo::options_description* mrmc::settings::Settings::cli = nullptr;
bpo::options_description* mrmc::settings::Settings::conf = nullptr;
std::unique_ptr<bpo::options_description> mrmc::settings::Settings::cli;
std::unique_ptr<bpo::options_description> mrmc::settings::Settings::conf = nullptr;
std::string mrmc::settings::Settings::binaryName = "";
mrmc::settings::Settings* mrmc::settings::Settings::inst = nullptr;
@ -51,21 +51,19 @@ Settings::Settings(const int argc, const char* argv[], const char* filename)
Settings::positional.add("labfile", 1);
//! Create and fill collecting options descriptions
Settings::cli = new bpo::options_description();
Settings::cli = std::unique_ptr<bpo::options_description>(new bpo::options_description());
Settings::cli->add(Settings::commandline).add(generic);
Settings::conf = new bpo::options_description();
Settings::conf = std::unique_ptr<bpo::options_description>(new bpo::options_description());
Settings::conf->add(Settings::configfile).add(generic);
//! Perform first parse run and call intermediate callbacks
this->firstRun(argc, argv, filename);
//! Rebuild collecting options descriptions
delete Settings::cli;
Settings::cli = new bpo::options_description();
Settings::cli = std::unique_ptr<bpo::options_description>(new bpo::options_description());
Settings::cli->add(Settings::commandline).add(generic);
delete Settings::conf;
Settings::conf = new bpo::options_description();
Settings::conf = std::unique_ptr<bpo::options_description>(new bpo::options_description());
Settings::conf->add(Settings::configfile).add(generic);
//! Stop if help is set

9
src/utility/settings.h

@ -11,6 +11,7 @@
#include <iostream>
#include <list>
#include <utility>
#include <memory>
#include <boost/program_options.hpp>
#include "src/exceptions/InvalidSettings.h"
@ -76,7 +77,6 @@ namespace settings {
*/
template <typename T>
const T& get(const std::string &name) const {
std::cerr << "get(" << name << ")" << std::endl;
if (this->vm.count(name) == 0) throw mrmc::exceptions::InvalidSettings();
return this->vm[name].as<T>();
}
@ -141,11 +141,11 @@ namespace settings {
/*!
* @brief Collecting option descriptions for command line.
*/
static bpo::options_description* cli;
static std::unique_ptr<bpo::options_description> cli;
/*!
* @brief Collecting option descriptions for config file.
*/
static bpo::options_description* conf;
static std::unique_ptr<bpo::options_description> conf;
/*!
* @brief option mapping.
@ -199,8 +199,7 @@ namespace settings {
Settings::inst = new Settings(argc, argv, filename);
return Settings::inst;
}
/*!
* @brief Function type for functions registering new options.
*/

Loading…
Cancel
Save