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