Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AnyItemArray2.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/* AnyItemArray2.h (C) 2000-2014 */
9/* */
10/* Tableau 2D d'items de types quelconques. */
11/*---------------------------------------------------------------------------*/
12
13#ifndef ARCANE_ANYITEM_ANYITEMARRAY2_H
14#define ARCANE_ANYITEM_ANYITEMARRAY2_H
15
16#include "arcane/IItemFamily.h"
17#include "arcane/utils/Array2.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22#include "arcane/anyitem/AnyItemGlobal.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27ARCANE_BEGIN_NAMESPACE
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32ANYITEM_BEGIN_NAMESPACE
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
55template<typename DataType>
56class Array2
57{
58public:
59
60 Array2(const Group& group)
61 : m_size(0)
62 {
63 for(Group::Enumerator e = group.enumerator(); e.hasNext(); ++e) {
64 if(e.groupIndex() >= m_values.size())
65 m_values.resize(e.groupIndex()+1);
66 }
67 for(Group::Enumerator e = group.enumerator(); e.hasNext(); ++e) {
68 m_values[e.groupIndex()].resize(e.group().itemFamily()->maxLocalId(),m_size);
69 }
70 }
71
73 inline void resize(Integer size)
74 {
75 m_size = size;
76 for(Integer i = 0; i < m_values.size(); ++i) {
77 m_values[i].resize(m_values[i].dim1Size(),m_size);
78 }
79 }
80
82 void fill(const DataType& data)
83 {
84 for(Integer i = 0; i < m_values.size(); ++i) {
85 m_values[i].fill(data);
86 }
87 }
88
90 template<typename T>
91 inline ArrayView<DataType> operator[](const T& item) {
92 return m_values[item.groupIndex()][item.varIndex()];
93 }
94
95 // Acceseur
96 template<typename T>
97 inline ConstArrayView<DataType> operator[](const T& item) const {
98 return m_values[item.groupIndex()][item.varIndex()];
99 }
100
102 inline Integer size() const { return m_size; }
103
104private:
105
108
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116ANYITEM_END_NAMESPACE
117ARCANE_END_NAMESPACE
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
121
122#endif /* ARCANE_ANYITEM_ANYITEMARRAY2_H */
ArrayView< DataType > operator[](const T &item)
Accesseur.
Arcane::UniqueArray< Arcane::UniqueArray2< DataType > > m_values
Conteneur des variables génériques.
Integer m_size
Taille de la 2ème dimension du tableau.
Integer size() const
void resize(Integer size)
Redimensionnement de la deuxième dimension du tableau.
void fill(const DataType &data)
Remplissage du tableau.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par valeur (style STL).
Int32 Integer
Type représentant un entier.