//=========================================================================== static void ensureOption( Grammar & rules, char const name[], string_view value ) { if (!*rules.optionString(name)) rules.addOption(name, value); }
//=========================================================================== 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; }