| 1238 | // CommandLineArgs |
| 1239 | |
| 1240 | void CommandLineArgs::setArgs(int argc, char** argv) { |
| 1241 | m_params.clear(); |
| 1242 | m_paramsWithValue.clear(); |
| 1243 | if (argc == 0 || argv == nullptr) { |
| 1244 | return; |
| 1245 | } |
| 1246 | m_argc = argc; |
| 1247 | m_argv = argv; |
| 1248 | for (int i = 1; i < m_argc; ++i) { |
| 1249 | const char* v = (strstr(m_argv[i], "=")); |
| 1250 | if (v != nullptr && strlen(v) > 0) { |
| 1251 | std::string key = std::string(m_argv[i]); |
| 1252 | key = key.substr(0, key.find_first_of('=')); |
| 1253 | if (hasParamWithValue(key.c_str())) { |
| 1254 | ELPP_INTERNAL_INFO(1, "Skipping [" << key << "] arg since it already has value [" |
| 1255 | << getParamValue(key.c_str()) << "]"); |
| 1256 | } else { |
| 1257 | m_paramsWithValue.insert(std::make_pair(key, std::string(v + 1))); |
| 1258 | } |
| 1259 | } |
| 1260 | if (v == nullptr) { |
| 1261 | if (hasParam(m_argv[i])) { |
| 1262 | ELPP_INTERNAL_INFO(1, "Skipping [" << m_argv[i] << "] arg since it already exists"); |
| 1263 | } else { |
| 1264 | m_params.push_back(std::string(m_argv[i])); |
| 1265 | } |
| 1266 | } |
| 1267 | } |
| 1268 | } |
| 1269 | |
| 1270 | bool CommandLineArgs::hasParamWithValue(const char* paramKey) const { |
| 1271 | return m_paramsWithValue.find(std::string(paramKey)) != m_paramsWithValue.end(); |
no test coverage detected