#pragma once #include #include "src/builder/jit/StateBehaviour.h" #include "src/storage/jani/ModelType.h" namespace storm { namespace storage { template class SparseMatrixBuilder; class BitVector; } namespace models { namespace sparse { template class StandardRewardModel; template class Model; class StateLabeling; } } namespace builder { namespace jit { template class ModelComponentsBuilder { public: ModelComponentsBuilder(storm::jani::ModelType const& modelType); ~ModelComponentsBuilder(); void addStateBehaviour(IndexType const& stateIndex, StateBehaviour& behaviour); storm::models::sparse::Model>* 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> transitionMatrixBuilder; std::vector> labels; }; } } }