const LIB_TABLE_ROW* LIB_TABLE::FindRowByURI( const wxString& aURI ) { LIB_TABLE* cur = this; do { cur->ensureIndex(); for( unsigned i = 0; i < cur->rows.size(); i++ ) { wxString tmp = cur->rows[i].GetFullURI( true ); if( tmp.Find( "://" ) != wxNOT_FOUND ) { if( tmp == aURI ) return &cur->rows[i]; // found as URI } else { wxFileName fn = aURI; // This will also test if the file is a symlink so if we are comparing // a symlink to the same real file, the comparison will be true. See // wxFileName::SameAs() in the wxWidgets source. if( fn == wxFileName( tmp ) ) return &cur->rows[i]; // found as full path and file name } } // not found, search fall back table(s), if any } while( ( cur = cur->fallBack ) != 0 ); return NULL; // not found }
const LIB_TABLE_ROW* LIB_TABLE::FindRowByURI( const wxString& aURI ) { LIB_TABLE* cur = this; do { cur->ensureIndex(); for( unsigned i = 0; i < cur->rows.size(); i++ ) { wxString uri = cur->rows[i].GetFullURI( true ); if( wxFileName::GetPathSeparator() == wxChar( '\\' ) && uri.Find( wxChar( '/' ) ) >= 0 ) uri.Replace( "/", "\\" ); if( (wxFileName::IsCaseSensitive() && uri == aURI) || (!wxFileName::IsCaseSensitive() && uri.Upper() == aURI.Upper() ) ) { return &cur->rows[i]; // found } } // not found, search fall back table(s), if any } while( ( cur = cur->fallBack ) != 0 ); return NULL; // not found }
LIB_TABLE_ROW* LIB_TABLE::findRow( const wxString& aNickName ) { LIB_TABLE* cur = (LIB_TABLE*) this; do { cur->ensureIndex(); INDEX_ITER it = cur->nickIndex.find( aNickName ); if( it != cur->nickIndex.end() ) { return &cur->rows[it->second]; // found } // not found, search fall back table(s), if any } while( ( cur = cur->fallBack ) != 0 ); return NULL; // not found }