diff options
author | Yuri Gorshenin <y@maps.me> | 2015-10-09 20:52:52 +0300 |
---|---|---|
committer | Sergey Yershov <yershov@corp.mail.ru> | 2016-03-23 16:02:23 +0300 |
commit | f47f4aded0755f169cc7b768804b40ef39eb8c34 (patch) | |
tree | 3df20a7258e1ae76d0f85afaf61d2907c7dcbebc /indexer/rank_table.cpp | |
parent | c854f3ea8269ffcd08b4106ab9a0254917540830 (diff) |
[search] Added test for opposite endianness.
Diffstat (limited to 'indexer/rank_table.cpp')
-rw-r--r-- | indexer/rank_table.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/indexer/rank_table.cpp b/indexer/rank_table.cpp index fa71ca1c2b..4bba203978 100644 --- a/indexer/rank_table.cpp +++ b/indexer/rank_table.cpp @@ -128,16 +128,19 @@ public: uint8_t Get(uint64_t i) const override { return m_coding.Get(i); } uint64_t Size() const override { return m_coding.Size(); } RankTable::Version GetVersion() const override { return V0; } - void Serialize(Writer & writer) override + void Serialize(Writer & writer, bool preserveHostEndianness) override { static uint64_t const padding = 0; uint8_t const version = GetVersion(); - uint8_t const flags = IsBigEndian(); + uint8_t const flags = preserveHostEndianness ? IsBigEndian() : !IsBigEndian(); writer.Write(&version, sizeof(version)); writer.Write(&flags, sizeof(flags)); writer.Write(&padding, 6); - Freeze(m_coding, writer, "SimpleDenseCoding"); + if (preserveHostEndianness) + Freeze(m_coding, writer, "SimpleDenseCoding"); + else + ReverseFreeze(m_coding, writer, "SimpleDenseCoding"); } // Loads RankTableV0 from a raw memory region. @@ -199,7 +202,7 @@ void SerializeRankTable(RankTable & table, FilesContainerW & wcont) vector<char> buffer; { MemWriter<decltype(buffer)> writer(buffer); - table.Serialize(writer); + table.Serialize(writer, true /* hostEndianness */); } wcont.Write(buffer, RANKS_FILE_TAG); |