diff --git a/Contractor/ContractionCleanup.h b/Contractor/ContractionCleanup.h index c9aa6775f..c198dee92 100644 --- a/Contractor/ContractionCleanup.h +++ b/Contractor/ContractionCleanup.h @@ -107,10 +107,7 @@ public: } void Run() { - double time = _Timestamp(); RemoveUselessShortcuts(); - time = _Timestamp() - time; - cout << "Postprocessing Time: " << time << " s" << endl; } template< class EdgeT > diff --git a/Contractor/Contractor.h b/Contractor/Contractor.h index bfc6ca1ce..250a922b0 100644 --- a/Contractor/Contractor.h +++ b/Contractor/Contractor.h @@ -274,7 +274,7 @@ public: } template< class InputEdge > - void checkForAllOrigEdges(std::vector< InputEdge >& inputEdges) + void CheckForAllOrigEdges(std::vector< InputEdge >& inputEdges) { for(unsigned int i = 0; i < inputEdges.size(); i++) { @@ -295,6 +295,29 @@ public: } } + template< class InputEdge > + void ComputeTurnInfoVector(std::vector< InputEdge >& inputEdges, std::vector * forwardTurnInfo, std::vector * backwardTurnInfo) + { + forwardTurnInfo->resize(inputEdges.size(), false); + backwardTurnInfo->resize(inputEdges.size(), false); + for(unsigned n = 0; n < inputEdges.size(); n++) { + if(inputEdges[n].data.forward) + { + NodeID target = inputEdges[n].target; + if(_graph->BeginEdges(target)+1 < _graph->EndEdges(target)) { + forwardTurnInfo->at(n) = true; + } + } + if(inputEdges[n].data.backward) + { + NodeID source = inputEdges[n].source; + if(_graph->BeginEdges(source)+1 < _graph->EndEdges(source)) { + backwardTurnInfo->at(n) = true; + } + } + } + } + void Run() { const NodeID numberOfNodes = _graph->GetNumberOfNodes(); _LogData log; @@ -480,7 +503,6 @@ public: } private: - double _Timestamp() { return time(NULL); } diff --git a/createHierarchy.cpp b/createHierarchy.cpp index ec24d5738..898a6d100 100644 --- a/createHierarchy.cpp +++ b/createHierarchy.cpp @@ -132,7 +132,7 @@ int main (int argc, char *argv[]) contractor->Run(); cout << "checking data sanity ..." << flush; - contractor->checkForAllOrigEdges(edgeList); + contractor->CheckForAllOrigEdges(edgeList); cout << "ok" << endl; std::vector< ContractionCleanup::Edge > contractedEdges; contractor->GetEdges( contractedEdges ); @@ -143,6 +143,14 @@ int main (int argc, char *argv[]) std::vector< GridEdge> cleanedEdgeList; cleanup->GetData(cleanedEdgeList); + cout << "computing turn vector info ..." << flush; + vector * forwardTurnInfo = new vector(); + vector * backwardTurnInfo = new vector(); + contractor->ComputeTurnInfoVector(cleanedEdgeList, forwardTurnInfo, backwardTurnInfo); + assert(backwardTurnInfo->size() == forwardTurnInfo->size()); + //todo: serialize info somewhere + cout << "ok" << endl; + ofstream edgeOutFile(edgeOut, ios::binary); //Serializing the edge list. @@ -182,5 +190,7 @@ int main (int argc, char *argv[]) delete cleanup; delete contractor; + delete forwardTurnInfo; + delete backwardTurnInfo; cout << "finished" << endl; }