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);
}
}