X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c968cee840eda3b7340cdb4ba822065721cbdf6..33754c4d83c59b7523a6da0c4fb21079cb60301c:/src/common/tokenzr.cpp diff --git a/src/common/tokenzr.cpp b/src/common/tokenzr.cpp index 64f49e5822..32c220a69a 100644 --- a/src/common/tokenzr.cpp +++ b/src/common/tokenzr.cpp @@ -2,7 +2,7 @@ // Name: tokenzr.cpp // Purpose: String tokenizer // Author: Guilhem Lavaux -// Modified by: Vadim Zeitlin +// Modified by: Vadim Zeitlin (almost full rewrite) // Created: 04/22/98 // RCS-ID: $Id$ // Copyright: (c) Guilhem Lavaux @@ -30,6 +30,9 @@ #include "wx/tokenzr.h" +// Required for wxIs... functions +#include + // ============================================================================ // implementation // ============================================================================ @@ -102,10 +105,16 @@ bool wxStringTokenizer::HasMoreTokens() const if ( m_string.find_first_not_of(m_delims) == wxString::npos ) { - // no non empty tokens left, but in wxTOKEN_RET_EMPTY_ALL mode we - // still may return TRUE if GetNextToken() wasn't called yet for the - // last trailing empty token - return m_mode == wxTOKEN_RET_EMPTY_ALL ? m_hasMore : FALSE; + // no non empty tokens left, but in 2 cases we still may return TRUE if + // GetNextToken() wasn't called yet for this empty token: + // + // a) in wxTOKEN_RET_EMPTY_ALL mode we always do it + // b) in wxTOKEN_RET_EMPTY mode we do it in the special case of a + // string containing only the delimiter: then there is an empty + // token just before it + return (m_mode == wxTOKEN_RET_EMPTY_ALL) || + (m_mode == wxTOKEN_RET_EMPTY && m_pos == 0) + ? m_hasMore : FALSE; } else { @@ -193,3 +202,21 @@ wxString wxStringTokenizer::GetNextToken() return token; } + +// ---------------------------------------------------------------------------- +// public functions +// ---------------------------------------------------------------------------- + +wxArrayString wxStringTokenize(const wxString& str, + const wxString& delims, + wxStringTokenizerMode mode) +{ + wxArrayString tokens; + wxStringTokenizer tk(str, delims, mode); + while ( tk.HasMoreTokens() ) + { + tokens.Add(tk.GetNextToken()); + } + + return tokens; +}