Arcane  v3.16.6.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemIndexArrayView.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ItemIndexArrayView.h (C) 2000-2025 */
9/* */
10/* Vue sur un tableau d'index (localIds()) d'entités. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMINDEXARRAYVIEW_H
13#define ARCANE_CORE_ITEMINDEXARRAYVIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
39class ARCANE_CORE_EXPORT ItemIndexArrayView
40{
41 // NOTE: Cette classe est mappée en C# et si on change sa structure il
42 // faut mettre à jour la version C# correspondante.
43 friend ItemVectorView;
44 friend ItemGroup;
45 template <int Extent> friend class ItemConnectedListView;
46 template <typename ItemType, int Extent> friend class ItemConnectedListViewT;
47 template <typename ItemType> friend class ItemVectorViewT;
48
49 public:
50
51 // NOTE: Si on ajoute des valeurs ici, il faut vérifier s'il faut les
52 // propager dans les méthodes telles que subView().
53 enum
54 {
55 F_Contiguous = 1 << 1,
56 F_Contigous = F_Contiguous
57 };
58
59 public:
60
62 ItemIndexArrayView() = default;
63
64 // TODO: A supprimer
66 explicit ItemIndexArrayView(const Int32ConstArrayView local_ids)
67 : m_view(local_ids, 0)
68 {}
69
71 : m_view(view)
72 {
73 }
74
75 public:
76
78 inline Int32 operator[](Integer index) const
79 {
80 return m_view.localId(index);
81 }
82
84 Int32 size() const
85 {
86 return m_view.size();
87 }
88
90 void fillLocalIds(Array<Int32>& ids) const;
91
93 inline ItemIndexArrayView subView(Integer abegin, Integer asize) const
94 {
95 // On propage le flag F_Contigous sur la sous-vue.
96 // Pour les autres flags, il faudra vérifier s'il faut les propager.
97 return ItemIndexArrayView(m_view._idsWithoutOffset().subView(abegin, asize), m_view.m_local_id_offset, m_flags);
98 }
99
100 Int32 flags() const
101 {
102 return m_flags;
103 }
104
105 bool isContigous() const { return isContiguous(); }
106
108 bool isContiguous() const
109 {
110 return m_flags & F_Contigous;
111 }
112
113 friend std::ostream& operator<<(std::ostream& o, const ItemIndexArrayView& a)
114 {
115 o << a.m_view;
116 return o;
117 }
118
119 public:
120
121 // TODO Rendre obsolète (3.11+)
124 {
125 return m_view._idsWithoutOffset();
126 }
127
128 ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane. Do not use it")
129 operator Int32ConstArrayView() const
130 {
131 return _localIds();
132 }
133
134 private:
135
136 ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane. Do not use it")
137 const Int32* unguardedBasePointer() const
138 {
139 return _data();
140 }
141
142 ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane. Do not use it")
143 const Int32* data() const
144 {
145 return _data();
146 }
147
148 protected:
149
150 impl::ItemLocalIdListContainerView m_view;
151 Int32 m_flags = 0;
152
153 private:
154
155 ItemIndexArrayView(SmallSpan<const Int32> local_ids, Int32 local_id_offset, Int32 aflags)
156 : m_view(local_ids, local_id_offset)
157 , m_flags(aflags)
158 {}
159
160 const Int32* _data() const
161 {
162 return m_view.m_local_ids;
163 }
164
165 Int32ConstArrayView _localIds() const
166 {
167 return m_view._idsWithoutOffset();
168 }
169 Int32 _localIdOffset() const
170 {
171 return m_view.m_local_id_offset;
172 }
173};
174
175/*---------------------------------------------------------------------------*/
176/*---------------------------------------------------------------------------*/
177
178} // End namespace Arcane
179
180/*---------------------------------------------------------------------------*/
181/*---------------------------------------------------------------------------*/
182
183#endif
Déclarations des types utilisés dans Arcane.
Tableau d'items de types quelconques.
Vue sur un tableau d'index (localIds()) d'entités.
bool isContiguous() const
Vrai si les localIds() sont contigüs.
ItemIndexArrayView(const Int32ConstArrayView local_ids)
Construit une vue à partir des numéros locaux local_ids.
ItemIndexArrayView subView(Integer abegin, Integer asize) const
Sous-vue à partir de l'élément abegin et contenant asize éléments.
Int32 size() const
Nombre d'éléments du vecteur.
ItemIndexArrayView()=default
Construit une vue vide.
Int32ConstArrayView localIds() const
Tableau des numéros locaux des entités.
Int32 operator[](Integer index) const
Accède au i-ème élément du vecteur.
@ F_Contiguous
Les numéros locaux sont contigüs.
Vue sur le conteneur d'une liste de ItemLocalId.
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
-*- 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.
Definition UtilsTypes.h:569
std::int32_t Int32
Type entier signé sur 32 bits.