add wxStringCheck templated utility function

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi 2009-01-31 21:19:37 +00:00
parent 92715f1fea
commit cbec0f401a
2 changed files with 54 additions and 4 deletions

View File

@ -4114,4 +4114,19 @@ void wxStringIteratorNode::clear()
#include "wx/crt.h"
#endif
// ----------------------------------------------------------------------------
// Checks on wxString characters
// ----------------------------------------------------------------------------
template<bool (T)(const wxUniChar& c)>
inline bool wxStringCheck(const wxString& val)
{
for ( wxString::const_iterator i = val.begin();
i != val.end();
++i )
if (T(*i) == 0)
return false;
return true;
}
#endif // _WX_WXSTRING_H_

View File

@ -246,7 +246,8 @@
@stdobjects
::wxEmptyString
@see @ref overview_string, @ref overview_unicode, wxUString
@see @ref overview_string, @ref overview_unicode, wxUString,
wxCharBuffer, wxUniChar, wxStringTokenizer, @ref group_funcmacro_string
*/
class wxString
{
@ -1526,3 +1527,37 @@ public:
*/
wxStringCharType* operator wxStringCharType *();
};
/** @addtogroup group_funcmacro_string */
//@{
/**
Allows to extend a function with the signature:
@code bool SomeFunc(const wxUniChar& c) @endcode
which operates on a single character, to an entire wxString.
E.g. if you want to check if an entire string contains only digits,
you can do:
@code
if (wxStringCheck<wxIsdigit>(myString))
... // the entire string contains oly digits!
else
... // at least one character of myString is not a digit
@endcode
@return @true if the given function returns a non-zero value for all
characters of the @a val string.
*/
template<bool (T)(const wxUniChar& c)>
inline bool wxStringCheck(const wxString& val)
{
for ( wxString::const_iterator i = val.begin();
i != val.end();
++i )
if (T(*i) == 0)
return false;
return true;
}
//@}