diff options
-rw-r--r-- | akonadish/syntax_modules/akonadi_count.cpp | 2 | ||||
-rw-r--r-- | akonadish/syntax_modules/akonadi_list.cpp | 2 | ||||
-rw-r--r-- | akonadish/syntax_modules/akonadi_sync.cpp | 2 | ||||
-rw-r--r-- | akonadish/syntax_modules/core_syntax.cpp | 2 | ||||
-rw-r--r-- | akonadish/syntaxtree.cpp | 15 | ||||
-rw-r--r-- | akonadish/syntaxtree.h | 2 |
6 files changed, 16 insertions, 9 deletions
diff --git a/akonadish/syntax_modules/akonadi_count.cpp b/akonadish/syntax_modules/akonadi_count.cpp index 40ad693..e54ac22 100644 --- a/akonadish/syntax_modules/akonadi_count.cpp +++ b/akonadish/syntax_modules/akonadi_count.cpp | |||
@@ -39,6 +39,8 @@ | |||
39 | namespace AkonadiCount | 39 | namespace AkonadiCount |
40 | { | 40 | { |
41 | 41 | ||
42 | REGISTER_SYNTAX(AkonadiCount) | ||
43 | |||
42 | Syntax::List syntax() | 44 | Syntax::List syntax() |
43 | { | 45 | { |
44 | Syntax::List syntax; | 46 | Syntax::List syntax; |
diff --git a/akonadish/syntax_modules/akonadi_list.cpp b/akonadish/syntax_modules/akonadi_list.cpp index 6abc853..25ebbca 100644 --- a/akonadish/syntax_modules/akonadi_list.cpp +++ b/akonadish/syntax_modules/akonadi_list.cpp | |||
@@ -39,6 +39,8 @@ | |||
39 | namespace AkonadiList | 39 | namespace AkonadiList |
40 | { | 40 | { |
41 | 41 | ||
42 | REGISTER_SYNTAX(AkonadiList) | ||
43 | |||
42 | Syntax::List syntax() | 44 | Syntax::List syntax() |
43 | { | 45 | { |
44 | Syntax::List syntax; | 46 | Syntax::List syntax; |
diff --git a/akonadish/syntax_modules/akonadi_sync.cpp b/akonadish/syntax_modules/akonadi_sync.cpp index 990fdf6..e9388d2 100644 --- a/akonadish/syntax_modules/akonadi_sync.cpp +++ b/akonadish/syntax_modules/akonadi_sync.cpp | |||
@@ -37,6 +37,8 @@ | |||
37 | namespace AkonadiSync | 37 | namespace AkonadiSync |
38 | { | 38 | { |
39 | 39 | ||
40 | REGISTER_SYNTAX(AkonadiSync) | ||
41 | |||
40 | Syntax::List syntax() | 42 | Syntax::List syntax() |
41 | { | 43 | { |
42 | Syntax::List syntax; | 44 | Syntax::List syntax; |
diff --git a/akonadish/syntax_modules/core_syntax.cpp b/akonadish/syntax_modules/core_syntax.cpp index 393a0a5..8fb1448 100644 --- a/akonadish/syntax_modules/core_syntax.cpp +++ b/akonadish/syntax_modules/core_syntax.cpp | |||
@@ -27,6 +27,8 @@ | |||
27 | namespace CoreSyntax | 27 | namespace CoreSyntax |
28 | { | 28 | { |
29 | 29 | ||
30 | REGISTER_SYNTAX(CoreSyntax) | ||
31 | |||
30 | Syntax::List syntax() | 32 | Syntax::List syntax() |
31 | { | 33 | { |
32 | Syntax::List syntax; | 34 | Syntax::List syntax; |
diff --git a/akonadish/syntaxtree.cpp b/akonadish/syntaxtree.cpp index 2d7c127..cd7348e 100644 --- a/akonadish/syntaxtree.cpp +++ b/akonadish/syntaxtree.cpp | |||
@@ -45,15 +45,12 @@ Syntax::Syntax(const QString &k, const QString &helpText, std::function<bool(con | |||
45 | 45 | ||
46 | SyntaxTree::SyntaxTree() | 46 | SyntaxTree::SyntaxTree() |
47 | { | 47 | { |
48 | QVector<std::function<Syntax::List()> > syntaxSyntaxTrees; | 48 | } |
49 | syntaxSyntaxTrees << &CoreSyntax::syntax | 49 | |
50 | << &AkonadiList::syntax | 50 | int SyntaxTree::registerSyntax(std::function<Syntax::List()> f) |
51 | << &AkonadiCount::syntax | 51 | { |
52 | << &AkonadiSync::syntax | 52 | m_syntax += f(); |
53 | ; | 53 | return m_syntax.size(); |
54 | for (auto syntaxSyntaxTree: syntaxSyntaxTrees) { | ||
55 | m_syntax += syntaxSyntaxTree(); | ||
56 | } | ||
57 | } | 54 | } |
58 | 55 | ||
59 | SyntaxTree *SyntaxTree::self() | 56 | SyntaxTree *SyntaxTree::self() |
diff --git a/akonadish/syntaxtree.h b/akonadish/syntaxtree.h index 77f52af..6fdf2b9 100644 --- a/akonadish/syntaxtree.h +++ b/akonadish/syntaxtree.h | |||
@@ -57,6 +57,7 @@ public: | |||
57 | 57 | ||
58 | static SyntaxTree *self(); | 58 | static SyntaxTree *self(); |
59 | 59 | ||
60 | int registerSyntax(std::function<Syntax::List()> f); | ||
60 | Syntax::List syntax() const; | 61 | Syntax::List syntax() const; |
61 | Command match(const QStringList &commands) const; | 62 | Command match(const QStringList &commands) const; |
62 | Syntax::List nearestSyntax(const QStringList &words, const QString &fragment) const; | 63 | Syntax::List nearestSyntax(const QStringList &words, const QString &fragment) const; |
@@ -73,3 +74,4 @@ private: | |||
73 | static SyntaxTree *s_module; | 74 | static SyntaxTree *s_module; |
74 | }; | 75 | }; |
75 | 76 | ||
77 | #define REGISTER_SYNTAX(name) static const int theTrickFor##name = SyntaxTree::self()->registerSyntax(&name::syntax); | ||