001package org.clafer.ast; 002 003import org.clafer.common.Check; 004 005/** 006 * 007 * @author jimmy 008 */ 009public class AstDifference implements AstSetExpr { 010 011 private final AstSetExpr left, right; 012 013 public AstDifference(AstSetExpr left, AstSetExpr right) { 014 this.left = Check.notNull(left); 015 this.right = Check.notNull(right); 016 } 017 018 public AstSetExpr getLeft() { 019 return left; 020 } 021 022 public AstSetExpr getRight() { 023 return right; 024 } 025 026 @Override 027 public <A, B> B accept(AstExprVisitor<A, B> visitor, A a) { 028 return visitor.visit(this, a); 029 } 030 031 @Override 032 public boolean equals(Object obj) { 033 if (obj instanceof AstDifference) { 034 AstDifference other = (AstDifference) obj; 035 return left.equals(other.left) && right.equals(other.right); 036 } 037 return false; 038 } 039 040 @Override 041 public int hashCode() { 042 return left.hashCode() ^ right.hashCode(); 043 } 044 045 @Override 046 public String toString() { 047 return "(" + left + ") -- (" + right + ")"; 048 } 049}