Simplify IsAtEnd logic. (I forgot to mention that these iterators have a one time O(log n) cost to construct.)

This commit is contained in:
Steve Checkoway
2006-08-17 18:05:42 +00:00
parent f57bc1ef78
commit 5ccbffebfc
2 changed files with 3 additions and 1 deletions
+2
View File
@@ -917,6 +917,8 @@ void NoteData::_all_tracks_iterator<ND, iter, TN>::Find()
{
int iMinRow = m_iEndRow+1;
// If no notes can be found in the range, m_iTrack will stay -1 and IsAtEnd() will return true.
m_iTrack = -1;
for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack )
{
iter &i = m_vIters[iTrack];
+1 -1
View File
@@ -44,7 +44,7 @@ public:
_all_tracks_iterator operator++( int dummy ); // postincrement
inline int Track() const { return m_iTrack; }
inline int Row() const { return m_vIters[m_iTrack]->first; }
inline bool IsAtEnd() const { return m_vIters[m_iTrack] == m_NoteData.end( m_iTrack ) || Row() > m_iEndRow; }
inline bool IsAtEnd() const { return m_iTrack == -1; }
inline TN &operator*() { DEBUG_ASSERT( !IsAtEnd() ); return m_vIters[m_iTrack]->second; }
inline TN *operator->() { DEBUG_ASSERT( !IsAtEnd() ); return &m_vIters[m_iTrack]->second; }
inline const TN &operator*() const { DEBUG_ASSERT( !IsAtEnd() ); return m_vIters[m_iTrack]->second; }