33
44namespace Danon \IntervalTree ;
55
6+ use Danon \IntervalTree \Interval \IntervalInterface ;
67use Iterator ;
78
89final class IntervalTree
@@ -43,10 +44,10 @@ public function isEmpty(): bool
4344
4445 /**
4546 * Find nodes which intervals intersect with given interval
46- * @param Interval $interval
47+ * @param IntervalInterface $interval
4748 * @return Iterator<Node>
4849 */
49- public function findIntersections (Interval $ interval ): Iterator
50+ public function findIntersections (IntervalInterface $ interval ): Iterator
5051 {
5152 $ searchNode = Node::withPair (new Pair ($ interval ));
5253 foreach ($ this ->treeSearchInterval ($ searchNode ) as $ node ) {
@@ -57,10 +58,10 @@ public function findIntersections(Interval $interval): Iterator
5758 /**
5859 * Check that interval has intersections
5960 *
60- * @param Interval $interval
61+ * @param IntervalInterface $interval
6162 * @return bool
6263 */
63- public function hasIntersection (Interval $ interval ): bool
64+ public function hasIntersection (IntervalInterface $ interval ): bool
6465 {
6566 $ nodes = $ this ->findIntersections ($ interval );
6667 return $ nodes ->current () !== null ;
@@ -69,10 +70,10 @@ public function hasIntersection(Interval $interval): bool
6970 /**
7071 * Count intervals that has intersections
7172 *
72- * @param Interval $interval
73+ * @param IntervalInterface $interval
7374 * @return int
7475 */
75- public function countIntersections (Interval $ interval ): int
76+ public function countIntersections (IntervalInterface $ interval ): int
7677 {
7778 $ nodes = $ this ->findIntersections ($ interval );
7879 return iterator_count ($ nodes );
@@ -81,11 +82,11 @@ public function countIntersections(Interval $interval): int
8182 /**
8283 * Insert new pair (interval + value) into interval tree
8384 *
84- * @param Interval $interval
85+ * @param IntervalInterface $interval
8586 * @param mixed $value
8687 * @return Node
8788 */
88- public function insert (Interval $ interval , $ value = null ): Node
89+ public function insert (IntervalInterface $ interval , $ value = null ): Node
8990 {
9091 $ insertNode = Node::withPair (new Pair ($ interval , $ value ));
9192 $ insertNode ->setLeft ($ this ->nilNode );
@@ -101,22 +102,22 @@ public function insert(Interval $interval, $value = null): Node
101102
102103 /**
103104 * Returns true if interval and value exist in the tree
104- * @param Interval $interval
105+ * @param IntervalInterface $interval
105106 * @param mixed $value
106107 * @return bool
107108 */
108- public function exist (Interval $ interval , $ value ): bool
109+ public function exist (IntervalInterface $ interval , $ value ): bool
109110 {
110111 $ searchNode = Node::withPair (new Pair ($ interval , $ value ));
111112 return $ this ->treeSearch ($ this ->root , $ searchNode ) !== null ;
112113 }
113114
114115 /**
115- * @param Interval $interval
116+ * @param IntervalInterface $interval
116117 * @param mixed $value
117118 * @return bool
118119 */
119- public function remove (Interval $ interval , $ value ): bool
120+ public function remove (IntervalInterface $ interval , $ value ): bool
120121 {
121122 $ searchNode = Node::withPair (new Pair ($ interval , $ value ));
122123 $ deleteNode = $ this ->treeSearch ($ this ->root , $ searchNode );
0 commit comments