// -*- C++ -*- //===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef _LIBCPP___CXX03_CODECVT #define _LIBCPP___CXX03_CODECVT /* codecvt synopsis namespace std { enum codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 }; template class codecvt_utf8 : public codecvt { explicit codecvt_utf8(size_t refs = 0); ~codecvt_utf8(); }; template class codecvt_utf16 : public codecvt { explicit codecvt_utf16(size_t refs = 0); ~codecvt_utf16(); }; template class codecvt_utf8_utf16 : public codecvt { explicit codecvt_utf8_utf16(size_t refs = 0); ~codecvt_utf8_utf16(); }; } // std */ #include <__cxx03/__config> #include <__cxx03/__locale> #include <__cxx03/version> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif _LIBCPP_BEGIN_NAMESPACE_STD enum codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 }; // codecvt_utf8 template class __codecvt_utf8; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8 : public codecvt { unsigned long __maxcode_; _LIBCPP_SUPPRESS_DEPRECATED_PUSH codecvt_mode __mode_; _LIBCPP_SUPPRESS_DEPRECATED_POP public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_SUPPRESS_DEPRECATED_PUSH _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; #endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template class _LIBCPP_TEMPLATE_VIS codecvt_utf8 : public __codecvt_utf8<_Elem> { public: _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf8(size_t __refs = 0) : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {} _LIBCPP_HIDE_FROM_ABI ~codecvt_utf8() {} }; _LIBCPP_SUPPRESS_DEPRECATED_POP // codecvt_utf16 template class __codecvt_utf16; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16 : public codecvt { unsigned long __maxcode_; _LIBCPP_SUPPRESS_DEPRECATED_PUSH codecvt_mode __mode_; _LIBCPP_SUPPRESS_DEPRECATED_POP public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_SUPPRESS_DEPRECATED_PUSH _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16 : public codecvt { unsigned long __maxcode_; _LIBCPP_SUPPRESS_DEPRECATED_PUSH codecvt_mode __mode_; _LIBCPP_SUPPRESS_DEPRECATED_POP public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_SUPPRESS_DEPRECATED_PUSH _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; #endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf16 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template class _LIBCPP_TEMPLATE_VIS codecvt_utf16 : public __codecvt_utf16<_Elem, _Mode & little_endian> { public: _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf16(size_t __refs = 0) : __codecvt_utf16 < _Elem, _Mode & little_endian > (__refs, _Maxcode, _Mode) {} _LIBCPP_HIDE_FROM_ABI ~codecvt_utf16() {} }; _LIBCPP_SUPPRESS_DEPRECATED_POP // codecvt_utf8_utf16 template class __codecvt_utf8_utf16; #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16 : public codecvt { unsigned long __maxcode_; _LIBCPP_SUPPRESS_DEPRECATED_PUSH codecvt_mode __mode_; _LIBCPP_SUPPRESS_DEPRECATED_POP public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_SUPPRESS_DEPRECATED_PUSH _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; #endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template <> class _LIBCPP_EXPORTED_FROM_ABI __codecvt_utf8_utf16 : public codecvt { unsigned long __maxcode_; codecvt_mode __mode_; public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; _LIBCPP_HIDE_FROM_ABI explicit __codecvt_utf8_utf16(size_t __refs, unsigned long __maxcode, codecvt_mode __mode) : codecvt(__refs), __maxcode_(__maxcode), __mode_(__mode) {} _LIBCPP_SUPPRESS_DEPRECATED_POP protected: result do_out(state_type& __st, const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; result do_in(state_type& __st, const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const override; result do_unshift(state_type& __st, extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const override; int do_encoding() const _NOEXCEPT override; bool do_always_noconv() const _NOEXCEPT override; int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const override; int do_max_length() const _NOEXCEPT override; }; _LIBCPP_SUPPRESS_DEPRECATED_PUSH template class _LIBCPP_TEMPLATE_VIS codecvt_utf8_utf16 : public __codecvt_utf8_utf16<_Elem> { public: _LIBCPP_HIDE_FROM_ABI explicit codecvt_utf8_utf16(size_t __refs = 0) : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {} _LIBCPP_HIDE_FROM_ABI ~codecvt_utf8_utf16() {} }; _LIBCPP_SUPPRESS_DEPRECATED_POP _LIBCPP_END_NAMESPACE_STD #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) # include <__cxx03/atomic> # include <__cxx03/cstddef> # include <__cxx03/cstdlib> # include <__cxx03/cstring> # include <__cxx03/iosfwd> # include <__cxx03/limits> # include <__cxx03/mutex> # include <__cxx03/new> # include <__cxx03/stdexcept> # include <__cxx03/type_traits> # include <__cxx03/typeinfo> #endif #endif // _LIBCPP___CXX03_CODECVT