org.cpsolver.ifs.assignment.context

## Interface CanInheritContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>

- Type Parameters:
    `V` - Variable
    `T` - Value
    `C` - Assignment Context
  All Known Implementing Classes:
    Config, Course, CourseReservation, CurriculumOverride, CurriculumReservation, DistanceConflict, DummyReservation, GroupReservation, IndividualReservation, Instructor, LearningCommunityReservation, OnlineConfig, OnlineReservation, OnlineSection, OnlineSectioningModel, RequestGroup, Reservation, ReservationOverride, Section, StudentQuality, StudentSectioningModel, Test.TestModel, TimeOverlapsCounter

      public interface CanInheritContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>

  An additional interface that can be implemented by the `HasAssignmentContext` class. The inherited assignment context holder (see `InheritedAssignmentContextHolder`) can than use this interface to inherit an assignment context from the parent assignment context. If a `HasAssignmentContext` class implements this interface, `InheritedAssignment` will use the `inheritAssignmentContext(Assignment, AssignmentContext)` method instead of the `HasAssignmentContext.createAssignmentContext(Assignment)` method to create a new context.
  Version:
    IFS 1.3 (Iterative Forward Search)
    Copyright (C) 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.
  See Also:
    `HasAssignmentContext`, `InheritedAssignment`, `InheritedAssignmentContextHolder`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `C` | `inheritAssignmentContext(Assignment<V,T> assignment, C parentContext)` Create a new assignment context for the given assignment.

- - ### Method Detail

    - #### inheritAssignmentContext

          C inheritAssignmentContext(Assignment<V,T> assignment,
                                     C parentContext)

      Create a new assignment context for the given assignment. This method can be used to clone the parent context if desired.
      Parameters:
        `assignment` - an assignment for which there needs to be an assignment context
        `parentContext` - context of the parent assignment
      Returns:
        a new instance of the assignment context, filled according to the given assignment