// Description: A function for executing graph-traversal algorithm-objects.
// Documentation: graph_traversal.txt
#ifndef PASTELSYS_GENERIC_TRAVERSAL_H
#define PASTELSYS_GENERIC_TRAVERSAL_H
#include "pastel/sys/graph/graph_traversal_concepts.h"
namespace Pastel
{
    template <
        typename Vertex,
        typename ForEachSeedVertex,
        typename ForEachAdjacent,
        typename Mark,
        typename Marked,
        typename GraphTraversal_Algorithm>
    void traverseGraph(
        const ForEachSeedVertex& forEachSeedVertex,
        const ForEachAdjacent& forEachAdjacent,
        const Mark& mark,
        const Marked& marked,
        const GraphTraversal_Algorithm& algorithm)
    {
        algorithm.template work<Vertex>(
            forEachSeedVertex,
            forEachAdjacent,
            mark,
            marked);
    }
}
#endif