37 {
38 unordered_map<std::string, std::string> params;
39 int i = 0;
40 while (i < (int)convstring.size() && convstring[i]!=' ') i++;
41 std::string fnname = std::string(convstring.c_str(), i);
42 while (i < (int)convstring.size()) {
43 while (i < (int)convstring.size() && convstring[i]==' ') i++;
44 int pair_start = i;
45 while (i < (int)convstring.size() && convstring[i]!=' ') i++;
46 int pair_end = i;
47 int j = pair_start;
48 while (j < (int)convstring.size() && convstring[j]!='=') j++;
49 std::string key =
50 std::string(convstring.c_str(), pair_start, j-pair_start);
51 std::string value =
52 std::string(convstring.c_str(), j+1, pair_end-(j+1));
53 params[key]=value;
54 }
55
56
57
58
59#define DEFINE_CONVERSION_CLASS(name,body) \
60 if (fnname==#name) { \
61 itemconv::itemconv_##name *c = new itemconv::itemconv_##name(); \
62 c->init(params); return c; }
64#undef DEFINE_CONVERSION_CLASS
65
66 return NULL;
67}