Greetings,
Jonathan had asked if I could make some simplifications to the
organization of C++ versioning macros and namespaces in my standard
literals patch. I plum forgot to do it before I put in the patch.
Also, I noticed I had picked up some garbage comments in the test cases.
This patch cleans all that up.
Built and tested on x86_64-linux.
Thanks,
Ed Smith-Rowland
2013-06-07 Ed Smith-Rowland <3dw...@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.
Index: include/std/chrono
===================================================================
--- include/std/chrono (revision 199730)
+++ include/std/chrono (working copy)
@@ -713,7 +713,7 @@
*
* Time returned represents wall time from the system-wide clock.
*/
- struct system_clock
+ struct system_clock
{
typedef chrono::nanoseconds duration;
typedef duration::rep rep;
@@ -775,148 +775,137 @@
*/
using high_resolution_clock = system_clock;
- } // end inline namespace _V2
+ } // end inline namespace _V2
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace chrono
- // @} group chrono
-} // namespace
+#if __cplusplus > 201103L
-#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)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
+ template<unsigned long long _Val, typename _Dur>
+ constexpr typename _Select_type<_Val, _Dur>::type
+ _Select_type<_Val, _Dur>::value;
-inline namespace literals {
-inline namespace chrono_literals {
+ } // __detail
- 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<unsigned long long _Val, typename _Dur>
- struct _Select_type
- : conditional<
- _Val <= static_cast<unsigned long long>
- (numeric_limits<typename _Dur::rep>::max()),
- _Dur, void>
+ template <char... _Digits>
+ constexpr typename
+ __detail::_Select_type<__select_int::_Select_int<_Digits...>::value,
+ chrono::hours>::type
+ operator"" h()
{
- static constexpr typename _Select_type::type
- value{static_cast<typename _Select_type::type>(_Val)};
- };
+ return __detail::_Select_type<
+ __select_int::_Select_int<_Digits...>::value,
+ chrono::hours>::value;
+ }
- template<unsigned long long _Val, typename _Dur>
- constexpr typename _Select_type<_Val, _Dur>::type
- _Select_type<_Val, _Dur>::value;
+ constexpr chrono::duration<long double, ratio<60,1>>
+ operator"" min(long double __mins)
+ { return chrono::duration<long double, ratio<60,1>>{__mins}; }
- } // __detail
+ 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, ratio<3600,1>>
- operator"" h(long double __hours)
- { return chrono::duration<long double, ratio<3600,1>>{__hours}; }
+ 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::hours>::type
- operator"" h()
- {
- return __detail::_Select_type<
- __select_int::_Select_int<_Digits...>::value,
- chrono::hours>::value;
- }
+ 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<60,1>>
- operator"" min(long double __mins)
- { return chrono::duration<long double, ratio<60,1>>{__mins}; }
+ 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::minutes>::type
- operator"" min()
- {
- return __detail::_Select_type<
- __select_int::_Select_int<_Digits...>::value,
- chrono::minutes>::value;
- }
+ 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>
- operator"" s(long double __secs)
- { return chrono::duration<long double>{__secs}; }
+ 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::seconds>::type
- operator"" s()
- {
- return __detail::_Select_type<
- __select_int::_Select_int<_Digits...>::value,
- chrono::seconds>::value;
- }
+ 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, milli>
- operator"" ms(long double __msecs)
- { return chrono::duration<long double, milli>{__msecs}; }
+ 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::milliseconds>::type
- operator"" ms()
- {
- return __detail::_Select_type<
- __select_int::_Select_int<_Digits...>::value,
- chrono::milliseconds>::value;
- }
+ 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;
+ }
- constexpr chrono::duration<long double, micro>
- operator"" us(long double __usecs)
- { return chrono::duration<long double, micro>{__usecs}; }
+ } // inline namespace chrono_literals
+ } // inline namespace literals
- 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;
- }
+#endif // __cplusplus > 201103L
- 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
-
-_GLIBCXX_END_NAMESPACE_VERSION
+ // @} group chrono
} // namespace std
#endif //_GLIBCXX_USE_C99_STDINT_TR1
-#endif // __cplusplus > 201103L
+#endif // C++11
#endif //_GLIBCXX_CHRONO
Index: include/bits/basic_string.h
===================================================================
--- include/bits/basic_string.h (revision 199730)
+++ include/bits/basic_string.h (working copy)
@@ -3103,46 +3103,39 @@
{ };
#endif
-_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
-
#if __cplusplus > 201103L
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
+ inline namespace literals {
+ inline namespace string_literals {
-inline namespace literals {
-inline namespace string_literals {
+ inline basic_string<char>
+ 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
- inline basic_string<wchar_t>
- operator"" s(const wchar_t* __str, size_t __len)
- { return basic_string<wchar_t>{__str, __len}; }
+ inline basic_string<wchar_t>
+ operator"" s(const wchar_t* __str, size_t __len)
+ { return basic_string<wchar_t>{__str, __len}; }
#endif
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
- inline basic_string<char16_t>
- operator"" s(const char16_t* __str, size_t __len)
- { return basic_string<char16_t>{__str, __len}; }
+ inline basic_string<char16_t>
+ operator"" s(const char16_t* __str, size_t __len)
+ { return basic_string<char16_t>{__str, __len}; }
- inline basic_string<char32_t>
- operator"" s(const char32_t* __str, size_t __len)
- { return basic_string<char32_t>{__str, __len}; }
+ inline basic_string<char32_t>
+ operator"" s(const char32_t* __str, size_t __len)
+ { return basic_string<char32_t>{__str, __len}; }
#endif
-} // inline namespace string_literals
-} // inline namespace literals
+ } // inline namespace string_literals
+ } // inline namespace literals
+#endif // __cplusplus > 201103L
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
-#endif // __cplusplus > 201103L
-
#endif // C++11
#endif /* _BASIC_STRING_H */
Index: testsuite/20_util/duration/literals/types.cc
===================================================================
--- testsuite/20_util/duration/literals/types.cc (revision 199730)
+++ testsuite/20_util/duration/literals/types.cc (working copy)
@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see
// <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 <type_traits>
Index: testsuite/20_util/duration/literals/values.cc
===================================================================
--- testsuite/20_util/duration/literals/values.cc (revision 199730)
+++ testsuite/20_util/duration/literals/values.cc (working copy)
@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see
// <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 <testsuite_hooks.h>
Index: testsuite/21_strings/basic_string/literals/types.cc
===================================================================
--- testsuite/21_strings/basic_string/literals/types.cc (revision 199730)
+++ testsuite/21_strings/basic_string/literals/types.cc (working copy)
@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see
// <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 <type_traits>
Index: testsuite/21_strings/basic_string/literals/values.cc
===================================================================
--- testsuite/21_strings/basic_string/literals/values.cc (revision
199730)
+++ testsuite/21_strings/basic_string/literals/values.cc (working copy)
@@ -18,10 +18,6 @@
// with this library; see the file COPYING3. If not see
// <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 <testsuite_hooks.h>