diff options
Diffstat (limited to 'sources/shiboken6/tests/libsample/intwrapper.h')
-rw-r--r-- | sources/shiboken6/tests/libsample/intwrapper.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/sources/shiboken6/tests/libsample/intwrapper.h b/sources/shiboken6/tests/libsample/intwrapper.h new file mode 100644 index 000000000..cfda5adc7 --- /dev/null +++ b/sources/shiboken6/tests/libsample/intwrapper.h @@ -0,0 +1,62 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#ifndef INTWRAPPER_H +#define INTWRAPPER_H + +#include "libsamplemacros.h" + +// Wrapper around int for testing operators +class LIBSAMPLE_API IntWrapper +{ +public: + constexpr explicit IntWrapper(int i) noexcept : m_number(i) {} + int toInt() const; + + IntWrapper &operator++(); + IntWrapper operator++(int); // Postfix + + IntWrapper &operator--(); + IntWrapper operator--(int); // Postfix + + friend constexpr inline bool operator==(IntWrapper lhs, IntWrapper rhs) noexcept + { return lhs.m_number == rhs.m_number; } + friend constexpr inline bool operator!=(IntWrapper lhs, IntWrapper rhs) noexcept + { return lhs.m_number != rhs.m_number; } + friend constexpr inline bool operator<(IntWrapper lhs, IntWrapper rhs) noexcept + { return lhs.m_number < rhs.m_number; } + friend constexpr inline bool operator>(IntWrapper lhs, IntWrapper rhs) noexcept + { return lhs.m_number > rhs.m_number; } + friend constexpr inline bool operator<=(IntWrapper lhs, IntWrapper rhs) noexcept + { return lhs.m_number <= rhs.m_number; } + friend constexpr inline bool operator>=(IntWrapper lhs, IntWrapper rhs) noexcept + { return lhs.m_number >= rhs.m_number; } + + constexpr inline IntWrapper &operator+=(IntWrapper i); + constexpr inline IntWrapper &operator-=(const IntWrapper i); + + friend constexpr inline IntWrapper operator+(IntWrapper lhs, IntWrapper rhs) noexcept + { return IntWrapper(lhs.m_number + rhs.m_number); } + friend constexpr inline IntWrapper operator-(IntWrapper lhs, IntWrapper rhs) noexcept + { return IntWrapper(lhs.m_number - rhs.m_number); } + + // FIXME: Test spaceship operator with C++ 20: + // auto operator<=>(IntWrapper) const = default; + +private: + int m_number; +}; + +constexpr inline IntWrapper &IntWrapper::operator+=(IntWrapper i) +{ + m_number += i.m_number; + return *this; +} + +constexpr inline IntWrapper &IntWrapper::operator-=(const IntWrapper i) +{ + m_number -= i.m_number; + return *this; +} + +#endif // INTWRAPPER_H |