package org.basex.query.path;
import org.basex.query.QueryContext;
import org.basex.query.item.ANode;
import org.basex.query.item.NodeType;
import org.basex.query.item.QNm;
import org.basex.query.item.Type;
/**
* Kind test.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public final class KindTest extends Test {
/** Type name. */
public final Type extype;
/**
* Constructor.
* @param t node type
*/
KindTest(final NodeType t) {
this(t, null, null);
}
/**
* Constructor.
* @param t node type
* @param ext type extension
* @param et type name extension
*/
public KindTest(final NodeType t, final QNm ext, final Type et) {
type = t;
name = ext;
extype = et;
}
@Override
public boolean comp(final QueryContext ctx) {
return extype == null || type == extype;
}
@Override
public boolean eval(final ANode node) {
return node.type == type && (name == null || node.update(tmpq).eq(name));
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder(type.toString());
// ...
return sb.toString();
}
}