Skip to content

Commit 031e8da

Browse files
Merge pull request #1191 from arcaneframework/dev/gg-remove-some-usage-of-componentiteminternal-pointer
Remove some usage of 'ComponentItemInternal*'
2 parents 2434aff + 67ef577 commit 031e8da

21 files changed

+279
-169
lines changed

arcane/src/arcane/core/materials/ComponentItem.h

+5
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,11 @@ class ARCANE_CORE_EXPORT ComponentCell
154154
{
155155
return m_internal;
156156
}
157+
//! \internal
158+
ARCCORE_HOST_DEVICE ComponentItemInternalLocalId _internalLocalId() const
159+
{
160+
return m_internal->_internalLocalId();
161+
}
157162
};
158163

159164
/*---------------------------------------------------------------------------*/

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

+40-15
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,6 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfo
9494
namespace Arcane::Materials::matimpl
9595
{
9696

97-
/*---------------------------------------------------------------------------*/
98-
/*---------------------------------------------------------------------------*/
99-
/*!
100-
* \internal
101-
*/
102-
class ARCANE_CORE_EXPORT ComponentItemInternalLocalIdListView
103-
{
104-
private:
105-
106-
ComponentItemSharedInfo* m_component_shared_info = nullptr;
107-
ArrayView<ComponentItemInternalLocalId> m_ids;
108-
};
109-
11097
/*---------------------------------------------------------------------------*/
11198
/*---------------------------------------------------------------------------*/
11299

@@ -149,7 +136,7 @@ class ARCANE_CORE_EXPORT ConstituentItemBase
149136
/*---------------------------------------------------------------------------*/
150137
/*---------------------------------------------------------------------------*/
151138

152-
} // namespace matimpl
139+
} // namespace Arcane::Materials::matimpl
153140

154141
/*---------------------------------------------------------------------------*/
155142
/*---------------------------------------------------------------------------*/
@@ -184,6 +171,7 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
184171
friend class MeshEnvironment;
185172
friend class AllEnvData;
186173
friend class MeshMaterialMng;
174+
friend class ConstituentItemLocalIdList;
187175

188176
private:
189177

@@ -331,7 +319,7 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
331319
m_component_id = static_cast<Int16>(component_id);
332320
}
333321

334-
ComponentItemInternalLocalId _internalLocalId() const
322+
ARCCORE_HOST_DEVICE ComponentItemInternalLocalId _internalLocalId() const
335323
{
336324
return m_component_item_internal_local_id;
337325
}
@@ -361,6 +349,43 @@ _itemInternal(ComponentItemInternalLocalId id)
361349
/*---------------------------------------------------------------------------*/
362350
/*---------------------------------------------------------------------------*/
363351

352+
/*!
353+
* \internal
354+
* \brief Vue sur une instance de ConstituentItemLocalIdList.
355+
*
356+
* Les instances de ces classes sont notamment utilisées pour les énumérateurs
357+
* sur les constituants.
358+
*/
359+
class ARCANE_CORE_EXPORT ConstituentItemLocalIdListView
360+
{
361+
friend class ConstituentItemLocalIdList;
362+
friend class ComponentItemVectorView;
363+
364+
private:
365+
366+
ConstituentItemLocalIdListView(ComponentItemSharedInfo* shared_info,
367+
ConstArrayView<ComponentItemInternalLocalId> ids,
368+
ConstArrayView<ComponentItemInternal*> items_internal)
369+
: m_component_shared_info(shared_info)
370+
, m_ids(ids)
371+
, m_items_internal(items_internal)
372+
{
373+
}
374+
375+
private:
376+
377+
ConstArrayView<ComponentItemInternal*> _itemsInternal() const { return m_items_internal; }
378+
379+
private:
380+
381+
ComponentItemSharedInfo* m_component_shared_info = nullptr;
382+
ConstArrayView<ComponentItemInternalLocalId> m_ids;
383+
ConstArrayView<ComponentItemInternal*> m_items_internal;
384+
};
385+
386+
/*---------------------------------------------------------------------------*/
387+
/*---------------------------------------------------------------------------*/
388+
364389
} // End namespace Arcane::Materials
365390

366391
/*---------------------------------------------------------------------------*/

arcane/src/arcane/core/materials/ComponentItemVector.cc

+35-55
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
22
//-----------------------------------------------------------------------------
3-
// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3+
// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
44
// See the top-level COPYRIGHT file for details.
55
// SPDX-License-Identifier: Apache-2.0
66
//-----------------------------------------------------------------------------
77
/*---------------------------------------------------------------------------*/
8-
/* ComponentItemVector.cc (C) 2000-2023 */
8+
/* ComponentItemVector.cc (C) 2000-2024 */
99
/* */
1010
/* Vecteur sur les entités d'un composant. */
1111
/*---------------------------------------------------------------------------*/
@@ -18,7 +18,10 @@
1818
#include "arcane/utils/PlatformUtils.h"
1919

2020
#include "arcane/core/materials/IMeshComponent.h"
21+
#include "arcane/core/materials/IMeshMaterialMng.h"
2122
#include "arcane/core/materials/MeshComponentPartData.h"
23+
#include "arcane/core/materials/internal/ConstituentItemLocalIdList.h"
24+
#include "arcane/core/materials/internal/IMeshMaterialMngInternal.h"
2225

2326
/*---------------------------------------------------------------------------*/
2427
/*---------------------------------------------------------------------------*/
@@ -35,37 +38,20 @@ Impl(IMeshComponent* component)
3538
, m_component(component)
3639
, m_matvar_indexes(platform::getDefaultDataAllocator())
3740
, m_items_local_id(platform::getDefaultDataAllocator())
38-
, m_part_data(new MeshComponentPartData(component))
41+
, m_part_data(std::make_unique<MeshComponentPartData>(component))
42+
, m_constituent_list(std::make_unique<ConstituentItemLocalIdList>(m_material_mng->_internalApi()->componentItemSharedInfo()))
3943
{
4044
}
4145

4246
/*---------------------------------------------------------------------------*/
4347
/*---------------------------------------------------------------------------*/
4448

4549
ComponentItemVector::Impl::
46-
Impl(Impl&& rhs)
47-
: m_material_mng(rhs.m_material_mng)
48-
, m_component(rhs.m_component)
49-
, m_items_internal(rhs.m_items_internal)
50-
, m_matvar_indexes(rhs.m_matvar_indexes)
51-
, m_items_local_id(rhs.m_items_local_id)
52-
, m_part_data(new MeshComponentPartData(std::move(*rhs.m_part_data)))
53-
{
54-
}
55-
56-
/*---------------------------------------------------------------------------*/
57-
/*---------------------------------------------------------------------------*/
58-
59-
ComponentItemVector::Impl::
60-
Impl(IMeshComponent* component,ConstArrayView<ComponentItemInternal*> items_internal,
61-
ConstArrayView<MatVarIndex> matvar_indexes,ConstArrayView<Int32> items_local_id)
62-
: m_material_mng(component->materialMng())
63-
, m_component(component)
64-
, m_items_internal(items_internal)
65-
, m_matvar_indexes(platform::getDefaultDataAllocator())
66-
, m_items_local_id(platform::getDefaultDataAllocator())
67-
, m_part_data(new MeshComponentPartData(component))
50+
Impl(IMeshComponent* component, ConstArrayView<ComponentItemInternal*> items_internal,
51+
ConstArrayView<MatVarIndex> matvar_indexes, ConstArrayView<Int32> items_local_id)
52+
: Impl(component)
6853
{
54+
m_constituent_list->deprecatedCopy(items_internal);
6955
m_matvar_indexes.copy(matvar_indexes);
7056
m_items_local_id.copy(items_local_id);
7157
m_part_data->_setFromMatVarIndexes(matvar_indexes);
@@ -74,15 +60,6 @@ Impl(IMeshComponent* component,ConstArrayView<ComponentItemInternal*> items_inte
7460
/*---------------------------------------------------------------------------*/
7561
/*---------------------------------------------------------------------------*/
7662

77-
ComponentItemVector::Impl::
78-
~Impl()
79-
{
80-
delete m_part_data;
81-
}
82-
83-
/*---------------------------------------------------------------------------*/
84-
/*---------------------------------------------------------------------------*/
85-
8663
void ComponentItemVector::Impl::
8764
deleteMe()
8865
{
@@ -106,8 +83,8 @@ ComponentItemVector(IMeshComponent* component)
10683

10784
ComponentItemVector::
10885
ComponentItemVector(ComponentItemVectorView rhs)
109-
: m_p(new Impl(rhs.component(),rhs._itemsInternalView(),
110-
rhs._matvarIndexes(),rhs._internalLocalIds()))
86+
: m_p(new Impl(rhs.component(), rhs._itemsInternalView(),
87+
rhs._matvarIndexes(), rhs._internalLocalIds()))
11188
{
11289
}
11390

@@ -118,16 +95,10 @@ ComponentItemVector(ComponentItemVectorView rhs)
11895
/*---------------------------------------------------------------------------*/
11996

12097
void ComponentItemVector::
121-
_setItemsInternal(ConstArrayView<ComponentItemInternal*> globals,
122-
ConstArrayView<ComponentItemInternal*> multiples)
98+
_setItems(ConstArrayView<ComponentItemInternalLocalId> globals,
99+
ConstArrayView<ComponentItemInternalLocalId> multiples)
123100
{
124-
Integer nb_global = globals.size();
125-
Integer nb_multiple = multiples.size();
126-
127-
m_p->m_items_internal.resize(nb_global+nb_multiple);
128-
129-
m_p->m_items_internal.subView(0,nb_global).copy(globals);
130-
m_p->m_items_internal.subView(nb_global,nb_multiple).copy(multiples);
101+
m_p->m_constituent_list->copyPureAndPartial(globals, multiples);
131102
}
132103

133104
/*---------------------------------------------------------------------------*/
@@ -140,22 +111,22 @@ _setMatVarIndexes(ConstArrayView<MatVarIndex> globals,
140111
Integer nb_global = globals.size();
141112
Integer nb_multiple = multiples.size();
142113

143-
m_p->m_matvar_indexes.resize(nb_global+nb_multiple);
114+
m_p->m_matvar_indexes.resize(nb_global + nb_multiple);
144115

145-
m_p->m_matvar_indexes.subView(0,nb_global).copy(globals);
146-
m_p->m_matvar_indexes.subView(nb_global,nb_multiple).copy(multiples);
116+
m_p->m_matvar_indexes.subView(0, nb_global).copy(globals);
117+
m_p->m_matvar_indexes.subView(nb_global, nb_multiple).copy(multiples);
147118

148119
{
149120
Int32Array& idx = m_p->m_part_data->_mutableValueIndexes(eMatPart::Pure);
150121
idx.resize(nb_global);
151-
for( Integer i=0; i<nb_global; ++i )
122+
for (Integer i = 0; i < nb_global; ++i)
152123
idx[i] = globals[i].valueIndex();
153124
}
154125

155126
{
156127
Int32Array& idx = m_p->m_part_data->_mutableValueIndexes(eMatPart::Impure);
157128
idx.resize(nb_multiple);
158-
for( Integer i=0; i<nb_multiple; ++i )
129+
for (Integer i = 0; i < nb_multiple; ++i)
159130
idx[i] = multiples[i].valueIndex();
160131
}
161132

@@ -166,15 +137,15 @@ _setMatVarIndexes(ConstArrayView<MatVarIndex> globals,
166137
/*---------------------------------------------------------------------------*/
167138

168139
void ComponentItemVector::
169-
_setLocalIds(ConstArrayView<Int32> globals,ConstArrayView<Int32> multiples)
140+
_setLocalIds(ConstArrayView<Int32> globals, ConstArrayView<Int32> multiples)
170141
{
171142
Integer nb_global = globals.size();
172143
Integer nb_multiple = multiples.size();
173144

174-
m_p->m_items_local_id.resize(nb_global+nb_multiple);
145+
m_p->m_items_local_id.resize(nb_global + nb_multiple);
175146

176-
m_p->m_items_local_id.subView(0,nb_global).copy(globals);
177-
m_p->m_items_local_id.subView(nb_global,nb_multiple).copy(multiples);
147+
m_p->m_items_local_id.subView(0, nb_global).copy(globals);
148+
m_p->m_items_local_id.subView(nb_global, nb_multiple).copy(multiples);
178149
}
179150

180151
/*---------------------------------------------------------------------------*/
@@ -184,7 +155,7 @@ ComponentItemVectorView ComponentItemVector::
184155
view() const
185156
{
186157
return ComponentItemVectorView(m_p->m_component, m_p->m_matvar_indexes,
187-
m_p->m_items_internal, m_p->m_items_local_id);
158+
m_p->m_constituent_list->view(), m_p->m_items_local_id);
188159
}
189160
/*---------------------------------------------------------------------------*/
190161
/*---------------------------------------------------------------------------*/
@@ -207,6 +178,15 @@ impureItems() const
207178
/*---------------------------------------------------------------------------*/
208179
/*---------------------------------------------------------------------------*/
209180

181+
ConstituentItemLocalIdListView ComponentItemVector::
182+
_constituentItemListView() const
183+
{
184+
return m_p->m_constituent_list->view();
185+
}
186+
187+
/*---------------------------------------------------------------------------*/
188+
/*---------------------------------------------------------------------------*/
189+
210190
} // End namespace Arcane::Materials
211191

212192
/*---------------------------------------------------------------------------*/

arcane/src/arcane/core/materials/ComponentItemVector.h

+15-14
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
22
//-----------------------------------------------------------------------------
3-
// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3+
// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
44
// See the top-level COPYRIGHT file for details.
55
// SPDX-License-Identifier: Apache-2.0
66
//-----------------------------------------------------------------------------
77
/*---------------------------------------------------------------------------*/
8-
/* ComponentItemVector.h (C) 2000-2023 */
8+
/* ComponentItemVector.h (C) 2000-2024 */
99
/* */
1010
/* Vecteur sur des entités composants. */
1111
/*---------------------------------------------------------------------------*/
@@ -28,7 +28,7 @@
2828

2929
namespace Arcane::Materials
3030
{
31-
31+
class ConstituentItemLocalIdList;
3232
/*---------------------------------------------------------------------------*/
3333
/*---------------------------------------------------------------------------*/
3434
/*!
@@ -64,26 +64,27 @@ class ARCANE_CORE_EXPORT ComponentItemVector
6464
public:
6565

6666
Impl(IMeshComponent* component);
67-
Impl(Impl&& rhs);
6867
Impl(IMeshComponent* component, ConstArrayView<ComponentItemInternal*> items_internal,
69-
ConstArrayView<MatVarIndex> matvar_indexes,ConstArrayView<Int32> items_local_id);
68+
ConstArrayView<MatVarIndex> matvar_indexes, ConstArrayView<Int32> items_local_id);
7069

71-
protected:
70+
private:
7271

73-
~Impl() override;
72+
Impl(const Impl& rhs) = delete;
73+
Impl(Impl&& rhs) = delete;
74+
Impl& operator=(const Impl& rhs) = delete;
7475

7576
public:
7677

7778
void deleteMe() override;
7879

7980
public:
8081

81-
IMeshMaterialMng* m_material_mng;
82-
IMeshComponent* m_component;
83-
UniqueArray<ComponentItemInternal*> m_items_internal;
82+
IMeshMaterialMng* m_material_mng = nullptr;
83+
IMeshComponent* m_component = nullptr;
8484
UniqueArray<MatVarIndex> m_matvar_indexes;
8585
UniqueArray<Int32> m_items_local_id;
86-
MeshComponentPartData* m_part_data;
86+
std::unique_ptr<MeshComponentPartData> m_part_data;
87+
std::unique_ptr<ConstituentItemLocalIdList> m_constituent_list;
8788
};
8889

8990
public:
@@ -128,12 +129,12 @@ class ARCANE_CORE_EXPORT ComponentItemVector
128129
private:
129130

130131
ConstArrayView<MatVarIndex> _matvarIndexes() const { return m_p->m_matvar_indexes; }
131-
ConstArrayView<ComponentItemInternal*> _itemsInternalView() const { return m_p->m_items_internal.constView(); }
132+
ConstituentItemLocalIdListView _constituentItemListView() const;
132133

133134
protected:
134135

135-
void _setItemsInternal(ConstArrayView<ComponentItemInternal*> globals,
136-
ConstArrayView<ComponentItemInternal*> multiples);
136+
void _setItems(ConstArrayView<ComponentItemInternalLocalId> globals,
137+
ConstArrayView<ComponentItemInternalLocalId> multiples);
137138

138139
void _setMatVarIndexes(ConstArrayView<MatVarIndex> globals,
139140
ConstArrayView<MatVarIndex> multiples);

0 commit comments

Comments
 (0)