Commit d29cc32f by Benjamin Kosnik Committed by Benjamin Kosnik

std_sstream.h (basic_istringstream): Adjust initialization.


2003-03-28  Benjamin Kosnik  <bkoz@redhat.com>

	* include/std/std_sstream.h (basic_istringstream): Adjust
	initialization.
	(basic_ostringstream): Same.
	(basic_stringstream): Same.
	* include/std/std_fstream.h (basic_ifstream): Adjust initialization.
	(basic_ofstream): Same.
	(basic_fstream): Same.
	* include/std/std_ostream.h (basic_ostrem): Add protected ctor
	that does not call init.
	* include/std/std_istream.h (basic_istream): Same.
	(basic_iostream): Construct istream, ostream uninitialized, use
	init to initialize just once. Add protected ctor that does not
	call init.

From-SVN: r64980
parent 400fbc08
2003-03-28 Benjamin Kosnik <bkoz@redhat.com>
* include/std/std_sstream.h (basic_istringstream): Adjust
initialization.
(basic_ostringstream): Same.
(basic_stringstream): Same.
* include/std/std_fstream.h (basic_ifstream): Adjust initialization.
(basic_ofstream): Same.
(basic_fstream): Same.
* include/std/std_ostream.h (basic_ostrem): Add protected ctor
that does not call init.
* include/std/std_istream.h (basic_istream): Same.
(basic_iostream): Construct istream, ostream uninitialized, use
init to initialize just once. Add protected ctor that does not
call init.
2003-03-28 Paolo Carlini <pcarlini@unitus.it> 2003-03-28 Paolo Carlini <pcarlini@unitus.it>
Nathan Myers <ncm@cantrip.org> Nathan Myers <ncm@cantrip.org>
......
...@@ -419,7 +419,7 @@ namespace std ...@@ -419,7 +419,7 @@ namespace std
* The default constructor does nothing and is not normally * The default constructor does nothing and is not normally
* accessible to users. * accessible to users.
*/ */
basic_ios() : ios_base() basic_ios() : ios_base(), _M_fctype(0), _M_fnumput(0), _M_fnumget(0)
{ } { }
/** /**
......
...@@ -525,8 +525,7 @@ namespace std ...@@ -525,8 +525,7 @@ namespace std
* @c &sb to the base class initializer. Does not open any files * @c &sb to the base class initializer. Does not open any files
* (you haven't given it a filename to open). * (you haven't given it a filename to open).
*/ */
basic_ifstream() basic_ifstream() : __istream_type(), _M_filebuf()
: __istream_type(NULL), _M_filebuf()
{ this->init(&_M_filebuf); } { this->init(&_M_filebuf); }
/** /**
...@@ -541,7 +540,7 @@ namespace std ...@@ -541,7 +540,7 @@ namespace std
*/ */
explicit explicit
basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)
: __istream_type(NULL), _M_filebuf() : __istream_type(), _M_filebuf()
{ {
this->init(&_M_filebuf); this->init(&_M_filebuf);
this->open(__s, __mode); this->open(__s, __mode);
...@@ -648,8 +647,7 @@ namespace std ...@@ -648,8 +647,7 @@ namespace std
* @c &sb to the base class initializer. Does not open any files * @c &sb to the base class initializer. Does not open any files
* (you haven't given it a filename to open). * (you haven't given it a filename to open).
*/ */
basic_ofstream() basic_ofstream(): __ostream_type(), _M_filebuf()
: __ostream_type(NULL), _M_filebuf()
{ this->init(&_M_filebuf); } { this->init(&_M_filebuf); }
/** /**
...@@ -666,7 +664,7 @@ namespace std ...@@ -666,7 +664,7 @@ namespace std
explicit explicit
basic_ofstream(const char* __s, basic_ofstream(const char* __s,
ios_base::openmode __mode = ios_base::out|ios_base::trunc) ios_base::openmode __mode = ios_base::out|ios_base::trunc)
: __ostream_type(NULL), _M_filebuf() : __ostream_type(), _M_filebuf()
{ {
this->init(&_M_filebuf); this->init(&_M_filebuf);
this->open(__s, __mode); this->open(__s, __mode);
...@@ -776,7 +774,7 @@ namespace std ...@@ -776,7 +774,7 @@ namespace std
* (you haven't given it a filename to open). * (you haven't given it a filename to open).
*/ */
basic_fstream() basic_fstream()
: __iostream_type(NULL), _M_filebuf() : __iostream_type(), _M_filebuf()
{ this->init(&_M_filebuf); } { this->init(&_M_filebuf); }
/** /**
......
// Input streams -*- C++ -*- // Input streams -*- C++ -*-
// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. // Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003
// Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // 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 // software; you can redistribute it and/or modify it under the
...@@ -101,11 +102,8 @@ namespace std ...@@ -101,11 +102,8 @@ namespace std
* their own stream buffer. * their own stream buffer.
*/ */
explicit explicit
basic_istream(__streambuf_type* __sb) basic_istream(__streambuf_type* __sb): _M_gcount(streamsize(0))
{ { this->init(__sb); }
this->init(__sb);
_M_gcount = streamsize(0);
}
/** /**
* @brief Base destructor. * @brief Base destructor.
...@@ -573,6 +571,10 @@ namespace std ...@@ -573,6 +571,10 @@ namespace std
__istream_type& __istream_type&
seekg(off_type, ios_base::seekdir); seekg(off_type, ios_base::seekdir);
//@} //@}
protected:
explicit
basic_istream(): _M_gcount(streamsize(0)) { }
}; };
/** /**
...@@ -738,14 +740,19 @@ namespace std ...@@ -738,14 +740,19 @@ namespace std
*/ */
explicit explicit
basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
: __istream_type(__sb), __ostream_type(__sb) : __istream_type(), __ostream_type()
{ } { this->init(__sb); }
/** /**
* @brief Destructor does nothing. * @brief Destructor does nothing.
*/ */
virtual virtual
~basic_iostream() { } ~basic_iostream() { }
protected:
explicit
basic_iostream() : __istream_type(), __ostream_type()
{ }
}; };
// [27.6.1.4] standard basic_istream manipulators // [27.6.1.4] standard basic_istream manipulators
......
...@@ -355,6 +355,10 @@ namespace std ...@@ -355,6 +355,10 @@ namespace std
*/ */
__ostream_type& __ostream_type&
seekp(off_type, ios_base::seekdir); seekp(off_type, ios_base::seekdir);
protected:
explicit
basic_ostream() { }
}; };
/** /**
......
...@@ -326,7 +326,7 @@ namespace std ...@@ -326,7 +326,7 @@ namespace std
*/ */
explicit explicit
basic_istringstream(ios_base::openmode __mode = ios_base::in) basic_istringstream(ios_base::openmode __mode = ios_base::in)
: __istream_type(NULL), _M_stringbuf(__mode | ios_base::in) : __istream_type(), _M_stringbuf(__mode | ios_base::in)
{ this->init(&_M_stringbuf); } { this->init(&_M_stringbuf); }
/** /**
...@@ -347,7 +347,7 @@ namespace std ...@@ -347,7 +347,7 @@ namespace std
explicit explicit
basic_istringstream(const __string_type& __str, basic_istringstream(const __string_type& __str,
ios_base::openmode __mode = ios_base::in) ios_base::openmode __mode = ios_base::in)
: __istream_type(NULL), _M_stringbuf(__str, __mode | ios_base::in) : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
{ this->init(&_M_stringbuf); } { this->init(&_M_stringbuf); }
/** /**
...@@ -445,7 +445,7 @@ namespace std ...@@ -445,7 +445,7 @@ namespace std
*/ */
explicit explicit
basic_ostringstream(ios_base::openmode __mode = ios_base::out) basic_ostringstream(ios_base::openmode __mode = ios_base::out)
: __ostream_type(NULL), _M_stringbuf(__mode | ios_base::out) : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
{ this->init(&_M_stringbuf); } { this->init(&_M_stringbuf); }
/** /**
...@@ -466,7 +466,7 @@ namespace std ...@@ -466,7 +466,7 @@ namespace std
explicit explicit
basic_ostringstream(const __string_type& __str, basic_ostringstream(const __string_type& __str,
ios_base::openmode __mode = ios_base::out) ios_base::openmode __mode = ios_base::out)
: __ostream_type(NULL), _M_stringbuf(__str, __mode | ios_base::out) : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
{ this->init(&_M_stringbuf); } { this->init(&_M_stringbuf); }
/** /**
...@@ -562,7 +562,7 @@ namespace std ...@@ -562,7 +562,7 @@ namespace std
*/ */
explicit explicit
basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in) basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in)
: __iostream_type(NULL), _M_stringbuf(__m) : __iostream_type(), _M_stringbuf(__m)
{ this->init(&_M_stringbuf); } { this->init(&_M_stringbuf); }
/** /**
...@@ -581,7 +581,7 @@ namespace std ...@@ -581,7 +581,7 @@ namespace std
explicit explicit
basic_stringstream(const __string_type& __str, basic_stringstream(const __string_type& __str,
ios_base::openmode __m = ios_base::out | ios_base::in) ios_base::openmode __m = ios_base::out | ios_base::in)
: __iostream_type(NULL), _M_stringbuf(__str, __m) : __iostream_type(), _M_stringbuf(__str, __m)
{ this->init(&_M_stringbuf); } { this->init(&_M_stringbuf); }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment