Arcane  v3.16.8.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-2026 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-2025 */
9/* */
10/* Tableau 2D d'items de types quelconques. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ANYITEM_ANYITEMARRAY2_H
13#define ARCANE_CORE_ANYITEM_ANYITEMARRAY2_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array2.h"
18
19#include "arcane/core/IItemFamily.h"
20#include "arcane/core/anyitem/AnyItemGlobal.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25ARCANE_BEGIN_NAMESPACE
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30ANYITEM_BEGIN_NAMESPACE
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
53template<typename DataType>
54class Array2
55{
56public:
57
58 Array2(const Group& group)
59 : m_size(0)
60 {
61 for(Group::Enumerator e = group.enumerator(); e.hasNext(); ++e) {
62 if(e.groupIndex() >= m_values.size())
63 m_values.resize(e.groupIndex()+1);
64 }
65 for(Group::Enumerator e = group.enumerator(); e.hasNext(); ++e) {
66 m_values[e.groupIndex()].resize(e.group().itemFamily()->maxLocalId(),m_size);
67 }
68 }
69
71 inline void resize(Integer size)
72 {
73 m_size = size;
74 for(Integer i = 0; i < m_values.size(); ++i) {
75 m_values[i].resize(m_values[i].dim1Size(),m_size);
76 }
77 }
78
80 void fill(const DataType& data)
81 {
82 for(Integer i = 0; i < m_values.size(); ++i) {
83 m_values[i].fill(data);
84 }
85 }
86
88 template<typename T>
89 inline ArrayView<DataType> operator[](const T& item) {
90 return m_values[item.groupIndex()][item.varIndex()];
91 }
92
93 // Acceseur
94 template<typename T>
95 inline ConstArrayView<DataType> operator[](const T& item) const {
96 return m_values[item.groupIndex()][item.varIndex()];
97 }
98
100 inline Integer size() const { return m_size; }
101
102private:
103
106
109};
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114ANYITEM_END_NAMESPACE
115ARCANE_END_NAMESPACE
116
117/*---------------------------------------------------------------------------*/
118/*---------------------------------------------------------------------------*/
119
120#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.