spot
1.99.3
|
Public Types | |
typedef internal::edge_iterator < digraph > | iterator |
typedef internal::edge_iterator< const digraph > | const_iterator |
typedef State_Data | state_data_t |
typedef Edge_Data | edge_data_t |
typedef unsigned | state |
typedef unsigned | edge |
typedef std::conditional < Alternating, std::vector < state >, state >::type | out_state |
typedef internal::distate_storage < edge, internal::boxed_label < State_Data > > | state_storage_t |
typedef internal::edge_storage < state, out_state, edge, internal::boxed_label < Edge_Data > > | edge_storage_t |
typedef std::vector < state_storage_t > | state_vector |
typedef std::vector < edge_storage_t > | edge_vector_t |
Public Member Functions | |
digraph (unsigned max_states=10, unsigned max_trans=0) | |
construct an empty graph More... | |
unsigned | num_states () const |
unsigned | num_edges () const |
bool | valid_trans (edge t) const |
template<typename... Args> | |
state | new_state (Args &&...args) |
template<typename... Args> | |
state | new_states (unsigned n, Args &&...args) |
state_storage_t & | state_storage (state s) |
const state_storage_t & | state_storage (state s) const |
state_storage_t::data_t & | state_data (state s) |
const state_storage_t::data_t & | state_data (state s) const |
edge_storage_t & | edge_storage (edge s) |
const edge_storage_t & | edge_storage (edge s) const |
edge_storage_t::data_t & | edge_data (edge s) |
const edge_storage_t::data_t & | edge_data (edge s) const |
template<typename... Args> | |
edge | new_edge (state src, out_state dst, Args &&...args) |
state | index_of_state (const state_storage_t &ss) const |
edge | index_of_edge (const edge_storage_t &tt) const |
internal::state_out< digraph > | out (state src) |
internal::state_out< digraph > | out (state_storage_t &src) |
internal::state_out< const digraph > | out (state src) const |
internal::state_out< const digraph > | out (state_storage_t &src) const |
internal::killer_edge_iterator < digraph > | out_iteraser (state_storage_t &src) |
internal::killer_edge_iterator < digraph > | out_iteraser (state src) |
const state_vector & | states () const |
state_vector & | states () |
internal::all_trans< const digraph > | edges () const |
internal::all_trans< digraph > | edges () |
const edge_vector_t & | edge_vector () const |
edge_vector_t & | edge_vector () |
bool | is_dead_edge (unsigned t) const |
bool | is_dead_edge (const edge_storage_t &t) const |
void | dump_storage (std::ostream &o) const |
void | remove_dead_edges_ () |
template<class Predicate = std::less<edge_storage_t>> | |
void | sort_edges_ (Predicate p=Predicate()) |
void | chain_edges_ () |
void | rename_states_ (const std::vector< unsigned > &newst) |
void | defrag_states (std::vector< unsigned > &&newst, unsigned used_states) |
Static Public Member Functions | |
static constexpr bool | alternating () |
Protected Attributes | |
state_vector | states_ |
edge_vector_t | edges_ |
unsigned | killed_edge_ |
Friends | |
class | internal::edge_iterator< digraph > |
class | internal::edge_iterator< const digraph > |
class | internal::killer_edge_iterator< digraph > |
|
inline |
construct an empty graph
Construct an empty graph, and reserve space for max_states states and max_trans edges. These are not hard limits, but just hints to pre-allocate a data structure that may hold that much items.