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;
172 typedef typename BaseClass::DataTypeReturnReference DataTypeReturnReference;
185 const DataType& operator[](
const ItemType& i)
const
187 ARCANE_ASSERT((this->m_table.isUsed()),(
"GroupIndexTable expired"));
189 return this->_value(table[i.localId()]);
191 DataTypeReturnReference operator[](
const ItemType& i)
193 ARCANE_ASSERT((this->m_table.isUsed()),(
"GroupIndexTable expired"));
195 return this->_value(table[i.localId()]);
198 const DataType& operator[](
const ItemGroupRangeIteratorT<ItemType>& i)
const
200 return this->_value(i.index());
202 DataTypeReturnReference operator[](
const ItemGroupRangeIteratorT<ItemType>& i)
204 return this->_value(i.index());
206 const DataType& operator[](
const ItemEnumeratorT<ItemType>& i)
const
208 ARCANE_CHECK_ENUMERATOR(i,this->
itemGroup());
209 return this->_value(i.index());
211 const DataType& operator[](ItemEnumeratorIndexT<ItemType> i)
const
213 return this->_value(i.index());
215 DataTypeReturnReference operator[](
const ItemEnumeratorT<ItemType>& i)
217 ARCANE_CHECK_ENUMERATOR(i,this->
itemGroup());
218 return this->_value(i.index());
220 DataTypeReturnReference operator[](ItemEnumeratorIndexT<ItemType> i)
222 return this->_value(i.index());
224 const DataType& operator[](
const ItemPairEnumeratorSubT<ItemType>& i)
const
226 return this->_value(i.index());
228 DataTypeReturnReference operator[](
const ItemPairEnumeratorSubT<ItemType>& i)
230 return this->_value(i.index());
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.
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.
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.