Refactor bearing implementation.
- removes `noexcept` specifier as we can not guarantee for not throwing - uses a namespace instead of a struct + static function combination - asserts for heading degree in [0, 360] range (both sides inclusive!) - header only since implementation does not hide anything - adds `inline` specifier as compiler hint
This commit is contained in:
parent
7ed63d2ab5
commit
98b7e0a407
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
Copyright (c) 2015, Project OSRM contributors
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice, this list
|
|
||||||
of conditions and the following disclaimer.
|
|
||||||
Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "bearing.hpp"
|
|
||||||
|
|
||||||
std::string bearing::get(const double heading) noexcept
|
|
||||||
{
|
|
||||||
if (heading <= 22.5)
|
|
||||||
{
|
|
||||||
return "N";
|
|
||||||
}
|
|
||||||
if (heading <= 67.5)
|
|
||||||
{
|
|
||||||
return "NE";
|
|
||||||
}
|
|
||||||
if (heading <= 112.5)
|
|
||||||
{
|
|
||||||
return "E";
|
|
||||||
}
|
|
||||||
if (heading <= 157.5)
|
|
||||||
{
|
|
||||||
return "SE";
|
|
||||||
}
|
|
||||||
if (heading <= 202.5)
|
|
||||||
{
|
|
||||||
return "S";
|
|
||||||
}
|
|
||||||
if (heading <= 247.5)
|
|
||||||
{
|
|
||||||
return "SW";
|
|
||||||
}
|
|
||||||
if (heading <= 292.5)
|
|
||||||
{
|
|
||||||
return "W";
|
|
||||||
}
|
|
||||||
if (heading <= 337.5)
|
|
||||||
{
|
|
||||||
return "NW";
|
|
||||||
}
|
|
||||||
return "N";
|
|
||||||
}
|
|
@ -28,11 +28,50 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#ifndef BEARING_HPP
|
#ifndef BEARING_HPP
|
||||||
#define BEARING_HPP
|
#define BEARING_HPP
|
||||||
|
|
||||||
|
#include <boost/assert.hpp>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
struct bearing
|
namespace bearing
|
||||||
{
|
{
|
||||||
static std::string get(const double heading) noexcept;
|
inline std::string get(const double heading)
|
||||||
};
|
{
|
||||||
|
BOOST_ASSERT(heading >= 0);
|
||||||
|
BOOST_ASSERT(heading <= 360);
|
||||||
|
|
||||||
|
if (heading <= 22.5)
|
||||||
|
{
|
||||||
|
return "N";
|
||||||
|
}
|
||||||
|
if (heading <= 67.5)
|
||||||
|
{
|
||||||
|
return "NE";
|
||||||
|
}
|
||||||
|
if (heading <= 112.5)
|
||||||
|
{
|
||||||
|
return "E";
|
||||||
|
}
|
||||||
|
if (heading <= 157.5)
|
||||||
|
{
|
||||||
|
return "SE";
|
||||||
|
}
|
||||||
|
if (heading <= 202.5)
|
||||||
|
{
|
||||||
|
return "S";
|
||||||
|
}
|
||||||
|
if (heading <= 247.5)
|
||||||
|
{
|
||||||
|
return "SW";
|
||||||
|
}
|
||||||
|
if (heading <= 292.5)
|
||||||
|
{
|
||||||
|
return "W";
|
||||||
|
}
|
||||||
|
if (heading <= 337.5)
|
||||||
|
{
|
||||||
|
return "NW";
|
||||||
|
}
|
||||||
|
return "N";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif // BEARING_HPP
|
#endif // BEARING_HPP
|
||||||
|
Loading…
Reference in New Issue
Block a user