diff options
Diffstat (limited to 'src/boost/libs/math/test/s_.ipp')
-rw-r--r-- | src/boost/libs/math/test/s_.ipp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/boost/libs/math/test/s_.ipp b/src/boost/libs/math/test/s_.ipp new file mode 100644 index 000000000..a9cc74689 --- /dev/null +++ b/src/boost/libs/math/test/s_.ipp @@ -0,0 +1,68 @@ +#ifndef BOOST_MATH_S__HPP +#define BOOST_MATH_S__HPP + +// Copyright (c) 2006 Johan Rade +// Copyright (c) 2012 Paul A. Bristow + +// Distributed under 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) + +// The macro S_ lets you write +// +// basic_string<CharType> s = S_("foo"); +// and +// CharType c = S_('a'); +// +// provided that CharType is either char or wchar_t. +// Used by tests of output of signed zero and others. + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable : 4512) // conditional expression is constant. +#endif + +#include <string> + +//------------------------------------------------------------------------------ + +#define S_(a) make_literal_helper(a, L##a) + +class char_literal_helper { +public: + char_literal_helper(char c, wchar_t wc) : c_(c), wc_(wc) {} + operator char() { return c_; } + operator wchar_t() { return wc_; } +private: + const char c_; + const wchar_t wc_; +}; + +class string_literal_helper { +public: + string_literal_helper(const char* s, const wchar_t* ws) : s_(s), ws_(ws) {} + operator std::string() { return s_; } + operator std::wstring() { return ws_; } +private: + const char* s_; + const wchar_t* ws_; +}; + +inline char_literal_helper make_literal_helper(char c, wchar_t wc) +{ + return char_literal_helper(c, wc); +} + +inline string_literal_helper make_literal_helper(const char* s, const wchar_t* ws) +{ + return string_literal_helper(s, ws); +} + +//------------------------------------------------------------------------------ + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +#endif // BOOST_MATH_S__HPP + |