diff --git a/include/util/coordinate.hpp b/include/util/coordinate.hpp index e249bb227..662cbb5a9 100644 --- a/include/util/coordinate.hpp +++ b/include/util/coordinate.hpp @@ -127,10 +127,16 @@ struct Coordinate FixedLongitude lon; FixedLatitude lat; - Coordinate(); + Coordinate() : lon(std::numeric_limits::min()), lat(std::numeric_limits::min()) {} + Coordinate(const FloatCoordinate &other); - Coordinate(const FixedLongitude lon_, const FixedLatitude lat_); - Coordinate(const FloatLongitude lon_, const FloatLatitude lat_); + + Coordinate(const FloatLongitude lon_, const FloatLatitude lat_) + : Coordinate(toFixed(lon_), toFixed(lat_)) + { + } + + Coordinate(const FixedLongitude lon_, const FixedLatitude lat_) : lon(lon_), lat(lat_) {} template Coordinate(const T &coordinate) : lon(coordinate.lon), lat(coordinate.lat) { @@ -166,10 +172,22 @@ struct FloatCoordinate FloatLongitude lon; FloatLatitude lat; - FloatCoordinate(); - FloatCoordinate(const FixedLongitude lon_, const FixedLatitude lat_); - FloatCoordinate(const FloatLongitude lon_, const FloatLatitude lat_); - FloatCoordinate(const Coordinate other); + FloatCoordinate() + : lon(std::numeric_limits::min()), lat(std::numeric_limits::min()) + { + } + + FloatCoordinate(const Coordinate other) + : FloatCoordinate(toFloating(other.lon), toFloating(other.lat)) + { + } + + FloatCoordinate(const FixedLongitude lon_, const FixedLatitude lat_) + : FloatCoordinate(toFloating(lon_), toFloating(lat_)) + { + } + + FloatCoordinate(const FloatLongitude lon_, const FloatLatitude lat_) : lon(lon_), lat(lat_) {} bool IsValid() const; friend bool operator==(const FloatCoordinate lhs, const FloatCoordinate rhs); @@ -181,6 +199,9 @@ bool operator==(const Coordinate lhs, const Coordinate rhs); bool operator==(const FloatCoordinate lhs, const FloatCoordinate rhs); std::ostream &operator<<(std::ostream &out, const Coordinate coordinate); std::ostream &operator<<(std::ostream &out, const FloatCoordinate coordinate); + +inline Coordinate::Coordinate(const FloatCoordinate &other) : Coordinate(toFixed(other.lon), toFixed(other.lat)) {} + } } diff --git a/src/util/coordinate.cpp b/src/util/coordinate.cpp index 9ccbf17f3..0cec66647 100644 --- a/src/util/coordinate.cpp +++ b/src/util/coordinate.cpp @@ -17,24 +17,6 @@ namespace osrm namespace util { -Coordinate::Coordinate() - : lon(std::numeric_limits::min()), lat(std::numeric_limits::min()) -{ -} - -Coordinate::Coordinate(const FloatCoordinate &other) - : Coordinate(toFixed(other.lon), toFixed(other.lat)) -{ -} - -Coordinate::Coordinate(const FloatLongitude lon_, const FloatLatitude lat_) - : Coordinate(toFixed(lon_), toFixed(lat_)) -{ -} - -Coordinate::Coordinate(const FixedLongitude lon_, const FixedLatitude lat_) : lon(lon_), lat(lat_) -{ -} bool Coordinate::IsValid() const { @@ -44,24 +26,6 @@ bool Coordinate::IsValid() const lon < FixedLongitude(-180 * COORDINATE_PRECISION)); } -FloatCoordinate::FloatCoordinate() - : lon(std::numeric_limits::min()), lat(std::numeric_limits::min()) -{ -} - -FloatCoordinate::FloatCoordinate(const Coordinate other) - : FloatCoordinate(toFloating(other.lon), toFloating(other.lat)) -{ -} - -FloatCoordinate::FloatCoordinate(const FixedLongitude lon_, const FixedLatitude lat_) - : FloatCoordinate(toFloating(lon_), toFloating(lat_)) -{ -} - -FloatCoordinate::FloatCoordinate(const FloatLongitude lon_, const FloatLatitude lat_) : lon(lon_), lat(lat_) -{ -} bool FloatCoordinate::IsValid() const {