summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qswap.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/global/qswap.h')
-rw-r--r--src/corelib/global/qswap.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/corelib/global/qswap.h b/src/corelib/global/qswap.h
new file mode 100644
index 0000000000..3d533c8a95
--- /dev/null
+++ b/src/corelib/global/qswap.h
@@ -0,0 +1,38 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QTCORE_QSWAP_H
+#define QTCORE_QSWAP_H
+
+#include <QtCore/qtconfigmacros.h>
+
+#include <type_traits>
+#include <utility>
+
+#if 0
+#pragma qt_class(QtSwap)
+#pragma qt_sync_stop_processing
+#endif
+
+QT_BEGIN_NAMESPACE
+
+template <typename T>
+constexpr void qSwap(T &value1, T &value2)
+ noexcept(std::is_nothrow_swappable_v<T>)
+{
+ using std::swap;
+ swap(value1, value2);
+}
+
+// pure compile-time micro-optimization for our own headers, so not documented:
+template <typename T>
+constexpr inline void qt_ptr_swap(T* &lhs, T* &rhs) noexcept
+{
+ T *tmp = lhs;
+ lhs = rhs;
+ rhs = tmp;
+}
+
+QT_END_NAMESPACE
+
+#endif // QTCORE_QSWAP_H