Whole document tree
    

Whole document tree

fpos.h Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

fpos.h

Go to the documentation of this file.
00001 // File position object and stream types
00002 
00003 // Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
00004 //
00005 // This file is part of the GNU ISO C++ Library.  This library is free
00006 // software; you can redistribute it and/or modify it under the
00007 // terms of the GNU General Public License as published by the
00008 // Free Software Foundation; either version 2, or (at your option)
00009 // any later version.
00010 
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 // GNU General Public License for more details.
00015 
00016 // You should have received a copy of the GNU General Public License along
00017 // with this library; see the file COPYING.  If not, write to the Free
00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
00019 // USA.
00020 
00021 // As a special exception, you may use this file as part of a free software
00022 // library without restriction.  Specifically, if other files instantiate
00023 // templates or use macros or inline functions from this file, or you compile
00024 // this file and link it with other files to produce an executable, this
00025 // file does not by itself cause the resulting executable to be covered by
00026 // the GNU General Public License.  This exception does not however
00027 // invalidate any other reasons why the executable file might be covered by
00028 // the GNU General Public License.
00029 
00030 //
00031 // ISO C++ 14882: 27 Input/output library
00032 //
00033 
00034 #ifndef _CPP_BITS_FPOS_H
00035 #define _CPP_BITS_FPOS_H 1
00036 
00037 #pragma GCC system_header
00038 
00039 #include <bits/c++io.h>
00040 #include <bits/std_cwchar.h>    // For mbstate_t.
00041 
00042 namespace std
00043 {
00044   // 27.4.1  Types
00045 
00046   // 27.4.3  Template class fpos
00047   template<typename _StateT>
00048     class fpos
00049     {
00050     public:
00051       // Types:
00052       typedef _StateT __state_type;
00053 
00054     private:
00055       streamoff     _M_off;
00056       __state_type  _M_st;
00057 
00058     public:
00059       __state_type
00060       state() const  { return _M_st; }
00061 
00062       void 
00063       state(__state_type __st)  { _M_st = __st; }
00064 
00065       // NB: The standard defines only the implicit copy ctor and the
00066       // previous two members.  The rest is a "conforming extension".
00067       fpos(): _M_off(streamoff()), _M_st(__state_type()) { }
00068 
00069       fpos(streamoff __off, __state_type __st = __state_type())
00070       :  _M_off(__off), _M_st(__st) { }
00071 
00072       operator streamoff() const { return _M_off; }
00073 
00074       fpos& 
00075       operator+=(streamoff __off) { _M_off += __off; return *this; }
00076 
00077       fpos& 
00078       operator-=(streamoff __off) { _M_off -= __off; return *this; }
00079 
00080       fpos 
00081       operator+(streamoff __off) 
00082       { 
00083     fpos __t(*this); 
00084     __t += __off;
00085     return __t;
00086       }
00087 
00088       fpos      
00089       operator-(streamoff __off) 
00090       { 
00091     fpos __t(*this); 
00092     __t -= __off; 
00093     return __t;
00094       }
00095 
00096       bool  
00097       operator==(const fpos& __pos) const
00098       { return _M_off == __pos._M_off; }
00099 
00100       bool  
00101       operator!=(const fpos& __pos) const
00102       { return _M_off != __pos._M_off; }
00103       
00104       streamoff 
00105       _M_position() const { return _M_off; }
00106 
00107       void
00108       _M_position(streamoff __off)  { _M_off = __off; }
00109     };
00110 
00111   // 27.2, paragraph 10 about fpos/char_traits circularity
00112   typedef fpos<mbstate_t>       streampos;
00113 #  ifdef _GLIBCPP_USE_WCHAR_T
00114   typedef fpos<mbstate_t>       wstreampos;
00115 #  endif
00116 }  // namespace std
00117 
00118 #endif 
00119 
00120 
00121 

Generated on Mon Apr 8 03:11:24 2002 for libstdc++-v3 Source by doxygen1.2.15