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:
authortatiana-yan <tatiana.kondakova@gmail.com>2019-01-24 16:21:28 +0300
committermpimenov <mpimenov@users.noreply.github.com>2019-01-24 18:46:37 +0300
commit3bf670236fd979f196ed09eb55f050bb7edb354f (patch)
tree238025f26822f97148fb926bc887a651cd0644e6 /indexer
parenta677e3fb54457091df44342078902724feaa1970 (diff)
[search] Use squares and suburbs as streets in geocoder.
Diffstat (limited to 'indexer')
-rw-r--r--indexer/ftypes_matcher.cpp12
-rw-r--r--indexer/ftypes_matcher.hpp18
-rw-r--r--indexer/indexer_tests/checker_test.cpp10
3 files changed, 31 insertions, 9 deletions
diff --git a/indexer/ftypes_matcher.cpp b/indexer/ftypes_matcher.cpp
index d34b2a73d2..b141bc6096 100644
--- a/indexer/ftypes_matcher.cpp
+++ b/indexer/ftypes_matcher.cpp
@@ -214,7 +214,7 @@ IsSuburbChecker::IsSuburbChecker()
m_types.push_back(c.GetTypeByPath({"place", "suburb"}));
}
-IsStreetChecker::IsStreetChecker()
+IsWayChecker::IsWayChecker()
{
// TODO (@y, @m, @vng): this list must be up-to-date with
// data/categories.txt, so, it's worth it to generate or parse it
@@ -243,6 +243,16 @@ IsStreetChecker::IsStreetChecker()
m_types.push_back(c.GetTypeByPath({p[0], p[1]}));
}
+IsStreetOrSuburbChecker::IsStreetOrSuburbChecker()
+{
+ for (auto const t : IsWayChecker::Instance().m_types)
+ m_types.push_back(t);
+ for (auto const t : IsSquareChecker::Instance().m_types)
+ m_types.push_back(t);
+ for (auto const t : IsSuburbChecker::Instance().m_types)
+ m_types.push_back(t);
+}
+
IsAddressObjectChecker::IsAddressObjectChecker() : BaseChecker(1 /* level */)
{
auto const paths = {"building", "amenity", "shop", "tourism", "historic", "office", "craft"};
diff --git a/indexer/ftypes_matcher.hpp b/indexer/ftypes_matcher.hpp
index 751d6de52f..018d0ed932 100644
--- a/indexer/ftypes_matcher.hpp
+++ b/indexer/ftypes_matcher.hpp
@@ -107,6 +107,7 @@ public:
class IsSquareChecker : public BaseChecker
{
IsSquareChecker();
+ friend class IsStreetOrSuburbChecker;
public:
DECLARE_CHECKER_INSTANCE(IsSquareChecker);
@@ -115,16 +116,27 @@ public:
class IsSuburbChecker : public BaseChecker
{
IsSuburbChecker();
+ friend class IsStreetOrSuburbChecker;
public:
DECLARE_CHECKER_INSTANCE(IsSuburbChecker);
};
-class IsStreetChecker : public BaseChecker
+class IsWayChecker : public BaseChecker
{
- IsStreetChecker();
+ IsWayChecker();
+ friend class IsStreetOrSuburbChecker;
+
+public:
+ DECLARE_CHECKER_INSTANCE(IsWayChecker);
+};
+
+class IsStreetOrSuburbChecker : public BaseChecker
+{
+ IsStreetOrSuburbChecker();
+
public:
- DECLARE_CHECKER_INSTANCE(IsStreetChecker);
+ DECLARE_CHECKER_INSTANCE(IsStreetOrSuburbChecker);
};
class IsAddressObjectChecker : public BaseChecker
diff --git a/indexer/indexer_tests/checker_test.cpp b/indexer/indexer_tests/checker_test.cpp
index 9dc695893b..19f14e6a34 100644
--- a/indexer/indexer_tests/checker_test.cpp
+++ b/indexer/indexer_tests/checker_test.cpp
@@ -179,17 +179,17 @@ UNIT_TEST(IsTypeConformed)
TEST(!ftypes::IsTypeConformed(types[1], {"*", "building", "*"}), ());
}
-UNIT_TEST(IsStreetChecker)
+UNIT_TEST(IsWayChecker)
{
classificator::Load();
- TEST(ftypes::IsStreetChecker::Instance()(GetStreetTypes()), ());
- TEST(ftypes::IsStreetChecker::Instance()(GetStreetAndNotStreetTypes()), ());
+ TEST(ftypes::IsWayChecker::Instance()(GetStreetTypes()), ());
+ TEST(ftypes::IsWayChecker::Instance()(GetStreetAndNotStreetTypes()), ());
// TODO (@y, @m, @vng): need to investigate - do we really need this
- // TEST for absence of links, because IsStreetChecker() is used for
+ // TEST for absence of links, because IsWayChecker() is used for
// search only.
//
- // TEST(!ftypes::IsStreetChecker::Instance()(GetLinkTypes()), ());
+ // TEST(!ftypes::IsWayChecker::Instance()(GetLinkTypes()), ());
}
UNIT_TEST(IsLinkChecker)