2edb0bdef6
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
314 lines
9.4 KiB
TeX
314 lines
9.4 KiB
TeX
\section{\class{wxStreamBuffer}}\label{wxstreambuffer}
|
|
|
|
\wxheading{Derived from}
|
|
|
|
None
|
|
|
|
\wxheading{Include files}
|
|
|
|
<wx/stream.h>
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBase}{wxstreambase}
|
|
|
|
% ---------------------------------------------------------------------------
|
|
% Members
|
|
% ---------------------------------------------------------------------------
|
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
|
|
|
% -----------
|
|
% ctor & dtor
|
|
% -----------
|
|
\membersection{wxStreamBuffer::wxStreamBuffer}\label{wxstreambufconst}
|
|
|
|
\func{}{wxStreamBuffer}{\param{wxStreamBase\&}{ stream}, \param{BufMode}{ mode}}
|
|
|
|
Constructor, creates a new stream buffer using {\it stream} as a parent stream
|
|
and {\it mode} as the IO mode. {\it mode} can be: wxStreamBuffer::read,
|
|
wxStreamBuffer::write, wxStreamBuffer::read\_write.
|
|
|
|
One stream can have many stream buffers but only one is used internally to
|
|
pass IO call (e.g. wxInputStream::Read() -> wxStreamBuffer::Read()), but you
|
|
can call directly wxStreamBuffer::Read without any problems. Note that
|
|
all errors and messages linked to the stream are stored in the stream, not
|
|
the stream buffers:
|
|
|
|
\begin{verbatim}
|
|
streambuffer.Read(...);
|
|
streambuffer2.Read(...); /* This call erases previous error messages set by
|
|
``streambuffer'' */
|
|
\end{verbatim}
|
|
|
|
\func{}{wxStreamBuffer}{\param{BufMode}{ mode}}
|
|
|
|
Constructor, creates a new empty stream buffer which won't flush any data
|
|
to a stream. {\it mode} specifies the type of the buffer (read, write, read\_write).
|
|
This stream buffer has the advantage to be stream independent and to
|
|
work only on memory buffers but it is still compatible with the rest of the
|
|
wxStream classes. You can write, read to this special stream and it will
|
|
grow (if it is allowed by the user) its internal buffer. Briefly, it has all
|
|
functionality of a ``normal'' stream.
|
|
|
|
\wxheading{Warning}
|
|
|
|
The "read\_write" mode may not work: it isn't completely finished.
|
|
|
|
\func{}{wxStreamBuffer}{\param{const wxStreamBuffer\&}{buffer}}
|
|
|
|
Constructor. It initializes the stream buffer with the data of the specified
|
|
stream buffer. The new stream buffer has the same attributes, size, position
|
|
and they share the same buffer. This will cause problems if the stream to
|
|
which the stream buffer belong is destroyed and the newly cloned stream
|
|
buffer continues to be used, trying to call functions in the (destroyed)
|
|
stream. It is advised to use this feature only in very local area of the
|
|
program.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer:SetBufferIO}{wxstreambuffersetbufferio}
|
|
|
|
\membersection{wxStreamBuffer::\destruct{wxStreamBuffer}}
|
|
|
|
\func{}{wxStreamBuffer}{\destruct{wxStreamBuffer}}
|
|
|
|
Destructor. It finalizes all IO calls and frees all internal buffers if
|
|
necessary.
|
|
|
|
% -----------
|
|
% Filtered IO
|
|
% -----------
|
|
\membersection{wxStreamBuffer::Read}\label{wxstreambufferread}
|
|
|
|
\func{size\_t}{Read}{\param{void *}{buffer}, \param{size\_t }{size}}
|
|
|
|
Reads a block of the specified {\it size} and stores the data in {\it buffer}.
|
|
This function tries to read from the buffer first and if more data has been
|
|
requested, reads more data from the associated stream and updates the buffer
|
|
accordingly until all requested data is read.
|
|
|
|
\wxheading{Return value}
|
|
|
|
It returns the size of the data read. If the returned size is different of the specified
|
|
{\it size}, an error has occurred and should be tested using
|
|
\helpref{LastError}{wxstreambaselasterror}.
|
|
|
|
\func{size\_t}{Read}{\param{wxStreamBuffer *}{buffer}}
|
|
|
|
Reads a {\it buffer}. The function returns when {\it buffer} is full or when there isn't
|
|
data anymore in the current buffer.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer::Write}{wxstreambufferwrite}
|
|
|
|
\membersection{wxStreamBuffer::Write}\label{wxstreambufferwrite}
|
|
|
|
\func{size\_t}{Write}{\param{const void *}{buffer}, \param{size\_t }{size}}
|
|
|
|
Writes a block of the specified {\it size} using data of {\it buffer}. The data
|
|
are cached in a buffer before being sent in one block to the stream.
|
|
|
|
\func{size\_t}{Write}{\param{wxStreamBuffer *}{buffer}}
|
|
|
|
See \helpref{Read}{wxstreambufferread}.
|
|
|
|
\membersection{wxStreamBuffer::GetChar}
|
|
|
|
\func{char}{GetChar}{\void}
|
|
|
|
Gets a single char from the stream buffer. It acts like the Read call.
|
|
|
|
\wxheading{Problem}
|
|
|
|
You aren't directly notified if an error occurred during the IO call.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer::Read}{wxstreambufferread}
|
|
|
|
\membersection{wxStreamBuffer::PutChar}
|
|
|
|
\func{void}{PutChar}{\param{char }{c}}
|
|
|
|
Puts a single char to the stream buffer.
|
|
|
|
\wxheading{Problem}
|
|
|
|
You aren't directly notified if an error occurred during the IO call.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer::Read}{wxstreambufferwrite}
|
|
|
|
\membersection{wxStreamBuffer::Tell}
|
|
|
|
\constfunc{off\_t}{Tell}{\void}
|
|
|
|
Gets the current position in the stream. This position is calculated from
|
|
the {\it real} position in the stream and from the internal buffer position: so
|
|
it gives you the position in the {\it real} stream counted from the start of
|
|
the stream.
|
|
|
|
\wxheading{Return value}
|
|
|
|
Returns the current position in the stream if possible, wxInvalidOffset in the
|
|
other case.
|
|
|
|
\membersection{wxStreamBuffer::Seek}\label{wxstreambufferseek}
|
|
|
|
\func{off\_t}{Seek}{\param{off\_t }{pos}, \param{wxSeekMode }{mode}}
|
|
|
|
Changes the current position.
|
|
|
|
{\it mode} may be one of the following:
|
|
|
|
\twocolwidtha{5cm}
|
|
\begin{twocollist}\itemsep=0pt
|
|
\twocolitem{{\bf wxFromStart}}{The position is counted from the start of the stream.}
|
|
\twocolitem{{\bf wxFromCurrent}}{The position is counted from the current position of the stream.}
|
|
\twocolitem{{\bf wxFromEnd}}{The position is counted from the end of the stream.}
|
|
\end{twocollist}
|
|
|
|
\wxheading{Return value}
|
|
|
|
Upon successful completion, it returns the new offset as measured in bytes from
|
|
the beginning of the stream. Otherwise, it returns wxInvalidOffset.
|
|
|
|
% --------------
|
|
% Buffer control
|
|
% --------------
|
|
\membersection{wxStreamBuffer::ResetBuffer}
|
|
|
|
\func{void}{ResetBuffer}{\void}
|
|
|
|
Resets to the initial state variables concerning the buffer.
|
|
|
|
\membersection{wxStreamBuffer::SetBufferIO}\label{wxstreambuffersetbufferio}
|
|
|
|
\func{void}{SetBufferIO}{\param{char*}{ buffer\_start}, \param{char*}{ buffer\_end}}
|
|
|
|
Specifies which pointers to use for stream buffering. You need to pass a pointer on the
|
|
start of the buffer end and another on the end. The object will use this buffer
|
|
to cache stream data. It may be used also as a source/destination buffer when
|
|
you create an empty stream buffer (See \helpref{wxStreamBuffer::wxStreamBuffer}{wxstreambufconst}).
|
|
|
|
\wxheading{Remarks}
|
|
|
|
When you use this function, you will have to destroy the IO buffers yourself
|
|
after the stream buffer is destroyed or don't use it anymore.
|
|
In the case you use it with an empty buffer, the stream buffer will not resize
|
|
it when it is full.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer constructor}{wxstreambufconst}\\
|
|
\helpref{wxStreamBuffer::Fixed}{wxstreambufferfixed}\\
|
|
\helpref{wxStreamBuffer::Flushable}{wxstreambufferflushable}
|
|
|
|
\func{void}{SetBufferIO}{\param{size\_t}{ bufsize}}
|
|
|
|
Destroys or invalidates the previous IO buffer and allocates a new one of the
|
|
specified size.
|
|
|
|
\wxheading{Warning}
|
|
|
|
All previous pointers aren't valid anymore.
|
|
|
|
\wxheading{Remark}
|
|
|
|
The created IO buffer is growable by the object.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer::Fixed}{wxstreambufferfixed}\\
|
|
\helpref{wxStreamBuffer::Flushable}{wxstreambufferflushable}
|
|
|
|
\membersection{wxStreamBuffer::GetBufferStart}
|
|
|
|
\constfunc{char *}{GetBufferStart}{\void}
|
|
|
|
Returns a pointer on the start of the stream buffer.
|
|
|
|
\membersection{wxStreamBuffer::GetBufferEnd}
|
|
|
|
\constfunc{char *}{GetBufferEnd}{\void}
|
|
|
|
Returns a pointer on the end of the stream buffer.
|
|
|
|
\membersection{wxStreamBuffer::GetBufferPos}
|
|
|
|
\constfunc{char *}{GetBufferPos}{\void}
|
|
|
|
Returns a pointer on the current position of the stream buffer.
|
|
|
|
\membersection{wxStreamBuffer::GetIntPosition}
|
|
|
|
\constfunc{off\_t}{GetIntPosition}{\void}
|
|
|
|
Returns the current position (counted in bytes) in the stream buffer.
|
|
|
|
\membersection{wxStreamBuffer::SetIntPosition}
|
|
|
|
\func{void}{SetIntPosition}{\void}
|
|
|
|
Sets the current position (in bytes) in the stream buffer.
|
|
|
|
\wxheading{Warning}
|
|
|
|
Since it is a very low-level function, there is no check on the position:
|
|
specify an invalid position can induce unexpected results.
|
|
|
|
\membersection{wxStreamBuffer::GetLastAccess}
|
|
|
|
\constfunc{size\_t}{GetLastAccess}{\void}
|
|
|
|
Returns the amount of bytes read during the last IO call to the parent stream.
|
|
|
|
\membersection{wxStreamBuffer::Fixed}\label{wxstreambufferfixed}
|
|
|
|
\func{void}{Fixed}{\param{bool}{ fixed}}
|
|
|
|
Toggles the fixed flag. Usually this flag is toggled at the same time as
|
|
{\it flushable}. This flag allows (when it has the FALSE value) or forbids
|
|
(when it has the TRUE value) the stream buffer to resize dynamically the IO buffer.
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxStreamBuffer::SetBufferIO}{wxstreambuffersetbufferio}
|
|
|
|
\membersection{wxStreamBuffer::Flushable}\label{wxstreambufferflushable}
|
|
|
|
\func{void}{Flushable}{\param{bool}{ flushable}}
|
|
|
|
Toggles the flushable flag. If {\it flushable} is disabled, no data are sent
|
|
to the parent stream.
|
|
|
|
\membersection{wxStreamBuffer::FlushBuffer}
|
|
|
|
\func{bool}{FlushBuffer}{\void}
|
|
|
|
Flushes the IO buffer.
|
|
|
|
\membersection{wxStreamBuffer::FillBuffer}
|
|
|
|
\func{bool}{FillBuffer}{\void}
|
|
|
|
Fill the IO buffer.
|
|
|
|
\membersection{wxStreamBuffer::GetDataLeft}
|
|
|
|
\func{size\_t}{GetDataLeft}{\void}
|
|
|
|
Returns the amount of available data in the buffer.
|
|
|
|
% --------------
|
|
% Administration
|
|
% --------------
|
|
\membersection{wxStreamBuffer::Stream}
|
|
|
|
\func{wxStreamBase*}{Stream}{\void}
|
|
|
|
Returns the parent stream of the stream buffer.
|
|
|