[PATCH] New stream buffer for cin, cout etc.

Pétur Runólfsson peturr02@ru.is
Fri May 2 08:50:00 GMT 2003


Hi,

I think this is more or less complete now. I noticed that the wide
streams didn't really have any tests, so I copied all tests from
testsuite/27_io/objects/char to testsuite/27_io/objects/wchar_t
and changed them to use wide strings and streams.

The only thing I'm aware of that is still missing is seeking on the
wide streams. It should be possible to implement seekpos and seekoff
with off == 0 using fgetpos, fsetpos and fseek, but doing so requires
a way to convert between fpos_t and streampos.

Tested on linux on x86.

Petur


2003-05-02  Petur Runolfsson  <peturr02@ru.is>

	PR libstdc++/9520
	PR libstdc++/9661
	PR libstdc++/9662
	* config/linker-map.gnu:  Add __showmanyc_helper.
	* libstdc++-v3/config/io/basic_file_stdio.cc
	(__basic_file<char>::showmanyc_helper):  Move implementation to ...
	(__showmanyc_helper):  this
	* include/Makefile.am (ext_headers):
	Add ext/stdiostream.h
	* include/bits/ios_base.h (Init::_S_create_buffers,
	Init::_S_destroy_buffers):  Remove declarations.
	* include/ext/stdiostream.h:  New file.
	(basic_stdiobuf, basic_istdiostream, basic_ostdiostream,
	basic_iostdiostream):  New.
	* src/globals.cc (buf_cout, buf_cin, buf_cerr, buf_wcout,
	buf_wcin, buf_wcerr):  Remove.
	(buf_cout_sync, buf_cin_sync, buf_cerr_sync, buf_cout_unsync,
	buf_cin_unsync, buf_cerr_unsync, buf_wcout_sync, buf_wcin_sync,
	buf_wcerr_sync, buf_wcout_unsync, buf_wcin_unsync,
	buf_wcerr_unsync):  Define.
	* src/ios.cc (Init::_S_create_buffers,
	Init::_S_destroy_buffers):  Remove.
	(Init::Init):  Create and use syncronized buffers.
	(ios_base::sync_with_stdio):  Destroy syncronized buffers,
	create and install unsyncronized buffers.
	* testsuite/27_io/objects/char/10.cc:  New test.
	* testsuite/27_io/objects/char/9.cc:  New test.
	* testsuite/27_io/objects/char/9661-1.cc:  New test.
	* testsuite/27_io/objects/char/9661-2_xin.cc:  New test.
	* testsuite/27_io/objects/char/9661-2_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/1.cc:  New test.
	* testsuite/27_io/objects/wchar_t/10.cc:  New test.
	* testsuite/27_io/objects/wchar_t/2.cc:  New test.
	* testsuite/27_io/objects/wchar_t/2523-1_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/2523-1_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/2523-2_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/2523-2_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/3045.cc:  New test.
	* testsuite/27_io/objects/wchar_t/3647.cc:  New test.
	* testsuite/27_io/objects/wchar_t/3_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/3_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/4_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/4_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/5.cc:  New test.
	* testsuite/27_io/objects/wchar_t/5268.cc:  New test.
	* testsuite/27_io/objects/wchar_t/5280_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/5280_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/6.cc:  New test.
	* testsuite/27_io/objects/wchar_t/6548_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/6548_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/6648-1_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/6648-1_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/6648-2_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/6648-2_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/7.cc:  New test.
	* testsuite/27_io/objects/wchar_t/7744_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/7744_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/8.cc:  New test.
	* testsuite/27_io/objects/wchar_t/9_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/9_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/9520.cc:  New test.
	* testsuite/27_io/objects/wchar_t/9661-1.cc:  New test.
	* testsuite/27_io/objects/wchar_t/9661-2_xin.cc:  New test.
	* testsuite/27_io/objects/wchar_t/9661-2_xin.in:  New.
	* testsuite/27_io/objects/wchar_t/9662.cc:  New test.
	* testsuite/ext/stdiobuf_char.cc:  New test.
	* testsuite/ext/stdiobuf_wchar_t.cc:  New test.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stdio.diff.gz
Type: application/x-gzip
Size: 13394 bytes
Desc: stdio.diff.gz
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20030502/0d82ecd8/attachment.bin>


More information about the Libstdc++ mailing list