int caseDepth = Math.max(state.getDepth(d), caseStartLevel - 1); int caseNextLevel = Math.min(state.nextLevel[nextR], caseDepth + 1); Case currentCase = new Case(caseStartLevel, caseDepth, caseNextLevel, getNextReader(state.id, nextR), d == state.maxDefinitionLevel); Map<Case, Case> cases = currentCase.isDefined() ? definedCases : undefinedCases; if (!cases.containsKey(currentCase)) { currentCase.setID(cases.size()); cases.put(currentCase, currentCase); } else {
int caseDepth = Math.max(state.getDepth(d), caseStartLevel - 1); int caseNextLevel = Math.min(state.nextLevel[nextR], caseDepth + 1); Case currentCase = new Case(caseStartLevel, caseDepth, caseNextLevel, getNextReader(state.id, nextR), d == state.maxDefinitionLevel); Map<Case, Case> cases = currentCase.isDefined() ? definedCases : undefinedCases; if (!cases.containsKey(currentCase)) { currentCase.setID(cases.size()); cases.put(currentCase, currentCase); } else {
final protected int getCaseId(int state, int currentLevel, int d, int nextR) { return caseLookup[state].getCase(currentLevel, d, nextR).getID(); }
final protected int getCaseId(int state, int currentLevel, int d, int nextR) { return caseLookup[state].getCase(currentLevel, d, nextR).getID(); }
@Override public String toString() { return "Case " + startLevel + " -> " + depth + " -> " + nextLevel + "; goto sate_"+getNextState(); }
@Override public String toString() { return "Case " + startLevel + " -> " + depth + " -> " + nextLevel + "; goto sate_"+getNextState(); }
@Override public boolean equals(Object obj) { if (obj instanceof Case) { return equals((Case)obj); } return false; };
@Override public boolean equals(Object obj) { if (obj instanceof Case) { return equals((Case)obj); } return false; };