Update of /cvsroot/pclasses/pclasses2/src/IO
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25745/src/IO
Modified Files:
IOStream.cpp
Log Message:
Reading from IOStream should work now.
Index: IOStream.cpp
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/IO/IOStream.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- IOStream.cpp 30 Dec 2004 17:10:34 -0000 1.1
+++ IOStream.cpp 30 Dec 2004 19:21:27 -0000 1.2
@@ -42,7 +42,8 @@
if(_inBufferSize > 0)
{
_inBuffer = new char[_inBufferSize];
- setg(_inBuffer, _inBuffer, _inBuffer + _inBufferSize);
+ //@fixme .. is this correct?
+ setg(_inBuffer, _inBuffer, _inBuffer);
}
else
{
@@ -52,6 +53,8 @@
IOStreamBuffer::~IOStreamBuffer()
{
+ sync();
+
if(_outBuffer)
delete[] _outBuffer;
@@ -125,8 +128,27 @@
int IOStreamBuffer::underflow()
{
- //@fixme
- return traits_type::eof();
+ int_type ret = traits_type::eof();
+
+ //unbuffered ?
+ if(!eback())
+ {
+ char tmp[1];
+ size_t read = _dev.read(tmp, 1);
+ if(read)
+ ret = traits_type::not_eof(tmp[0]);
+ }
+ else
+ {
+ size_t read = _dev.read(_inBuffer, _inBufferSize);
+ //@fixme .. is this correct?
+ setg(_inBuffer, _inBuffer, _inBuffer + read);
+
+ if(read)
+ ret = traits_type::not_eof(_inBuffer[0]);
+ }
+
+ return ret;
}
int IOStreamBuffer::sync()
|