X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Futils.cpp;h=5a6bccdaca381e9e4cd066e2c0962489c4c457d1;hb=36f9e78ae75f5e14b132f37d249340ad3480b8ce;hp=d67cc7e8bcd3947f62947be762af28aa60bf3f30;hpb=e3c7585b472744c6101bb714022f7545bb650493;p=libs%2Fcore.git diff --git a/source/utils.cpp b/source/utils.cpp index d67cc7e..5a6bccd 100644 --- a/source/utils.cpp +++ b/source/utils.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspstrings -Copyright © 2006-2007 Mikko Rasa +Copyright © 2006-2008 Mikko Rasa Distributed under the LGPL */ @@ -46,6 +46,14 @@ vector do_split(const string &str, const string &sep, int max_split) return result; } +bool check_str(const std::string &str, int (*pred)(int)) +{ + for(string::const_iterator i=str.begin(); i!=str.end(); ++i) + if(!pred(*i)) + return false; + return true; +} + } namespace Msp { @@ -79,6 +87,21 @@ string toupper(const string &str) return result; } +bool isnumrc(const string &str) +{ + return check_str(str, isdigit); +} + +bool isalpha(const string &str) +{ + return check_str(str, isalpha); +} + +bool isalnum(const string &str) +{ + return check_str(str, isalnum); +} + vector split(const string &str, const string &sep, int max_split) { return do_split(str, sep, max_split); @@ -104,48 +127,6 @@ vector split_fields(const string &str, char sep, int max_split) return split_fields(str, string(1, sep), max_split); } -/** -Splits a string to parts. - -@param str String to be split -@param sep A set of separator characters -@param allow_empty Whether or not to produce empty parts for sequences of - more than one separator character -*/ -vector split(const string &str, const string &sep, bool allow_empty) -{ - vector result; - - unsigned start=0; - if(!allow_empty) - start=str.find_first_not_of(sep); - - while(start split(const string &str, char sep, bool allow_empty) -{ - return split(str, string(1, sep), allow_empty); -} - string strip(const string &s) { string result=s; @@ -278,7 +259,7 @@ string c_escape(const string &str, bool escape_8bit) result+="\\\\"; else if(static_cast(*i)<' ' || (escape_8bit && (*i&0x80))) { - char buf[4]={'\\', '0'+((*i>>6)&7), '0'+((*i>>3)&7), '0'+(*i&7)}; + char buf[4]={'\\', '0'+((*i>>6)&3), '0'+((*i>>3)&7), '0'+(*i&7)}; result.append(buf, 4); } else