This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC 1/2] libstdc++: Use _GLIBCXX_NOEXCEPT for codecvt.


C++11 changed from throw() to noexcept.

* libstdc++-v3/include/bits/codecvt.h (encoding)
  (always_nconv, max_length, do_encoding, do_always_noconv)
  (do_max_length): Change to _GLIBCXX_NOEXCEPT instead of
  throw() (C++11)
* libstdc++-v3/src/c++11/codecvt.cc: Moved file from c++98.
  (encoding, always_nconv, max_length, do_encoding)
  (do_always_noconv, do_max_length): Same.
* libstdc++-v3/src/c++11/Makefile.am (sources): Add codecvt.cc
* libstdc++-v3/src/c++11/Makefile.in: Update.
* libstdc++-v3/src/c++98/Makefile.am (sources): Remove codecvt.cc
* libstdc++-v3/src/c++98/Makefile.in: Update.
---
 libstdc++-v3/include/bits/codecvt.h |  30 +++----
 libstdc++-v3/src/c++11/Makefile.am  |   1 +
 libstdc++-v3/src/c++11/Makefile.in  |   3 +-
 libstdc++-v3/src/c++11/codecvt.cc   | 151 ++++++++++++++++++++++++++++++++++++
 libstdc++-v3/src/c++98/Makefile.am  |   1 -
 libstdc++-v3/src/c++98/Makefile.in  |   3 +-
 libstdc++-v3/src/c++98/codecvt.cc   | 151 ------------------------------------
 7 files changed, 170 insertions(+), 170 deletions(-)
 create mode 100644 libstdc++-v3/src/c++11/codecvt.cc
 delete mode 100644 libstdc++-v3/src/c++98/codecvt.cc

diff --git a/libstdc++-v3/include/bits/codecvt.h b/libstdc++-v3/include/bits/codecvt.h
index 5002a55..18038e1 100644
--- a/libstdc++-v3/include/bits/codecvt.h
+++ b/libstdc++-v3/include/bits/codecvt.h
@@ -203,11 +203,11 @@ namespace std _GLIBCXX_VISIBILITY(default)
       }
 
       int
-      encoding() const throw()
+      encoding() const _GLIBCXX_NOEXCEPT
       { return this->do_encoding(); }
 
       bool
-      always_noconv() const throw()
+      always_noconv() const _GLIBCXX_NOEXCEPT
       { return this->do_always_noconv(); }
 
       int
@@ -216,7 +216,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
       { return this->do_length(__state, __from, __end, __max); }
 
       int
-      max_length() const throw()
+      max_length() const _GLIBCXX_NOEXCEPT
       { return this->do_max_length(); }
 
     protected:
@@ -250,17 +250,17 @@ namespace std _GLIBCXX_VISIBILITY(default)
 	    intern_type*& __to_next) const = 0;
 
       virtual int
-      do_encoding() const throw() = 0;
+      do_encoding() const _GLIBCXX_NOEXCEPT = 0;
 
       virtual bool
-      do_always_noconv() const throw() = 0;
+      do_always_noconv() const _GLIBCXX_NOEXCEPT = 0;
 
       virtual int
       do_length(state_type&, const extern_type* __from,
 		const extern_type* __end, size_t __max) const = 0;
 
       virtual int
-      do_max_length() const throw() = 0;
+      do_max_length() const _GLIBCXX_NOEXCEPT = 0;
     };
 
 
@@ -319,17 +319,17 @@ namespace std _GLIBCXX_VISIBILITY(default)
 	    intern_type*& __to_next) const;
 
       virtual int
-      do_encoding() const throw();
+      do_encoding() const _GLIBCXX_NOEXCEPT;
 
       virtual bool
-      do_always_noconv() const throw();
+      do_always_noconv() const _GLIBCXX_NOEXCEPT;
 
       virtual int
       do_length(state_type&, const extern_type* __from,
 		const extern_type* __end, size_t __max) const;
 
       virtual int
-      do_max_length() const throw();
+      do_max_length() const _GLIBCXX_NOEXCEPT;
     };
 
   template<typename _InternT, typename _ExternT, typename _StateT>
@@ -379,17 +379,17 @@ namespace std _GLIBCXX_VISIBILITY(default)
 	    intern_type*& __to_next) const;
 
       virtual int
-      do_encoding() const throw();
+      do_encoding() const _GLIBCXX_NOEXCEPT;
 
       virtual bool
-      do_always_noconv() const throw();
+      do_always_noconv() const _GLIBCXX_NOEXCEPT;
 
       virtual int
       do_length(state_type&, const extern_type* __from,
 		const extern_type* __end, size_t __max) const;
 
       virtual int
-      do_max_length() const throw();
+      do_max_length() const _GLIBCXX_NOEXCEPT;
   };
 
 #ifdef _GLIBCXX_USE_WCHAR_T
@@ -439,17 +439,17 @@ namespace std _GLIBCXX_VISIBILITY(default)
 	     intern_type*& __to_next) const;
 
       virtual
-      int do_encoding() const throw();
+      int do_encoding() const _GLIBCXX_NOEXCEPT;
 
       virtual
-      bool do_always_noconv() const throw();
+      bool do_always_noconv() const _GLIBCXX_NOEXCEPT;
 
       virtual
       int do_length(state_type&, const extern_type* __from,
 		    const extern_type* __end, size_t __max) const;
 
       virtual int
-      do_max_length() const throw();
+      do_max_length() const _GLIBCXX_NOEXCEPT;
     };
 #endif //_GLIBCXX_USE_WCHAR_T
 
diff --git a/libstdc++-v3/src/c++11/Makefile.am b/libstdc++-v3/src/c++11/Makefile.am
index cf1e3be..921a3a7 100644
--- a/libstdc++-v3/src/c++11/Makefile.am
+++ b/libstdc++-v3/src/c++11/Makefile.am
@@ -30,6 +30,7 @@ headers =
 sources = \
 	chrono.cc \
 	condition_variable.cc \
+	codecvt.cc \
 	debug.cc \
 	functexcept.cc \
 	functional.cc \
diff --git a/libstdc++-v3/src/c++11/Makefile.in b/libstdc++-v3/src/c++11/Makefile.in
index 83b7bd1..d5143c4 100644
--- a/libstdc++-v3/src/c++11/Makefile.in
+++ b/libstdc++-v3/src/c++11/Makefile.in
@@ -67,7 +67,7 @@ CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libc__11convenience_la_LIBADD =
-am__objects_1 = chrono.lo condition_variable.lo debug.lo \
+am__objects_1 = chrono.lo condition_variable.lo codecvt.lo debug.lo \
 	functexcept.lo functional.lo future.lo hash_c++0x.lo \
 	hashtable_c++0x.lo limits.lo mutex.lo placeholders.lo \
 	random.lo regex.lo shared_ptr.lo snprintf_lite.lo \
@@ -313,6 +313,7 @@ headers =
 sources = \
 	chrono.cc \
 	condition_variable.cc \
+	codecvt.cc \
 	debug.cc \
 	functexcept.cc \
 	functional.cc \
diff --git a/libstdc++-v3/src/c++11/codecvt.cc b/libstdc++-v3/src/c++11/codecvt.cc
new file mode 100644
index 0000000..7c94c38
--- /dev/null
+++ b/libstdc++-v3/src/c++11/codecvt.cc
@@ -0,0 +1,151 @@
+// Copyright (C) 2000-2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+// Written by Benjamin Kosnik <bkoz@redhat.com>
+
+#include <locale>
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  // Definitions for locale::id of standard facets that are specialized.
+ locale::id codecvt<char, char, mbstate_t>::id;
+
+#ifdef _GLIBCXX_USE_WCHAR_T  
+  locale::id codecvt<wchar_t, char, mbstate_t>::id;
+#endif
+
+  codecvt<char, char, mbstate_t>::
+  codecvt(size_t __refs)
+  : __codecvt_abstract_base<char, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_get_c_locale())
+  { }
+
+  codecvt<char, char, mbstate_t>::
+  codecvt(__c_locale __cloc, size_t __refs)
+  : __codecvt_abstract_base<char, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_clone_c_locale(__cloc))
+  { }
+
+  codecvt<char, char, mbstate_t>::
+  ~codecvt()
+  { _S_destroy_c_locale(_M_c_locale_codecvt); }
+  
+  codecvt_base::result
+  codecvt<char, char, mbstate_t>::
+  do_out(state_type&, const intern_type* __from, 
+	 const intern_type*, const intern_type*& __from_next,
+	 extern_type* __to, extern_type*, 
+	 extern_type*& __to_next) const
+  { 
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // According to the resolution of DR19, "If returns noconv [...]
+    // there are no changes to the values in [to, to_limit)."
+    __from_next = __from; 
+    __to_next = __to;
+    return noconv;  
+  }
+  
+  codecvt_base::result
+  codecvt<char, char, mbstate_t>::
+  do_unshift(state_type&, extern_type* __to,
+             extern_type*, extern_type*& __to_next) const
+  { 
+    __to_next = __to; 
+    return noconv; 
+  }
+  
+  codecvt_base::result
+  codecvt<char, char, mbstate_t>::
+  do_in(state_type&, const extern_type* __from, 
+	const extern_type*, const extern_type*& __from_next,
+	intern_type* __to, intern_type*, intern_type*& __to_next) const
+  {
+    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+    // According to the resolution of DR19, "If returns noconv [...]
+    // there are no changes to the values in [to, to_limit)."
+    __from_next = __from; 
+    __to_next = __to;
+    return noconv;  
+  }
+
+  int 
+  codecvt<char, char, mbstate_t>::
+  do_encoding() const _GLIBCXX_NOEXCEPT
+  { return 1; }
+  
+  bool 
+  codecvt<char, char, mbstate_t>::
+  do_always_noconv() const _GLIBCXX_NOEXCEPT
+  { return true; }
+  
+  int 
+  codecvt<char, char, mbstate_t>::
+  do_length (state_type&, const extern_type* __from,
+	     const extern_type* __end, size_t __max) const
+  { 
+    size_t __d = static_cast<size_t>(__end - __from);
+    return std::min(__max, __d); 
+  }
+  
+  int 
+  codecvt<char, char, mbstate_t>::
+  do_max_length() const _GLIBCXX_NOEXCEPT
+  { return 1; }
+  
+#ifdef _GLIBCXX_USE_WCHAR_T
+  // codecvt<wchar_t, char, mbstate_t> required specialization
+  codecvt<wchar_t, char, mbstate_t>::
+  codecvt(size_t __refs)
+  : __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_get_c_locale())
+  { }
+
+  codecvt<wchar_t, char, mbstate_t>::
+  codecvt(__c_locale __cloc, size_t __refs)
+  : __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
+  _M_c_locale_codecvt(_S_clone_c_locale(__cloc))
+  { }
+
+  codecvt<wchar_t, char, mbstate_t>::
+  ~codecvt()
+  { _S_destroy_c_locale(_M_c_locale_codecvt); }
+  
+  codecvt_base::result
+  codecvt<wchar_t, char, mbstate_t>::
+  do_unshift(state_type&, extern_type* __to,
+	     extern_type*, extern_type*& __to_next) const
+  {
+    // XXX Probably wrong for stateful encodings
+    __to_next = __to;
+    return noconv;
+  }
+  
+  bool 
+  codecvt<wchar_t, char, mbstate_t>::
+  do_always_noconv() const _GLIBCXX_NOEXCEPT
+  { return false; }
+#endif //  _GLIBCXX_USE_WCHAR_T
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
diff --git a/libstdc++-v3/src/c++98/Makefile.am b/libstdc++-v3/src/c++98/Makefile.am
index 9cebe1e..a714fe9 100644
--- a/libstdc++-v3/src/c++98/Makefile.am
+++ b/libstdc++-v3/src/c++98/Makefile.am
@@ -108,7 +108,6 @@ sources = \
 	bitmap_allocator.cc \
 	pool_allocator.cc \
 	mt_allocator.cc \
-	codecvt.cc \
 	complex_io.cc \
 	ctype.cc \
 	globals_io.cc \
diff --git a/libstdc++-v3/src/c++98/Makefile.in b/libstdc++-v3/src/c++98/Makefile.in
index cf9cda5..691614f 100644
--- a/libstdc++-v3/src/c++98/Makefile.in
+++ b/libstdc++-v3/src/c++98/Makefile.in
@@ -81,7 +81,7 @@ am__objects_3 = parallel_settings.lo
 am__objects_4 = basic_file.lo c++locale.lo $(am__objects_2) \
 	$(am__objects_3)
 am__objects_5 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
-	codecvt.lo complex_io.lo ctype.lo globals_io.lo hash_tr1.lo \
+	complex_io.lo ctype.lo globals_io.lo hash_tr1.lo \
 	hashtable_tr1.lo ios.lo ios_failure.lo ios_init.lo \
 	ios_locale.lo list.lo list-aux.lo list-aux-2.lo \
 	list_associated.lo list_associated-2.lo locale.lo \
@@ -372,7 +372,6 @@ sources = \
 	bitmap_allocator.cc \
 	pool_allocator.cc \
 	mt_allocator.cc \
-	codecvt.cc \
 	complex_io.cc \
 	ctype.cc \
 	globals_io.cc \
diff --git a/libstdc++-v3/src/c++98/codecvt.cc b/libstdc++-v3/src/c++98/codecvt.cc
deleted file mode 100644
index fc19077..0000000
--- a/libstdc++-v3/src/c++98/codecvt.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright (C) 2000-2014 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Written by Benjamin Kosnik <bkoz@redhat.com>
-
-#include <locale>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
-
-  // Definitions for locale::id of standard facets that are specialized.
- locale::id codecvt<char, char, mbstate_t>::id;
-
-#ifdef _GLIBCXX_USE_WCHAR_T  
-  locale::id codecvt<wchar_t, char, mbstate_t>::id;
-#endif
-
-  codecvt<char, char, mbstate_t>::
-  codecvt(size_t __refs)
-  : __codecvt_abstract_base<char, char, mbstate_t>(__refs),
-  _M_c_locale_codecvt(_S_get_c_locale())
-  { }
-
-  codecvt<char, char, mbstate_t>::
-  codecvt(__c_locale __cloc, size_t __refs)
-  : __codecvt_abstract_base<char, char, mbstate_t>(__refs),
-  _M_c_locale_codecvt(_S_clone_c_locale(__cloc))
-  { }
-
-  codecvt<char, char, mbstate_t>::
-  ~codecvt()
-  { _S_destroy_c_locale(_M_c_locale_codecvt); }
-  
-  codecvt_base::result
-  codecvt<char, char, mbstate_t>::
-  do_out(state_type&, const intern_type* __from, 
-	 const intern_type*, const intern_type*& __from_next,
-	 extern_type* __to, extern_type*, 
-	 extern_type*& __to_next) const
-  { 
-    // _GLIBCXX_RESOLVE_LIB_DEFECTS
-    // According to the resolution of DR19, "If returns noconv [...]
-    // there are no changes to the values in [to, to_limit)."
-    __from_next = __from; 
-    __to_next = __to;
-    return noconv;  
-  }
-  
-  codecvt_base::result
-  codecvt<char, char, mbstate_t>::
-  do_unshift(state_type&, extern_type* __to,
-             extern_type*, extern_type*& __to_next) const
-  { 
-    __to_next = __to; 
-    return noconv; 
-  }
-  
-  codecvt_base::result
-  codecvt<char, char, mbstate_t>::
-  do_in(state_type&, const extern_type* __from, 
-	const extern_type*, const extern_type*& __from_next,
-	intern_type* __to, intern_type*, intern_type*& __to_next) const
-  {
-    // _GLIBCXX_RESOLVE_LIB_DEFECTS
-    // According to the resolution of DR19, "If returns noconv [...]
-    // there are no changes to the values in [to, to_limit)."
-    __from_next = __from; 
-    __to_next = __to;
-    return noconv;  
-  }
-
-  int 
-  codecvt<char, char, mbstate_t>::
-  do_encoding() const throw() 
-  { return 1; }
-  
-  bool 
-  codecvt<char, char, mbstate_t>::
-  do_always_noconv() const throw() 
-  { return true; }
-  
-  int 
-  codecvt<char, char, mbstate_t>::
-  do_length (state_type&, const extern_type* __from,
-	     const extern_type* __end, size_t __max) const
-  { 
-    size_t __d = static_cast<size_t>(__end - __from);
-    return std::min(__max, __d); 
-  }
-  
-  int 
-  codecvt<char, char, mbstate_t>::
-  do_max_length() const throw() 
-  { return 1; }
-  
-#ifdef _GLIBCXX_USE_WCHAR_T
-  // codecvt<wchar_t, char, mbstate_t> required specialization
-  codecvt<wchar_t, char, mbstate_t>::
-  codecvt(size_t __refs)
-  : __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
-  _M_c_locale_codecvt(_S_get_c_locale())
-  { }
-
-  codecvt<wchar_t, char, mbstate_t>::
-  codecvt(__c_locale __cloc, size_t __refs)
-  : __codecvt_abstract_base<wchar_t, char, mbstate_t>(__refs),
-  _M_c_locale_codecvt(_S_clone_c_locale(__cloc))
-  { }
-
-  codecvt<wchar_t, char, mbstate_t>::
-  ~codecvt()
-  { _S_destroy_c_locale(_M_c_locale_codecvt); }
-  
-  codecvt_base::result
-  codecvt<wchar_t, char, mbstate_t>::
-  do_unshift(state_type&, extern_type* __to,
-	     extern_type*, extern_type*& __to_next) const
-  {
-    // XXX Probably wrong for stateful encodings
-    __to_next = __to;
-    return noconv;
-  }
-  
-  bool 
-  codecvt<wchar_t, char, mbstate_t>::
-  do_always_noconv() const throw()
-  { return false; }
-#endif //  _GLIBCXX_USE_WCHAR_T
-
-_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
-- 
1.9.2



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]