From 6cbb49c857f3f1d8d940979fc73d5de8facb4f88 Mon Sep 17 00:00:00 2001 From: Maxim Pimenov Date: Thu, 17 Sep 2015 13:12:14 +0300 Subject: [PATCH] Review fixes. --- coding/compressed_bit_vector.cpp | 6 +++++- coding/reader.hpp | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/coding/compressed_bit_vector.cpp b/coding/compressed_bit_vector.cpp index ab32d1af0c..876b0135f4 100644 --- a/coding/compressed_bit_vector.cpp +++ b/coding/compressed_bit_vector.cpp @@ -100,7 +100,7 @@ DenseCBV::DenseCBV(vector const & setBits) uint64_t maxBit = setBits[0]; for (size_t i = 1; i < setBits.size(); ++i) maxBit = max(maxBit, setBits[i]); - size_t sz = 1 + maxBit / kBlockSize; + size_t const sz = 1 + maxBit / kBlockSize; m_bitGroups.resize(sz); m_popCount = static_cast(setBits.size()); for (uint64_t pos : setBits) @@ -220,9 +220,13 @@ unique_ptr CompressedBitVectorBuilder::FromBitGroups( vector setBits; for (size_t i = 0; i < bitGroups.size(); ++i) + { for (size_t j = 0; j < kBlockSize; ++j) + { if (((bitGroups[i] >> j) & 1) > 0) setBits.push_back(kBlockSize * i + j); + } + } return make_unique(setBits); } diff --git a/coding/reader.hpp b/coding/reader.hpp index e4f7980439..7b61ebd20d 100644 --- a/coding/reader.hpp +++ b/coding/reader.hpp @@ -229,15 +229,20 @@ inline void ReadFromPos(TReader const & reader, uint64_t pos, void * p, size_t s template inline TPrimitive ReadPrimitiveFromPos(TReader const & reader, uint64_t pos) { +#ifndef OMIM_OS_LINUX + static_assert(is_trivially_copyable::value, ""); +#endif TPrimitive primitive; ReadFromPos(reader, pos, &primitive, sizeof(primitive)); return SwapIfBigEndian(primitive); } template -inline typename enable_if::value, TPrimitive>::type -ReadPrimitiveFromSource(TSource & source) +TPrimitive ReadPrimitiveFromSource(TSource & source) { +#ifndef OMIM_OS_LINUX + static_assert(is_trivially_copyable::value, ""); +#endif TPrimitive primitive; source.Read(&primitive, sizeof(primitive)); return SwapIfBigEndian(primitive);