Arcane  v3.15.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemIndexedListView.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* ItemIndexedListView.h (C) 2000-2023 */
9/* */
10/* Vue sur une liste indexée d'entités. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMINDEXEDLISTVIEW_H
13#define ARCANE_ITEMINDEXEDLISTVIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18
19#include "arcane/core/ItemSharedInfo.h"
20#include "arcane/core/ItemLocalIdListContainerView.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::impl
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30/*!
31 * \internal
32 * \brief Vue interne sur un tableau d'entités.
33 *
34 * Celle classe n'est utile que pour construire des listes d'entités utilisées
35 * en interne de %Arcane. La version utilisateur de cette classe est
36 * ItemConnectivityView. La principale différence entre les deux classes est
37 * que celle-ci maintient juste les listes mais ne permet pas par exemple
38 * de retourner une entité typée.
39 *
40 * \sa ItemConnectedListView
41 */
42template <int Extent>
43class ARCANE_CORE_EXPORT ItemIndexedListView
44{
45 static_assert(Extent == (-1), "only dynamic (-1) extent is currently supported");
46
48 friend ItemBase;
49 friend ItemVectorView;
51 friend class ItemConnectedListView<DynExtent>;
52 template <typename T> friend class Arcane::ItemEnumeratorBaseT;
53 template <typename T> friend class Arcane::ItemConnectedEnumeratorBaseT;
54
55 public:
56
57 ItemIndexedListView() = default;
58
59 private:
60
61 // TODO: A supprimer
63 : m_local_ids(local_ids)
64 , m_shared_info(si)
65 , m_local_id_offset(local_id_offset)
66 {
67 ARCANE_ASSERT(m_shared_info, ("null shared_info"));
68 }
69
71 : m_local_ids(container_view.m_local_ids, container_view.m_size)
72 , m_shared_info(si)
73 , m_local_id_offset(container_view.m_local_id_offset)
74 {
75 ARCANE_ASSERT(m_shared_info, ("null shared info"));
76 }
77
78 private:
79
80 //! Nombre d'éléments du vecteur
81 constexpr Int32 size() const { return m_local_ids.size(); }
82
83 //! Tableau des numéros locaux des entités
84 constexpr SmallSpan<const Int32, Extent> localIds() const { return m_local_ids; }
85
86 //! Tableau des numéros locaux des entités
87 ConstArrayView<Int32> constLocalIds() const { return m_local_ids.constSmallView(); }
88
89 private:
90
92 ItemSharedInfo* m_shared_info = ItemSharedInfo::nullInstance();
93 Int32 m_local_id_offset;
94};
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
99} // namespace Arcane::impl
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104#endif
Classe de base pour les entités du maillage.
Classe de base typeé des énumérateurs sur une liste d'entité connectées.
Vue sur une liste d'entités connectées à une autre entité.
Classe de base des énumérateurs sur une liste d'entité.
Vue sur un vecteur d'entités.
Référence à une instance.
constexpr Int32 DynExtent
Constante pour indiquer que la dimension d'un tableau est dynamique.
Definition UtilsTypes.h:145