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"
18
#include "
arcane/utils/UtilsTypes.h
"
19
#include "arcane/utils/StdHeader.h"
20
#include "arcane/utils/Iostream.h"
21
22
/*---------------------------------------------------------------------------*/
23
/*---------------------------------------------------------------------------*/
24
25
ARCANE_BEGIN_NAMESPACE
26
27
/*---------------------------------------------------------------------------*/
28
/*---------------------------------------------------------------------------*/
29
30
template
<
typename
T>
31
class
ArrayFullAccessorT
32
{
33
public
:
34
ArrayFullAccessorT
(
Array<T>
& v) : m_array(&v) {}
35
~ArrayFullAccessorT
() {}
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
//@{
63
extern
ARCANE_UTILS_EXPORT
void
64
applySimdPadding(
Array<Int32>
& ids);
65
66
extern
ARCANE_UTILS_EXPORT
void
67
applySimdPadding(
Array<Int16>
& ids);
68
69
extern
ARCANE_UTILS_EXPORT
void
70
applySimdPadding(
Array<Int64>
& ids);
71
72
extern
ARCANE_UTILS_EXPORT
void
73
applySimdPadding(
Array<Real>
& ids);
74
//@}
75
76
/*---------------------------------------------------------------------------*/
77
/*---------------------------------------------------------------------------*/
78
79
ARCANE_END_NAMESPACE
80
81
/*---------------------------------------------------------------------------*/
82
/*---------------------------------------------------------------------------*/
83
84
#endif
UtilsTypes.h
Déclarations des types utilisés dans Arcane.
Arcane::ArrayFullAccessorT
Definition
arcane/src/arcane/utils/Array.h:32
Arccore::Array
Classe de base des vecteurs 1D de données.
Definition
arccore/src/collections/arccore/collections/Array.h:988
arcane
utils
Array.h
Généré le Lundi 18 Novembre 2024 02:56:52 pour Arcane par
1.9.8