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