
#include <msmazes/core/pattern/n_bit.hpp>
msmazes::NBitPattern pattern;
pattern.initialize(
msmazes::init_bit_count_arg = 4
, msmazes::init_entrance_cell_arg = 0
, msmazes::init_exit_cell_arg = 15
, msmazes::init_entrance_direction_arg = 1
, msmazes::init_exit_direction_arg = 3
);
The code above will yield the following cells and their connections in adjacency list notation:
0000 <--> 0010
0001 <--> 0011 0101 1001
0010 <--> 0000 0011 0110 1010
0011 <--> 0001 0010 0111 1011
0100 <--> 0101 0110 1100
0101 <--> 0001 0100 0111 1101
0110 <--> 0010 0100 0111 1110
0111 <--> 0011 0101 0110 1111
1000 <--> 1001 1010 1100
1001 <--> 0001 1000 1011 1101
1010 <--> 0010 1000 1011 1110
1011 <--> 0011 1001 1010
1100 <--> 0100 1000 1101 1110
1101 <--> 0101 1001 1100
1110 <--> 0110 1010 1100
1111 <--> 0111
All programs using this class template must define BOOST_PARAMETER_MAX_ARITY as 5 or more.
| Parameter | Description | Default |
|---|---|---|
CellContainerSelector | The type that will represent whether the cell container is a std::vector (in which case this type is boost::vecS) or a std::deque (in which case this type is boost::dequeS). | boost::vecS |
Block | The integer type in which the bits of each cell are stored. | unsigned long |
Allocator | The allocator type used for memory management of each cell. | std::allocator<Block> |
CellContainerSelector must be either boost::vecS or boost::dequeS. Block must be an unsigned integer type. Allocator must satisfy the C++ standard requirements for an allocator.
Public Types | |
| typedef implementation_defined | Cell |
| typedef implementation_defined | CellEqualityPolicy |
| typedef implementation_defined | Graph |
| typedef implementation_defined | CellIndex |
| typedef implementation_defined | EdgeDirectedCategory |
| typedef implementation_defined | Direction |
| typedef implementation_defined | OutDegree |
| typedef implementation_defined | HasIndexableEndpointCells |
Public Member Functions | |
| NBitPattern () | |
| The default constructor. | |
| virtual | ~NBitPattern () |
| The destructor. | |
| void | initialize (const unsigned long init_bit_count_arg, const unsigned long init_entrance_cell_arg, const unsigned long init_exit_cell_arg, const unsigned long init_entrance_direction_arg, const unsigned long init_exit_direction_arg) |
| template<typename Params> | |
| void | initialize_with_named_params (Params &p) |
| const Graph & | getGraph () const |
| CellIndex | getCellCount () const |
| const Cell & | getCell (const CellIndex index) const |
| const Cell & | getEntranceCell () const |
| const Cell & | getSourceCell () const |
| const Cell & | getTargetCell () const |
| const Cell & | getExitCell () const |
| Direction | getEdgeDirection (const CellIndex source_index, const CellIndex target_index) const |
| OutDegree | getMaxOutDegree () const |
|
|
The type of the objects to be connected together, as defined in the Pattern concept. |
|
|
The type of the function object that determines equality between any two cells, as defined in the Pattern concept. |
|
|
The type of the underlying object that represents the manner in which the cells are connected together, as defined in the Pattern concept. |
|
|
An unsigned integral type for representing either the index of a cell or the number of such cells, as defined in the Pattern concept. |
|
|
The type that represents whether the edges in the underlying graph are undirected, directed, or bidirectional, as defined in the Pattern concept. |
|
|
The type that represents the course or bearing that is followed when traversing an edge in the underlying graph, as defined in the Pattern concept. |
|
|
The type that represents the number of edges from a source vertex in the underlying graph, as defined in the Pattern concept. |
|
|
The type that indicates that the entrance and exit cells are indexable, as defined in the Pattern concept. |
|
|
Constructs a new |
|
|
Destroys this |
|
||||||||||||||||||||||||
|
Initializes this
You can also pass the arguments by name. (In this case, it is recommended that you do so; otherwise, the arguments may be indistinguishable from each other.) Use the parameter table above to look up the parameter names. Remember that each parameter name resides in the |
|
||||||||||
|
Initializes this |
|
|
Returns a const reference to the underlying object that represents the manner in which the cells are connected together in this |
|
|
Returns the number of cells in this |
|
|
Returns a const reference to the cell in this |
|
|
Returns a const reference to the entrance cell in the solution path of an overlying maze, as defined in the Pattern concept. |
|
|
Returns a const reference to the cell that topologically follows the entrance cell in the solution path of an overlying maze, as defined in the Pattern concept. |
|
|
Returns a const reference to the cell that topologically precedes the exit cell in the solution path of an overlying maze, as defined in the Pattern concept. |
|
|
Returns a const reference to the exit cell in the solution path of an overlying maze, as defined in the Pattern concept. |
|
||||||||||||
|
Returns a representation of the course or bearing that is followed when traversing the corresponding edge in the underlying graph, as defined in the Pattern concept. |
|
|
Returns the maximum number of edges from any source vertex in the underlying graph, as defined in the Pattern concept. |
Multi-State Mazes in C++ is hosted by . Use the Table of Contents for navigation.