Further stream tests, doc updates and minor clean-ups.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -398,6 +398,8 @@ libraries, and to provide enhanced functionality.
 | 
				
			|||||||
\twocolitem{\helpref{wxFilterOutputStream}{wxfilteroutputstream}}{Filtered output stream class}
 | 
					\twocolitem{\helpref{wxFilterOutputStream}{wxfilteroutputstream}}{Filtered output stream class}
 | 
				
			||||||
\twocolitem{\helpref{wxBufferedInputStream}{wxbufferedinputstream}}{Buffered input stream class}
 | 
					\twocolitem{\helpref{wxBufferedInputStream}{wxbufferedinputstream}}{Buffered input stream class}
 | 
				
			||||||
\twocolitem{\helpref{wxBufferedOutputStream}{wxbufferedoutputstream}}{Buffered output stream class}
 | 
					\twocolitem{\helpref{wxBufferedOutputStream}{wxbufferedoutputstream}}{Buffered output stream class}
 | 
				
			||||||
 | 
					\twocolitem{\helpref{wxMemoryInputStream}{wxmeminputstream}}{Memory input stream class}
 | 
				
			||||||
 | 
					\twocolitem{\helpref{wxMemoryOutputStream}{wxmemoutputstream}}{Memory output stream class}
 | 
				
			||||||
\twocolitem{\helpref{wxDataInputStream}{wxdatainputstream}}{Platform-independent binary data input stream class}
 | 
					\twocolitem{\helpref{wxDataInputStream}{wxdatainputstream}}{Platform-independent binary data input stream class}
 | 
				
			||||||
\twocolitem{\helpref{wxDataOutputStream}{wxdataoutputstream}}{Platform-independent binary data output stream class}
 | 
					\twocolitem{\helpref{wxDataOutputStream}{wxdataoutputstream}}{Platform-independent binary data output stream class}
 | 
				
			||||||
\twocolitem{\helpref{wxTextInputStream}{wxtextinputstream}}{Platform-independent text data input stream class}
 | 
					\twocolitem{\helpref{wxTextInputStream}{wxtextinputstream}}{Platform-independent text data input stream class}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,24 +27,25 @@ None
 | 
				
			|||||||
Constructor, creates a new stream buffer using \it{stream} as a parent stream
 | 
					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,
 | 
					and \it{mode} as the IO mode. \it{mode} can be: wxStreamBuffer::read,
 | 
				
			||||||
wxStreamBuffer::write, wxStreamBuffer::read\_write.
 | 
					wxStreamBuffer::write, wxStreamBuffer::read\_write.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
One stream can have many stream buffers but only one is used internally to
 | 
					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
 | 
					pass IO call (e.g. wxInputStream::Read() -> wxStreamBuffer::Read()), but you
 | 
				
			||||||
can call directly wxStreamBuffer::Read without any problems.
 | 
					can call directly wxStreamBuffer::Read without any problems. Note that
 | 
				
			||||||
 | 
					all errors and messages linked to the stream are stored in the stream, not
 | 
				
			||||||
\wxheading{Warning}
 | 
					the stream buffers:
 | 
				
			||||||
 | 
					 | 
				
			||||||
All errors and messages linked to the stream are stored in the stream object.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
\begin{verbatim}
 | 
					\begin{verbatim}
 | 
				
			||||||
  streambuffer.Read(...);
 | 
					  streambuffer.Read(...);
 | 
				
			||||||
  streambuffer2.Read(...); /* This one erases previous error messages set by 
 | 
					  streambuffer2.Read(...); /* This call erases previous error messages set by 
 | 
				
			||||||
                              ``streambuffer'' */
 | 
					                              ``streambuffer'' */
 | 
				
			||||||
\end{verbatim}
 | 
					\end{verbatim}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\func{}{wxStreamBuffer}{\param{BufMode}{ mode}}
 | 
					\func{}{wxStreamBuffer}{\param{BufMode}{ mode}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Constructor, creates a new empty stream buffer which won't flush any data
 | 
					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
 | 
					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
 | 
					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
 | 
					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
 | 
					grow (if it is allowed by the user) its internal buffer. Briefly, it has all
 | 
				
			||||||
@@ -53,32 +54,15 @@ functionality of a ``normal'' stream.
 | 
				
			|||||||
\wxheading{Warning}
 | 
					\wxheading{Warning}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The "read\_write" mode may not work: it isn't completely finished.
 | 
					The "read\_write" mode may not work: it isn't completely finished.
 | 
				
			||||||
You can create "memory" streams by this way:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
\begin{verbatim}
 | 
					 | 
				
			||||||
  wxStreamBuffer *sb = new wxStreamBuffer(wxStreamBuffer::read)
 | 
					 | 
				
			||||||
  wxInputStream *input = new wxInputStream(sb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  sb->Fixed(FALSE); // It can change the size of the buffer.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // input is now a read-only memory stream.
 | 
					 | 
				
			||||||
\end{verbatim}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
But you should take care when destroying the stream buffer yourself.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
\func{}{wxStreamBuffer}{\param{const wxStreamBuffer\&}{buffer}}
 | 
					\func{}{wxStreamBuffer}{\param{const wxStreamBuffer\&}{buffer}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Constructor. It initializes the stream buffer with the data of the specified
 | 
					Constructor. It initializes the stream buffer with the data of the specified
 | 
				
			||||||
stream buffer. The new stream buffer is nearly exactly the same as the
 | 
					stream buffer. The new stream buffer has the same attributes, size, position
 | 
				
			||||||
original: it has the same attributes, the same size, the same position, shares
 | 
					and they share the same buffer. This will cause problems if the stream to
 | 
				
			||||||
the same internal buffer. The interresting point is that they can differ
 | 
					which the stream buffer belong is destroyed and the newly cloned stream
 | 
				
			||||||
in the future but the root is the same.
 | 
					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
 | 
				
			||||||
\wxheading{Warning}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The fact that the two stream buffers shared the same buffer could generate
 | 
					 | 
				
			||||||
segmentation violation if the parent is destroyed and the children continues
 | 
					 | 
				
			||||||
operating. It is advised to use this feature only in very local area of the
 | 
					 | 
				
			||||||
program.
 | 
					program.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\wxheading{See also}
 | 
					\wxheading{See also}
 | 
				
			||||||
@@ -90,9 +74,7 @@ program.
 | 
				
			|||||||
\func{}{wxStreamBuffer}{\destruct{wxStreamBuffer}}
 | 
					\func{}{wxStreamBuffer}{\destruct{wxStreamBuffer}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Destructor. It finalizes all IO calls and frees all internal buffers if
 | 
					Destructor. It finalizes all IO calls and frees all internal buffers if
 | 
				
			||||||
necessary. In the case of a children stream buffer, the internal buffer isn't
 | 
					necessary.
 | 
				
			||||||
freed, this is the job of the parent.
 | 
					 | 
				
			||||||
The "Write-Back" buffer is freed.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
% -----------
 | 
					% -----------
 | 
				
			||||||
% Filtered IO
 | 
					% Filtered IO
 | 
				
			||||||
@@ -101,27 +83,26 @@ The "Write-Back" buffer is freed.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
\func{size\_t}{Read}{\param{void *}{buffer}, \param{size\_t }{size}}
 | 
					\func{size\_t}{Read}{\param{void *}{buffer}, \param{size\_t }{size}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Reads a block of the specified \it{size} and stores datas in \it{buffer}.
 | 
					Reads a block of the specified {\it size} and stores the data in {\it buffer}.
 | 
				
			||||||
This function uses also the "Write-Back" buffer: in the case there are datas
 | 
					This function tries to read from the buffer first and if more data has been
 | 
				
			||||||
waiting in this buffer, they are used before anything else. After that, if there
 | 
					requested, reads more data from the associated stream and updates the buffer
 | 
				
			||||||
are still datas to be read, the stream is read and the stream buffer position
 | 
					accordingly until all requested data is read.
 | 
				
			||||||
is incremented.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
\wxheading{Return value}
 | 
					\wxheading{Return value}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
It returns the real read size. If returned size is different of the specified 
 | 
					It returns the size of the data read. If thereturned size is different of the specified 
 | 
				
			||||||
\it{size}, an error occured and should be tested using 
 | 
					{\it size}, an error has occured and should be tested using 
 | 
				
			||||||
\helpref{LastError}{wxstreambaselasterror}.
 | 
					\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}
 | 
					\wxheading{See also}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\helpref{wxStreamBuffer::Write}{wxstreambufferwrite}
 | 
					\helpref{wxStreamBuffer::Write}{wxstreambufferwrite}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\func{size\_t}{Read}{\param{wxStreamBuffer *}{buffer}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reads a \it{buffer}. The function returns when \it{buffer} is full or
 | 
					 | 
				
			||||||
when there aren't datas anymore in the current buffer.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
\membersection{wxStreamBuffer::Write}\label{wxstreambufferwrite}
 | 
					\membersection{wxStreamBuffer::Write}\label{wxstreambufferwrite}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\func{size\_t}{Write}{\param{const void *}{buffer}, \param{size\_t }{size}}
 | 
					\func{size\_t}{Write}{\param{const void *}{buffer}, \param{size\_t }{size}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
\wxheading{See also}
 | 
					\wxheading{See also}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\helpref{wxStreamBuffer}{wxstreamBuffer}
 | 
					\helpref{wxStreamBuffer}{wxstreambuffer}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
% ----------
 | 
					% ----------
 | 
				
			||||||
% Members
 | 
					% Members
 | 
				
			||||||
@@ -25,7 +25,8 @@
 | 
				
			|||||||
\func{}{wxMemoryInputStream}{\param{const char *}{ data}, \param{size\_t}{ len}}
 | 
					\func{}{wxMemoryInputStream}{\param{const char *}{ data}, \param{size\_t}{ len}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Initializes a new read-only memory stream which will use the specified buffer
 | 
					Initializes a new read-only memory stream which will use the specified buffer
 | 
				
			||||||
\it{data} of length \it{len}.
 | 
					{\it data} of length {\it len}. The stream does not take ownership of the 
 | 
				
			||||||
 | 
					buffer, i.e. that it will not delete in its constructor.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\membersection{wxMemoryInputStream::\destruct{wxMemoryInputStream}}
 | 
					\membersection{wxMemoryInputStream::\destruct{wxMemoryInputStream}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,7 +49,7 @@ Destructor.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
\wxheading{See also}
 | 
					\wxheading{See also}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\helpref{wxStreamBuffer}{wxstreamBuffer}
 | 
					\helpref{wxStreamBuffer}{wxstreambuffer}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
% ----------
 | 
					% ----------
 | 
				
			||||||
% Members
 | 
					% Members
 | 
				
			||||||
@@ -60,7 +61,7 @@ Destructor.
 | 
				
			|||||||
\func{}{wxMemoryOutputStream}{\param{char *}{ data = NULL}, \param{size\_t}{ length = 0}}
 | 
					\func{}{wxMemoryOutputStream}{\param{char *}{ data = NULL}, \param{size\_t}{ length = 0}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If \it{data} is NULL, then it will initialize a new empty buffer which will
 | 
					If \it{data} is NULL, then it will initialize a new empty buffer which will
 | 
				
			||||||
grow when it needs.
 | 
					grow if required.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
\wxheading{Warning}
 | 
					\wxheading{Warning}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -253,9 +253,6 @@ class WXDLLEXPORT wxStreamBuffer {
 | 
				
			|||||||
  char *m_buffer_start, *m_buffer_end, *m_buffer_pos;
 | 
					  char *m_buffer_start, *m_buffer_end, *m_buffer_pos;
 | 
				
			||||||
  size_t m_buffer_size;
 | 
					  size_t m_buffer_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  char *m_wback;
 | 
					 | 
				
			||||||
  size_t m_wbacksize, m_wbackcur;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  bool m_fixed, m_flushable;
 | 
					  bool m_fixed, m_flushable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  wxStreamBase *m_stream;
 | 
					  wxStreamBase *m_stream;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,6 +63,7 @@ BEGIN_EVENT_TABLE(MyApp, wxApp)
 | 
				
			|||||||
    EVT_MENU(TYPES_STREAM, MyApp::DoStreamDemo)
 | 
					    EVT_MENU(TYPES_STREAM, MyApp::DoStreamDemo)
 | 
				
			||||||
    EVT_MENU(TYPES_STREAM2, MyApp::DoStreamDemo2)
 | 
					    EVT_MENU(TYPES_STREAM2, MyApp::DoStreamDemo2)
 | 
				
			||||||
    EVT_MENU(TYPES_STREAM3, MyApp::DoStreamDemo3)
 | 
					    EVT_MENU(TYPES_STREAM3, MyApp::DoStreamDemo3)
 | 
				
			||||||
 | 
					    EVT_MENU(TYPES_STREAM4, MyApp::DoStreamDemo4)
 | 
				
			||||||
    EVT_MENU(TYPES_MIME, MyApp::DoMIMEDemo)
 | 
					    EVT_MENU(TYPES_MIME, MyApp::DoMIMEDemo)
 | 
				
			||||||
END_EVENT_TABLE()
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -93,6 +94,7 @@ bool MyApp::OnInit()
 | 
				
			|||||||
    test_menu->Append(TYPES_STREAM, "&Stream test");
 | 
					    test_menu->Append(TYPES_STREAM, "&Stream test");
 | 
				
			||||||
    test_menu->Append(TYPES_STREAM2, "&Stream seek test");
 | 
					    test_menu->Append(TYPES_STREAM2, "&Stream seek test");
 | 
				
			||||||
    test_menu->Append(TYPES_STREAM3, "&Stream error test");
 | 
					    test_menu->Append(TYPES_STREAM3, "&Stream error test");
 | 
				
			||||||
 | 
					    test_menu->Append(TYPES_STREAM4, "&Stream buffer test");
 | 
				
			||||||
    test_menu->AppendSeparator();
 | 
					    test_menu->AppendSeparator();
 | 
				
			||||||
    test_menu->Append(TYPES_MIME, "&MIME database test");
 | 
					    test_menu->Append(TYPES_MIME, "&MIME database test");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -491,7 +493,145 @@ void MyApp::DoStreamDemo3(wxCommandEvent& WXUNUSED(event))
 | 
				
			|||||||
	case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
	default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyApp::DoStreamDemo4(wxCommandEvent& WXUNUSED(event))
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxTextCtrl& textCtrl = * GetTextCtrl();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxString msg;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.Clear();
 | 
				
			||||||
 | 
					    textCtrl << "\nTesting wxStreamBuffer:\n\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // bigger than buffer
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Writing 2000x 1 to wxFileOutputStream.\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxFileOutputStream file_output( "test_wx.dat" );
 | 
				
			||||||
 | 
					    for (int i = 0; i < 2000; i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        char ch = 1;
 | 
				
			||||||
 | 
					        file_output.Write( &ch, 1 );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Opening with a buffered wxFileInputStream:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxFileInputStream file_input( "test_wx.dat" );
 | 
				
			||||||
 | 
					    wxBufferedInputStream buf_input( file_input );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " );
 | 
				
			||||||
 | 
					    switch (buf_input.LastError())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case wxSTREAM_NOERROR:      textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_EOF:          textCtrl.WriteText( "wxSTREAM_EOF\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_READ_ERROR:   textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.LastRead() returns: %d\n", (int)buf_input.LastRead() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.TellI() returns: %d\n", (int)buf_input.TellI() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "\n\n" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Seeking to position 300:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buf_input.SeekI( 300 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " );
 | 
				
			||||||
 | 
					    switch (buf_input.LastError())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case wxSTREAM_NOERROR:      textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_EOF:          textCtrl.WriteText( "wxSTREAM_EOF\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_READ_ERROR:   textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.LastRead() returns: %d\n", (int)buf_input.LastRead() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.TellI() returns: %d\n", (int)buf_input.TellI() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "\n\n" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    char buf[2000];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Reading 500 bytes:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buf_input.Read( buf, 500 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " );
 | 
				
			||||||
 | 
					    switch (buf_input.LastError())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case wxSTREAM_NOERROR:      textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_EOF:          textCtrl.WriteText( "wxSTREAM_EOF\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_READ_ERROR:   textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.LastRead() returns: %d\n", (int)buf_input.LastRead() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.TellI() returns: %d\n", (int)buf_input.TellI() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "\n\n" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Reading another 500 bytes:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buf_input.Read( buf, 500 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " );
 | 
				
			||||||
 | 
					    switch (buf_input.LastError())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case wxSTREAM_NOERROR:      textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_EOF:          textCtrl.WriteText( "wxSTREAM_EOF\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_READ_ERROR:   textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.LastRead() returns: %d\n", (int)buf_input.LastRead() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.TellI() returns: %d\n", (int)buf_input.TellI() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Reading another 500 bytes:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buf_input.Read( buf, 500 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " );
 | 
				
			||||||
 | 
					    switch (buf_input.LastError())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case wxSTREAM_NOERROR:      textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_EOF:          textCtrl.WriteText( "wxSTREAM_EOF\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_READ_ERROR:   textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.LastRead() returns: %d\n", (int)buf_input.LastRead() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.TellI() returns: %d\n", (int)buf_input.TellI() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "Reading another 500 bytes:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buf_input.Read( buf, 500 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "wxBufferedInputStream.LastError() returns: " );
 | 
				
			||||||
 | 
					    switch (buf_input.LastError())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case wxSTREAM_NOERROR:      textCtrl.WriteText( "wxSTREAM_NOERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_EOF:          textCtrl.WriteText( "wxSTREAM_EOF\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_READ_ERROR:   textCtrl.WriteText( "wxSTREAM_READ_ERROR\n" ); break;
 | 
				
			||||||
 | 
						case wxSTREAM_WRITE_ERROR:  textCtrl.WriteText( "wxSTREAM_WRITE_ERROR\n" ); break;
 | 
				
			||||||
 | 
						default: textCtrl.WriteText( "Huh?\n" ); break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.LastRead() returns: %d\n", (int)buf_input.LastRead() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    msg.Printf( "wxBufferedInputStream.TellI() returns: %d\n", (int)buf_input.TellI() );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( msg );
 | 
				
			||||||
 | 
					    textCtrl.WriteText( "\n\n" );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if wxUSE_UNICODE
 | 
					#if wxUSE_UNICODE
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ public:
 | 
				
			|||||||
    void DoStreamDemo(wxCommandEvent& event);
 | 
					    void DoStreamDemo(wxCommandEvent& event);
 | 
				
			||||||
    void DoStreamDemo2(wxCommandEvent& event);
 | 
					    void DoStreamDemo2(wxCommandEvent& event);
 | 
				
			||||||
    void DoStreamDemo3(wxCommandEvent& event);
 | 
					    void DoStreamDemo3(wxCommandEvent& event);
 | 
				
			||||||
 | 
					    void DoStreamDemo4(wxCommandEvent& event);
 | 
				
			||||||
#if wxUSE_UNICODE
 | 
					#if wxUSE_UNICODE
 | 
				
			||||||
    void DoUnicodeDemo(wxCommandEvent& event);
 | 
					    void DoUnicodeDemo(wxCommandEvent& event);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -78,6 +79,7 @@ enum
 | 
				
			|||||||
    TYPES_STREAM,
 | 
					    TYPES_STREAM,
 | 
				
			||||||
    TYPES_STREAM2,
 | 
					    TYPES_STREAM2,
 | 
				
			||||||
    TYPES_STREAM3,
 | 
					    TYPES_STREAM3,
 | 
				
			||||||
 | 
					    TYPES_STREAM4,
 | 
				
			||||||
    TYPES_MIME
 | 
					    TYPES_MIME
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user