/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/libs/antlr4_cpp_runtime/src/RuntimeMetaData.cpp
54 строки
2 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
/* 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 "RuntimeMetaData.h" #include "Version.h" using namespace antlr4; const std::string RuntimeMetaData::VERSION = ANTLRCPP_VERSION_STRING; std::string RuntimeMetaData::getRuntimeVersion() { return VERSION; } void RuntimeMetaData::checkVersion(const std::string &generatingToolVersion, const std::string &compileTimeVersion) { std::string runtimeVersion = VERSION; bool runtimeConflictsWithGeneratingTool = false; bool runtimeConflictsWithCompileTimeTool = false; if (generatingToolVersion != "") { runtimeConflictsWithGeneratingTool = runtimeVersion != generatingToolVersion && getMajorMinorVersion(runtimeVersion) != getMajorMinorVersion(generatingToolVersion); } runtimeConflictsWithCompileTimeTool = runtimeVersion != compileTimeVersion && getMajorMinorVersion(runtimeVersion) != getMajorMinorVersion(compileTimeVersion); if (runtimeConflictsWithGeneratingTool) { std::cerr << "ANTLR Tool version " << generatingToolVersion << " used for code generation does not match " "the current runtime version " << runtimeVersion << std::endl; } if (runtimeConflictsWithCompileTimeTool) { std::cerr << "ANTLR Runtime version " << compileTimeVersion << " used for parser compilation does not match " "the current runtime version " << runtimeVersion << std::endl; } } std::string RuntimeMetaData::getMajorMinorVersion(const std::string &version) { size_t firstDot = version.find('.'); size_t secondDot = firstDot != std::string::npos ? version.find('.', firstDot + 1) : std::string::npos; size_t firstDash = version.find('-'); size_t referenceLength = version.size(); if (secondDot != std::string::npos) { referenceLength = std::min(referenceLength, secondDot); } if (firstDash != std::string::npos) { referenceLength = std::min(referenceLength, firstDash); } return version.substr(0, referenceLength); }