Commit 88c4d6b7 by Ed Smith-Rowland Committed by Edward Smith-Rowland

Simplify and clean up library literals.

2013-06-07  Ed Smith-Rowland  <3dw4rd@verizon.net>

	Simplify and clean up library literals.
	* include/std/chrono: Simplify namespace and versioning management.
	* include/bits/basic_string.h: Ditto.
	* testsuite/20_util/duration/literals/types.cc: Remove bogus comment.
	* testsuite/20_util/duration/literals/values.cc: Ditto.
	* testsuite/21_strings/basic_string/literals/types.cc: Ditto.
	* testsuite/21_strings/basic_string/literals/values.cc: Ditto.

From-SVN: r199861
parent 83ac9249
2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net> 2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net>
Simplify and clean up library literals.
* include/std/chrono: Simplify namespace and versioning management.
* include/bits/basic_string.h: Ditto.
* testsuite/20_util/duration/literals/types.cc: Remove bogus comment.
* testsuite/20_util/duration/literals/values.cc: Ditto.
* testsuite/21_strings/basic_string/literals/types.cc: Ditto.
* testsuite/21_strings/basic_string/literals/values.cc: Ditto.
2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net>
Implement N3654 - Quoted Strings Library Proposal Implement N3654 - Quoted Strings Library Proposal
* include/std/iomanip: Add quoted(String, Char delim, Char escape) * include/std/iomanip: Add quoted(String, Char delim, Char escape)
manipulators and supporting machinery in c++1y mode. manipulators and supporting machinery in c++1y mode.
......
...@@ -3103,46 +3103,39 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3103,46 +3103,39 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ }; { };
#endif #endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#if __cplusplus > 201103L #if __cplusplus > 201103L
namespace std _GLIBCXX_VISIBILITY(default) inline namespace literals {
{ inline namespace string_literals {
_GLIBCXX_BEGIN_NAMESPACE_VERSION
inline namespace literals { inline basic_string<char>
inline namespace string_literals { operator"" s(const char* __str, size_t __len)
{ return basic_string<char>{__str, __len}; }
inline basic_string<char>
operator"" s(const char* __str, size_t __len)
{ return basic_string<char>{__str, __len}; }
#ifdef _GLIBCXX_USE_WCHAR_T #ifdef _GLIBCXX_USE_WCHAR_T
inline basic_string<wchar_t> inline basic_string<wchar_t>
operator"" s(const wchar_t* __str, size_t __len) operator"" s(const wchar_t* __str, size_t __len)
{ return basic_string<wchar_t>{__str, __len}; } { return basic_string<wchar_t>{__str, __len}; }
#endif #endif
#ifdef _GLIBCXX_USE_C99_STDINT_TR1 #ifdef _GLIBCXX_USE_C99_STDINT_TR1
inline basic_string<char16_t> inline basic_string<char16_t>
operator"" s(const char16_t* __str, size_t __len) operator"" s(const char16_t* __str, size_t __len)
{ return basic_string<char16_t>{__str, __len}; } { return basic_string<char16_t>{__str, __len}; }
inline basic_string<char32_t> inline basic_string<char32_t>
operator"" s(const char32_t* __str, size_t __len) operator"" s(const char32_t* __str, size_t __len)
{ return basic_string<char32_t>{__str, __len}; } { return basic_string<char32_t>{__str, __len}; }
#endif #endif
} // inline namespace string_literals } // inline namespace string_literals
} // inline namespace literals } // inline namespace literals
#endif // __cplusplus > 201103L
_GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION
} // namespace std } // namespace std
#endif // __cplusplus > 201103L
#endif // C++11 #endif // C++11
#endif /* _BASIC_STRING_H */ #endif /* _BASIC_STRING_H */
...@@ -713,7 +713,7 @@ _GLIBCXX_END_NAMESPACE_VERSION ...@@ -713,7 +713,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
* *
* Time returned represents wall time from the system-wide clock. * Time returned represents wall time from the system-wide clock.
*/ */
struct system_clock struct system_clock
{ {
typedef chrono::nanoseconds duration; typedef chrono::nanoseconds duration;
typedef duration::rep rep; typedef duration::rep rep;
...@@ -775,148 +775,137 @@ _GLIBCXX_END_NAMESPACE_VERSION ...@@ -775,148 +775,137 @@ _GLIBCXX_END_NAMESPACE_VERSION
*/ */
using high_resolution_clock = system_clock; using high_resolution_clock = system_clock;
} // end inline namespace _V2 } // end inline namespace _V2
_GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION
} // namespace chrono } // namespace chrono
// @} group chrono #if __cplusplus > 201103L
} // namespace
#endif //_GLIBCXX_USE_C99_STDINT_TR1 inline namespace literals {
inline namespace chrono_literals {
#endif // C++11 namespace __detail {
#if __cplusplus > 201103L using namespace __parse_int;
#ifdef _GLIBCXX_USE_C99_STDINT_TR1 template<unsigned long long _Val, typename _Dur>
struct _Select_type
: conditional<
_Val <= static_cast<unsigned long long>
(numeric_limits<typename _Dur::rep>::max()),
_Dur, void>
{
static constexpr typename _Select_type::type
value{static_cast<typename _Select_type::type>(_Val)};
};
namespace std _GLIBCXX_VISIBILITY(default) template<unsigned long long _Val, typename _Dur>
{ constexpr typename _Select_type<_Val, _Dur>::type
_GLIBCXX_BEGIN_NAMESPACE_VERSION _Select_type<_Val, _Dur>::value;
inline namespace literals { } // __detail
inline namespace chrono_literals {
namespace __detail { constexpr chrono::duration<long double, ratio<3600,1>>
operator"" h(long double __hours)
{ return chrono::duration<long double, ratio<3600,1>>{__hours}; }
using namespace __parse_int; template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::hours>::type
operator"" h()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::hours>::value;
}
constexpr chrono::duration<long double, ratio<60,1>>
operator"" min(long double __mins)
{ return chrono::duration<long double, ratio<60,1>>{__mins}; }
template<unsigned long long _Val, typename _Dur> template <char... _Digits>
struct _Select_type constexpr typename
: conditional< __detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
_Val <= static_cast<unsigned long long> chrono::minutes>::type
(numeric_limits<typename _Dur::rep>::max()), operator"" min()
_Dur, void>
{ {
static constexpr typename _Select_type::type return __detail::_Select_type<
value{static_cast<typename _Select_type::type>(_Val)}; __select_int::_Select_int<_Digits...>::value,
}; chrono::minutes>::value;
}
template<unsigned long long _Val, typename _Dur> constexpr chrono::duration<long double>
constexpr typename _Select_type<_Val, _Dur>::type operator"" s(long double __secs)
_Select_type<_Val, _Dur>::value; { return chrono::duration<long double>{__secs}; }
} // __detail template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::seconds>::type
operator"" s()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::seconds>::value;
}
constexpr chrono::duration<long double, ratio<3600,1>> constexpr chrono::duration<long double, milli>
operator"" h(long double __hours) operator"" ms(long double __msecs)
{ return chrono::duration<long double, ratio<3600,1>>{__hours}; } { return chrono::duration<long double, milli>{__msecs}; }
template <char... _Digits> template <char... _Digits>
constexpr typename constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value, __detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::hours>::type chrono::milliseconds>::type
operator"" h() operator"" ms()
{ {
return __detail::_Select_type< return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value, __select_int::_Select_int<_Digits...>::value,
chrono::hours>::value; chrono::milliseconds>::value;
} }
constexpr chrono::duration<long double, ratio<60,1>>
operator"" min(long double __mins)
{ return chrono::duration<long double, ratio<60,1>>{__mins}; }
template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::minutes>::type
operator"" min()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::minutes>::value;
}
constexpr chrono::duration<long double>
operator"" s(long double __secs)
{ return chrono::duration<long double>{__secs}; }
template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::seconds>::type
operator"" s()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::seconds>::value;
}
constexpr chrono::duration<long double, milli>
operator"" ms(long double __msecs)
{ return chrono::duration<long double, milli>{__msecs}; }
template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::milliseconds>::type
operator"" ms()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::milliseconds>::value;
}
constexpr chrono::duration<long double, micro>
operator"" us(long double __usecs)
{ return chrono::duration<long double, micro>{__usecs}; }
template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::microseconds>::type
operator"" us()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::microseconds>::value;
}
constexpr chrono::duration<long double, nano>
operator"" ns(long double __nsecs)
{ return chrono::duration<long double, nano>{__nsecs}; }
template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::nanoseconds>::type
operator"" ns()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::nanoseconds>::value;
}
} // inline namespace chrono_literals constexpr chrono::duration<long double, micro>
} // inline namespace literals operator"" us(long double __usecs)
{ return chrono::duration<long double, micro>{__usecs}; }
_GLIBCXX_END_NAMESPACE_VERSION template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::microseconds>::type
operator"" us()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::microseconds>::value;
}
constexpr chrono::duration<long double, nano>
operator"" ns(long double __nsecs)
{ return chrono::duration<long double, nano>{__nsecs}; }
template <char... _Digits>
constexpr typename
__detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
chrono::nanoseconds>::type
operator"" ns()
{
return __detail::_Select_type<
__select_int::_Select_int<_Digits...>::value,
chrono::nanoseconds>::value;
}
} // inline namespace chrono_literals
} // inline namespace literals
#endif // __cplusplus > 201103L
// @} group chrono
} // namespace std } // namespace std
#endif //_GLIBCXX_USE_C99_STDINT_TR1 #endif //_GLIBCXX_USE_C99_STDINT_TR1
#endif // __cplusplus > 201103L #endif // C++11
#endif //_GLIBCXX_CHRONO #endif //_GLIBCXX_CHRONO
...@@ -18,10 +18,6 @@ ...@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see // with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// NOTE: This makes use of the fact that we know how moveable
// is implemented on string (via swap). If the implementation changed
// this test may begin to fail.
#include <chrono> #include <chrono>
#include <type_traits> #include <type_traits>
......
...@@ -18,10 +18,6 @@ ...@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see // with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// NOTE: This makes use of the fact that we know how moveable
// is implemented on string (via swap). If the implementation changed
// this test may begin to fail.
#include <chrono> #include <chrono>
#include <testsuite_hooks.h> #include <testsuite_hooks.h>
......
...@@ -18,10 +18,6 @@ ...@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see // with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// NOTE: This makes use of the fact that we know how moveable
// is implemented on string (via swap). If the implementation changed
// this test may begin to fail.
#include <string> #include <string>
#include <type_traits> #include <type_traits>
......
...@@ -18,10 +18,6 @@ ...@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see // with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// NOTE: This makes use of the fact that we know how moveable
// is implemented on string (via swap). If the implementation changed
// this test may begin to fail.
#include <string> #include <string>
#include <testsuite_hooks.h> #include <testsuite_hooks.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment