summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qminmax.h
blob: fca13e047ea23ff7773423fa3cef131dd2fb0485 (plain)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
// 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 QMINMAX_H#define QMINMAX_H#if 0#pragma qt_class(QtMinMax)#pragma qt_sync_stop_processing#endif#include <QtCore/qassert.h>#include <QtCore/qtconfigmacros.h>#include <QtCore/qttypetraits.h> QT_BEGIN_NAMESPACE template<typename T>constexpr inlineconst T &qMin(const T &a,const T &b) {return(a < b) ? a : b; }template<typename T>constexpr inlineconst T &qMax(const T &a,const T &b) {return(a < b) ? b : a; }template<typename T>constexpr inlineconst T &qBound(const T &min,const T &val,const T &max){Q_ASSERT(!(max < min));returnqMax(min,qMin(max, val));}template<typename T, typename U>constexpr inline QTypeTraits::Promoted<T, U>qMin(const T &a,const U &b){using P =QTypeTraits::Promoted<T, U>; P _a = a; P _b = b;return(_a < _b) ? _a : _b;}template<typename T, typename U>constexpr inline QTypeTraits::Promoted<T, U>qMax(const T &a,const U &b){using P =QTypeTraits::Promoted<T, U>; P _a = a; P _b = b;return(_a < _b) ? _b : _a;}template<typename T, typename U>constexpr inline QTypeTraits::Promoted<T, U>qBound(const T &min,const U &val,const T &max){Q_ASSERT(!(max < min));returnqMax(min,qMin(max, val));}template<typename T, typename U>constexpr inline QTypeTraits::Promoted<T, U>qBound(const T &min,const T &val,const U &max){using P =QTypeTraits::Promoted<T, U>;Q_ASSERT(!(P(max) <P(min)));returnqMax(min,qMin(max, val));}template<typename T, typename U>constexpr inline QTypeTraits::Promoted<T, U>qBound(const U &min,const T &val,const T &max){using P =QTypeTraits::Promoted<T, U>;Q_ASSERT(!(P(max) <P(min)));returnqMax(min,qMin(max, val));} QT_END_NAMESPACE #endif// QMINMAX_H
close