]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/txtstrm.cpp
Fix crash when using a proxy (m_protocol already gets cleaned up via CleanData())
[wxWidgets.git] / src / common / txtstrm.cpp
index 404f31f59487225079a4444e63600310b5bda2a1..93bc7ad912bffa5f6f9a810c06db73f89698dd23 100644 (file)
@@ -70,14 +70,14 @@ wxChar wxTextInputStream::NextChar()
 #if wxUSE_UNICODE
     wxChar wbuf[2];
     memset((void*)m_lastBytes, 0, 10);
-    for(size_t inlen = 0; inlen < 9; inlen++) 
+    for(size_t inlen = 0; inlen < 9; inlen++)
     {
         // actually read the next character
         m_lastBytes[inlen] = m_input.GetC();
 
-        if(m_input.LastRead() <= 0) 
+        if(m_input.LastRead() <= 0)
             return wxEOT;
-        
+
         int retlen = (int) m_conv.MB2WC(wbuf, m_lastBytes, 2); // returns -1 for failure
         if(retlen >= 0) // res == 0 could happen for '\0' char
             return wbuf[0];
@@ -86,13 +86,13 @@ wxChar wxTextInputStream::NextChar()
     return wxEOT;
 #else
     m_lastBytes[0] = m_input.GetC();
-    
-    if(m_input.LastRead() <= 0) 
+
+    if(m_input.LastRead() <= 0)
         return wxEOT;
-    
+
     return m_lastBytes[0];
 #endif
-    
+
 }
 
 wxChar wxTextInputStream::NextNonSeparators()
@@ -112,18 +112,18 @@ wxChar wxTextInputStream::NextNonSeparators()
 
 bool wxTextInputStream::EatEOL(const wxChar &c)
 {
-    if (c == wxT('\n')) return TRUE; // eat on UNIX
+    if (c == wxT('\n')) return true; // eat on UNIX
 
     if (c == wxT('\r')) // eat on both Mac and DOS
     {
         wxChar c2 = NextChar();
-        if(c2 == wxEOT) return TRUE; // end of stream reached, had enough :-)
+        if(c2 == wxEOT) return true; // end of stream reached, had enough :-)
 
         if (c2 != wxT('\n')) UngetLast(); // Don't eat on Mac
-        return TRUE;
+        return true;
     }
 
-    return FALSE;
+    return false;
 }
 
 wxUint32 wxTextInputStream::Read32(int base)
@@ -191,7 +191,7 @@ wxString wxTextInputStream::ReadLine()
         wxChar c = NextChar();
         if(c == wxEOT)
             break;
-        
+
         if ( !m_input )
             break;
 
@@ -216,13 +216,13 @@ wxString wxTextInputStream::ReadWord()
         return word;
 
     word += c;
-    
+
     while ( !m_input.Eof() )
     {
         c = NextChar();
         if(c == wxEOT)
             break;
-            
+
         if (m_separators.Contains(c))
             break;
 
@@ -252,6 +252,17 @@ wxTextInputStream& wxTextInputStream::operator>>(char& c)
     return *this;
 }
 
+#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
+
+wxTextInputStream& wxTextInputStream::operator>>(wchar_t& wc)
+{
+    wc = GetChar();
+
+    return *this;
+}
+
+#endif // wxUSE_UNICODE
+
 wxTextInputStream& wxTextInputStream::operator>>(wxInt16& i)
 {
     i = (wxInt16)Read16();
@@ -406,6 +417,16 @@ void wxTextOutputStream::WriteString(const wxString& string)
 #endif
 }
 
+wxTextOutputStream& wxTextOutputStream::PutChar(wxChar c)
+{
+#if wxUSE_UNICODE
+    WriteString( wxString(&c, m_conv, 1) );
+#else
+    WriteString( wxString(&c, wxConvLocal, 1) );
+#endif
+    return *this;
+}
+
 wxTextOutputStream& wxTextOutputStream::operator<<(const wxChar *string)
 {
     WriteString( wxString(string) );
@@ -421,18 +442,20 @@ wxTextOutputStream& wxTextOutputStream::operator<<(const wxString& string)
 wxTextOutputStream& wxTextOutputStream::operator<<(char c)
 {
     WriteString( wxString::FromAscii(c) );
-    
+
     return *this;
 }
 
-#if wxUSE_WCHAR_T && wxWCHAR_T_IS_REAL_TYPE
+#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
 
 wxTextOutputStream& wxTextOutputStream::operator<<(wchar_t wc)
 {
     WriteString( wxString(&wc, m_conv, 1) );
+
+    return *this;
 }
 
-#endif // wxUSE_WCHAR_T
+#endif // wxUSE_UNICODE
 
 wxTextOutputStream& wxTextOutputStream::operator<<(wxInt16 c)
 {
@@ -484,7 +507,7 @@ wxTextOutputStream& wxTextOutputStream::operator<<(float f)
 
 wxTextOutputStream &endl( wxTextOutputStream &stream )
 {
-    return stream << wxT('\n');
+    return stream.PutChar(wxT('\n'));
 }
 
 #endif