implement population of shared vector<bool> overload (manually, yikes)

This commit is contained in:
Dennis Luxen 2014-04-17 12:13:23 +02:00
parent f468fcc2b6
commit 7a6a5f6612
2 changed files with 16 additions and 2 deletions

View File

@ -82,7 +82,9 @@ public:
SharedMemoryWrapper(DataT * ptr, std::size_t size) : SharedMemoryWrapper(DataT * ptr, std::size_t size) :
m_ptr(ptr), m_ptr(ptr),
m_size(size) m_size(size)
{ } {
SimpleLogger().Write(logDEBUG) << "generated std::vector<DataT> of size " << size;
}
void swap( SharedMemoryWrapper<DataT> & other ) { void swap( SharedMemoryWrapper<DataT> & other ) {
BOOST_ASSERT_MSG(m_size != 0 || other.size() != 0, "size invalid"); BOOST_ASSERT_MSG(m_size != 0 || other.size() != 0, "size invalid");
@ -143,7 +145,9 @@ public:
SharedMemoryWrapper(unsigned * ptr, std::size_t size) : SharedMemoryWrapper(unsigned * ptr, std::size_t size) :
m_ptr(ptr), m_ptr(ptr),
m_size(size) m_size(size)
{ } {
SimpleLogger().Write(logDEBUG) << "generated std::vector<bool> of size " << size;
}
void swap( SharedMemoryWrapper<bool> & other ) { void swap( SharedMemoryWrapper<bool> & other ) {
BOOST_ASSERT_MSG(m_size != 0 || other.size() != 0, "size invalid"); BOOST_ASSERT_MSG(m_size != 0 || other.size() != 0, "size invalid");

View File

@ -192,6 +192,7 @@ int main( const int argc, const char * argv[] ) {
shared_layout_ptr->via_node_list_size = number_of_original_edges; shared_layout_ptr->via_node_list_size = number_of_original_edges;
shared_layout_ptr->name_id_list_size = number_of_original_edges; shared_layout_ptr->name_id_list_size = number_of_original_edges;
shared_layout_ptr->turn_instruction_list_size = number_of_original_edges; shared_layout_ptr->turn_instruction_list_size = number_of_original_edges;
shared_layout_ptr->geometries_compression = number_of_original_edges;
boost::filesystem::ifstream hsgr_input_stream( boost::filesystem::ifstream hsgr_input_stream(
hsgr_path, hsgr_path,
@ -316,6 +317,10 @@ int main( const int argc, const char * argv[] ) {
shared_memory_ptr + shared_layout_ptr->GetTurnInstructionListOffset() shared_memory_ptr + shared_layout_ptr->GetTurnInstructionListOffset()
); );
unsigned * geometries_index_ptr = (unsigned *)(
shared_memory + shared_layout_ptr->GetGeometriesIndicesOffset()
);
OriginalEdgeData current_edge_data; OriginalEdgeData current_edge_data;
for(unsigned i = 0; i < number_of_original_edges; ++i) { for(unsigned i = 0; i < number_of_original_edges; ++i) {
// SimpleLogger().Write() << i << "/" << number_of_edges; // SimpleLogger().Write() << i << "/" << number_of_edges;
@ -326,6 +331,11 @@ int main( const int argc, const char * argv[] ) {
via_node_ptr[i] = current_edge_data.via_node; via_node_ptr[i] = current_edge_data.via_node;
name_id_ptr[i] = current_edge_data.name_id; name_id_ptr[i] = current_edge_data.name_id;
turn_instructions_ptr[i] = current_edge_data.turn_instruction; turn_instructions_ptr[i] = current_edge_data.turn_instruction;
const unsigned bucket = i / 32;
const unsigned offset = i % 32;
geometries_index_ptr[bucket] |= (1 << offset);
} }
edges_input_stream.close(); edges_input_stream.close();