Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
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/*---------------------------------------------------------------------------*/
31/*!
32 * \brief Enumérateur sur un tableau d'entités du maillage.
33 */
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/*---------------------------------------------------------------------------*/
74/*!
75 * \brief Enumérateur sur un tableau d'entités du maillage de genre \a ItemType.
76 */
77template<typename ItemType>
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
Enumérateur sur un tableau d'entités du maillage de genre ItemType.
Enumérateur sur un tableau d'entités du maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Vue constante d'un tableau de type T.
constexpr const_pointer data() const noexcept
Pointeur sur la mémoire allouée.
Real2 operator*(Real sca, const Real2Proxy &vec)
Multiplication par un scalaire.
Definition Real2Proxy.h:241