diff options
author | vng <viktor.govako@gmail.com> | 2011-01-15 14:32:16 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:09:59 +0300 |
commit | 833ded9fc5e0678cff9fdaaef99f56206ce38e1b (patch) | |
tree | 4f59ad2cc533c226a5c8f872088f0c0a485fe93c /indexer/feature_impl.hpp | |
parent | 57c8da0f9966235dd1652eac0499642685228a5e (diff) |
Add buffer_vector and use it in FeatureType for geometry storing.
Diffstat (limited to 'indexer/feature_impl.hpp')
-rw-r--r-- | indexer/feature_impl.hpp | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/indexer/feature_impl.hpp b/indexer/feature_impl.hpp index bcac9155a1..47219bab17 100644 --- a/indexer/feature_impl.hpp +++ b/indexer/feature_impl.hpp @@ -51,13 +51,13 @@ namespace feature sink.Write(&buffer[0], count); } - class points_emitter + template <class TCont> class points_emitter { - vector<m2::PointD> & m_points; + TCont & m_points; int64_t m_id; public: - points_emitter(vector<m2::PointD> & points, uint32_t count) + points_emitter(TCont & points, uint32_t count) : m_points(points), m_id(0) { m_points.reserve(count); @@ -68,21 +68,21 @@ namespace feature } }; - inline void const * ReadPointsSimple( void const * p, size_t count, - vector<m2::PointD> & points) + template <class TCont> + void const * ReadPointsSimple(void const * p, size_t count, TCont & points) { - return ReadVarInt64Array(p, count, points_emitter(points, count)); + return ReadVarInt64Array(p, count, points_emitter<TCont>(points, count)); } - template <class TSource> - void ReadPoints(vector<m2::PointD> & points, TSource & src) + template <class TCont, class TSource> + void ReadPoints(TCont & points, 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(points, count / 2)); + ReadVarInt64Array(p, p + count, points_emitter<TCont>(points, count / 2)); } } @@ -108,8 +108,8 @@ namespace feature detail::WriteCells(cells, sink); } - inline void const * LoadPointsSimple( void const * p, size_t count, - vector<m2::PointD> & points) + template <class TCont> + void const * LoadPointsSimple(void const * p, size_t count, TCont & points) { ASSERT_GREATER ( count, 1, () ); void const * ret = detail::ReadPointsSimple(p, count, points); @@ -117,8 +117,8 @@ namespace feature return ret; } - template <class TSource> - void LoadPoints(vector<m2::PointD> & points, TSource & src) + template <class TCont, class TSource> + void LoadPoints(TCont & points, TSource & src) { detail::ReadPoints(points, src); @@ -138,8 +138,8 @@ namespace feature detail::WriteCells(cells, sink); } - template <class TSource> - void LoadTriangles(vector<m2::PointD> & points, TSource & src) + template <class TCont, class TSource> + void LoadTriangles(TCont & points, TSource & src) { detail::ReadPoints(points, src); |