codecvt.h

来自「symbian上STL模板库的实现」· C头文件 代码 · 共 479 行 · 第 1/2 页

H
479
字号
      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;    };  // 22.2.1.5 Template class codecvt  // 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;  // codecvt<char, char, mbstate_t> required 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  // codecvt<wchar_t, char, mbstate_t> required 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  // 22.2.1.6  Template class codecvt_byname  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 (std::strcmp(__s, "C") != 0 && std::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() { }    };  // Include host and configuration specific partial specializations  // with additional functionality, if possible.#ifdef _GLIBCXX_USE_WCHAR_T  #include <bits/codecvt_specializations.h>#endif#endif // _CODECVT_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?