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