![JAR search and dependency download from the Maven repository](/logo.png)
org.github.evenjn.align.alphabet.TupleAlignmentAlphabetBuilderAscendantWrapper Maven / Gradle / Ivy
package org.github.evenjn.align.alphabet;
import java.util.function.Consumer;
import java.util.function.Function;
import org.github.evenjn.align.Tael;
import org.github.evenjn.knit.KnittingTuple;
import org.github.evenjn.yarn.Bi;
import org.github.evenjn.yarn.Cursable;
import org.github.evenjn.yarn.Hook;
import org.github.evenjn.yarn.ProgressSpawner;
import org.github.evenjn.yarn.Tuple;
public class TupleAlignmentAlphabetBuilderAscendantWrapper implements TupleAlignmentAlphabetBuilder{
private TupleAlignmentAlphabetBuilder wrapped;
private Function, Iterable>> ascendants_provider;
private TupleAlignmentAlphabetBuilderAscendantWrapper(
TupleAlignmentAlphabetBuilder wrapped,
Function, Iterable>> ascendants_provider) {
this.wrapped = wrapped;
this.ascendants_provider = ascendants_provider;
}
public static
TupleAlignmentAlphabetBuilder
wrap( TupleAlignmentAlphabetBuilder builder,
Function, Iterable>> demux ) {
return new TupleAlignmentAlphabetBuilderAscendantWrapper(
builder, demux );
}
@Override
public TupleAlignmentAlphabet build(
Cursable, Tuple>> data,
ProgressSpawner progress_spawner ) {
TupleAlignmentAlphabet build = wrapped.build( data, progress_spawner );
TupleAlignmentAlphabet result = new TupleAlignmentAlphabet<>( );
for (int z = 0; z < build.size( ); z++) {
Tael pp =
build.get( z );
Iterable> ascendants = ascendants_provider.apply( pp.above );
for (Tuple ascendant : ascendants) {
Tael nu =
new Tael<>( );
nu.above = KnittingTuple.wrap( ascendant );
nu.below = pp.below;
}
}
return result;
}
@Override
public void setPrinters( Function> logger,
Function a_printer,
Function b_printer ) {
wrapped.setPrinters( logger, a_printer, b_printer );
}
@Override
public void setMinMax( int min_above, int max_above, int min_below,
int max_below ) {
wrapped.setMinMax( min_above, max_above, min_below, max_below );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy