#pragma once #include #include #include #include #include namespace osmp { class Node; class Way; class Relation; class Object { public: explicit Object(const std::string& file); ~Object(); [[nodiscard]] std::vector> GetNodes() const; [[nodiscard]] size_t GetNodesSize() const; [[nodiscard]] std::shared_ptr GetNode(uint64_t id) const; [[nodiscard]] std::vector> GetWays() const; [[nodiscard]] size_t GetWaysSize() const; [[nodiscard]] std::shared_ptr GetWay(uint64_t id) const; [[nodiscard]] std::vector> GetRelations() const; [[nodiscard]] size_t GetRelationsSize() const; [[nodiscard]] std::shared_ptr GetRelation(uint64_t id) const; public: const std::string version; const std::string generator; Bounds bounds; private: std::map> nodes; std::map> ways; std::map> relations; }; }