@@ -92,6 +92,10 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfoStorageView
92
92
Int16* m_component_id_data = nullptr ;
93
93
// ! Nombre d'entités sous-constituant
94
94
Int16* m_nb_sub_constituent_item_data = nullptr ;
95
+ // ! localId() de l'entité globale associée
96
+ Int32* m_global_item_local_id_data = nullptr ;
97
+ // ! Id de l'entité sous-constituant parente
98
+ ComponentItemInternalLocalId* m_super_component_item_local_id_data = nullptr ;
95
99
};
96
100
97
101
/* ---------------------------------------------------------------------------*/
@@ -132,6 +136,12 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfo
132
136
ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
133
137
return m_first_sub_constituent_item_id_data[id.localId ()];
134
138
}
139
+ inline ARCCORE_HOST_DEVICE void
140
+ _setFirstSubConstituentLocalId (ComponentItemInternalLocalId id, ComponentItemInternalLocalId first_id)
141
+ {
142
+ ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
143
+ m_first_sub_constituent_item_id_data[id.localId ()] = first_id;
144
+ }
135
145
inline ARCCORE_HOST_DEVICE Int16 _nbSubConstituent (ComponentItemInternalLocalId id) const
136
146
{
137
147
ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
@@ -152,17 +162,26 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfo
152
162
ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
153
163
m_component_id_data[id.localId ()] = component_id;
154
164
}
155
-
156
- inline ARCCORE_HOST_DEVICE void
157
- _setFirstSubConstituentLocalId (ComponentItemInternalLocalId id, ComponentItemInternalLocalId first_id)
165
+ IMeshComponent* _component (ComponentItemInternalLocalId id) const
166
+ {
167
+ return m_components[_componentId (id)];
168
+ }
169
+ impl::ItemBase _globalItemBase (ComponentItemInternalLocalId id) const
158
170
{
159
171
ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
160
- m_first_sub_constituent_item_id_data[id.localId ()] = first_id;
172
+ return impl::ItemBase (m_global_item_local_id_data[id.localId ()], m_item_shared_info);
173
+ }
174
+ void _setGlobalItem (ComponentItemInternalLocalId id, ItemLocalId global_item_lid)
175
+ {
176
+ ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
177
+ m_global_item_local_id_data[id.localId ()] = global_item_lid.localId ();
161
178
}
179
+ matimpl::ConstituentItemBase _superItemBase (ComponentItemInternalLocalId id) const ;
162
180
163
- IMeshComponent* _component (ComponentItemInternalLocalId id) const
181
+ ARCCORE_HOST_DEVICE void _setSuperItem (ComponentItemInternalLocalId id, ComponentItemInternalLocalId super_id)
164
182
{
165
- return m_components[_componentId (id)];
183
+ ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
184
+ m_super_component_item_local_id_data[id.localId ()] = super_id;
166
185
}
167
186
168
187
inline void _reset (ComponentItemInternalLocalId id)
@@ -173,6 +192,8 @@ class ARCANE_CORE_EXPORT ComponentItemSharedInfo
173
192
m_first_sub_constituent_item_id_data[local_id] = {};
174
193
m_nb_sub_constituent_item_data[local_id] = 0 ;
175
194
m_component_id_data[local_id] = -1 ;
195
+ m_global_item_local_id_data[local_id] = NULL_ITEM_LOCAL_ID;
196
+ m_super_component_item_local_id_data[local_id] = {};
176
197
}
177
198
178
199
private:
@@ -398,7 +419,7 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
398
419
// ! Entité globale correspondante.
399
420
impl::ItemBase globalItemBase () const
400
421
{
401
- return impl::ItemBase (m_global_item_local_id, m_shared_info->m_item_shared_info );
422
+ return m_shared_info->_globalItemBase (m_component_item_internal_local_id );
402
423
}
403
424
404
425
ARCCORE_HOST_DEVICE constexpr Int32 level () const { return m_shared_info->m_level ; }
@@ -417,9 +438,7 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
417
438
// Toute modification de la structure interne doit être reportée
418
439
// dans la structure C# correspondante
419
440
MatVarIndex m_var_index;
420
- Int32 m_global_item_local_id = NULL_ITEM_LOCAL_ID;
421
441
ComponentItemInternalLocalId m_component_item_internal_local_id;
422
- ComponentItemInternalLocalId m_super_component_item_local_id;
423
442
ComponentItemSharedInfo* m_shared_info = nullptr ;
424
443
425
444
private:
@@ -448,11 +467,10 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
448
467
449
468
void _reset (ComponentItemInternalLocalId id, ComponentItemSharedInfo* shared_info)
450
469
{
451
- m_var_index.reset ();
452
- m_super_component_item_local_id = {};
453
470
m_component_item_internal_local_id = id;
454
- m_global_item_local_id = NULL_ITEM_LOCAL_ID;
455
471
m_shared_info = shared_info;
472
+
473
+ m_var_index.reset ();
456
474
m_shared_info->_reset (id);
457
475
}
458
476
};
@@ -466,12 +484,6 @@ _itemInternal(ComponentItemInternalLocalId id)
466
484
return m_component_item_internal_view.ptrAt (id.localId ());
467
485
}
468
486
469
- inline constexpr matimpl::ConstituentItemBase ComponentItemSharedInfo::
470
- _item (ComponentItemInternalLocalId id)
471
- {
472
- return matimpl::ConstituentItemBase (m_component_item_internal_view.ptrAt (id.localId ()));
473
- }
474
-
475
487
/* ---------------------------------------------------------------------------*/
476
488
/* ---------------------------------------------------------------------------*/
477
489
@@ -496,6 +508,23 @@ _localId() const
496
508
/* ---------------------------------------------------------------------------*/
497
509
/* ---------------------------------------------------------------------------*/
498
510
511
+ inline constexpr matimpl::ConstituentItemBase ComponentItemSharedInfo::
512
+ _item (ComponentItemInternalLocalId id)
513
+ {
514
+ return matimpl::ConstituentItemBase (m_component_item_internal_view.ptrAt (id.localId ()));
515
+ }
516
+
517
+ inline matimpl::ConstituentItemBase ComponentItemSharedInfo::
518
+ _superItemBase (ComponentItemInternalLocalId id) const
519
+ {
520
+ ARCCORE_CHECK_RANGE (id.localId (), -1 , m_storage_size);
521
+ ComponentItemInternalLocalId super_local_id (m_super_component_item_local_id_data[id.localId ()]);
522
+ return m_super_component_item_shared_info->_item (super_local_id);
523
+ }
524
+
525
+ /* ---------------------------------------------------------------------------*/
526
+ /* ---------------------------------------------------------------------------*/
527
+
499
528
inline ARCCORE_HOST_DEVICE matimpl::ConstituentItemBase ComponentItemInternal::
500
529
_subItemBase (Int32 i) const
501
530
{
@@ -506,8 +535,7 @@ _subItemBase(Int32 i) const
506
535
matimpl::ConstituentItemBase ComponentItemInternal::
507
536
_superItemBase () const
508
537
{
509
- ComponentItemInternalLocalId lid (m_super_component_item_local_id.localId ());
510
- return m_shared_info->m_super_component_item_shared_info ->_item (lid);
538
+ return m_shared_info->_superItemBase (m_component_item_internal_local_id);
511
539
}
512
540
513
541
/* ---------------------------------------------------------------------------*/
@@ -576,14 +604,14 @@ _superItemBase() const
576
604
inline void matimpl::ConstituentItemBase::
577
605
_setSuperAndGlobalItem (ComponentItemInternalLocalId cii, ItemLocalId ii)
578
606
{
579
- m_component_item-> m_super_component_item_local_id = cii;
580
- m_component_item-> m_global_item_local_id = ii. localId ( );
607
+ _sharedInfo ()-> _setSuperItem ( _localId (), cii) ;
608
+ _sharedInfo ()-> _setGlobalItem ( _localId (), ii );
581
609
}
582
610
583
611
inline void matimpl::ConstituentItemBase::
584
612
_setGlobalItem (ItemLocalId ii)
585
613
{
586
- m_component_item-> m_global_item_local_id = ii. localId ( );
614
+ _sharedInfo ()-> _setGlobalItem ( _localId (), ii );
587
615
}
588
616
589
617
// ! Première entité sous-composant.
0 commit comments