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/intersection_result.cpp')
-rw-r--r--search/intersection_result.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/search/intersection_result.cpp b/search/intersection_result.cpp
new file mode 100644
index 0000000000..72dd5bdff6
--- /dev/null
+++ b/search/intersection_result.cpp
@@ -0,0 +1,64 @@
+#include "search/intersection_result.hpp"
+
+#include "std/limits.hpp"
+#include "std/sstream.hpp"
+
+namespace search
+{
+// static
+uint32_t const IntersectionResult::kInvalidId = numeric_limits<uint32_t>::max();
+
+IntersectionResult::IntersectionResult()
+ : m_poi(kInvalidId), m_building(kInvalidId), m_street(kInvalidId)
+{
+}
+
+void IntersectionResult::Set(SearchModel::SearchType type, uint32_t id)
+{
+ switch (type)
+ {
+ case SearchModel::SEARCH_TYPE_POI: m_poi = id; break;
+ case SearchModel::SEARCH_TYPE_BUILDING: m_building = id; break;
+ case SearchModel::SEARCH_TYPE_STREET: m_street = id; break;
+ case SearchModel::SEARCH_TYPE_CITY:
+ case SearchModel::SEARCH_TYPE_VILLAGE:
+ case SearchModel::SEARCH_TYPE_STATE:
+ case SearchModel::SEARCH_TYPE_COUNTRY:
+ case SearchModel::SEARCH_TYPE_UNCLASSIFIED:
+ case SearchModel::SEARCH_TYPE_COUNT: ASSERT(false, ("Unsupported type.")); break;
+ }
+}
+
+uint32_t IntersectionResult::InnermostResult() const
+{
+ if (m_poi != kInvalidId)
+ return m_poi;
+ if (m_building != kInvalidId)
+ return m_building;
+ if (m_street != kInvalidId)
+ return m_street;
+ return kInvalidId;
+}
+
+void IntersectionResult::Clear()
+{
+ m_poi = kInvalidId;
+ m_building = kInvalidId;
+ m_street = kInvalidId;
+}
+
+string DebugPrint(IntersectionResult const & result)
+{
+ ostringstream os;
+ os << "IntersectionResult [ ";
+ if (result.m_poi != IntersectionResult::kInvalidId)
+ os << "POI:" << result.m_poi << " ";
+ if (result.m_building != IntersectionResult::kInvalidId)
+ os << "BUILDING:" << result.m_building << " ";
+ if (result.m_street != IntersectionResult::kInvalidId)
+ os << "STREET:" << result.m_street << " ";
+ os << "]";
+ return os.str();
+}
+
+} // namespace search