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" | ||||
| 
 | ||||
| std::string bearing::get(const double heading) | ||||
| std::string bearing::get(const double heading) noexcept | ||||
| { | ||||
|     if (heading <= 22.5) | ||||
|     { | ||||
|  | ||||
| @ -32,7 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| 
 | ||||
| struct bearing | ||||
| { | ||||
|     static std::string get(const double heading); | ||||
|     static std::string get(const double heading) noexcept; | ||||
| }; | ||||
| 
 | ||||
| #endif // BEARING_HPP
 | ||||
|  | ||||
| @ -109,7 +109,7 @@ struct cast | ||||
|     } | ||||
| 
 | ||||
|     // 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; | ||||
|         bool neg = false; | ||||
|  | ||||
| @ -36,7 +36,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| 
 | ||||
| double ComputeAngle::OfThreeFixedPointCoordinates(const FixedPointCoordinate &first, | ||||
|                                                   const FixedPointCoordinate &second, | ||||
|                                                   const FixedPointCoordinate &third) | ||||
|                                                   const FixedPointCoordinate &third) noexcept | ||||
| { | ||||
|     const double v1x = (first.lon - second.lon) / COORDINATE_PRECISION; | ||||
|     const double v1y = mercator::lat2y(first.lat / COORDINATE_PRECISION) - | ||||
|  | ||||
| @ -36,7 +36,7 @@ struct ComputeAngle | ||||
|     // atan2 magic, formerly cosine theorem
 | ||||
|     static double OfThreeFixedPointCoordinates(const FixedPointCoordinate &first, | ||||
|                                                const FixedPointCoordinate &second, | ||||
|                                                const FixedPointCoordinate &third); | ||||
|                                                const FixedPointCoordinate &third) noexcept; | ||||
| }; | ||||
| 
 | ||||
| #endif // COMPUTE_ANGLE_HPP
 | ||||
|  | ||||
| @ -37,16 +37,17 @@ namespace osrm | ||||
| namespace detail | ||||
| { | ||||
| // 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; | ||||
| } | ||||
| 
 | ||||
| // 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)); | ||||
|     const auto number_of_unique_elements = | ||||
| @ -72,7 +73,9 @@ template <typename Container> void sort_unique_resize(Container &vector) | ||||
| // }
 | ||||
| 
 | ||||
| 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) | ||||
|     { | ||||
|  | ||||
| @ -40,29 +40,30 @@ template <typename Integer> class range | ||||
|     Integer iter; | ||||
| 
 | ||||
|   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"); | ||||
|     } | ||||
| 
 | ||||
|     // Iterable functions
 | ||||
|     const range &begin() const { return *this; } | ||||
|     const range &end() const { return *this; } | ||||
|     Integer front() const { return iter; } | ||||
|     Integer back() const { return last - 1; } | ||||
|     Integer size() const { return last - iter; } | ||||
|     const range &begin() const noexcept { return *this; } | ||||
|     const range &end() const noexcept { return *this; } | ||||
|     Integer front() const noexcept { return iter; } | ||||
|     Integer back() const noexcept { return last - 1; } | ||||
|     Integer size() const noexcept { return last - iter; } | ||||
| 
 | ||||
|     // Iterator functions
 | ||||
|     bool operator!=(const range &) const { return iter < last; } | ||||
|     void operator++() { ++iter; } | ||||
|     Integer operator*() const { return iter; } | ||||
|     bool operator!=(const range &) const noexcept { return iter < last; } | ||||
|     void operator++() noexcept { ++iter; } | ||||
|     Integer operator*() const noexcept { return iter; } | ||||
| }; | ||||
| 
 | ||||
| // convenience function to construct an integer range with type deduction
 | ||||
| template <typename Integer> | ||||
| range<Integer> irange(const Integer first, | ||||
|                       const Integer last, | ||||
|                       typename std::enable_if<std::is_integral<Integer>::value>::type * = 0) | ||||
| range<Integer> | ||||
| irange(const Integer first, | ||||
|        const Integer last, | ||||
|        typename std::enable_if<std::is_integral<Integer>::value>::type * = 0) noexcept | ||||
| { | ||||
|     return range<Integer>(first, last); | ||||
| } | ||||
|  | ||||
| @ -33,10 +33,10 @@ namespace osrm | ||||
| template <typename Iterator> class iter_range | ||||
| { | ||||
|   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 end() const { return end_; } | ||||
|     Iterator begin() const noexcept { return begin_; } | ||||
|     Iterator end() const noexcept { return end_; } | ||||
| 
 | ||||
|   private: | ||||
|     Iterator begin_; | ||||
| @ -46,13 +46,14 @@ template <typename Iterator> class iter_range | ||||
| // Convenience functions for template parameter inference,
 | ||||
| // 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); | ||||
| } | ||||
| 
 | ||||
| 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(), | ||||
|                                                              reversable->rend()); | ||||
| @ -60,7 +61,7 @@ iter_range<typename Reversable::reverse_iterator> reverse(Reversable *reversable | ||||
| 
 | ||||
| template <typename ConstReversable> | ||||
| 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(), | ||||
|                                                                         const_reversable->crend()); | ||||
|  | ||||
| @ -29,12 +29,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| 
 | ||||
| #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); | ||||
| } | ||||
| 
 | ||||
| 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.)); | ||||
| } | ||||
|  | ||||
| @ -30,9 +30,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| 
 | ||||
| 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
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user