// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU Lesser General Public License (LGPL): http://www.gnu.org/licenses/

/*
 * PreWorkHandler.java
 *
 * Created on November 15, 2004, 3:13 AM
 */

package graphtea.library.event.handlers;

import graphtea.library.BaseVertex;

/**
 * Handles prework used by algorithms such as BFS and DFS.
 * Depending on the application, the user can define custom classes that
 * implements PreWorkHandler and pass them to algorithms.
 *
 * @author Omid Aladini
 */
public interface PreWorkHandler<VertexType extends BaseVertex> {
    /**
     * Does prework on a vertex of a graph.
     *
     * @param fromVertex Reference to the vertex we just leaved.
     * @param toVertex   Reference to the vertex which prework will apply on.
     * @return whether the traversal should stop at this point.
     */
    boolean doPreWork(VertexType fromVertex, VertexType toVertex);
}
