/** * Copyright 2015 Santhosh Kumar Tekuri * * The JLibs authors license this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package jlibs.xml.sax.dog.path; import jlibs.xml.sax.dog.sniff.Event; /** * The root interface in expression hierarchy. * * @author Santhosh Kumar T */ public abstract class Constraint{ /** * There are few subclasses of Constraint which are sigletons. * These subclasses always use same id across xmldog instances. * The following constants are used for those subclasses respectively. */ public static final int ID_NODE = 0; /** used by {@link jlibs.xml.sax.dog.path.tests.Node} **/ public static final int ID_PARENTNODE = 1; /** used by {@link jlibs.xml.sax.dog.path.tests.ParentNode} **/ public static final int ID_ELEMENT = 2; /** used by {@link jlibs.xml.sax.dog.path.tests.Element} **/ public static final int ID_STAR = 3; /** used by {@link jlibs.xml.sax.dog.path.tests.Star} **/ public static final int ID_TEXT = 4; /** used by {@link jlibs.xml.sax.dog.path.tests.Text} **/ public static final int ID_COMMENT = 5; /** used by {@link jlibs.xml.sax.dog.path.tests.Comment} **/ public static final int ID_PI = 6; /** used by {@link jlibs.xml.sax.dog.path.tests.PI} **/ /** * the ids of constraints which are non-singletons * start from ID_START(inclusive) */ public static final int ID_START = 7; /** * each constraint instance in a xmldog is assigned a unique id by * {@link jlibs.xml.sax.dog.sniff.XPathParser XPathParser}. * this unique id is used as hascode for fast lookup. */ public final int id; protected Constraint(int id){ this.id = id; } public abstract boolean matches(Event event); @Override public final int hashCode(){ return id; } }