int Cmp( const Row & r1, const Row & r2, const FieldList & fl ) { if ( r1.Size() <= r2.Size() ) { for ( unsigned int i = 0; i < r1.Size() ; i++ ) { if ( fl.Size() == 0 || fl.Contains( i ) ) { if ( r1.At( i ) < r2.At(i) ) { return -1; } else if ( r1.At( i ) > r2.At(i) ) { return 1; } } } return r1.Size() < r2.Size() ? -1 : 0; } else { for ( unsigned int i = 0; i < r2.Size() ; i++ ) { if ( fl.Size() == 0 || fl.Contains( i ) ) { if ( r1.At( i ) < r2.At(i) ) { return -1; } else if ( r1.At( i ) > r2.At(i) ) { return 1; } } } return 1; } }