X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b7d4a1b0aa36d66c55e531f2530bad87d00de1c3..7344108e8a129a3f9b4df5ab0f98a1713db03b89:/include/wx/tokenzr.h diff --git a/include/wx/tokenzr.h b/include/wx/tokenzr.h index d47d52c324..0708ebff13 100644 --- a/include/wx/tokenzr.h +++ b/include/wx/tokenzr.h @@ -21,7 +21,7 @@ // ---------------------------------------------------------------------------- // default: delimiters are usual white space characters -#define wxDEFAULT_DELIMITERS (_T(" \t\r\n")) +#define wxDEFAULT_DELIMITERS (wxT(" \t\r\n")) // wxStringTokenizer mode flags which determine its behaviour enum wxStringTokenizerMode @@ -72,12 +72,12 @@ public: // get current tokenizer state // returns the part of the string which remains to tokenize (*not* the // initial string) - wxString GetString() const { return m_string.substr(m_pos); } + wxString GetString() const { return wxString(m_pos, m_string.end()); } // returns the current position (i.e. one index after the last // returned token or 0 if GetNextToken() has never been called) in the // original string - size_t GetPosition() const { return m_pos; } + size_t GetPosition() const { return m_pos - m_string.begin(); } // misc // get the current mode - can be different from the one passed to the @@ -111,10 +111,24 @@ public: protected: bool IsOk() const { return m_mode != wxTOKEN_INVALID; } - wxString m_string, // the string we tokenize - m_delims; // all possible delimiters + bool DoHasMoreTokens() const; - size_t m_pos; // the current position in m_string + enum MoreTokensState + { + MoreTokens_Unknown, + MoreTokens_Yes, + MoreTokens_No + }; + + MoreTokensState m_hasMoreTokens; + + wxString m_string; // the string we tokenize + wxString::const_iterator m_stringEnd; + // FIXME-UTF8: use wxWcharBuffer + wxWxCharBuffer m_delims; // all possible delimiters + size_t m_delimsLen; + + wxString::const_iterator m_pos; // the current position in m_string wxStringTokenizerMode m_mode; // see wxTOKEN_XXX values