14void LauncherArgumentTokenizer::tokenize(QString in)
20 const int len = in.count();
24 std::vector<ArgumentToken> result;
26 for (; index < len; ++index) {
28 nc = index < (len - 1) ? in.at(index + 1) : QChar();
32 if (c == QChar(
'-')) {
33 if (nc == QChar(
'-')) {
42 }
else if (c == QChar(
'#')) {
45 }
else if (c.isSpace()) {
51 if (c == QChar(
'=') || (c.isSpace() && nc != QChar(
'-'))) {
54 }
else if (c.isSpace() && nc == QChar(
'-')) {
56 result.emplace_back(key);
64 if (c == QChar(
'"')) {
66 }
else if (c.isSpace()) {
68 result.emplace_back(key, value);
75 if (c == QChar(
'\\')) {
77 if (nc == QChar(
'"')) {
82 }
else if (c == QChar(
'"')) {
90 if ((c == QChar(
'\n')) || (c == QChar(
'\r'))) {
102 result.emplace_back(key);
103 }
else if (state == Value) {
104 result.emplace_back(key, value);
117 for (
auto tk : m_tokens) {
120 m[
"value"] = tk.value;
132 "fg-aircraft",
"fg-root",
"fg-home",
"aircraft-dir"});
145 tokenize(m_argString);
150 "lat",
"lon",
"vor",
"ndb",
"fix",
"parkpos",
151 "airport",
"parking-id",
"runway",
"carrier",
"carrier-position"
154bool LauncherArgumentTokenizer::haveArgsIn(
const std::set<std::string>& args)
const
159 auto n = std::count_if(m_tokens.begin(), m_tokens.end(),
160 [&args](
const ArgumentToken& tk)
162 return (args.find(tk.arg.toStdString()) != args.end());
174const std::set<std::string>
aircraftArgs({
"state",
"aircraft",
"aircraft-dir",
"vehicle"});
const std::set< std::string > unsupportedArgs({ "fg-aircraft", "fg-root", "fg-home", "aircraft-dir"})
const std::set< std::string > positionalArgs({ "lat", "lon", "vor", "ndb", "fix", "parkpos", "airport", "parking-id", "runway", "carrier", "carrier-position" })
const std::set< std::string > aircraftArgs({"state", "aircraft", "aircraft-dir", "vehicle"})
void setArgString(QString argString)
void argStringChanged(QString argString)
LauncherArgumentTokenizer()