This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[RFC 1/2] libstdc++: Use _GLIBCXX_NOEXCEPT for codecvt.
- From: Rüdiger Sonderfeld <ruediger at c-plusplus dot de>
- To: libstdc++ at gcc dot gnu dot org
- Date: Fri, 25 Apr 2014 23:45:15 +0200
- Subject: [RFC 1/2] libstdc++: Use _GLIBCXX_NOEXCEPT for codecvt.
- Authentication-results: sourceware.org; auth=none
- References: <cover dot 1398460425 dot git dot ruediger at c-plusplus dot de>
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