]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/txtstrm.cpp
[wxGTK2] Move wxFontRefData::SetStyle/SetWeight to wxNativeFontInfo
[wxWidgets.git] / src / common / txtstrm.cpp
index 55a7ac35804f1f72fdd2eef494e5c94666e2255b..ede8a1c5ea49f9b21d2835125962a3d30abe09f1 100644 (file)
@@ -9,7 +9,7 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "txtstrm.h"
 #endif
 
@@ -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,21 +86,20 @@ 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()
 {
-    wxChar c = (wxChar) 0;
     for (;;)
     {
-        c = NextChar();
+        wxChar c = NextChar();
         if (c == wxEOT) return (wxChar) 0;
 
         if (c != wxT('\n') &&
@@ -113,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)
@@ -133,7 +132,7 @@ wxUint32 wxTextInputStream::Read32(int base)
     if(!m_input) return 0;
 
     wxString word = ReadWord();
-    if(word.IsEmpty())
+    if(word.empty())
         return 0;
     return wxStrtoul(word.c_str(), 0, base);
 }
@@ -154,7 +153,7 @@ wxInt32 wxTextInputStream::Read32S(int base)
     if(!m_input) return 0;
 
     wxString word = ReadWord();
-    if(word.IsEmpty())
+    if(word.empty())
         return 0;
     return wxStrtol(word.c_str(), 0, base);
 }
@@ -173,7 +172,7 @@ double wxTextInputStream::ReadDouble()
 {
     if(!m_input) return 0;
     wxString word = ReadWord();
-    if(word.IsEmpty())
+    if(word.empty())
         return 0;
     return wxStrtod(word.c_str(), 0);
 }
@@ -192,7 +191,7 @@ wxString wxTextInputStream::ReadLine()
         wxChar c = NextChar();
         if(c == wxEOT)
             break;
-        
+
         if ( !m_input )
             break;
 
@@ -217,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;
 
@@ -253,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();
@@ -396,7 +406,7 @@ void wxTextOutputStream::WriteString(const wxString& string)
         }
 
         out << c;
-   }
+    }
 
     // We must not write the trailing NULL here
 #if wxUSE_UNICODE
@@ -407,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) );
@@ -422,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;
@@ -476,7 +507,7 @@ wxTextOutputStream& wxTextOutputStream::operator<<(float f)
 
 wxTextOutputStream &endl( wxTextOutputStream &stream )
 {
-    return stream << wxT('\n');
+    return stream.PutChar(wxT('\n'));
 }
 
 #endif