Home | History | Annotate | Download | only in ext
      1 // filebuf with encoding state type -*- C++ -*-
      2 
      3 // Copyright (C) 2002, 2003, 2004, 2007, 2009 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 _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
     37 
     38   /// class enc_filebuf.
     39   template<typename _CharT>
     40     class enc_filebuf
     41     : public std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >
     42     {
     43     public:
     44       typedef encoding_char_traits<_CharT>     	traits_type;
     45       typedef typename traits_type::state_type	state_type;
     46       typedef typename traits_type::pos_type	pos_type;
     47 
     48       enc_filebuf(state_type& __state)
     49       : std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >()
     50       { this->_M_state_beg = __state; }
     51 
     52     private:
     53       // concept requirements:
     54       // Set state type to something useful.
     55       // Something more than copyconstructible is needed here, so
     56       // require default and copy constructible + assignment operator.
     57       __glibcxx_class_requires(state_type, _SGIAssignableConcept)
     58     };
     59 
     60 _GLIBCXX_END_NAMESPACE
     61 
     62 #endif
     63