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:
authorvng <viktor.govako@gmail.com>2012-05-22 20:44:37 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:39:05 +0300
commit71dfe1b9e3ac1a161c2bc830ec5847f407eaa863 (patch)
treee2004747331f26f9c2d3efc6ae5d492363410c6b /indexer/feature_loader_base.cpp
parentcc5e4ad665e51f77e5fd8655ce6e70767a6093e9 (diff)
Create feature::LoaderBase once and use it for all loading features - no "new-delete-shared_ptr" overhead for this.
Diffstat (limited to 'indexer/feature_loader_base.cpp')
-rw-r--r--indexer/feature_loader_base.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/indexer/feature_loader_base.cpp b/indexer/feature_loader_base.cpp
index d9b3804626..bc69121361 100644
--- a/indexer/feature_loader_base.cpp
+++ b/indexer/feature_loader_base.cpp
@@ -21,6 +21,12 @@ namespace feature
SharedLoadInfo::SharedLoadInfo(FilesContainerR const & cont, DataHeader const & header)
: m_cont(cont), m_header(header)
{
+ CreateLoader();
+}
+
+SharedLoadInfo::~SharedLoadInfo()
+{
+ delete m_pLoader;
}
SharedLoadInfo::ReaderT SharedLoadInfo::GetDataReader() const
@@ -38,22 +44,18 @@ SharedLoadInfo::ReaderT SharedLoadInfo::GetTrianglesReader(int ind) const
return m_cont.GetReader(GetTagForIndex(TRIANGLE_FILE_TAG, ind));
}
-LoaderBase * SharedLoadInfo::CreateLoader() const
+void SharedLoadInfo::CreateLoader()
{
- LoaderBase * p;
-
switch (m_header.GetVersion())
{
case DataHeader::v1:
- p = new old_101::feature::LoaderImpl(*this);
+ m_pLoader = new old_101::feature::LoaderImpl(*this);
break;
default:
- p = new LoaderCurrent(*this);
+ m_pLoader = new LoaderCurrent(*this);
break;
}
-
- return p;
}
@@ -66,11 +68,16 @@ LoaderBase::LoaderBase(SharedLoadInfo const & info)
{
}
-void LoaderBase::Deserialize(BufferT data)
+void LoaderBase::Init(BufferT data)
{
m_Data = data;
+ m_pF = 0;
+
m_CommonOffset = m_Header2Offset = 0;
m_ptsSimpMask = 0;
+
+ m_ptsOffsets.clear();
+ m_trgOffsets.clear();
}
uint32_t LoaderBase::CalcOffset(ArrayByteSource const & source) const