mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 03:29:40 +00:00
b8a9d9030d
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2976 91177308-0d34-0410-b5e6-96231b3b80d8
88 lines
2.1 KiB
C++
88 lines
2.1 KiB
C++
|
|
// (C) Copyright John Maddock and Steve Cleary 2000.
|
|
// Permission to copy, use, modify, sell and
|
|
// distribute this software is granted provided this copyright notice appears
|
|
// in all copies. This software is provided "as is" without express or implied
|
|
// warranty, and with no claim as to its suitability for any purpose.
|
|
|
|
// See http://www.boost.org for most recent version including documentation.
|
|
//
|
|
// macros and helpers for working with integral-constant-expressions.
|
|
|
|
#ifndef BOOST_ICE_TYPE_TRAITS_HPP
|
|
#define BOOST_ICE_TYPE_TRAITS_HPP
|
|
|
|
#ifndef BOOST_CONFIG_HPP
|
|
#include <boost/config.hpp>
|
|
#endif
|
|
|
|
|
|
namespace boost{
|
|
namespace type_traits{
|
|
|
|
typedef char yes_type;
|
|
typedef double no_type;
|
|
|
|
template <bool b>
|
|
struct ice_not
|
|
{ BOOST_STATIC_CONSTANT(bool, value = true); };
|
|
template <>
|
|
struct ice_not<true>
|
|
{ BOOST_STATIC_CONSTANT(bool, value = false); };
|
|
|
|
template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
|
|
struct ice_or;
|
|
template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
|
|
struct ice_or
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = true);
|
|
};
|
|
template <>
|
|
struct ice_or<false, false, false, false, false, false, false>
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = false);
|
|
};
|
|
|
|
template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
|
|
struct ice_and;
|
|
template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
|
|
struct ice_and
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = false);
|
|
};
|
|
template <>
|
|
struct ice_and<true, true, true, true, true, true, true>
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = true);
|
|
};
|
|
|
|
template <int b1, int b2>
|
|
struct ice_eq
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = (b1 == b2));
|
|
};
|
|
|
|
template <int b1, int b2>
|
|
struct ice_ne
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = (b1 != b2));
|
|
};
|
|
|
|
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
|
template <int b1, int b2>
|
|
const bool ice_eq<b1,b2>::value;
|
|
template <int b1, int b2>
|
|
const bool ice_ne<b1,b2>::value;
|
|
#endif
|
|
|
|
} // namespace type_traits
|
|
|
|
} // namespace boost
|
|
|
|
#endif // BOOST_ICE_TYPE_TRAITS_HPP
|
|
|
|
|
|
|
|
|
|
|