package context.arch.intelligibility.reducers; import java.util.ArrayList; import java.util.List; import context.arch.intelligibility.expression.DNF; /** * A convenience class that takes multiple Reducers and applies them consecutively. * @author Brian Y. Lim * */ public class CompoundReducer extends Reducer { protected List<Reducer> reducers = new ArrayList<Reducer>(); public CompoundReducer() {} public void addReducer(Reducer reducer) { reducers.add(reducer); } /** * Applies reducers iteratively in the order they were added. * @param original * @return */ @Override public DNF apply(DNF original) { DNF reduced = original; for (Reducer reducer : reducers) { reduced = reducer.apply(reduced); } return reduced; } }