Index: gcc/libstdc++-v3/include/bits/codecvt.h |
diff --git a/gcc/libstdc++-v3/include/bits/codecvt.h b/gcc/libstdc++-v3/include/bits/codecvt.h |
deleted file mode 100644 |
index 2dbb4986337f9f08c3799b52f9448b28f7fd0830..0000000000000000000000000000000000000000 |
--- a/gcc/libstdc++-v3/include/bits/codecvt.h |
+++ /dev/null |
@@ -1,497 +0,0 @@ |
-// Locale support (codecvt) -*- C++ -*- |
- |
-// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, |
-// 2009 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/>. |
- |
-/** @file bits/codecvt.h |
- * This is an internal header file, included by other library headers. |
- * You should not attempt to use it directly. |
- */ |
- |
-// |
-// ISO C++ 14882: 22.2.1.5 Template class codecvt |
-// |
- |
-// Written by Benjamin Kosnik <bkoz@redhat.com> |
- |
-#ifndef _CODECVT_H |
-#define _CODECVT_H 1 |
- |
-#pragma GCC system_header |
- |
-_GLIBCXX_BEGIN_NAMESPACE(std) |
- |
- /// Empty base class for codecvt facet [22.2.1.5]. |
- class codecvt_base |
- { |
- public: |
- enum result |
- { |
- ok, |
- partial, |
- error, |
- noconv |
- }; |
- }; |
- |
- /** |
- * @brief Common base for codecvt functions. |
- * |
- * This template class provides implementations of the public functions |
- * that forward to the protected virtual functions. |
- * |
- * This template also provides abstract stubs for the protected virtual |
- * functions. |
- */ |
- template<typename _InternT, typename _ExternT, typename _StateT> |
- class __codecvt_abstract_base |
- : public locale::facet, public codecvt_base |
- { |
- public: |
- // Types: |
- typedef codecvt_base::result result; |
- typedef _InternT intern_type; |
- typedef _ExternT extern_type; |
- typedef _StateT state_type; |
- |
- // 22.2.1.5.1 codecvt members |
- /** |
- * @brief Convert from internal to external character set. |
- * |
- * Converts input string of intern_type to output string of |
- * extern_type. This is analogous to wcsrtombs. It does this by |
- * calling codecvt::do_out. |
- * |
- * The source and destination character sets are determined by the |
- * facet's locale, internal and external types. |
- * |
- * The characters in [from,from_end) are converted and written to |
- * [to,to_end). from_next and to_next are set to point to the |
- * character following the last successfully converted character, |
- * respectively. If the result needed no conversion, from_next and |
- * to_next are not affected. |
- * |
- * The @a state argument should be initialized if the input is at the |
- * beginning and carried from a previous call if continuing |
- * conversion. There are no guarantees about how @a state is used. |
- * |
- * The result returned is a member of codecvt_base::result. If |
- * all the input is converted, returns codecvt_base::ok. If no |
- * conversion is necessary, returns codecvt_base::noconv. If |
- * the input ends early or there is insufficient space in the |
- * output, returns codecvt_base::partial. Otherwise the |
- * conversion failed and codecvt_base::error is returned. |
- * |
- * @param state Persistent conversion state data. |
- * @param from Start of input. |
- * @param from_end End of input. |
- * @param from_next Returns start of unconverted data. |
- * @param to Start of output buffer. |
- * @param to_end End of output buffer. |
- * @param to_next Returns start of unused output area. |
- * @return codecvt_base::result. |
- */ |
- result |
- out(state_type& __state, const intern_type* __from, |
- const intern_type* __from_end, const intern_type*& __from_next, |
- extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const |
- { |
- return this->do_out(__state, __from, __from_end, __from_next, |
- __to, __to_end, __to_next); |
- } |
- |
- /** |
- * @brief Reset conversion state. |
- * |
- * Writes characters to output that would restore @a state to initial |
- * conditions. The idea is that if a partial conversion occurs, then |
- * the converting the characters written by this function would leave |
- * the state in initial conditions, rather than partial conversion |
- * state. It does this by calling codecvt::do_unshift(). |
- * |
- * For example, if 4 external characters always converted to 1 internal |
- * character, and input to in() had 6 external characters with state |
- * saved, this function would write two characters to the output and |
- * set the state to initialized conditions. |
- * |
- * The source and destination character sets are determined by the |
- * facet's locale, internal and external types. |
- * |
- * The result returned is a member of codecvt_base::result. If the |
- * state could be reset and data written, returns codecvt_base::ok. If |
- * no conversion is necessary, returns codecvt_base::noconv. If the |
- * output has insufficient space, returns codecvt_base::partial. |
- * Otherwise the reset failed and codecvt_base::error is returned. |
- * |
- * @param state Persistent conversion state data. |
- * @param to Start of output buffer. |
- * @param to_end End of output buffer. |
- * @param to_next Returns start of unused output area. |
- * @return codecvt_base::result. |
- */ |
- result |
- unshift(state_type& __state, extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const |
- { return this->do_unshift(__state, __to,__to_end,__to_next); } |
- |
- /** |
- * @brief Convert from external to internal character set. |
- * |
- * Converts input string of extern_type to output string of |
- * intern_type. This is analogous to mbsrtowcs. It does this by |
- * calling codecvt::do_in. |
- * |
- * The source and destination character sets are determined by the |
- * facet's locale, internal and external types. |
- * |
- * The characters in [from,from_end) are converted and written to |
- * [to,to_end). from_next and to_next are set to point to the |
- * character following the last successfully converted character, |
- * respectively. If the result needed no conversion, from_next and |
- * to_next are not affected. |
- * |
- * The @a state argument should be initialized if the input is at the |
- * beginning and carried from a previous call if continuing |
- * conversion. There are no guarantees about how @a state is used. |
- * |
- * The result returned is a member of codecvt_base::result. If |
- * all the input is converted, returns codecvt_base::ok. If no |
- * conversion is necessary, returns codecvt_base::noconv. If |
- * the input ends early or there is insufficient space in the |
- * output, returns codecvt_base::partial. Otherwise the |
- * conversion failed and codecvt_base::error is returned. |
- * |
- * @param state Persistent conversion state data. |
- * @param from Start of input. |
- * @param from_end End of input. |
- * @param from_next Returns start of unconverted data. |
- * @param to Start of output buffer. |
- * @param to_end End of output buffer. |
- * @param to_next Returns start of unused output area. |
- * @return codecvt_base::result. |
- */ |
- result |
- in(state_type& __state, const extern_type* __from, |
- const extern_type* __from_end, const extern_type*& __from_next, |
- intern_type* __to, intern_type* __to_end, |
- intern_type*& __to_next) const |
- { |
- return this->do_in(__state, __from, __from_end, __from_next, |
- __to, __to_end, __to_next); |
- } |
- |
- int |
- encoding() const throw() |
- { return this->do_encoding(); } |
- |
- bool |
- always_noconv() const throw() |
- { return this->do_always_noconv(); } |
- |
- int |
- length(state_type& __state, const extern_type* __from, |
- const extern_type* __end, size_t __max) const |
- { return this->do_length(__state, __from, __end, __max); } |
- |
- int |
- max_length() const throw() |
- { return this->do_max_length(); } |
- |
- protected: |
- explicit |
- __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } |
- |
- virtual |
- ~__codecvt_abstract_base() { } |
- |
- /** |
- * @brief Convert from internal to external character set. |
- * |
- * Converts input string of intern_type to output string of |
- * extern_type. This function is a hook for derived classes to change |
- * the value returned. @see out for more information. |
- */ |
- virtual result |
- do_out(state_type& __state, const intern_type* __from, |
- const intern_type* __from_end, const intern_type*& __from_next, |
- extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const = 0; |
- |
- virtual result |
- do_unshift(state_type& __state, extern_type* __to, |
- extern_type* __to_end, extern_type*& __to_next) const = 0; |
- |
- virtual result |
- do_in(state_type& __state, const extern_type* __from, |
- const extern_type* __from_end, const extern_type*& __from_next, |
- intern_type* __to, intern_type* __to_end, |
- intern_type*& __to_next) const = 0; |
- |
- virtual int |
- do_encoding() const throw() = 0; |
- |
- virtual bool |
- do_always_noconv() const throw() = 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; |
- }; |
- |
- /// @brief class codecvt [22.2.1.5]. |
- /// NB: Generic, mostly useless implementation. |
- template<typename _InternT, typename _ExternT, typename _StateT> |
- class codecvt |
- : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> |
- { |
- public: |
- // Types: |
- typedef codecvt_base::result result; |
- typedef _InternT intern_type; |
- typedef _ExternT extern_type; |
- typedef _StateT state_type; |
- |
- protected: |
- __c_locale _M_c_locale_codecvt; |
- |
- public: |
- static locale::id id; |
- |
- explicit |
- codecvt(size_t __refs = 0) |
- : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs) { } |
- |
- explicit |
- codecvt(__c_locale __cloc, size_t __refs = 0); |
- |
- protected: |
- virtual |
- ~codecvt() { } |
- |
- virtual result |
- do_out(state_type& __state, const intern_type* __from, |
- const intern_type* __from_end, const intern_type*& __from_next, |
- extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const; |
- |
- virtual result |
- do_unshift(state_type& __state, extern_type* __to, |
- extern_type* __to_end, extern_type*& __to_next) const; |
- |
- virtual result |
- do_in(state_type& __state, const extern_type* __from, |
- const extern_type* __from_end, const extern_type*& __from_next, |
- intern_type* __to, intern_type* __to_end, |
- intern_type*& __to_next) const; |
- |
- virtual int |
- do_encoding() const throw(); |
- |
- virtual bool |
- do_always_noconv() const throw(); |
- |
- 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(); |
- }; |
- |
- template<typename _InternT, typename _ExternT, typename _StateT> |
- locale::id codecvt<_InternT, _ExternT, _StateT>::id; |
- |
- /// class codecvt<char, char, mbstate_t> specialization. |
- template<> |
- class codecvt<char, char, mbstate_t> |
- : public __codecvt_abstract_base<char, char, mbstate_t> |
- { |
- public: |
- // Types: |
- typedef char intern_type; |
- typedef char extern_type; |
- typedef mbstate_t state_type; |
- |
- protected: |
- __c_locale _M_c_locale_codecvt; |
- |
- public: |
- static locale::id id; |
- |
- explicit |
- codecvt(size_t __refs = 0); |
- |
- explicit |
- codecvt(__c_locale __cloc, size_t __refs = 0); |
- |
- protected: |
- virtual |
- ~codecvt(); |
- |
- virtual result |
- do_out(state_type& __state, const intern_type* __from, |
- const intern_type* __from_end, const intern_type*& __from_next, |
- extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const; |
- |
- virtual result |
- do_unshift(state_type& __state, extern_type* __to, |
- extern_type* __to_end, extern_type*& __to_next) const; |
- |
- virtual result |
- do_in(state_type& __state, const extern_type* __from, |
- const extern_type* __from_end, const extern_type*& __from_next, |
- intern_type* __to, intern_type* __to_end, |
- intern_type*& __to_next) const; |
- |
- virtual int |
- do_encoding() const throw(); |
- |
- virtual bool |
- do_always_noconv() const throw(); |
- |
- 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(); |
- }; |
- |
-#ifdef _GLIBCXX_USE_WCHAR_T |
- /// class codecvt<wchar_t, char, mbstate_t> specialization. |
- template<> |
- class codecvt<wchar_t, char, mbstate_t> |
- : public __codecvt_abstract_base<wchar_t, char, mbstate_t> |
- { |
- public: |
- // Types: |
- typedef wchar_t intern_type; |
- typedef char extern_type; |
- typedef mbstate_t state_type; |
- |
- protected: |
- __c_locale _M_c_locale_codecvt; |
- |
- public: |
- static locale::id id; |
- |
- explicit |
- codecvt(size_t __refs = 0); |
- |
- explicit |
- codecvt(__c_locale __cloc, size_t __refs = 0); |
- |
- protected: |
- virtual |
- ~codecvt(); |
- |
- virtual result |
- do_out(state_type& __state, const intern_type* __from, |
- const intern_type* __from_end, const intern_type*& __from_next, |
- extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const; |
- |
- virtual result |
- do_unshift(state_type& __state, |
- extern_type* __to, extern_type* __to_end, |
- extern_type*& __to_next) const; |
- |
- virtual result |
- do_in(state_type& __state, |
- const extern_type* __from, const extern_type* __from_end, |
- const extern_type*& __from_next, |
- intern_type* __to, intern_type* __to_end, |
- intern_type*& __to_next) const; |
- |
- virtual |
- int do_encoding() const throw(); |
- |
- virtual |
- bool do_always_noconv() const throw(); |
- |
- 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(); |
- }; |
-#endif //_GLIBCXX_USE_WCHAR_T |
- |
- /// class codecvt_byname [22.2.1.6]. |
- template<typename _InternT, typename _ExternT, typename _StateT> |
- class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> |
- { |
- public: |
- explicit |
- codecvt_byname(const char* __s, size_t __refs = 0) |
- : codecvt<_InternT, _ExternT, _StateT>(__refs) |
- { |
- if (__builtin_strcmp(__s, "C") != 0 |
- && __builtin_strcmp(__s, "POSIX") != 0) |
- { |
- this->_S_destroy_c_locale(this->_M_c_locale_codecvt); |
- this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); |
- } |
- } |
- |
- protected: |
- virtual |
- ~codecvt_byname() { } |
- }; |
- |
- // Inhibit implicit instantiations for required instantiations, |
- // which are defined via explicit instantiations elsewhere. |
- // NB: This syntax is a GNU extension. |
-#if _GLIBCXX_EXTERN_TEMPLATE |
- extern template class codecvt_byname<char, char, mbstate_t>; |
- |
- extern template |
- const codecvt<char, char, mbstate_t>& |
- use_facet<codecvt<char, char, mbstate_t> >(const locale&); |
- |
- extern template |
- bool |
- has_facet<codecvt<char, char, mbstate_t> >(const locale&); |
- |
-#ifdef _GLIBCXX_USE_WCHAR_T |
- extern template class codecvt_byname<wchar_t, char, mbstate_t>; |
- |
- extern template |
- const codecvt<wchar_t, char, mbstate_t>& |
- use_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&); |
- |
- extern template |
- bool |
- has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&); |
-#endif |
-#endif |
- |
-_GLIBCXX_END_NAMESPACE |
- |
-#endif // _CODECVT_H |