RoadSection::SectionContainer RoadSection::getAdjacent(const Ptr& from) const { // create copy SectionContainer ret = m_sections; // remove every element == from ret.erase(std::remove(ret.begin(), ret.end(), from), ret.end()); // remove every nullptr ret.erase(std::remove(ret.begin(), ret.end(), nullptr), ret.end()); return ret; }
void Section::print(ostream *outStream, int tabLevel){ float percent = ( parent == NULL || parent->microsElapsed == 0 ) ? 100.0f : 100.0f * microsElapsed / parent->microsElapsed; string pname= parent==NULL? "": parent->getName(); for(int i=0; i<tabLevel; ++i) *outStream << "\t"; *outStream << name << ": "; if ( microsElapsed ) { *outStream << int(microsElapsed) << " us"; unsigned int milliseconds = microsElapsed / 1000; unsigned int seconds = milliseconds / 1000; unsigned int minutes = seconds / 60; if ( minutes ) { *outStream << " (" << minutes << "min " << seconds % 60 << "sec)"; } else if ( seconds ) { *outStream << " (" << seconds << "sec " << milliseconds % 1000 << "ms)"; } else if ( milliseconds ) { *outStream << " (" << milliseconds << "ms)"; } outStream->precision(1); *outStream << std::fixed << ", " << percent << "%"; } if ( calls ) { *outStream << ", " << calls << " calls"; } *outStream << "\n"; SectionContainer::iterator it; for(it= children.begin(); it!=children.end(); ++it){ it->second->print(outStream, tabLevel+1); } }