12#ifndef ARCANE_UTILS_RANGEFUNCTOR_H
13#define ARCANE_UTILS_RANGEFUNCTOR_H
17#include "arcane/utils/IRangeFunctor.h"
31template<
typename InstanceType>
37 typedef void (InstanceType::*FunctionType)(Integer i0,Integer size);
41 : m_instance(instance), m_function(function)
49 (m_instance->*m_function)(begin,size);
53 InstanceType* m_instance;
54 FunctionType m_function;
64template<
typename LambdaType>
70 : m_lambda_function(lambda_function)
78 m_lambda_function(begin,size);
82 const LambdaType& m_lambda_function;
92template<
int RankValue,
typename LambdaType>
98 : m_lambda_function(lambda_function)
106 m_lambda_function(loop_range);
110 const LambdaType& m_lambda_function;
122template<
typename LambdaType,
typename... Views>
128 : m_lambda_function(lambda_function), m_views(std::forward_as_tuple(views...))
135 std::tuple<Views...> sub_views;
136 getSubView(sub_views, begin, size, std::make_index_sequence<
sizeof...(Views)>{});
137 std::apply(m_lambda_function, sub_views);
142 template <
size_t... I>
143 void getSubView(std::tuple<Views...>& sub_views, Integer begin, Integer size, std::index_sequence<I...>)
145 ((std::get<I>(std::forward<
decltype(sub_views)>(sub_views)) =
146 std::get<I>(std::forward<
decltype(m_views)>(m_views)).subView(begin,size)), ...);
150 const LambdaType& m_lambda_function;
151 std::tuple<Views...> m_views;
Fonctions mathématiques diverses.
Interface d'un fonctor sur un interval d'itération multi-dimensionnel de dimension RankValue.
Interface d'un fonctor sur un interval d'itération.
Fonctor sur un interval d'itération instancié via une lambda fonction.
void executeFunctor(const ComplexForLoopRanges< RankValue > &loop_range) override
Exécute la méthode associée.
Fonctor sur un interval d'itération instancié via une lambda fonction.
void executeFunctor(Integer begin, Integer size) override
Exécute la méthode associée.
Fonctor sur un interval d'itération instancié via une lambda fonction.
void executeFunctor(Integer begin, Integer size) override
Exécute la méthode associée.
Fonctor sur un interval d'itération.
virtual void executeFunctor(Integer begin, Integer size)
Exécute la méthode associée.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-