From: derek Date: Wed, 27 Oct 2010 16:32:16 +0000 (-0400) Subject: Removed non-standard stl::map method calls X-Git-Url: https://git.donarmstrong.com/?p=bamtools.git;a=commitdiff_plain;h=49b3a8dde8b9cfc107a8a59370bb2557ee202060 Removed non-standard stl::map method calls --- diff --git a/src/api/BamIndex.cpp b/src/api/BamIndex.cpp index e47fd28..5e53a11 100644 --- a/src/api/BamIndex.cpp +++ b/src/api/BamIndex.cpp @@ -1588,7 +1588,7 @@ void BamToolsIndex::BamToolsIndexPrivate::ClearAllData(void) { // clear all index offset data for desired reference void BamToolsIndex::BamToolsIndexPrivate::ClearReferenceOffsets(const int& refId) { if ( m_indexData.find(refId) == m_indexData.end() ) return; - vector& offsets = m_indexData.at(refId).Offsets; + vector& offsets = m_indexData[refId].Offsets; offsets.clear(); m_hasFullDataCache = false; } @@ -1608,8 +1608,9 @@ const off_t BamToolsIndex::BamToolsIndexPrivate::DataBeginOffset(void) const { bool BamToolsIndex::BamToolsIndexPrivate::GetOffset(const BamRegion& region, int64_t& offset, bool* hasAlignmentsInRegion) { // return false if leftBound refID is not found in index data - if ( m_indexData.find(region.LeftRefID) == m_indexData.end()) return false; - + BamToolsIndexData::const_iterator indexIter = m_indexData.find(region.LeftRefID); + if ( indexIter == m_indexData.end()) return false; + // load index data for region if not already cached if ( !IsDataLoaded(region.LeftRefID) ) { bool loadedOk = true; @@ -1619,7 +1620,9 @@ bool BamToolsIndex::BamToolsIndexPrivate::GetOffset(const BamRegion& region, int } // localize index data for this reference (& sanity check that data actually exists) - const vector& referenceOffsets = m_indexData.at(region.LeftRefID).Offsets; + indexIter = m_indexData.find(region.LeftRefID); + if ( indexIter == m_indexData.end()) return false; + const vector& referenceOffsets = (*indexIter).second.Offsets; if ( referenceOffsets.empty() ) return false; // ------------------------------------------------------- @@ -1629,17 +1632,17 @@ bool BamToolsIndex::BamToolsIndexPrivate::GetOffset(const BamRegion& region, int offset = (*referenceOffsets.begin()).StartOffset; // iterate over offsets entries on this reference - vector::const_iterator indexIter = referenceOffsets.begin(); - vector::const_iterator indexEnd = referenceOffsets.end(); - for ( ; indexIter != indexEnd; ++indexIter ) { - const BamToolsIndexEntry& entry = (*indexIter); + vector::const_iterator offsetIter = referenceOffsets.begin(); + vector::const_iterator offsetEnd = referenceOffsets.end(); + for ( ; offsetIter != offsetEnd; ++offsetIter ) { + const BamToolsIndexEntry& entry = (*offsetIter); // break if alignment 'entry' overlaps region if ( entry.MaxEndPosition >= region.LeftPosition ) break; - offset = (*indexIter).StartOffset; + offset = (*offsetIter).StartOffset; } // set flag based on whether an index entry was found for this region - *hasAlignmentsInRegion = ( indexIter != indexEnd ); + *hasAlignmentsInRegion = ( offsetIter != offsetEnd ); // if cache mode set to none, dump the data we just loaded if (m_parent->m_cacheMode == BamIndex::NoIndexCaching ) @@ -1651,8 +1654,10 @@ bool BamToolsIndex::BamToolsIndexPrivate::GetOffset(const BamRegion& region, int // returns whether reference has alignments or no bool BamToolsIndex::BamToolsIndexPrivate::HasAlignments(const int& refId) const { - if ( m_indexData.find(refId) == m_indexData.end()) return false; - const BamToolsReferenceEntry& refEntry = m_indexData.at(refId); + + BamToolsIndexData::const_iterator indexIter = m_indexData.find(refId); + if ( indexIter == m_indexData.end()) return false; + const BamToolsReferenceEntry& refEntry = (*indexIter).second; return refEntry.HasAlignments; } @@ -1664,8 +1669,10 @@ bool BamToolsIndex::BamToolsIndexPrivate::HasFullDataCache(void) const { // returns true if index cache has data for desired reference bool BamToolsIndex::BamToolsIndexPrivate::IsDataLoaded(const int& refId) const { - if ( m_indexData.find(refId) == m_indexData.end() ) return false; // unknown reference - const BamToolsReferenceEntry& refEntry = m_indexData.at(refId); + BamToolsIndexData::const_iterator indexIter = m_indexData.find(refId); + if ( indexIter == m_indexData.end()) return false; + const BamToolsReferenceEntry& refEntry = (*indexIter).second; + if ( !refEntry.HasAlignments ) return true; // no data period // return whether offsets list contains data