~ci-train-bot/location-service/location-service-ubuntu-yakkety-1895

« back to all changes in this revision

Viewing changes to include/location_service/com/ubuntu/location/position.h

  • Committer: Thomas Voß
  • Date: 2013-05-28 14:20:45 UTC
  • Revision ID: thomas.voss@canonical.com-20130528142045-kq5umqdmm4o53vwk
Initial push.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef LOCATION_SERVICE_COM_UBUNTU_LOCATION_POSITION_H_
 
2
#define LOCATION_SERVICE_COM_UBUNTU_LOCATION_POSITION_H_
 
3
 
 
4
#include "com/ubuntu/location/wgs84/altitude.h"
 
5
#include "com/ubuntu/location/wgs84/latitude.h"
 
6
#include "com/ubuntu/location/wgs84/longitude.h"
 
7
 
 
8
#include <bitset>
 
9
#include <ostream>
 
10
 
 
11
namespace com
 
12
{
 
13
namespace ubuntu
 
14
{
 
15
namespace location
 
16
{
 
17
class Position
 
18
{
 
19
  public:
 
20
    enum Flag
 
21
    {
 
22
        latitude_flag = 0,
 
23
        longitude_flag = 1,
 
24
        altitude_flag = 2
 
25
    };
 
26
 
 
27
    typedef std::bitset<3> Flags;
 
28
 
 
29
    Position();    
 
30
    Position(
 
31
        const wgs84::Latitude& latitude,
 
32
        const wgs84::Longitude& longitude);
 
33
    Position(
 
34
        const wgs84::Latitude& latitude,
 
35
        const wgs84::Longitude& longitude,
 
36
        const wgs84::Altitude& altitude);
 
37
 
 
38
    bool operator==(const Position& rhs) const;
 
39
    bool operator!=(const Position& rhs) const;
 
40
 
 
41
    const Flags& flags() const;
 
42
 
 
43
    bool has_latitude() const;
 
44
    Position& latitude(const wgs84::Latitude& lat);
 
45
    const wgs84::Latitude& latitude() const;
 
46
 
 
47
    bool has_longitude() const;
 
48
    Position& longitude(const wgs84::Longitude& lon);
 
49
    const wgs84::Longitude& longitude() const;
 
50
 
 
51
    bool has_altitude() const;
 
52
    Position& altitude(const wgs84::Altitude& alt);
 
53
    const wgs84::Altitude& altitude() const;
 
54
 
 
55
  private:
 
56
    template<typename> friend struct Codec;
 
57
    
 
58
    struct
 
59
    {
 
60
        Flags flags;
 
61
        wgs84::Latitude latitude;
 
62
        wgs84::Longitude longitude;
 
63
        wgs84::Altitude altitude;
 
64
    } fields;
 
65
};
 
66
 
 
67
std::ostream& operator<<(std::ostream& out, const Position& position);
 
68
 
 
69
units::Quantity<units::Length> haversine_distance(const Position& p1, const Position& p2);
 
70
}
 
71
}
 
72
}
 
73
#endif // LOCATION_SERVICE_COM_UBUNTU_LOCATION_POSITION_H_