#ifndef GPS_POSITION_HPP #define GPS_POSITION_HPP // Copyright Matthias Troyer // 2005. Distributed under the Boost Software License, Version // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include class gps_position { private: friend class boost::serialization::access; // When the class Archive corresponds to an output archive, the // & operator is defined similar to <<. Likewise, when the class Archive // is a type of input archive the & operator is defined similar to >>. template void serialize(Archive & ar, const unsigned int version) { ar & degrees & minutes & seconds; } int degrees; int minutes; float seconds; public: gps_position(){}; gps_position(int d, int m, float s) : degrees(d), minutes(m), seconds(s) {} friend std::ostream& operator<<(std::ostream& out, const gps_position& g); friend bool operator==(const gps_position& x, const gps_position& y) { return (x.degrees == y.degrees && x.minutes == y.minutes && x.seconds == y.seconds); } inline friend bool operator!=(const gps_position& x, const gps_position& y) { return !(x == y); } }; inline std::ostream& operator<<(std::ostream& out, const gps_position& g) { out << "gps{" << g.degrees << 'd' << g.minutes << 'm' << g.seconds << "s}"; return out; } namespace boost { namespace mpi { template <> struct is_mpi_datatype : public mpl::and_ < is_mpi_datatype, is_mpi_datatype > {}; } } #endif