static void addDouble(ArgList &args, const std::string &type, const std::string &value, bool checked) { double d = 0; if (!value.empty()) { try { d = boost::lexical_cast<double>(value); } catch (const boost::bad_lexical_cast &) { processCastError(type, value, checked); } } args.add(d); }
static void addBool(ArgList &args, const std::string &type, const std::string &value, bool checked) { bool b = false; if (STR_TRUE == value || !strncasecmp(value.c_str(), "true", sizeof("true"))) { b = true; } else if (value.empty() || STR_FALSE == value || !strncasecmp(value.c_str(), "false", sizeof("false"))) { b = false; } else { processCastError(type, value, checked); } args.add(b); }
static void addNumeric(ArgList &args, const std::string &type, const std::string &value, bool checked) { T d = 0; if (!value.empty()) { try { d = boost::lexical_cast<T>(value); } catch (const boost::bad_lexical_cast &) { processCastError(type, value, checked); //try convert to double and cast to native type try { double dd = boost::lexical_cast<double>(value); d = static_cast<T>(dd); } catch (const boost::bad_lexical_cast &) { } } } args.add(d); }