Arcane  v3.16.0.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
constexpr ArrayView() noexcept
Construit une vue vide.
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.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Paramètres nécessaires à la construction d'une variable.
Infos caractérisant une variable.
void updateFromInternal() override
Mise à jour à partir de la partie interne.
VariableRefArrayT(const VariableRefArrayT< DataType > &rhs)
Construit une référence à partir de rhs.
Integer arraySize() const override
Si la variable est un tableau, retourne sa dimension, sinon retourne 0.
VariableRefArrayT(IVariable *var)
Construit une référence à partir de var.
DataType ElementType
Type des éléments de la variable.
VariableRefArrayT(const VariableBuildInfo &vb)
Construit une référence à une variable tableau spécifiée dans vb.
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.
VariableRef(const VariableBuildInfo &vbi)
Construit une référence sur une variable avec les infos vbi.
Informations caractérisant le type d'une variable.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.