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-08-23 18:49:31 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:22:20 +0300
commitb9df96e89b57666178aada45c4c25eece8f8d756 (patch)
tree3c92c630bbe427e6bda7f91b2567ff4534810c6b /indexer/coding_params.hpp
parent2046a47d565e7f3c9a1a18eaec7d969f9bf20789 (diff)
Factor out 'CodingParams' to separate module.
Diffstat (limited to 'indexer/coding_params.hpp')
-rw-r--r--indexer/coding_params.hpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/indexer/coding_params.hpp b/indexer/coding_params.hpp
new file mode 100644
index 0000000000..6f0264cf03
--- /dev/null
+++ b/indexer/coding_params.hpp
@@ -0,0 +1,46 @@
+#pragma once
+#include "../geometry/point2d.hpp"
+
+#include "../coding/varint.hpp"
+
+
+namespace serial
+{
+ class CodingParams
+ {
+ public:
+ // TODO: Factor out?
+ CodingParams();
+ 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 static_cast<int64_t>(m_BasePointUint64); }
+
+ uint32_t 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);
+ }
+
+ private:
+ uint64_t m_BasePointUint64;
+ // TODO: Factor out.
+ m2::PointU m_BasePoint;
+ uint8_t m_CoordBits;
+ };
+}