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>2012-07-29 16:34:36 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:43:49 +0300
commit8a6c4f394ee131eb9274e918f512165f87596567 (patch)
tree25ddefb3470b67435ff7762eb5e101e9d6b1a361 /coding/dd_vector.hpp
parent6dd8a1af0b659411bd644dea76231910867f3bc4 (diff)
Minor refactoring.
Diffstat (limited to 'coding/dd_vector.hpp')
-rw-r--r--coding/dd_vector.hpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/coding/dd_vector.hpp b/coding/dd_vector.hpp
index ea578a8f04..3661c18f64 100644
--- a/coding/dd_vector.hpp
+++ b/coding/dd_vector.hpp
@@ -25,8 +25,15 @@ public:
DDVector() : m_Size(0) {}
- DDVector(TReader const & reader, size_type size) : m_reader(reader), m_Size(size)
+ explicit DDVector(TReader const & reader) : m_reader(reader)
{
+ InitSize();
+ }
+
+ void Init(TReader const & reader)
+ {
+ m_reader = reader;
+ InitSize();
}
size_type size() const
@@ -36,10 +43,7 @@ public:
T const operator [] (size_type i) const
{
- ASSERT_LESS(i, m_Size, ());
- T result;
- this->Read(i, result);
- return result;
+ return ReadPrimitiveFromPos<T>(m_reader, static_cast<uint64_t>(i) * sizeof(T));
}
class const_iterator : public iterator_facade<
@@ -69,7 +73,7 @@ public:
ASSERT_LESS(m_I, m_Size, (m_bValueRead));
if (!m_bValueRead)
{
- ReadFromPos(*m_pReader, m_I * sizeof(T), &m_Value, sizeof(T));
+ m_Value = ReadPrimitiveFromPos<T>(*m_pReader, static_cast<uint64_t>(m_I) * sizeof(T));
m_bValueRead = true;
}
return m_Value;
@@ -157,6 +161,13 @@ public:
}
private:
+ void InitSize()
+ {
+ // TODO: Check that reader.Size() % sizeof(T) == 0
+ m_Size = m_reader.Size() / sizeof(T);
+ }
+
+ // TODO: Refactor me to use Reader by pointer.
ReaderType m_reader;
size_type m_Size;
};