diff options
Diffstat (limited to 'search/intersection_result.cpp')
-rw-r--r-- | search/intersection_result.cpp | 64 |
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 |