Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
arcane/src/arcane/utils/Array.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* Array.h (C) 2000-2018 */
9/* */
10/* Tableau 1D. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_ARRAY_H
13#define ARCANE_UTILS_ARRAY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/collections/Array.h"
19#include "arcane/utils/StdHeader.h"
20#include "arcane/utils/Iostream.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25ARCANE_BEGIN_NAMESPACE
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30template<typename T>
32{
33 public:
34 ArrayFullAccessorT(Array<T>& v) : m_array(&v) {}
36 public:
37 T operator[](Integer i) const { return m_array->item(i); }
38 T& operator[](Integer i) { return (*m_array)[i]; }
39 Integer size() const { return m_array->size(); }
40 void resize(Integer s){ m_array->resize(s); }
41 void add(T v){ m_array->add(v); }
42 private:
43 Array<T>* m_array;
44};
45
46/*---------------------------------------------------------------------------*/
47/*---------------------------------------------------------------------------*/
48/*!
49 * \brief Applique à \a ids un remplissage en fin de tableau.
50 *
51 * Cette méthode remplit les éléments de \a ids après la dernière valeur
52 * pour que \a ids ait un nombre d'éléments valide multiple de la taille
53 * d'un vecteur Simd.
54 *
55 * \a ids doit utiliser l'allocateur AlignedMemoryAllocator::Simd().
56 * Le remplissage se fait avec comme valeur celle du dernier élément
57 * valide de \a ids.
58 *
59 * Par exemple, si ids.size()==5 et que la taille de vecteur Simd est de 8,
60 * alors ids[5], ids[6] et ids[7] sont remplis avec la valeur de ids[4].
61 */
62//@{
63extern ARCANE_UTILS_EXPORT void
64applySimdPadding(Array<Int32>& ids);
65
66extern ARCANE_UTILS_EXPORT void
67applySimdPadding(Array<Int16>& ids);
68
69extern ARCANE_UTILS_EXPORT void
70applySimdPadding(Array<Int64>& ids);
71
72extern ARCANE_UTILS_EXPORT void
73applySimdPadding(Array<Real>& ids);
74//@}
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79ARCANE_END_NAMESPACE
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84#endif
Déclarations des types utilisés dans Arcane.
Classe de base des vecteurs 1D de données.