package org.basex.data; /** * Single full-text string match. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public final class FTStringMatch implements Comparable<FTStringMatch> { /** Query position. */ public final int q; /** Start position. */ public final int s; /** End position. */ public int e; /** Exclude flag. */ public boolean ex; /** Gaps (non-contiguous) flag. */ public boolean g; /** * Constructor. * @param st start position * @param en end position * @param qp query pos */ FTStringMatch(final int st, final int en, final int qp) { s = st; e = en; q = qp; } /** * Checks if the match is included in the specified match. * @param mtc match to be compared * @return result of check */ boolean in(final FTStringMatch mtc) { return s >= mtc.s && e <= mtc.e; } @Override public boolean equals(final Object o) { if(!(o instanceof FTStringMatch)) return false; final FTStringMatch sm = (FTStringMatch) o; return s == sm.s && e == sm.e; } @Override public int compareTo(final FTStringMatch sm) { final int st = s - sm.s; return st != 0 ? st : e - sm.e; } @Override public int hashCode() { return s * e; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append((ex ? "-" : "+") + '[' + q + ": "); sb.append(s == e ? String.valueOf(s) : s + "-" + e); return sb.append(']').toString(); } }