summaryrefslogtreecommitdiffstats
path: root/src/memberlist.h
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-01-04 16:08:58 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2021-01-04 16:08:58 (GMT)
commit5d980fa30b6524d3d53867e6fd8d6edb67a37eeb (patch)
treecf6e29619f2d74f6a344b8b4da45d2a504687265 /src/memberlist.h
parent19713dcc51ceb3930770cb25ec85590b86316cf7 (diff)
downloadDoxygen-5d980fa30b6524d3d53867e6fd8d6edb67a37eeb.zip
Doxygen-5d980fa30b6524d3d53867e6fd8d6edb67a37eeb.tar.gz
Doxygen-5d980fa30b6524d3d53867e6fd8d6edb67a37eeb.tar.bz2
Refactoring: avoid copying MemberLists by not embedding them directly
Diffstat (limited to 'src/memberlist.h')
-rw-r--r--src/memberlist.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/memberlist.h b/src/memberlist.h
index d2433f4..08e2873 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -95,6 +95,8 @@ class MemberList : private QList<MemberDef>
void setAnchors();
private:
+ MemberList(const MemberList &) = delete;
+ MemberList &operator=(const MemberList &) = delete;
int compareValues(const MemberDef *item1,const MemberDef *item2) const;
int countEnumValues(const MemberDef *md) const;
/*
@@ -132,17 +134,17 @@ class MemberLinkedRefMap : public LinkedRefMap<const MemberDef>
{
};
-class MemberLists : public std::vector<MemberList>
+class MemberLists : public std::vector< std::unique_ptr<MemberList> >
{
public:
MemberLists() = default;
- MemberList &get(MemberListType lt)
+ const std::unique_ptr<MemberList> &get(MemberListType lt)
{
// find the list with the given type
- auto it = std::find_if(begin(),end(),[&lt](const auto &ml) { return ml.listType()==lt; });
+ auto it = std::find_if(begin(),end(),[&lt](const auto &ml) { return ml->listType()==lt; });
if (it!=end()) return *it;
// or create a new list if it is not found
- emplace_back(lt);
+ emplace_back(std::make_unique<MemberList>(lt));
return back();
}