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
path: root/coding
diff options
context:
space:
mode:
authorMaxim Pimenov <m@maps.me>2015-10-21 14:47:25 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:02:28 +0300
commit4e33a1f23cbfa9b5822feb7aded52d73fa808dcc (patch)
tree68e8421a26005cd3c13224adfc1c650afdb9d515 /coding
parent2ef3f59f92b5fbace5c600cd968b8d0e795529e0 (diff)
Some review fixes.
Diffstat (limited to 'coding')
-rw-r--r--coding/coding_tests/trie_test.cpp6
-rw-r--r--coding/compressed_bit_vector.cpp1
-rw-r--r--coding/trie.hpp2
-rw-r--r--coding/trie_builder.hpp10
-rw-r--r--coding/trie_reader.hpp5
5 files changed, 14 insertions, 10 deletions
diff --git a/coding/coding_tests/trie_test.cpp b/coding/coding_tests/trie_test.cpp
index 9460f33d30..ec86f3c637 100644
--- a/coding/coding_tests/trie_test.cpp
+++ b/coding/coding_tests/trie_test.cpp
@@ -167,11 +167,9 @@ public:
template <typename TSource>
void Deserialize(TSource & src)
{
+ m_values.clear();
while (src.Size() > 0)
- {
- m_values.push_back(TValue());
- m_values.back() = ReadPrimitiveFromSource<TValue>(src);
- }
+ m_values.emplace_back(ReadPrimitiveFromSource<TValue>(src));
}
template <typename TF>
diff --git a/coding/compressed_bit_vector.cpp b/coding/compressed_bit_vector.cpp
index d6ef51dd03..da80b04d42 100644
--- a/coding/compressed_bit_vector.cpp
+++ b/coding/compressed_bit_vector.cpp
@@ -185,6 +185,7 @@ DenseCBV::DenseCBV(vector<uint64_t> const & setBits)
{
if (setBits.empty())
{
+ m_popCount = 0;
return;
}
uint64_t const maxBit = *max_element(setBits.begin(), setBits.end());
diff --git a/coding/trie.hpp b/coding/trie.hpp
index d9433e7f3d..d8de8d1e68 100644
--- a/coding/trie.hpp
+++ b/coding/trie.hpp
@@ -4,8 +4,6 @@
#include "base/base.hpp"
#include "base/buffer_vector.hpp"
-#include "indexer/string_file_values.hpp"
-
#include "std/unique_ptr.hpp"
namespace trie
diff --git a/coding/trie_builder.hpp b/coding/trie_builder.hpp
index b9f22d3a14..7231548bbe 100644
--- a/coding/trie_builder.hpp
+++ b/coding/trie_builder.hpp
@@ -44,14 +44,15 @@ template <typename TSink, typename TChildIter, typename TValueList>
void WriteNode(TSink & sink, TrieChar baseChar, TValueList const & valueList,
TChildIter const begChild, TChildIter const endChild, bool isRoot = false)
{
+ uint32_t const valueCount = valueList.Size();
if (begChild == endChild && !isRoot)
{
// Leaf node.
+ WriteVarUint(sink, valueCount);
valueList.Serialize(sink);
return;
}
uint32_t const childCount = endChild - begChild;
- uint32_t const valueCount = valueList.Size();
uint8_t const header = static_cast<uint32_t>((min(valueCount, 3U) << 6) + min(childCount, 63U));
sink.Write(&header, 1);
if (valueCount >= 3)
@@ -140,8 +141,11 @@ struct NodeInfo
TValueList m_valueList;
bool m_mayAppend;
- NodeInfo() : m_begPos(0), m_char(0) {}
- NodeInfo(uint64_t pos, TrieChar trieChar) : m_begPos(pos), m_char(trieChar), m_mayAppend(true) {}
+ NodeInfo() : m_begPos(0), m_char(0), m_valueList(TValueList()), m_mayAppend(true) {}
+ NodeInfo(uint64_t pos, TrieChar trieChar)
+ : m_begPos(pos), m_char(trieChar), m_valueList(TValueList()), m_mayAppend(true)
+ {
+ }
// It is finalized in the sense that no more appends are possible
// so it is a fine moment to initialize the underlying ValueList.
diff --git a/coding/trie_reader.hpp b/coding/trie_reader.hpp
index 6d20ffd265..878323f841 100644
--- a/coding/trie_reader.hpp
+++ b/coding/trie_reader.hpp
@@ -22,8 +22,9 @@ public:
LeafIterator0(TReader const & reader, serial::CodingParams const & codingParams)
{
ReaderSource<TReader> src(reader);
+ uint32_t valueCount = ReadVarUint<uint32_t>(src);
m_valueList.SetCodingParams(codingParams);
- m_valueList.Deserialize(src);
+ m_valueList.Deserialize(src, valueCount);
// todo(@mpimenov) There used to be an assert here
// that src is completely exhausted by this time.
}
@@ -69,8 +70,10 @@ public:
uint32_t const size = m_edgeInfo[i+1].m_offset - offset;
if (m_edgeInfo[i].m_isLeaf)
+ {
return make_unique<LeafIterator0<TValueList>>(m_reader.SubReader(offset, size),
m_codingParams);
+ }
return make_unique<Iterator0<TReader, TValueList>>(
m_reader.SubReader(offset, size), this->m_edge[i].m_str.back(), m_codingParams);