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();
166 shared_null->addRef();
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())
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)
343 return m_p->m_indexes;
352 return m_p->m_sub_items_local_id;
362 return m_p->m_indexes;
368Span<const Int32> ItemPairGroupImpl::
372 return m_p->m_sub_items_local_id;
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.
ItemGroupImpl * internal() const
Retourne l'implémentation du groupe.
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
Implémentation d'un tableau de listes d'entités.
ItemPairGroupImplPrivate * m_p
Implémentation du groupe.
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.
Array< Int32 > & unguardedLocalIds() const
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)
Array< Int64 > & unguardedIndexes() const
const ItemGroup & subItemGroup() const
Groupe des sous-entités.
void invalidate(bool force_recompute)
Invalide le groupe.
virtual ~ItemPairGroupImpl()
Libère les ressources.
void setComputeFunctor(IFunctor *functor)
bool null() const
Retourne true si le groupe est nul.
virtual void removeRef()
Décrémente le compteur de référence.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void addRef() override
Incrémente le compteur de référence.
void removeRef() override
Décrémente le compteur de référence.
virtual void executeFunctor()=0
Exécute la méthode associé
-*- 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.