xref: /plugin/combo/vendor/antlr/antlr4-php-runtime/src/Utils/Pair.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeaudeclare(strict_types=1);
4*37748cd8SNickeau
5*37748cd8SNickeaunamespace Antlr\Antlr4\Runtime\Utils;
6*37748cd8SNickeau
7*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Comparison\Equality;
8*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Comparison\Equatable;
9*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Comparison\Hasher;
10*37748cd8SNickeau
11*37748cd8SNickeaufinal class Pair implements Equatable
12*37748cd8SNickeau{
13*37748cd8SNickeau    /** @var object|null */
14*37748cd8SNickeau    public $a;
15*37748cd8SNickeau
16*37748cd8SNickeau    /** @var object|null */
17*37748cd8SNickeau    public $b;
18*37748cd8SNickeau
19*37748cd8SNickeau    public function __construct(?object $a, ?object $b)
20*37748cd8SNickeau    {
21*37748cd8SNickeau        $this->a = $a;
22*37748cd8SNickeau        $this->b = $b;
23*37748cd8SNickeau    }
24*37748cd8SNickeau
25*37748cd8SNickeau    public function equals(object $other) : bool
26*37748cd8SNickeau    {
27*37748cd8SNickeau        if ($other === $this) {
28*37748cd8SNickeau            return true;
29*37748cd8SNickeau        }
30*37748cd8SNickeau
31*37748cd8SNickeau        return $other instanceof self
32*37748cd8SNickeau            && Equality::equals($this->a, $other->a)
33*37748cd8SNickeau            && Equality::equals($this->b, $other->b);
34*37748cd8SNickeau    }
35*37748cd8SNickeau
36*37748cd8SNickeau    public function hashCode() : int
37*37748cd8SNickeau    {
38*37748cd8SNickeau        return Hasher::hash($this->a, $this->b);
39*37748cd8SNickeau    }
40*37748cd8SNickeau
41*37748cd8SNickeau    public function __toString() : string
42*37748cd8SNickeau    {
43*37748cd8SNickeau        return \sprintf('%s, %s', (string) $this->a, (string) $this->b);
44*37748cd8SNickeau    }
45*37748cd8SNickeau}
46