Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemLocalId.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* ItemLocalId.h (C) 2000-2024 */
9/* */
10/* Index local sur une entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMLOCALID_H
13#define ARCANE_CORE_ITEMLOCALID_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30// TODO: rendre obsolète les constructeurs qui prennent un argument
31// un ItemEnumerator
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35/*!
36 * \ingroup Mesh
37 * \brief Index d'un Item dans une variable.
38 */
39class ARCANE_CORE_EXPORT ItemLocalId
40{
41 public:
42
43 ItemLocalId() = default;
44 constexpr ARCCORE_HOST_DEVICE explicit ItemLocalId(Int32 id)
45 : m_local_id(id)
46 {}
47 // La définition de ce constructeur est dans ItemInternal.h
48 inline ItemLocalId(ItemInternal* item);
49 inline ItemLocalId(ItemConnectedEnumerator enumerator);
50 template <typename ItemType> inline ItemLocalId(ItemEnumeratorT<ItemType> enumerator);
51 template <typename ItemType> inline ItemLocalId(ItemConnectedEnumeratorT<ItemType> enumerator);
52 inline ItemLocalId(Item item);
53 constexpr ARCCORE_HOST_DEVICE operator Int32() const { return m_local_id; }
54 constexpr ARCCORE_HOST_DEVICE Int32 asInt32() const { return m_local_id; }
55 constexpr ARCCORE_HOST_DEVICE Int32 asInteger() const { return m_local_id; }
56
57 public:
58
59 constexpr ARCCORE_HOST_DEVICE Int32 localId() const { return m_local_id; }
60 constexpr ARCCORE_HOST_DEVICE bool isNull() const { return m_local_id == NULL_ITEM_LOCAL_ID; }
61
62 public:
63
65 {
66 auto* ptr = reinterpret_cast<const ItemLocalId*>(v.data());
67 return { ptr, v.size() };
68 }
70 {
71 auto* ptr = reinterpret_cast<const Int32*>(v.data());
72 return { ptr, v.size() };
73 }
74
75 private:
76
77 Int32 m_local_id = NULL_ITEM_LOCAL_ID;
78};
79
80/*---------------------------------------------------------------------------*/
81/*---------------------------------------------------------------------------*/
82/*!
83 * \ingroup Mesh
84 * \brief Index d'une entité \a ItemType dans une variable.
85 */
86template <typename ItemType_>
88: public ItemLocalId
89{
90 public:
91
92 using ItemType = ItemType_;
94
95 public:
96
97 ItemLocalIdT() = default;
98 constexpr ARCCORE_HOST_DEVICE explicit ItemLocalIdT(Int32 id)
99 : ItemLocalId(id)
100 {}
101 inline ItemLocalIdT(ItemInternal* item);
103 inline ItemLocalIdT(ItemType item);
104
105 public:
106
108 {
109 auto* ptr = reinterpret_cast<const ThatClass*>(v.data());
110 return { ptr, v.size() };
111 }
112
114 {
115 auto* ptr = reinterpret_cast<const Int32*>(v.data());
116 return { ptr, v.size() };
117 }
118
119 public:
120
121 ARCANE_DEPRECATED_REASON("Y2022: Use strongly typed 'ItemEnumeratorT<ItemType>' or 'ItemType'")
122 inline ItemLocalIdT(ItemEnumerator enumerator);
123};
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
127
128} // namespace Arcane
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133#endif
Déclarations de types sur les entités.
Enumérateur sur une liste typée d'entités connectées de type ItemType.
Enumérateur sur une liste d'entités connectées à une autre.
Enumérateur sur une liste typée d'entités de type ItemType.
Enumérateur sur une liste d'entités.
Index d'une entité ItemType dans une variable.
Definition ItemLocalId.h:89
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
Classe de base d'un élément de maillage.
Definition Item.h:83
Vue d'un tableau d'éléments de type T.
Definition Span.h:670
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Definition Span.h:209
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
Definition Span.h:419
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-