X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/da1ed74c85f53a75a193c7dcbd2013aa266a222c..97929f6bd992c185834656b5e3fff5a50ba7360a:/interface/wx/stream.h diff --git a/interface/wx/stream.h b/interface/wx/stream.h index 828fad1374..7ff04991aa 100644 --- a/interface/wx/stream.h +++ b/interface/wx/stream.h @@ -60,12 +60,34 @@ class wxBufferedInputStream : public wxFilterInputStream { public: /** - Constructor. - If a non @NULL buffer is given to the stream, it will be deleted by it. + Constructor using the provided buffer or default. + + @param stream + The associated low-level stream. + @param buffer + The buffer to use if non-@NULL. Notice that the ownership of this + buffer is taken by the stream, i.e. it will delete it. If this + parameter is @NULL a default 1KB buffer is used. */ wxBufferedInputStream(wxInputStream& stream, wxStreamBuffer *buffer = NULL); + /** + Constructor allowing to specify the size of the buffer. + + This is just a more convenient alternative to creating a wxStreamBuffer + of the given size and using the other overloaded constructor of this + class. + + @param stream + The associated low-level stream. + @param bufsize + The size of the buffer, in bytes. + + @since 2.9.0 + */ + wxBufferedInputStream(wxInputStream& stream, size_t bufsize); + /** Destructor. */ @@ -77,12 +99,16 @@ public: /** @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 { @@ -105,13 +131,35 @@ public: @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() */ wxStreamBuffer(wxStreamBase& stream, BufMode mode); + /** + Constructor for an input buffer of the specified size. + + Using it is equivalent to using the constructor above with read mode + and calling SetBufferIO() but is more convenient. + + @since 2.9.0 + */ + wxStreamBuffer(wxInputStream& stream, size_t bufsize); + + /** + Constructor for an output buffer of the specified size. + + Using it is equivalent to using the constructor above with write mode + and calling SetBufferIO() but is more convenient. + + @since 2.9.0 + */ + wxStreamBuffer(wxOutputStream& stream, size_t bufsize); + /** Constructor; creates a new empty stream buffer which won't flush any data to a stream. mode specifies the type of the buffer (read, write, read_write). @@ -130,7 +178,7 @@ public: wxStreamBuffer(BufMode mode); /** - Constructor. + Copy constructor. This method initializes the stream buffer with the data of the specified stream buffer. The new stream buffer has the same attributes, size, position @@ -212,7 +260,7 @@ public: /** Returns the current position (counted in bytes) in the stream buffer. */ - wxFileOffset GetIntPosition() const; + size_t GetIntPosition() const; /** Returns the amount of bytes read during the last IO call to the parent stream. @@ -248,7 +296,7 @@ public: @see Write() */ - Return value size_t Read(wxStreamBuffer* buffer); + size_t Read(wxStreamBuffer* buffer); /** Resets to the initial state variables concerning the buffer. @@ -284,7 +332,7 @@ public: @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 @@ -311,6 +359,7 @@ public: /** Returns the parent stream of the stream buffer. + @deprecated use GetStream() instead */ wxStreamBase* Stream(); @@ -420,14 +469,14 @@ public: 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); }; @@ -455,7 +504,7 @@ enum wxStreamProtocolType @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, @@ -512,7 +561,7 @@ public: 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; //@} @@ -546,10 +595,10 @@ public: 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; //@} /** @@ -670,10 +719,34 @@ class wxBufferedOutputStream : public wxFilterOutputStream { public: /** - @todo WRITE DESCRIPTION + Constructor using the provided buffer or default. + + @param stream + The associated low-level stream. + @param buffer + The buffer to use if non-@NULL. Notice that the ownership of this + buffer is taken by the stream, i.e. it will delete it. If this + parameter is @NULL a default 1KB buffer is used. */ wxBufferedOutputStream(wxOutputStream& stream, wxStreamBuffer *buffer = NULL); + + /** + Constructor allowing to specify the size of the buffer. + + This is just a more convenient alternative to creating a wxStreamBuffer + of the given size and using the other overloaded constructor of this + class. + + @param stream + The associated low-level stream. + @param bufsize + The size of the buffer, in bytes. + + @since 2.9.0 + */ + wxBufferedOutputStream(wxOutputStream& stream, size_t bufsize); + /** Destructor. Calls Sync() and destroys the internal buffer. */ @@ -682,7 +755,7 @@ public: /** 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. @@ -728,8 +801,10 @@ public: /** 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. */ - char GetC(); + int GetC(); /** Returns the last number of bytes read. @@ -750,7 +825,7 @@ public: @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. @@ -794,13 +869,13 @@ public: @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); };