1
1
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2
2
// -----------------------------------------------------------------------------
3
- // Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3
+ // Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4
4
// See the top-level COPYRIGHT file for details.
5
5
// SPDX-License-Identifier: Apache-2.0
6
6
// -----------------------------------------------------------------------------
7
7
/* ---------------------------------------------------------------------------*/
8
- /* ComponentItemVector.cc (C) 2000-2023 */
8
+ /* ComponentItemVector.cc (C) 2000-2024 */
9
9
/* */
10
10
/* Vecteur sur les entités d'un composant. */
11
11
/* ---------------------------------------------------------------------------*/
18
18
#include " arcane/utils/PlatformUtils.h"
19
19
20
20
#include " arcane/core/materials/IMeshComponent.h"
21
+ #include " arcane/core/materials/IMeshMaterialMng.h"
21
22
#include " arcane/core/materials/MeshComponentPartData.h"
23
+ #include " arcane/core/materials/internal/ConstituentItemLocalIdList.h"
24
+ #include " arcane/core/materials/internal/IMeshMaterialMngInternal.h"
22
25
23
26
/* ---------------------------------------------------------------------------*/
24
27
/* ---------------------------------------------------------------------------*/
@@ -35,37 +38,20 @@ Impl(IMeshComponent* component)
35
38
, m_component(component)
36
39
, m_matvar_indexes(platform::getDefaultDataAllocator())
37
40
, 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()))
39
43
{
40
44
}
41
45
42
46
/* ---------------------------------------------------------------------------*/
43
47
/* ---------------------------------------------------------------------------*/
44
48
45
49
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)
68
53
{
54
+ m_constituent_list->deprecatedCopy (items_internal);
69
55
m_matvar_indexes.copy (matvar_indexes);
70
56
m_items_local_id.copy (items_local_id);
71
57
m_part_data->_setFromMatVarIndexes (matvar_indexes);
@@ -74,15 +60,6 @@ Impl(IMeshComponent* component,ConstArrayView<ComponentItemInternal*> items_inte
74
60
/* ---------------------------------------------------------------------------*/
75
61
/* ---------------------------------------------------------------------------*/
76
62
77
- ComponentItemVector::Impl::
78
- ~Impl ()
79
- {
80
- delete m_part_data;
81
- }
82
-
83
- /* ---------------------------------------------------------------------------*/
84
- /* ---------------------------------------------------------------------------*/
85
-
86
63
void ComponentItemVector::Impl::
87
64
deleteMe ()
88
65
{
@@ -106,8 +83,8 @@ ComponentItemVector(IMeshComponent* component)
106
83
107
84
ComponentItemVector::
108
85
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()))
111
88
{
112
89
}
113
90
@@ -118,16 +95,10 @@ ComponentItemVector(ComponentItemVectorView rhs)
118
95
/* ---------------------------------------------------------------------------*/
119
96
120
97
void ComponentItemVector::
121
- _setItemsInternal (ConstArrayView<ComponentItemInternal* > globals,
122
- ConstArrayView<ComponentItemInternal* > multiples)
98
+ _setItems (ConstArrayView<ComponentItemInternalLocalId > globals,
99
+ ConstArrayView<ComponentItemInternalLocalId > multiples)
123
100
{
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);
131
102
}
132
103
133
104
/* ---------------------------------------------------------------------------*/
@@ -140,22 +111,22 @@ _setMatVarIndexes(ConstArrayView<MatVarIndex> globals,
140
111
Integer nb_global = globals.size ();
141
112
Integer nb_multiple = multiples.size ();
142
113
143
- m_p->m_matvar_indexes .resize (nb_global+ nb_multiple);
114
+ m_p->m_matvar_indexes .resize (nb_global + nb_multiple);
144
115
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);
147
118
148
119
{
149
120
Int32Array& idx = m_p->m_part_data ->_mutableValueIndexes (eMatPart::Pure);
150
121
idx.resize (nb_global);
151
- for ( Integer i= 0 ; i< nb_global; ++i )
122
+ for ( Integer i = 0 ; i < nb_global; ++i)
152
123
idx[i] = globals[i].valueIndex ();
153
124
}
154
125
155
126
{
156
127
Int32Array& idx = m_p->m_part_data ->_mutableValueIndexes (eMatPart::Impure);
157
128
idx.resize (nb_multiple);
158
- for ( Integer i= 0 ; i< nb_multiple; ++i )
129
+ for ( Integer i = 0 ; i < nb_multiple; ++i)
159
130
idx[i] = multiples[i].valueIndex ();
160
131
}
161
132
@@ -166,15 +137,15 @@ _setMatVarIndexes(ConstArrayView<MatVarIndex> globals,
166
137
/* ---------------------------------------------------------------------------*/
167
138
168
139
void ComponentItemVector::
169
- _setLocalIds (ConstArrayView<Int32> globals,ConstArrayView<Int32> multiples)
140
+ _setLocalIds (ConstArrayView<Int32> globals, ConstArrayView<Int32> multiples)
170
141
{
171
142
Integer nb_global = globals.size ();
172
143
Integer nb_multiple = multiples.size ();
173
144
174
- m_p->m_items_local_id .resize (nb_global+ nb_multiple);
145
+ m_p->m_items_local_id .resize (nb_global + nb_multiple);
175
146
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);
178
149
}
179
150
180
151
/* ---------------------------------------------------------------------------*/
@@ -184,7 +155,7 @@ ComponentItemVectorView ComponentItemVector::
184
155
view () const
185
156
{
186
157
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 );
188
159
}
189
160
/* ---------------------------------------------------------------------------*/
190
161
/* ---------------------------------------------------------------------------*/
@@ -207,6 +178,15 @@ impureItems() const
207
178
/* ---------------------------------------------------------------------------*/
208
179
/* ---------------------------------------------------------------------------*/
209
180
181
+ ConstituentItemLocalIdListView ComponentItemVector::
182
+ _constituentItemListView () const
183
+ {
184
+ return m_p->m_constituent_list ->view ();
185
+ }
186
+
187
+ /* ---------------------------------------------------------------------------*/
188
+ /* ---------------------------------------------------------------------------*/
189
+
210
190
} // End namespace Arcane::Materials
211
191
212
192
/* ---------------------------------------------------------------------------*/
0 commit comments