
fr.lirmm.boreal.util.evaluator.MultiEvaluator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of integraal-util Show documentation
Show all versions of integraal-util Show documentation
Util objects for integraal
package fr.lirmm.boreal.util.evaluator;
import java.util.Collection;
import java.util.function.BiFunction;
import java.util.function.Function;
import org.slf4j.Logger;
import fr.lirmm.boreal.util.externalHaltingConditions.ExternalAlgorithmHaltingConditions;
public abstract class MultiEvaluator {
protected static Logger LOG;
private final Collection input;
private final Function batchFunction;
private final Function lazyFunction;
private final ExternalAlgorithmHaltingConditions externalHaltingConditions;
private final BiFunction outputIfTimeout;
/**
* @param input
* @param function
* @param externalHaltingConditions
* @param outputIfTimeout
*/
public MultiEvaluator(Collection input, Function function,
ExternalAlgorithmHaltingConditions externalHaltingConditions,
BiFunction outputIfTimeout) {
this.input = input;
this.batchFunction = function;
this.lazyFunction = function;
this.outputIfTimeout = outputIfTimeout;
this.externalHaltingConditions = externalHaltingConditions;
}
/**
* @param input
* @param batchFunction
* @param lazyFunction
* @param externalHaltingConditions
* @param outputIfTimeout
*/
public MultiEvaluator(Collection input, Function batchFunction,
Function lazyFunction, ExternalAlgorithmHaltingConditions externalHaltingConditions,
BiFunction outputIfTimeout) {
this.input = input;
this.batchFunction = batchFunction;
this.lazyFunction = lazyFunction;
this.externalHaltingConditions = externalHaltingConditions;
this.outputIfTimeout = outputIfTimeout;
}
/**
* Evaluates all queries in a batch and returns a list of QueryEvaluationOutput.
*
* @return A list of QueryEvaluationOutput, each containing a query and its
* corresponding iterator of substitutions.
*/
public final Iterable batchEvaluate() {
return new BatchProcessor<>(input, batchFunction, externalHaltingConditions, outputIfTimeout).processBatch();
}
/**
* Provides lazy evaluation for the queries, yielding QueryEvaluationOutput for
* each query.
*
* @return An iterable for lazy evaluation of query results, each as a
* QueryEvaluationOutput.
*/
public final Iterable lazyEvaluate() {
return new LazyIterator<>(input, lazyFunction);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy