X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/55b7bba1912998be7b75dcbfdd4a5f30914c1cd6..96db102a93ed103a1c757c4445dd71789c2d0054:/docs/latex/wx/tstream.tex diff --git a/docs/latex/wx/tstream.tex b/docs/latex/wx/tstream.tex index 5c4bc5c449..9c407d2d04 100644 --- a/docs/latex/wx/tstream.tex +++ b/docs/latex/wx/tstream.tex @@ -8,15 +8,18 @@ Classes: \helpref{wxStreamBase}{wxstreambase}, \wxheading{Purpose of wxStream} -We went into troubles with c++ std streams on some platform: -they react quite well in most cases, but in multi-threaded case, for example, -they have a LOT of problems. - -Then, wxStreams have been built in wxWindows because an application should compile -and run on all supported platforms and we don't want users depend on release +We had troubles with standard C++ streams on several platforms: +they react quite well in most cases, but in the multi-threaded case, for example, +they have many problems. Some Borland Compilers refuse to work at all +with them and using iostreams on Linux makes writing programs, that are +binary compatible across different Linux distributions, impossible. + +Therefore, wxStreams have been added to wxWindows because an application should +compile and run on all supported platforms and we don't want users to depend on release X.XX of libg++ or some other compiler to run the program. wxStreams is divided in two main parts: + \begin{enumerate}\itemsep=0pt \item the core: wxStreamBase, wxStreamBuffer, wxInputStream, wxOutputStream, wxFilterIn/OutputStream @@ -48,42 +51,43 @@ wxStreamBuffer. This could also be a simple link to the a true syscall \wxheading{Generic usage: an example} -About its usage, it's simple. We can take the example of wxFileInputStream and here is a sample +Usage is simple. We can take the example of wxFileInputStream and here is some sample code: \begin{verbatim} ... // The constructor initializes the stream buffer and open the file descriptor // associated to the name of the file. - wxFileInputStream in\_stream("the\_file\_to\_be\_read"); + wxFileInputStream in_stream("the_file_to_be_read"); - // Ok, read some bytes ... nb\_datas is expressed in bytes. - in\_stream.Read(data, nb\_datas); - if (in\_stream.LastError() != wxStream\_NOERROR) { + // Ok, read some bytes ... nb_datas is expressed in bytes. + in_stream.Read(data, nb_datas); + if (in_stream.LastError() != wxStream_NOERROR) { // Oh oh, something bad happens. // For a complete list, look into the documentation at wxStreamBase. } // You can also inline all like this. - if (in\_stream.Read(data, nb\_datas).LastError() != wxStream\_NOERROR) { + if (in_stream.Read(data, nb_datas).LastError() != wxStream_NOERROR) { // Do something. } // You can also get the last number of bytes REALLY put into the buffer. - size\_t really\_read = in\_stream.LastRead(); + size_t really_read = in_stream.LastRead(); // Ok, moves to the beginning of the stream. SeekI returns the last position // in the stream counted from the beginning. - off\_t old_position = in\_stream.SeekI(0, wxFromBeginning); + off_t old_position = in_stream.SeekI(0, wxFromBeginning); // What is my current position ? - off\_t position = in\_stream.TellI(); + off_t position = in_stream.TellI(); // wxFileInputStream will close the file descriptor on the destruction. \end{verbatim} -\wxheading{Compatibility with c++ stream} +\wxheading{Compatibility with C++ streams} As I said previously, we could add a filter stream so it takes an istream argument and builds a wxInputStream from it: I don't think it should be difficult to implement it and it may be available in the fix of wxWindows 2.0. +