Arcane  v3.16.0.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
ItemArrayEnumerator.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ItemArrayEnumerator.h (C) 2000-2018 */
9/* */
10/* Enumérateur sur un tableau d'entités du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMARRAYENUMERATOR_H
13#define ARCANE_ITEMARRAYENUMERATOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/Item.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class ItemInternal;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
34class ARCANE_CORE_EXPORT ItemArrayEnumerator
35{
36 public:
37 typedef ItemInternal* ItemPtr;
38 typedef ItemPtr* Iterator;
39 public:
40 ItemArrayEnumerator(const Int32ConstArrayView ids,const ItemInternalList& items_internal)
41 : m_current(0),
42 m_end(ids.size()),
43 m_items_local_id(ids.data()),
44 m_items_internal(items_internal.data())
45 {
46 }
47 ItemArrayEnumerator(const Int32* ids,Integer nb_item,const ItemPtr* items_internal)
48 : m_current(0),
49 m_end(nb_item),
50 m_items_local_id(ids),
51 m_items_internal(items_internal)
52 {
53 }
54 public:
55 inline void operator++()
56 { ++m_current; }
57 inline bool hasNext() const
58 { return m_current<m_end; }
59 inline Integer itemLocalId() const
60 { return m_items_local_id[m_current]; }
61 inline Integer index() const
62 { return m_current; }
63 inline Item operator*() const
64 { return Item(m_items_internal,m_items_local_id[m_current]); }
65 protected:
66 Integer m_current;
67 Integer m_end;
68 const Int32* ARCANE_RESTRICT m_items_local_id;
69 const ItemPtr* m_items_internal;
70};
71
72/*---------------------------------------------------------------------------*/
73/*---------------------------------------------------------------------------*/
77template<typename ItemType>
78class ItemArrayEnumeratorT
79: public ItemArrayEnumerator
80{
81 public:
82 ItemArrayEnumeratorT(const Int32ConstArrayView ids,const ItemInternalList& items_internal)
83 : ItemArrayEnumerator(ids,items_internal)
84 {
85 }
86 ItemArrayEnumeratorT(const Int32* ids,Integer nb_item,const ItemPtr* items_internal)
87 : ItemArrayEnumerator(ids,nb_item,items_internal)
88 {
89 }
90 inline ItemType operator*() const
91 { return ItemType(m_items_internal,m_items_local_id[m_current]); }
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97ARCANE_END_NAMESPACE
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102#endif
constexpr const_pointer data() const noexcept
Pointeur sur la mémoire allouée.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Structure interne d'une entité de maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
ConstArrayView< ItemInternal * > ItemInternalList
Type de la liste interne des entités.
Definition ItemTypes.h:466
std::int32_t Int32
Type entier signé sur 32 bits.