14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/Array.h"
17#include "arcane/utils/IFunctor.h"
19#include "arcane/ItemGroupObserver.h"
20#include "arcane/ItemPairGroupImpl.h"
21#include "arcane/ItemPairGroup.h"
22#include "arcane/IItemFamily.h"
23#include "arcane/ItemGroup.h"
24#include "arcane/IMesh.h"
64 inline bool null()
const {
return m_is_null; }
67 inline eItemKind subKind()
const {
return m_sub_kind; }
97ItemPairGroupImplPrivate::
98ItemPairGroupImplPrivate()
100, m_item_family(nullptr)
101, m_sub_item_family(nullptr)
105, m_need_recompute(false)
106, m_compute_functor(nullptr)
114ItemPairGroupImplPrivate::
115ItemPairGroupImplPrivate(
const ItemGroup& group,
const ItemGroup& sub_group)
116: m_mesh(group.mesh())
117, m_item_family(group.itemFamily())
118, m_sub_item_family(sub_group.itemFamily())
120, m_sub_item_group(sub_group)
122, m_kind(group.itemKind())
123, m_sub_kind(sub_group.itemKind())
124, m_need_recompute(false)
125, m_compute_functor(nullptr)
133ItemPairGroupImplPrivate::
134~ItemPairGroupImplPrivate()
136 delete m_compute_functor;
142void ItemPairGroupImplPrivate::
153ItemPairGroupImpl* ItemPairGroupImpl::shared_null= 0;
161ItemPairGroupImpl* ItemPairGroupImpl::
165 shared_null =
new ItemPairGroupImplNull();
175ItemPairGroupImpl(
const ItemGroup& group,
const ItemGroup& sub_group)
176: m_p (new ItemPairGroupImplPrivate(group,sub_group))
178 m_p->m_item_group.internal()->attachObserver(
this,
newItemGroupObserverT(m_p,&ItemPairGroupImplPrivate::invalidate));
179 m_p->m_sub_item_group.internal()->attachObserver(
this,
newItemGroupObserverT(m_p,&ItemPairGroupImplPrivate::invalidate));
187: m_p (new ItemPairGroupImplPrivate())
207void ItemPairGroupImpl::
282 return m_p->subKind();
291 return m_p->m_item_group;
300 return m_p->m_sub_item_group;
330 if (m_p->m_compute_functor)
341unguardedIndexes()
const
343 return m_p->m_indexes;
349Array<Int32>& ItemPairGroupImpl::
350unguardedLocalIds()
const
352 return m_p->m_sub_items_local_id;
358ArrayView<Int64> ItemPairGroupImpl::
362 return m_p->m_indexes;
368Span<const Int32> ItemPairGroupImpl::
372 return m_p->m_sub_items_local_id;
378void ItemPairGroupImpl::
379setComputeFunctor(IFunctor* functor)
381 delete m_p->m_compute_functor;
382 m_p->m_compute_functor = functor;
Interface d'une famille d'entités.
void detachObserver(const void *ref)
Détache un observer.
Groupe d'entités de maillage.
virtual ~ItemPairGroupImplNull()
Libère les ressources.
eItemKind m_kind
Genre de entités du groupe.
bool m_need_recompute
Vrai si le groupe doit être recalculé
IItemFamily * m_item_family
Famille associée.
IItemFamily * m_sub_item_family
Famille associée.
IMesh * m_mesh
Gestionnare de groupe associé
bool m_is_null
true si le groupe est nul
IMesh * mesh() const
Maillage auquel appartient le groupe (0 pour le groupe nul).
eItemKind subItemKind() const
Genre du groupe. Il s'agit du genre de ses éléments.
const ItemGroup & itemGroup() const
Groupe des entités.
bool checkNeedUpdate()
Réactualise le groupe si nécessaire.
void checkValid()
Vérifie que le groupe est valide.
eItemKind itemKind() const
Genre du groupe. Il s'agit du genre de ses éléments.
virtual void addRef()
Incrémente le compteur de référence.
IItemFamily * subItemFamily() const
Familly à laquelle appartient le groupe (ou 0 si aucune)
IItemFamily * itemFamily() const
Familly à laquelle appartient le groupe (ou 0 si aucune)
const ItemGroup & subItemGroup() const
Groupe des sous-entités.
void invalidate(bool force_recompute)
Invalide le groupe.
virtual ~ItemPairGroupImpl()
Libère les ressources.
bool null() const
Retourne true si le groupe est nul.
virtual void removeRef()
Décrémente le compteur de référence.
void addRef() override
Incrémente le compteur de référence.
void removeRef() override
Décrémente le compteur de référence.
Classe de base des vecteurs 1D de données.
virtual void executeFunctor()=0
Exécute la méthode associé
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
@ IK_Unknown
Entité de maillage de genre inconnu ou non initialisé
IItemGroupObserver * newItemGroupObserverT(T *object, typename IItemGroupObserver::FuncTraits< T >::FuncPtr funcptr)
Utilitaire pour création simplifié de ItemGroupObserverT.