]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/txtstrm.cpp
define wxNO_RTTI/EXCEPTIONS/THREADS if corresponding USE_XXX is set to 0
[wxWidgets.git] / src / common / txtstrm.cpp
index b113fe2d1f12b42ac2e35554de8effbc754d51b6..93bc7ad912bffa5f6f9a810c06db73f89698dd23 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     28/06/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Guilhem Lavaux
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
@@ -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,10 +442,21 @@ wxTextOutputStream& wxTextOutputStream::operator<<(const wxString& string)
 wxTextOutputStream& wxTextOutputStream::operator<<(char c)
 {
     WriteString( wxString::FromAscii(c) );
-    
+
     return *this;
 }
 
+#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
+
+wxTextOutputStream& wxTextOutputStream::operator<<(wchar_t wc)
+{
+    WriteString( wxString(&wc, m_conv, 1) );
+
+    return *this;
+}
+
+#endif // wxUSE_UNICODE
+
 wxTextOutputStream& wxTextOutputStream::operator<<(wxInt16 c)
 {
     wxString str;
@@ -475,7 +507,7 @@ wxTextOutputStream& wxTextOutputStream::operator<<(float f)
 
 wxTextOutputStream &endl( wxTextOutputStream &stream )
 {
-    return stream << wxT('\n');
+    return stream.PutChar(wxT('\n'));
 }
 
 #endif