52class ARCANE_MESH_EXPORT ItemInternalMap
55 friend class DynamicMeshKindInfos;
61 using BaseData = LegacyImpl::Data;
65 static constexpr bool UseNewImpl = 1;
69 friend ItemInternalMap;
77 m_legacy_data->setValue(v);
85 explicit LookupData(NewImpl::iterator x)
89 explicit LookupData(BaseData* d)
93 NewImpl::iterator m_iter;
94 BaseData* m_legacy_data =
nullptr;
100 using Data ARCANE_DEPRECATED_REASON(
"Y2024: Data type is internal to Arcane") = LegacyImpl::Data;
122 return m_new_impl.insert(std::make_pair(key, v)).second;
128 return m_new_impl.clear();
134 return CheckedConvert::toInt32(m_new_impl.size());
144 auto x = m_new_impl.find(key);
145 if (x == m_new_impl.end())
153 return (m_new_impl.find(key) != m_new_impl.end());
164 void resize(
Int32 new_size, [[maybe_unused]]
bool use_prime =
false)
167 m_new_impl.reserve(
static_cast<uint64_t
>(new_size),
false);
175 void notifyUniqueIdsChanged();
189 template <
class Lambda>
void
192 for (
auto [key, value] : m_new_impl)
193 lambda(Arcane::impl::ItemBase(value));
198 return CheckedConvert::toInt32(m_new_impl.bucket_count());
206 auto x = m_new_impl.find(key);
207 return (x != m_new_impl.end()) ? x->second : impl::ItemBase{};
212 auto x = m_new_impl.find(key);
213 return (x != m_new_impl.end()) ? x->second->localId() : NULL_ITEM_LOCAL_ID;
223 auto x = m_new_impl.find(uid);
224 if (x == m_new_impl.end())
236 auto x = m_new_impl.find(uid);
237 if (x == m_new_impl.end())
239 return x->second->localId();
242 void checkValid()
const;
246 ARCANE_DEPRECATED_REASON(
"Y2024: This method is internal to Arcane")
247 Data* lookup([[maybe_unused]]
Int64 key)
249 _throwNotSupported(
"lookup");
252 ARCANE_DEPRECATED_REASON(
"Y2024: This method is internal to Arcane")
253 const Data* lookup([[maybe_unused]]
Int64 key)
const
255 _throwNotSupported(
"lookup");
258 ARCANE_DEPRECATED_REASON(
"Y2024: This method is internal to Arcane")
259 ConstArrayView<BaseData*> buckets()
const
261 _throwNotSupported(
"buckets");
264 ARCANE_DEPRECATED_REASON(
"This method is internal to Arcane")
265 BaseData* lookupAdd([[maybe_unused]] Int64
id,
266 [[maybe_unused]] ItemInternal* value,
267 [[maybe_unused]]
bool& is_add)
269 _throwNotSupported(
"lookupAdd(id,value,is_add)");
272 ARCANE_DEPRECATED_REASON(
"Y2024: This method is internal to Arcane")
273 BaseData* lookupAdd([[maybe_unused]] Int64 uid)
275 _throwNotSupported(
"lookupAdd(uid)");
278 ARCANE_DEPRECATED_REASON(
"Y2024: Use findItem() instead")
279 ItemInternal* lookupValue([[maybe_unused]] Int64 uid)
const
281 _throwNotSupported(
"lookupValue");
284 ARCANE_DEPRECATED_REASON(
"Y2024: Use findItem() instead")
285 ItemInternal* operator[]([[maybe_unused]] Int64 uid)
const
287 _throwNotSupported(
"operator[]");
300 void _changeLocalIds(ArrayView<ItemInternal*> items_internal,
301 ConstArrayView<Int32> old_to_new_local_ids);
303 LookupData _lookupAdd(Int64
id, ItemInternal* value,
bool& is_add)
305 auto x = m_new_impl.insert(std::make_pair(
id, value));
307 return LookupData(x.first);
313 auto x = m_new_impl.find(key);
314 if (x == m_new_impl.end())
316 _checkValid(key, x->second);
322 void _throwNotFound ARCANE_NORETURN(
Int64 id)
const;
323 void _throwNotSupported ARCANE_NORETURN(
const char* func_name)
const;