/**
@class wxStreamBuffer
- @todo WRITE A DESCRIPTION
+ wxStreamBuffer is a cache manager for wxStreamBase: it manages a stream buffer
+ linked to a stream.
+
+ Each stream always has one autoinitialized stream buffer, but you may
+ attach more of them to the same stream.
@library{wxbase}
@category{streams}
- @see wxStreamBase
+ @see wxStreamBase, @ref overview_stream
*/
class wxStreamBuffer
{
@code
streambuffer.Read(...);
- streambuffer2.Read(...); // This call erases previous error messages set by 'streambuffer'
+ streambuffer2.Read(...);
+ // This call erases previous error messages set by 'streambuffer'
+ // assuming that both instances are stream buffers for the same stream
@endcode
@see SetBufferIO()
@see Write()
*/
- Return value size_t Read(wxStreamBuffer* buffer);
+ size_t Read(wxStreamBuffer* buffer);
/**
Resets to the initial state variables concerning the buffer.
@see wxStreamBuffer(), Fixed(), Flushable()
*/
- void SetBufferIO(char* buffer_start, char* buffer_end);
+ void SetBufferIO(void* start, void* end, bool takeOwnership = false);
/**
Destroys or invalidates the previous IO buffer and allocates a new one of the
/**
Returns the parent stream of the stream buffer.
+ @deprecated use GetStream() instead
*/
wxStreamBase* Stream();
This function returns a reference on the current object, so the user can
test any states of the stream right away.
*/
- wxOutputStream Write(const void* buffer, size_t size);
+ virtual wxOutputStream& Write(const void* buffer, size_t size);
/**
Reads data from the specified input stream and stores them
in the current stream. The data is read until an error is raised
by one of the two streams.
*/
- wxOutputStream Write(wxInputStream& stream_in);
+ wxOutputStream& Write(wxInputStream& stream_in);
};
@code
factory = wxFilterClassFactory::Find(filename, wxSTREAM_FILEEXT);
if (factory)
- stream = factory-NewStream(new wxFFileInputStream(filename));
+ stream = factory->NewStream(new wxFFileInputStream(filename));
@endcode
wxFilterClassFactory::Find can also search for a factory by MIME type,
GetFirst()/GetNext() return a pointer to a factory or @NULL if no more
are available. They do not give away ownership of the factory.
*/
- static const wxFilterClassFactory* GetFirst() const;
+ static const wxFilterClassFactory* GetFirst();
const wxFilterClassFactory* GetNext() const;
//@}
If the parent stream is passed as a pointer then the new filter stream
takes ownership of it. If it is passed by reference then it does not.
*/
- wxFilterInputStream* NewStream(wxInputStream& stream) const;
- wxFilterOutputStream* NewStream(wxOutputStream& stream) const;
- wxFilterInputStream* NewStream(wxInputStream* stream) const;
- wxFilterOutputStream* NewStream(wxOutputStream* stream) const;
+ virtual wxFilterInputStream* NewStream(wxInputStream& stream) const = 0;
+ virtual wxFilterOutputStream* NewStream(wxOutputStream& stream) const = 0;
+ virtual wxFilterInputStream* NewStream(wxInputStream* stream) const = 0;
+ virtual wxFilterOutputStream* NewStream(wxOutputStream* stream) const = 0;
//@}
/**
/**
Calls Sync() and changes the stream position.
*/
- virtual wxFileOffset SeekO(wxFileOffset pos, wxSeekMode mode = wxFromStart)
+ virtual wxFileOffset SeekO(wxFileOffset pos, wxSeekMode mode = wxFromStart);
/**
Flushes the buffer and calls Sync() on the parent stream.
/**
Returns the first character in the input queue and removes it,
blocking until it appears if necessary.
+
+ On success returns a value between 0 - 255; on end of file returns @c wxEOF.
*/
int GetC();
@return This function returns a reference on the current object, so the
user can test any states of the stream right away.
*/
- wxInputStream Read(void* buffer, size_t size);
+ virtual wxInputStream& Read(void* buffer, size_t size);
/**
Reads data from the input queue and stores it in the specified output stream.
@return Returns the amount of bytes saved in the Write-Back buffer.
*/
- size_t Ungetch(const char* buffer, size_t size);
+ size_t Ungetch(const void* buffer, size_t size);
/**
This function acts like the previous one except that it takes only one
character: it is sometimes shorter to use than the generic function.
*/
- Return value bool Ungetch(char c);
+ bool Ungetch(char c);
};