00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef UTILS_H
00010 #define UTILS_H
00011
00012 #include <string>
00013 #include <list>
00014 #include <iostream>
00015
00016 using namespace std;
00017
00018 namespace utils {
00019
00020 void warn(const char* fmt, ...);
00021 inline void nowarn(const char* fmt, ...)
00022 { }
00023
00024 string lc(const string&);
00025 string uc(const string&);
00026 void chomp(string&);
00027
00028 list<string> split(const string& str, const string& delim = "\n", bool fInsertEmpty = false);
00029
00030 string join(const list<string> &str, const string& conn = ",");
00031
00032 };
00033
00034 ostream& operator << (ostream& o, const list<string>&);
00035
00036 template <class T>
00037 ostream& operator << (ostream& o, const list<T>& l)
00038 {
00039 o << '(';
00040
00041 list<T>::const_iterator it = l.begin();
00042 if(it != l.end()) {
00043 o << *it;
00044 while(++it != l.end()) {
00045 o << ',' << ' ' << *it;
00046 }
00047 }
00048 o << ')';
00049
00050 return o;
00051 }
00052
00053 #endif