diff --git a/search/house_detector.hpp b/search/house_detector.hpp index 5c4ece56d1..23724f2adf 100644 --- a/search/house_detector.hpp +++ b/search/house_detector.hpp @@ -4,7 +4,6 @@ #include "search/projection_on_street.hpp" #include "indexer/feature_decl.hpp" -#include "indexer/index.hpp" #include "indexer/ftypes_matcher.hpp" #include "geometry/point2d.hpp" diff --git a/search/search_quality/assessment_tool/context.cpp b/search/search_quality/assessment_tool/context.cpp index d7cac1138d..4aa2cc6dd4 100644 --- a/search/search_quality/assessment_tool/context.cpp +++ b/search/search_quality/assessment_tool/context.cpp @@ -5,6 +5,8 @@ #include "base/assert.hpp" +#include + using namespace std; // Context ----------------------------------------------------------------------------------------- @@ -17,15 +19,15 @@ void Context::Clear() search::Sample Context::MakeSample(search::FeatureLoader & loader) const { - search::Sample sample = m_sample; + search::Sample outSample = m_sample; if (!m_initialized) - return sample; + return outSample; auto const & relevances = m_edits.GetRelevances(); - auto & results = sample.m_results; - results.clear(); + auto & outResults = outSample.m_results; + outResults.clear(); CHECK_EQUAL(m_goldenMatching.size(), m_sample.m_results.size(), ()); CHECK_EQUAL(m_actualMatching.size(), relevances.size(), ()); @@ -41,7 +43,7 @@ search::Sample Context::MakeSample(search::FeatureLoader & loader) const // assessor. But we want to keep them. if (j == search::Matcher::kInvalidId) { - results.push_back(m_sample.m_results[i]); + outResults.push_back(m_sample.m_results[i]); continue; } @@ -51,7 +53,7 @@ search::Sample Context::MakeSample(search::FeatureLoader & loader) const auto result = m_sample.m_results[i]; result.m_relevance = relevances[j]; - results.push_back(result); + outResults.push_back(move(result)); } // Iterates over results retrieved during assessment. @@ -75,10 +77,10 @@ search::Sample Context::MakeSample(search::FeatureLoader & loader) const FeatureType ft; CHECK(loader.Load(result.GetFeatureID(), ft), ()); - results.push_back(search::Sample::Result::Build(ft, relevances[i])); + outResults.push_back(search::Sample::Result::Build(ft, relevances[i])); } - return sample; + return outSample; } void Context::ApplyEdits() diff --git a/search/search_quality/assessment_tool/edits.cpp b/search/search_quality/assessment_tool/edits.cpp index 522d858efc..b94c9f39ed 100644 --- a/search/search_quality/assessment_tool/edits.cpp +++ b/search/search_quality/assessment_tool/edits.cpp @@ -70,5 +70,6 @@ bool Edits::HasChanges() const { return m_numEdits != 0; } bool Edits::HasChanges(size_t index) const { CHECK_LESS(index, m_currRelevances.size(), ()); + CHECK_LESS(index, m_origRelevances.size(), ()); return m_currRelevances[index] != m_origRelevances[index]; } diff --git a/search/search_quality/assessment_tool/edits.hpp b/search/search_quality/assessment_tool/edits.hpp index 1c04b92dda..2932b56904 100644 --- a/search/search_quality/assessment_tool/edits.hpp +++ b/search/search_quality/assessment_tool/edits.hpp @@ -74,10 +74,10 @@ private: template typename std::result_of::type WithObserver(Update const & update, Fn && fn) { - MY_SCOPE_GUARD(cleanup, [&]() { - if (m_onUpdate) - m_onUpdate(update); - }); + MY_SCOPE_GUARD(cleanup, ([this, &update]() { + if (m_onUpdate) + m_onUpdate(update); + })); return fn(); } diff --git a/search/search_quality/assessment_tool/main_model.cpp b/search/search_quality/assessment_tool/main_model.cpp index 64655241ff..8cb97f2c63 100644 --- a/search/search_quality/assessment_tool/main_model.cpp +++ b/search/search_quality/assessment_tool/main_model.cpp @@ -150,8 +150,12 @@ void MainModel::OnSampleSelected(int index) relevances.assign(actual.size(), Relevance::Irrelevant); for (size_t i = 0; i < goldenMatching.size(); ++i) { - if (goldenMatching[i] != search::Matcher::kInvalidId) - relevances[goldenMatching[i]] = sample.m_results[i].m_relevance; + auto const j = goldenMatching[i]; + if (j != search::Matcher::kInvalidId) + { + CHECK_LESS(j, relevances.size(), ()); + relevances[j] = sample.m_results[i].m_relevance; + } } } @@ -174,8 +178,9 @@ void MainModel::OnUpdate(size_t index, Edits::Update const & update) } void MainModel::OnResults(uint64_t timestamp, size_t index, search::Results const & results, - vector const & relevances, vector goldenMatching, - vector actualMatching) + vector const & relevances, + vector const & goldenMatching, + vector const & actualMatching) { CHECK(m_threadChecker.CalledOnOriginalThread(), ()); diff --git a/search/search_quality/assessment_tool/main_model.hpp b/search/search_quality/assessment_tool/main_model.hpp index 39f05f4272..8efcf8f4c1 100644 --- a/search/search_quality/assessment_tool/main_model.hpp +++ b/search/search_quality/assessment_tool/main_model.hpp @@ -38,7 +38,8 @@ private: void OnResults(uint64_t timestamp, size_t index, search::Results const & results, std::vector const & relevances, - std::vector goldenMatching, std::vector actualMatching); + std::vector const & goldenMatching, + std::vector const & actualMatching); void ResetSearch(); diff --git a/search/search_quality/assessment_tool/main_view.cpp b/search/search_quality/assessment_tool/main_view.cpp index 7e2c75824d..eafa614079 100644 --- a/search/search_quality/assessment_tool/main_view.cpp +++ b/search/search_quality/assessment_tool/main_view.cpp @@ -212,9 +212,9 @@ void MainView::Open() { CHECK(m_model, ()); - auto const file = QFileDialog::getOpenFileName(this /* parent */, tr("Open samples..."), - QString() /* dir */, tr(kJSON)) - .toStdString(); + auto const name = QFileDialog::getOpenFileName(this /* parent */, tr("Open samples..."), + QString() /* dir */, tr(kJSON)); + auto const file = name.toStdString(); if (file.empty()) return; @@ -225,9 +225,9 @@ void MainView::Save() { m_model->Save(); } void MainView::SaveAs() { - auto const file = QFileDialog::getSaveFileName(this /* parent */, tr("Save samples as..."), - QString() /* dir */, tr(kJSON)) - .toStdString(); + auto const name = QFileDialog::getSaveFileName(this /* parent */, tr("Save samples as..."), + QString() /* dir */, tr(kJSON)); + auto const file = name.toStdString(); if (!file.empty()) m_model->SaveAs(file); } diff --git a/search/search_quality/assessment_tool/results_view.cpp b/search/search_quality/assessment_tool/results_view.cpp index e535ca5d81..7e6967abe9 100644 --- a/search/search_quality/assessment_tool/results_view.cpp +++ b/search/search_quality/assessment_tool/results_view.cpp @@ -37,6 +37,7 @@ void ResultsView::Update(Edits::Update const & update) switch (update.m_type) { case Edits::Update::Type::SingleRelevance: + CHECK_LESS(update.m_index, m_results.size(), ()); m_results[update.m_index]->Update(); break; case Edits::Update::Type::AllRelevances: diff --git a/search/search_quality/sample.cpp b/search/search_quality/sample.cpp index 15b1d78730..b923ad1191 100644 --- a/search/search_quality/sample.cpp +++ b/search/search_quality/sample.cpp @@ -62,7 +62,7 @@ Sample::Result Sample::Result::Build(FeatureType & ft, Relevance relevance) r.m_pos = feature::GetCenter(ft); { string name; - ft.GetReadableName(name); + ft.GetReadableName(false /* allowTranslit */, name); r.m_name = strings::MakeUniString(name); } r.m_houseNumber = ft.GetHouseNumber();