12#ifndef ARCANE_ITEMCONNECTEDENUMERATORBASE_H
13#define ARCANE_ITEMCONNECTEDENUMERATORBASE_H
17#include "arcane/ItemInternalEnumerator.h"
18#include "arcane/Item.h"
40class ItemConnectedEnumeratorBase
43 template <
typename T>
friend class ItemConnectedEnumeratorBaseT;
47 ItemConnectedEnumeratorBase() =
default;
49 : m_local_ids(local_ids.
data())
50 , m_count(local_ids.
size())
53 : m_local_ids(rhs._localIds().
data())
54 , m_count(rhs._localIds().
size())
55 , m_local_id_offset(rhs._localIdOffset())
58 : m_local_ids(local_ids)
75 return m_index < m_count;
79 constexpr bool hasNext()
const {
return m_index < m_count; }
91 constexpr Int32 localId()
const {
return m_local_id_offset + m_local_ids[m_index]; }
95 const Int32* ARCANE_RESTRICT m_local_ids =
nullptr;
98 Int32 m_local_id_offset = 0;
109template <
typename ItemType>
110class ItemConnectedEnumeratorBaseT
111:
public ItemConnectedEnumeratorBase
113 friend class ItemConnectedEnumerator;
118 using LocalIdType =
typename ItemType::LocalIdType;
119 using BaseClass = ItemConnectedEnumeratorBase;
123 ItemConnectedEnumeratorBaseT()
125 , m_item(NULL_ITEM_LOCAL_ID, ItemSharedInfo::nullInstance())
129 : BaseClass(local_ids)
130 , m_item(NULL_ITEM_LOCAL_ID, shared_info)
134 : ItemConnectedEnumeratorBaseT(view.m_shared_info, view.constLocalIds())
139 , m_item(NULL_ITEM_LOCAL_ID, rhs.m_shared_info)
143 : ItemConnectedEnumeratorBase(local_ids,
index, n)
150 constexpr ItemType operator*()
const
152 m_item.m_local_id = m_local_id_offset + m_local_ids[m_index];
155 constexpr const ItemType* operator->()
const
157 m_item.m_local_id = m_local_id_offset + m_local_ids[m_index];
161 constexpr LocalIdType asItemLocalId()
const
163 return LocalIdType{ m_local_id_offset + m_local_ids[m_index] };
168 mutable ItemType m_item = ItemType(NULL_ITEM_LOCAL_ID,
nullptr);
Vue constante d'un tableau de type T.
constexpr const_pointer data() const noexcept
Pointeur sur la mémoire allouée.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
constexpr void operator++()
Incrémente l'index de l'énumérateur.
constexpr Int32 count() const
Nombre d'éléments de l'énumérateur.
constexpr bool operator()() const
Vrai si on n'a pas atteint la fin de l'énumérateur (index()<count())
constexpr ItemLocalId itemLocalId() const
localId() de l'entité courante.
constexpr Int32 localId() const
localId() de l'entité courante.
constexpr Int32 index() const
Indice courant de l'énumérateur.
constexpr bool hasNext() const
Vrai si on n'a pas atteint la fin de l'énumérateur (index()<count())
Enumérateur sur une liste typée d'entités connectées de type ItemType.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
Index d'un Item dans une variable.
Classe de base d'un élément de maillage.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.