#include "wx/datstrm.h"
-#if !USE_SHARED_LIBRARY
-IMPLEMENT_CLASS(wxDataInputStream, wxFilterInputStream)
-IMPLEMENT_CLASS(wxDataOutputStream, wxFilterOutputStream)
-#endif
+// ---------------------------------------------------------------------------
+// wxDataInputStream
+// ---------------------------------------------------------------------------
wxDataInputStream::wxDataInputStream(wxInputStream& s)
: wxFilterInputStream(s)
{
char buf[4];
- if (!m_parent_i_stream)
- return 0;
-
Read(buf, 4);
return (unsigned long)buf[0] |
{
char buf[2];
- if (!m_parent_i_stream)
- return 0;
-
Read(buf, 2);
return (unsigned short)buf[0] |
{
char buf;
- if (!m_parent_i_stream)
- return 0;
-
Read(&buf, 1);
return (unsigned char)buf;
}
double wxDataInputStream::ReadDouble()
{
-#if USE_APPLE_IEEE
+#if wxUSE_APPLE_IEEE
char buf[10];
- if (!m_parent_i_stream)
- return 0.0;
-
Read(buf, 10);
return ConvertFromIeeeExtended((unsigned char *)buf);
#else
wxString wxDataInputStream::ReadLine()
{
- char i_strg[255];
-
- if (!m_parent_i_stream)
- return "";
-
- // TODO: Implement ReadLine
- return i_strg;
+ char c, last_endl = 0;
+ bool end_line = FALSE;
+ wxString line;
+
+ while (!end_line) {
+ c = GetC();
+ switch (c) {
+ case '\n':
+ end_line = TRUE;
+ break;
+ case '\r':
+ last_endl = '\r';
+ break;
+ default:
+ if (last_endl == '\r') {
+ end_line = TRUE;
+ InputStreamBuffer()->WriteBack(c);
+ break;
+ }
+ line += c;
+ break;
+ }
+ }
+ return line;
}
wxString wxDataInputStream::ReadString()
char *string;
unsigned long len;
- if (!m_parent_i_stream)
- return "";
-
len = Read32();
string = new char[len+1];
wx_string = string;
delete string;
- return wx_string;
+ return wx_string;
}
+// ---------------------------------------------------------------------------
+// wxDataOutputStream
+// ---------------------------------------------------------------------------
+
wxDataOutputStream::wxDataOutputStream(wxOutputStream& s)
: wxFilterOutputStream(s)
{
}
+wxDataOutputStream::~wxDataOutputStream()
+{
+}
+
void wxDataOutputStream::Write32(unsigned long i)
{
char buf[4];
- if (!m_parent_o_stream)
- return;
-
buf[0] = i & 0xff;
buf[1] = (i >> 8) & 0xff;
buf[2] = (i >> 16) & 0xff;
{
char buf[2];
- if (!m_parent_o_stream)
- return;
-
buf[0] = i & 0xff;
buf[1] = (i >> 8) & 0xff;
Write(buf, 2);
void wxDataOutputStream::Write8(unsigned char i)
{
- if (!m_parent_o_stream)
- return;
-
Write(&i, 1);
}
void wxDataOutputStream::WriteLine(const wxString& line)
{
#ifdef __WXMSW__
- wxString tmp_string = line + "\r\n";
+ wxString tmp_string = line + _T("\r\n");
#else
- wxString tmp_string = line + '\n';
+ wxString tmp_string = line + _T('\n');
#endif
- if (!m_parent_o_stream)
- return;
-
- Write((const char *) tmp_string, tmp_string.Length());
+ Write((const wxChar *) tmp_string, tmp_string.Length()*sizeof(wxChar));
}
void wxDataOutputStream::WriteString(const wxString& string)
{
- if (!m_parent_o_stream)
- return;
-
Write32(string.Length());
- Write((const char *) string, string.Length());
+ Write((const wxChar *) string, string.Length()*sizeof(wxChar));
}
// Must be at global scope for VC++ 5
{
char buf[10];
- if (!m_parent_o_stream)
- return;
-
-#if USE_APPLE_IEEE
+#if wxUSE_APPLE_IEEE
ConvertToIeeeExtended(d, (unsigned char *)buf);
#else
-# pragma warning "wxDataStream::WriteDouble() not using IeeeExtended - will not work!"
+# pragma warning "wxDataOutputStream::WriteDouble() not using IeeeExtended - will not work!"
buf[0] = '\0';
#endif
Write(buf, 10);