check_integral_constant.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 84 行

HPP
84
字号
//  (C) Copyright John Maddock 2000. //  Use, modification and distribution are subject to the //  Boost Software License, Version 1.0. (See accompanying file //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_CHECK_INTEGRAL_CONSTANT_HPP#define BOOST_CHECK_INTEGRAL_CONSTANT_HPP#ifdef USE_UNIT_TEST#include <boost/test/test_tools.hpp>#else#include "test.hpp"#endifnamespace boost{   namespace detail{      /*      macro:      BOOST_CHECK_INTEGRAL_CONSTANT(expression, expected_value)      expression:     an integral constant expression to check.      expected_value: the value expected.      */      template <long test_value>      struct integral_constant      {         static long value() { return test_value; }      };      template <class T, class U>      bool tt_compare(T found, U expected)      { return static_cast<U>(found) == expected; }#define BOOST_CHECK_INTEGRAL_CONSTANT(expression, expected_value)\   if(!::boost::detail::tt_compare(::boost::detail::integral_constant<(int)(expression)>::value(), (int)expression)){\      BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had differing values depending upon whether it was used as an integral constant expression or not");\   }else{\      BOOST_CHECK_MESSAGE(true, "Validating Integral Constant Expression: \"" << BOOST_STRINGIZE(expression) << "\"");\   }\   if(!::boost::detail::tt_compare((int)expression, expected_value))\      BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had an invalid value (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")" )      /*      macro:      BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(expression, expected_value, alternate_value)      expression:      an integral constant expression to check.      expected_value:  the value expected.      alternate_value: an alternative value that results is a warning not a failure if found.      */#define BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(expression, expected_value, alternate_value)\   if(!::boost::detail::tt_compare(::boost::detail::integral_constant<(int)(expression)>::value(), (int)expression)){\      BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had differing values depending upon whether it was used as an integral constant expression or not");\   }else{\      BOOST_CHECK_MESSAGE(true, "Validating Integral Constant Expression: \"" << BOOST_STRINGIZE(expression) << "\"");\   }\   if(!::boost::detail::tt_compare((int)expression, expected_value))\   {\      if(!::boost::detail::tt_compare((int)expression, alternate_value))\      {\         BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had an invalid value (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")" );\      }\      else\      {\         BOOST_WARN_MESSAGE(false, "<note>The expression: \"" << BOOST_STRINGIZE(expression) << "\" did not have the value we wish it to have (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")</note>" );\      }\    }   }//detail}//boost#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?