Arcane  v3.14.10.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
107 Integer m_size;
108
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116ANYITEM_END_NAMESPACE
117ARCANE_END_NAMESPACE
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
121
122#endif /* ARCANE_ANYITEM_ANYITEMARRAY2_H */
Tableau 2D d'items de types quelconques.
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
Retourne la taille du tableau.
void resize(Integer size)
Redimensionnement de la deuxième dimension du tableau.
void fill(const DataType &data)
Remplissage du tableau.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120