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 }