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.
40 lines
2.6 KiB
40 lines
2.6 KiB
#include "src/generator/CompressedState.h"
|
|
|
|
#include "src/generator/VariableInformation.h"
|
|
#include "src/storage/expressions/ExpressionManager.h"
|
|
#include "src/storage/expressions/SimpleValuation.h"
|
|
#include "src/storage/expressions/ExpressionEvaluator.h"
|
|
|
|
namespace storm {
|
|
namespace generator {
|
|
|
|
template<typename ValueType>
|
|
void unpackStateIntoEvaluator(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionEvaluator<ValueType>& evaluator) {
|
|
for (auto const& booleanVariable : variableInformation.booleanVariables) {
|
|
evaluator.setBooleanValue(booleanVariable.variable, state.get(booleanVariable.bitOffset));
|
|
}
|
|
for (auto const& integerVariable : variableInformation.integerVariables) {
|
|
evaluator.setIntegerValue(integerVariable.variable, state.getAsInt(integerVariable.bitOffset, integerVariable.bitWidth) + integerVariable.lowerBound);
|
|
}
|
|
}
|
|
|
|
storm::expressions::SimpleValuation unpackStateIntoValuation(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionManager const& manager) {
|
|
storm::expressions::SimpleValuation result(manager.getSharedPointer());
|
|
for (auto const& booleanVariable : variableInformation.booleanVariables) {
|
|
result.setBooleanValue(booleanVariable.variable, state.get(booleanVariable.bitOffset));
|
|
}
|
|
for (auto const& integerVariable : variableInformation.integerVariables) {
|
|
result.setIntegerValue(integerVariable.variable, state.getAsInt(integerVariable.bitOffset, integerVariable.bitWidth) + integerVariable.lowerBound);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
template void unpackStateIntoEvaluator<double>(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionEvaluator<double>& evaluator);
|
|
storm::expressions::SimpleValuation unpackStateIntoValuation(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionManager const& manager);
|
|
|
|
#ifdef STORM_HAVE_CARL
|
|
template void unpackStateIntoEvaluator<storm::RationalNumber>(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionEvaluator<storm::RationalNumber>& evaluator);
|
|
template void unpackStateIntoEvaluator<storm::RationalFunction>(CompressedState const& state, VariableInformation const& variableInformation, storm::expressions::ExpressionEvaluator<storm::RationalFunction>& evaluator);
|
|
#endif
|
|
}
|
|
}
|