package sk.stuba.fiit.perconik.core.java.dom;
import org.eclipse.jdt.core.dom.ASTNode;
import static sk.stuba.fiit.perconik.core.java.dom.NodeCollectors.ofType;
import static sk.stuba.fiit.perconik.eclipse.jdt.core.dom.NodeType.QUALIFIED_NAME;
import static sk.stuba.fiit.perconik.eclipse.jdt.core.dom.NodeType.SIMPLE_NAME;
public final class NodeTokenizers {
private static final NodeTokenizer<ASTNode> qualifiedNames = NodeTokenizer.using(ofType(QUALIFIED_NAME));
private static final NodeTokenizer<ASTNode> simpleNames = NodeTokenizer.using(ofType(SIMPLE_NAME));
private NodeTokenizers() {}
private static <N extends ASTNode> NodeTokenizer<N> cast(final NodeTokenizer<?> tokenizer) {
// only for stateless internal singletons shared across all types
@SuppressWarnings("unchecked")
NodeTokenizer<N> result = (NodeTokenizer<N>) tokenizer;
return result;
}
public static <N extends ASTNode> NodeTokenizer<N> qualifiedNames() {
return cast(qualifiedNames);
}
public static <N extends ASTNode> NodeTokenizer<N> simpleNames() {
return cast(simpleNames);
}
}