added functions to read/write several elements at once (patch 754986)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21856 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-07-10 11:47:27 +00:00
parent 019abbf209
commit 53663be8a5
5 changed files with 223 additions and 3 deletions

View File

@@ -58,6 +58,7 @@ All:
- added event sink argument to wxEvtHandler::Connect() - added event sink argument to wxEvtHandler::Connect()
- added support for POST method and alt ports to wxHTTP (Roger Chickering) - added support for POST method and alt ports to wxHTTP (Roger Chickering)
- added wxSocket::IPAddress() (Chris Mellon) - added wxSocket::IPAddress() (Chris Mellon)
- wxDataStreams can read/write many elements at once (Mickael Gilabert)
wxBase: wxBase:

View File

@@ -78,30 +78,55 @@ big-endian order).
Reads a single byte from the stream. Reads a single byte from the stream.
\func{void}{Read8}{\param{wxUint8 *}{buffer}, \param{size\_t }{size}}
Reads bytes from the stream in a specified buffer. The amount of
bytes to read is specified by the {\it size} variable.
\membersection{wxDataInputStream::Read16} \membersection{wxDataInputStream::Read16}
\func{wxUint16}{Read16}{\void} \func{wxUint16}{Read16}{\void}
Reads a 16 bit unsigned integer from the stream. Reads a 16 bit unsigned integer from the stream.
\func{void}{Read16}{\param{wxUint16 *}{buffer}, \param{size\_t }{size}}
Reads 16 bit unsigned integers from the stream in a specified buffer. the
amount of 16 bit unsigned integer to read is specified by the {\it size} variable.
\membersection{wxDataInputStream::Read32} \membersection{wxDataInputStream::Read32}
\func{wxUint32}{Read32}{\void} \func{wxUint32}{Read32}{\void}
Reads a 32 bit unsigned integer from the stream. Reads a 32 bit unsigned integer from the stream.
\func{void}{Read32}{\param{wxUint32 *}{buffer}, \param{size\_t }{size}}
Reads 32 bit unsigned integers from the stream in a specified buffer. the amount of
32 bit unsigned integer to read is specified by the {\it size} variable.
\membersection{wxDataInputStream::Read64} \membersection{wxDataInputStream::Read64}
\func{wxUint64}{Read64}{\void} \func{wxUint64}{Read64}{\void}
Reads a 64 bit unsigned integer from the stream. Reads a 64 bit unsigned integer from the stream.
\func{void}{Read64}{\param{wxUint64 *}{buffer}, \param{size\_t }{size}}
Reads 64 bit unsigned integers from the stream in a specified buffer. the amount of
64 bit unsigned integer to read is specified by the {\it size} variable.
\membersection{wxDataInputStream::ReadDouble} \membersection{wxDataInputStream::ReadDouble}
\func{double}{ReadDouble}{\void} \func{double}{ReadDouble}{\void}
Reads a double (IEEE encoded) from the stream. Reads a double (IEEE encoded) from the stream.
\func{void}{ReadDouble}{\param{double *}{buffer}, \param{size\_t }{size}}
Reads double data (IEEE encoded) from the stream in a specified buffer. the amount of
double to read is specified by the {\it size} variable.
\membersection{wxDataInputStream::ReadString}\label{wxdatainputstreamreadstring} \membersection{wxDataInputStream::ReadString}\label{wxdatainputstreamreadstring}
\func{wxString}{ReadString}{\void} \func{wxString}{ReadString}{\void}
@@ -116,4 +141,3 @@ object passed to constructor and returns the result as wxString. You are
responsible for using the same convertor as when writing the stream. responsible for using the same convertor as when writing the stream.
See also \helpref{wxDataOutputStream::WriteString}{wxdataoutputstreamwritestring}. See also \helpref{wxDataOutputStream::WriteString}{wxdataoutputstreamwritestring}.

View File

@@ -60,30 +60,55 @@ little-endian order.
Writes the single byte {\it i8} to the stream. Writes the single byte {\it i8} to the stream.
\func{void}{Write8}{\param{const wxUint8 *}{buffer}, \param{size\_t }{size}}
Writes an array of bytes to the stream. The amount of bytes to write is
specified with the {\it size} variable.
\membersection{wxDataOutputStream::Write16} \membersection{wxDataOutputStream::Write16}
\func{void}{Write16}{{\param wxUint16 }{i16}} \func{void}{Write16}{{\param wxUint16 }{i16}}
Writes the 16 bit unsigned integer {\it i16} to the stream. Writes the 16 bit unsigned integer {\it i16} to the stream.
\func{void}{Write16}{\param{const wxUint16 *}{buffer}, \param{size\_t }{size}}
Writes an array of 16 bit unsigned integer to the stream. The amount of
16 bit unsigned integer to write is specified with the {\it size} variable.
\membersection{wxDataOutputStream::Write32} \membersection{wxDataOutputStream::Write32}
\func{void}{Write32}{{\param wxUint32 }{i32}} \func{void}{Write32}{{\param wxUint32 }{i32}}
Writes the 32 bit unsigned integer {\it i32} to the stream. Writes the 32 bit unsigned integer {\it i32} to the stream.
\func{void}{Write32}{\param{const wxUint32 *}{buffer}, \param{size\_t }{size}}
Writes an array of 32 bit unsigned integer to the stream. The amount of
32 bit unsigned integer to write is specified with the {\it size} variable.
\membersection{wxDataOutputStream::Write64} \membersection{wxDataOutputStream::Write64}
\func{void}{Write64}{{\param wxUint64 }{i64}} \func{void}{Write64}{{\param wxUint64 }{i64}}
Writes the 64 bit unsigned integer {\it i64} to the stream. Writes the 64 bit unsigned integer {\it i64} to the stream.
\func{void}{Write64}{\param{const wxUint64 *}{buffer}, \param{size\_t }{size}}
Writes an array of 64 bit unsigned integer to the stream. The amount of
64 bit unsigned integer to write is specified with the {\it size} variable.
\membersection{wxDataOutputStream::WriteDouble} \membersection{wxDataOutputStream::WriteDouble}
\func{void}{WriteDouble}{{\param double }{f}} \func{void}{WriteDouble}{{\param double }{f}}
Writes the double {\it f} to the stream using the IEEE format. Writes the double {\it f} to the stream using the IEEE format.
\func{void}{WriteDouble}{\param{const double *}{buffer}, \param{size\_t }{size}}
Writes an array of double to the stream. The amount of double to write is
specified with the {\it size} variable.
\membersection{wxDataOutputStream::WriteString}\label{wxdataoutputstreamwritestring} \membersection{wxDataOutputStream::WriteString}\label{wxdataoutputstreamwritestring}
\func{void}{WriteString}{{\param const wxString\&}{string}} \func{void}{WriteString}{{\param const wxString\&}{string}}

View File

@@ -2,7 +2,7 @@
// Name: datstrm.h // Name: datstrm.h
// Purpose: Data stream classes // Purpose: Data stream classes
// Author: Guilhem Lavaux // Author: Guilhem Lavaux
// Modified by: // Modified by: Mickael Gilabert
// Created: 28/06/1998 // Created: 28/06/1998
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Guilhem Lavaux // Copyright: (c) Guilhem Lavaux
@@ -41,6 +41,12 @@ public:
double ReadDouble(); double ReadDouble();
wxString ReadString(); wxString ReadString();
void Read64(wxUint64 *buffer, size_t size);
void Read32(wxUint32 *buffer, size_t size);
void Read16(wxUint16 *buffer, size_t size);
void Read8(wxUint8 *buffer, size_t size);
void ReadDouble(double *buffer, size_t size);
wxDataInputStream& operator>>(wxString& s); wxDataInputStream& operator>>(wxString& s);
wxDataInputStream& operator>>(wxInt8& c); wxDataInputStream& operator>>(wxInt8& c);
wxDataInputStream& operator>>(wxInt16& i); wxDataInputStream& operator>>(wxInt16& i);
@@ -83,6 +89,12 @@ public:
void WriteDouble(double d); void WriteDouble(double d);
void WriteString(const wxString& string); void WriteString(const wxString& string);
void Write64(const wxUint64 *buffer, size_t size);
void Write32(const wxUint32 *buffer, size_t size);
void Write16(const wxUint16 *buffer, size_t size);
void Write8(const wxUint8 *buffer, size_t size);
void WriteDouble(const double *buffer, size_t size);
wxDataOutputStream& operator<<(const wxChar *string); wxDataOutputStream& operator<<(const wxChar *string);
wxDataOutputStream& operator<<(const wxString& string); wxDataOutputStream& operator<<(const wxString& string);
wxDataOutputStream& operator<<(wxInt8 c); wxDataOutputStream& operator<<(wxInt8 c);

View File

@@ -2,7 +2,7 @@
// Name: datstrm.cpp // Name: datstrm.cpp
// Purpose: Data stream classes // Purpose: Data stream classes
// Author: Guilhem Lavaux // Author: Guilhem Lavaux
// Modified by: // Modified by: Mickael Gilabert
// Created: 28/06/98 // Created: 28/06/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Guilhem Lavaux // Copyright: (c) Guilhem Lavaux
@@ -126,6 +126,85 @@ wxString wxDataInputStream::ReadString()
return wxEmptyString; return wxEmptyString;
} }
void wxDataInputStream::Read64(wxUint64 *buffer, size_t size)
{
m_input->Read(buffer, size * 8);
if (m_be_order)
{
for (wxUint32 i=0; i<size; i++)
{
wxUint64 v = wxUINT64_SWAP_ON_LE(*buffer);
*(buffer++) = v;
}
}
else
{
for (wxUint32 i=0; i<size; i++)
{
wxUint64 v = wxUINT64_SWAP_ON_BE(*buffer);
*(buffer++) = v;
}
}
}
void wxDataInputStream::Read32(wxUint32 *buffer, size_t size)
{
m_input->Read(buffer, size * 4);
if (m_be_order)
{
for (wxUint32 i=0; i<size; i++)
{
wxUint32 v = wxUINT32_SWAP_ON_LE(*buffer);
*(buffer++) = v;
}
}
else
{
for (wxUint32 i=0; i<size; i++)
{
wxUint32 v = wxUINT32_SWAP_ON_BE(*buffer);
*(buffer++) = v;
}
}
}
void wxDataInputStream::Read16(wxUint16 *buffer, size_t size)
{
m_input->Read(buffer, size * 2);
if (m_be_order)
{
for (wxUint32 i=0; i<size; i++)
{
wxUint16 v = wxUINT16_SWAP_ON_LE(*buffer);
*(buffer++) = v;
}
}
else
{
for (wxUint32 i=0; i<size; i++)
{
wxUint16 v = wxUINT16_SWAP_ON_BE(*buffer);
*(buffer++) = v;
}
}
}
void wxDataInputStream::Read8(wxUint8 *buffer, size_t size)
{
m_input->Read(buffer, size);
}
void wxDataInputStream::ReadDouble(double *buffer, size_t size)
{
for (wxUint32 i=0; i<size; i++)
{
*(buffer++) = ReadDouble();
}
}
wxDataInputStream& wxDataInputStream::operator>>(wxString& s) wxDataInputStream& wxDataInputStream::operator>>(wxString& s)
{ {
s = ReadString(); s = ReadString();
@@ -274,6 +353,85 @@ void wxDataOutputStream::WriteDouble(double d)
m_output->Write(buf, 10); m_output->Write(buf, 10);
} }
void wxDataOutputStream::Write64(const wxUint64 *buffer, size_t size)
{
if (m_be_order)
{
for (wxUint32 i=0; i<size ;i++)
{
wxUint64 i64 = wxUINT64_SWAP_ON_LE(*buffer);
buffer++;
m_output->Write(&i64, 8);
}
}
else
{
for (wxUint32 i=0; i<size ;i++)
{
wxUint64 i64 = wxUINT64_SWAP_ON_BE(*buffer);
buffer++;
m_output->Write(&i64, 8);
}
}
}
void wxDataOutputStream::Write32(const wxUint32 *buffer, size_t size)
{
if (m_be_order)
{
for (wxUint32 i=0; i<size ;i++)
{
wxUint32 i32 = wxUINT32_SWAP_ON_LE(*buffer);
buffer++;
m_output->Write(&i32, 4);
}
}
else
{
for (wxUint32 i=0; i<size ;i++)
{
wxUint32 i32 = wxUINT32_SWAP_ON_BE(*buffer);
buffer++;
m_output->Write(&i32, 4);
}
}
}
void wxDataOutputStream::Write16(const wxUint16 *buffer, size_t size)
{
if (m_be_order)
{
for (wxUint32 i=0; i<size ;i++)
{
wxUint16 i16 = wxUINT16_SWAP_ON_LE(*buffer);
buffer++;
m_output->Write(&i16, 2);
}
}
else
{
for (wxUint32 i=0; i<size ;i++)
{
wxUint16 i16 = wxUINT16_SWAP_ON_BE(*buffer);
buffer++;
m_output->Write(&i16, 2);
}
}
}
void wxDataOutputStream::Write8(const wxUint8 *buffer, size_t size)
{
m_output->Write(buffer, size);
}
void wxDataOutputStream::WriteDouble(const double *buffer, size_t size)
{
for (wxUint32 i=0; i<size; i++)
{
WriteDouble(*(buffer++));
}
}
wxDataOutputStream& wxDataOutputStream::operator<<(const wxChar *string) wxDataOutputStream& wxDataOutputStream::operator<<(const wxChar *string)
{ {
Write32(wxStrlen(string)); Write32(wxStrlen(string));