Browse Source

Started making generation of parametric models work again.

Former-commit-id: 93b0bc351c
tempestpy_adaptions
dehnert 10 years ago
parent
commit
12e6fac968
  1. 0
      src/storage/expressions/ExpressionEvaluator.cpp
  2. 11
      src/storage/expressions/ExpressionEvaluator.h
  3. 15
      src/storage/expressions/ExpressionEvaluatorBase.cpp
  4. 35
      src/storage/expressions/ExpressionEvaluatorBase.h
  5. 2
      src/storage/expressions/ExprtkExpressionEvaluator.cpp
  6. 18
      src/storage/expressions/ExprtkExpressionEvaluator.h

0
src/storage/expressions/ExpressionEvaluator.cpp

11
src/storage/expressions/ExpressionEvaluator.h

@ -0,0 +1,11 @@
namespace storm {
namespace expressions {
template<RationalType>
class ExpressionEvaluator;
template<>
class ExpressionEvaluator<double> {
}
}
}

15
src/storage/expressions/ExpressionEvaluatorBase.cpp

@ -0,0 +1,15 @@
#include "src/storage/expressions/ExpressionEvaluatorBase.h"
#include "src/storage/expressions/ExpressionManager.h"
namespace storm {
namespace expressions {
ExpressionEvaluatorBase::ExpressionEvaluatorBase(storm::expressions::ExpressionManager const& manager) : manager(manager.getSharedPointer()) {
// Intentionally left empty.
}
storm::expressions::ExpressionManager const& ExpressionEvaluatorBase::getManager() const {
return *manager;
}
}
}

35
src/storage/expressions/ExpressionEvaluatorBase.h

@ -0,0 +1,35 @@
#ifndef STORM_STORAGE_EXPRESSIONS_EXPRESSIONEVALUATORBASE_H_
#define STORM_STORAGE_EXPRESSIONS_EXPRESSIONEVALUATORBASE_H_
#include "src/storage/expressions/Expression.h"
namespace storm {
namespace expressions {
class ExpressionEvaluatorBase {
public:
ExpressionEvaluatorBase(storm::expressions::ExpressionManager const& manager);
virtual bool asBool(Expression const& expression) const = 0;
virtual int_fast64_t asInt(Expression const& expression) const = 0;
virtual double asDouble(Expression const& expression) const = 0;
virtual void setBooleanValue(storm::expressions::Variable const& variable, bool value) = 0;
virtual void setIntegerValue(storm::expressions::Variable const& variable, int_fast64_t value) = 0;
virtual void setRationalValue(storm::expressions::Variable const& variable, double value) = 0;
protected:
/*!
* Retrieves the manager associated with this evaluator.
*
* @return The manager associated with this evaluator.
*/
storm::expressions::ExpressionManager const& getManager() const;
private:
// The expression manager that is used by this evaluator.
std::shared_ptr<storm::expressions::ExpressionManager const> manager;
};
}
}
#endif /* STORM_STORAGE_EXPRESSIONS_EXPRESSIONEVALUATORBASE_H_ */

2
src/storage/expressions/ExprtkExpressionEvaluator.cpp

@ -5,7 +5,7 @@
namespace storm { namespace storm {
namespace expressions { namespace expressions {
ExprtkExpressionEvaluator::ExprtkExpressionEvaluator(storm::expressions::ExpressionManager const& manager) : manager(manager.getSharedPointer()), booleanValues(manager.getNumberOfBooleanVariables()), integerValues(manager.getNumberOfIntegerVariables()), rationalValues(manager.getNumberOfRationalVariables()) {
ExprtkExpressionEvaluator::ExprtkExpressionEvaluator(storm::expressions::ExpressionManager const& manager) : ExpressionEvaluatorBase(manager), booleanValues(manager.getNumberOfBooleanVariables()), integerValues(manager.getNumberOfIntegerVariables()), rationalValues(manager.getNumberOfRationalVariables()) {
for (auto const& variableTypePair : manager) { for (auto const& variableTypePair : manager) {
if (variableTypePair.second.isBooleanType()) { if (variableTypePair.second.isBooleanType()) {

18
src/storage/expressions/ExprtkExpressionEvaluator.h

@ -1,18 +1,17 @@
#ifndef STORM_STORAGE_EXPRESSIONS_EXPRESSIONEVALUATOR_H_
#define STORM_STORAGE_EXPRESSIONS_EXPRESSIONEVALUATOR_H_
#ifndef STORM_STORAGE_EXPRESSIONS_EXPRTKEXPRESSIONEVALUATOR_H_
#define STORM_STORAGE_EXPRESSIONS_EXPRTKEXPRESSIONEVALUATOR_H_
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include "exprtk.hpp"
#include "src/storage/expressions/ExpressionEvaluatorBase.h"
#include "src/storage/expressions/Expression.h"
#include "src/storage/expressions/ExpressionVisitor.h"
#include "exprtk.hpp"
#include "src/storage/expressions/ToExprtkStringVisitor.h" #include "src/storage/expressions/ToExprtkStringVisitor.h"
namespace storm { namespace storm {
namespace expressions { namespace expressions {
class ExprtkExpressionEvaluator {
class ExprtkExpressionEvaluator : public ExpressionEvaluatorBase {
public: public:
/*! /*!
* Creates an expression evaluator that is capable of evaluating expressions managed by the given manager. * Creates an expression evaluator that is capable of evaluating expressions managed by the given manager.
@ -40,10 +39,7 @@ namespace storm {
* @param expression The expression that is to be compiled. * @param expression The expression that is to be compiled.
*/ */
CompiledExpressionType& getCompiledExpression(BaseExpression const* expression) const; CompiledExpressionType& getCompiledExpression(BaseExpression const* expression) const;
// The expression manager that is used by this evaluator.
std::shared_ptr<storm::expressions::ExpressionManager const> manager;
// The parser used. // The parser used.
mutable exprtk::parser<ValueType> parser; mutable exprtk::parser<ValueType> parser;
@ -61,4 +57,4 @@ namespace storm {
} }
} }
#endif /* STORM_STORAGE_EXPRESSIONS_EXPRESSIONEVALUATOR_H_ */
#endif /* STORM_STORAGE_EXPRESSIONS_EXPRTKEXPRESSIONEVALUATOR_H_ */
Loading…
Cancel
Save