X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Futils.h;h=6e145916f5cd1bbe0685525c5d3646668670a703;hp=5492f9558ea4b22a36fcee2a4bcc437c4cfd4b88;hb=5b1368cb791cab043f0435628cacbaff36e39b7b;hpb=5736addc04a55de10add5780d92dcb5ef8b8c390 diff --git a/source/utils.h b/source/utils.h index 5492f95..6e14591 100644 --- a/source/utils.h +++ b/source/utils.h @@ -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 */ @@ -13,101 +13,80 @@ Distributed under the LGPL namespace Msp { -/** -Compares two strings, ignoring upper/lower case. - -@param s1 First string -@param s2 Second string - -@return -1 if s1s2 -*/ +/** Compares two strings, ignoring upper/lower case. Returns an integer less +than, equal to or greater than zero depending on whether the first string +lexicographically precedes, is equal to or follows the second one, +respectively. */ int strcasecmp(const std::string &s1, const std::string &s2); -/** -Converts a string to lower case. -*/ +/** Converts a string to lower case. */ std::string tolower(const std::string &); -/** -Converts a string to upper case. -*/ +/** Converts a string to upper case. */ std::string toupper(const std::string &); -/** -Splits a string at occurrences of any of the characters in sep. If max_split -is non-negative, at most that many split will be performed, i.e. the resulting -vector will contain at most max_split+1 elements. Two or more consecutive -separator characters will be treated as a single separator. +/** Checks whether a string consists of digits only. */ +bool isnumrc(const std::string &); -@param str A string -@param sep Separator characters -@param max_split Maximum number of splits to perform -*/ -std::vector split(const std::string &str, const std::string &sep=" \t\r\n", int max_split=-1); +/** Checks whether a string consists of alphabetic characters only. */ +bool isalpha(const std::string &); -/** -Splits a string on occurrences of a single character. -*/ -std::vector split(const std::string &str, char sep, int max_split=-1); +/** Checks whether a string consists of alphanumeric characters only. */ +bool isalnum(const std::string &); -/** -Splits a string on occurrences of another string. -*/ -std::vector split_long(const std::string &str, const std::string &sep, int max_split=-1); +/* These are required to make the standard version work from inside the Msp +namespace */ +using std::tolower; +using std::toupper; +using std::isalpha; +using std::isalnum; -/** -Splits a string on occurrences of another string. Two consecutive separators -will cause an empty string to be placed in the result. -*/ -std::vector split_fields(const std::string &str, const std::string &sep, int max_split=-1); +/** Splits a string at occurrences of any of the characters in sep. Default +is to split at whitespace. Two or more consecutive separator characters will +be treated as a single separator. -/** -Splits a string on occurrences of a single character. Two consecutive -separators will cause an empty string to be placed in the result. -*/ -std::vector split_fields(const std::string &str, char sep, int max_split=-1); +If max_split is non-negative, at most that many split will be performed, i.e. +the resulting vector will contain at most max_split+1 elements. */ +std::vector split(const std::string &str, const std::string &sep = " \t\r\n", int max_split = -1); -/** -Concatenates strings from an iterator range. +/** Splits a string on occurrences of a single character. */ +std::vector split(const std::string &str, char sep, int max_split = -1); -@param begin First iterator -@param end Last iterator -@param sep Separator to be inserted between strings -*/ +/** Splits a string on occurrences of another string. */ +std::vector split_long(const std::string &str, const std::string &sep, int max_split = -1); + +/** Splits a string on occurrences of another string. Two consecutive +separators will cause an empty string to be placed in the result. */ +std::vector split_fields(const std::string &str, const std::string &sep, int max_split = -1); + +/** Splits a string on occurrences of a single character. Two consecutive +separators will cause an empty string to be placed in the result. */ +std::vector split_fields(const std::string &str, char sep, int max_split = -1); + +/** Concatenates strings from an iterator range. */ template -std::string join(Iter begin, Iter end, const std::string &sep=" ") +std::string join(Iter begin, Iter end, const std::string &sep = " ") { std::string result; for(Iter i=begin; i!=end; ++i) { if(i!=begin) - result+=sep; - result+=*i; + result += sep; + result += *i; } return result; } -/** -Strips leading and trailing whitespace from a string. -*/ +/** Strips leading and trailing whitespace from a string. */ std::string strip(const std::string &); -/** -Unescapes a string with C escape sequences. -*/ +/** Unescapes a string with C escape sequences. */ std::string c_unescape(const std::string &str); -/** -Escapes any non-printable characters in a string with C escape sequences. - -@param str A string -@param escape_8bit If true, consider characters with high bit set as - non-printable - -@return An escaped version of the string -*/ -std::string c_escape(const std::string &str, bool escape_8bit=true); +/** Escapes any non-printable characters in a string with C escape sequences. +Optionally, any characters with the high bit set can be escaped as well. */ +std::string c_escape(const std::string &str, bool escape_8bit = true); } // namespace Msp