Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemIndexArrayView.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/* ItemIndexArrayView.h (C) 2000-2024 */
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/*---------------------------------------------------------------------------*/
28/*!
29 * \internal
30 * \brief Vue sur un tableau d'index (localIds()) d'entités.
31 *
32 * \warning la vue n'est valide que tant que le tableau associé n'est
33 * pas modifié. Les instances de cette classe sont en général temporaires
34 * et ne doivent pas être conservées.
35 *
36 * En plus de la liste des entités, cette classe permet d'avoir des
37 * informations supplémentaires comme par exemple si la liste est contigüe.
38 */
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_Contigous = 1 << 1, //!< Les numéros locaux sont contigüs.
56 };
57
58 public:
59
60 //! Construit une vue vide
61 ItemIndexArrayView() = default;
62
63 // TODO: A supprimer
64 //! Construit une vue à partir des numéros locaux \a local_ids
65 explicit ItemIndexArrayView(const Int32ConstArrayView local_ids)
66 : m_view(local_ids, 0)
67 {}
68
70 : m_view(view)
71 {
72 }
73
74 public:
75
76 //! Accède au \a i-ème élément du vecteur
77 inline Int32 operator[](Integer index) const
78 {
79 return m_view.localId(index);
80 }
81
82 //! Nombre d'éléments du vecteur
83 Int32 size() const
84 {
85 return m_view.size();
86 }
87
88 //! Ajoute à \a ids la liste des localIds() du vecteur.
89 void fillLocalIds(Array<Int32>& ids) const;
90
91 //! Sous-vue à partir de l'élément \a abegin et contenant \a asize éléments
92 inline ItemIndexArrayView subView(Integer abegin, Integer asize) const
93 {
94 // On propage le flag F_Contigous sur la sous-vue.
95 // Pour les autres flags, il faudra vérifier s'il faut les propager.
96 return ItemIndexArrayView(m_view._idsWithoutOffset().subView(abegin, asize), m_view.m_local_id_offset, m_flags);
97 }
98
99 Int32 flags() const
100 {
101 return m_flags;
102 }
103
104 //! Vrai si les localIds() sont contigüs
105 bool isContigous() const
106 {
107 return m_flags & F_Contigous;
108 }
109
110 friend std::ostream& operator<<(std::ostream& o, const ItemIndexArrayView& a)
111 {
112 o << a.m_view;
113 return o;
114 }
115
116 public:
117
118 // TODO Rendre obsolète (3.11+)
119 //! Tableau des numéros locaux des entités
121 {
122 return m_view._idsWithoutOffset();
123 }
124
125 ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane. Do not use it")
126 operator Int32ConstArrayView() const
127 {
128 return _localIds();
129 }
130
131 private:
132
133 ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane. Do not use it")
134 const Int32* unguardedBasePointer() const
135 {
136 return _data();
137 }
138
139 ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane. Do not use it")
140 const Int32* data() const
141 {
142 return _data();
143 }
144
145 protected:
146
147 impl::ItemLocalIdListContainerView m_view;
148 Int32 m_flags = 0;
149
150 private:
151
152 ItemIndexArrayView(SmallSpan<const Int32> local_ids, Int32 local_id_offset, Int32 aflags)
153 : m_view(local_ids, local_id_offset)
154 , m_flags(aflags)
155 {}
156
157 const Int32* _data() const
158 {
159 return m_view.m_local_ids;
160 }
161
162 Int32ConstArrayView _localIds() const
163 {
164 return m_view._idsWithoutOffset();
165 }
166 Int32 _localIdOffset() const
167 {
168 return m_view.m_local_id_offset;
169 }
170};
171
172/*---------------------------------------------------------------------------*/
173/*---------------------------------------------------------------------------*/
174
175} // End namespace Arcane
176
177/*---------------------------------------------------------------------------*/
178/*---------------------------------------------------------------------------*/
179
180#endif
Déclarations des types utilisés dans Arcane.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
ItemIndexArrayView(const Int32ConstArrayView local_ids)
Construit une vue à partir des numéros locaux local_ids.
bool isContigous() const
Vrai si les localIds() sont contigüs.
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.
Vue sur un tableau typé d'entités.
Vue sur un vecteur d'entités.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
-*- 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.
Definition UtilsTypes.h:640
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.