Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
VariableRefArray2.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/* VariableRefArray2.h (C) 2000-2020 */
9/* */
10/* Classe gérant une référence sur une variable tableau 2D. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_VARIABLEREFARRAY2_H
13#define ARCANE_VARIABLEREFARRAY2_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array2View.h"
18#include "arcane/VariableRef.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28/*!
29 * \brief Variable tableau bi dimensionnel.
30 *
31 * Cette variable gère des tableaux 2D classiques.
32 */
33template<typename T>
35: public VariableRef
36, public Array2View<T>
37{
38 public:
39
40 typedef T DataType;
41 typedef Array2<T> ValueType;
42 typedef ConstArrayView<T> ConstReturnReferenceType;
43 typedef ArrayView<T> ReturnReferenceType;
44
45 //! Type des éléments de la variable
46 typedef DataType ElementType;
47 //! Type de la classe de base
49 //! Type de la classe gérant la valeur de la variable
51 //! Type du tableau permettant d'accéder à la variable
53
54 typedef Array2VariableT<DataType> PrivatePartType;
55
56 typedef VariableRefArray2T<DataType> ThatClass;
57
58 public:
59
60 //! Construit une référence à une variable tableau spécifiée dans \a vb
61 ARCANE_CORE_EXPORT VariableRefArray2T(const VariableBuildInfo& vb);
62 //! Construit une référence à partir de \a rhs
63 ARCANE_CORE_EXPORT VariableRefArray2T(const VariableRefArray2T<DataType>& rhs);
64 //! Construit une référence à partir de \a var
65 explicit ARCANE_CORE_EXPORT VariableRefArray2T(IVariable* var);
66 /*!
67 * \brief Opérateur de recopie.
68 * \deprecated Utiliser refersTo() à la place.
69 */
70 ARCCORE_DEPRECATED_2021("Use refersTo() instead.")
71 ARCANE_CORE_EXPORT void operator=(const VariableRefArray2T<DataType>& rhs);
72 virtual ARCANE_CORE_EXPORT ~VariableRefArray2T(); //!< Libère les ressources
73
74 public:
75
76 /*!
77 * \brief Réalloue le nombre d'éléments de la première dimension du tableau.
78 *
79 * Le nombre d'éléments de la seconde dimension est mis à zéro.
80 * \warning la réallocation ne conserve pas les valeurs précédentes.
81 */
82 virtual ARCANE_CORE_EXPORT void resize(Integer new_size);
83
84 /*!
85 * \brief Réalloue le nombre d'éléments du tableau.
86 *
87 * Réalloue le tableau avec \a dim1_size comme taille de la première
88 * dimension et \a dim2_size comme taille de la deuxième.
89 * \warning la réallocation ne conserve pas les valeurs précédentes.
90 */
91 ARCANE_CORE_EXPORT void resize(Integer dim1_size,Integer dim2_size);
92
93 //! Remplit la variable avev la valeur \a value
94 ARCANE_CORE_EXPORT void fill(const DataType& value);
95
96 //! Positionne la référence de l'instance à la variable \a rhs.
97 ARCANE_CORE_EXPORT void refersTo(const VariableRefArray2T<DataType>& rhs);
98
99 public:
100
101 virtual bool isArrayVariable() const { return true; }
102 virtual Integer arraySize() const { return this->dim1Size(); }
103 Integer size() const { return this->dim1Size(); }
104 virtual ARCANE_CORE_EXPORT void updateFromInternal();
105
106 /*!
107 \brief Retourne le conteneur des valeurs de cette variable.
108 *
109 L'appel à cette méthode n'est possible que pour les variables
110 privées (propriété PPrivate).
111 */
112 ARCCORE_DEPRECATED_2021("Use _internalTrueData() instead.")
113 ARCANE_CORE_EXPORT ContainerType& internalContainer();
114
115 public:
116
117 //! \internal
118 ARCANE_CORE_EXPORT IArray2DataInternalT<T>* _internalTrueData();
119
120 public:
121
122 static ARCANE_CORE_EXPORT VariableTypeInfo _internalVariableTypeInfo();
123 static ARCANE_CORE_EXPORT VariableInfo _internalVariableInfo(const VariableBuildInfo& vbi);
124
125 private:
126
127 PrivatePartType* m_private_part;
128
129 private:
130
131 static VariableFactoryRegisterer m_auto_registerer;
132 static VariableRef* _autoCreate(const VariableBuildInfo& vb);
133};
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
137
138} // End namespace Arcane
139
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142
143#endif
144
Paramètres nécessaires à la construction d'une variable.
Variable tableau bi dimensionnel.
void refersTo(const VariableRefArray2T< DataType > &rhs)
Positionne la référence de l'instance à la variable rhs.
DataType ElementType
Type des éléments de la variable.
virtual void resize(Integer new_size)
Réalloue le nombre d'éléments de la première dimension du tableau.
void fill(const DataType &value)
Remplit la variable avev la valeur value.
virtual Integer arraySize() const
Si la variable est un tableau, retourne sa dimension, sinon retourne 0.
ContainerType & internalContainer()
Retourne le conteneur des valeurs de cette variable.
Array2< DataType > ContainerType
Type de la classe gérant la valeur de la variable.
VariableRef BaseClass
Type de la classe de base.
virtual void updateFromInternal()
Mise à jour à partir de la partie interne.
Array2View< DataType > ArrayBase
Type du tableau permettant d'accéder à la variable.
Référence à une variable.
Definition VariableRef.h:56
VariableRef()
Constructeur vide.
Vue modifiable pour un tableau 2D.
constexpr Integer dim1Size() const
Nombre d'éléments de la première dimension.
Classe représentant un tableau 2D classique.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-