00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 #include "Util.h"
00010 #include "Timer.h"
00011 
00012 using namespace std;
00013 
00014 namespace
00015 {
00016 
00017 MosesTuning::Timer g_timer;
00018 int g_verbose = 0;
00019 
00020 bool FindDelimiter(const std::string &str, const std::string &delim, size_t *pos)
00021 {
00022   *pos = str.find(delim);
00023   return *pos != std::string::npos ? true : false;
00024 }
00025 
00026 } 
00027 
00028 namespace MosesTuning
00029 {
00030 
00031 int verboselevel()
00032 {
00033   return g_verbose;
00034 }
00035 
00036 int setverboselevel(int v)
00037 {
00038   g_verbose = v;
00039   return g_verbose;
00040 }
00041 
00042 size_t getNextPound(std::string &str, std::string &substr,
00043                     const std::string &delimiter)
00044 {
00045   size_t pos = 0;
00046 
00047   
00048   while (pos == 0) {
00049     if (FindDelimiter(str, delimiter, &pos)) {
00050       substr.assign(str, 0, pos);
00051       str.erase(0, pos + delimiter.size());
00052     } else {
00053       substr.assign(str);
00054       str.assign("");
00055     }
00056   }
00057   return pos;
00058 }
00059 
00060 void split(const std::string &s, char delim, std::vector<std::string> &elems)
00061 {
00062   std::stringstream ss(s);
00063   std::string item;
00064   while(std::getline(ss, item, delim)) {
00065     elems.push_back(item);
00066   }
00067 }
00068 
00069 void Tokenize(const char *str, const char delim,
00070               std::vector<std::string> *res)
00071 {
00072   while (1) {
00073     const char *begin = str;
00074     while (*str != delim && *str) str++;
00075     if (begin != str)            
00076       res->push_back(std::string(begin, str));
00077     if (*str++ == 0) break;
00078   }
00079 }
00080 
00081 void ResetUserTime()
00082 {
00083   g_timer.start();
00084 }
00085 
00086 void PrintUserTime(const std::string &message)
00087 {
00088   g_timer.check(message.c_str());
00089 }
00090 
00091 double GetUserTime()
00092 {
00093   return g_timer.get_elapsed_cpu_time();
00094 }
00095 
00096 }