315{
317
318 if (ml==nullptr) return;
319
320 struct MoveMemberInfo
321 {
322 MoveMemberInfo(MemberDef *md,MemberGroup *mg,
const RefItemVector &rv)
323 : memberDef(md), memberGroup(mg), sli(rv) {}
324 MemberDef *memberDef;
325 MemberGroup *memberGroup;
327 };
328 std::vector<MoveMemberInfo> movedMembers;
329
330 for (const auto &md : *ml)
331 {
332 if (md->isEnumerate())
333 {
334 for (const auto &fmd : md->enumFieldList())
335 {
336 int groupId=fmd->getMemberGroupId();
337 if (groupId!=-1)
338 {
341 {
342 const auto &info = it->second;
343 auto mg_it = std::find_if(pMemberGroups->begin(),
344 pMemberGroups->end(),
345 [&groupId](const auto &g)
346 { return g->groupId()==groupId; }
347 );
349 if (mg_it==pMemberGroups->end())
350 {
351 auto mg = std::make_unique<MemberGroup>(
352 context,
353 groupId,
354 info->header,
355 info->doc,
356 info->docFile,
357 info->docLine,
358 ml->container());
359 mg_ptr = mg.get();
360 pMemberGroups->push_back(std::move(mg));
361 }
362 else
363 {
364 mg_ptr = (*mg_it).get();
365 }
368 if (fmdm)
369 {
371 }
372 }
373 }
374 }
375 }
376 int groupId=md->getMemberGroupId();
377 if (groupId!=-1)
378 {
381 {
382 const auto &info = it->second;
383 auto mg_it = std::find_if(pMemberGroups->begin(),
384 pMemberGroups->end(),
385 [&groupId](const auto &g)
386 { return g->groupId()==groupId; }
387 );
389 if (mg_it==pMemberGroups->end())
390 {
391 auto mg = std::make_unique<MemberGroup>(
392 context,
393 groupId,
394 info->header,
395 info->doc,
396 info->docFile,
397 info->docLine,
398 ml->container());
399 mg_ptr = mg.get();
400 pMemberGroups->push_back(std::move(mg));
401 }
402 else
403 {
404 mg_ptr = (*mg_it).get();
405 }
406 movedMembers.emplace_back(md,mg_ptr,info->m_sli);
407 }
408 }
409 }
410
411
412 for (const auto &mmi : movedMembers)
413 {
414 ml->remove(mmi.memberDef);
415 mmi.memberGroup->insertMember(mmi.memberDef->resolveAlias());
416 mmi.memberGroup->setRefItems(mmi.sli);
418 if (rmdm)
419 {
421 }
422 }
423}
static MemberGroupInfoMap memberGroupInfoMap
virtual void setMemberGroup(MemberGroup *grp)=0
A class representing a group of members.
void insertMember(MemberDef *md)
DirIterator end(const DirIterator &) noexcept
MemberDefMutable * toMemberDefMutable(Definition *d)
std::vector< RefItem * > RefItemVector