org.cpsolver.ifs.model

## Interface ConstraintListener<V extends Variable<V,T>,T extends Value<V,T>>

- Type Parameters:
    `V` - Variable
    `T` - Value
  All Known Implementing Classes:
    ConflictStatistics, StudentConflictStatistics

      public interface ConstraintListener<V extends Variable<V,T>,T extends Value<V,T>>

  IFS constraint listener.
  Version:
    IFS 1.3 (Iterative Forward Search)
    Copyright (C) 2006 - 2014 Tomáš Müller
    muller@unitime.org
    http://muller.unitime.org
    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    You should have received a copy of the GNU Lesser General Public License along with this library; if not see http://www.gnu.org/licenses/.
  Author:
    Tomáš Müller
  See Also:
    `Constraint`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `constraintAfterAssigned(Assignment<V,T> assignment, long iteration, Constraint<V,T> constraint, T assigned, Set<T> unassigned)` Called by the constraint, after a value is assigned to its variable.
    `void` | `constraintBeforeAssigned(Assignment<V,T> assignment, long iteration, Constraint<V,T> constraint, T assigned, Set<T> unassigned)` Called by the constraint, before a value is assigned to its variable.

- - ### Method Detail

    - #### constraintBeforeAssigned

          void constraintBeforeAssigned(Assignment<V,T> assignment,
                                        long iteration,
                                        Constraint<V,T> constraint,
                                        T assigned,
                                        Set<T> unassigned)

      Called by the constraint, before a value is assigned to its variable.
      Parameters:
        `assignment` - current assignment
        `iteration` - current iteration
        `constraint` - source constraint
        `assigned` - value which will be assigned to its variable ( `Value.variable()`)
        `unassigned` - set of conflicting values which will be unassigned by the constraint before it assigns the given value

    - #### constraintAfterAssigned

          void constraintAfterAssigned(Assignment<V,T> assignment,
                                       long iteration,
                                       Constraint<V,T> constraint,
                                       T assigned,
                                       Set<T> unassigned)

      Called by the constraint, after a value is assigned to its variable.
      Parameters:
        `assignment` - current assignment
        `iteration` - current iteration
        `constraint` - source constraint
        `assigned` - value which was assigned to its variable ( `Value.variable()`)
        `unassigned` - set of conflicting values which were unassigned by the constraint before it assigned the given value