summaryrefslogtreecommitdiffstats
path: root/akonadi2_cli/syntaxtree.h
diff options
context:
space:
mode:
Diffstat (limited to 'akonadi2_cli/syntaxtree.h')
-rw-r--r--akonadi2_cli/syntaxtree.h44
1 files changed, 23 insertions, 21 deletions
diff --git a/akonadi2_cli/syntaxtree.h b/akonadi2_cli/syntaxtree.h
index 54b867f..7282955 100644
--- a/akonadi2_cli/syntaxtree.h
+++ b/akonadi2_cli/syntaxtree.h
@@ -24,32 +24,34 @@
24#include <QStringList> 24#include <QStringList>
25#include <QVector> 25#include <QVector>
26 26
27class SyntaxTree 27class Syntax
28{ 28{
29public: 29public:
30 struct Syntax 30 enum Interactivity {
31 { 31 NotInteractive = 0,
32 enum Interactivity { 32 EventDriven
33 NotInteractive = 0,
34 EventDriven
35 };
36
37 Syntax();
38 Syntax(const QString &keyword,
39 const QString &helpText = QString(),
40 std::function<bool(const QStringList &, State &)> lambda = std::function<bool(const QStringList &, State &)>(),
41 Interactivity interactivity = NotInteractive);
42
43 QString keyword;
44 QString help;
45 Interactivity interactivity;
46 std::function<bool(const QStringList &, State &)> lambda;
47
48 QVector<Syntax> children;
49 }; 33 };
50 34
35 Syntax();
36 Syntax(const QString &keyword,
37 const QString &helpText = QString(),
38 std::function<bool(const QStringList &, State &)> lambda = std::function<bool(const QStringList &, State &)>(),
39 Interactivity interactivity = NotInteractive);
40
41 QString keyword;
42 QString help;
43 Interactivity interactivity;
44 std::function<bool(const QStringList &, State &)> lambda;
45
46 QVector<Syntax> children;
47};
48
49class SyntaxTree
50{
51public:
52
51 typedef std::pair<const Syntax *, QStringList> Command; 53 typedef std::pair<const Syntax *, QStringList> Command;
52 typedef QVector<SyntaxTree::Syntax> SyntaxList; 54 typedef QVector<Syntax> SyntaxList;
53 55
54 static SyntaxTree *self(); 56 static SyntaxTree *self();
55 57