]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/stream.tex
don't call wxYield() from EnsureVisible(), this is too dangerous - and unnecessary...
[wxWidgets.git] / docs / latex / wx / stream.tex
CommitLineData
e2a6f233 1\section{\class{wxStreamBuffer}}\label{wxstreambuffer}
7da42094 2
b82827dd
JS
3\wxheading{Derived from}
4
5None
6
954b8ae6
JS
7\wxheading{Include files}
8
9<wx/stream.h>
10
7da42094 11\wxheading{See also}
b82827dd 12
7da42094
GL
13\helpref{wxStreamBase}{wxstreambase}
14
15% ---------------------------------------------------------------------------
16% Members
17% ---------------------------------------------------------------------------
7da42094
GL
18\latexignore{\rtfignore{\wxheading{Members}}}
19
20% -----------
21% ctor & dtor
22% -----------
da3aea64 23\membersection{wxStreamBuffer::wxStreamBuffer}\label{wxstreambufconst}
b82827dd
JS
24
25\func{}{wxStreamBuffer}{\param{wxStreamBase\&}{ stream}, \param{BufMode}{ mode}}
7da42094 26
605d715d
VS
27Constructor, creates a new stream buffer using {\it stream} as a parent stream
28and {\it mode} as the IO mode. {\it mode} can be: wxStreamBuffer::read,
b82827dd 29wxStreamBuffer::write, wxStreamBuffer::read\_write.
7da42094 30
2bf8e4eb
RR
31One stream can have many stream buffers but only one is used internally to
32pass IO call (e.g. wxInputStream::Read() -> wxStreamBuffer::Read()), but you
33can call directly wxStreamBuffer::Read without any problems. Note that
34all errors and messages linked to the stream are stored in the stream, not
35the stream buffers:
2723cfeb 36
07b73270 37\begin{verbatim}
2723cfeb 38 streambuffer.Read(...);
2bf8e4eb 39 streambuffer2.Read(...); /* This call erases previous error messages set by
2723cfeb 40 ``streambuffer'' */
07b73270 41\end{verbatim}
b82827dd 42
7da42094
GL
43\func{}{wxStreamBuffer}{\param{BufMode}{ mode}}
44
e2a6f233 45Constructor, creates a new empty stream buffer which won't flush any data
605d715d 46to a stream. {\it mode} specifies the type of the buffer (read, write, read\_write).
2bf8e4eb 47This stream buffer has the advantage to be stream independent and to
07b73270
GL
48work only on memory buffers but it is still compatible with the rest of the
49wxStream classes. You can write, read to this special stream and it will
50grow (if it is allowed by the user) its internal buffer. Briefly, it has all
c7f49969 51functionality of a ``normal'' stream.
7da42094 52
07b73270
GL
53\wxheading{Warning}
54
55The "read\_write" mode may not work: it isn't completely finished.
07b73270 56
c7f49969 57\func{}{wxStreamBuffer}{\param{const wxStreamBuffer\&}{buffer}}
07b73270
GL
58
59Constructor. It initializes the stream buffer with the data of the specified
2bf8e4eb
RR
60stream buffer. The new stream buffer has the same attributes, size, position
61and they share the same buffer. This will cause problems if the stream to
62which the stream buffer belong is destroyed and the newly cloned stream
63buffer continues to be used, trying to call functions in the (destroyed)
64stream. It is advised to use this feature only in very local area of the
07b73270 65program.
7da42094 66
c7f49969
JS
67\wxheading{See also}
68
69\helpref{wxStreamBuffer:SetBufferIO}{wxstreambuffersetbufferio}
70
b82827dd
JS
71\membersection{wxStreamBuffer::\destruct{wxStreamBuffer}}
72
e2a6f233 73\func{}{wxStreamBuffer}{\destruct{wxStreamBuffer}}
7da42094 74
07b73270 75Destructor. It finalizes all IO calls and frees all internal buffers if
2bf8e4eb 76necessary.
7da42094
GL
77
78% -----------
79% Filtered IO
80% -----------
750b78ba 81\membersection{wxStreamBuffer::Read}\label{wxstreambufferread}
b82827dd
JS
82
83\func{size\_t}{Read}{\param{void *}{buffer}, \param{size\_t }{size}}
7da42094 84
2bf8e4eb
RR
85Reads a block of the specified {\it size} and stores the data in {\it buffer}.
86This function tries to read from the buffer first and if more data has been
87requested, reads more data from the associated stream and updates the buffer
88accordingly until all requested data is read.
7da42094
GL
89
90\wxheading{Return value}
91
cd6ce4a9 92It returns the size of the data read. If the returned size is different of the specified
f6bcfd97 93{\it size}, an error has occurred and should be tested using
e2a6f233 94\helpref{LastError}{wxstreambaselasterror}.
7da42094 95
2bf8e4eb 96\func{size\_t}{Read}{\param{wxStreamBuffer *}{buffer}}
07b73270 97
605d715d 98Reads a {\it buffer}. The function returns when {\it buffer} is full or when there isn't
2bf8e4eb 99data anymore in the current buffer.
b82827dd 100
2bf8e4eb 101\wxheading{See also}
7da42094 102
2bf8e4eb 103\helpref{wxStreamBuffer::Write}{wxstreambufferwrite}
7da42094 104
750b78ba 105\membersection{wxStreamBuffer::Write}\label{wxstreambufferwrite}
b82827dd
JS
106
107\func{size\_t}{Write}{\param{const void *}{buffer}, \param{size\_t }{size}}
7da42094 108
605d715d 109Writes a block of the specified {\it size} using datas of {\it buffer}. The datas
07b73270 110are cached in a buffer before being sent in one block to the stream.
b82827dd
JS
111
112\func{size\_t}{Write}{\param{wxStreamBuffer *}{buffer}}
7da42094 113
750b78ba 114See \helpref{Read}{wxstreambufferread}.
7da42094 115
7da42094 116\membersection{wxStreamBuffer::GetChar}
b82827dd 117
7da42094
GL
118\func{char}{GetChar}{\void}
119
07b73270
GL
120Gets a single char from the stream buffer. It acts like the Read call.
121
122\wxheading{Problem}
123
f6bcfd97 124You aren't directly notified if an error occurred during the IO call.
07b73270
GL
125
126\wxheading{See also}
127
750b78ba 128\helpref{wxStreamBuffer::Read}{wxstreambufferread}
7da42094
GL
129
130\membersection{wxStreamBuffer::PutChar}
b82827dd 131
7da42094
GL
132\func{void}{PutChar}{\param{char }{c}}
133
134Puts a single char to the stream buffer.
135
07b73270
GL
136\wxheading{Problem}
137
f6bcfd97 138You aren't directly notified if an error occurred during the IO call.
07b73270
GL
139
140\wxheading{See also}
141
750b78ba 142\helpref{wxStreamBuffer::Read}{wxstreambufferwrite}
07b73270 143
7da42094 144\membersection{wxStreamBuffer::Tell}
b82827dd
JS
145
146\constfunc{off\_t}{Tell}{\void}
7da42094 147
07b73270 148Gets the current position in the stream. This position is calculated from
605d715d
VS
149the {\it real} position in the stream and from the internal buffer position: so
150it gives you the position in the {\it real} stream counted from the start of
07b73270
GL
151the stream.
152
153\wxheading{Return value}
154
155Returns the current position in the stream if possible, wxInvalidOffset in the
156other case.
7da42094 157
e2a6f233 158\membersection{wxStreamBuffer::Seek}\label{wxstreambufferseek}
b82827dd
JS
159
160\func{off\_t}{Seek}{\param{off\_t }{pos}, \param{wxSeekMode }{mode}}
7da42094 161
07b73270
GL
162Changes the current position.
163
605d715d 164{\it mode} may be one of the following:
07b73270
GL
165
166\twocolwidtha{5cm}
167\begin{twocollist}\itemsep=0pt
168\twocolitem{{\bf wxFromStart}}{The position is counted from the start of the stream.}
169\twocolitem{{\bf wxFromCurrent}}{The position is counted from the current position of the stream.}
170\twocolitem{{\bf wxFromEnd}}{The position is counted from the end of the stream.}
171\end{twocollist}
172
173\wxheading{Return value}
174
175Upon successful completion, it returns the new offset as measured in bytes from
176the beginning of the stream. Otherwise, it returns wxInvalidOffset.
7da42094
GL
177
178% --------------
179% Buffer control
180% --------------
7da42094 181\membersection{wxStreamBuffer::ResetBuffer}
b82827dd 182
7da42094
GL
183\func{void}{ResetBuffer}{\void}
184
07b73270 185Resets to the initial state variables concerning the buffer.
7da42094 186
750b78ba 187\membersection{wxStreamBuffer::SetBufferIO}\label{wxstreambuffersetbufferio}
b82827dd 188
06ad8636 189\func{void}{SetBufferIO}{\param{char*}{ buffer\_start}, \param{char*}{ buffer\_end}}
7da42094
GL
190
191Specifies which pointers to use for stream buffering. You need to pass a pointer on the
da3aea64
GL
192start of the buffer end and another on the end. The object will use this buffer
193to cache stream data. It may be used also as a source/destination buffer when
194you create an empty stream buffer (See \helpref{wxStreamBuffer::wxStreamBuffer}{wxstreambufconst}).
195
196\wxheading{Remarks}
197
f6bcfd97 198When you use this function, you will have to destroy the IO buffers yourself
da3aea64 199after the stream buffer is destroyed or don't use it anymore.
85ec2f26 200In the case you use it with an empty buffer, the stream buffer will not resize
da3aea64
GL
201it when it is full.
202
203\wxheading{See also}
204
205\helpref{wxStreamBuffer constructor}{wxstreambufconst}\\
750b78ba
JS
206\helpref{wxStreamBuffer::Fixed}{wxstreambufferfixed}\\
207\helpref{wxStreamBuffer::Flushable}{wxstreambufferflushable}
7da42094 208
b82827dd 209\func{void}{SetBufferIO}{\param{size\_t}{ bufsize}}
7da42094 210
da3aea64
GL
211Destroys or invalidates the previous IO buffer and allocates a new one of the
212specified size.
213
214\wxheading{Warning}
215
216All previous pointers aren't valid anymore.
217
218\wxheading{Remark}
219
220The created IO buffer is growable by the object.
221
222\wxheading{See also}
223
750b78ba
JS
224\helpref{wxStreamBuffer::Fixed}{wxstreambufferfixed}\\
225\helpref{wxStreamBuffer::Flushable}{wxstreambufferflushable}
7da42094
GL
226
227\membersection{wxStreamBuffer::GetBufferStart}
b82827dd 228
7da42094
GL
229\constfunc{char *}{GetBufferStart}{\void}
230
231Returns a pointer on the start of the stream buffer.
232
233\membersection{wxStreamBuffer::GetBufferEnd}
b82827dd 234
7da42094
GL
235\constfunc{char *}{GetBufferEnd}{\void}
236
237Returns a pointer on the end of the stream buffer.
238
239\membersection{wxStreamBuffer::GetBufferPos}
b82827dd 240
7da42094
GL
241\constfunc{char *}{GetBufferPos}{\void}
242
243Returns a pointer on the current position of the stream buffer.
244
245\membersection{wxStreamBuffer::GetIntPosition}
b82827dd
JS
246
247\constfunc{off\_t}{GetIntPosition}{\void}
7da42094 248
da3aea64 249Returns the current position (counted in bytes) in the stream buffer.
7da42094
GL
250
251\membersection{wxStreamBuffer::SetIntPosition}
b82827dd 252
7da42094
GL
253\func{void}{SetIntPosition}{\void}
254
9fc0fe37
GL
255Sets the current position (in bytes) in the stream buffer.
256
257\wxheading{Warning}
258
259Since it is a very low-level function, there is no check on the position:
260specify an invalid position can induce unexpected results.
7da42094
GL
261
262\membersection{wxStreamBuffer::GetLastAccess}
b82827dd
JS
263
264\constfunc{size\_t}{GetLastAccess}{\void}
7da42094
GL
265
266Returns the amount of bytes read during the last IO call to the parent stream.
267
750b78ba 268\membersection{wxStreamBuffer::Fixed}\label{wxstreambufferfixed}
b82827dd 269
7da42094
GL
270\func{void}{Fixed}{\param{bool}{ fixed}}
271
b82827dd 272Toggles the fixed flag. Usually this flag is toggled at the same time as
605d715d 273{\it flushable}. This flag allows (when it has the FALSE value) or forbids
da3aea64
GL
274(when it has the TRUE value) the stream buffer to resize dynamically the IO buffer.
275
276\wxheading{See also}
277
750b78ba 278\helpref{wxStreamBuffer::SetBufferIO}{wxstreambuffersetbufferio}
7da42094 279
750b78ba 280\membersection{wxStreamBuffer::Flushable}\label{wxstreambufferflushable}
b82827dd 281
7da42094
GL
282\func{void}{Flushable}{\param{bool}{ flushable}}
283
605d715d 284Toggles the flushable flag. If {\it flushable} is disabled, no datas are sent
7da42094
GL
285to the parent stream.
286
287\membersection{wxStreamBuffer::FlushBuffer}
b82827dd 288
7da42094
GL
289\func{bool}{FlushBuffer}{\void}
290
291Flushes the IO buffer.
292
293\membersection{wxStreamBuffer::FillBuffer}
b82827dd 294
7da42094
GL
295\func{bool}{FillBuffer}{\void}
296
297Fill the IO buffer.
298
299\membersection{wxStreamBuffer::GetDataLeft}
b82827dd
JS
300
301\func{size\_t}{GetDataLeft}{\void}
7da42094
GL
302
303Returns the amount of available datas in the buffer.
304
305% --------------
306% Administration
307% --------------
7da42094 308\membersection{wxStreamBuffer::Stream}
b82827dd 309
06ad8636 310\func{wxStreamBase*}{Stream}{\void}
7da42094 311
07b73270 312Returns the parent stream of the stream buffer.
b82827dd 313