diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2021-01-04 16:08:58 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2021-01-04 16:08:58 (GMT) |
commit | 5d980fa30b6524d3d53867e6fd8d6edb67a37eeb (patch) | |
tree | cf6e29619f2d74f6a344b8b4da45d2a504687265 /src/memberlist.h | |
parent | 19713dcc51ceb3930770cb25ec85590b86316cf7 (diff) | |
download | Doxygen-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.h | 10 |
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(),[<](const auto &ml) { return ml.listType()==lt; }); + auto it = std::find_if(begin(),end(),[<](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(); } |