X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/371a5b4e62eb415107e045588f614fa49e866e78..b38b0d22d7a97ff66d824e11e3e1c96c4423900b:/include/wx/txtstrm.h?ds=sidebyside diff --git a/include/wx/txtstrm.h b/include/wx/txtstrm.h index 145257697e..2e880a8ac2 100644 --- a/include/wx/txtstrm.h +++ b/include/wx/txtstrm.h @@ -20,16 +20,23 @@ #if wxUSE_STREAMS -class WXDLLEXPORT wxTextInputStream; -class WXDLLEXPORT wxTextOutputStream; +class WXDLLIMPEXP_BASE wxTextInputStream; +class WXDLLIMPEXP_BASE wxTextOutputStream; typedef wxTextInputStream& (*__wxTextInputManip)(wxTextInputStream&); typedef wxTextOutputStream& (*__wxTextOutputManip)(wxTextOutputStream&); -WXDLLEXPORT wxTextOutputStream &endl( wxTextOutputStream &stream ); +WXDLLIMPEXP_BASE wxTextOutputStream &endl( wxTextOutputStream &stream ); -class WXDLLEXPORT wxTextInputStream +#define wxEOT wxT('\4') // the End-Of-Text control code (used only inside wxTextInputStream) + +// 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. +// You should however be prepared to receive an empty item (empty string / zero number) at the +// end of file, especially on Windows systems. This is unavoidable because most (but not all) files end +// with whitespace (i.e. usually a newline). +class WXDLLIMPEXP_BASE wxTextInputStream { public: #if wxUSE_UNICODE @@ -39,11 +46,14 @@ public: #endif ~wxTextInputStream(); - wxUint32 Read32(); - wxUint16 Read16(); - wxUint8 Read8(); + wxUint32 Read32(int base = 10); // base may be between 2 and 36, inclusive, or the special 0 (= C format) + wxUint16 Read16(int base = 10); + wxUint8 Read8(int base = 10); + wxInt32 Read32S(int base = 10); + wxInt16 Read16S(int base = 10); + wxInt8 Read8S(int base = 10); double ReadDouble(); - wxString ReadString(); // deprecated use ReadLine or ReadWord instead + wxString ReadString(); // deprecated: use ReadLine or ReadWord instead wxString ReadLine(); wxString ReadWord(); @@ -65,14 +75,19 @@ public: protected: wxInputStream &m_input; wxString m_separators; + char m_lastBytes[10]; // stores the bytes that were read for the last character #if wxUSE_UNICODE wxMBConv &m_conv; #endif bool EatEOL(const wxChar &c); + 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(); - void SkipIfEndOfLine( wxChar c ); + + DECLARE_NO_COPY_CLASS(wxTextInputStream) }; typedef enum @@ -83,7 +98,7 @@ typedef enum wxEOL_DOS } wxEOL; -class WXDLLEXPORT wxTextOutputStream +class WXDLLIMPEXP_BASE wxTextOutputStream { public: #if wxUSE_UNICODE @@ -122,6 +137,7 @@ protected: wxMBConv &m_conv; #endif + DECLARE_NO_COPY_CLASS(wxTextOutputStream) }; #endif