Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // filebuf with encoding state type -*- C++ -*-
  2.  
  3. // Copyright (C) 2002-2015 Free Software Foundation, Inc.
  4. //
  5. // This file is part of the GNU ISO C++ Library.  This library is free
  6. // software; you can redistribute it and/or modify it under the
  7. // terms of the GNU General Public License as published by the
  8. // Free Software Foundation; either version 3, or (at your option)
  9. // any later version.
  10.  
  11. // This library is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15.  
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19.  
  20. // You should have received a copy of the GNU General Public License and
  21. // a copy of the GCC Runtime Library Exception along with this program;
  22. // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23. // <http://www.gnu.org/licenses/>.
  24.  
  25. /** @file ext/enc_filebuf.h
  26.  *  This file is a GNU extension to the Standard C++ Library.
  27.  */
  28.  
  29. #ifndef _EXT_ENC_FILEBUF_H
  30. #define _EXT_ENC_FILEBUF_H 1
  31.  
  32. #include <fstream>
  33. #include <locale>
  34. #include <ext/codecvt_specializations.h>
  35.  
  36. namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  37. {
  38. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  39.  
  40.   /// class enc_filebuf.
  41.   template<typename _CharT>
  42.     class enc_filebuf
  43.     : public std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >
  44.     {
  45.     public:
  46.       typedef encoding_char_traits<_CharT>      traits_type;
  47.       typedef typename traits_type::state_type  state_type;
  48.       typedef typename traits_type::pos_type    pos_type;
  49.  
  50.       enc_filebuf(state_type& __state)
  51.       : std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >()
  52.       { this->_M_state_beg = __state; }
  53.  
  54.     private:
  55.       // concept requirements:
  56.       // Set state type to something useful.
  57.       // Something more than copyconstructible is needed here, so
  58.       // require default and copy constructible + assignment operator.
  59.       __glibcxx_class_requires(state_type, _SGIAssignableConcept)
  60.     };
  61.  
  62. _GLIBCXX_END_NAMESPACE_VERSION
  63. } // namespace
  64.  
  65. #endif
  66.