#ifndef GERMANAIRLINESVA_FILE_RECORDINGENTRY_H #define GERMANAIRLINESVA_FILE_RECORDINGENTRY_H #include #include #include #include "geodata.hpp" #include "helpers.hpp" namespace germanairlinesva { namespace file { namespace recording { /* * Path Segment (24) * UINT32 | UINT16 | UINT16 | POINT * -------+----------+-------------+------------ * TIME | ALTITUDE | GROUNDSPEED | COORDINATES */ class RecordingEntry { private: std::uint32_t time; std::uint16_t altitude = 0; std::uint16_t groundSpeed = 0; struct geodata::point coordinates = {NAN, NAN}; public: inline RecordingEntry() = default; inline RecordingEntry(std::uint32_t time, std::uint16_t altitude, std::uint16_t groundSpeed, struct geodata::point coordinates) : time(time), altitude(altitude), groundSpeed(groundSpeed), coordinates(coordinates) { } inline void toFile(std::ofstream &out) const { writetime)>(out, this->time); writealtitude)>(out, this->altitude); writegroundSpeed)>(out, this->groundSpeed); writecoordinates)>(out, this->coordinates); } friend inline bool operator==(const RecordingEntry &lhs, const RecordingEntry &rhs) { return lhs.altitude == rhs.altitude && lhs.groundSpeed == rhs.groundSpeed && lhs.coordinates.latitude == rhs.coordinates.latitude && lhs.coordinates.longitude == rhs.coordinates.longitude; } friend inline bool operator!=(const RecordingEntry &lhs, const RecordingEntry &rhs) { return !(lhs == rhs); } }; } // namespace recording } // namespace file } // namespace germanairlinesva #endif