int BattleListCtrl::GetIndexFromData( const DataType& data ) const { static long seekpos; seekpos = LSL::Util::Clamp( seekpos, 0l , (long)m_data.size() ); int index = seekpos; for ( DataCIter f_idx = m_data.begin() + seekpos; f_idx != m_data.end() ; ++f_idx ) { if ( *f_idx != 0 && data->Equals( *(*f_idx) ) ) { seekpos = index; return seekpos; } index++; } //it's ok to init with seekpos, if it had changed this would not be reached int r_index = seekpos - 1; for ( DataRevCIter r_idx = m_data.rbegin() + ( m_data.size() - seekpos ); r_idx != m_data.rend() ; ++r_idx ) { if ( *r_idx != 0 && data->Equals( *(*r_idx) ) ) { seekpos = r_index; return seekpos; } r_index--; } return -1; }
int PlaybackListCtrl<PlaybackType>::GetIndexFromData( const DataType& data ) const { DataCIter it = m_data.begin(); for ( int i = 0; it != m_data.end(); ++it, ++i ) { if ( *it != 0 && data->Equals( *(*it) ) ) return i; } wxLogError( _T("didn't find the battle.") ); return -1; }