Пример #1
0
//===========================================================================
static void ensureOption(
    Grammar & rules,
    char const name[],
    string_view value
) {
    if (!*rules.optionString(name))
        rules.addOption(name, value);
}
Пример #2
0
//===========================================================================
bool processOptions(Grammar & rules) {
    if (!*rules.optionString(kOptionRoot)) {
        logMsgError() << "Option not found, " << kOptionRoot;
        return false;
    }
    string prefix = rules.optionString(kOptionApiPrefix);
    if (prefix.empty()) {
        logMsgError() << "Option not found, " << kOptionApiPrefix;
        return false;
    }
    ensureOption(rules, kOptionApiParserClass, prefix + "Parser");
    ensureOption(rules, kOptionApiBaseClass, prefix + "ParserBase");
    auto & f = use_facet<ctype<char>>(locale());
    f.tolower(prefix.data(), prefix.data() + prefix.size());
    ensureOption(rules, kOptionApiParserHeader, prefix + "parse.h");
    ensureOption(rules, kOptionApiParserCpp, prefix + "parse.cpp");
    ensureOption(rules, kOptionApiBaseHeader, prefix + "parsebase.h");
    return true;
}