FlightGear next
LauncherArgumentTokenizer.hxx
Go to the documentation of this file.
1#ifndef LAUNCHERARGUMENTTOKENIZER_HXX
2#define LAUNCHERARGUMENTTOKENIZER_HXX
3
4#include <set>
5
6#include <QString>
7#include <QList>
8#include <QObject>
9#include <QJSValue>
10#include <QVariant>
11
13{
14public:
15 explicit ArgumentToken(QString k, QString v = QString()) : arg(k), value(v) {}
16
17 QString arg;
18 QString value;
19};
20
21class LauncherArgumentTokenizer : public QObject
22{
23 Q_OBJECT
24
25 Q_PROPERTY(QString argString READ argString WRITE setArgString NOTIFY argStringChanged)
26 Q_PROPERTY(QVariantList tokens READ tokens NOTIFY argStringChanged)
27
28 Q_PROPERTY(bool valid READ isValid NOTIFY argStringChanged)
32
33public:
35
36
37 QString argString() const
38 {
39 return m_argString;
40 }
41
42 QVariantList tokens() const;
43
44 bool isValid() const;
45
46 bool haveUnsupportedArgs() const;
47 bool havePositionalArgs() const;
48 bool haveAircraftArgs() const;
49public slots:
50 void setArgString(QString argString);
51
52signals:
54
55private:
56 bool haveArgsIn(const std::set<std::string> &args) const;
57
58 void tokenize(QString in);
59
60 enum State {
61 Start = 0,
62 Key,
63 Value,
64 Quoted,
65 Comment
66 };
67
68 std::vector<ArgumentToken> m_tokens;
69 QString m_argString;
70 bool m_valid = false;
71};
72
73#endif // LAUNCHERARGUMENTTOKENIZER_HXX
ArgumentToken(QString k, QString v=QString())
void argStringChanged(QString argString)