#include <iclIOUtils.h> using namespace std; namespace icl{ namespace ioutils{ string toLower(string s){ // {{{ open for(unsigned int i=0;i<s.length();i++){ s[i]=tolower(s[i]); } return s; }; string time2str(Time::value_type x){ char acBuf[30]; sprintf(acBuf, "%lld",x); return acBuf; } string i2str(int i){ char acBuf[12]; sprintf(acBuf, "%d",i); return acBuf; } string skipWhitespaces(const string &s){ if(!s.length()) return ""; return s.substr(s.find_first_not_of(' ')); } int ti(const std::string &value){ return atoi(value.c_str()); } long tl(const std::string &value){ return atoi(value.c_str()); } vector<int> vec3(int a, int b, int c){ vector<int> v(3); v[0] = a; v[1] = b; v[2] = c; return v; } bool endsWith(const string &s,const string &postfix){ return s.length() >= postfix.length() && s.substr(s.length()-postfix.length()) == postfix; } bool startsWith(const string &s, const string &praefix){ return s.find(praefix) == 0; } void analyseHashes (const string &sFileName, unsigned int& nHashes, string::size_type& iPostfixPos) { nHashes = 0; iPostfixPos = string::npos; // search for first '.' string::size_type iTmpPos = sFileName.rfind ('.'); if (iTmpPos == string::npos) throw ICLException ("cannot detect file type"); // search for second '.' if the postfix is .gz so far const string& sType = sFileName.substr (iTmpPos); if (sType == ".gz" && iTmpPos > 0) { // search further for file type iPostfixPos = sFileName.rfind ('.', iTmpPos-1); } if (iPostfixPos == string::npos) iPostfixPos = iTmpPos; // count number of hashes directly before the postfix for (string::const_reverse_iterator start (sFileName.begin() + iPostfixPos), it = start, end = sFileName.rend(); it != end; ++it) { if (*it != '#') { // first pos without hash, count hashes nHashes = it - start; break; } } } } }