001package daikon.inv.unary;
002
003import daikon.PptSlice;
004import daikon.inv.Invariant;
005import daikon.inv.InvariantStatus;
006import org.checkerframework.checker.interning.qual.Interned;
007import typequals.prototype.qual.Prototype;
008
009/** Exists simply to provide the do-nothing resusurrect_done method and abstract add method. */
010public abstract class UnaryInvariant extends Invariant {
011  static final long serialVersionUID = 20020122L;
012
013  protected UnaryInvariant(PptSlice ppt) {
014    super(ppt);
015  }
016
017  protected @Prototype UnaryInvariant() {
018    super();
019  }
020
021  @Override
022  protected Invariant resurrect_done(int[] permutation) {
023    assert permutation.length == 1;
024    assert permutation[0] == 0;
025    return this;
026  }
027
028  public abstract InvariantStatus add(@Interned Object val, int mod_index, int count);
029
030  public abstract InvariantStatus check(@Interned Object val1, int mod_index, int count);
031}