You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

82 lines
3.2 KiB

#include "storm/solver/MinMaxLinearEquationSolverRequirements.h"
namespace storm {
namespace solver {
MinMaxLinearEquationSolverRequirements::MinMaxLinearEquationSolverRequirements(LinearEquationSolverRequirements const& linearEquationSolverRequirements) : noEndComponents(false), validInitialScheduler(false), lowerBounds(linearEquationSolverRequirements.requiresLowerBounds()), upperBounds(linearEquationSolverRequirements.requiresUpperBounds()) {
// Intentionally left empty.
}
MinMaxLinearEquationSolverRequirements& MinMaxLinearEquationSolverRequirements::requireNoEndComponents() {
noEndComponents = true;
return *this;
}
MinMaxLinearEquationSolverRequirements& MinMaxLinearEquationSolverRequirements::requireValidInitialScheduler() {
validInitialScheduler = true;
return *this;
}
MinMaxLinearEquationSolverRequirements& MinMaxLinearEquationSolverRequirements::requireLowerBounds() {
lowerBounds = true;
return *this;
}
MinMaxLinearEquationSolverRequirements& MinMaxLinearEquationSolverRequirements::requireUpperBounds() {
upperBounds = true;
return *this;
}
bool MinMaxLinearEquationSolverRequirements::requiresNoEndComponents() const {
return noEndComponents;
}
bool MinMaxLinearEquationSolverRequirements::requiresValidIntialScheduler() const {
return validInitialScheduler;
}
bool MinMaxLinearEquationSolverRequirements::requiresLowerBounds() const {
return lowerBounds;
}
bool MinMaxLinearEquationSolverRequirements::requiresUpperBounds() const {
return upperBounds;
}
bool MinMaxLinearEquationSolverRequirements::requires(Element const& element) const {
switch (element) {
case Element::NoEndComponents: return noEndComponents; break;
case Element::ValidInitialScheduler: return validInitialScheduler; break;
case Element::LowerBounds: return lowerBounds; break;
case Element::UpperBounds: return upperBounds; break;
}
}
void MinMaxLinearEquationSolverRequirements::clearNoEndComponents() {
noEndComponents = false;
validInitialScheduler = false;
}
void MinMaxLinearEquationSolverRequirements::clearValidInitialScheduler() {
validInitialScheduler = false;
}
void MinMaxLinearEquationSolverRequirements::clearLowerBounds() {
lowerBounds = false;
}
void MinMaxLinearEquationSolverRequirements::clearUpperBounds() {
upperBounds = false;
}
void MinMaxLinearEquationSolverRequirements::clearBounds() {
clearLowerBounds();
clearUpperBounds();
}
bool MinMaxLinearEquationSolverRequirements::empty() const {
return !noEndComponents && !validInitialScheduler && !lowerBounds && !upperBounds;
}
}
}