Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
APSet.cpp
Go to the documentation of this file.
1
5
6#include <exception>
7#include <string>
8
9namespace storm {
10namespace automata {
11
13 // intentionally left blank
14}
15
16unsigned int APSet::size() const {
17 return index_to_ap.size();
18}
19
20std::size_t APSet::alphabetSize() const {
21 return 1L << size();
22}
23
24void APSet::add(const std::string& ap) {
25 STORM_LOG_THROW(size() < MAX_APS, storm::exceptions::UnexpectedException, "Set of atomic proposition size is limited to " << std::to_string(MAX_APS));
26
27 unsigned int index = size();
28 bool fresh = ap_to_index.insert(std::make_pair(ap, index)).second;
29 STORM_LOG_THROW(fresh, storm::exceptions::UnexpectedException, "Duplicate atomic proposition '" << ap << "' in APSet");
30
31 index_to_ap.push_back(ap);
32}
33
34unsigned int APSet::getIndex(const std::string& ap) const {
35 // throws out_of_range if ap is not in the set
36 return ap_to_index.at(ap);
37}
38
39const std::string& APSet::getAP(unsigned int index) const {
40 // throws out_of_range if index is out of range
41 return index_to_ap.at(index);
42}
43
44const std::vector<std::string>& APSet::getAPs() const {
45 return index_to_ap;
46}
47
48bool APSet::contains(const std::string& ap) const {
49 return ap_to_index.find(ap) != ap_to_index.end();
50}
51
55
57 STORM_LOG_THROW(ap < size(), storm::exceptions::UnexpectedException, "AP out of range");
58
59 return element | (1ul << ap);
60}
61
62} // namespace automata
63} // namespace storm
const unsigned int MAX_APS
Definition APSet.h:27
alphabet_element elementAddAP(alphabet_element element, unsigned int ap) const
Definition APSet.cpp:56
bool contains(const std::string &ap) const
Definition APSet.cpp:48
std::size_t alphabetSize() const
Definition APSet.cpp:20
alphabet_element elementAllFalse() const
Definition APSet.cpp:52
const std::string & getAP(unsigned int index) const
Definition APSet.cpp:39
void add(const std::string &ap)
Definition APSet.cpp:24
unsigned int size() const
Definition APSet.cpp:16
std::size_t alphabet_element
Definition APSet.h:12
const std::vector< std::string > & getAPs() const
Definition APSet.cpp:44
unsigned int getIndex(const std::string &ap) const
Definition APSet.cpp:34
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30
LabParser.cpp.
Definition cli.cpp:18