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