Arcane  v3.16.0.0
Documentation développeur
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/*---------------------------------------------------------------------------*/
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
48 typedef DataType ElementType;
55
56 typedef VariableArrayT<DataType> PrivatePartType;
57
58 typedef VariableRefArrayT<DataType> ThatClass;
59
60 typedef VariableRefArrayLockT<DataType> LockType;
61
62 public:
63
65 ARCANE_CORE_EXPORT explicit VariableRefArrayT(const VariableBuildInfo& vb);
67 ARCANE_CORE_EXPORT VariableRefArrayT(const VariableRefArrayT<DataType>& rhs);
69 explicit ARCANE_CORE_EXPORT VariableRefArrayT(IVariable* var);
70
72 ARCANE_CORE_EXPORT void refersTo(const VariableRefArrayT<DataType>& rhs);
73
74 ARCANE_CORE_EXPORT ~VariableRefArrayT() override;
75
76 public:
77
79 virtual ARCANE_CORE_EXPORT void resize(Integer new_size);
80
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
109 ARCCORE_DEPRECATED_2021("Use _internalTrueData() instead.")
110 ARCANE_CORE_EXPORT ContainerType& internalContainer();
111
112 public:
113
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.
Tableau d'items de types quelconques.
Vue constante d'un tableau de type T.
Interface d'une donnée tableau d'un type T.
Interface d'une variable.
Definition IVariable.h:56
Implémentation d'une variable sur un tableau 1D.
Paramètres nécessaires à la construction d'une variable.
Enregistreur d'une fabrique de variables.
Infos caractérisant une variable.
Verrou sur une variable tableau.
IArrayDataInternalT< DataType > * _internalTrueData()
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.