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.
50 lines
1.9 KiB
50 lines
1.9 KiB
#pragma once
|
|
|
|
#include <set>
|
|
#include <map>
|
|
|
|
#include "src/storage/jani/CompositionVisitor.h"
|
|
|
|
namespace storm {
|
|
namespace jani {
|
|
|
|
class Model;
|
|
|
|
class ActionInformation {
|
|
public:
|
|
ActionInformation(std::set<uint64_t> const& nonsilentActionIndices, std::map<uint64_t, std::string> const& indexToNameMap, std::map<std::string, uint64_t> const& nameToIndexMap, uint64_t silentActionIndex = 0);
|
|
|
|
std::string const& getActionName(uint64_t index) const;
|
|
uint64_t getActionIndex(std::string const& name) const;
|
|
std::set<uint64_t> const& getNonSilentActionIndices() const;
|
|
uint64_t getSilentActionIndex() const;
|
|
|
|
private:
|
|
uint64_t silentActionIndex;
|
|
std::set<uint64_t> nonsilentActionIndices;
|
|
std::map<uint64_t, std::string> indexToNameMap;
|
|
std::map<std::string, uint64_t> nameToIndexMap;
|
|
};
|
|
|
|
class CompositionActionInformationVisitor : public CompositionVisitor {
|
|
public:
|
|
CompositionActionInformationVisitor(storm::jani::Model const& model);
|
|
|
|
ActionInformation getActionInformation();
|
|
|
|
virtual boost::any visit(AutomatonComposition const& composition, boost::any const& data) override;
|
|
virtual boost::any visit(RenameComposition const& composition, boost::any const& data) override;
|
|
virtual boost::any visit(ParallelComposition const& composition, boost::any const& data) override;
|
|
|
|
private:
|
|
uint64_t addOrGetActionIndex(std::string const& name);
|
|
|
|
storm::jani::Model const& model;
|
|
uint64_t nextFreeActionIndex;
|
|
std::map<std::string, uint64_t> nameToIndexMap;
|
|
std::map<uint64_t, std::string> indexToNameMap;
|
|
};
|
|
|
|
|
|
}
|
|
}
|