package jetbrains.mps.vcs.diff.merge; /*Generated by MPS */ import java.util.Set; import jetbrains.mps.vcs.diff.changes.ModelChange; import java.util.Map; import org.jetbrains.mps.openapi.model.SNodeId; import jetbrains.mps.smodel.CopyUtil; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; import jetbrains.mps.internal.collections.runtime.MapSequence; import java.util.HashMap; import jetbrains.mps.internal.collections.runtime.IVisitor; import jetbrains.mps.internal.collections.runtime.IMapping; public class MergeSessionState { /*package*/ final MergeTemporaryModel myResultModel; /*package*/ final Set<ModelChange> myResolvedChanges; /*package*/ final Map<SNodeId, SNodeId> myIdReplacementCache; /*package*/ MergeSessionState(MergeTemporaryModel resultModel, Set<ModelChange> resolvedChanges, Map<SNodeId, SNodeId> idReplacementCache) { myResultModel = new MergeTemporaryModel(CopyUtil.copyModel(resultModel.getSModelInternal()), true); myResolvedChanges = SetSequence.fromSetWithValues(new HashSet<ModelChange>(), resolvedChanges); myIdReplacementCache = MapSequence.fromMap(new HashMap<SNodeId, SNodeId>(MapSequence.fromMap(idReplacementCache).count())); MapSequence.fromMap(idReplacementCache).visitAll(new IVisitor<IMapping<SNodeId, SNodeId>>() { public void visit(IMapping<SNodeId, SNodeId> m) { MapSequence.fromMap(myIdReplacementCache).put(m.key(), m.value()); } }); } /*package*/ MergeSessionState(MergeSessionState copy) { this(copy.myResultModel, copy.myResolvedChanges, copy.myIdReplacementCache); } }