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:
Diffstat (limited to 'search/query_saver.cpp')
-rw-r--r--search/query_saver.cpp40
1 files changed, 19 insertions, 21 deletions
diff --git a/search/query_saver.cpp b/search/query_saver.cpp
index 2cf765d87e..c5a4acce7c 100644
--- a/search/query_saver.cpp
+++ b/search/query_saver.cpp
@@ -10,6 +10,8 @@ namespace
{
size_t constexpr kMaxSuggestCount = 10;
char constexpr kSettingsKey[] = "UserQueries";
+using TLength = uint16_t;
+size_t constexpr kLengthTypeSize = sizeof(TLength);
} // namespace
namespace search
@@ -19,7 +21,7 @@ QuerySaver::QuerySaver()
Load();
}
-void QuerySaver::SaveNewQuery(string const & query)
+void QuerySaver::Add(string const & query)
{
if (query.empty())
return;
@@ -42,46 +44,43 @@ void QuerySaver::Clear()
Settings::Delete(kSettingsKey);
}
-void QuerySaver::Serialize(vector<char> & data) const
+void QuerySaver::Serialize(vector<uint8_t> & data) const
{
data.clear();
- MemWriter<vector<char>> writer(data);
- uint16_t size = m_topQueries.size();
- writer.Write(&size, 2);
+ MemWriter<vector<uint8_t>> writer(data);
+ TLength size = m_topQueries.size();
+ writer.Write(&size, kLengthTypeSize);
for (auto const & query : m_topQueries)
{
size = query.size();
- writer.Write(&size, 2);
+ writer.Write(&size, kLengthTypeSize);
writer.Write(query.c_str(), size);
}
}
void QuerySaver::Deserialize(string const & data)
{
- MemReader reader(data.c_str(), data.size());
+ MemReader rawReader(data.c_str(), data.size());
+ ReaderSource<MemReader> reader(rawReader);
- uint16_t queriesCount;
- reader.Read(0 /* pos */, &queriesCount, 2);
+ TLength queriesCount;
+ reader.Read(&queriesCount, kLengthTypeSize);
- size_t pos = 2;
- for (int i = 0; i < queriesCount; ++i)
+ for (TLength i = 0; i < queriesCount; ++i)
{
- uint16_t stringLength;
- reader.Read(pos, &stringLength, 2);
- pos += 2;
+ TLength stringLength;
+ reader.Read(&stringLength, kLengthTypeSize);
vector<char> str(stringLength);
- reader.Read(pos, &str[0], stringLength);
- pos += stringLength;
+ reader.Read(&str[0], stringLength);
m_topQueries.emplace_back(&str[0], stringLength);
}
}
void QuerySaver::Save()
{
- vector<char> data;
+ vector<uint8_t> data;
Serialize(data);
- string hexData = ToHex(&data[0], data.size());
- Settings::Set(kSettingsKey, hexData);
+ Settings::Set(kSettingsKey, ToHex(&data[0], data.size()));
}
void QuerySaver::Load()
@@ -90,7 +89,6 @@ void QuerySaver::Load()
Settings::Get(kSettingsKey, hexData);
if (hexData.empty())
return;
- string rawData = FromHex(hexData);
- Deserialize(rawData);
+ Deserialize(FromHex(hexData));
}
} // namesapce search