Skip to content

Commit 2883aa2

Browse files
Merge pull request #1199 from arcaneframework/dev/gg-continue-removing-usage-of-componentiteminternal3
Remove remaining usage of 'ComponentItemInternal'
2 parents dbd7f95 + b16db58 commit 2883aa2

7 files changed

+46
-94
lines changed

arcane/src/arcane/core/materials/CellToAllEnvCellConverter.h

+13-5
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,22 @@ namespace Arcane::Materials
6969
*/
7070
class CellToAllEnvCellConverter
7171
{
72-
public:
72+
friend class MeshMaterialMng;
7373

74-
explicit CellToAllEnvCellConverter(ConstArrayView<ComponentItemInternal> v)
75-
: m_all_env_items_internal(v){}
74+
public:
7675

7776
explicit CellToAllEnvCellConverter(IMeshMaterialMng* mm)
7877
{
7978
*this = mm->cellToAllEnvCellConverter();
8079
}
8180

81+
private:
82+
83+
explicit CellToAllEnvCellConverter(ComponentItemSharedInfo* shared_info)
84+
: m_shared_info(shared_info)
85+
{
86+
}
87+
8288
public:
8389

8490
//! Converti une maille \a Cell en maille \a AllEnvCell
@@ -89,13 +95,15 @@ class CellToAllEnvCellConverter
8995
//! Converti une maille \a CellLocalId en maille \a AllEnvCell
9096
ARCCORE_HOST_DEVICE AllEnvCell operator[](CellLocalId c) const
9197
{
92-
const ComponentItemInternal* p = &m_all_env_items_internal[c.localId()];
93-
return AllEnvCell(matimpl::ConstituentItemBase(const_cast<ComponentItemInternal*>(p)));
98+
//const ComponentItemInternal* p = &m_all_env_items_internal[c.localId()];
99+
// Pour les AllEnvCell, l'index dans la liste est le localid() de la maille.
100+
return AllEnvCell(m_shared_info->_item(ConstituentItemIndex(c.localId())));
94101
}
95102

96103
private:
97104

98105
ConstArrayView<ComponentItemInternal> m_all_env_items_internal;
106+
ComponentItemSharedInfo* m_shared_info = nullptr;
99107
};
100108

101109
/*---------------------------------------------------------------------------*/

arcane/src/arcane/core/materials/ComponentItemInternal.h

+5-48
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class MeshEnvironment;
2727
class MeshComponentData;
2828
class AllEnvData;
2929
class MeshMaterialMng;
30+
class ComponentItemInternalData;
31+
3032
namespace matimpl
3133
{
3234
class ConstituentItemBase;
@@ -128,6 +130,8 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfo
128130
friend class ConstituentItemLocalIdListView;
129131
friend matimpl::ConstituentItemBase;
130132
friend class ComponentCell;
133+
friend class CellToAllEnvCellConverter;
134+
friend class AllEnvCellVectorView;
131135

132136
static const int MAT_INDEX_OFFSET = 10;
133137

@@ -237,7 +241,6 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfo
237241
ConstArrayView<IMeshComponent*> m_components;
238242
ComponentItemSharedInfo* m_super_component_item_shared_info = null_shared_info_pointer;
239243
ComponentItemSharedInfo* m_sub_component_item_shared_info = null_shared_info_pointer;
240-
ArrayView<ComponentItemInternal> m_component_item_internal_view;
241244
};
242245

243246
/*---------------------------------------------------------------------------*/
@@ -265,10 +268,7 @@ class ARCANE_CORE_EXPORT ConstituentItemBase
265268

266269
friend Arcane::Materials::MeshEnvironment;
267270
friend Arcane::Materials::MeshComponentData;
268-
269-
public:
270-
271-
ARCCORE_HOST_DEVICE ConstituentItemBase(ComponentItemInternal* component_item);
271+
friend Arcane::Materials::ComponentItemInternalData;
272272

273273
private:
274274

@@ -384,19 +384,7 @@ namespace Arcane::Materials
384384
*/
385385
class ARCANE_CORE_EXPORT ComponentItemInternal
386386
{
387-
friend class ComponentCell;
388-
friend class MatCell;
389-
friend class EnvCell;
390-
friend class ComponentCell;
391-
friend class AllEnvCell;
392-
friend class CellComponentCellEnumerator;
393387
friend class ComponentItemInternalData;
394-
friend class MeshComponentData;
395-
friend class MeshEnvironment;
396-
friend class AllEnvData;
397-
friend class MeshMaterialMng;
398-
friend class ConstituentItemLocalIdList;
399-
friend class ConstituentItemLocalIdListView;
400388

401389
friend matimpl::ConstituentItemBase;
402390

@@ -409,30 +397,6 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
409397

410398
ComponentItemInternal() = default;
411399

412-
public:
413-
414-
//! Indexeur dans les variables matériaux
415-
ARCCORE_HOST_DEVICE MatVarIndex variableIndex() const
416-
{
417-
return m_shared_info->_varIndex(m_component_item_index);
418-
}
419-
420-
//! Identifiant du composant
421-
ARCCORE_HOST_DEVICE Int32 componentId() const { return m_shared_info->_componentId(m_component_item_index); }
422-
423-
//! Indique s'il s'agit de la maille nulle.
424-
ARCCORE_HOST_DEVICE constexpr bool null() const { return m_component_item_index.isNull(); }
425-
426-
/*!
427-
* \brief Composant associé.
428-
*
429-
* Cet appel n'est valide que pour les mailles matériaux ou milieux. Si on souhaite
430-
* un appel valide pour toutes les 'ComponentItem', il faut utiliser componentId().
431-
*/
432-
IMeshComponent* component() const { return m_shared_info->_component(m_component_item_index); }
433-
434-
ARCCORE_HOST_DEVICE constexpr Int32 level() const { return m_shared_info->m_level; }
435-
436400
protected:
437401

438402
// NOTE : Cette classe est partagée avec le wrapper C#
@@ -457,13 +421,6 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
457421
/*---------------------------------------------------------------------------*/
458422
/*---------------------------------------------------------------------------*/
459423

460-
inline ARCCORE_HOST_DEVICE matimpl::ConstituentItemBase::
461-
ConstituentItemBase(ComponentItemInternal* component_item)
462-
: m_constituent_item_index(component_item->m_component_item_index)
463-
, m_shared_info(component_item->m_shared_info)
464-
{
465-
}
466-
467424
inline constexpr matimpl::ConstituentItemBase::
468425
ConstituentItemBase(ComponentItemSharedInfo* shared_info, ConstituentItemIndex id)
469426
: m_constituent_item_index(id)

arcane/src/arcane/core/materials/MatItemEnumerator.h

+21-20
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,10 @@ class ARCANE_CORE_EXPORT AllEnvCellVectorView
7676

7777
protected:
7878

79-
AllEnvCellVectorView(Int32ConstArrayView local_ids, ConstArrayView<ComponentItemInternal> items_internal)
80-
: m_local_ids(local_ids), m_items_internal(items_internal)
79+
AllEnvCellVectorView(Int32ConstArrayView local_ids,
80+
ComponentItemSharedInfo* shared_info)
81+
: m_local_ids(local_ids)
82+
, m_shared_info(shared_info)
8183
{
8284
}
8385

@@ -87,22 +89,18 @@ class ARCANE_CORE_EXPORT AllEnvCellVectorView
8789
Integer size() const { return m_local_ids.size(); }
8890

8991
// \i ème maille du vecteur
90-
AllEnvCell operator[](Integer index)
92+
AllEnvCell operator[](Integer index) const
9193
{
92-
const ComponentItemInternal* c = &m_items_internal[m_local_ids[index]];
93-
return AllEnvCell(matimpl::ConstituentItemBase(const_cast<ComponentItemInternal*>(c)));
94+
return AllEnvCell(m_shared_info->_item(ConstituentItemIndex(m_local_ids[index])));
9495
}
9596

9697
// localId() de la \i ème maille du vecteur
97-
Int32 localId(Integer index)
98-
{
99-
return m_local_ids[index];
100-
}
98+
Int32 localId(Integer index) const { return m_local_ids[index]; }
10199

102100
private:
103101

104102
Int32ConstArrayView m_local_ids;
105-
ConstArrayView<ComponentItemInternal> m_items_internal;
103+
ComponentItemSharedInfo* m_shared_info = nullptr;
106104
};
107105

108106
/*---------------------------------------------------------------------------*/
@@ -298,7 +296,7 @@ class ARCANE_CORE_EXPORT ComponentPartCellEnumerator
298296
Integer m_base_index;
299297
Int32ConstArrayView m_value_indexes;
300298
Int32ConstArrayView m_item_indexes;
301-
ConstituentItemLocalIdListView m_constituent_list_view; // ConstArrayView<ComponentItemInternal*> m_items_internal;
299+
ConstituentItemLocalIdListView m_constituent_list_view;
302300
IMeshComponent* m_component;
303301

304302
protected:
@@ -364,8 +362,8 @@ class ARCANE_CORE_EXPORT CellComponentCellEnumerator
364362

365363
ARCCORE_HOST_DEVICE explicit CellComponentCellEnumerator(ComponentCell super_item)
366364
: m_size(super_item.nbSubItem())
367-
, m_items_begin(super_item._firstSubConstituentLocalId().localId())
368-
, m_item_internal_list(super_item.m_shared_info->m_sub_component_item_shared_info->m_component_item_internal_view)
365+
, m_first_sub_index(super_item._firstSubConstituentLocalId().localId())
366+
, m_sub_constituent_shared_info(super_item.m_shared_info->m_sub_component_item_shared_info)
369367
{
370368
}
371369

@@ -377,9 +375,12 @@ class ARCANE_CORE_EXPORT CellComponentCellEnumerator
377375
ARCCORE_HOST_DEVICE ComponentCell operator*() const
378376
{
379377
ARCANE_CHECK_AT(m_index,m_size);
380-
return ComponentCell(_currentItemBase());
378+
return ComponentCell(_currentSubItemBase());
379+
}
380+
ARCCORE_HOST_DEVICE MatVarIndex _varIndex() const
381+
{
382+
return m_sub_constituent_shared_info->_varIndex(ConstituentItemIndex(m_first_sub_index + m_index));
381383
}
382-
ARCCORE_HOST_DEVICE MatVarIndex _varIndex() const { return m_item_internal_list[m_items_begin+m_index].variableIndex(); }
383384
ARCCORE_HOST_DEVICE Integer index() const { return m_index; }
384385
ARCCORE_HOST_DEVICE operator ComponentItemLocalId() const
385386
{
@@ -390,14 +391,14 @@ class ARCANE_CORE_EXPORT CellComponentCellEnumerator
390391

391392
Int32 m_index = 0;
392393
Int32 m_size = 0;
393-
Int32 m_items_begin = -1;
394-
ArrayView<ComponentItemInternal> m_item_internal_list;
394+
Int32 m_first_sub_index = -1;
395+
ComponentItemSharedInfo* m_sub_constituent_shared_info = nullptr;
395396

396397
protected:
397398

398-
ARCCORE_HOST_DEVICE matimpl::ConstituentItemBase _currentItemBase() const
399+
ARCCORE_HOST_DEVICE matimpl::ConstituentItemBase _currentSubItemBase() const
399400
{
400-
return matimpl::ConstituentItemBase(const_cast<ComponentItemInternal*>(m_item_internal_list.ptrAt(m_items_begin+m_index)));
401+
return m_sub_constituent_shared_info->_item(ConstituentItemIndex(m_first_sub_index+m_index));
401402
}
402403
};
403404

@@ -419,7 +420,7 @@ template <typename ComponentCellType> class CellComponentCellEnumeratorT
419420
ARCCORE_HOST_DEVICE ComponentCellType operator*() const
420421
{
421422
ARCANE_CHECK_AT(m_index,m_size);
422-
return ComponentCellType(_currentItemBase());
423+
return ComponentCellType(_currentSubItemBase());
423424
}
424425
};
425426

arcane/src/arcane/materials/ComponentItemInternalData.cc

-5
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,6 @@ resizeComponentItemInternals(Int32 max_local_id, Int32 total_nb_env_cell)
179179
m_mat_storage.resize(total_nb_mat_cell, matSharedInfo());
180180

181181
_resetItemsInternal();
182-
183-
// Met à jour les vues sur m_component_item_internal_storage.
184-
allEnvSharedInfo()->m_component_item_internal_view = m_all_env_item_internal_storage;
185-
envSharedInfo()->m_component_item_internal_view = m_env_item_internal_storage;
186-
matSharedInfo()->m_component_item_internal_view = m_mat_item_internal_storage;
187182
}
188183

189184
/*---------------------------------------------------------------------------*/

arcane/src/arcane/materials/MeshMaterialMng.cc

+4-2
Original file line numberDiff line numberDiff line change
@@ -921,7 +921,7 @@ dumpCellInfos(Cell cell,std::ostream& o)
921921
CellToAllEnvCellConverter MeshMaterialMng::
922922
cellToAllEnvCellConverter()
923923
{
924-
return CellToAllEnvCellConverter(m_all_env_data->allEnvItemsInternal());
924+
return CellToAllEnvCellConverter(componentItemSharedInfo(LEVEL_ALLENVIRONMENT));
925925
}
926926

927927
/*---------------------------------------------------------------------------*/
@@ -940,7 +940,7 @@ _checkEndCreate()
940940
AllEnvCellVectorView MeshMaterialMng::
941941
view(Int32ConstArrayView local_ids)
942942
{
943-
return AllEnvCellVectorView(local_ids,m_all_env_data->allEnvItemsInternal());
943+
return AllEnvCellVectorView(local_ids, componentItemSharedInfo(LEVEL_ALLENVIRONMENT));
944944
}
945945

946946
/*---------------------------------------------------------------------------*/
@@ -1205,6 +1205,8 @@ componentItemSharedInfo(Int32 level) const
12051205
shared_info = data->matSharedInfo();
12061206
else if (level == LEVEL_ENVIRONMENT)
12071207
shared_info = data->envSharedInfo();
1208+
else if (level==LEVEL_ALLENVIRONMENT)
1209+
shared_info = data->allEnvSharedInfo();
12081210
else
12091211
ARCANE_FATAL("Bad internal type of component");
12101212

arcane/src/arcane/materials/internal/AllEnvData.h

-5
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@ class AllEnvData
5555

5656
public:
5757

58-
ConstArrayView<ComponentItemInternal> allEnvItemsInternal()
59-
{
60-
return m_item_internal_data.allEnvItemsInternal();
61-
}
62-
6358
//! Notification de la fin de création des milieux/matériaux
6459
void endCreate(bool is_continue);
6560

arcane/src/arcane/materials/internal/ComponentItemInternalData.h

+3-9
Original file line numberDiff line numberDiff line change
@@ -146,28 +146,22 @@ class ComponentItemInternalData
146146

147147
public:
148148

149-
//! Liste des AllEnvCell. Uniquement pour les itérateurs.
150-
ConstArrayView<ComponentItemInternal> allEnvItemsInternal() const
151-
{
152-
return m_all_env_items_internal;
153-
}
154-
155149
//! Retourne la AllEnvCell correspondant à la maille \a id
156150
matimpl::ConstituentItemBase allEnvItemBase(CellLocalId id)
157151
{
158-
return matimpl::ConstituentItemBase(&m_all_env_items_internal[id.localId()]);
152+
return matimpl::ConstituentItemBase(allEnvSharedInfo(),ConstituentItemIndex(id.localId()));
159153
}
160154

161155
//! Retourne la EnvCell correspondant à l'indice \a index
162156
matimpl::ConstituentItemBase envItemBase(Int32 index)
163157
{
164-
return matimpl::ConstituentItemBase(&m_env_items_internal[index]);
158+
return matimpl::ConstituentItemBase(envSharedInfo(), ConstituentItemIndex(index));
165159
}
166160

167161
//! Retourne la MatCell correspondant au milieu d'indice \a index du milieu \a env_index
168162
matimpl::ConstituentItemBase matItemBase(Int16 env_index,Int32 index)
169163
{
170-
return matimpl::ConstituentItemBase(&m_mat_items_internal[env_index][index]);
164+
return matimpl::ConstituentItemBase(matSharedInfo(), ConstituentItemIndex(matItemsInternalRange(env_index)[index]));
171165
}
172166

173167
ComponentItemInternalRange allEnvItemsInternalRange() const

0 commit comments

Comments
 (0)