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-03-14 11:10:19 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:13:34 +0300
commit221d3d99da351bddd4c82f9fc553737eb458025f (patch)
treec45c9981941fec357f910fd7dae65d0ec484f1fd /indexer/data_header.hpp
parent25ea1267b48898b89681b93a5f371232fc79b711 (diff)
Refactoring of feature::DataHeader.
Added base point and scales array to header. World and country generation now have different scale ranges.
Diffstat (limited to 'indexer/data_header.hpp')
-rw-r--r--indexer/data_header.hpp60
1 files changed, 19 insertions, 41 deletions
diff --git a/indexer/data_header.hpp b/indexer/data_header.hpp
index 3d719deca2..979b258c39 100644
--- a/indexer/data_header.hpp
+++ b/indexer/data_header.hpp
@@ -1,70 +1,48 @@
#pragma once
-#include "../base/std_serialization.hpp"
-
-#include "../coding/streams_sink.hpp"
-
#include "../geometry/rect2d.hpp"
-#include "../std/string.hpp"
-#include "../std/tuple.hpp"
+#include "../std/array.hpp"
#include "../base/start_mem_debug.hpp"
+
+class FileReader;
+class FileWriter;
+
namespace feature
{
/// All file sizes are in bytes
class DataHeader
{
- /// @TODO move version somewhere else
- static int32_t const MAPS_MAJOR_VERSION_BINARY_FORMAT = 1;
-
- private:
- typedef tuple<
- pair<int64_t, int64_t> // boundary;
- > params_t;
- params_t m_params;
+ int64_t m_base;
- enum param_t { EBoundary };
+ pair<int64_t, int64_t> m_bounds;
- template <int N>
- typename tuple_element<N, params_t>::type const & Get() const { return m_params.get<N>(); }
- template <int N, class T>
- void Set(T const & t) { m_params.get<N>() = t; }
+ array<uint8_t, 4> m_scales;
public:
DataHeader();
- /// Zeroes all fields
+ /// Zero all fields
void Reset();
- m2::RectD const Bounds() const;
+ void SetBase(m2::PointD const & p);
+ int64_t GetBase() const { return m_base; }
+
+ m2::RectD const GetBounds() const;
void SetBounds(m2::RectD const & r);
+ void SetScales(int * arr);
+ size_t GetScalesCount() const { return m_scales.size(); }
+ int GetScale(int i) const { return m_scales[i]; }
+
/// @name Serialization
//@{
- template <class TWriter> void Save(TWriter & writer) const
- {
- stream::SinkWriterStream<TWriter> w(writer);
- w << MAPS_MAJOR_VERSION_BINARY_FORMAT;
- serial::save_tuple(w, m_params);
- }
- /// @return false if header can't be read (invalid or newer version format)
- template <class TReader> bool Load(TReader & reader)
- {
- stream::SinkReaderStream<TReader> r(reader);
-
- uint32_t ver;
- r >> ver;
- if (ver > MAPS_MAJOR_VERSION_BINARY_FORMAT)
- return false;
- Reset();
- serial::load_tuple(r, m_params);
- return true;
- }
+ void Save(FileWriter & w) const;
+ void Load(FileReader const & r);
//@}
};
-
}
#include "../base/stop_mem_debug.hpp"