Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
VariableRefArray.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/* VariableRefArray.h (C) 2000-2021 */
9/* */
10/* Classe gérant une référence sur une variable tableau 1D. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_VARIABLEREFARRAY_H
13#define ARCANE_VARIABLEREFARRAY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/VariableRef.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28template<typename DataType> class VariableRefArrayLockT;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32/*!
33 * \brief Variable tableau.
34 */
35template<typename T>
37: public VariableRef
38, public ArrayView<T>
39{
40 public:
41
42 typedef T DataType;
43 typedef Array<T> ValueType;
44 typedef typename ArrayView<T>::const_reference ConstReturnReferenceType;
45 typedef typename ArrayView<T>::reference ReturnReferenceType;
46
47 //! Type des éléments de la variable
48 typedef DataType ElementType;
49 //! Type de la classe de base
51 //! Type de la classe gérant la valeur de la variable
53 //! Type du tableau permettant d'accéder à la variable
55
56 typedef VariableArrayT<DataType> PrivatePartType;
57
58 typedef VariableRefArrayT<DataType> ThatClass;
59
60 typedef VariableRefArrayLockT<DataType> LockType;
61
62 public:
63
64 //! Construit une référence à une variable tableau spécifiée dans \a vb
65 ARCANE_CORE_EXPORT explicit VariableRefArrayT(const VariableBuildInfo& vb);
66 //! Construit une référence à partir de \a rhs
67 ARCANE_CORE_EXPORT VariableRefArrayT(const VariableRefArrayT<DataType>& rhs);
68 //! Construit une référence à partir de \a var
69 explicit ARCANE_CORE_EXPORT VariableRefArrayT(IVariable* var);
70
71 //! Positionne la référence de l'instance à la variable \a rhs.
72 ARCANE_CORE_EXPORT void refersTo(const VariableRefArrayT<DataType>& rhs);
73
74 ARCANE_CORE_EXPORT ~VariableRefArrayT() override; //!< Libère les ressources
75
76 public:
77
78 //! Redimensionne le tableau pour contenir \a new_size éléments
79 virtual ARCANE_CORE_EXPORT void resize(Integer new_size);
80
81 //! Redimensionne le tableau pour contenir \a new_size éléments
82 virtual ARCANE_CORE_EXPORT void resizeWithReserve(Integer new_size,Integer nb_additional);
83
84 public:
85
86 virtual bool isArrayVariable() const { return true; }
87 Integer arraySize() const override { return this->size(); }
88 ARCANE_CORE_EXPORT void updateFromInternal() override;
89
90 public:
91
92 ArrayView<DataType> asArray() { return (*this); }
93 ConstArrayView<DataType> asArray() const { return (*this); }
94
95 public:
96
97 ARCCORE_DEPRECATED_2021("This method is internal to Arcane")
98 LockType ARCANE_CORE_EXPORT lock();
99
100 public:
101
102 /*!
103 \brief Retourne le conteneur des valeurs de cette variable.
104 *
105 L'appel à cette méthode n'est possible que pour les variables
106 privées (propriété PPrivate). Pour les autres, une exception est
107 levée (il faut utiliser lock()).
108 */
109 ARCCORE_DEPRECATED_2021("Use _internalTrueData() instead.")
110 ARCANE_CORE_EXPORT ContainerType& internalContainer();
111
112 public:
113
114 //! \internal
115 ARCANE_CORE_EXPORT IArrayDataInternalT<T>* _internalTrueData();
116
117 public:
118
119 static ARCANE_CORE_EXPORT VariableTypeInfo _internalVariableTypeInfo();
120 static ARCANE_CORE_EXPORT VariableInfo _internalVariableInfo(const VariableBuildInfo& vbi);
121
122 private:
123
124 PrivatePartType* m_private_part;
125
126 private:
127
128 static VariableFactoryRegisterer m_auto_registerer;
129 static VariableRef* _autoCreate(const VariableBuildInfo& vb);
130};
131
132/*---------------------------------------------------------------------------*/
133/*---------------------------------------------------------------------------*/
134
135} // End namespace Arcane
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
139
140#endif
Paramètres nécessaires à la construction d'une variable.
void updateFromInternal() override
Mise à jour à partir de la partie interne.
Integer arraySize() const override
Si la variable est un tableau, retourne sa dimension, sinon retourne 0.
ContainerType & internalContainer()
Retourne le conteneur des valeurs de cette variable.
DataType ElementType
Type des éléments de la variable.
virtual void resizeWithReserve(Integer new_size, Integer nb_additional)
Redimensionne le tableau pour contenir new_size éléments.
ArrayView< DataType > ArrayBase
Type du tableau permettant d'accéder à la variable.
~VariableRefArrayT() override
Libère les ressources.
virtual void resize(Integer new_size)
Redimensionne le tableau pour contenir new_size éléments.
Array< DataType > ContainerType
Type de la classe gérant la valeur de la variable.
VariableRef BaseClass
Type de la classe de base.
void refersTo(const VariableRefArrayT< DataType > &rhs)
Positionne la référence de l'instance à la variable rhs.
Référence à une variable.
Definition VariableRef.h:56
VariableRef()
Constructeur vide.
Vue modifiable d'un tableau d'un type T.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
const value_type & const_reference
Type référence constante d'un élément du tableau.
value_type & reference
Type référence d'un élément du tableau.
Classe de base des vecteurs 1D de données.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-