1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeaudeclare(strict_types=1); 4*37748cd8SNickeau 5*37748cd8SNickeaunamespace Antlr\Antlr4\Runtime\Atn; 6*37748cd8SNickeau 7*37748cd8SNickeaufinal class ATNDeserializationOptions 8*37748cd8SNickeau{ 9*37748cd8SNickeau /** @var bool */ 10*37748cd8SNickeau private $readOnly = false; 11*37748cd8SNickeau 12*37748cd8SNickeau /** @var bool */ 13*37748cd8SNickeau private $verifyATN; 14*37748cd8SNickeau 15*37748cd8SNickeau /** @var bool */ 16*37748cd8SNickeau private $generateRuleBypassTransitions; 17*37748cd8SNickeau 18*37748cd8SNickeau public static function defaultOptions() : ATNDeserializationOptions 19*37748cd8SNickeau { 20*37748cd8SNickeau static $defaultOptions; 21*37748cd8SNickeau 22*37748cd8SNickeau if ($defaultOptions === null) { 23*37748cd8SNickeau $defaultOptions = new ATNDeserializationOptions(); 24*37748cd8SNickeau $defaultOptions->readOnly = true; 25*37748cd8SNickeau } 26*37748cd8SNickeau 27*37748cd8SNickeau return $defaultOptions; 28*37748cd8SNickeau } 29*37748cd8SNickeau 30*37748cd8SNickeau public function __construct(?ATNDeserializationOptions $options = null) 31*37748cd8SNickeau { 32*37748cd8SNickeau $this->verifyATN = $options === null ? true : $options->verifyATN; 33*37748cd8SNickeau $this->generateRuleBypassTransitions = $options === null ? false : $options->generateRuleBypassTransitions; 34*37748cd8SNickeau } 35*37748cd8SNickeau 36*37748cd8SNickeau public function isReadOnly() : bool 37*37748cd8SNickeau { 38*37748cd8SNickeau return $this->readOnly; 39*37748cd8SNickeau } 40*37748cd8SNickeau 41*37748cd8SNickeau public function makeReadOnly() : void 42*37748cd8SNickeau { 43*37748cd8SNickeau $this->readOnly = true; 44*37748cd8SNickeau } 45*37748cd8SNickeau 46*37748cd8SNickeau public function isVerifyATN() : bool 47*37748cd8SNickeau { 48*37748cd8SNickeau return $this->verifyATN; 49*37748cd8SNickeau } 50*37748cd8SNickeau 51*37748cd8SNickeau public function setVerifyATN(bool $verifyATN) : void 52*37748cd8SNickeau { 53*37748cd8SNickeau if ($this->readOnly) { 54*37748cd8SNickeau throw new \InvalidArgumentException('The object is read only.'); 55*37748cd8SNickeau } 56*37748cd8SNickeau 57*37748cd8SNickeau $this->verifyATN = $verifyATN; 58*37748cd8SNickeau } 59*37748cd8SNickeau 60*37748cd8SNickeau public function isGenerateRuleBypassTransitions() : bool 61*37748cd8SNickeau { 62*37748cd8SNickeau return $this->generateRuleBypassTransitions; 63*37748cd8SNickeau } 64*37748cd8SNickeau 65*37748cd8SNickeau public function setGenerateRuleBypassTransitions(bool $generateRuleBypassTransitions) : void 66*37748cd8SNickeau { 67*37748cd8SNickeau if ($this->readOnly) { 68*37748cd8SNickeau throw new \InvalidArgumentException('The object is read only.'); 69*37748cd8SNickeau } 70*37748cd8SNickeau 71*37748cd8SNickeau $this->generateRuleBypassTransitions = $generateRuleBypassTransitions; 72*37748cd8SNickeau } 73*37748cd8SNickeau} 74