12#ifndef ARCANE_CORE_ITEMENUMERATOR_H
13#define ARCANE_CORE_ITEMENUMERATOR_H
17#include "arcane/core/ItemInternalEnumerator.h"
18#include "arcane/core/Item.h"
19#include "arcane/core/EnumeratorTraceWrapper.h"
20#include "arcane/core/IItemEnumeratorTracer.h"
21#include "arcane/core/ItemEnumeratorBase.h"
43class ItemEnumeratorCS;
45class ItemEnumeratorPOD;
48extern "C++" ARCANE_CORE_EXPORT
49void _arcaneInternalItemEnumeratorSwigSet(
const ItemEnumerator* ie, ItemEnumeratorPOD* vpod);
59 friend class ItemEnumeratorCS;
116 ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
121 ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
126 ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
155 ItemSharedInfo* _sharedInfo()
const {
return _internalItemBase().m_shared_info; }
165inline ItemEnumeratorBase::
168, m_index(rhs.index())
169, m_group_impl(rhs.group())
180, m_item(rhs._internalItemBase())
187inline ItemEnumeratorBase::
190, m_index(rhs.index())
191, m_group_impl(rhs.group())
198template<
typename ItemType>
inline ItemEnumeratorBaseT<ItemType>::
199ItemEnumeratorBaseT(
const ItemEnumerator& rhs)
200: ItemEnumeratorBase(rhs)
201, m_item(rhs._internalItemBase())
208template<
typename ItemType>
inline ItemEnumeratorBaseT<ItemType>::
209ItemEnumeratorBaseT(
const ItemInternalEnumerator& rhs)
210: ItemEnumeratorBaseT(ItemEnumerator(rhs))
217template<
typename ItemType>
inline ItemEnumerator ItemEnumeratorBaseT<ItemType>::
218toItemEnumerator()
const
220 return ItemEnumerator(m_view,m_index,m_group_impl,m_item);
231template<
typename ItemType>
238 using LocalIdType =
typename ItemType::LocalIdType;
254 [[deprecated(
"Y2021: Use strongly typed enumerator (Node, Face, Cell, ...) instead of generic (Item) enumerator")]]
258 [[deprecated(
"Y2021: Use strongly typed enumerator (Node, Face, Cell, ...) instead of generic (Item) enumerator")]]
264 ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
268 ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
272 ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
312 ItemEnumeratorT(
const ItemEnumerator& rhs,
bool v) : BaseClass(rhs,v){}
318inline ItemEnumerator ItemVectorView::
337template<
typename ItemType>
inline ItemLocalId::
338ItemLocalId(ItemEnumeratorT<ItemType> enumerator)
339: m_local_id(enumerator.asItemLocalId())
347ItemLocalId(ItemConnectedEnumerator enumerator)
348: m_local_id(enumerator.asItemLocalId())
355template<
typename ItemType>
inline ItemLocalId::
356ItemLocalId(ItemConnectedEnumeratorT<ItemType> enumerator)
357: m_local_id(enumerator.asItemLocalId())
365template<
typename ItemType>
inline ItemLocalIdT<ItemType>::
366ItemLocalIdT(ItemEnumerator enumerator)
367: ItemLocalId(enumerator.asItemLocalId())
374template<
typename ItemType>
inline ItemLocalIdT<ItemType>::
375ItemLocalIdT(ItemConnectedEnumeratorT<ItemType> enumerator)
376: ItemLocalId(enumerator.asItemLocalId())
388#define ARCANE_CHECK_ENUMERATOR(enumerator,testgroup) \
389 ARCANE_ASSERT(((enumerator).group()==(testgroup).internal()),("Invalid access on partial data using enumerator not associated to underlying group %s",testgroup.name().localstr()))
394#define A_ENUMERATE_ITEM(_EnumeratorClassName,iname,view) \
395 for( A_TRACE_ITEM_ENUMERATOR(_EnumeratorClassName) iname(_EnumeratorClassName :: fromItemEnumerator((view).enumerator()) A_TRACE_ENUMERATOR_WHERE); iname.hasNext(); ++iname )
397#define A_ENUMERATE_ITEM_NO_TRACE(_EnumeratorClassName,iname,view) \
398 for( _EnumeratorClassName iname(_EnumeratorClassName :: fromItemEnumerator((view).enumerator())); iname.hasNext(); ++iname )
404#define ENUMERATE_NO_TRACE_(type,name,group) A_ENUMERATE_ITEM_NO_TRACE(::Arcane::ItemEnumeratorT< type >,name,group)
407#define ENUMERATE_(type,name,group) A_ENUMERATE_ITEM(::Arcane::ItemEnumeratorT< type >,name,group)
410#define ENUMERATE_GENERIC(type,name,group) A_ENUMERATE_ITEM(::Arcane::ItemEnumeratorT< type >,name,group)
413#define ENUMERATE_ITEM(name,group) A_ENUMERATE_ITEM(::Arcane::ItemEnumerator,name,group)
415#define ENUMERATE_ITEMWITHNODES(name,group) ENUMERATE_(::Arcane::ItemWithNodes,name,group)
418#define ENUMERATE_NODE(name,group) ENUMERATE_(::Arcane::Node,name,group)
421#define ENUMERATE_EDGE(name,group) ENUMERATE_(::Arcane::Edge,name,group)
424#define ENUMERATE_FACE(name,group) ENUMERATE_(::Arcane::Face,name,group)
427#define ENUMERATE_CELL(name,group) ENUMERATE_(::Arcane::Cell,name,group)
430#define ENUMERATE_PARTICLE(name,group) ENUMERATE_(::Arcane::Particle,name,group)
433#define ENUMERATE_DOF(name,group) ENUMERATE_(::Arcane::DoF,name,group)
445#define ENUMERATE_ITEMPAIR(_item_type1,_item_type2,_name,_array) \
446for( ::Arcane::ItemPairEnumeratorT< _item_type1, _item_type2 > _name(_array); _name.hasNext(); ++_name )
452#define ENUMERATE_ITEMPAIR_DIRECT(_name,_array) \
453for( ::Arcane::ItemPairEnumerator _name(_array); _name.hasNext(); ++_name )
465#define ENUMERATE_SUB_ITEM(_item_type,_name,_parent_item) \
466for( ::Arcane::ItemEnumeratorT< _item_type > _name(_parent_item.subItems()); _name.hasNext(); ++_name )
472#define ENUMERATE_SUB_ITEM_DIRECT(_name,_parent_item) \
473for( ::Arcane::ItemInternalEnumerator _name(_parent_item.subItems()); _name.hasNext(); ++_name )
Types et macros pour itérer sur les entités du maillage connectées à une autre entité.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
Groupe d'entités de maillage.
Classe de base des vues spécialisées des informations sur les entités.
Vue sur une liste pour obtenir des informations sur les entités.
Enumérateur sur un tableau de tableaux d'entités du maillage de genre ItemType et SubItemType.
Enumérateur sur un tableau de tableaux d'entités du maillage.
Vue sur un tableau typé d'entités.
Vue sur un vecteur d'entités.
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
Classe de base d'un élément de maillage.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-