Provides OSRM_ASSERT_WITH_LOC macros for asserting with location, resolves #3533
This commit is contained in:
parent
1ae69fe40d
commit
fce3bb180c
45
include/util/assert.hpp
Normal file
45
include/util/assert.hpp
Normal file
@ -0,0 +1,45 @@
|
||||
#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
|
Loading…
Reference in New Issue
Block a user