iterative-solver 0.0
molpro::linalg::array::util::OperationRegister< Args > Struct Template Reference

#include <ArrayHandler.h>

Detailed Description

template<typename... Args>
struct molpro::linalg::array::util::OperationRegister< Args >

Registers operations identified by their Arguments

Template Parameters
Argsarguments to the operation. Consider using reference_wrapper if arguments are references.

Public Types

using OP = std::tuple< Args... >
 

Public Member Functions

template<int N, class ArgEqual >
void push (const Args &...args, ArgEqual equal)
 
void push (const Args &...args)
 Register each operation as it comes with no reordering. More...
 
bool empty ()
 
void clear ()
 

Public Attributes

std::list< std::tuple< Args... > > m_register
 ordered register of operations More...
 

Member Typedef Documentation

◆ OP

template<typename... Args>
using molpro::linalg::array::util::OperationRegister< Args >::OP = std::tuple<Args...>

Member Function Documentation

◆ clear()

template<typename... Args>
void molpro::linalg::array::util::OperationRegister< Args >::clear ( )
inline

◆ empty()

template<typename... Args>
bool molpro::linalg::array::util::OperationRegister< Args >::empty ( )
inline

◆ push() [1/2]

template<typename... Args>
void molpro::linalg::array::util::OperationRegister< Args >::push ( const Args &...  args)
inline

Register each operation as it comes with no reordering.

◆ push() [2/2]

template<typename... Args>
template<int N, class ArgEqual >
void molpro::linalg::array::util::OperationRegister< Args >::push ( const Args &...  args,
ArgEqual  equal 
)
inline

Push a new operation to the register, collecting all operations marked under Nth argument into consecutive groups. Those groups are ordered on a first come basis.

Template Parameters
Nif N >= 0 order operations by grouping identical Nth arguments together, otherwise no reordering
ArgEqualfunctor bool operator()(const Arg&, const Arg&); returning true if two Nth arguments are equal

Member Data Documentation

◆ m_register

template<typename... Args>
std::list<std::tuple<Args...> > molpro::linalg::array::util::OperationRegister< Args >::m_register

ordered register of operations