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.
 
 
 
 

58 lines
1.8 KiB

#pragma once
#include <memory>
#include "src/builder/jit/StateBehaviour.h"
#include "src/storage/jani/ModelType.h"
namespace storm {
namespace storage {
template <typename ValueType>
class SparseMatrixBuilder;
class BitVector;
}
namespace models {
namespace sparse {
template <typename ValueType>
class StandardRewardModel;
template <typename ValueType, typename RewardModelType>
class Model;
class StateLabeling;
}
}
namespace builder {
namespace jit {
template <typename IndexType, typename ValueType>
class ModelComponentsBuilder {
public:
ModelComponentsBuilder(storm::jani::ModelType const& modelType);
~ModelComponentsBuilder();
void addStateBehaviour(IndexType const& stateIndex, StateBehaviour<IndexType, ValueType>& behaviour);
storm::models::sparse::Model<ValueType, storm::models::sparse::StandardRewardModel<ValueType>>* build(IndexType const& stateCount);
void registerLabel(std::string const& name, IndexType const& stateCount);
void addLabel(IndexType const& stateId, IndexType const& labelIndex);
private:
storm::jani::ModelType modelType;
bool isDeterministicModel;
bool isDiscreteTimeModel;
IndexType currentRowGroup;
IndexType currentRow;
std::unique_ptr<storm::storage::SparseMatrixBuilder<ValueType>> transitionMatrixBuilder;
std::vector<std::pair<std::string, storm::storage::BitVector>> labels;
};
}
}
}