314{
316
317 if (ml==nullptr) return;
318
319 struct MoveMemberInfo
320 {
321 MoveMemberInfo(MemberDef *md,MemberGroup *mg,
const RefItemVector &rv)
322 : memberDef(md), memberGroup(mg), sli(rv) {}
323 MemberDef *memberDef;
324 MemberGroup *memberGroup;
326 };
327 std::vector<MoveMemberInfo> movedMembers;
328
329 for (const auto &md : *ml)
330 {
331 if (md->isEnumerate())
332 {
333 for (const auto &fmd : md->enumFieldList())
334 {
335 int groupId=fmd->getMemberGroupId();
336 if (groupId!=-1)
337 {
340 {
341 const auto &info = it->second;
342 auto mg_it = std::find_if(pMemberGroups->begin(),
343 pMemberGroups->end(),
344 [&groupId](const auto &g)
345 { return g->groupId()==groupId; }
346 );
348 if (mg_it==pMemberGroups->end())
349 {
350 auto mg = std::make_unique<MemberGroup>(
351 context,
352 groupId,
353 info->header,
354 info->doc,
355 info->docFile,
356 info->docLine,
357 ml->container());
358 mg_ptr = mg.get();
359 pMemberGroups->push_back(std::move(mg));
360 }
361 else
362 {
363 mg_ptr = (*mg_it).get();
364 }
367 if (fmdm)
368 {
370 }
371 }
372 }
373 }
374 }
375 int groupId=md->getMemberGroupId();
376 if (groupId!=-1)
377 {
380 {
381 const auto &info = it->second;
382 auto mg_it = std::find_if(pMemberGroups->begin(),
383 pMemberGroups->end(),
384 [&groupId](const auto &g)
385 { return g->groupId()==groupId; }
386 );
388 if (mg_it==pMemberGroups->end())
389 {
390 auto mg = std::make_unique<MemberGroup>(
391 context,
392 groupId,
393 info->header,
394 info->doc,
395 info->docFile,
396 info->docLine,
397 ml->container());
398 mg_ptr = mg.get();
399 pMemberGroups->push_back(std::move(mg));
400 }
401 else
402 {
403 mg_ptr = (*mg_it).get();
404 }
405 movedMembers.emplace_back(md,mg_ptr,info->m_sli);
406 }
407 }
408 }
409
410
411 for (const auto &mmi : movedMembers)
412 {
413 ml->remove(mmi.memberDef);
414 mmi.memberGroup->insertMember(mmi.memberDef->resolveAlias());
415 mmi.memberGroup->setRefItems(mmi.sli);
417 if (rmdm)
418 {
420 }
421 }
422}
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