package jetbrains.mps.ide.depanalyzer; /*Generated by MPS */ import java.util.List; import java.util.Set; import jetbrains.mps.ide.depanalyzer.DependencyUtil.Dependency; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; public class DepPath { private final List<DepLink> myPath; private final Set<Dependency> mySeen; public DepPath() { myPath = ListSequence.fromList(new ArrayList<DepLink>()); mySeen = SetSequence.fromSet(new HashSet<Dependency>()); } public DepPath(DepPath toCopy) { myPath = ListSequence.fromListWithValues(new ArrayList<DepLink>(), toCopy.myPath); mySeen = SetSequence.fromSetWithValues(new HashSet<Dependency>(), toCopy.mySeen); } public void push(DepLink depLink) { SetSequence.fromSet(mySeen).addElement(depLink.getRoleModuleKey()); ListSequence.fromList(myPath).addElement(depLink); } public void pop() { DepLink last = ListSequence.fromList(myPath).removeLastElement(); SetSequence.fromSet(mySeen).removeElement(last.getRoleModuleKey()); } public boolean seen(DepLink depLink) { return SetSequence.fromSet(mySeen).contains(depLink.getRoleModuleKey()); } public DepLink peek() { return ListSequence.fromList(myPath).last(); } public Iterable<DepLink> elements() { return myPath; } @Override public String toString() { return String.valueOf(myPath); } @Override public boolean equals(Object o) { if (!(o instanceof DepPath)) { return false; } DepPath p = (DepPath) o; List l1 = myPath; List l2 = p.myPath; return l1.equals(l2); } @Override public int hashCode() { List l = myPath; return l.hashCode(); } }