summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--akonadish/syntax_modules/akonadi_count.cpp2
-rw-r--r--akonadish/syntax_modules/akonadi_list.cpp2
-rw-r--r--akonadish/syntax_modules/akonadi_sync.cpp2
-rw-r--r--akonadish/syntax_modules/core_syntax.cpp2
-rw-r--r--akonadish/syntaxtree.cpp15
-rw-r--r--akonadish/syntaxtree.h2
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 @@
39namespace AkonadiCount 39namespace AkonadiCount
40{ 40{
41 41
42REGISTER_SYNTAX(AkonadiCount)
43
42Syntax::List syntax() 44Syntax::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 @@
39namespace AkonadiList 39namespace AkonadiList
40{ 40{
41 41
42REGISTER_SYNTAX(AkonadiList)
43
42Syntax::List syntax() 44Syntax::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 @@
37namespace AkonadiSync 37namespace AkonadiSync
38{ 38{
39 39
40REGISTER_SYNTAX(AkonadiSync)
41
40Syntax::List syntax() 42Syntax::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 @@
27namespace CoreSyntax 27namespace CoreSyntax
28{ 28{
29 29
30REGISTER_SYNTAX(CoreSyntax)
31
30Syntax::List syntax() 32Syntax::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
46SyntaxTree::SyntaxTree() 46SyntaxTree::SyntaxTree()
47{ 47{
48 QVector<std::function<Syntax::List()> > syntaxSyntaxTrees; 48}
49 syntaxSyntaxTrees << &CoreSyntax::syntax 49
50 << &AkonadiList::syntax 50int 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
59SyntaxTree *SyntaxTree::self() 56SyntaxTree *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);