X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0cd9bfe8dacee998429236912c831fd2472163a8..e66474166b164b9e11f9881e79d531bc5182ea31:/src/common/datstrm.cpp diff --git a/src/common/datstrm.cpp b/src/common/datstrm.cpp index f5fdaa1bd4..aff9c5355c 100644 --- a/src/common/datstrm.cpp +++ b/src/common/datstrm.cpp @@ -17,19 +17,20 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #ifndef WX_PRECOMP -#include "wx/defs.h" + #include "wx/defs.h" #endif +#if wxUSE_STREAMS + #include "wx/datstrm.h" -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDataInputStream, wxFilterInputStream) -IMPLEMENT_CLASS(wxDataOutputStream, wxFilterOutputStream) -#endif +// --------------------------------------------------------------------------- +// wxDataInputStream +// --------------------------------------------------------------------------- wxDataInputStream::wxDataInputStream(wxInputStream& s) : wxFilterInputStream(s) @@ -75,7 +76,7 @@ extern "C" double ConvertFromIeeeExtended(const unsigned char *bytes); double wxDataInputStream::ReadDouble() { -#if USE_APPLE_IEEE +#if wxUSE_APPLE_IEEE char buf[10]; Read(buf, 10); @@ -87,10 +88,30 @@ double wxDataInputStream::ReadDouble() wxString wxDataInputStream::ReadLine() { - char i_strg[255]; - - // 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() @@ -108,9 +129,13 @@ wxString wxDataInputStream::ReadString() wx_string = string; delete string; - return wx_string; + return wx_string; } +// --------------------------------------------------------------------------- +// wxDataOutputStream +// --------------------------------------------------------------------------- + wxDataOutputStream::wxDataOutputStream(wxOutputStream& s) : wxFilterOutputStream(s) { @@ -148,18 +173,18 @@ void wxDataOutputStream::Write8(unsigned char i) 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 - Write((const char *) tmp_string, tmp_string.Length()); + Write((const wxChar *) tmp_string, tmp_string.Length()*sizeof(wxChar)); } void wxDataOutputStream::WriteString(const wxString& string) { 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 @@ -169,11 +194,15 @@ void wxDataOutputStream::WriteDouble(double d) { char buf[10]; -#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); } + +#endif + // wxUSE_STREAMS + \ No newline at end of file