12#ifndef ARCANE_ANYITEMS_ANYITEMVARIABLEARRAY_H
13#define ARCANE_ANYITEMS_ANYITEMVARIABLEARRAY_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"
22#include "arcane/VariableTypedef.h"
27namespace Arcane::AnyItem
55template<
typename DataType>
67 VariableAdder(VariableArray<DataType>& variable,
const ItemGroup& group)
74 ARCANE_ASSERT((
m_used ==
true),(
"VariableAdder never used"));
78 template<
typename K,
typename T>
81 ARCANE_ASSERT((
m_used ==
false),(
"VariableAdder already used"));
88 template<
typename K,
typename T>
91 ARCANE_ASSERT((
m_used ==
false),(
"VariableAdder already used"));
165 return VariableAdder(*
this,group);
202 ARCANE_ASSERT((old_size <
m_family.groupSize()),(
"Old size greater than new size!"));
225 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.
const ItemGroup & m_group
Groupe de la variable.
VariableArray< DataType > & m_variable
Variable AnyItem.
void operator<<(MeshVariableArrayRefT< K, T > &v)
Liaison d'un variable.
void operator<<(MeshPartialVariableArrayRefT< K, T > &v)
Liaison d'une variable partielle.
bool m_used
Indicateur sur l'utilisation du Adder.
Variable tableau aggrégée de types quelconques (pas de variables tableaux) ATTENTION Les variables ar...
Arcane::UniqueArray< Array2View< DataType > > m_values
Conteneur des variables génériques.
const Family m_family
Famille AnyItem des groupes.
ArrayView< DataType > operator[](const LinkFamily::LinkData &item)
Accesseur direct par un élément de LinkFamily (LinkData)
void notifyFamilyIsIncreased()
Notification d'aggrandissement de la famille.
const Family & family() const
Accesseur à la famille.
ArrayView< DataType > operator[](const Group::BlockItemEnumerator &item)
Accesseur direct par un enumerateur AnyItem.
ConstArray2View< DataType > valuesAtGroup(const Integer igrp) const
Doonnées brutes associées à un groupe identifié relativement à sa famille.
Array2View< DataType > valuesAtGroup(const Integer igrp)
Doonnées brutes associées à un groupe identifié relativement à sa famille.
ConstArrayView< DataType > operator[](const Group::BlockItemEnumerator &item) const
Accesseur direct par un enumerateur AnyItem.
ConstArrayView< IVariable * > variables() const
Tableau des variables.
void notifyFamilyIsInvalidate()
Notification d'invalidation de la famille.
VariableAdder operator[](const ItemGroup &group)
Ajout d'une variable pour un groupe.
Arcane::UniqueArray< IVariable * > m_variables
Conteneur des variables.
ConstArrayView< DataType > operator[](const LinkFamily::LinkData &item) const
Accesseur direct par un élément de LinkFamily (LinkData)
Vue modifiable pour un tableau 2D.
Vue modifiable d'un tableau d'un type T.
Vue pour un tableau 2D constant.
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 tableau 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)