ATNDeserializationOptions.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
  2. * Use of this file is governed by the BSD 3-clause license that
  3. * can be found in the LICENSE.txt file in the project root.
  4. */
  5. #include "atn/ATNDeserializationOptions.h"
  6. #include "Exceptions.h"
  7. using namespace antlr4;
  8. using namespace antlr4::atn;
  9. ATNDeserializationOptions::ATNDeserializationOptions(ATNDeserializationOptions *options)
  10. : _readOnly(false), _verifyATN(options->_verifyATN),
  11. _generateRuleBypassTransitions(options->_generateRuleBypassTransitions) {}
  12. const ATNDeserializationOptions& ATNDeserializationOptions::getDefaultOptions() {
  13. static const ATNDeserializationOptions* const defaultOptions = new ATNDeserializationOptions();
  14. return *defaultOptions;
  15. }
  16. void ATNDeserializationOptions::makeReadOnly() {
  17. _readOnly = true;
  18. }
  19. void ATNDeserializationOptions::setVerifyATN(bool verify) {
  20. throwIfReadOnly();
  21. _verifyATN = verify;
  22. }
  23. void ATNDeserializationOptions::setGenerateRuleBypassTransitions(bool generate) {
  24. throwIfReadOnly();
  25. _generateRuleBypassTransitions = generate;
  26. }
  27. void ATNDeserializationOptions::throwIfReadOnly() const {
  28. if (isReadOnly()) {
  29. throw IllegalStateException("ATNDeserializationOptions is read only.");
  30. }
  31. }