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