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;
 
   48extern "C++" ARCANE_CORE_EXPORT
 
   57: 
public ItemEnumeratorBaseT<Item>
 
   59  friend class ItemEnumeratorCS;
 
   60  friend class ItemGroup;
 
   61  friend class ItemVector;
 
   62  friend class ItemVectorView;
 
   63  friend class ItemPairEnumerator;
 
   64  template<
int Extent> 
friend class ItemConnectedListView;
 
   70  friend class ItemEnumeratorBaseT<
Item>;
 
   71  friend class ItemEnumeratorBaseT<
Node>;
 
   73  friend class ItemEnumeratorBaseT<
Edge>;
 
   74  friend class ItemEnumeratorBaseT<
Face>;
 
   75  friend class ItemEnumeratorBaseT<
Cell>;
 
   76  friend class ItemEnumeratorBaseT<
Particle>;
 
   77  friend class ItemEnumeratorBaseT<
DoF>;
 
   78  friend ARCANE_CORE_EXPORT 
void _arcaneInternalItemEnumeratorSwigSet(
const ItemEnumerator* ie, 
ItemEnumeratorPOD* vpod);
 
   83  using BaseClass = ItemEnumeratorBaseT<Item>;
 
   87  ItemEnumerator() = 
default;
 
   90  : BaseClass(view, 
nullptr)
 
   94  : BaseClass(rhs, 
true)
 
  104  template<
int E> ItemEnumerator(
const ItemConnectedListView<E>& rhs)
 
  111  : BaseClass(items, local_ids, agroup)
 
  116  ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
 
  118  : BaseClass(items, local_ids, n, agroup)
 
  121  ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
 
  123  : BaseClass(items, local_ids, agroup)
 
  126  ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
 
  128  : BaseClass(view, agroup)
 
  135  : BaseClass(s, local_ids)
 
  144  static ItemEnumerator fromItemEnumerator(
const ItemEnumerator& rhs)
 
  146    return ItemEnumerator(rhs);
 
  153  : BaseClass(view, 
index, agroup, item_base)
 
  155  ItemSharedInfo* _sharedInfo()
 const { 
return _internalItemBase().m_shared_info; }
 
 
  165inline ItemEnumeratorBase::
 
  168, m_index(rhs.
index())
 
  169, m_group_impl(rhs.
group())
 
 
  177template<
typename ItemType> 
inline ItemEnumeratorBaseT<ItemType>::
 
  179: ItemEnumeratorBase(rhs,v)
 
  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())
 
  231template<
typename ItemType>
 
  233: 
public ItemEnumeratorBaseT<ItemType>
 
  238  using LocalIdType = 
typename ItemType::LocalIdType;
 
  239  using BaseClass = ItemEnumeratorBaseT<ItemType>;
 
  244  template <
typename I1, 
typename I2> 
friend class ItemPairEnumeratorT;
 
  248  ItemEnumeratorT() = 
default;
 
  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")
 
  266  : BaseClass(items,local_ids,n,agroup){}
 
  268  ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
 
  270  : BaseClass(items,local_ids,agroup){}
 
  272  ARCANE_DEPRECATED_REASON(
"Y2022: Internal to Arcane. Use other constructor")
 
  274  : BaseClass(view,agroup){}
 
  285  : BaseClass(items, local_ids, agroup)
 
  292  : BaseClass(s,local_ids){}
 
  295  : BaseClass(s,view){}
 
  312  ItemEnumeratorT(
const ItemEnumerator& rhs,
bool v) : BaseClass(rhs,v){}
 
 
  337template<
typename ItemType> 
inline ItemLocalId::
 
  338ItemLocalId(ItemEnumeratorT<ItemType> enumerator)
 
  339: m_local_id(enumerator.asItemLocalId())
 
  348: m_local_id(enumerator.asItemLocalId())
 
  355template<
typename ItemType> 
inline ItemLocalId::
 
  357: m_local_id(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é.
Enumérateur sur une liste typée d'entités connectées de type ItemType.
Enumérateur sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
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.
Index d'une entité ItemType dans une variable.
Index d'un Item dans une variable.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.