/*
* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
package org.antlr.v4.runtime.atn;
Author: Sam Harwell
/**
*
* @author Sam Harwell
*/
public class ATNDeserializationOptions {
private static final ATNDeserializationOptions defaultOptions;
static {
defaultOptions = new ATNDeserializationOptions();
defaultOptions.makeReadOnly();
}
private boolean readOnly;
private boolean verifyATN;
private boolean generateRuleBypassTransitions;
public ATNDeserializationOptions() {
this.verifyATN = true;
this.generateRuleBypassTransitions = false;
}
public ATNDeserializationOptions(ATNDeserializationOptions options) {
this.verifyATN = options.verifyATN;
this.generateRuleBypassTransitions = options.generateRuleBypassTransitions;
}
public static ATNDeserializationOptions getDefaultOptions() {
return defaultOptions;
}
public final boolean isReadOnly() {
return readOnly;
}
public final void makeReadOnly() {
readOnly = true;
}
public final boolean isVerifyATN() {
return verifyATN;
}
public final void setVerifyATN(boolean verifyATN) {
throwIfReadOnly();
this.verifyATN = verifyATN;
}
public final boolean isGenerateRuleBypassTransitions() {
return generateRuleBypassTransitions;
}
public final void setGenerateRuleBypassTransitions(boolean generateRuleBypassTransitions) {
throwIfReadOnly();
this.generateRuleBypassTransitions = generateRuleBypassTransitions;
}
protected void throwIfReadOnly() {
if (isReadOnly()) {
throw new IllegalStateException("The object is read only.");
}
}
}