Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemPairGroupImpl.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/* ItemPairGroupImpl.h (C) 2000-2018 */
9/* */
10/* Implémentation d'un tableau de listes d'entités. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMPAIRGROUPIMPL_H
13#define ARCANE_ITEMPAIRGROUPIMPL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ItemTypes.h"
18#include "arcane/SharedReference.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23ARCANE_BEGIN_NAMESPACE
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IMesh;
29class ItemPairGroupImplPrivate;
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33/*!
34 * \internal
35 * \brief Implémentation d'un tableau de listes d'entités.
36 */
37class ARCANE_CORE_EXPORT ItemPairGroupImpl
38: public SharedReference
39{
40 public:
41
42 public:
43
45 ItemPairGroupImpl(const ItemGroup& group,const ItemGroup& sub_group);
46 virtual ~ItemPairGroupImpl(); //!< Libère les ressources
47
48 public:
49
50 static ItemPairGroupImpl* shared_null;
51 static ItemPairGroupImpl* checkSharedNull();
52
53 public:
54
55 virtual ISharedReference& sharedReference() { return *this; }
56
57 public:
58
59 //! Nom du groupe
60 const String& name() const;
61
62 //! Nombre de références sur le groupe.
63 virtual Integer nbRef() const { return refCount(); }
64
65 //! Retourne \a true si le groupe est nul.
66 bool null() const;
67
68 //! Maillage auquel appartient le groupe (0 pour le groupe nul).
69 IMesh* mesh() const;
70
71 //! Genre du groupe. Il s'agit du genre de ses éléments.
72 eItemKind itemKind() const;
73
74 //! Genre du groupe. Il s'agit du genre de ses éléments.
75 eItemKind subItemKind() const;
76
77 //! Familly à laquelle appartient le groupe (ou 0 si aucune)
78 IItemFamily* itemFamily() const;
79
80 //! Familly à laquelle appartient le groupe (ou 0 si aucune)
81 IItemFamily* subItemFamily() const;
82
83 //! Groupe des entités
84 const ItemGroup& itemGroup() const;
85
86 //! Groupe des sous-entités
87 const ItemGroup& subItemGroup() const;
88
89 //! Nombre d'entités du groupe
90 Integer size() const;
91
92 //! Invalide le groupe
93 void invalidate(bool force_recompute);
94
95 //! Vérifie que le groupe est valide.
96 void checkValid();
97
98 /*!
99 * \brief Réactualise le groupe si nécessaire.
100 *
101 * Un groupe doit être réactualisée lorsqu'il est devenu invalide, par exemple
102 * suite à un appel à invalidate().
103 * \retval true si le groupe a été réactualisé,
104 * \retval false sinon.
105 */
106 bool checkNeedUpdate();
107
108 //! Change les indices des entités du groupe
109 void changeIds(IntegerConstArrayView old_to_new_ids);
110
111 /*!
112 * \internal
113 */
114 Array<Int64>& unguardedIndexes() const;
115
116 /*!
117 * \internal
118 */
119 Array<Int32>& unguardedLocalIds() const;
120
121 /*!
122 * \internal
123 */
124 void setComputeFunctor(IFunctor* functor);
125
126 Int64ArrayView indexes();
127
128 Span<const Int32> subItemsLocalId();
129
130 private:
131
132 ItemPairGroupImplPrivate* m_p; //!< Implémentation du groupe
133
134 public:
135 virtual void addRef();
136 virtual void removeRef();
137 private:
138 virtual void deleteMe();
139};
140
141/*---------------------------------------------------------------------------*/
142/*---------------------------------------------------------------------------*/
143
144ARCANE_END_NAMESPACE
145
146/*---------------------------------------------------------------------------*/
147/*---------------------------------------------------------------------------*/
148
149#endif
Interface d'une famille d'entités.
Interface d'un compteur de référence.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Integer size() const
Nombre d'entités du groupe.
const String & name() const
Nom du groupe.
virtual Integer nbRef() const
Nombre de références sur le groupe.
void changeIds(IntegerConstArrayView old_to_new_ids)
Change les indices des entités du groupe.
Implémentation d'un compteur de référence utilisant std::atomic.
virtual void deleteMe()=0
Détruit l'objet référencé
void addRef() override
Incrémente le compteur de référence.
Int32 refCount() const override
Retourne la valeur du compteur de référence.
void removeRef() override
Décrémente le compteur de référence.
Vue modifiable d'un tableau d'un type T.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Vue d'un tableau d'éléments de type T.
Definition Span.h:510
Chaîne de caractères unicode.
eItemKind
Genre d'entité de maillage.