Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AnyItemUserGroup.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/* AnyItemUserGroup.h (C) 2000-2022 */
9/* */
10/* Groupe utilisateur aggrégée de types quelconques. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ANYITEM_ANYITEMUSERGROUP_H
13#define ARCANE_ANYITEM_ANYITEMUSERGROUP_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Exception.h"
18
19#include "arcane/anyitem/AnyItemGlobal.h"
20#include "arcane/anyitem/AnyItemPrivate.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::AnyItem
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
50 : public Group
51 , public IFamilyObserver
52{
53private:
54
56
57public:
58
59 UserGroup(const Family& family)
61 , m_family(family)
62 {
64 }
65
67 {
69 }
70
73 {
74 ItemGroup group = builder.group();
75 if (m_groups.findGroupInfo(group.internal()) != NULL)
76 throw FatalErrorException(String::format("Group '{0}' in user group already registered",group.name()));
77
78 const Private::GroupIndexInfo * info = m_family.internal()->findGroupInfo(group);
79 if (info == NULL)
80 throw FatalErrorException(String::format("Group '{0}' in user group not registered in family",group.name()));
81
82 if(builder.isPartial() != info->is_partial)
83 throw FatalErrorException(String::format("Group '{0}' in user group is not same in family",group.name()));
84
85 m_currents.add(*info);
86 return *this;
87 }
88
90 inline void clear() {
92 }
93
96 // Si la famille change, on invalide le groupe
97 clear();
98 }
99
102 // On ne fait rien dans ce cas
103 }
104
105private:
106
109
112};
113
114/*---------------------------------------------------------------------------*/
115/*---------------------------------------------------------------------------*/
116
117} // End namespace Arcane::AnyItem
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
121
122#endif /* ARCANE_ANYITEM_ANYITEMUSERGROUP_H */
Famille AnyItem (pattern flyweight) Aggrégation de groupes pour décrire des variables / variables par...
void removeObserver(IFamilyObserver &observer) const
Supprime un observeur.
void registerObserver(IFamilyObserver &observer) const
Enregistre un observeur.
Outil pour construire un groupe.
Groupe AnyItem Agglomération de groupe Arcane + informations {partiel ou non} pour les variables Cons...
const Private::GroupIndexMapping & m_groups
Table Groupe - offset.
Groupe utilisateur pour spécifier des groupes (Arcane) sur lesquels on souhaite itérer ces groupes do...
void clear()
Vide le groupe.
GroupIndexMapping m_currents
Table Groupe - offset.
UserGroup & operator<<(GroupBuilder builder)
Ajout d'un groupe arcane au groupe.
void notifyFamilyIsIncreased()
Si la famille est agrandie, pas d'impact sur le groupe.
const Family m_family
Famille AnyItem (copie flyweight)
void notifyFamilyIsInvalidate()
Action si la famille est invalidée : on vide le groupe.
Interface d'observeurs de famille AnyItem.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
ItemGroupImpl * internal() const
Retourne l'implémentation du groupe.
Definition ItemGroup.h:120
const String & name() const
Nom du groupe.
Definition ItemGroup.h:76
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
void clear()
Supprime les éléments du tableau.
Exception lorsqu'une erreur fatale est survenue.
void arcaneCallFunctionAndTerminateIfThrow(std::function< void()> function)