- wxTextInputStream(wxInputStream& s);
- ~wxTextInputStream();
-
- wxUint32 Read32();
- wxUint16 Read16();
- wxUint8 Read8();
- double ReadDouble();
- wxString ReadString();
-
- // Operators
- wxTextInputStream& operator>>(wxString& line);
- wxTextInputStream& operator>>(wxChar& c);
- wxTextInputStream& operator>>(wxInt16& i);
- wxTextInputStream& operator>>(wxInt32& i);
- wxTextInputStream& operator>>(wxUint16& i);
- wxTextInputStream& operator>>(wxUint32& i);
- wxTextInputStream& operator>>(double& i);
- wxTextInputStream& operator>>(float& f);
-
- protected:
- wxInputStream *m_input;
-
- wxChar NextNonWhiteSpace();
- void SkipIfEndOfLine( wxChar c );
+#if wxUSE_UNICODE
+ wxTextInputStream(wxInputStream& s, const wxString &sep=wxT(" \t"), wxMBConv& conv = wxConvUTF8 );
+#else
+ wxTextInputStream(wxInputStream& s, const wxString &sep=wxT(" \t") );
+#endif
+ ~wxTextInputStream();
+
+ 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 ReadLine();
+ wxString ReadWord();
+ wxChar GetChar() { wxChar c = NextChar(); return c != wxEOT ? c : 0; }
+
+ wxString GetStringSeparators() const { return m_separators; }
+ void SetStringSeparators(const wxString &c) { m_separators = c; }
+
+ // Operators
+ wxTextInputStream& operator>>(wxString& word);
+ wxTextInputStream& operator>>(char& c);
+ wxTextInputStream& operator>>(wxInt16& i);
+ wxTextInputStream& operator>>(wxInt32& i);
+ wxTextInputStream& operator>>(wxUint16& i);
+ wxTextInputStream& operator>>(wxUint32& i);
+ wxTextInputStream& operator>>(double& i);
+ wxTextInputStream& operator>>(float& f);
+
+ wxTextInputStream& operator>>( __wxTextInputManip func) { return func(*this); }
+
+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();
+
+ DECLARE_NO_COPY_CLASS(wxTextInputStream)