graph-tools-php
28 строк · 852.0 Байт
1<?php
2
3namespace Smoren\GraphTools\Traverse\Interfaces;
4
5use Generator;
6use Smoren\GraphTools\Filters\Interfaces\TraverseFilterInterface;
7use Smoren\GraphTools\Models\Interfaces\VertexInterface;
8use Smoren\GraphTools\Structs\Interfaces\TraverseContextInterface;
9
10/**
11* Interface for graph traversing
12* @author Smoren <ofigate@gmail.com>
13*/
14interface TraverseInterface
15{
16/**
17* Generator to iterate graph vertexes as edge|null => vertex (null for start vertex)
18* @param VertexInterface $start start vertex
19* @param TraverseFilterInterface $filter traverse filter
20* @param int $traverseMode traverse mode (wide or deep)
21* @return Generator<TraverseContextInterface>
22*/
23public function generate(
24VertexInterface $start,
25TraverseFilterInterface $filter,
26int $traverseMode
27): Generator;
28}
29