Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MultiArray2View.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/* MultiArray2View.h (C) 2000-2015 */
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/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23ARCANE_BEGIN_NAMESPACE
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28template<typename DataType> class MultiArray2;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32/*!
33 * \brief Vue modifiable sur un MultiArray2.
34 */
35template<class DataType>
37{
38 public:
39 //! Vue sur la tableau \a buf
41 : m_buffer(buf), m_indexes(indexes), m_sizes(sizes) { }
42 //! Vue vide
44 public:
45 //! Nombre d'éléments de la première dimension.
46 Integer dim1Size() const { return m_sizes.size(); }
47 /*!
48 * \brief Nombre d'éléments de la première dimension.
49 * \deprecated Utiliser dim1Size() à la place.
50 */
51 ARCANE_DEPRECATED_122 Integer size() const { return dim1Size(); }
52 //! Nombre d'éléments de la deuxième dimension
53 IntegerConstArrayView dim2Sizes() const { return m_sizes; }
54 //! Nombre total d'éléments dans le tableau.
55 Integer totalNbElement() const { return m_buffer.size(); }
56 public:
57 //! \a i-ème élément du tableau
59 {
60 return ArrayView<DataType>(this->m_sizes[i],&this->m_buffer[this->m_indexes[i]]);
61 }
62 //! \a i-ème élément du tableau
64 {
65 return ConstArrayView<DataType>(this->m_sizes[i],this->m_buffer.data()+ (this->m_indexes[i]));
66 }
67 private:
68 ArrayView<DataType> m_buffer;
69 IntegerConstArrayView m_indexes;
71};
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75/*!
76 * \brief Vue constante sur un MultiArray2.
77 */
78template<class DataType>
80{
81 private:
82 friend class MultiArray2<DataType>;
83 public:
84 //! Vue sur la tableau \a buf
87 : m_buffer(buf), m_indexes(indexes), m_sizes(sizes) { }
88 //! Vue vide
90 public:
91 //! Nombre d'éléments de la première dimension.
92 Integer dim1Size() const { return m_sizes.size(); }
93 /*!
94 * \brief Nombre d'éléments de la première dimension.
95 * \deprecated Utiliser dim1Size() à la place.
96 */
97 ARCANE_DEPRECATED_122 Integer size() const { return dim1Size(); }
98 //! Nombre d'éléments de la deuxième dimension
99 IntegerConstArrayView dim2Sizes() const { return m_sizes; }
100 //! Nombre total d'éléments dans le tableau.
101 Integer totalNbElement() const { return m_buffer.size(); }
102 public:
103 //! \a i-ème élément du tableau
105 {
106 return ConstArrayView<DataType>(this->m_sizes[i],this->m_buffer.data()+ (this->m_indexes[i]));
107 }
108 private:
110 IntegerConstArrayView m_indexes;
111 IntegerConstArrayView m_sizes;
112};
113
114/*---------------------------------------------------------------------------*/
115/*---------------------------------------------------------------------------*/
116
117ARCANE_END_NAMESPACE
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
121
122#endif
Déclarations des types utilisés dans Arcane.
Vue constante sur un MultiArray2.
ConstMultiArray2View(ConstArrayView< DataType > buf, IntegerConstArrayView indexes, IntegerConstArrayView sizes)
Vue sur la tableau buf.
ConstArrayView< DataType > operator[](Integer i) const
i-ème élément du tableau
ARCANE_DEPRECATED_122 Integer size() const
Nombre d'éléments de la première dimension.
Integer dim1Size() const
Nombre d'éléments de la première dimension.
IntegerConstArrayView dim2Sizes() const
Nombre d'éléments de la deuxième dimension.
Integer totalNbElement() const
Nombre total d'éléments dans le tableau.
Vue modifiable sur un MultiArray2.
MultiArray2View(ArrayView< DataType > buf, IntegerConstArrayView indexes, IntegerConstArrayView sizes)
Vue sur la tableau buf.
IntegerConstArrayView dim2Sizes() const
Nombre d'éléments de la deuxième dimension.
Integer dim1Size() const
Nombre d'éléments de la première dimension.
ConstArrayView< DataType > operator[](Integer i) const
i-ème élément du tableau
ARCANE_DEPRECATED_122 Integer size() const
Nombre d'éléments de la première dimension.
Integer totalNbElement() const
Nombre total d'éléments dans le tableau.
ArrayView< DataType > operator[](Integer i)
i-ème élément du tableau
Classe de base des tableau 2D à taille multiple.
Definition MultiArray2.h:57
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.