implement population of shared vector<bool> overload (manually, yikes)
This commit is contained in:
parent
f468fcc2b6
commit
7a6a5f6612
@ -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");
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user