Пример #1
0
bool ArgumentProcessor::notIn(const std::string &what,
                              const std::vector<std::vector<std::string> > &where) const
{
    int32_t sum = 0;
    for(auto elem : where) {
        if(notIn(what, elem)) {
            ++sum;
        }
    }

    return (sum == where.size()) ? true : false;
}
Пример #2
0
QxSqlQuery & QxSqlQuery::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9)
{
   return notIn(QVariantList() << val1 << val2 << val3 << val4 << val5 << val6 << val7 << val8 << val9);
}
Пример #3
0
QxSqlQuery & QxSqlQuery::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5)
{
   return notIn(QVariantList() << val1 << val2 << val3 << val4 << val5);
}
Пример #4
0
QxSqlQuery & QxSqlQuery::notIn(const QVariant & val1, const QVariant & val2)
{
   return notIn(QVariantList() << val1 << val2);
}
Пример #5
0
std::unordered_map<std::string, std::string> ArgumentProcessor::parse(int32_t argc, char *argv[])
{
    std::vector<std::string> args = toStringVector(argc, argv);

    std::unordered_map<std::string, std::string> argumentMap;

    for(size_t idx = 0; idx < argc; ++idx) {
        std::string currentArgument = args[idx];
        if(notIn(currentArgument, mArguments) &&
           notIn(currentArgument, mOptionalArguments) &&
           notIn(currentArgument, mSwitches)) {
            continue;
        } else {
            size_t nextIdx = idx + 1;
            if(nextIdx >= argc) {
                if(notIn(currentArgument, mSwitches)) {
                    continue;
                } else {
                    argumentMap[parseFlag(currentArgument)] = "true";
                }
            } else {
                std::string nextArgument = args[nextIdx];
                if(!notIn(currentArgument, mArguments) && notIn(nextArgument, {mOptionalArguments, mSwitches})) {
                    if(!mAllowedValues[currentArgument].empty()) {
                        if(!notIn(nextArgument, mAllowedValues[currentArgument])) {
                            argumentMap[parseFlag(currentArgument)] = nextArgument;
                        } else {
                            std::stringstream s;
                            s << "Encountered invalid option: " << currentArgument << " " << nextArgument << std::endl;
                            throw CommandLineError(s.str(), currentMethod, currentLine);
                        }
                    } else {
                        argumentMap[parseFlag(currentArgument)] = nextArgument;
                    }
                } else if(!notIn(currentArgument, mOptionalArguments) && notIn(nextArgument, {mArguments, mSwitches})) {
                    if(!mAllowedValues[currentArgument].empty()) {
                        if(!notIn(nextArgument, mAllowedValues[currentArgument])) {
                            argumentMap[parseFlag(currentArgument)] = nextArgument;
                        } else {
                            std::stringstream s;
                            s << "Encountered invalid option: " << currentArgument << " " << nextArgument << std::endl;
                            throw CommandLineError(s.str(), currentMethod, currentLine);
                        }
                    } else {
                        argumentMap[parseFlag(currentArgument)] = nextArgument;
                    }
                } else if(!notIn(currentArgument, mSwitches) && !notIn(nextArgument, {mArguments, mOptionalArguments})) {
                    argumentMap[parseFlag(currentArgument)] = "true";
                }
            }
        }
    }

    if(argumentMap[parseFlag("--help")].empty()) {
        for(std::string arg : mArguments) {
            if(argumentMap[parseFlag(arg)].empty()) {
                std::stringstream s;
                s << "Missing required argument: " << arg << std::endl;
                throw CommandLineError(s.str(), currentMethod, currentLine);
            }
        }
    } else {
        std::stringstream s;
        s << "Let me help you!" << std::endl;
        throw CommandLineError(s.str());
    }

    return argumentMap;
}