33 lines
962 B

#pragma once
#include <vector>
#include <map>
#include <string>
namespace storm {
namespace automata {
class APSet {
public:
// TODO: uint32
typedef std::size_t alphabet_element;
APSet();
unsigned int size() const;
std::size_t alphabetSize() const;
void add(const std::string& ap);
unsigned int getIndex(const std::string& ap) const;
bool contains(const std::string& ap) const;
const std::string& getAP(unsigned int index) const;
const std::vector<std::string>& getAPs() const;
alphabet_element elementAllFalse() const;
alphabet_element elementAddAP(alphabet_element element, unsigned int ap) const;
const unsigned int MAX_APS = 32;
private:
std::map<std::string, unsigned int> ap_to_index;
std::vector<std::string> index_to_ap;
};
}
}