Arcane  v3.14.10.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-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/* FixedArray.h (C) 2000-2024 */
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
65 : m_value({})
66 {}
68 FixedArray(const std::array<T, NbElement>& x)
69 : m_value(x)
70 {}
71
72 public:
73
75 ARCCORE_HOST_DEVICE T& operator[](Int32 index)
76 {
77 ARCANE_CHECK_AT(index, NbElement);
78 return m_value[index];
79 }
81 ARCCORE_HOST_DEVICE const T& operator[](Int32 index) const
82 {
83 ARCANE_CHECK_AT(index, NbElement);
84 return m_value[index];
85 }
87 ARCCORE_HOST_DEVICE SmallSpan<T, NbElement> span() { return { m_value.data(), NbElement }; }
89 ARCCORE_HOST_DEVICE SmallSpan<const T, NbElement> span() const { return { m_value.data(), NbElement }; }
91 ARCCORE_HOST_DEVICE ArrayView<T> view() { return { NbElement, m_value.data() }; }
93 ARCCORE_HOST_DEVICE ConstArrayView<T> view() const { return { NbElement, m_value.data() }; }
94 ARCCORE_HOST_DEVICE const T* data() const { return m_value.data(); }
95 ARCCORE_HOST_DEVICE T* data() { return m_value.data(); }
96
98 static constexpr Int32 size() { return NbElement; }
99
100 public:
101
103 iterator begin() { return m_value.begin(); }
105 iterator end() { return m_value.end(); }
107 const_iterator begin() const { return m_value.begin(); }
109 const_iterator end() const { return m_value.end(); }
110
111 private:
112
113 std::array<T, NbElement> m_value;
114};
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
118
119} // namespace Arcane
120
121/*---------------------------------------------------------------------------*/
122/*---------------------------------------------------------------------------*/
123
124#endif
Tableau 1D de taille fixe.
Definition FixedArray.h:45
ARCCORE_HOST_DEVICE ConstArrayView< T > view() const
Vue non modifiable sur le tableau.
Definition FixedArray.h:93
iterator begin()
Itérateur sur le début du tableau.
Definition FixedArray.h:103
ARCCORE_HOST_DEVICE SmallSpan< T, NbElement > span()
Vue modifiable sur le tableau.
Definition FixedArray.h:87
const_iterator end() const
Itérateur constant la fin du tableau.
Definition FixedArray.h:109
ARCCORE_HOST_DEVICE const T & operator[](Int32 index) const
Valeur du i-ème élément.
Definition FixedArray.h:81
FixedArray()
Créé un tableau en initialisant les éléments avec le constructeur par défaut de T.
Definition FixedArray.h:64
ARCCORE_HOST_DEVICE ArrayView< T > view()
Vue modifiable sur le tableau.
Definition FixedArray.h:91
static constexpr Int32 size()
Nombre d'éléments tu tableau.
Definition FixedArray.h:98
FixedArray(const std::array< T, NbElement > &x)
Créé un tableau en initialisant les éléments de x.
Definition FixedArray.h:68
const_iterator begin() const
Itérateur constant sur le début du tableau.
Definition FixedArray.h:107
ARCCORE_HOST_DEVICE SmallSpan< const T, NbElement > span() const
Vue non modifiable sur le tableau.
Definition FixedArray.h:89
iterator end()
Itérateur sur la fin du tableau.
Definition FixedArray.h:105
ARCCORE_HOST_DEVICE T & operator[](Int32 index)
Valeur du i-ème élément.
Definition FixedArray.h:75
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-