55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
#ifndef OSRM_STORAGE_SERIALIZATION_HPP_
|
|
#define OSRM_STORAGE_SERIALIZATION_HPP_
|
|
|
|
#include "contractor/query_edge.hpp"
|
|
#include "extractor/extractor.hpp"
|
|
#include "extractor/original_edge_data.hpp"
|
|
#include "extractor/query_node.hpp"
|
|
#include "storage/io.hpp"
|
|
#include "util/exception.hpp"
|
|
#include "util/fingerprint.hpp"
|
|
#include "util/log.hpp"
|
|
#include "util/static_graph.hpp"
|
|
|
|
#include <boost/filesystem/fstream.hpp>
|
|
#include <boost/iostreams/seek.hpp>
|
|
|
|
#include <cerrno>
|
|
#include <cstring>
|
|
#include <tuple>
|
|
#include <type_traits>
|
|
|
|
namespace osrm
|
|
{
|
|
namespace storage
|
|
{
|
|
namespace serialization
|
|
{
|
|
|
|
// To make function calls consistent, this function returns the fixed number of properties
|
|
inline std::size_t readPropertiesCount() { return 1; }
|
|
|
|
// Loads coordinates and OSM node IDs from .nodes files into memory
|
|
// Needs to be called after readElementCount() to get the correct offset in the stream
|
|
template <typename OSMNodeIDVectorT>
|
|
void readNodes(io::FileReader &nodes_file,
|
|
util::Coordinate *coordinate_list,
|
|
OSMNodeIDVectorT &osmnodeid_list,
|
|
const std::uint64_t number_of_coordinates)
|
|
{
|
|
BOOST_ASSERT(coordinate_list);
|
|
extractor::QueryNode current_node;
|
|
for (std::uint64_t i = 0; i < number_of_coordinates; ++i)
|
|
{
|
|
nodes_file.ReadInto(current_node);
|
|
coordinate_list[i] = util::Coordinate(current_node.lon, current_node.lat);
|
|
osmnodeid_list.push_back(current_node.node_id);
|
|
BOOST_ASSERT(coordinate_list[i].IsValid());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|