TimQu
7 years ago
8 changed files with 147 additions and 0 deletions
-
2src/storm/environment/SubEnvironment.cpp
-
33src/storm/environment/solver/MultiplierEnvironment.cpp
-
23src/storm/environment/solver/MultiplierEnvironment.h
-
9src/storm/environment/solver/SolverEnvironment.cpp
-
4src/storm/environment/solver/SolverEnvironment.h
-
2src/storm/settings/SettingsManager.cpp
-
40src/storm/settings/modules/MultiplierSettings.cpp
-
34src/storm/settings/modules/MultiplierSettings.h
@ -0,0 +1,33 @@ |
|||
#include "storm/environment/solver/MultiplierEnvironment.h"
|
|||
|
|||
#include "storm/settings/SettingsManager.h"
|
|||
#include "storm/settings/modules/MultiplierSettings.h"
|
|||
#include "storm/utility/constants.h"
|
|||
#include "storm/utility/macros.h"
|
|||
|
|||
namespace storm { |
|||
|
|||
MultiplierEnvironment::MultiplierEnvironment() { |
|||
auto const& multiplierSettings = storm::settings::getModule<storm::settings::modules::MultiplierSettings>(); |
|||
type = multiplierSettings.getMultiplierType(); |
|||
typeSetFromDefault = multiplierSettings.isMultiplierTypeSetFromDefaultValue(); |
|||
} |
|||
|
|||
MultiplierEnvironment::~MultiplierEnvironment() { |
|||
// Intentionally left empty
|
|||
} |
|||
|
|||
storm::solver::MultiplierType const& MultiplierEnvironment::getType() const { |
|||
return type; |
|||
} |
|||
|
|||
bool const& MultiplierEnvironment::isTypeSetFromDefault() const { |
|||
return typeSetFromDefault; |
|||
} |
|||
|
|||
void MultiplierEnvironment::setType(storm::solver::MultiplierType value, bool isSetFromDefault) { |
|||
type = value; |
|||
typeSetFromDefault = isSetFromDefault; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,23 @@ |
|||
#pragma once |
|||
|
|||
#include "storm/environment/solver/SolverEnvironment.h" |
|||
#include "storm/solver/SolverSelectionOptions.h" |
|||
|
|||
namespace storm { |
|||
|
|||
class MultiplierEnvironment { |
|||
public: |
|||
|
|||
MultiplierEnvironment(); |
|||
~MultiplierEnvironment(); |
|||
|
|||
storm::solver::MultiplierType const& getType() const; |
|||
bool const& isTypeSetFromDefault() const; |
|||
void setType(storm::solver::MultiplierType value, bool isSetFromDefault = false); |
|||
|
|||
private: |
|||
storm::solver::MultiplierType type; |
|||
bool typeSetFromDefault; |
|||
}; |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
#include "storm/settings/modules/MultiplierSettings.h"
|
|||
|
|||
#include "storm/settings/Option.h"
|
|||
#include "storm/settings/ArgumentBuilder.h"
|
|||
#include "storm/settings/OptionBuilder.h"
|
|||
|
|||
#include "storm/utility/macros.h"
|
|||
#include "storm/exceptions/IllegalArgumentValueException.h"
|
|||
|
|||
namespace storm { |
|||
namespace settings { |
|||
namespace modules { |
|||
|
|||
const std::string MultiplierSettings::moduleName = "multiplier"; |
|||
const std::string MultiplierSettings::multiplierTypeOptionName = "type"; |
|||
|
|||
MultiplierSettings::MultiplierSettings() : ModuleSettings(moduleName) { |
|||
std::vector<std::string> multiplierTypes = {"native", "gmmxx"}; |
|||
this->addOption(storm::settings::OptionBuilder(moduleName, multiplierTypeOptionName, true, "Sets which type of multiplier is preferred.") |
|||
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name", "The name of a multiplier.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(multiplierTypes)).setDefaultValueString("gmmxx").build()).build()); |
|||
|
|||
} |
|||
|
|||
storm::solver::MultiplierType MultiplierSettings::getMultiplierType() const { |
|||
std::string type = this->getOption(multiplierTypeOptionName).getArgumentByName("name").getValueAsString(); |
|||
if (type == "native") { |
|||
return storm::solver::MultiplierType::Native; |
|||
} else if (type == "gmmxx") { |
|||
return storm::solver::MultiplierType::Gmmxx; |
|||
} |
|||
|
|||
STORM_LOG_THROW(false, storm::exceptions::IllegalArgumentValueException, "Unknown multiplier type '" << type << "'."); |
|||
} |
|||
|
|||
bool MultiplierSettings::isMultiplierTypeSetFromDefaultValue() const { |
|||
return !this->getOption(multiplierTypeOptionName).getArgumentByName("name").getHasBeenSet() || this->getOption(multiplierTypeOptionName).getArgumentByName("name").wasSetFromDefaultValue(); |
|||
} |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,34 @@ |
|||
#pragma once |
|||
|
|||
#include "storm-config.h" |
|||
#include "storm/settings/modules/ModuleSettings.h" |
|||
|
|||
#include "storm/solver/SolverSelectionOptions.h" |
|||
#include "storm/solver/MultiplicationStyle.h" |
|||
|
|||
namespace storm { |
|||
namespace settings { |
|||
namespace modules { |
|||
|
|||
/*! |
|||
* This class represents the multiplier settings. |
|||
*/ |
|||
class MultiplierSettings : public ModuleSettings { |
|||
public: |
|||
|
|||
MultiplierSettings(); |
|||
|
|||
storm::solver::MultiplierType getMultiplierType() const; |
|||
|
|||
bool isMultiplierTypeSetFromDefaultValue() const; |
|||
|
|||
// The name of the module. |
|||
static const std::string moduleName; |
|||
|
|||
private: |
|||
static const std::string multiplierTypeOptionName; |
|||
}; |
|||
|
|||
} |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue