X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12f5e1e78fe906050ff2fee9529476db332633f0..f54c646fb0561e54bca0ee2c17847bb9e7123304:/interface/wx/mstream.h diff --git a/interface/wx/mstream.h b/interface/wx/mstream.h index 8db9a2e2e4..be70e4faf9 100644 --- a/interface/wx/mstream.h +++ b/interface/wx/mstream.h @@ -1,14 +1,33 @@ ///////////////////////////////////////////////////////////////////////////// // Name: mstream.h -// Purpose: interface of wxMemoryOutputStream +// Purpose: interface of wxMemoryOutputStream, wxMemoryInputStream // Author: wxWidgets team -// RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @class wxMemoryOutputStream + This class allows to use all methods taking a wxOutputStream reference to write + to in-memory data. + + Example: + @code + wxMemoryOutputStream stream; + if (!my_wxImage.SaveFile(stream)) + return; + + // now we can access the saved image bytes: + wxStreamBuffer* theBuffer = stream.GetOutputStreamBuffer(); + unsigned char byte; + if (theBuffer->Read(byte, 1) != 1) + return; + + // ... do something with 'byte'... + + // remember that ~wxMemoryOutputStream will destroy the internal + // buffer since we didn't provide our own when constructing it + @endcode @library{wxbase} @category{streams} @@ -21,24 +40,29 @@ public: /** If @a data is @NULL, then it will initialize a new empty buffer which will grow if required. + + @warning + If the buffer is created by wxMemoryOutputStream, it will be destroyed + at the destruction of the stream. */ - wxMemoryOutputStream(char* data = NULL, size_t length = 0); + wxMemoryOutputStream(void* data = NULL, size_t length = 0); /** Destructor. + + If the buffer wasn't provided by the user, it will be deleted here. */ - ~wxMemoryOutputStream(); + virtual ~wxMemoryOutputStream(); /** - CopyTo allowed you to transfer data from the internal buffer of - wxMemoryOutputStream to an external buffer. @a len specifies the size of - the buffer. + Allows you to transfer data from the internal buffer of wxMemoryOutputStream + to an external buffer. @a len specifies the size of the buffer. */ - size_t CopyTo(char* buffer, size_t len) const; + size_t CopyTo(void* buffer, size_t len) const; /** Returns the pointer to the stream object used as an internal buffer - for that stream. + for this stream. */ wxStreamBuffer* GetOutputStreamBuffer() const; }; @@ -48,6 +72,23 @@ public: /** @class wxMemoryInputStream + This class allows to use all methods taking a wxInputStream reference to read + in-memory data. + + Example: + @code + // we've got a block of memory containing a BMP image and we want + // to use wxImage to load it: + wxMemoryInputStream stream(my_memory_block, size); + + wxImage theBitmap; + if (!theBitmap.LoadFile(stream, wxBITMAP_TYPE_BMP)) + return; + + // we can now safely delete the original memory buffer as the data + // has been decoded by wxImage: + delete [] my_memory_block; + @endcode @library{wxbase} @category{streams} @@ -57,24 +98,34 @@ public: class wxMemoryInputStream : public wxInputStream { public: - //@{ /** - Creates a new read-only memory stream, initializing it with the - data from the given input stream @e stream. - The @a len argument specifies the amount of data to read from - the @e stream. Setting it to @e wxInvalidOffset means that - the @a stream is to be read entirely (i.e. till the EOF is reached). + Initializes a new read-only memory stream which will use the specified + buffer data of length len. The stream does not take ownership of the buffer, + i.e. the buffer will not be deleted in its destructor. + */ + wxMemoryInputStream(const void* data, size_t len); + + /** + Creates a new read-only memory stream, initializing it with the data from + the given output stream @a stream. */ - wxMemoryInputStream(const char* data, size_t len); wxMemoryInputStream(const wxMemoryOutputStream& stream); + + /** + Creates a new read-only memory stream, initializing it with the + data from the given input stream @a stream. + + The @a len argument specifies the amount of data to read from the + @a stream. Setting it to ::wxInvalidOffset means that the @a stream + is to be read entirely (i.e. till the EOF is reached). + */ wxMemoryInputStream(wxInputStream& stream, wxFileOffset len = wxInvalidOffset); - //@} /** - Destructor. + Destructor. Does NOT free the buffer provided in the ctor. */ - ~wxMemoryInputStream(); + virtual ~wxMemoryInputStream(); /** Returns the pointer to the stream object used as an internal buffer