forked from organicmaps/organicmaps
[omim] Remove DataHeader from storage.
This commit is contained in:
parent
e4dd4a5ea2
commit
bed6293927
4 changed files with 0 additions and 187 deletions
|
@ -1,47 +0,0 @@
|
|||
#include "storage/data_header.hpp"
|
||||
|
||||
#include "base/string_utils.hpp"
|
||||
|
||||
#include "platform/platform.hpp"
|
||||
|
||||
#include "coding/file_writer.hpp"
|
||||
|
||||
#include "indexer/cell_id.hpp"
|
||||
|
||||
#include "base/start_mem_debug.hpp"
|
||||
|
||||
namespace feature
|
||||
{
|
||||
|
||||
DataHeader::DataHeader()
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
struct do_reset
|
||||
{
|
||||
void operator() (string & t, int) { t.clear(); }
|
||||
void operator() (uint64_t & t, int) { t = 0; }
|
||||
void operator() (pair<int64_t, int64_t> &, int) {}
|
||||
};
|
||||
}
|
||||
|
||||
void DataHeader::Reset()
|
||||
{
|
||||
do_reset doReset;
|
||||
for_each_tuple(m_params, doReset);
|
||||
}
|
||||
|
||||
m2::RectD const DataHeader::Bounds() const
|
||||
{
|
||||
return Int64ToRect(Get<EBoundary>());
|
||||
}
|
||||
|
||||
void DataHeader::SetBounds(m2::RectD const & r)
|
||||
{
|
||||
Set<EBoundary>(RectToInt64(r));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "base/std_serialization.hpp"
|
||||
|
||||
#include "storage/defines.hpp"
|
||||
|
||||
#include "coding/streams_sink.hpp"
|
||||
|
||||
#include "geometry/rect2d.hpp"
|
||||
|
||||
#include "std/string.hpp"
|
||||
#include "std/tuple.hpp"
|
||||
|
||||
#include "base/start_mem_debug.hpp"
|
||||
|
||||
namespace feature
|
||||
{
|
||||
/// All file sizes are in bytes
|
||||
class DataHeader
|
||||
{
|
||||
private:
|
||||
typedef tuple<
|
||||
pair<int64_t, int64_t> // boundary;
|
||||
> params_t;
|
||||
params_t m_params;
|
||||
|
||||
enum param_t { EBoundary };
|
||||
|
||||
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; }
|
||||
|
||||
public:
|
||||
DataHeader();
|
||||
|
||||
/// Zeroes all fields
|
||||
void Reset();
|
||||
|
||||
m2::RectD const Bounds() const;
|
||||
void SetBounds(m2::RectD const & r);
|
||||
|
||||
/// @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;
|
||||
}
|
||||
//@}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#include "base/stop_mem_debug.hpp"
|
|
@ -1,54 +0,0 @@
|
|||
#include "storage/data_header_reader.hpp"
|
||||
#include "storage/data_header.hpp"
|
||||
|
||||
#include "coding/file_reader.hpp"
|
||||
#include "coding/file_writer.hpp"
|
||||
|
||||
#include "base/start_mem_debug.hpp"
|
||||
|
||||
namespace feature
|
||||
{
|
||||
uint64_t GetSkipHeaderSize(Reader const & reader)
|
||||
{
|
||||
uint64_t const headerSize = ReadPrimitiveFromPos<uint64_t>(reader, 0);
|
||||
return headerSize + sizeof(uint64_t);
|
||||
}
|
||||
|
||||
uint64_t ReadDataHeader(string const & datFileName, feature::DataHeader & outHeader)
|
||||
{
|
||||
try
|
||||
{
|
||||
FileReader reader(datFileName);
|
||||
|
||||
uint64_t const toSkip = GetSkipHeaderSize(reader);
|
||||
|
||||
ReaderSource<FileReader> src(reader);
|
||||
src.Skip(sizeof(uint64_t));
|
||||
|
||||
outHeader.Load(src);
|
||||
|
||||
return toSkip;
|
||||
}
|
||||
catch (Reader::Exception const & e)
|
||||
{
|
||||
ASSERT(false, ("Error reading header from dat file", e.what()));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void WriteDataHeader(Writer & writer, feature::DataHeader const & header)
|
||||
{
|
||||
typedef vector<unsigned char> TBuffer;
|
||||
TBuffer buffer;
|
||||
MemWriter<TBuffer> w(buffer);
|
||||
|
||||
header.Save(w);
|
||||
|
||||
uint64_t const sz = buffer.size();
|
||||
WriteToSink(writer, sz);
|
||||
|
||||
if (sz > 0)
|
||||
writer.Write(&buffer[0], buffer.size());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
#pragma once
|
||||
#include "base/base.hpp"
|
||||
|
||||
#include "std/string.hpp"
|
||||
|
||||
class Writer;
|
||||
class Reader;
|
||||
|
||||
namespace feature
|
||||
{
|
||||
class DataHeader;
|
||||
|
||||
/// @return total header size, which should be skipped for data read, or 0 if error
|
||||
uint64_t GetSkipHeaderSize(Reader const & reader);
|
||||
uint64_t ReadDataHeader(string const & datFileName, feature::DataHeader & outHeader);
|
||||
void WriteDataHeader(Writer & writer, feature::DataHeader const & header);
|
||||
}
|
Loading…
Add table
Reference in a new issue