Arcane  v3.14.10.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
62 constexpr ItemIndexedListView(ItemSharedInfo* si, SmallSpan<const Int32> local_ids, Int32 local_id_offset)
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.
Vue constante d'un tableau de type T.
Vue d'un tableau d'éléments de type T.
Definition Span.h:670
constexpr Int32 DynExtent
Constante pour indiquer que la dimension d'un tableau est dynamique.
Definition UtilsTypes.h:255