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"
37class ItemPairGroupImplNull
38:
public ItemPairGroupImpl
42 ItemPairGroupImplNull() : ItemPairGroupImpl() {}
54class ItemPairGroupImplPrivate
58 ItemPairGroupImplPrivate();
60 ~ItemPairGroupImplPrivate();
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::
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::
165 shared_null =
new ItemPairGroupImplNull();
166 shared_null->addRef();
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));
197 m_p->m_item_group.internal()->detachObserver(
this);
198 m_p->m_sub_item_group.internal()->detachObserver(
this);
207void ItemPairGroupImpl::
246 return m_p->m_item_family;
255 return m_p->m_sub_item_family;
282 return m_p->subKind();
291 return m_p->m_item_group;
300 return m_p->m_sub_item_group;
317 m_p->m_need_recompute =
true;
328 if (m_p->m_need_recompute){
329 m_p->m_need_recompute =
false;
330 if (m_p->m_compute_functor)
331 m_p->m_compute_functor->executeFunctor();
341unguardedIndexes()
const
343 return m_p->m_indexes;
349Array<Int32>& ItemPairGroupImpl::
350unguardedLocalIds()
const
352 return m_p->m_sub_items_local_id;
362 return m_p->m_indexes;
372 return m_p->m_sub_items_local_id;
378void ItemPairGroupImpl::
381 delete m_p->m_compute_functor;
382 m_p->m_compute_functor = functor;
Vue modifiable d'un tableau d'un type T.
Classe de base des vecteurs 1D de données.
Interface d'une famille d'entités.
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.
Vue d'un tableau d'éléments de type T.
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.