package fr.inria.diversify.transformation.query;
import fr.inria.diversify.diversification.InputProgram;
import fr.inria.diversify.transformation.Transformation;
import fr.inria.diversify.util.Log;
import java.util.*;
/**
* Super class for all transformation queries.
* <p/>
* User: Simon
* Date: 07/11/13
* Time: 18:09
*/
public abstract class TransformationQuery {
protected InputProgram inputProgram;
public TransformationQuery(InputProgram inputProgram) {
this.inputProgram = inputProgram;
}
public abstract Transformation query() throws QueryException;
/**
* Search for at most nb transformations
*
* @param nb
*/
public List<Transformation> query(int nb) throws QueryException {
try {
List<Transformation> result = new ArrayList<>();
for ( int j = 0; j < nb; j++ ) {
result.add(query());
}
return result;
} catch (Exception e) {
throw new QueryException(e);
}
}
public InputProgram getInputProgram() {
return inputProgram;
}
public boolean hasNextTransformation() {
return true;
}
public void currentTransformationEnd() {
}
}