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:
authorAnatoly Serdtcev <serdtcev@maps.me>2019-01-15 12:33:09 +0300
committerAnatoly Serdtcev <serdtcev@maps.me>2019-01-31 14:15:44 +0300
commitb4cb0204dede2abeea2cd0f2ae11167d0342650b (patch)
tree264cfd7e974a475a2a7fc3ef89e45b0c2487a2ee /geocoder
parent5dad0dcba80af88d08984c217d18f96593d80b13 (diff)
[geocoder] Fix for review
Diffstat (limited to 'geocoder')
-rw-r--r--geocoder/hierarchy_reader.cpp23
-rw-r--r--geocoder/hierarchy_reader.hpp6
2 files changed, 17 insertions, 12 deletions
diff --git a/geocoder/hierarchy_reader.cpp b/geocoder/hierarchy_reader.cpp
index bac7f4f962..3906d212f2 100644
--- a/geocoder/hierarchy_reader.cpp
+++ b/geocoder/hierarchy_reader.cpp
@@ -6,8 +6,8 @@
using namespace std;
-namespace geocoder {
-
+namespace geocoder
+{
namespace
{
// Information will be logged for every |kLogBatch| entries.
@@ -18,7 +18,7 @@ HierarchyReader::HierarchyReader(string const & pathToJsonHierarchy) :
m_fileStm{pathToJsonHierarchy}
{
if (!m_fileStm)
- throw runtime_error("failed to open file " + pathToJsonHierarchy);
+ MYTHROW(OpenException, ("Failed to open file", pathToJsonHierarchy));
}
auto HierarchyReader::ReadEntries(size_t readerCount, ParsingStats & stats)
@@ -26,9 +26,9 @@ auto HierarchyReader::ReadEntries(size_t readerCount, ParsingStats & stats)
{
LOG(LINFO, ("Reading entries..."));
- auto taskEntries = vector<multimap<base::GeoObjectId, Entry>>(readerCount);
- auto tasks = vector<thread>{};
- for (auto t = size_t{0}; t < readerCount; ++t)
+ vector<multimap<base::GeoObjectId, Entry>> taskEntries(readerCount);
+ vector<thread> tasks{};
+ for (size_t t = 0; t < readerCount; ++t)
tasks.emplace_back(&HierarchyReader::ReadEntryMap, this, ref(taskEntries[t]), ref(stats));
for (auto & reader : tasks)
@@ -44,7 +44,7 @@ auto HierarchyReader::UnionEntries(vector<multimap<base::GeoObjectId, Entry>> &
{
auto entries = vector<Entry>{};
- auto size = size_t{0};
+ size_t size{0};
for (auto const & map : entryParts)
size += map.size();
@@ -56,9 +56,12 @@ auto HierarchyReader::UnionEntries(vector<multimap<base::GeoObjectId, Entry>> &
{
auto minPart = min_element(entryParts.begin(), entryParts.end());
- entries.emplace_back(std::move(minPart->begin()->second));
-
- minPart->erase(minPart->begin());
+ if (minPart->size())
+ {
+ entries.emplace_back(std::move(minPart->begin()->second));
+ minPart->erase(minPart->begin());
+ }
+
if (minPart->empty())
entryParts.erase(minPart);
}
diff --git a/geocoder/hierarchy_reader.hpp b/geocoder/hierarchy_reader.hpp
index 7694b986da..db460bbf4f 100644
--- a/geocoder/hierarchy_reader.hpp
+++ b/geocoder/hierarchy_reader.hpp
@@ -2,6 +2,8 @@
#include "geocoder/hierarchy.hpp"
+#include "base/exception.hpp"
+
#include <fstream>
#include <map>
#include <mutex>
@@ -9,13 +11,14 @@
namespace geocoder
{
-
class HierarchyReader
{
public:
using Entry = Hierarchy::Entry;
using ParsingStats = Hierarchy::ParsingStats;
+ DECLARE_EXCEPTION(OpenException, RootException);
+
HierarchyReader(std::string const & pathToJsonHierarchy);
auto ReadEntries(size_t readerCount, ParsingStats & stats) -> std::vector<Entry>;
@@ -27,5 +30,4 @@ private:
std::ifstream m_fileStm;
std::mutex m_mutex;
};
-
} // namespace geocoder