X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8067ee1174ded3b3ab4127ed2e00e586b855a828..968a7de2c5da97f4fba0ca29957f75a0bba92ae2:/interface/wx/mstream.h diff --git a/interface/wx/mstream.h b/interface/wx/mstream.h index 889344b929..0dc691e42a 100644 --- a/interface/wx/mstream.h +++ b/interface/wx/mstream.h @@ -1,15 +1,34 @@ ///////////////////////////////////////////////////////////////////////////// // 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 - @todo describe me. + 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} @@ -24,12 +43,15 @@ public: grow if required. @warning - If the buffer is created, it will be destroyed at the destruction of the stream. + If the buffer is created by wxMemoryOutputStream, it will be destroyed + at the destruction of the stream. */ wxMemoryOutputStream(void* data = NULL, size_t length = 0); /** Destructor. + + If the buffer wasn't provided by the user, it will be deleted here. */ virtual ~wxMemoryOutputStream(); @@ -37,11 +59,11 @@ public: 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; }; @@ -51,7 +73,23 @@ public: /** @class wxMemoryInputStream - @todo describe me. + 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} @@ -66,7 +104,7 @@ public: 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 char* data, size_t len); + wxMemoryInputStream(const void* data, size_t len); /** Creates a new read-only memory stream, initializing it with the data from @@ -79,14 +117,14 @@ public: 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 @e wxInvalidOffset means that the @a stream + @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. */ virtual ~wxMemoryInputStream();