From d9987c2734bcbbb7f4b03217d839cf1dbd83e8f7 Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Tue, 24 Sep 2013 13:53:38 +0200 Subject: [PATCH] load street names into internal memory --- Server/DataStructures/InternalDataFacade.h | 31 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/Server/DataStructures/InternalDataFacade.h b/Server/DataStructures/InternalDataFacade.h index f8eeac827..b3ce85125 100644 --- a/Server/DataStructures/InternalDataFacade.h +++ b/Server/DataStructures/InternalDataFacade.h @@ -52,10 +52,13 @@ private: QueryGraph * m_query_graph; std::string m_timestamp; - typename ShM::vector m_coordinate_list; - typename ShM::vector m_via_node_list; - typename ShM::vector m_name_ID_list; - typename ShM::vector m_turn_instruction_list; + ShM::vector m_coordinate_list; + ShM::vector m_via_node_list; + ShM::vector m_name_ID_list; + ShM::vector m_turn_instruction_list; + ShM::vector m_names_char_list; + ShM::vector m_name_begin_indices; + StaticRTree * m_static_rtree; @@ -155,6 +158,25 @@ private: ); } + void LoadStreetNames( + const boost::filesystem::path & names_file + ) { + boost::filesystem::ifstream name_stream(names_file, std::ios::binary); + unsigned size = 0; + name_stream.read((char *)&size, sizeof(unsigned)); + BOOST_ASSERT_MSG(0 != size, "name file broken"); + + m_name_begin_indices.resize(size); + name_stream.read((char*)&m_name_begin_indices[0], size*sizeof(unsigned)); + name_stream.read((char *)&size, sizeof(unsigned)); + BOOST_ASSERT_MSG(0 != size, "name file broken"); + + m_names_char_list.resize(size+1); //+1 is sentinel/dummy element + name_stream.read((char *)&m_names_char_list[0], size*sizeof(char)); + BOOST_ASSERT_MSG(0 != m_names_char_list.size(), "could not load any names"); + + name_stream.close(); + } public: ~InternalDataFacade() { delete m_query_graph; @@ -226,6 +248,7 @@ public: LoadNodeAndEdgeInformation(node_data_path, edge_data_path); LoadRTree(ram_index_path, file_index_path); LoadTimestamp(hsgr_path); + LoadStreetNames(name_data_path); } //search graph access