46 lines
1.4 KiB
46 lines
1.4 KiB
#pragma once
|
|
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include "storm/automata/APSet.h"
|
|
|
|
|
|
namespace storm {
|
|
namespace automata {
|
|
// fwd
|
|
class AcceptanceCondition;
|
|
|
|
class DeterministicAutomaton {
|
|
public:
|
|
typedef std::shared_ptr<DeterministicAutomaton> ptr;
|
|
|
|
DeterministicAutomaton(APSet apSet, std::size_t numberOfStates, std::size_t initialState, std::shared_ptr<AcceptanceCondition> acceptance);
|
|
|
|
const APSet& getAPSet() const;
|
|
|
|
std::size_t getInitialState() const;
|
|
|
|
std::size_t getSuccessor(std::size_t from, APSet::alphabet_element label) const;
|
|
void setSuccessor(std::size_t from, APSet::alphabet_element label, std::size_t successor);
|
|
|
|
std::size_t getNumberOfStates() const;
|
|
std::size_t getNumberOfEdgesPerState() const;
|
|
|
|
std::shared_ptr<AcceptanceCondition> getAcceptance() const;
|
|
|
|
void printHOA(std::ostream& out) const;
|
|
|
|
static DeterministicAutomaton::ptr parse(std::istream& in);
|
|
static DeterministicAutomaton::ptr parseFromFile(const std::string& filename);
|
|
|
|
private:
|
|
APSet apSet;
|
|
std::size_t numberOfStates;
|
|
std::size_t initialState;
|
|
std::size_t numberOfEdges;
|
|
std::size_t edgesPerState;
|
|
std::shared_ptr<AcceptanceCondition> acceptance;
|
|
std::vector<std::size_t> successors;
|
|
};
|
|
}
|
|
}
|