/**************************************************************************** ** ** Copyright (C) 2008-2012 NVIDIA Corporation. ** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt 3D Studio. ** ** $QT_BEGIN_LICENSE:GPL$ ** 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 or (at your option) any later version ** approved by the KDE Free Qt Foundation. The licenses are as published by ** the Free Software Foundation and appearing in the file LICENSE.GPL3 ** 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$ ** ****************************************************************************/ #ifndef QT3DS_FOUNDATION_PSBASICTEMPLATES_H #define QT3DS_FOUNDATION_PSBASICTEMPLATES_H #include "foundation/Qt3DS.h" namespace qt3ds { namespace foundation { template struct Equal { bool operator()(const A &a, const A &b) const { return a == b; } }; template struct Less { bool operator()(const A &a, const A &b) const { return a < b; } }; template struct Greater { bool operator()(const A &a, const A &b) const { return a > b; } }; template class Pair { public: F first; S second; Pair() : first(F()) , second(S()) { } Pair(const F &f, const S &s) : first(f) , second(s) { } Pair(const Pair &p) : first(p.first) , second(p.second) { } // CN - fix for /.../Qt3DSBasicTemplates.h(61) : warning C4512: 'nv::foundation::Pair' : // assignment operator could not be generated Pair &operator=(const Pair &p) { first = p.first; second = p.second; return *this; } bool operator==(const Pair &p) const { return first == p.first && second == p.second; } }; template struct LogTwo { static const unsigned int value = LogTwo<(A >> 1)>::value + 1; }; template <> struct LogTwo<1> { static const unsigned int value = 0; }; template struct UnConst { typedef T Type; }; template struct UnConst { typedef T Type; }; } // namespace foundation } // namespace qt3ds #endif