1\section{\class{wxDataInputStream}}\label{wxdatainputstream} 2 3This class provides functions that read binary data types in a 4portable way. Data can be read in either big-endian or little-endian 5format, little-endian being the default on all architectures. 6 7If you want to read data from text files (or streams) use 8\helpref{wxTextInputStream}{wxtextinputstream} instead. 9 10The >> operator is overloaded and you can use this class like a standard C++ iostream. 11Note, however, that the arguments are the fixed size types wxUint32, wxInt32 etc 12and on a typical 32-bit computer, none of these match to the "long" type (wxInt32 13is defined as signed int on 32-bit architectures) so that you cannot use long. To avoid 14problems (here and elsewhere), make use of the wxInt32, wxUint32, etc types. 15 16For example: 17 18\begin{verbatim} 19 wxFileInputStream input( "mytext.dat" ); 20 wxDataInputStream store( input ); 21 wxUint8 i1; 22 float f2; 23 wxString line; 24 25 store >> i1; // read a 8 bit integer. 26 store >> i1 >> f2; // read a 8 bit integer followed by float. 27 store >> line; // read a text line 28\end{verbatim} 29 30See also \helpref{wxDataOutputStream}{wxdataoutputstream}. 31 32\wxheading{Derived from} 33 34None 35 36\wxheading{Include files} 37 38<wx/datstrm.h> 39 40\latexignore{\rtfignore{\wxheading{Members}}} 41 42\membersection{wxDataInputStream::wxDataInputStream}\label{wxdatainputstreamctor} 43 44\func{}{wxDataInputStream}{\param{wxInputStream\&}{ stream}} 45 46\func{}{wxDataInputStream}{\param{wxInputStream\&}{ stream}, \param{wxMBConv\&}{ conv = wxMBConvUTF8}} 47 48Constructs a datastream object from an input stream. Only read methods will 49be available. The second form is only available in Unicode build of wxWidgets. 50 51\wxheading{Parameters} 52 53\docparam{stream}{The input stream.} 54 55\docparam{conv}{Charset conversion object object used to decode strings in Unicode 56mode (see \helpref{wxDataInputStream::ReadString}{wxdatainputstreamreadstring} 57documentation for detailed description). Note that you must not destroy 58{\it conv} before you destroy this wxDataInputStream instance!} 59 60\membersection{wxDataInputStream::\destruct{wxDataInputStream}}\label{wxdatainputstreamdtor} 61 62\func{}{\destruct{wxDataInputStream}}{\void} 63 64Destroys the wxDataInputStream object. 65 66\membersection{wxDataInputStream::BigEndianOrdered}\label{wxdatainputstreambigendianordered} 67 68\func{void}{BigEndianOrdered}{\param{bool}{ be\_order}} 69 70If {\it be\_order} is true, all data will be read in big-endian 71order, such as written by programs on a big endian architecture 72(e.g. Sparc) or written by Java-Streams (which always use 73big-endian order). 74 75\membersection{wxDataInputStream::Read8}\label{wxdatainputstreamread8} 76 77\func{wxUint8}{Read8}{\void} 78 79Reads a single byte from the stream. 80 81\func{void}{Read8}{\param{wxUint8 *}{buffer}, \param{size\_t }{size}} 82 83Reads bytes from the stream in a specified buffer. The amount of 84bytes to read is specified by the {\it size} variable. 85 86\membersection{wxDataInputStream::Read16}\label{wxdatainputstreamread16} 87 88\func{wxUint16}{Read16}{\void} 89 90Reads a 16 bit unsigned integer from the stream. 91 92\func{void}{Read16}{\param{wxUint16 *}{buffer}, \param{size\_t }{size}} 93 94Reads 16 bit unsigned integers from the stream in a specified buffer. the 95amount of 16 bit unsigned integer to read is specified by the {\it size} variable. 96 97\membersection{wxDataInputStream::Read32}\label{wxdatainputstreamread32} 98 99\func{wxUint32}{Read32}{\void} 100 101Reads a 32 bit unsigned integer from the stream. 102 103\func{void}{Read32}{\param{wxUint32 *}{buffer}, \param{size\_t }{size}} 104 105Reads 32 bit unsigned integers from the stream in a specified buffer. the amount of 10632 bit unsigned integer to read is specified by the {\it size} variable. 107 108\membersection{wxDataInputStream::Read64}\label{wxdatainputstreamread64} 109 110\func{wxUint64}{Read64}{\void} 111 112Reads a 64 bit unsigned integer from the stream. 113 114\func{void}{Read64}{\param{wxUint64 *}{buffer}, \param{size\_t }{size}} 115 116Reads 64 bit unsigned integers from the stream in a specified buffer. the amount of 11764 bit unsigned integer to read is specified by the {\it size} variable. 118 119\membersection{wxDataInputStream::ReadDouble}\label{wxdatainputstreamreaddouble} 120 121\func{double}{ReadDouble}{\void} 122 123Reads a double (IEEE encoded) from the stream. 124 125\func{void}{ReadDouble}{\param{double *}{buffer}, \param{size\_t }{size}} 126 127Reads double data (IEEE encoded) from the stream in a specified buffer. the amount of 128double to read is specified by the {\it size} variable. 129 130\membersection{wxDataInputStream::ReadString}\label{wxdatainputstreamreadstring} 131 132\func{wxString}{ReadString}{\void} 133 134Reads a string from a stream. Actually, this function first reads a long 135integer specifying the length of the string (without the last null character) 136and then reads the string. 137 138In Unicode build of wxWidgets, the fuction first reads multibyte (char*) 139string from the stream and then converts it to Unicode using the {\it conv} 140object passed to constructor and returns the result as wxString. You are 141responsible for using the same convertor as when writing the stream. 142 143See also \helpref{wxDataOutputStream::WriteString}{wxdataoutputstreamwritestring}. 144 145