text: ﻿/* 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.
   */
  
  #include "atn/ATNDeserializationOptions.h"
  
  using namespace antlr4::atn;
  
  ATNDeserializationOptions ATNDeserializationOptions::defaultOptions;
  
  ATNDeserializationOptions::ATNDeserializationOptions() {
    InitializeInstanceFields();
  }
  
  ATNDeserializationOptions::ATNDeserializationOptions(
      ATNDeserializationOptions* options)
      : ATNDeserializationOptions() {
    this->verifyATN = options->verifyATN;
    this->generateRuleBypassTransitions = options->generateRuleBypassTransitions;
  }
  
  ATNDeserializationOptions::~ATNDeserializationOptions() {}
  
  const ATNDeserializationOptions&
  ATNDeserializationOptions::getDefaultOptions() {
    return defaultOptions;
  }
  
  bool ATNDeserializationOptions::isReadOnly() { return readOnly; }
  
  void ATNDeserializationOptions::makeReadOnly() { readOnly = true; }
  
  bool ATNDeserializationOptions::isVerifyATN() { return verifyATN; }
  
  void ATNDeserializationOptions::setVerifyATN(bool verify) {
    throwIfReadOnly();
    verifyATN = verify;
  }
  
  bool ATNDeserializationOptions::isGenerateRuleBypassTransitions() {
    return generateRuleBypassTransitions;
  }
  
  void ATNDeserializationOptions::setGenerateRuleBypassTransitions(
      bool generate) {
    throwIfReadOnly();
    generateRuleBypassTransitions = generate;
  }
  
  void ATNDeserializationOptions::throwIfReadOnly() {
    if (isReadOnly()) {
      throw "The object is read only.";
    }
  }
  
  void ATNDeserializationOptions::InitializeInstanceFields() {
    readOnly = false;
    verifyATN = true;
    generateRuleBypassTransitions = false;
  }
  