package com.smartandroid.sa.tag.select; import com.smartandroid.sa.tag.nodes.Node; /** * 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. */ public interface NodeVisitor { /** * 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. */ public void head(Node 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. */ public void tail(Node node, int depth); }