12#ifndef ARCANE_ITEMPAIRGROUP_H
13#define ARCANE_ITEMPAIRGROUP_H
17#include "arcane/utils/AutoRef.h"
18#include "arcane/utils/Iterator.h"
19#include "arcane/utils/IFunctorWithArgument.h"
21#include "arcane/ItemPairGroupImpl.h"
22#include "arcane/ItemTypes.h"
32class ItemPairEnumerator;
33class ItemPairGroupBuilder;
65 : m_impl(from.m_impl) {}
72 virtual ~ItemPairGroup() {}
77 inline bool null()
const {
return m_impl->null(); }
115 m_impl->invalidate(force_recompute);
135 return (impl->
itemKind()==ik && impl->
subItemKind()==aik) ? impl : ItemPairGroupImpl::checkSharedNull();
168template<
typename ItemKind,
typename SubItemKind>
180 typedef typename TraitsType::ItemType ItemType;
181 typedef typename TraitsType::ItemGroupType ItemGroupType;
182 typedef typename SubTraitsType::ItemType SubItemType;
183 typedef typename SubTraitsType::ItemGroupType SubItemGroupType;
189 :
ItemPairGroup(_check(from.internal(),TraitsType::kind(),SubTraitsType::kind())) {}
190 ItemPairGroupT(
const ThatClass& from)
191 : ItemPairGroup(from) {}
192 ItemPairGroupT(
const ItemGroupType& group,
const SubItemGroupType& sub_group,
194 : ItemPairGroup(group,sub_group,link_kind) {}
195 ItemPairGroupT(
const ItemGroupType& group,
const SubItemGroupType& sub_group,
196 CustomFunctor* functor)
197 : ItemPairGroup(group,sub_group,functor) { }
202 const ThatClass& operator=(
const ThatClass& from)
203 { m_impl = from.internal();
return (*
this); }
204 const ThatClass& operator=(
const ItemPairGroup& from)
205 { _assign(from);
return (*
this); }
209 void _assign(
const ItemPairGroup& from)
211 m_impl = _check(from.internal(),TraitsType::kind(),SubTraitsType::kind());
Encapsulation d'un pointeur avec compteur de référence.
Interface d'une famille d'entités.
Groupe d'entités de maillage.
Enumérateur sur un tableau de tableaux d'entités du maillage.
eItemKind subItemKind() const
Genre du groupe. Il s'agit du genre de ses éléments.
eItemKind itemKind() const
Genre du groupe. Il s'agit du genre de ses éléments.
Référence à un groupe d'un genre donné.
ItemTraitsT< ItemKind > TraitsType
Type de la classe contenant les caractéristiques de l'entité
ItemPairGroupT< ItemKind, SubItemKind > ThatClass
Type de cette classe.
Tableau de listes d'entités.
IFunctorWithArgumentT< ItemPairGroupBuilder & > CustomFunctor
Functor pour un calcul personnalisé des connectivités.
eItemKind itemKind() const
Type des entités du groupe.
const ItemGroup & itemGroup() const
Groupe des items initiaux.
IItemFamily * itemFamily() const
Famille d'entité à laquelle appartient ce groupe (0 pour une liste nulle)
eItemKind subItemKind() const
Type des sous-entités du groupe.
ItemPairGroup(const ItemPairGroup &from)
Constructeur de recopie.
static ItemPairGroupImpl * _check(ItemPairGroupImpl *impl, eItemKind ik, eItemKind aik)
Retourne le groupe impl s'il est du genre kt, le groupe nul sinon.
void checkValid()
Vérification interne de la validité du groupe.
void invalidate(bool force_recompute=false)
Invalide la liste.
IItemFamily * subItemFamily() const
Famille d'entité à laquelle appartient ce groupe (0 pour une liste nulle)
AutoRefT< ItemPairGroupImpl > m_impl
Représentation interne du groupe.
const ItemGroup & subItemGroup() const
Groupe des items finaux (après rebond)
ItemPairGroupImpl * internal() const
Retourne l'implémentation du groupe.
bool null() const
true is le groupe est le groupe nul
IMesh * mesh() const
Maillage auquel appartient cette liste (0 pour une liste nulle)
Interface d'un fonctor avec argument mais sans valeur de retour.
eItemKind
Genre d'entité de maillage.