wxwidgets/interface/wx/mstream.h
Vadim Zeitlin 4f4c5fcfdf Use nullptr instead of NULL in the code and documentation
This is a combination of running clang-tidy with modernize-use-nullptr
check for some ports (GTK, X11, OSX) and manual changes to the ports for
which it couldn't be used easily (MSW, DFB) and also manually updating
the docs.

Also replace NULL with null or nullptr in the comments as this is more
consistent with the use of nullptr in the code and makes it simpler to
grep for the remaining occurrences of NULL itself.

And also use null in the assert messages.

Only a few occurrences of "NULL" are still left in non-C files, mostly
corresponding to unclear comments or string output which it might not be
safe to change.
2022-10-18 01:25:25 +02:00

136 lines
3.9 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: mstream.h
// Purpose: interface of wxMemoryOutputStream, wxMemoryInputStream
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxMemoryOutputStream
This class allows using 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}
@see wxStreamBuffer
*/
class wxMemoryOutputStream : public wxOutputStream
{
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(void* data = nullptr, size_t length = 0);
/**
Destructor.
If the buffer wasn't provided by the user, it will be deleted here.
*/
virtual ~wxMemoryOutputStream();
/**
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(void* buffer, size_t len) const;
/**
Returns the pointer to the stream object used as an internal buffer
for this stream.
*/
wxStreamBuffer* GetOutputStreamBuffer() const;
};
/**
@class wxMemoryInputStream
This class allows using 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}
@see wxStreamBuffer, wxMemoryOutputStream
*/
class wxMemoryInputStream : public wxInputStream
{
public:
/**
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 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. Does NOT free the buffer provided in the ctor.
*/
virtual ~wxMemoryInputStream();
/**
Returns the pointer to the stream object used as an internal buffer
for that stream.
*/
wxStreamBuffer* GetInputStreamBuffer() const;
};