static ClosedMatcher optimize(ClosedMatcher closedMatcher, Stack<Rule> ruleStack) { if (closedMatcher instanceof AnyMatcher) { return closedMatcher; } for (int i = 0, n = ruleStack.size(); i < n; ++i) { if (ruleStack.get(i).closedMatcher.isCoveredBy(closedMatcher)) { return AnyMatcher.INSTANCE; } else if (!closedMatcher.isCoveredBy(ruleStack.get(i).closedMatcher)) { LOGGER.warning("unreachable rule (closed)"); } } return closedMatcher; }
@Override public boolean isCoveredBy(ClosedMatcher closedMatcher) { return closedMatcher.matches(Closed.NO); }
@Override public boolean isCoveredBy(ClosedMatcher closedMatcher) { return closedMatcher.matches(Closed.YES); }
static ClosedMatcher optimize(ClosedMatcher closedMatcher, Stack<Rule> ruleStack) { if (closedMatcher instanceof AnyMatcher) { return closedMatcher; } for (int i = 0, n = ruleStack.size(); i < n; ++i) { if (ruleStack.get(i).closedMatcher.isCoveredBy(closedMatcher)) { return AnyMatcher.INSTANCE; } else if (!closedMatcher.isCoveredBy(ruleStack.get(i).closedMatcher)) { LOGGER.warning("unreachable rule (closed)"); } } return closedMatcher; }
@Override boolean matchesWay(List<Tag> tags, byte zoomLevel, Closed closed) { return this.zoomMin <= zoomLevel && this.zoomMax >= zoomLevel && this.elementMatcher.matches(Element.WAY) && this.closedMatcher.matches(closed) && this.attributeMatcher.matches(tags); } }
@Override boolean matchesWay(List<Tag> tags, byte zoomLevel, Closed closed) { return this.zoomMin <= zoomLevel && this.zoomMax >= zoomLevel && this.elementMatcher.matches(Element.WAY) && this.closedMatcher.matches(closed) && this.keyMatcher.matches(tags) && this.valueMatcher.matches(tags); } }
@Override public boolean isCoveredBy(ClosedMatcher closedMatcher) { return closedMatcher.matches(Closed.YES); }
@Override public boolean isCoveredBy(ClosedMatcher closedMatcher) { return closedMatcher.matches(Closed.NO); }
@Override boolean matchesWay(List<Tag> tags, byte zoomLevel, Closed closed) { return this.zoomMin <= zoomLevel && this.zoomMax >= zoomLevel && this.elementMatcher.matches(Element.WAY) && this.closedMatcher.matches(closed) && this.attributeMatcher.matches(tags); } }
@Override boolean matchesWay(List<Tag> tags, byte zoomLevel, Closed closed) { return this.zoomMin <= zoomLevel && this.zoomMax >= zoomLevel && this.elementMatcher.matches(Element.WAY) && this.closedMatcher.matches(closed) && this.keyMatcher.matches(tags) && this.valueMatcher.matches(tags); } }