Loading src/groupdef.cpp +41 −10 Original line number Original line Diff line number Diff line Loading @@ -510,7 +510,31 @@ void GroupDef::removeMember(MemberDef *md) bool GroupDef::containsGroup(const GroupDef *def) bool GroupDef::containsGroup(const GroupDef *def) { { return this==def || groupList->find(def) >= 0; if (this==def) { return TRUE; } else if (groupList->find(def)>=0) { return TRUE; } else // look for subgroups as well { GroupList *groups = partOfGroups(); if (groups) { GroupListIterator it(*groups); GroupDef *gd; for (;(gd=it.current());++it) { if (gd->containsGroup(def)) { return TRUE; } } } } return FALSE; } } void GroupDef::addGroup(const GroupDef *def) void GroupDef::addGroup(const GroupDef *def) Loading Loading @@ -1346,16 +1370,23 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup) for (;(g=gli.current());++gli) for (;(g=gli.current());++gli) { { GroupDef *gd=0; GroupDef *gd=0; if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname)) && if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname))) !gd->containsGroup(subGroup) ) { if (gd==subGroup) { warn(root->fileName,root->startLine,"Refusing to add group %s to itself", gd->name().data()); } else if (gd->containsGroup(subGroup)) { warn(root->fileName,root->startLine,"Refusing to add group %s to group %s, since the latter is already a " "subgroup of the former\n", subGroup->name().data(),gd->name().data()); } else { { gd->addGroup(subGroup); gd->addGroup(subGroup); subGroup->makePartOfGroup(gd); subGroup->makePartOfGroup(gd); } } else if (gd==subGroup) { warn(root->fileName,root->startLine,"Trying to add group %s to itself!", gd->name().data()); } } } } } } Loading Loading
src/groupdef.cpp +41 −10 Original line number Original line Diff line number Diff line Loading @@ -510,7 +510,31 @@ void GroupDef::removeMember(MemberDef *md) bool GroupDef::containsGroup(const GroupDef *def) bool GroupDef::containsGroup(const GroupDef *def) { { return this==def || groupList->find(def) >= 0; if (this==def) { return TRUE; } else if (groupList->find(def)>=0) { return TRUE; } else // look for subgroups as well { GroupList *groups = partOfGroups(); if (groups) { GroupListIterator it(*groups); GroupDef *gd; for (;(gd=it.current());++it) { if (gd->containsGroup(def)) { return TRUE; } } } } return FALSE; } } void GroupDef::addGroup(const GroupDef *def) void GroupDef::addGroup(const GroupDef *def) Loading Loading @@ -1346,16 +1370,23 @@ void addGroupToGroups(Entry *root,GroupDef *subGroup) for (;(g=gli.current());++gli) for (;(g=gli.current());++gli) { { GroupDef *gd=0; GroupDef *gd=0; if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname)) && if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname))) !gd->containsGroup(subGroup) ) { if (gd==subGroup) { warn(root->fileName,root->startLine,"Refusing to add group %s to itself", gd->name().data()); } else if (gd->containsGroup(subGroup)) { warn(root->fileName,root->startLine,"Refusing to add group %s to group %s, since the latter is already a " "subgroup of the former\n", subGroup->name().data(),gd->name().data()); } else { { gd->addGroup(subGroup); gd->addGroup(subGroup); subGroup->makePartOfGroup(gd); subGroup->makePartOfGroup(gd); } } else if (gd==subGroup) { warn(root->fileName,root->startLine,"Trying to add group %s to itself!", gd->name().data()); } } } } } } Loading