Tatooine
Public Member Functions | Public Attributes | Private Member Functions | List of all members
tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex > Struct Template Reference

#include <for_loop.h>

Collaboration diagram for tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >:
[legend]

Public Member Functions

template<typename Iteration >
constexpr auto operator() (Iteration &&iteration) const
 

Public Attributes

std::array< Int, N > & m_status
 
std::array< Int, N > const & m_begins
 
std::array< Int, N > const & m_ends
 

Private Member Functions

template<std::size_t... IndexSequence, invocable< decltype(((void) IndexSequence, Int{}))... > Iteration>
constexpr auto loop (Iteration &&iteration, std::index_sequence< IndexSequence... >) const
 recursively creates loops More...
 

Detailed Description

template<typename Int, std::size_t N, std::size_t I, std::size_t ParallelIndex>
struct tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >
Template Parameters
Intinteger type for counting
Nnumber of nestings
Icurrent nesting number counting backwards from N to 1
ParallelIndexIf I and ParallelIndex are the same and OpenMP is available then the current nested loop will be executed in parallel.

Member Function Documentation

◆ loop()

template<typename Int , std::size_t N, std::size_t I, std::size_t ParallelIndex>
template<std::size_t... IndexSequence, invocable< decltype(((void) IndexSequence, Int{}))... > Iteration>
constexpr auto tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >::loop ( Iteration &&  iteration,
std::index_sequence< IndexSequence... >   
) const
inlineconstexprprivate

recursively creates loops

◆ operator()()

template<typename Int , std::size_t N, std::size_t I, std::size_t ParallelIndex>
template<typename Iteration >
constexpr auto tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >::operator() ( Iteration &&  iteration) const
inlineconstexpr

Member Data Documentation

◆ m_begins

template<typename Int , std::size_t N, std::size_t I, std::size_t ParallelIndex>
std::array<Int, N> const& tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >::m_begins

◆ m_ends

template<typename Int , std::size_t N, std::size_t I, std::size_t ParallelIndex>
std::array<Int, N> const& tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >::m_ends

◆ m_status

template<typename Int , std::size_t N, std::size_t I, std::size_t ParallelIndex>
std::array<Int, N>& tatooine::detail::for_loop::for_loop_impl< Int, N, I, ParallelIndex >::m_status

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