1 /*
2  * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
3  * Use of this file is governed by the BSD 3-clause license that
4  * can be found in the LICENSE.txt file in the project root.
5  */
6 
7 package org.antlr.v4.runtime.atn;
8 
9 /**
10  *
11  * @author Sam Harwell
12  */
13 public class ATNDeserializationOptions {
14 	private static final ATNDeserializationOptions defaultOptions;
15 	static {
16 		defaultOptions = new ATNDeserializationOptions();
defaultOptions.makeReadOnly()17 		defaultOptions.makeReadOnly();
18 	}
19 
20 	private boolean readOnly;
21 	private boolean verifyATN;
22 	private boolean generateRuleBypassTransitions;
23 
ATNDeserializationOptions()24 	public ATNDeserializationOptions() {
25 		this.verifyATN = true;
26 		this.generateRuleBypassTransitions = false;
27 	}
28 
ATNDeserializationOptions(ATNDeserializationOptions options)29 	public ATNDeserializationOptions(ATNDeserializationOptions options) {
30 		this.verifyATN = options.verifyATN;
31 		this.generateRuleBypassTransitions = options.generateRuleBypassTransitions;
32 	}
33 
34 
getDefaultOptions()35 	public static ATNDeserializationOptions getDefaultOptions() {
36 		return defaultOptions;
37 	}
38 
isReadOnly()39 	public final boolean isReadOnly() {
40 		return readOnly;
41 	}
42 
makeReadOnly()43 	public final void makeReadOnly() {
44 		readOnly = true;
45 	}
46 
isVerifyATN()47 	public final boolean isVerifyATN() {
48 		return verifyATN;
49 	}
50 
setVerifyATN(boolean verifyATN)51 	public final void setVerifyATN(boolean verifyATN) {
52 		throwIfReadOnly();
53 		this.verifyATN = verifyATN;
54 	}
55 
isGenerateRuleBypassTransitions()56 	public final boolean isGenerateRuleBypassTransitions() {
57 		return generateRuleBypassTransitions;
58 	}
59 
setGenerateRuleBypassTransitions(boolean generateRuleBypassTransitions)60 	public final void setGenerateRuleBypassTransitions(boolean generateRuleBypassTransitions) {
61 		throwIfReadOnly();
62 		this.generateRuleBypassTransitions = generateRuleBypassTransitions;
63 	}
64 
throwIfReadOnly()65 	protected void throwIfReadOnly() {
66 		if (isReadOnly()) {
67 			throw new IllegalStateException("The object is read only.");
68 		}
69 	}
70 }
71