Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ConnectivityItemVector.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/* ConnectivityItemVector.h (C) 2000-2025 */
9/* */
10/* Interface des accesseurs des connectivités des entités. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_CONNECTIVITYITEMVECTOR_H
13#define ARCANE_CORE_CONNECTIVITYITEMVECTOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18#include "arcane/utils/String.h"
19
21#include "arcane/core/ItemVector.h"
22#include "arcane/core/IItemConnectivity.h"
23#include "arcane/core/IIncrementalItemConnectivity.h"
24
25#include <functional>
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35/*!
36 * \brief Type temporaire automatiquement casté en ConnectivityItemVector
37 */
39{
40 std::function<void(ConnectivityItemVector&)> set;
41 std::function<void(ConnectivityItemVector&)> apply; // When C++14 available, use a template type (will avoid std::function object and allow more genericity).
42};
43
44/*---------------------------------------------------------------------------*/
45/*---------------------------------------------------------------------------*/
46/*!
47 * \brief Gère la récupération des informations de connectivité.
48 *
49 * \sa IItemConnectivity
50 * \sa IIncrementalItemConnectivity
51 * \sa IItemConnectivityAccessor.
52 */
53class ARCANE_CORE_EXPORT ConnectivityItemVector
54: public ItemVector
55// SDC new API : user handles directly the ConnectivityItemVector and iterates on it...need a public inheritance.
56// the Use of views as in first version is confusing for user that doesn't understand where the view comes from and easily invalidates it...
57{
58 public:
59
60 ConnectivityItemVector(IItemConnectivity* c)
62 , m_connectivity_accessor(c)
63 {
64 c->_initializeStorage(this);
65 }
66 ConnectivityItemVector(IItemConnectivity& c)
68 , m_connectivity_accessor(&c)
69 {
70 c._initializeStorage(this);
71 }
72 ConnectivityItemVector(IIncrementalItemConnectivity* c)
74 , m_connectivity_accessor(c)
75 {
76 c->_initializeStorage(this);
77 }
78 ConnectivityItemVector(IIncrementalItemConnectivity& c)
80 , m_connectivity_accessor(&c)
81 {
82 c._initializeStorage(this);
83 }
84 ConnectivityItemVector(const ConnectivityItemVectorCatalyst& to_c)
85 : ItemVector()
86 , m_connectivity_accessor(nullptr)
87 {
88 to_c.set(*this);
89 to_c.apply(*this);
90 }
91
92 public:
93
94 //! Connectivité associée
95 IItemConnectivityAccessor* accessor() const { return m_connectivity_accessor; }
96
97 //! Retourne les entités connectées à \a item.
99 {
100 return m_connectivity_accessor->_connectedItems(item, *this);
101 }
102
103 public:
104
105 /*!
106 * \internal
107 * \brief Positionne la liste de connectivité avec les entités
108 * spécifiées par \a ids.
109 */
110 ItemVectorView resizeAndCopy(Int32ConstArrayView ids)
111 {
112 this->resize(ids.size());
113 this->viewAsArray().copy(ids);
114 return (*this);
115 }
116
117 /*!
118 * \internal
119 * \brief Positionne la liste de connectivité avec l'entité
120 * de localId() \a id.
121 */
122 ItemVectorView setItem(Int32 id)
123 {
124 this->resize(1);
125 this->viewAsArray()[0] = id;
126 return (*this);
127 }
128
129 /*!
130 * \internal
131 * \brief Permet de récupérer le ConnectivityItemVector
132 */
133 void operator=(const ConnectivityItemVectorCatalyst& to_con_vec)
134 {
135 to_con_vec.apply(*this);
136 }
137
138 private:
139
140 IItemConnectivityAccessor* m_connectivity_accessor = nullptr;
141};
142
143/*---------------------------------------------------------------------------*/
144/*---------------------------------------------------------------------------*/
145
146} // namespace Arcane
147
148/*---------------------------------------------------------------------------*/
149/*---------------------------------------------------------------------------*/
150
151#endif
Déclarations de types sur les entités.
Gère la récupération des informations de connectivité.
ItemVectorView connectedItems(ItemLocalId item)
Retourne les entités connectées à item.
IItemConnectivityAccessor * accessor() const
Connectivité associée.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Interface pour gérer une connectivité incrémentale.
Interface pour gérer l'accès à une connectivité.
virtual void _initializeStorage(ConnectivityItemVector *civ)=0
Implémente l'initialisation de civ pour cette connectivitée.
Interface pour gérer une connectivité.
virtual IItemFamily * targetFamily() const =0
Famille cible.
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Vue sur un vecteur d'entités.
ItemVector(IItemFamily *afamily)
Créé un vecteur vide associé à la famille family.
Definition ItemVector.cc:38
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
Type temporaire automatiquement casté en ConnectivityItemVector.