// -------------------------------------------------------------------------- // --- constructors --------------------------------------------------------- // -------------------------------------------------------------------------- public DfaEdge(S src, Symbol symbol, S dest, LR0Item srcItem) { this.src = src; this.symbol = symbol; this.dst = dest; this.srcItem = srcItem; // Identity by src x symbol int srcHash = src == null ? 0 : src.hashCode(); int symbolHash = symbol == null ? 0 : symbol.hashCode(); this.hashCode = srcHash * 100 + symbolHash; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; DfaEdge<?> other = (DfaEdge<?>) obj; if (src == null) { if (other.src != null) return false; } else if (!src.equals(other.src)) return false; if (symbol == null) { if (other.symbol != null) return false; } else if (!symbol.equals(other.symbol)) return false; return true; }