12#ifndef ARCANE_CORE_MESHPARTIALVARIABLESCALARREF_H
13#define ARCANE_CORE_MESHPARTIALVARIABLESCALARREF_H
17#include "arcane/utils/FatalErrorException.h"
19#include "arcane/core/MeshVariableRef.h"
20#include "arcane/core/PrivateVariableScalar.h"
22#include "arcane/core/ItemGroupRangeIterator.h"
23#include "arcane/core/ItemPairEnumerator.h"
24#include "arcane/core/GroupIndexTable.h"
38template<
typename DataTypeT>
44 typedef DataTypeT DataType;
46 typedef const DataType& ConstReturnReferenceType;
47 typedef DataType& ReturnReferenceType;
52 typedef typename BaseClass::PrivatePartType PrivatePartType;
53 typedef typename BaseClass::DataTypeReturnReference DataTypeReturnReference;
71 ARCANE_CORE_EXPORT
void fill(
const DataType& value);
73 ARCANE_CORE_EXPORT
void internalSetUsed(
bool v);
77 const DataType& operator[](
const Item& i)
const
79 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND(i);
80 ARCANE_ASSERT((m_table.isUsed()),(
"GroupIndexTable expired"));
82 return this->_value(table[i.
localId()]);
84 DataTypeReturnReference operator[](
const Item& i)
86 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND(i);
87 ARCANE_ASSERT((m_table.isUsed()),(
"GroupIndexTable expired"));
89 return this->_value(table[i.
localId()]);
92 const DataType& operator[](
const ItemGroupRangeIterator& i)
const
94 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND(i);
95 return this->_value(i.index());
97 const DataType& operator[](
const ItemEnumerator& i)
const
99 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND((*i));
100 ARCANE_CHECK_ENUMERATOR(i,this->itemGroup());
101 return this->_value(i.index());
103 const DataType& operator[](ItemEnumeratorIndex i)
const
105 return this->_value(i.index());
107 const DataType& operator[](
const ItemPairEnumerator& i)
const
109 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND((*i));
110 return this->_value(i.index());
113 DataTypeReturnReference operator[](
const ItemGroupRangeIterator& i)
115 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND(i);
116 return this->_value(i.index());
118 DataTypeReturnReference operator[](
const ItemEnumerator& i)
120 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND((*i));
121 ARCANE_CHECK_ENUMERATOR(i,this->itemGroup());
122 return this->_value(i.index());
124 DataTypeReturnReference operator[](ItemEnumeratorIndex i)
126 return this->_value(i.index());
128 DataTypeReturnReference operator[](
const ItemPairEnumerator& i)
130 ARCANE_CHECK_VALID_ITEM_AND_GROUP_KIND((*i));
131 return this->_value(i.index());
155template<
typename ItemTypeT,
typename DataTypeT>
161 typedef DataTypeT DataType;
162 typedef ItemTypeT ItemType;
164 typedef const DataType& ConstReturnReferenceType;
165 typedef DataType& ReturnReferenceType;
173 typedef typename BaseClass::DataTypeReturnReference DataTypeReturnReference;
186 const DataType& operator[](
const ItemLocalIdType& i)
const
188 ARCANE_ASSERT((this->m_table.isUsed()), (
"GroupIndexTable expired"));
190 return this->_value(table[i.asInt32()]);
192 DataTypeReturnReference operator[](
const ItemLocalIdType& i)
194 ARCANE_ASSERT((this->m_table.isUsed()), (
"GroupIndexTable expired"));
196 return this->_value(table[i.asInt32()]);
199 const DataType& operator[](
const ItemGroupRangeIteratorT<ItemType>& i)
const
201 return this->_value(i.index());
203 DataTypeReturnReference operator[](
const ItemGroupRangeIteratorT<ItemType>& i)
205 return this->_value(i.index());
207 const DataType& operator[](
const ItemEnumeratorT<ItemType>& i)
const
209 ARCANE_CHECK_ENUMERATOR(i,this->
itemGroup());
210 return this->_value(i.index());
212 const DataType& operator[](ItemEnumeratorIndexT<ItemType> i)
const
214 return this->_value(i.index());
216 DataTypeReturnReference operator[](
const ItemEnumeratorT<ItemType>& i)
218 ARCANE_CHECK_ENUMERATOR(i,this->
itemGroup());
219 return this->_value(i.index());
221 DataTypeReturnReference operator[](ItemEnumeratorIndexT<ItemType> i)
223 return this->_value(i.index());
225 const DataType& operator[](
const ItemPairEnumeratorSubT<ItemType>& i)
const
227 return this->_value(i.index());
229 DataTypeReturnReference operator[](
const ItemPairEnumeratorSubT<ItemType>& i)
231 return this->_value(i.index());
Classe de base d'une table de hachage entre les items d'un groupe et leurs positions dans la table.
Interface d'une variable.
Index d'une entité ItemType dans une variable.
ItemPartialVariableScalarRefT(const VariableBuildInfo &vb, eItemKind ik)
Construit une référence à la variable spécifiée dans vb.
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
ItemPartialVariableScalarRefT(IVariable *var)
Construit une référence à partir de var.
void operator=(const ItemPartialVariableScalarRefT< DataType > &rhs)
Opérateur de recopie.
ItemPartialVariableScalarRefT(const ItemPartialVariableScalarRefT< DataType > &rhs)
Construit une référence à partir de rhs.
Caractéristiques des éléments du maillage.
Classe de base d'un élément de maillage.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
void refersTo(const MeshPartialVariableScalarRefT< ItemType, DataType > &rhs)
Positionne la référence de l'instance à la variable rhs.
MeshPartialVariableScalarRefT(const MeshPartialVariableScalarRefT< ItemType, DataType > &rhs)
Construit une référence à partir de rhs.
MeshPartialVariableScalarRefT(const VariableBuildInfo &vb)
Construit une référence à la variable spécifiée dans vb.
GroupType itemGroup() const
Groupe associé à la grandeur.
PrivateVariableScalarT(const VariableBuildInfo &vb, const VariableInfo &vi)
Vecteur 1D de données avec sémantique par valeur (style STL).
Paramètres nécessaires à la construction d'une variable.
Enregistreur d'une fabrique de variables.
Infos caractérisant une variable.
Référence à une variable.
Informations caractérisant le type d'une variable.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.