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:
authorYury Melnichek <melnichek@gmail.com>2011-04-24 05:16:18 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:16:20 +0300
commit60e2dcfbae9e9a766dfc24c05fa59b846822d8d2 (patch)
tree6c3c590729949b0235b7ee5717abbf9dd144518e /indexer/geometry_serialization.hpp
parent7e4bb0e4fd0800a9edb38d3b4c2e7d6c1abbd12d (diff)
Pass CodingParams everywhere.
Diffstat (limited to 'indexer/geometry_serialization.hpp')
-rw-r--r--indexer/geometry_serialization.hpp30
1 files changed, 23 insertions, 7 deletions
diff --git a/indexer/geometry_serialization.hpp b/indexer/geometry_serialization.hpp
index 12f5f7156f..d967b4a343 100644
--- a/indexer/geometry_serialization.hpp
+++ b/indexer/geometry_serialization.hpp
@@ -15,6 +15,8 @@
#include "../base/buffer_vector.hpp"
#include "../base/stl_add.hpp"
+class FileReader;
+class FileWriter;
namespace serial
{
@@ -24,18 +26,34 @@ namespace serial
public:
// TODO: Factor out?
CodingParams();
- CodingParams(int64_t basePointInt64, uint8_t coordBits = 30);
+ CodingParams(uint8_t coordBits, m2::PointD const & pt);
+ CodingParams(uint8_t coordBits, uint64_t basePointUint64);
m2::PointU GetBasePointPrediction(uint64_t offset) const;
// TODO: Factor out.
m2::PointU GetBasePoint() const { return m_BasePoint; }
// TODO: Factor out.
- int64_t GetBasePointInt64() const { return m_BasePointInt64; }
+ int64_t GetBasePointInt64() const { return static_cast<int64_t>(m_BasePointUint64); }
+
+ uint32_t const GetCoordBits() const { return m_CoordBits; }
+
+ template <typename WriterT> void Save(WriterT & writer) const
+ {
+ WriteVarUint(writer, GetCoordBits());
+ WriteVarUint(writer, static_cast<uint64_t>(GetBasePointInt64()));
+ }
+
+ template <typename SourceT> void Load(SourceT & src)
+ {
+ uint32_t const coordBits = ReadVarUint<uint32_t>(src);
+ ASSERT_LESS(coordBits, 32, ());
+ uint64_t const basePointUint64 = ReadVarUint<uint64_t>(src);
+ *this = CodingParams(coordBits, basePointUint64);
+ }
- uint8_t const GetCoordBits() const { return m_CoordBits; }
private:
- int64_t m_BasePointInt64;
+ uint64_t m_BasePointUint64;
// TODO: Factor out.
m2::PointU m_BasePoint;
uint8_t m_CoordBits;
@@ -48,8 +66,6 @@ namespace serial
WriteVarUint(sink, v[i]);
}
- namespace pts { m2::PointU D2U(m2::PointD const & p); }
-
/// @name Encode and Decode function types.
//@{
typedef void (*EncodeFunT)( geo_coding::InPointsT const &,
@@ -177,7 +193,7 @@ namespace serial
list<BufferT> m_buffers;
public:
- TrianglesChainSaver(CodingParams const & params);
+ explicit TrianglesChainSaver(CodingParams const & params);
PointT GetBasePoint() const { return m_base; }
PointT GetMaxPoint() const { return m_max; }