diff options
-rw-r--r-- | map/anim_phase_chain.cpp | 7 | ||||
-rw-r--r-- | map/map_tests/bookmarks_test.cpp | 4 | ||||
-rw-r--r-- | map/user_mark_container.cpp | 33 | ||||
-rw-r--r-- | map/user_mark_container.hpp | 3 |
4 files changed, 20 insertions, 27 deletions
diff --git a/map/anim_phase_chain.cpp b/map/anim_phase_chain.cpp index ca7242c66a..8523151bc5 100644 --- a/map/anim_phase_chain.cpp +++ b/map/anim_phase_chain.cpp @@ -61,9 +61,8 @@ void InitDefaultPinAnim(AnimPhaseChain * chain) shared_ptr<anim::Task> CreateDefaultPinAnim(Framework & f, double & scale) { - AnimPhaseChain * anim = new AnimPhaseChain(f, scale); - InitDefaultPinAnim(anim); - - return shared_ptr<anim::Task>(anim); + shared_ptr<AnimPhaseChain> anim = make_shared<AnimPhaseChain>(f, scale); + InitDefaultPinAnim(anim.get()); + return anim; } diff --git a/map/map_tests/bookmarks_test.cpp b/map/map_tests/bookmarks_test.cpp index 6b0b75f8e0..4cf5fa6b53 100644 --- a/map/map_tests/bookmarks_test.cpp +++ b/map/map_tests/bookmarks_test.cpp @@ -12,7 +12,7 @@ #include "../../coding/internal/file_data.hpp" #include "../../std/fstream.hpp" - +#include "../../std/unique_ptr.hpp" namespace { @@ -567,7 +567,7 @@ UNIT_TEST(Bookmarks_InnerFolder) UNIT_TEST(BookmarkCategory_EmptyName) { Framework framework; - BookmarkCategory * pCat = new BookmarkCategory("", framework); + unique_ptr<BookmarkCategory> pCat(new BookmarkCategory("", framework)); pCat->AddBookmark(m2::PointD(0, 0), BookmarkData("", "placemark-red")); pCat->SaveToKMLFile(); diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 9a8c665c22..0351a943e5 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -16,7 +16,6 @@ #include "../base/macros.hpp" #include "../base/stl_add.hpp" -#include "../std/unique_ptr.hpp" #include "../std/algorithm.hpp" //////////////////////////////////////////////////////////////////////// @@ -138,7 +137,7 @@ void UserMarkContainer::ForEachInRect(m2::RectD const & rect, ToDo toDo) const { for (size_t i = 0; i < m_userMarks.size(); ++i) if (rect.IsPointInside(m_userMarks[i]->GetOrg())) - toDo(m_userMarks[i]); + toDo(m_userMarks[i].get()); } UserMark const * UserMarkContainer::FindMarkInRect(m2::AnyRectD const & rect, double & d) const @@ -166,9 +165,6 @@ void UserMarkContainer::Draw(PaintOverlayEvent const & e, UserMarkDLCache * cach void UserMarkContainer::Clear(size_t skipCount/* = 0*/) { - for (size_t i = skipCount; i < m_userMarks.size(); ++i) - delete m_userMarks[i]; - if (skipCount < m_userMarks.size()) m_userMarks.erase(m_userMarks.begin() + skipCount, m_userMarks.end()); } @@ -202,9 +198,8 @@ MyPositionMarkPoint * UserMarkContainer::UserMarkForMyPostion() UserMark * UserMarkContainer::CreateUserMark(m2::PointD const & ptOrg) { - unique_ptr<UserMark> mark(AllocateUserMark(ptOrg)); - m_userMarks.push_front(mark.get()); - return mark.release(); + m_userMarks.push_front(unique_ptr<UserMark>(AllocateUserMark(ptOrg))); + return m_userMarks.front().get(); } size_t UserMarkContainer::GetUserMarkCount() const @@ -215,40 +210,38 @@ size_t UserMarkContainer::GetUserMarkCount() const UserMark const * UserMarkContainer::GetUserMark(size_t index) const { ASSERT_LESS(index, m_userMarks.size(), ()); - return m_userMarks[index]; + return m_userMarks[index].get(); } UserMark * UserMarkContainer::GetUserMark(size_t index) { ASSERT_LESS(index, m_userMarks.size(), ()); - return m_userMarks[index]; + return m_userMarks[index].get(); } void UserMarkContainer::DeleteUserMark(size_t index) { ASSERT_LESS(index, m_userMarks.size(), ()); if (index < m_userMarks.size()) - { - delete m_userMarks[index]; m_userMarks.erase(m_userMarks.begin() + index); - } else - { LOG(LWARNING, ("Trying to delete non-existing item at index", index)); - } } void UserMarkContainer::DeleteUserMark(UserMark const * mark) { - UserMarksListT::iterator it = find(m_userMarks.begin(), m_userMarks.end(), mark); - if (it != m_userMarks.end()) - DeleteUserMark(distance(m_userMarks.begin(), it)); + size_t index = FindUserMark(mark); + if (index != m_userMarks.size()) + DeleteUserMark(index); } size_t UserMarkContainer::FindUserMark(UserMark const * mark) { - return distance(m_userMarks.begin(), - find(m_userMarks.begin(), m_userMarks.end(), mark)); + auto it = find_if(m_userMarks.begin(), m_userMarks.end(), [&mark](unique_ptr<UserMark> const & p) + { + return p.get() == mark; + }); + return distance(m_userMarks.begin(), it); } SearchUserMarkContainer::SearchUserMarkContainer(double layerDepth, Framework & framework) diff --git a/map/user_mark_container.hpp b/map/user_mark_container.hpp index b09a7b3b06..ce530764dd 100644 --- a/map/user_mark_container.hpp +++ b/map/user_mark_container.hpp @@ -9,6 +9,7 @@ #include "../std/deque.hpp" #include "../std/noncopyable.hpp" +#include "../std/unique_ptr.hpp" class Framework; @@ -26,7 +27,7 @@ namespace graphics class UserMarkContainer : private noncopyable { public: - using UserMarksListT = deque<UserMark *>; + using UserMarksListT = deque<unique_ptr<UserMark>>; class Controller { |