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