Clean up after standard literals patch.

Ed Smith-Rowland 3dw4rd@verizon.net
Fri Jun 7 14:45:00 GMT 2013


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

-------------- next part --------------

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.

-------------- next part --------------
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>
 


More information about the Gcc-patches mailing list