Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemGroupRangeIterator.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* ItemGroupRangeIterator.h (C) 2000-2023 */
9/* */
10/* Intervalle d'itération sur les entités d'un groupe du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMGROUPRANGEITERATOR_H
13#define ARCANE_ITEMGROUPRANGEITERATOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ItemInfoListView.h"
18#include "arcane/Item.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29class ItemInternal;
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33/*!
34 * \brief Iterateur sur les éléments d'un groupe.
35 */
36class ARCANE_CORE_EXPORT ItemGroupRangeIterator
37{
38 public:
39
40 typedef ItemInternal* ItemPtr;
41 typedef ItemPtr* Iterator;
42
45
46 public:
47
48 inline void operator++()
49 {
50 ++m_current;
51 }
52 inline bool hasNext() const
53 {
54 return m_current < m_end;
55 }
56 inline Integer itemLocalId() const
57 {
58 return m_items_local_ids[m_current];
59 }
60 inline Integer index() const
61 {
62 return m_current;
63 }
64 inline eItemKind kind() const
65 {
66 return m_kind;
67 }
68
69 protected:
70
71 eItemKind m_kind;
72 Integer m_current;
73 Integer m_end;
74 const Int32* ARCANE_RESTRICT m_items_local_ids;
75 ItemInfoListView m_items;
76};
77
78/*---------------------------------------------------------------------------*/
79/*---------------------------------------------------------------------------*/
80/*!
81 * \brief Intervalle d'itération sur un groupe d'entités de maillage.
82 */
83template <typename T>
86{
87 public:
88
89 inline ItemGroupRangeIteratorT(const ItemGroup& group)
91 {
92 }
95 {
96 }
97
98 public:
99
100 T operator*() const
101 {
102 return T(m_items[m_items_local_ids[m_current]]);
103 }
104};
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108
109} // namespace Arcane
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114#endif
Intervalle d'itération sur un groupe d'entités de maillage.
Iterateur sur les éléments d'un groupe.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Vue sur une liste pour obtenir des informations sur les entités.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.