sprinkle a number of noexcepts into the code
This commit is contained in:
parent
9a61f8b894
commit
c2deedac8b
@ -27,7 +27,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include "bearing.hpp"
|
#include "bearing.hpp"
|
||||||
|
|
||||||
std::string bearing::get(const double heading)
|
std::string bearing::get(const double heading) noexcept
|
||||||
{
|
{
|
||||||
if (heading <= 22.5)
|
if (heading <= 22.5)
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
struct bearing
|
struct bearing
|
||||||
{
|
{
|
||||||
static std::string get(const double heading);
|
static std::string get(const double heading) noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BEARING_HPP
|
#endif // BEARING_HPP
|
||||||
|
@ -109,7 +109,7 @@ struct cast
|
|||||||
}
|
}
|
||||||
|
|
||||||
// source: http://tinodidriksen.com/2011/05/28/cpp-convert-string-to-double-speed/
|
// source: http://tinodidriksen.com/2011/05/28/cpp-convert-string-to-double-speed/
|
||||||
static double string_to_double(const char *p)
|
static double string_to_double(const char *p) noexcept
|
||||||
{
|
{
|
||||||
double r = 0.0;
|
double r = 0.0;
|
||||||
bool neg = false;
|
bool neg = false;
|
||||||
|
@ -36,7 +36,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
double ComputeAngle::OfThreeFixedPointCoordinates(const FixedPointCoordinate &first,
|
double ComputeAngle::OfThreeFixedPointCoordinates(const FixedPointCoordinate &first,
|
||||||
const FixedPointCoordinate &second,
|
const FixedPointCoordinate &second,
|
||||||
const FixedPointCoordinate &third)
|
const FixedPointCoordinate &third) noexcept
|
||||||
{
|
{
|
||||||
const double v1x = (first.lon - second.lon) / COORDINATE_PRECISION;
|
const double v1x = (first.lon - second.lon) / COORDINATE_PRECISION;
|
||||||
const double v1y = mercator::lat2y(first.lat / COORDINATE_PRECISION) -
|
const double v1y = mercator::lat2y(first.lat / COORDINATE_PRECISION) -
|
||||||
|
@ -36,7 +36,7 @@ struct ComputeAngle
|
|||||||
// atan2 magic, formerly cosine theorem
|
// atan2 magic, formerly cosine theorem
|
||||||
static double OfThreeFixedPointCoordinates(const FixedPointCoordinate &first,
|
static double OfThreeFixedPointCoordinates(const FixedPointCoordinate &first,
|
||||||
const FixedPointCoordinate &second,
|
const FixedPointCoordinate &second,
|
||||||
const FixedPointCoordinate &third);
|
const FixedPointCoordinate &third) noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COMPUTE_ANGLE_HPP
|
#endif // COMPUTE_ANGLE_HPP
|
||||||
|
@ -37,16 +37,17 @@ namespace osrm
|
|||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
// Culled by SFINAE if reserve does not exist or is not accessible
|
// Culled by SFINAE if reserve does not exist or is not accessible
|
||||||
template <typename T> constexpr auto has_resize_method(T &t) -> decltype(t.resize(0), bool())
|
template <typename T>
|
||||||
|
constexpr auto has_resize_method(T &t) noexcept -> decltype(t.resize(0), bool())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used as fallback when SFINAE culls the template method
|
// Used as fallback when SFINAE culls the template method
|
||||||
constexpr bool has_resize_method(...) { return false; }
|
constexpr bool has_resize_method(...) noexcept { return false; }
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Container> void sort_unique_resize(Container &vector)
|
template <typename Container> void sort_unique_resize(Container &vector) noexcept
|
||||||
{
|
{
|
||||||
std::sort(std::begin(vector), std::end(vector));
|
std::sort(std::begin(vector), std::end(vector));
|
||||||
const auto number_of_unique_elements =
|
const auto number_of_unique_elements =
|
||||||
@ -72,7 +73,9 @@ template <typename Container> void sort_unique_resize(Container &vector)
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
template <typename ForwardIterator, typename Function>
|
template <typename ForwardIterator, typename Function>
|
||||||
Function for_each_pair(ForwardIterator begin, ForwardIterator end, Function function)
|
Function for_each_pair(ForwardIterator begin,
|
||||||
|
ForwardIterator end,
|
||||||
|
Function function) noexcept(noexcept(function))
|
||||||
{
|
{
|
||||||
if (begin == end)
|
if (begin == end)
|
||||||
{
|
{
|
||||||
|
@ -40,29 +40,30 @@ template <typename Integer> class range
|
|||||||
Integer iter;
|
Integer iter;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
range(Integer start, Integer end) : last(end), iter(start)
|
range(Integer start, Integer end) noexcept : last(end), iter(start)
|
||||||
{
|
{
|
||||||
static_assert(std::is_integral<Integer>::value, "range type must be integral");
|
static_assert(std::is_integral<Integer>::value, "range type must be integral");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterable functions
|
// Iterable functions
|
||||||
const range &begin() const { return *this; }
|
const range &begin() const noexcept { return *this; }
|
||||||
const range &end() const { return *this; }
|
const range &end() const noexcept { return *this; }
|
||||||
Integer front() const { return iter; }
|
Integer front() const noexcept { return iter; }
|
||||||
Integer back() const { return last - 1; }
|
Integer back() const noexcept { return last - 1; }
|
||||||
Integer size() const { return last - iter; }
|
Integer size() const noexcept { return last - iter; }
|
||||||
|
|
||||||
// Iterator functions
|
// Iterator functions
|
||||||
bool operator!=(const range &) const { return iter < last; }
|
bool operator!=(const range &) const noexcept { return iter < last; }
|
||||||
void operator++() { ++iter; }
|
void operator++() noexcept { ++iter; }
|
||||||
Integer operator*() const { return iter; }
|
Integer operator*() const noexcept { return iter; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// convenience function to construct an integer range with type deduction
|
// convenience function to construct an integer range with type deduction
|
||||||
template <typename Integer>
|
template <typename Integer>
|
||||||
range<Integer> irange(const Integer first,
|
range<Integer>
|
||||||
const Integer last,
|
irange(const Integer first,
|
||||||
typename std::enable_if<std::is_integral<Integer>::value>::type * = 0)
|
const Integer last,
|
||||||
|
typename std::enable_if<std::is_integral<Integer>::value>::type * = 0) noexcept
|
||||||
{
|
{
|
||||||
return range<Integer>(first, last);
|
return range<Integer>(first, last);
|
||||||
}
|
}
|
||||||
|
@ -33,10 +33,10 @@ namespace osrm
|
|||||||
template <typename Iterator> class iter_range
|
template <typename Iterator> class iter_range
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
iter_range(Iterator begin, Iterator end) : begin_(begin), end_(end) {}
|
iter_range(Iterator begin, Iterator end) noexcept : begin_(begin), end_(end) {}
|
||||||
|
|
||||||
Iterator begin() const { return begin_; }
|
Iterator begin() const noexcept { return begin_; }
|
||||||
Iterator end() const { return end_; }
|
Iterator end() const noexcept { return end_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Iterator begin_;
|
Iterator begin_;
|
||||||
@ -46,13 +46,14 @@ template <typename Iterator> class iter_range
|
|||||||
// Convenience functions for template parameter inference,
|
// Convenience functions for template parameter inference,
|
||||||
// akin to std::make_pair.
|
// akin to std::make_pair.
|
||||||
|
|
||||||
template <typename Iterator> iter_range<Iterator> integer_range(Iterator begin, Iterator end)
|
template <typename Iterator>
|
||||||
|
iter_range<Iterator> integer_range(Iterator begin, Iterator end) noexcept
|
||||||
{
|
{
|
||||||
return iter_range<Iterator>(begin, end);
|
return iter_range<Iterator>(begin, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Reversable>
|
template <typename Reversable>
|
||||||
iter_range<typename Reversable::reverse_iterator> reverse(Reversable *reversable)
|
iter_range<typename Reversable::reverse_iterator> reverse(Reversable *reversable) noexcept
|
||||||
{
|
{
|
||||||
return iter_range<typename Reversable::reverse_iterator>(reversable->rbegin(),
|
return iter_range<typename Reversable::reverse_iterator>(reversable->rbegin(),
|
||||||
reversable->rend());
|
reversable->rend());
|
||||||
@ -60,7 +61,7 @@ iter_range<typename Reversable::reverse_iterator> reverse(Reversable *reversable
|
|||||||
|
|
||||||
template <typename ConstReversable>
|
template <typename ConstReversable>
|
||||||
iter_range<typename ConstReversable::const_reverse_iterator>
|
iter_range<typename ConstReversable::const_reverse_iterator>
|
||||||
const_reverse(const ConstReversable *const_reversable)
|
const_reverse(const ConstReversable *const_reversable) noexcept
|
||||||
{
|
{
|
||||||
return iter_range<typename ConstReversable::const_reverse_iterator>(const_reversable->crbegin(),
|
return iter_range<typename ConstReversable::const_reverse_iterator>(const_reversable->crbegin(),
|
||||||
const_reversable->crend());
|
const_reversable->crend());
|
||||||
|
@ -29,12 +29,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
double mercator::y2lat(const double value)
|
double mercator::y2lat(const double value) noexcept
|
||||||
{
|
{
|
||||||
return 180. * M_1_PI * (2. * std::atan(std::exp(value * M_PI / 180.)) - M_PI_2);
|
return 180. * M_1_PI * (2. * std::atan(std::exp(value * M_PI / 180.)) - M_PI_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
double mercator::lat2y(const double latitude)
|
double mercator::lat2y(const double latitude) noexcept
|
||||||
{
|
{
|
||||||
return 180. * M_1_PI * std::log(std::tan(M_PI_4 + latitude * (M_PI / 180.) / 2.));
|
return 180. * M_1_PI * std::log(std::tan(M_PI_4 + latitude * (M_PI / 180.) / 2.));
|
||||||
}
|
}
|
||||||
|
@ -30,9 +30,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
struct mercator
|
struct mercator
|
||||||
{
|
{
|
||||||
static double y2lat(const double value);
|
static double y2lat(const double value) noexcept;
|
||||||
|
|
||||||
static double lat2y(const double latitude);
|
static double lat2y(const double latitude) noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MERCATOR_HPP
|
#endif // MERCATOR_HPP
|
||||||
|
Loading…
Reference in New Issue
Block a user