12#ifndef ARCANE_ANYITEMS_ANYITEMVARIABLE_H
13#define ARCANE_ANYITEMS_ANYITEMVARIABLE_H
17#include "arcane/utils/Exception.h"
19#include "arcane/anyitem/AnyItemGlobal.h"
20#include "arcane/anyitem/AnyItemGroup.h"
21#include "arcane/anyitem/AnyItemLinkFamily.h"
26namespace Arcane::AnyItem
53template<
typename DataType>
65 VariableAdder(Variable<DataType>& variable,
const ItemGroup& group)
72 ARCANE_ASSERT((
m_used ==
true),(
"VariableAdder never used"));
76 template<
typename K,
typename T>
79 ARCANE_ASSERT((
m_used ==
false),(
"VariableAdder already used"));
86 template<
typename K,
typename T>
89 ARCANE_ASSERT((
m_used ==
false),(
"VariableAdder already used"));
145 inline DataType&
operator[](
const LinkFamily::LinkData & item) {
150 inline const DataType&
operator[](
const LinkFamily::LinkData & item)
const {
163 return VariableAdder(*
this,group);
200 ARCANE_ASSERT((old_size <
m_family.groupSize()),(
"Old size greater than new size!"));
223 inline void _insertInternalVariable(ItemGroup group, IVariable* v)
Famille AnyItem (pattern flyweight) Aggrégation de groupes pour décrire des variables / variables par...
bool isPartial(const ItemGroup &group) const
retourne vrai si le groupe est associé à une variable partielle
void removeObserver(IFamilyObserver &observer) const
Supprime un observeur.
void registerObserver(IFamilyObserver &observer) const
Enregistre un observeur.
Integer groupIndex(const ItemGroup &group) const
Position du groupe dans la famille.
Outil pour l'ajout de variable à un groupe.
Variable< DataType > & m_variable
Variable AnyItem.
void operator<<(MeshVariableScalarRefT< K, T > &v)
Liaison d'un variable.
void operator<<(MeshPartialVariableScalarRefT< K, T > &v)
Liaison d'une variable partielle.
const ItemGroup & m_group
Groupe de la variable.
bool m_used
Indicateur sur l'utilisation du Adder.
Variable aggrégée de types quelconques (pas de variables tableaux)
VariableAdder operator[](const ItemGroup &group)
Ajout d'une variable pour un groupe.
void notifyFamilyIsInvalidate()
Notification d'invalidation de la famille.
ArrayView< DataType > valuesAtGroup(const Integer igrp)
Doonnées brutes associées à un groupe identifié relativement à sa famille.
ConstArrayView< IVariable * > variables() const
Tableau des variables.
const DataType & operator[](const Group::BlockItemEnumerator &item) const
Accesseur direct par un enumerateur AnyItem.
Arcane::UniqueArray< IVariable * > m_variables
Conteneur des variables.
ConstArrayView< DataType > valuesAtGroup(const Integer igrp) const
Doonnées brutes associées à un groupe identifié relativement à sa famille.
const DataType & operator[](const LinkFamily::LinkData &item) const
Accesseur direct par un élément de LinkFamily (LinkData)
DataType & operator[](const LinkFamily::LinkData &item)
Accesseur direct par un élément de LinkFamily (LinkData)
const Family & family() const
Accesseur à la famille.
Arcane::UniqueArray< ArrayView< DataType > > m_values
Conteneur des variables génériques.
void notifyFamilyIsIncreased()
Notification d'aggrandissement de la famille.
DataType & operator[](const Group::BlockItemEnumerator &item)
Accesseur direct par un enumerateur AnyItem.
const Family m_family
Famille AnyItem des groupes.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Exception lorsqu'une erreur fatale est survenue.
Interface d'observeurs de famille AnyItem.
Référence à un groupe d'un genre donné.
Groupe d'entités de maillage.
const String & name() const
Nom du groupe.
Integer varIndex() const
Identifiant localId de l'item référencé dans sa famille IItemFamily d'origine.
Integer groupIndex() const
Identifiant du groupe auquel est associé l'item référencé par ce LinkData.
Variable scalaire sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Vecteur 1D de données avec sémantique par valeur (style STL).
IVariable * variable() const
Variable associée.
Int32 Integer
Type représentant un entier.
void arcaneCallFunctionAndTerminateIfThrow(std::function< void()> function)