Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}