xref: /plugin/combo/vendor/antlr/antlr4-php-runtime/src/Atn/ATNDeserializationOptions.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
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