18 #ifndef LOCATION_SERVICE_COM_UBUNTU_LOCATION_POSITION_H_
19 #define LOCATION_SERVICE_COM_UBUNTU_LOCATION_POSITION_H_
21 #include "com/ubuntu/location/wgs84/altitude.h"
22 #include "com/ubuntu/location/wgs84/latitude.h"
23 #include "com/ubuntu/location/wgs84/longitude.h"
44 typedef std::bitset<3> Flags;
48 const wgs84::Latitude& latitude,
49 const wgs84::Longitude& longitude);
51 const wgs84::Latitude& latitude,
52 const wgs84::Longitude& longitude,
53 const wgs84::Altitude& altitude);
55 bool operator==(
const Position& rhs)
const;
56 bool operator!=(
const Position& rhs)
const;
58 const Flags& flags()
const;
60 bool has_latitude()
const;
61 Position& latitude(
const wgs84::Latitude& lat);
62 const wgs84::Latitude& latitude()
const;
64 bool has_longitude()
const;
65 Position& longitude(
const wgs84::Longitude& lon);
66 const wgs84::Longitude& longitude()
const;
68 bool has_altitude()
const;
69 Position& altitude(
const wgs84::Altitude& alt);
70 const wgs84::Altitude& altitude()
const;
73 template<
typename>
friend struct Codec;
78 wgs84::Latitude latitude;
79 wgs84::Longitude longitude;
80 wgs84::Altitude altitude;
84 std::ostream& operator<<(std::ostream& out,
const Position& position);
86 units::Quantity<units::Length> haversine_distance(
const Position& p1,
const Position& p2);
90 #endif // LOCATION_SERVICE_COM_UBUNTU_LOCATION_POSITION_H_