From aeb5ea0ddf4da467ed679d6bd5d3ce4e70156ddf Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 23 Dec 2022 18:39:59 +0100 Subject: [PATCH] App: [skip ci] reduce code duplication --- src/App/Expression.cpp | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index ba25b88026..010a4a9840 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -3391,23 +3391,29 @@ UnitExpression * ExpressionParser::parseUnit(const App::DocumentObject *owner, c } } +namespace { +std::tuple getTokenAndStatus(const std::string & str) +{ + ExpressionParser::YY_BUFFER_STATE buf = ExpressionParser::ExpressionParser_scan_string(str.c_str()); + int token = ExpressionParser::ExpressionParserlex(); + int status = ExpressionParser::ExpressionParserlex(); + ExpressionParser::ExpressionParser_delete_buffer(buf); + + return std::make_tuple(token, status); +} +} + bool ExpressionParser::isTokenAnIndentifier(const std::string & str) { - ExpressionParser::YY_BUFFER_STATE buf = ExpressionParser_scan_string(str.c_str()); - int token = ExpressionParserlex(); - int status = ExpressionParserlex(); - ExpressionParser_delete_buffer(buf); - - return (status == 0 && (token == IDENTIFIER || token == CELLADDRESS )); + int token{}, status{}; + std::tie(token, status) = getTokenAndStatus(str); + return (status == 0 && (token == IDENTIFIER || token == CELLADDRESS)); } bool ExpressionParser::isTokenAUnit(const std::string & str) { - ExpressionParser::YY_BUFFER_STATE buf = ExpressionParser_scan_string(str.c_str()); - int token = ExpressionParserlex(); - int status = ExpressionParserlex(); - ExpressionParser_delete_buffer(buf); - + int token{}, status{}; + std::tie(token, status) = getTokenAndStatus(str); return (status == 0 && token == UNIT); }