Get rid of wxTextInputStream code dealing with wxEOT

Having NextChar() returning wxEOT only for GetChar() to turn it back to
NUL didn't make any sense, just return NUL directly and get rid of
GetChar/NextChar() distinction.

No real changes, just simplify the code.
This commit is contained in:
Vadim Zeitlin
2017-11-08 23:27:13 +01:00
parent 46fe849db6
commit f365b0712b
2 changed files with 17 additions and 17 deletions

View File

@@ -25,7 +25,8 @@ typedef wxTextOutputStream& (*__wxTextOutputManip)(wxTextOutputStream&);
WXDLLIMPEXP_BASE wxTextOutputStream &endl( wxTextOutputStream &stream ); WXDLLIMPEXP_BASE wxTextOutputStream &endl( wxTextOutputStream &stream );
#define wxEOT wxT('\4') // the End-Of-Text control code (used only inside wxTextInputStream) // Obsolete constant defined only for compatibility, not used.
#define wxEOT wxT('\4')
// If you're scanning through a file using wxTextInputStream, you should check for EOF _before_ // If you're scanning through a file using wxTextInputStream, you should check for EOF _before_
// reading the next item (word / number), because otherwise the last item may get lost. // reading the next item (word / number), because otherwise the last item may get lost.
@@ -58,7 +59,7 @@ public:
double ReadDouble(); double ReadDouble();
wxString ReadLine(); wxString ReadLine();
wxString ReadWord(); wxString ReadWord();
wxChar GetChar() { wxChar c = NextChar(); return (wxChar)(c != wxEOT ? c : 0); } wxChar GetChar();
wxString GetStringSeparators() const { return m_separators; } wxString GetStringSeparators() const { return m_separators; }
void SetStringSeparators(const wxString &c) { m_separators = c; } void SetStringSeparators(const wxString &c) { m_separators = c; }
@@ -100,8 +101,6 @@ protected:
bool EatEOL(const wxChar &c); bool EatEOL(const wxChar &c);
void UngetLast(); // should be used instead of wxInputStream::Ungetch() because of Unicode issues void UngetLast(); // should be used instead of wxInputStream::Ungetch() because of Unicode issues
// returns EOT (\4) if there is a stream error, or end of file
wxChar NextChar(); // this should be used instead of GetC() because of Unicode issues
wxChar NextNonSeparators(); wxChar NextNonSeparators();
wxDECLARE_NO_COPY_CLASS(wxTextInputStream); wxDECLARE_NO_COPY_CLASS(wxTextInputStream);

View File

@@ -65,7 +65,7 @@ void wxTextInputStream::UngetLast()
memset((void*)m_lastBytes, 0, 10); memset((void*)m_lastBytes, 0, 10);
} }
wxChar wxTextInputStream::NextChar() wxChar wxTextInputStream::GetChar()
{ {
#if wxUSE_UNICODE #if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2 #if SIZEOF_WCHAR_T == 2
@@ -87,7 +87,7 @@ wxChar wxTextInputStream::NextChar()
m_lastBytes[inlen] = m_input.GetC(); m_lastBytes[inlen] = m_input.GetC();
if(m_input.LastRead() <= 0) if(m_input.LastRead() <= 0)
return wxEOT; return 0;
switch ( m_conv->ToWChar(wbuf, WXSIZEOF(wbuf), m_lastBytes, inlen + 1) ) switch ( m_conv->ToWChar(wbuf, WXSIZEOF(wbuf), m_lastBytes, inlen + 1) )
{ {
@@ -108,7 +108,7 @@ wxChar wxTextInputStream::NextChar()
// them with an extra single byte, something fishy is going on // them with an extra single byte, something fishy is going on
// (except if we use UTF-16, see below) // (except if we use UTF-16, see below)
wxFAIL_MSG("unexpected decoding result"); wxFAIL_MSG("unexpected decoding result");
return wxEOT; return 0;
#if SIZEOF_WCHAR_T == 2 #if SIZEOF_WCHAR_T == 2
case 2: case 2:
@@ -131,12 +131,12 @@ wxChar wxTextInputStream::NextChar()
// there should be no encoding which requires more than nine bytes for one // there should be no encoding which requires more than nine bytes for one
// character so something must be wrong with our conversion but we have no // character so something must be wrong with our conversion but we have no
// way to signal it from here // way to signal it from here
return wxEOT; return 0;
#else #else
m_lastBytes[0] = m_input.GetC(); m_lastBytes[0] = m_input.GetC();
if(m_input.LastRead() <= 0) if(m_input.LastRead() <= 0)
return wxEOT; return 0;
return m_lastBytes[0]; return m_lastBytes[0];
#endif #endif
@@ -147,8 +147,9 @@ wxChar wxTextInputStream::NextNonSeparators()
{ {
for (;;) for (;;)
{ {
wxChar c = NextChar(); wxChar c = GetChar();
if (c == wxEOT) return (wxChar) 0; if (!c)
return c;
if (c != wxT('\n') && if (c != wxT('\n') &&
c != wxT('\r') && c != wxT('\r') &&
@@ -164,8 +165,8 @@ bool wxTextInputStream::EatEOL(const wxChar &c)
if (c == wxT('\r')) // eat on both Mac and DOS if (c == wxT('\r')) // eat on both Mac and DOS
{ {
wxChar c2 = NextChar(); wxChar c2 = GetChar();
if(c2 == wxEOT) return true; // end of stream reached, had enough :-) if (!c2) return true; // end of stream reached, had enough :-)
if (c2 != wxT('\n')) UngetLast(); // Don't eat on Mac if (c2 != wxT('\n')) UngetLast(); // Don't eat on Mac
return true; return true;
@@ -261,8 +262,8 @@ wxString wxTextInputStream::ReadLine()
while ( !m_input.Eof() ) while ( !m_input.Eof() )
{ {
wxChar c = NextChar(); wxChar c = GetChar();
if(c == wxEOT) if (!c)
break; break;
if (EatEOL(c)) if (EatEOL(c))
@@ -289,8 +290,8 @@ wxString wxTextInputStream::ReadWord()
while ( !m_input.Eof() ) while ( !m_input.Eof() )
{ {
c = NextChar(); c = GetChar();
if(c == wxEOT) if (!c)
break; break;
if (m_separators.Find(c) >= 0) if (m_separators.Find(c) >= 0)