Untitled
unknown
plain_text
3 years ago
2.6 kB
22
Indexable
#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 serializeEditor is loading...