git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6892 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 datas of {\it buffer}. The datas
 | |
| 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'll 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 datas 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 datas in the buffer.
 | |
| 
 | |
| % --------------
 | |
| % Administration
 | |
| % --------------
 | |
| \membersection{wxStreamBuffer::Stream}
 | |
| 
 | |
| \func{wxStreamBase*}{Stream}{\void}
 | |
| 
 | |
| Returns the parent stream of the stream buffer.
 | |
| 
 |