]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libstdc++-v3/include/std/std_fstream.h
Imported gcc-4.4.3
[msp430-gcc.git] / libstdc++-v3 / include / std / std_fstream.h
diff --git a/libstdc++-v3/include/std/std_fstream.h b/libstdc++-v3/include/std/std_fstream.h
deleted file mode 100644 (file)
index 838b99d..0000000
+++ /dev/null
@@ -1,579 +0,0 @@
-// File based streams -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-// 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 2, 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.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 27.8  File-based streams
-//
-
-/** @file fstream
- *  This is a Standard C++ Library header.  You should @c #include this header
- *  in your programs, rather than any of the "st[dl]_*.h" implementation files.
- */
-
-#ifndef _CPP_FSTREAM
-#define _CPP_FSTREAM   1
-
-#pragma GCC system_header
-
-#include <istream>
-#include <ostream>
-#include <locale>      // For codecvt
-#include <bits/basic_file.h>
-#include <bits/gthr.h>
-
-namespace std
-{
-  template<typename _CharT, typename _Traits>
-    class basic_filebuf : public basic_streambuf<_CharT, _Traits>
-    {
-    public:
-      // Types:
-      typedef _CharT                                   char_type;
-      typedef _Traits                                  traits_type;
-      typedef typename traits_type::int_type           int_type;
-      typedef typename traits_type::pos_type           pos_type;
-      typedef typename traits_type::off_type           off_type;
-
-      // Non-standard Types:
-      typedef basic_streambuf<char_type, traits_type>          __streambuf_type;
-      typedef basic_filebuf<char_type, traits_type>     __filebuf_type;
-      typedef __basic_file<char>                       __file_type;
-      typedef typename traits_type::state_type          __state_type;
-      typedef codecvt<char_type, char, __state_type>    __codecvt_type;
-      typedef typename __codecvt_type::result          __res_type;
-      typedef ctype<char_type>                          __ctype_type;
-
-      friend class ios_base; // For sync_with_stdio.
-
-    protected:
-      // Data Members:
-      // MT lock inherited from libio or other low-level io library.
-      __c_lock                 _M_lock;
-
-      // External buffer.
-      __file_type              _M_file;
-
-      // Current and beginning state type for codecvt.
-      __state_type             _M_state_cur;
-      __state_type             _M_state_beg;
-
-      // Set iff _M_buf is allocated memory from _M_allocate_internal_buffer.
-      bool                     _M_buf_allocated;
-      
-      // XXX Needed?
-      bool                     _M_last_overflowed;
-
-      // The position in the buffer corresponding to the external file
-      // pointer.
-      char_type*               _M_filepos;
-
-    public:
-      // Constructors/destructor:
-      basic_filebuf();
-
-      virtual
-      ~basic_filebuf()
-      {
-       this->close();
-       _M_last_overflowed = false;
-      }
-
-      // Members:
-      bool
-      is_open() const { return _M_file.is_open(); }
-
-      __filebuf_type*
-      open(const char* __s, ios_base::openmode __mode);
-
-      __filebuf_type*
-      close();
-
-    protected:
-      void
-      _M_allocate_internal_buffer();
-
-      void
-      _M_destroy_internal_buffer();
-
-      // Overridden virtual functions:
-      virtual streamsize
-      showmanyc();
-
-      // Stroustrup, 1998, p. 628
-      // underflow() and uflow() functions are called to get the next
-      // charater from the real input source when the buffer is empty.
-      // Buffered input uses underflow()
-
-      // The only difference between underflow() and uflow() is that the
-      // latter bumps _M_in_cur after the read.  In the sync_with_stdio
-      // case, this is important, as we need to unget the read character in
-      // the underflow() case in order to maintain synchronization.  So
-      // instead of calling underflow() from uflow(), we create a common
-      // subroutine to do the real work.
-      int_type
-      _M_underflow_common(bool __bump);
-
-      virtual int_type
-      underflow();
-
-      virtual int_type
-      uflow();
-
-      virtual int_type
-      pbackfail(int_type __c = _Traits::eof());
-
-      // NB: For what the standard expects of the overflow function,
-      // see _M_really_overflow(), below. Because basic_streambuf's
-      // sputc/sputn call overflow directly, and the complications of
-      // this implementation's setting of the initial pointers all
-      // equal to _M_buf when initializing, it seems essential to have
-      // this in actuality be a helper function that checks for the
-      // eccentricities of this implementation, and then call
-      // overflow() if indeed the buffer is full.
-      virtual int_type
-      overflow(int_type __c = _Traits::eof());
-
-      // Stroustrup, 1998, p 648
-      // The overflow() function is called to transfer characters to the
-      // real output destination when the buffer is full. A call to
-      // overflow(c) outputs the contents of the buffer plus the
-      // character c.
-      // 27.5.2.4.5
-      // Consume some sequence of the characters in the pending sequence.
-      int_type
-      _M_really_overflow(int_type __c = _Traits::eof());
-
-      // Convert internal byte sequence to external, char-based
-      // sequence via codecvt.
-      void
-      _M_convert_to_external(char_type*, streamsize, streamsize&, streamsize&);
-
-      virtual __streambuf_type*
-      setbuf(char_type* __s, streamsize __n);
-
-      virtual pos_type
-      seekoff(off_type __off, ios_base::seekdir __way,
-             ios_base::openmode __mode = ios_base::in | ios_base::out);
-
-      virtual pos_type
-      seekpos(pos_type __pos,
-             ios_base::openmode __mode = ios_base::in | ios_base::out);
-
-      virtual int
-      sync()
-      {
-       bool __testput = _M_out_cur && _M_out_beg < _M_out_end;
-
-       // Make sure that the internal buffer resyncs its idea of
-       // the file position with the external file.
-       if (__testput)
-         {
-           // Need to restore current position after the write.
-           off_type __off = _M_out_cur - _M_out_end;
-           _M_really_overflow(); // _M_file.sync() will be called within
-           if (__off)
-             _M_file.seekoff(__off, ios_base::cur);
-         }
-       else
-         _M_file.sync();
-       _M_last_overflowed = false;
-       return 0;
-      }
-
-      virtual void
-      imbue(const locale& __loc);
-
-      virtual streamsize
-      xsgetn(char_type* __s, streamsize __n)
-      {
-       streamsize __ret = 0;
-       // Clear out pback buffer before going on to the real deal...
-       if (_M_pback_init)
-         {
-           while (__ret < __n && _M_in_cur < _M_in_end)
-             {
-               *__s = *_M_in_cur;
-               ++__ret;
-               ++__s;
-               ++_M_in_cur;
-             }
-           _M_pback_destroy();
-         }
-       if (__ret < __n)
-         __ret += __streambuf_type::xsgetn(__s, __n - __ret);
-       return __ret;
-      }
-
-      virtual streamsize
-      xsputn(const char_type* __s, streamsize __n)
-      {
-       _M_pback_destroy();
-       return __streambuf_type::xsputn(__s, __n);
-      }
-
-      void
-      _M_output_unshift();
-
-      // These three functions are used to clarify internal buffer
-      // maintenance. After an overflow, or after a seekoff call that
-      // started at beg or end, or possibly when the stream becomes
-      // unbuffered, and a myrid other obscure corner cases, the
-      // internal buffer does not truly reflect the contents of the
-      // external buffer. At this point, for whatever reason, it is in
-      // an indeterminate state.
-      void
-      _M_set_indeterminate(void)
-      {
-       if (_M_mode & ios_base::in)
-         this->setg(_M_buf, _M_buf, _M_buf);
-       if (_M_mode & ios_base::out)
-         this->setp(_M_buf, _M_buf);
-       _M_filepos = _M_buf;
-      }
-
-      void
-      _M_set_determinate(off_type __off)
-      {
-       bool __testin = _M_mode & ios_base::in;
-       bool __testout = _M_mode & ios_base::out;
-       if (__testin)
-         this->setg(_M_buf, _M_buf, _M_buf + __off);
-       if (__testout)
-         this->setp(_M_buf, _M_buf + __off);
-       _M_filepos = _M_buf + __off;
-      }
-
-      bool
-      _M_is_indeterminate(void)
-      { 
-       bool __ret = false;
-       // Don't return true if unbuffered.
-       if (_M_buf)
-         {
-           if (_M_mode & ios_base::in)
-             __ret = _M_in_beg == _M_in_cur && _M_in_cur == _M_in_end;
-           if (_M_mode & ios_base::out)
-             __ret = _M_out_beg == _M_out_cur && _M_out_cur == _M_out_end;
-         }
-       return __ret;
-      }
-    };
-
-  // Explicit specializations.
-  template<> 
-    basic_filebuf<char>::int_type 
-    basic_filebuf<char>::_M_underflow_common(bool __bump);
-
- #ifdef _GLIBCPP_USE_WCHAR_T
-  template<> 
-    basic_filebuf<wchar_t>::int_type 
-    basic_filebuf<wchar_t>::_M_underflow_common(bool __bump);
- #endif
-
-  // Generic definitions.
-  template <typename _CharT, typename _Traits>
-    basic_filebuf<_CharT, _Traits>::int_type
-    basic_filebuf<_CharT, _Traits>::underflow() 
-    { return _M_underflow_common(false); }
-
-  template <typename _CharT, typename _Traits>
-    basic_filebuf<_CharT, _Traits>::int_type
-    basic_filebuf<_CharT, _Traits>::uflow() 
-    { return _M_underflow_common(true); }
-
-
-  // 27.8.1.5  Template class basic_ifstream
-  /**
-   *  Derivation of general input streams, specific to files.
-  */
-  template<typename _CharT, typename _Traits>
-    class basic_ifstream : public basic_istream<_CharT, _Traits>
-    {
-    public:
-      // Types:
-      typedef _CharT                                   char_type;
-      typedef _Traits                                  traits_type;
-      typedef typename traits_type::int_type           int_type;
-      typedef typename traits_type::pos_type           pos_type;
-      typedef typename traits_type::off_type           off_type;
-
-      // Non-standard types:
-      typedef basic_filebuf<char_type, traits_type>    __filebuf_type;
-      typedef basic_istream<char_type, traits_type>    __istream_type;
-
-    private:
-      __filebuf_type   _M_filebuf;
-
-    public:
-     // Constructors/Destructors:
-     /** Default constructor.  Create an input file stream.  */
-      basic_ifstream()
-      : __istream_type(NULL), _M_filebuf()
-      { this->init(&_M_filebuf); }
-
-      /**
-       *  @brief Create an input file stream.
-       *  @param  s  Null terminated string specifying filename.
-       *  @param  mode  Open file in specified mode (see std::ios_base).
-       *
-       *  Tip:  When using std::string to hold the filename, you must use
-       *  .c_str() before passing it to this constructor.
-      */
-      explicit
-      basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)
-      : __istream_type(NULL), _M_filebuf()
-      {
-       this->init(&_M_filebuf);
-       this->open(__s, __mode);
-      }
-
-      ~basic_ifstream()
-      { }
-
-      // Members:
-      /**
-       *  @brief  Get a pointer to the file stream's buffer.
-       *  @return Pointer to basic_filebuf.
-      */
-      __filebuf_type*
-      rdbuf() const
-      { return const_cast<__filebuf_type*>(&_M_filebuf); }
-
-      bool
-      is_open() { return _M_filebuf.is_open(); }
-
-      void
-      open(const char* __s, ios_base::openmode __mode = ios_base::in)
-      {
-       if (!_M_filebuf.open(__s, __mode | ios_base::in))
-         this->setstate(ios_base::failbit);
-      }
-
-      /** Close the file.  */
-      void
-      close()
-      {
-       if (!_M_filebuf.close())
-         this->setstate(ios_base::failbit);
-      }
-    };
-
-
-  // 27.8.1.8  Template class basic_ofstream
-  /**
-   *  Derivation of general output streams, specific to files.
-  */
-  template<typename _CharT, typename _Traits>
-    class basic_ofstream : public basic_ostream<_CharT,_Traits>
-    {
-    public:
-      // Types:
-      typedef _CharT                                   char_type;
-      typedef _Traits                                  traits_type;
-      typedef typename traits_type::int_type           int_type;
-      typedef typename traits_type::pos_type           pos_type;
-      typedef typename traits_type::off_type           off_type;
-
-      // Non-standard types:
-      typedef basic_filebuf<char_type, traits_type>    __filebuf_type;
-      typedef basic_ostream<char_type, traits_type>    __ostream_type;
-
-    private:
-      __filebuf_type   _M_filebuf;
-
-    public:
-      // Constructors:
-      /** Default constructor for output file_stream.  */
-      basic_ofstream()
-      : __ostream_type(NULL), _M_filebuf()
-      { this->init(&_M_filebuf); }
-
-      /**
-       *  @brief  Create an output stream.
-       *  @param  s  Null terminated string specifying filename.
-       *  @param  mode  Open file in specified mode (see std::ios_base).
-       *
-       *  Tip:  When using std::string to hold the filename, you must use
-       *  .c_str() before passing it to this constructor.
-      */
-      explicit
-      basic_ofstream(const char* __s,
-                    ios_base::openmode __mode = ios_base::out|ios_base::trunc)
-      : __ostream_type(NULL), _M_filebuf()
-      {
-       this->init(&_M_filebuf);
-       this->open(__s, __mode);
-      }
-
-      ~basic_ofstream()
-      { }
-
-      // Members:
-      /**
-       *  @brief  Get a pointer to the file stream's buffer.
-       *  @return Pointer to basic_filebuf.
-      */
-      __filebuf_type*
-      rdbuf() const
-      { return const_cast<__filebuf_type*>(&_M_filebuf); }
-
-      /**
-       *  @brief Query to see if file stream is open.
-       *  @return True if stream is open.
-      */
-      bool
-      is_open() { return _M_filebuf.is_open(); }
-
-      /**
-       *  @brief Specify a file to open for output.
-       *  @param  s  Null terminated string specifying filename.
-       *  @param  mode  Mode in which to open file (see std::ios_base).
-       *
-       *  Tip:  When using std::string to hold the filename, you must use
-       *  .c_str() before passing it to this constructor.
-      */
-      void
-      open(const char* __s,
-          ios_base::openmode __mode = ios_base::out | ios_base::trunc)
-      {
-       if (!_M_filebuf.open(__s, __mode | ios_base::out))
-         this->setstate(ios_base::failbit);
-      }
-
-      /** Close the file stream.  */
-      void
-      close()
-      {
-       if (!_M_filebuf.close())
-         this->setstate(ios_base::failbit);
-      }
-    };
-
-
-  // 27.8.1.11  Template class basic_fstream
-  /**
-   *  Derivation of general input/output streams, specific to files.
-  */
-  template<typename _CharT, typename _Traits>
-    class basic_fstream : public basic_iostream<_CharT, _Traits>
-    {
-    public:
-      // Types:
-      typedef _CharT                                   char_type;
-      typedef _Traits                                  traits_type;
-      typedef typename traits_type::int_type           int_type;
-      typedef typename traits_type::pos_type           pos_type;
-      typedef typename traits_type::off_type           off_type;
-
-      // Non-standard types:
-      typedef basic_filebuf<char_type, traits_type>    __filebuf_type;
-      typedef basic_ios<char_type, traits_type>                __ios_type;
-      typedef basic_iostream<char_type, traits_type>   __iostream_type;
-
-    private:
-      __filebuf_type   _M_filebuf;
-
-    public:
-      // Constructors/destructor:
-      /** Default constructor.  Create a file stream.  */
-      basic_fstream()
-      : __iostream_type(NULL), _M_filebuf()
-      { this->init(&_M_filebuf); }
-
-      /**
-       *  @brief Create an input/output stream.
-       *  @param  s  Null terminated string specifying filename.
-       *  @param  mode  Open file in specified mode (see std::ios_base).
-       *
-       *  Tip:  When using std::string to hold the filename, you must use
-       *  .c_str() before passing it to this constructor.
-      */
-      explicit
-      basic_fstream(const char* __s,
-                   ios_base::openmode __mode = ios_base::in | ios_base::out)
-      : __iostream_type(NULL), _M_filebuf()
-      {
-       this->init(&_M_filebuf);
-       this->open(__s, __mode);
-      }
-
-      ~basic_fstream()
-      { }
-
-      // Members:
-      /**
-       *  @brief  Get a pointer to the file stream's buffer.
-       *  @return Pointer to basic_filebuf.
-      */
-      __filebuf_type*
-      rdbuf() const
-      { return const_cast<__filebuf_type*>(&_M_filebuf); }
-
-      /**
-       *  @brief Query to see if file stream is open.
-       *  @return True if stream is open.
-      */
-      bool
-      is_open() { return _M_filebuf.is_open(); }
-
-      /**
-       *  @brief Specify a file to open for input and/or output.
-       *  @param  s  Null terminated string specifying filename.
-       *  @param  mode  Mode in which to open file (see std::ios_base).
-       *
-       *  Tip:  When using std::string to hold the filename, you must use
-       *  .c_str() before passing it to this constructor.
-      */
-      void
-      open(const char* __s,
-          ios_base::openmode __mode = ios_base::in | ios_base::out)
-      {
-       if (!_M_filebuf.open(__s, __mode))
-         setstate(ios_base::failbit);
-      }
-
-      /** Close the file stream.  */
-      void
-      close()
-      {
-       if (!_M_filebuf.close())
-         setstate(ios_base::failbit);
-      }
-    };
-} // namespace std
-
-#ifdef _GLIBCPP_NO_TEMPLATE_EXPORT
-# define export
-#endif
-#ifdef  _GLIBCPP_FULLY_COMPLIANT_HEADERS
-# include <bits/fstream.tcc>
-#endif
-
-#endif