001package org.cpsolver.ifs.assignment; 002 003import java.util.Arrays; 004 005import org.cpsolver.ifs.assignment.context.InheritedAssignmentContextHolder; 006import org.cpsolver.ifs.model.Value; 007import org.cpsolver.ifs.model.Variable; 008import org.cpsolver.ifs.solution.Solution; 009 010public class InheritedAssignmentArray<V extends Variable<V, T>, T extends Value<V, T>> extends AssignmentArray<V, T> implements InheritedAssignment<V, T> { 011 private Assignment<V, T> iParent; 012 private long iVersion = -1; 013 private int iIndex = -1; 014 015 public InheritedAssignmentArray(Solution<V, T> parent, int index) { 016 super(new InheritedAssignmentContextHolder<V, T>(index, parent.getIteration())); 017 iIndex = index; 018 iAssignments = Arrays.copyOf(((AssignmentArray<V, T>)parent.getAssignment()).iAssignments, parent.getModel().variables().size()); 019 iIteration = Arrays.copyOf(((AssignmentArray<V, T>)parent.getAssignment()).iIteration, parent.getModel().variables().size()); 020 } 021 022 @Override 023 public int getIndex() { 024 return iIndex; 025 } 026 027 @Override 028 public Assignment<V, T> getParentAssignment() { 029 return iParent; 030 } 031 032 @Override 033 public long getVersion() { 034 return iVersion; 035 } 036}