package edu.stanford.nlp.sempre.tables.match;
import java.util.*;
import edu.stanford.nlp.sempre.*;
import fig.basic.Pair;
public class FuzzyMatchCache {
Map<Pair<Integer, Integer>, Collection<Formula>> entries = new HashMap<>();
public void put(int startIndex, int endIndex, Collection<Formula> formulas) {
entries.put(new Pair<>(startIndex, endIndex), formulas);
}
public void add(int startIndex, int endIndex, Formula formula) {
Collection<Formula> current = entries.get(new Pair<>(startIndex, endIndex));
if (current == null) entries.put(new Pair<>(startIndex, endIndex), current = new HashSet<>());
current.add(formula);
}
public void addAll(int startIndex, int endIndex, Collection<Formula> formulas) {
Collection<Formula> current = entries.get(new Pair<>(startIndex, endIndex));
if (current == null) entries.put(new Pair<>(startIndex, endIndex), current = new HashSet<>());
current.addAll(formulas);
}
public void clear(int startIndex, int endIndex) {
entries.remove(new Pair<>(startIndex, endIndex));
}
public void removeAll(int startIndex, int endIndex, Collection<Formula> formulas) {
Collection<Formula> current = entries.get(new Pair<>(startIndex, endIndex));
if (current == null) return;
current.removeAll(formulas);
if (current.isEmpty()) entries.remove(new Pair<>(startIndex, endIndex));
}
public Collection<Formula> get(int startIndex, int endIndex) {
Collection<Formula> answer = entries.get(new Pair<>(startIndex, endIndex));
return answer == null ? Collections.emptySet() : answer;
}
}