package jetbrains.mps.idea.core.refactoring;
import jetbrains.mps.smodel.SNodePointer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.model.SModelReference;
import org.jetbrains.mps.openapi.model.SNodeId;
import org.jetbrains.mps.openapi.model.SNodeReference;
/**
* Just a convenient pair of SModelReference and SNodeId
* danilla 3/19/13
*/
public class NodePtr {
@NotNull
private SModelReference myModelRef;
@NotNull
private SNodeId myNodeId;
public NodePtr(@NotNull SModelReference modelRef, @NotNull SNodeId nodeId) {
myModelRef = modelRef;
myNodeId = nodeId;
}
public SModelReference getSModelReference() {
return myModelRef;
}
public SNodeId getNodeId() {
return myNodeId;
}
public boolean equals(Object o) {
if (!(o instanceof NodePtr)) return false;
NodePtr other = (NodePtr) o;
return myModelRef.equals(other.myModelRef) && myNodeId.equals(other.myNodeId);
}
public int hashCode() {
return myModelRef.hashCode() + 31 * myModelRef.hashCode();
}
// SNodeReference may supersede NodePtr completely in the future
// If it has getNodeId
public SNodePointer toSNodeReference() {
return new SNodePointer(myModelRef, myNodeId);
}
}