CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ReduceAlgorithmFunctor Class Reference

Functor representing the overloads for the reduce function. More...

#include <CeresEngine/Foundation/Algorithm/Reduce.hpp>

Inheritance diagram for CeresEngine::ReduceAlgorithmFunctor:
CeresEngine::BinaryAlgorithmFunctor< ReduceAlgorithmFunctor >

Classes

class  Graph
 

Static Private Member Functions

template<class I , class S , class T , class Fun = std::plus<>>
requires ( // clang-format off traits::is_input_iterator_v<I> && traits::is_sentinel_for_v<S, I> && std::is_same_v<traits::iter_value_t<I>, T> && traits::is_indirectly_binary_invocable_v<Fun, I, I> && std::is_copy_constructible_v<Fun> // clang-format on )
static constexpr T run (I first, S last, T init, Fun op)
 Complete overload of the reduce algorithm.
 
template<class E , class P , class I , class S , class T , class Fun = std::plus<>>
requires ( // clang-format off traits::is_executor_v<E> && traits::is_partitioner_v<P, I, S> && traits::is_input_iterator_v<I> && traits::is_sentinel_for_v<S, I> && std::is_same_v<traits::iter_value_t<I>, T> && traits::is_indirectly_binary_invocable_v<Fun, I, I> && std::is_copy_constructible_v<Fun> // clang-format on )
static Async< Trun (const E &executor, P p, I first, S last, T i, Fun f=Fun())
 Complete overload of the reduce algorithm.
 

Private Attributes

friend BinaryAlgorithmFunctor< ReduceAlgorithmFunctor >
 

Additional Inherited Members

- Public Member Functions inherited from CeresEngine::BinaryAlgorithmFunctor< ReduceAlgorithmFunctor >
constexpr decltype(auto) parallel (const E &executor, P p, I first, S last, T i, Fun f=std::plus<>()) const
 Complete overload.
 
constexpr decltype(auto) parallel (const E &executor, P p, I first, S last, Fun f=std::plus<>()) const
 Overload for default init value.
 
constexpr decltype(auto) parallel (const E &executor, P p, R &&r, T i, Fun f=std::plus<>()) const
 Overload for Ranges.
 
constexpr decltype(auto) parallel (const E &executor, P p, R &&r, Fun f=std::plus<>()) const
 Overload for Ranges / default init value.
 
constexpr decltype(auto) parallel (P p, I first, S last, T i, Fun f=std::plus<>()) const
 Overload for Iterators / default parallel executor.
 
constexpr decltype(auto) parallel (P p, I first, S last, Fun f=std::plus<>()) const
 Overload for Iterators / default parallel executor / default init value.
 
constexpr decltype(auto) parallel (P p, R &&r, T i, Fun f=std::plus<>()) const
 Overload for Ranges / default parallel executor.
 
constexpr decltype(auto) parallel (P p, R &&r, Fun f=std::plus<>()) const
 Overload for Ranges / default parallel executor / default init value.
 
constexpr decltype(auto) parallel (const E &executor, I first, S last, T i, Fun f=std::plus<>()) const
 Overload for Iterators / default partitioner.
 
constexpr decltype(auto) parallel (const E &executor, I first, S last, Fun f=std::plus<>()) const
 Overload for Iterators / default partitioner / default init value.
 
constexpr decltype(auto) parallel (const E &executor, R &&r, T i, Fun f=std::plus<>()) const
 Overload for Ranges / default partitioner.
 
constexpr decltype(auto) parallel (const E &executor, R &&r, Fun f=std::plus<>()) const
 Overload for Ranges / default partitioner / default init value.
 
constexpr decltype(auto) parallel (I first, S last, T i, Fun f=std::plus<>()) const
 Overload for Iterators / default executor / default partitioner.
 
constexpr decltype(auto) parallel (I first, S last, Fun f=std::plus<>()) const
 Iterators / default executor / default partitioner / default init value.
 
constexpr decltype(auto) parallel (R &&r, T i, Fun f=std::plus<>()) const
 Overload for Ranges / default executor / default partitioner.
 
constexpr decltype(auto) operator() (const E &executor, P p, I first, S last, T i, Fun f=std::plus<>()) const
 Complete overload.
 
constexpr decltype(auto) operator() (const E &executor, P p, I first, S last, Fun f=std::plus<>()) const
 
constexpr decltype(auto) operator() (const E &executor, P p, R &&r, T i, Fun f=std::plus<>()) const
 
constexpr decltype(auto) operator() (const E &executor, P p, R &&r, Fun f=std::plus<>()) const
 
constexpr decltype(auto) operator() (const E &executor, I first, S last, T i, Fun f=std::plus<>()) const
 
constexpr decltype(auto) operator() (const E &executor, I first, S last, Fun f=std::plus<>()) const
 
constexpr decltype(auto) operator() (const E &executor, R &&r, T i, Fun f=std::plus<>()) const
 
constexpr decltype(auto) operator() (const E &executor, R &&r, Fun f=std::plus<>()) const
 Overload for Ranges / default partitioner / default init value.
 
constexpr decltype(auto) operator() (I first, S last, T i, Fun f=std::plus<>()) const
 Overload for Iterators / default executor / default partitioner.
 
constexpr decltype(auto) operator() (I first, S last, Fun f=std::plus<>()) const
 Iterators / default executor / default partitioner / default init value.
 
constexpr decltype(auto) operator() (R &&r, T i, Fun f=std::plus<>()) const
 Overload for Ranges / default executor / default partitioner.
 
constexpr decltype(auto) operator() (R &&r, Fun f=std::plus<>()) const
 Ranges / default executor / default partitioner / default init value.
 

Detailed Description

Functor representing the overloads for the reduce function.

Member Function Documentation

◆ run() [1/2]

template<class E , class P , class I , class S , class T , class Fun = std::plus<>>
requires ( // clang-format off traits::is_executor_v<E> && traits::is_partitioner_v<P, I, S> && traits::is_input_iterator_v<I> && traits::is_sentinel_for_v<S, I> && std::is_same_v<traits::iter_value_t<I>, T> && traits::is_indirectly_binary_invocable_v<Fun, I, I> && std::is_copy_constructible_v<Fun> // clang-format on )
static Async< T > CeresEngine::ReduceAlgorithmFunctor::run ( const E executor,
P  p,
I  first,
S  last,
T  i,
Fun  f = Fun() 
)
inlinestaticprivate

Complete overload of the reduce algorithm.

The reduce algorithm is equivalent to a version std::accumulate where the binary operation is applied out of order.

Template Parameters
EExecutor type
PPartitioner type
IIterator type
SSentinel iterator type
FunFunction type
Parameters
exExecutor
pPartitioner
firstIterator to first element in the range
lastIterator to (last + 1)-th element in the range
iInitial value for the reduction
fFunction

◆ run() [2/2]

template<class I , class S , class T , class Fun = std::plus<>>
requires ( // clang-format off traits::is_input_iterator_v<I> && traits::is_sentinel_for_v<S, I> && std::is_same_v<traits::iter_value_t<I>, T> && traits::is_indirectly_binary_invocable_v<Fun, I, I> && std::is_copy_constructible_v<Fun> // clang-format on )
static constexpr T CeresEngine::ReduceAlgorithmFunctor::run ( I  first,
S  last,
T  init,
Fun  op 
)
inlinestaticconstexprprivate

Complete overload of the reduce algorithm.

The reduce algorithm is equivalent to a version std::accumulate where the binary operation is applied out of order.

Template Parameters
IIterator type
SSentinel iterator type
FunFunction type
Parameters
firstIterator to first element in the range
lastIterator to (last + 1)-th element in the range
iInitial value for the reduction
fFunction

Member Data Documentation

◆ BinaryAlgorithmFunctor< ReduceAlgorithmFunctor >

friend CeresEngine::ReduceAlgorithmFunctor::BinaryAlgorithmFunctor< ReduceAlgorithmFunctor >
private

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