//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.uima.utils.select; /** * Node visitor interface. Provide an implementing class to {@link NodeTraversor} to iterate through * nodes. * <p> * This interface provides two methods, {@code head} and {@code tail}. The head method is called * when the node is first seen, and the tail method when all of the node's children have been * visited. As an example, head can be used to create a start tag for a node, and tail to create the * end tag. * </p> */ public interface NodeVisitor<T> { /** * Callback for when a node is first visited. * * @param node the node being visited. * @param depth the depth of the node, relative to the root node. E.g., the root node has depth 0, * and a child node of that will have depth 1. */ default void head(Node<T> node, int depth) {} /** * Callback for when a node is last visited, after all of its descendants have been visited. * * @param node the node being visited. * @param depth the depth of the node, relative to the root node. E.g., the root node has depth 0, * and a child node of that will have depth 1. */ default void tail(Node<T> node, int depth) {} }