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
MultiArray2View.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/* MultiArray2View.h (C) 2000-2025 */
9/* */
10/* Vue d'un tableau 2D à taille multiple. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_MULTIARRAY2VIEW_H
13#define ARCANE_UTILS_MULTIARRAY2VIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/ArrayView.h"
19
20#include <type_traits>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33template <class DataType>
35{
36 public:
37
40 : m_buffer(buf)
41 , m_indexes(indexes)
42 , m_sizes(sizes)
43 {}
44
45 MultiArray2View() = default;
46
47 public:
48
50 Int32 dim1Size() const { return m_sizes.size(); }
55 ARCANE_DEPRECATED_122 Int32 size() const { return dim1Size(); }
57 ConstArrayView<Int32> dim2Sizes() const { return m_sizes; }
59 Int32 totalNbElement() const { return m_buffer.size(); }
60
61 public:
62
65 {
66 return ArrayView<DataType>(this->m_sizes[i], &this->m_buffer[this->m_indexes[i]]);
67 }
68
70 {
71 return ConstArrayView<DataType>(this->m_sizes[i], this->m_buffer.data() + (this->m_indexes[i]));
72 }
73
74 private:
75
76 ArrayView<DataType> m_buffer;
77 ConstArrayView<Int32> m_indexes;
79};
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
86template <class DataType>
88{
89 private:
90
91 friend class MultiArray2<DataType>;
92
93 public:
94
98 : m_buffer(buf)
99 , m_indexes(indexes)
100 , m_sizes(sizes)
101 {}
102
104
105 public:
106
108 Int32 dim1Size() const { return m_sizes.size(); }
113 ARCANE_DEPRECATED_122 Int32 size() const { return dim1Size(); }
115 ConstArrayView<Int32> dim2Sizes() const { return m_sizes; }
117 Int32 totalNbElement() const { return m_buffer.size(); }
118
119 public:
120
123 {
124 return ConstArrayView<DataType>(this->m_sizes[i], this->m_buffer.data() + (this->m_indexes[i]));
125 }
126
127 private:
128
130 ConstArrayView<Int32> m_indexes;
131 ConstArrayView<Int32> m_sizes;
132};
133
134/*---------------------------------------------------------------------------*/
135/*---------------------------------------------------------------------------*/
142template <class DataType>
144{
145 private:
146
147 friend class MultiArray2<std::remove_cv_t<DataType>>;
148
149 public:
150
152 JaggedSmallSpan() = default;
153
154 private:
155
157 JaggedSmallSpan(SmallSpan<DataType> buf, SmallSpan<const Int32> indexes,
158 SmallSpan<const Int32> sizes)
159 : m_buffer(buf)
160 , m_indexes(indexes)
161 , m_sizes(sizes)
162 {}
163
164 public:
165
167 constexpr ARCCORE_HOST_DEVICE Int32 dim1Size() const { return m_sizes.size(); }
169 constexpr ARCCORE_HOST_DEVICE SmallSpan<const Int32> dim2Sizes() const { return m_sizes; }
171 constexpr ARCCORE_HOST_DEVICE Int32 totalNbElement() const { return m_buffer.size(); }
172
173 public:
174
176 constexpr ARCCORE_HOST_DEVICE SmallSpan<DataType> operator[](Int32 i) const
177 {
178 return m_buffer.subSpan(m_indexes[i], m_sizes[i]);
179 }
180
181 private:
182
183 SmallSpan<DataType> m_buffer;
184 SmallSpan<const Int32> m_indexes;
186};
187
188/*---------------------------------------------------------------------------*/
189/*---------------------------------------------------------------------------*/
190
191} // namespace Arcane
192
193/*---------------------------------------------------------------------------*/
194/*---------------------------------------------------------------------------*/
195
196#endif
Déclarations des types utilisés dans Arcane.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
ARCANE_DEPRECATED_122 Int32 size() const
Nombre d'éléments de la première dimension.
ConstMultiArray2View()=default
Vue vide.
Int32 totalNbElement() const
Nombre total d'éléments dans le tableau.
Int32 dim1Size() const
Nombre d'éléments de la première dimension.
ConstMultiArray2View(ConstArrayView< DataType > buf, ConstArrayView< Int32 > indexes, ConstArrayView< Int32 > sizes)
Vue sur la tableau buf.
ConstArrayView< Int32 > dim2Sizes() const
Nombre d'éléments de la deuxième dimension.
ConstArrayView< DataType > operator[](Int32 i) const
i-ème élément du tableau
constexpr __host__ __device__ Int32 totalNbElement() const
Nombre total d'éléments dans le tableau.
JaggedSmallSpan()=default
Vue vide.
constexpr __host__ __device__ Int32 dim1Size() const
Nombre d'éléments de la première dimension.
constexpr __host__ __device__ SmallSpan< DataType > operator[](Int32 i) const
i-ème élément du tableau
constexpr __host__ __device__ SmallSpan< const Int32 > dim2Sizes() const
Nombre d'éléments de la deuxième dimension.
MultiArray2View(ArrayView< DataType > buf, ConstArrayView< Int32 > indexes, ConstArrayView< Int32 > sizes)
Vue sur la tableau buf.
ConstArrayView< DataType > operator[](Int32 i) const
i-ème élément du tableau
ArrayView< DataType > operator[](Int32 i)
i-ème élément du tableau
Int32 totalNbElement() const
Nombre total d'éléments dans le tableau.
Int32 dim1Size() const
Nombre d'éléments de la première dimension.
ARCANE_DEPRECATED_122 Int32 size() const
Nombre d'éléments de la première dimension.
MultiArray2View()=default
Vue vide.
ConstArrayView< Int32 > dim2Sizes() const
Nombre d'éléments de la deuxième dimension.
Classe de base des tableau 2D à taille multiple.
Definition MultiArray2.h:61
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
constexpr __host__ __device__ SmallSpan< T, DynExtent > subSpan(Int32 abegin, Int32 asize) const
Sous-vue à partir de l'élément abegin et contenant asize éléments.
Definition Span.h:756
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int32_t Int32
Type entier signé sur 32 bits.