001 package ifs.model;
002
003 import java.util.*;
004
005 /**
006 * IFS constraint listener.
007 *
008 * @see Constraint
009 *
010 * @author <a href="mailto:muller@ktiml.mff.cuni.cz">Tomáš Müller</a>
011 * @version 1.0
012 */
013 public interface ConstraintListener {
014 /** Called by the constraint, before a value is assigned to its variable.
015 * @param iteration current iteration
016 * @param constraint source constraint
017 * @param assigned value which will be assigned to its variable ({@link Value#variable()})
018 * @param unassigned set of conflicting values which will be unassigned by the constraint before it assigns the given value
019 */
020 public void constraintBeforeAssigned(long iteration, Constraint constraint, Value assigned, Set unassigned);
021
022 /** Called by the constraint, after a value is assigned to its variable.
023 * @param iteration current iteration
024 * @param constraint source constraint
025 * @param assigned value which was assigned to its variable ({@link Value#variable()})
026 * @param unassigned set of conflicting values which were unassigned by the constraint before it assigned the given value
027 */
028 public void constraintAfterAssigned(long iteration, Constraint constraint, Value assigned, Set unassigned);
029 }