22 std::vector<std::string> enum_value_list;
24 size_t npos = enum_str.find(
",");
26 while (npos != std::string::npos)
28 enum_value_list.push_back(enum_str.substr(nlastpos, npos - nlastpos));
30 npos = enum_str.find(
",",
static_cast<unsigned int>(nlastpos));
32 if (nlastpos != enum_str.length())
34 enum_value_list.push_back(enum_str.substr(nlastpos, enum_str.length() - nlastpos));
36 if (enum_value_list.size() == 0)
39 enumKeyValueList.clear();
40 int nDefaultValue = 0;
41 for (std::vector<std::string>::iterator itor = enum_value_list.begin(); itor != enum_value_list.end(); itor++)
45 std::string str_enum_field_name;
47 int nPos = str_enum_field.find(
"=");
48 if (nPos != std::string::npos)
50 char tmpKeyValue[64] = {
'\0' };
51 std::string tmpValue_;
52 str_enum_field_name = str_enum_field.substr(0, nPos);
54 tmpValue_ = str_enum_field.substr(nPos + 1, (*itor).length());
55 sscanf(tmpValue_.c_str(),
"%[^LlUu]", tmpKeyValue);
56 tmpValue_ = tmpKeyValue;
57 if (tmpValue_.find(
"0x") != std::string::npos)
58 nEnumValue = strtol(tmpKeyValue, NULL, 16);
59 else if (tmpValue_[0] ==
'0')
60 nEnumValue = strtol(tmpKeyValue, NULL, 8);
62 nEnumValue = strtol(tmpKeyValue, NULL, 10);
66 str_enum_field_name = str_enum_field;
67 nEnumValue = nDefaultValue;
69 nDefaultValue = nEnumValue + 1;
71 enumKeyValueList[nEnumValue] = str_enum_field_name;
74 enum_value_list.clear();
76 if (enumKeyValueList.size() == 0)