Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--map/anim_phase_chain.cpp7
-rw-r--r--map/map_tests/bookmarks_test.cpp4
-rw-r--r--map/user_mark_container.cpp33
-rw-r--r--map/user_mark_container.hpp3
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
{