Untitled
unknown
plain_text
2 years ago
2.6 kB
6
Indexable
Never
#pragma once #include <filesystem> #include <string> #include <unordered_map> #include "map_renderer.h" #include "transport_catalogue.h" #include "transport_router.h" #include "transport_catalogue.pb.h" namespace serialize { class Serializator final { public: using ProtoTransportCatalogue = transport_catalogue_serialize::TransportCatalogue; using TransportCatalogue = transport_catalogue::TransportCatalogue; struct Settings { std::filesystem::path path; }; Serializator(const Settings &settings) : settings_(settings) {}; void ResetSettings(const Settings &settings); // Добавляет данные транспортного каталога для сериализации void AddTransportCatalogue(const TransportCatalogue &catalogue); // сохраняет данные транспортного каталога в бинарном виде в соответсвии с настройками bool Serialize(); // загружает данные в транспортный каталог из файла в соответствии с настройками bool Deserialize(TransportCatalogue &catalogue); private: void Clear() noexcept; void SaveStops(const TransportCatalogue &catalogue); void LoadStops(TransportCatalogue &catalogue); void SaveRoutes(const TransportCatalogue &catalogue); void LoadRoutes(TransportCatalogue &catalogue); void SaveRouteStops(const domain::Route &route, transport_catalogue_serialize::Route &p_route); void LoadRoute(TransportCatalogue &catalogue, const transport_catalogue_serialize::Route &p_route) const; void SaveDistances(const TransportCatalogue &catalogue); void LoadDistances(TransportCatalogue &catalogue) const; static transport_catalogue_serialize::Coordinates MakeProtoCoordinates(const geo::Coordinates &coordinates); static geo::Coordinates MakeCoordinates(const transport_catalogue_serialize::Coordinates &p_coordinates); static transport_catalogue_serialize::RouteType MakeProtoRouteType(domain::RouteType route_type); static domain::RouteType MakeRouteType(transport_catalogue_serialize::RouteType p_route_type); Settings settings_; ProtoTransportCatalogue proto_catalogue_; std::unordered_map<int, std::string_view> stop_name_by_id_; std::unordered_map<std::string_view, int> stop_id_by_name_; std::unordered_map<int, std::string_view> route_name_by_id_; std::unordered_map<std::string_view, int> route_id_by_name_; }; } // namespace serialize