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:
authorArsentiy Milchakov <milcars@mapswithme.com>2017-03-23 14:50:19 +0300
committerArsentiy Milchakov <milcars@mapswithme.com>2017-03-23 14:50:19 +0300
commit4b1318238b1b7544d1156e9525b85f654ba2dc2d (patch)
tree659373b72d9af6233c5772d9c02a41a4450ce1bb /coding/writer.hpp
parent431299e98329b863b2518ed863c918bc0501256d (diff)
review fixes
Diffstat (limited to 'coding/writer.hpp')
-rw-r--r--coding/writer.hpp36
1 files changed, 17 insertions, 19 deletions
diff --git a/coding/writer.hpp b/coding/writer.hpp
index c7177499cd..59f56a623e 100644
--- a/coding/writer.hpp
+++ b/coding/writer.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "base/assert.hpp"
#include "base/base.hpp"
+#include "base/checked_cast.hpp"
#include "base/exception.hpp"
#include "std/algorithm.hpp"
#include "std/shared_ptr.hpp"
@@ -9,7 +10,6 @@
#include "std/vector.hpp"
// Generic Writer. Not thread-safe.
-// When SubWriter is used, pos can negative, so int64_t is used to store pos.
class Writer
{
public:
@@ -30,24 +30,22 @@ template <typename ContainerT>
class MemWriter : public Writer
{
public:
- inline MemWriter(ContainerT & data) : m_Data(data), m_Pos(0)
+ inline explicit MemWriter(ContainerT & data) : m_Data(data), m_Pos(0)
{
static_assert(sizeof(typename ContainerT::value_type) == 1, "");
}
- inline void Seek(uint64_t pos)
+ inline void Seek(uint64_t pos) override
{
- ASSERT_EQUAL(pos, static_cast<uintptr_t>(pos), ());
- ASSERT_GREATER_OR_EQUAL(pos, 0, ());
- m_Pos = static_cast<uintptr_t>(pos);
+ m_Pos = base::asserted_cast<uintptr_t>(pos);
}
- inline uint64_t Pos() const
+ inline uint64_t Pos() const override
{
return m_Pos;
}
- inline void Write(void const * p, size_t size)
+ inline void Write(void const * p, size_t size) override
{
intptr_t freeSize = m_Data.size() - m_Pos;
if (freeSize < 0)
@@ -75,7 +73,7 @@ private:
// Original writer should not be used when SubWriter is active!
// In destructor, SubWriter calls Seek() of original writer to the end of what has been written.
template <typename WriterT>
-class SubWriter
+class SubWriter : public Writer
{
public:
inline explicit SubWriter(WriterT & writer)
@@ -86,14 +84,14 @@ public:
{
}
- ~SubWriter()
+ ~SubWriter() override
{
ASSERT_EQUAL(m_offset, GetOffset(), ());
if (m_pos != m_maxPos)
Seek(m_maxPos);
}
- inline void Seek(uint64_t pos)
+ inline void Seek(uint64_t pos) override
{
ASSERT_EQUAL(m_offset, GetOffset(), ());
m_writer.Seek(GetOffset() + pos);
@@ -102,13 +100,13 @@ public:
m_maxPos = max(m_maxPos, m_pos);
}
- inline uint64_t Pos() const
+ inline uint64_t Pos() const override
{
ASSERT_EQUAL(m_offset, GetOffset(), ());
return m_pos;
}
- inline void Write(void const * p, size_t size)
+ inline void Write(void const * p, size_t size) override
{
ASSERT_EQUAL(m_offset, GetOffset(), ());
m_writer.Write(p, size);
@@ -132,22 +130,22 @@ private:
};
template<typename WriterT>
-class WriterPtr
+class WriterPtr : public Writer
{
public:
- WriterPtr(WriterT * p = 0) : m_p(p) {}
+ explicit WriterPtr(WriterT * p = 0) : m_p(p) {}
- void Seek(uint64_t pos)
+ void Seek(uint64_t pos) override
{
m_p->Seek(pos);
}
- uint64_t Pos() const
+ uint64_t Pos() const override
{
return m_p->Pos();
}
- void Write(void const * p, size_t size)
+ void Write(void const * p, size_t size) override
{
m_p->Write(p, size);
}
@@ -162,7 +160,7 @@ template <typename WriterT>
class WriterSink
{
public:
- inline WriterSink(WriterT & writer) : m_writer(writer), m_pos(0) {}
+ inline explicit WriterSink(WriterT & writer) : m_writer(writer), m_pos(0) {}
inline void Write(void const * p, size_t size)
{