24 #include <spot/graph/graph.hh> 25 #include <spot/misc/hash.hh> 26 #include <spot/twa/acc.hh> 27 #include <spot/twacube/cube.hh> 28 #include <spot/twacube/fwd.hh> 86 inline bool done()
const 88 return !idx_ || idx_ > st_.succ_tail;
91 inline unsigned int current(
unsigned int seed = 0)
const 95 if (SPOT_UNLIKELY(!seed))
102 SPOT_ASSERT(primes[seed] > (st_.succ_tail-st_.succ+1));
103 return (((idx_-st_.succ+1)*primes[seed]) % (st_.succ_tail-st_.succ+1))
112 class SPOT_API
twacube final:
public std::enable_shared_from_this<twacube>
116 twacube(
const std::vector<std::string> aps);
120 std::vector<std::string> get_ap();
121 unsigned int new_state();
122 void set_initial(
unsigned int init);
123 unsigned int get_initial();
124 cstate* state_from_int(
unsigned int i);
125 void create_transition(
unsigned int src,
const cube&
cube,
127 const cubeset& get_cubeset()
const;
128 bool succ_contiguous()
const;
130 const graph_t& get_graph()
136 trans_storage(std::shared_ptr<trans_index> ci,
137 unsigned int seed = 0)
const 139 return theg_.edge_storage(ci->current(seed));
141 const transition& trans_data(std::shared_ptr<trans_index> ci,
142 unsigned int seed = 0)
const 144 return theg_.edge_data(ci->current(seed));
147 std::shared_ptr<trans_index> succ(
unsigned int i)
149 return std::make_shared<trans_index>(i, theg_);
152 friend SPOT_API std::ostream& operator<<(std::ostream& os,
157 const std::vector<std::string> aps_;
162 inline twacube_ptr make_twacube(
const std::vector<std::string> aps)
164 return std::make_shared<twacube>(aps);
Definition: twacube.hh:32
A Transition-based ω-Automaton.
Definition: twa.hh:622
Abstract class for states.
Definition: twa.hh:50
Definition: twacube.hh:57
Definition: twacube.hh:45
state_storage_t & state_storage(state s)
return a reference to the storage of a state
Definition: graph.hh:712
Definition: twacube.hh:112
unsigned * cube
A cube is only a set of bits in memory.
Definition: cube.hh:66