#ifndef GERMANAIRLINESVA_FILE_SIMDATABASE_H #define GERMANAIRLINESVA_FILE_SIMDATABASE_H #include #include #include #include #include #include "geodata.hpp" #include "helpers.hpp" #include "simdata/gate.h" #include "simdata/runway.h" namespace germanairlinesva { namespace file { namespace simdata { class SimDatabase { private: std::map, std::vector>> airports; public: void toFile(std::ofstream &out) const; const Gate *checkGate( const std::string icao, const struct germanairlinesva::geodata::point coordinates) const; inline std::size_t numAirports() const { return this->airports.size(); } inline const std::pair, std::vector> & getAirport(std::string icao) const { return this->airports.at(icao); } inline void addAirport(std::string icao, std::vector &gates, std::vector &runways) { this->airports[icao] = std::make_pair(gates, runways); } template inline void addGate(std::string icao, Args &&...args) { this->airports[icao].first.emplace_back(std::forward(args)...); } template inline void addRunway(std::string icao, Args &&...args) { this->airports[icao].second.emplace_back(std::forward(args)...); } }; } // namespace simdata } // namespace file } // namespace germanairlinesva #endif