Flush stxxl vectors before using in PrepareData

This commit is contained in:
Michael Krasnyk 2016-11-11 00:24:02 +01:00 committed by Patrick Niklaus
parent 045d25041f
commit b57169e221
2 changed files with 14 additions and 0 deletions

View File

@ -32,6 +32,7 @@ class ExtractionContainers
#else #else
const static unsigned stxxl_memory = ((sizeof(std::size_t) == 4) ? INT_MAX : UINT_MAX); const static unsigned stxxl_memory = ((sizeof(std::size_t) == 4) ? INT_MAX : UINT_MAX);
#endif #endif
void FlushVectors();
void PrepareNodes(); void PrepareNodes();
void PrepareRestrictions(); void PrepareRestrictions();
void PrepareEdges(ScriptingEnvironment &scripting_environment); void PrepareEdges(ScriptingEnvironment &scripting_environment);

View File

@ -125,6 +125,17 @@ ExtractionContainers::ExtractionContainers()
name_offsets.push_back(0); name_offsets.push_back(0);
} }
void ExtractionContainers::FlushVectors()
{
used_node_id_list.flush();
all_nodes_list.flush();
all_edges_list.flush();
name_char_data.flush();
name_offsets.flush();
restrictions_list.flush();
way_start_end_id_list.flush();
}
/** /**
* Processes the collected data and serializes it. * Processes the collected data and serializes it.
* At this point nodes are still referenced by their OSM id. * At this point nodes are still referenced by their OSM id.
@ -145,6 +156,8 @@ void ExtractionContainers::PrepareData(ScriptingEnvironment &scripting_environme
const util::FingerPrint fingerprint = util::FingerPrint::GetValid(); const util::FingerPrint fingerprint = util::FingerPrint::GetValid();
file_out_stream.write((char *)&fingerprint, sizeof(util::FingerPrint)); file_out_stream.write((char *)&fingerprint, sizeof(util::FingerPrint));
FlushVectors();
PrepareNodes(); PrepareNodes();
WriteNodes(file_out_stream); WriteNodes(file_out_stream);
PrepareEdges(scripting_environment); PrepareEdges(scripting_environment);