Arcane  v3.15.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
FixedArray.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/* FixedArray.h (C) 2000-2025 */
9/* */
10/* Tableau 1D de taille fixe. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_FIXEDARRAY_H
13#define ARCANE_UTILS_FIXEDARRAY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18
19#include <array>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
43template <typename T, Int32 NbElement>
45{
46 static_assert(NbElement >= 0, "NbElement has to positive");
47
48 public:
49
50 using value_type = T;
51 using size_type = Int32;
52 using difference_type = std::ptrdiff_t;
53 using reference = value_type&;
54 using const_reference = const value_type&;
55 using pointer = value_type*;
56 using const_pointer = const value_type*;
57
58 using iterator = typename std::array<T, NbElement>::iterator;
59 using const_iterator = typename std::array<T, NbElement>::const_iterator;
60
61 public:
62
64 constexpr FixedArray()
65 : m_value({})
66 {}
68 constexpr FixedArray(std::array<T, NbElement> x)
69 : m_value(std::move(x))
70 {}
72 constexpr FixedArray<T,NbElement>& operator=(std::array<T, NbElement> x)
73 {
74 m_value = std::move(x);
75 return *this;
76 }
77
78 public:
79
81 constexpr ARCCORE_HOST_DEVICE T& operator[](Int32 index)
82 {
83 ARCANE_CHECK_AT(index, NbElement);
84 return m_value[index];
85 }
87 constexpr ARCCORE_HOST_DEVICE const T& operator[](Int32 index) const
88 {
89 ARCANE_CHECK_AT(index, NbElement);
90 return m_value[index];
91 }
93 constexpr ARCCORE_HOST_DEVICE SmallSpan<T, NbElement> span() { return { m_value.data(), NbElement }; }
95 constexpr ARCCORE_HOST_DEVICE SmallSpan<const T, NbElement> span() const { return { m_value.data(), NbElement }; }
97 constexpr ARCCORE_HOST_DEVICE ArrayView<T> view() { return { NbElement, m_value.data() }; }
99 constexpr ARCCORE_HOST_DEVICE ConstArrayView<T> view() const { return { NbElement, m_value.data() }; }
100 constexpr ARCCORE_HOST_DEVICE const T* data() const { return m_value.data(); }
101 constexpr ARCCORE_HOST_DEVICE T* data() { return m_value.data(); }
102
104 static constexpr Int32 size() { return NbElement; }
105
106 public:
107
109 constexpr iterator begin() { return m_value.begin(); }
111 constexpr iterator end() { return m_value.end(); }
113 constexpr const_iterator begin() const { return m_value.begin(); }
115 constexpr const_iterator end() const { return m_value.end(); }
116
117 private:
118
119 std::array<T, NbElement> m_value;
120};
121
122/*---------------------------------------------------------------------------*/
123/*---------------------------------------------------------------------------*/
124
125} // namespace Arcane
126
127/*---------------------------------------------------------------------------*/
128/*---------------------------------------------------------------------------*/
129
130#endif
Tableau 1D de taille fixe.
Definition FixedArray.h:45
constexpr ARCCORE_HOST_DEVICE SmallSpan< const T, NbElement > span() const
Vue non modifiable sur le tableau.
Definition FixedArray.h:95
constexpr ARCCORE_HOST_DEVICE ConstArrayView< T > view() const
Vue non modifiable sur le tableau.
Definition FixedArray.h:99
constexpr iterator end()
Itérateur sur la fin du tableau.
Definition FixedArray.h:111
constexpr iterator begin()
Itérateur sur le début du tableau.
Definition FixedArray.h:109
constexpr ARCCORE_HOST_DEVICE const T & operator[](Int32 index) const
Valeur du i-ème élément.
Definition FixedArray.h:87
constexpr ARCCORE_HOST_DEVICE ArrayView< T > view()
Vue modifiable sur le tableau.
Definition FixedArray.h:97
constexpr ARCCORE_HOST_DEVICE T & operator[](Int32 index)
Valeur du i-ème élément.
Definition FixedArray.h:81
constexpr FixedArray()
Créé un tableau en initialisant les éléments avec le constructeur par défaut de T.
Definition FixedArray.h:64
constexpr FixedArray< T, NbElement > & operator=(std::array< T, NbElement > x)
Recopie x dans l'instance.
Definition FixedArray.h:72
constexpr ARCCORE_HOST_DEVICE SmallSpan< T, NbElement > span()
Vue modifiable sur le tableau.
Definition FixedArray.h:93
static constexpr Int32 size()
Nombre d'éléments tu tableau.
Definition FixedArray.h:104
constexpr const_iterator end() const
Itérateur constant la fin du tableau.
Definition FixedArray.h:115
constexpr const_iterator begin() const
Itérateur constant sur le début du tableau.
Definition FixedArray.h:113
constexpr FixedArray(std::array< T, NbElement > x)
Créé un tableau en initialisant les éléments de x.
Definition FixedArray.h:68
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-