// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "txtstrm.h"
#endif
#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];
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') &&
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)
wxChar c = NextChar();
if(c == wxEOT)
break;
-
+
if ( !m_input )
break;
return word;
word += c;
-
+
while ( !m_input.Eof() )
{
c = NextChar();
if(c == wxEOT)
break;
-
+
if (m_separators.Contains(c))
break;
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();
#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) );
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;
wxTextOutputStream &endl( wxTextOutputStream &stream )
{
- return stream << wxT('\n');
+ return stream.PutChar(wxT('\n'));
}
#endif