diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2020-02-27 21:38:22 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2020-02-27 21:39:20 (GMT) |
commit | aca13723a9373a1080ca7f108e7be0905b9ae793 (patch) | |
tree | 311a47c8d4005a05a5b42dc4ebcf22718e650968 /src/definition.cpp | |
parent | a09f1a1e3e676a75669f7b85482aa9f95a947111 (diff) | |
download | Doxygen-aca13723a9373a1080ca7f108e7be0905b9ae793.zip Doxygen-aca13723a9373a1080ca7f108e7be0905b9ae793.tar.gz Doxygen-aca13723a9373a1080ca7f108e7be0905b9ae793.tar.bz2 |
Restructure the way RefLists are handled
Diffstat (limited to 'src/definition.cpp')
-rw-r--r-- | src/definition.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/definition.cpp b/src/definition.cpp index 00f2bc5..043e210 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -44,6 +44,7 @@ #include "dirdef.h" #include "pagedef.h" #include "bufstr.h" +#include "reflist.h" //----------------------------------------------------------------------------------------- @@ -59,7 +60,7 @@ class DefinitionImpl::IMPL MemberSDict *sourceRefByDict = 0; MemberSDict *sourceRefsDict = 0; - std::vector<ListItemInfo> xrefListItems; + std::vector<RefItem*> xrefListItems; GroupList *partOfGroups = 0; DocInfo *details = 0; // not exported @@ -1577,7 +1578,7 @@ void DefinitionImpl::makePartOfGroup(GroupDef *gd) m_impl->partOfGroups->append(gd); } -void DefinitionImpl::setRefItems(const std::vector<ListItemInfo> &sli) +void DefinitionImpl::setRefItems(const std::vector<RefItem*> &sli) { m_impl->xrefListItems.insert(m_impl->xrefListItems.end(), sli.cbegin(), sli.cend()); } @@ -1593,31 +1594,34 @@ void DefinitionImpl::mergeRefItems(Definition *d) // sort results on itemId std::sort(m_impl->xrefListItems.begin(),m_impl->xrefListItems.end(), - [](const ListItemInfo &left,const ListItemInfo &right) - { return left.itemId<right.itemId || - (left.itemId==right.itemId && qstrcmp(left.type,right.type)<0); + [](RefItem *left,RefItem *right) + { return left->id() <right->id() || + (left->id()==right->id() && + qstrcmp(left->list()->listName(),right->list()->listName())<0); }); // filter out duplicates auto last = std::unique(m_impl->xrefListItems.begin(),m_impl->xrefListItems.end(), - [](const ListItemInfo &left,const ListItemInfo &right) - { return left.itemId==right.itemId && left.type==right.type; }); + [](const RefItem *left,const RefItem *right) + { return left->id()==right->id() && + left->list()->listName()==right->list()->listName(); + }); m_impl->xrefListItems.erase(last, m_impl->xrefListItems.end()); } int DefinitionImpl::_getXRefListId(const char *listName) const { - for (const ListItemInfo &lii : m_impl->xrefListItems) + for (const RefItem *item : m_impl->xrefListItems) { - if (lii.type==listName) + if (item->list()->listName()==listName) { - return lii.itemId; + return item->id(); } } return -1; } -const std::vector<ListItemInfo> &DefinitionImpl::xrefListItems() const +const std::vector<RefItem*> &DefinitionImpl::xrefListItems() const { return m_impl->xrefListItems; } |