diff options
Diffstat (limited to 'sources/shiboken6/tests/libsample/expression.cpp')
-rw-r--r-- | sources/shiboken6/tests/libsample/expression.cpp | 112 |
1 files changed, 26 insertions, 86 deletions
diff --git a/sources/shiboken6/tests/libsample/expression.cpp b/sources/shiboken6/tests/libsample/expression.cpp index 0b0bcdefe..6f3c5fdc5 100644 --- a/sources/shiboken6/tests/libsample/expression.cpp +++ b/sources/shiboken6/tests/libsample/expression.cpp @@ -1,139 +1,79 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of Qt for Python. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "expression.h" -#include <sstream> - -Expression::Expression() : m_value(0), m_operation(None), m_operand1(nullptr), m_operand2(nullptr) -{ -} - -Expression::Expression(int number) : m_value(number), m_operation(None), m_operand1(nullptr), m_operand2(nullptr) -{ -} -Expression::Expression(const Expression& other) -{ - m_operand1 = other.m_operand1 ? new Expression(*other.m_operand1) : nullptr; - m_operand2 = other.m_operand2 ? new Expression(*other.m_operand2) : nullptr; - m_value = other.m_value; - m_operation = other.m_operation; -} +#include <sstream> -Expression& Expression::operator=(const Expression& other) -{ - if (&other == this) - return *this; - delete m_operand1; - delete m_operand2; - m_operand1 = other.m_operand1 ? new Expression(*other.m_operand1) : nullptr; - m_operand2 = other.m_operand2 ? new Expression(*other.m_operand2) : nullptr; - m_operation = other.m_operation; - m_value = other.m_value; - return *this; -} +Expression::Expression() noexcept = default; -Expression::~Expression() +Expression::Expression(int number) noexcept : m_value(number) { - delete m_operand1; - delete m_operand2; } -Expression Expression::operator+(const Expression& other) +Expression Expression::operator+(const Expression &other) { Expression expr; expr.m_operation = Add; - expr.m_operand1 = new Expression(*this); - expr.m_operand2 = new Expression(other); + expr.m_operand1 = std::make_shared<Expression>(*this); + expr.m_operand2 = std::make_shared<Expression>(other); return expr; } -Expression Expression::operator-(const Expression& other) +Expression Expression::operator-(const Expression &other) { Expression expr; expr.m_operation = Add; - expr.m_operand1 = new Expression(*this); - expr.m_operand2 = new Expression(other); + expr.m_operand1 = std::make_shared<Expression>(*this); + expr.m_operand2 = std::make_shared<Expression>(other); return expr; } -Expression Expression::operator<(const Expression& other) +Expression Expression::operator<(const Expression &other) { Expression expr; expr.m_operation = LessThan; - expr.m_operand1 = new Expression(*this); - expr.m_operand2 = new Expression(other); + expr.m_operand1 = std::make_shared<Expression>(*this); + expr.m_operand2 = std::make_shared<Expression>(other); return expr; } -Expression Expression::operator>(const Expression& other) +Expression Expression::operator>(const Expression &other) { Expression expr; expr.m_operation = GreaterThan; - expr.m_operand1 = new Expression(*this); - expr.m_operand2 = new Expression(other); + expr.m_operand1 = std::make_shared<Expression>(*this); + expr.m_operand2 = std::make_shared<Expression>(other); return expr; } std::string Expression::toString() const { + std::ostringstream s; if (m_operation == None) { - std::ostringstream s; s << m_value; return s.str(); } - std::string result; - result += '('; - result += m_operand1->toString(); - char op; + s << '(' << m_operand1->toString(); switch (m_operation) { case Add: - op = '+'; + s << '+'; break; case Sub: - op = '-'; + s << '-'; break; case LessThan: - op = '<'; + s << '<'; break; case GreaterThan: - op = '<'; + s << '<'; break; - case None: // just to avoid the compiler warning default: - op = '?'; + s << '?'; break; } - result += op; - result += m_operand2->toString(); - result += ')'; - return result; + s << m_operand2->toString() << ')'; + return s.str(); } - |