private void processNeighbors ( DoubleDBIDListIter neighbor , ModifiableDBIDs currentCluster , ArrayModifiableDBIDs seeds ) { final boolean ismetric = getDistanceFunction ( ) . isMetric ( ) ; for ( ; neighbor . valid ( ) ; neighbor . advance ( ) ) { if ( processedIDs . add ( neighbor ) ) { if ( ! ismetric || neighbor . doubleValue ( ) > 0. ) { seeds . add ( neighbor ) ; } } else if ( ! noise . remove ( neighbor ) ) { continue ; } currentCluster . add ( neighbor ) ; } }
Process a single core point .