CDT++
Causal Dynamical Triangulations in C++
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | List of all members
MoveCommand< ManifoldType, ExpectedType, FunctionType > Class Template Reference
+ Collaboration diagram for MoveCommand< ManifoldType, ExpectedType, FunctionType >:

Public Member Functions

 MoveCommand ()=delete
 Remove default ctor.
 
 MoveCommand (ManifoldType t_manifold)
 MoveCommand ctor.
 
void enqueue (move_tracker::move_type const t_move)
 Push a Pachner move onto the move queue.
 
void execute ()
 Execute all moves in the queue on the manifold.
 
auto get_attempted () const -> Counter const &
 Attempted moves by MoveCommand.
 
auto get_const_results () const -> ManifoldType const &
 A read-only reference to the manifold.
 
auto get_failed () const -> Counter const &
 Failed moves by MoveCommand.
 
auto get_results () -> ManifoldType &
 Results of the moves invoked by MoveCommand.
 
auto get_succeeded () const
 Successful moves by MoveCommand.
 
void print_attempts () const
 Print attempted moves.
 
void print_errors () const
 Print move errors.
 
void print_successful () const
 Print successful moves.
 
void reset_counters ()
 Reset counters.
 
auto size () const
 The number of moves on the queue.
 

Static Public Member Functions

static auto as_move_function (move_tracker::move_type const move) -> FunctionType
 Execute a move function on a manifold.
 

Private Types

using Counter = move_tracker::MoveTracker< ManifoldType >
 
using Queue = std::deque< move_tracker::move_type >
 

Private Attributes

Counter m_attempted
 The counter of attempted moves.
 
Counter m_failed
 The counter of failed moves.
 
ManifoldType m_manifold
 The manifold on which to perform moves.
 
Queue m_moves
 The queue of moves to perform.
 
Queue m_moves_to_retry
 The queue of moves to retry.
 
Counter m_succeeded
 The counter of successful moves.
 

Detailed Description

template<typename ManifoldType, typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
class MoveCommand< ManifoldType, ExpectedType, FunctionType >

Definition at line 20 of file Move_command.hpp.

Member Typedef Documentation

◆ Counter

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
using MoveCommand< ManifoldType, ExpectedType, FunctionType >::Counter = move_tracker::MoveTracker<ManifoldType>
private

Definition at line 23 of file Move_command.hpp.

◆ Queue

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
using MoveCommand< ManifoldType, ExpectedType, FunctionType >::Queue = std::deque<move_tracker::move_type>
private

Definition at line 22 of file Move_command.hpp.

Constructor & Destructor Documentation

◆ MoveCommand()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
MoveCommand< ManifoldType, ExpectedType, FunctionType >::MoveCommand ( ManifoldType  t_manifold)
inlineexplicit

MoveCommand ctor.

Parameters
t_manifoldThe manifold to perform moves on

The manifold to perform moves upon should be copied by value into the MoveCommand to ensure moves are executed atomically and either succeed or fail and can be discarded without affecting the original manifold.

Definition at line 68 of file Move_command.hpp.

Member Function Documentation

◆ as_move_function()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
static auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::as_move_function ( move_tracker::move_type const  move) -> FunctionType
inlinestatic

Execute a move function on a manifold.

Parameters
moveThe move to execute
Returns
The move function to execute

Definition at line 182 of file Move_command.hpp.

Referenced by MoveCommand< ManifoldType, ExpectedType, FunctionType >::execute().

◆ enqueue()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
void MoveCommand< ManifoldType, ExpectedType, FunctionType >::enqueue ( move_tracker::move_type const  t_move)
inline

◆ execute()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
void MoveCommand< ManifoldType, ExpectedType, FunctionType >::execute ( )
inline

◆ get_attempted()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::get_attempted ( ) const -> Counter const&
inline

◆ get_const_results()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::get_const_results ( ) const -> ManifoldType const&
inline

◆ get_failed()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::get_failed ( ) const -> Counter const&
inline

◆ get_results()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::get_results ( ) -> ManifoldType&
inline

◆ get_succeeded()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::get_succeeded ( ) const
inline

◆ print_attempts()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
void MoveCommand< ManifoldType, ExpectedType, FunctionType >::print_attempts ( ) const
inline

◆ print_errors()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
void MoveCommand< ManifoldType, ExpectedType, FunctionType >::print_errors ( ) const
inline

◆ print_successful()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
void MoveCommand< ManifoldType, ExpectedType, FunctionType >::print_successful ( ) const
inline

◆ reset_counters()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
void MoveCommand< ManifoldType, ExpectedType, FunctionType >::reset_counters ( )
inline

◆ size()

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
auto MoveCommand< ManifoldType, ExpectedType, FunctionType >::size ( ) const
inline

The number of moves on the queue.

Definition at line 131 of file Move_command.hpp.

References MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_moves.

Member Data Documentation

◆ m_attempted

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
Counter MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_attempted
private

◆ m_failed

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
Counter MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_failed
private

◆ m_manifold

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
ManifoldType MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_manifold
private

◆ m_moves

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
Queue MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_moves
private

◆ m_moves_to_retry

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
Queue MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_moves_to_retry
private

The queue of moves to retry.

Definition at line 38 of file Move_command.hpp.

Referenced by MoveCommand< ManifoldType, ExpectedType, FunctionType >::execute().

◆ m_succeeded

template<typename ManifoldType , typename ExpectedType = std::expected<ManifoldType, std::string>, typename FunctionType = tl::function_ref<ExpectedType(ManifoldType&)>>
Counter MoveCommand< ManifoldType, ExpectedType, FunctionType >::m_succeeded
private

The documentation for this class was generated from the following file: