text: #ifndef OSRM_UTIL_ASSERT_HPP
  #define OSRM_UTIL_ASSERT_HPP
  
  #include <iostream>
  #include <string>
  
  #include "util/coordinate.hpp"
  
  #include <boost/assert.hpp>
  
  // Enhances BOOST_ASSERT / BOOST_ASSERT_MSG with convenience location printing
  // - OSRM_ASSERT(cond, coordinate)
  // - OSRM_ASSERT_MSG(cond, coordinate, msg)
  
  #ifdef BOOST_ENABLE_ASSERT_HANDLER
  
  #define OSRM_ASSERT_MSG(cond, loc, msg)                                                            \
      do                                                                                             \
      {                                                                                              \
          if (!static_cast<bool>(cond))                                                              \
          {                                                                                          \
              ::osrm::util::FloatCoordinate c_(loc);                                                 \
              std::cerr << "[Location] "                                                             \
                        << "http://www.openstreetmap.org/?mlat=" << c_.lat << "&mlon=" << c_.lon     \
                        << "#map=19/" << c_.lat << "/" << c_.lon << '\n';                            \
          }                                                                                          \
          BOOST_ASSERT_MSG(cond, msg);                                                               \
      } while (0)
  
  #define OSRM_ASSERT(cond, loc) OSRM_ASSERT_MSG(cond, loc, "")
  
  #else
  
  #define OSRM_ASSERT_MSG(cond, coordinate, msg)                                                     \
      do                                                                                             \
      {                                                                                              \
          (void)(cond);                                                                              \
          (void)(coordinate);                                                                        \
          (void)(msg);                                                                               \
      } while (0)
  #define OSRM_ASSERT(cond, coordinate) OSRM_ASSERT_MSG(cond, coordinate, "")
  
  #endif
  
  #endif
  