12#ifndef ARCANE_ITEMFUNCTOR_H
13#define ARCANE_ITEMFUNCTOR_H
17#include "arcane/utils/RangeFunctor.h"
18#include "arcane/utils/Functor.h"
20#include "arcane/core/Item.h"
21#include "arcane/core/ItemVectorView.h"
40class ARCANE_CORE_EXPORT AbstractItemRangeFunctor
45 static const Integer DEFAULT_GRAIN_SIZE = 400;
60 Int32 m_block_size = 0;
62 Int32 m_block_grain_size = 0;
76template<
typename InstanceType,
typename ItemType>
77class ItemRangeFunctorT
78:
public AbstractItemRangeFunctor
85 ItemRangeFunctorT(
ItemVectorView items_view,InstanceType* instance,
86 FunctionType function,
Integer grain_size = DEFAULT_GRAIN_SIZE)
87 : AbstractItemRangeFunctor(items_view,grain_size), m_instance(instance),
94 InstanceType* m_instance;
95 FunctionType m_function;
105 (m_instance->*m_function)(sub_view);
116template<
typename LambdaType>
117class LambdaItemRangeFunctorT
118:
public AbstractItemRangeFunctor
121 LambdaItemRangeFunctorT(
ItemVectorView items_view,
const LambdaType& lambda_function,
122 Int32 grain_size = DEFAULT_GRAIN_SIZE)
123 : AbstractItemRangeFunctor(items_view,grain_size), m_lambda_function(lambda_function)
131 Int32 true_begin = 0;
137 if constexpr (std::is_invocable_v<LambdaType, ItemVectorView>)
138 m_lambda_function(sub_view);
140 m_lambda_function(sub_view, true_begin);
145 const LambdaType& m_lambda_function;
153class ItemGroupComputeFunctor
158 ItemGroupComputeFunctor() =
default;
Int32 nbBlock() const
Nombre de blocs.
Int32 blockGrainSize() const
Taille souhaitée d'un intervalle d'itération.
Interface d'un fonctor sur un interval d'itération.
virtual void executeFunctor(Int32 begin, Int32 size)
Exécute la méthode associée.
Vue sur un tableau typé d'entités.
Vue sur un vecteur d'entités.
void executeFunctor(Int32 begin, Int32 size) override
Exécute la méthode associée.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.