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>2011-01-18 22:16:56 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:10:32 +0300
commit6cc76d9993e64d0f6d50487b1ec730f2d58b43c5 (patch)
treeea797fdb9a5ecc2a222d280f8567711a1ef1df07 /indexer/feature_impl.hpp
parent541b5ec5d86f49f92a4a9d8ec119774ae71e0f55 (diff)
Make saved middle point in mwm for optimal storing of geometry's first points.
!Note! Changes (HEADER_FILE_TAG) in feature_sorter.cpp can reproduce ugly bug.
Diffstat (limited to 'indexer/feature_impl.hpp')
-rw-r--r--indexer/feature_impl.hpp44
1 files changed, 22 insertions, 22 deletions
diff --git a/indexer/feature_impl.hpp b/indexer/feature_impl.hpp
index 47219bab17..2f2feb1699 100644
--- a/indexer/feature_impl.hpp
+++ b/indexer/feature_impl.hpp
@@ -32,19 +32,19 @@ namespace feature
}
template <class TSink>
- void WriteCellsSimple(vector<int64_t> & cells, TSink & sink)
+ void WriteCellsSimple(vector<int64_t> const & cells, int64_t base, TSink & sink)
{
for (size_t i = 0; i < cells.size(); ++i)
- WriteVarInt(sink, i == 0 ? cells[0] : cells[i] - cells[i-1]);
+ WriteVarInt(sink, i == 0 ? cells[0] - base : cells[i] - cells[i-1]);
}
template <class TSink>
- void WriteCells(vector<int64_t> & cells, TSink & sink)
+ void WriteCells(vector<int64_t> const & cells, int64_t base, TSink & sink)
{
vector<char> buffer;
MemWriter<vector<char> > writer(buffer);
- WriteCellsSimple(cells, writer);
+ WriteCellsSimple(cells, base, writer);
uint32_t const count = static_cast<uint32_t>(buffer.size());
WriteVarUint(sink, count);
@@ -57,8 +57,8 @@ namespace feature
int64_t m_id;
public:
- points_emitter(TCont & points, uint32_t count)
- : m_points(points), m_id(0)
+ points_emitter(TCont & points, uint32_t count, int64_t base)
+ : m_points(points), m_id(base)
{
m_points.reserve(count);
}
@@ -69,64 +69,64 @@ namespace feature
};
template <class TCont>
- void const * ReadPointsSimple(void const * p, size_t count, TCont & points)
+ void const * ReadPointsSimple(void const * p, size_t count, int64_t base, TCont & points)
{
- return ReadVarInt64Array(p, count, points_emitter<TCont>(points, count));
+ return ReadVarInt64Array(p, count, points_emitter<TCont>(points, count, base));
}
template <class TCont, class TSource>
- void ReadPoints(TCont & points, TSource & src)
+ void ReadPoints(TCont & points, int64_t base, TSource & src)
{
uint32_t const count = ReadVarUint<uint32_t>(src);
vector<char> buffer(count);
char * p = &buffer[0];
src.Read(p, count);
- ReadVarInt64Array(p, p + count, points_emitter<TCont>(points, count / 2));
+ ReadVarInt64Array(p, p + count, points_emitter<TCont>(points, count / 2, base));
}
}
template <class TSink>
- void SavePointsSimple(vector<m2::PointD> const & points, TSink & sink)
+ void SavePointsSimple(vector<m2::PointD> const & points, int64_t base, TSink & sink)
{
ASSERT_GREATER ( points.size(), 1, () );
vector<int64_t> cells;
detail::TransformPoints(points, cells);
- detail::WriteCellsSimple(cells, sink);
+ detail::WriteCellsSimple(cells, base, sink);
}
template <class TSink>
- void SavePoints(vector<m2::PointD> const & points, TSink & sink)
+ void SavePoints(vector<m2::PointD> const & points, int64_t base, TSink & sink)
{
ASSERT_GREATER ( points.size(), 1, () );
vector<int64_t> cells;
detail::TransformPoints(points, cells);
- detail::WriteCells(cells, sink);
+ detail::WriteCells(cells, base, sink);
}
template <class TCont>
- void const * LoadPointsSimple(void const * p, size_t count, TCont & points)
+ void const * LoadPointsSimple(void const * p, size_t count, int64_t base, TCont & points)
{
ASSERT_GREATER ( count, 1, () );
- void const * ret = detail::ReadPointsSimple(p, count, points);
+ void const * ret = detail::ReadPointsSimple(p, count, base, points);
ASSERT_GREATER ( points.size(), 1, () );
return ret;
}
template <class TCont, class TSource>
- void LoadPoints(TCont & points, TSource & src)
+ void LoadPoints(TCont & points, int64_t base, TSource & src)
{
- detail::ReadPoints(points, src);
+ detail::ReadPoints(points, base, src);
ASSERT_GREATER ( points.size(), 1, () );
}
template <class TSink>
- void SaveTriangles(vector<m2::PointD> const & triangles, TSink & sink)
+ void SaveTriangles(vector<m2::PointD> const & triangles, int64_t base, TSink & sink)
{
uint32_t const count = triangles.size();
ASSERT_GREATER ( count, 0, () );
@@ -135,13 +135,13 @@ namespace feature
vector<int64_t> cells;
detail::TransformPoints(triangles, cells);
- detail::WriteCells(cells, sink);
+ detail::WriteCells(cells, base, sink);
}
template <class TCont, class TSource>
- void LoadTriangles(TCont & points, TSource & src)
+ void LoadTriangles(TCont & points, int64_t base, TSource & src)
{
- detail::ReadPoints(points, src);
+ detail::ReadPoints(points, base, src);
uint32_t const count = points.size();
ASSERT_GREATER ( count, 0, () );