kDB: Knowledge DataBase
Loading...
Searching...
No Matches
Class_h.h
1// clang-format off
2#pragma once
3
4#include <QList>
5#include <QSharedDataPointer>
6
7/%
8 QStringList included_headers;
9 for(const knowRDF::Node* query_node : query_nodes)
10 {
11 for(const Stuff& s : generateStuffs(query_node, knowCore::Uris::askcore_db_queries::result) + generateStuffs(query_node, knowCore::Uris::askcore_db_queries::binding))
12 {
13 if(not s.header.isEmpty() and not included_headers.contains(s.header))
14 {
15 included_headers.append(s.header);%/
16#include </%= s.header %/>/%
17 }
18 }
19 }
20
21%/
22
23
24namespace kDB
25{
26 namespace Repository
27 {
28 class QueryConnectionInfo;
29 }
30}
31
32/%
33for(const QString& ns : namespaces)
34{
35 %/
36namespace /%= ns %/
37{/%
38}
39
40for(const knowRDF::Node* query_node : query_nodes)
41{
42 const knowRDF::Node* name_node = query_node->getFirstChild(knowCore::Uris::foaf::name);
43 const knowRDF::Node* query_query_node = query_node->getFirstChild(knowCore::Uris::askcore_db_queries::query);
44 QString klass_name = toCamelCase(name_node->literal().value<QString>().expect_success(), true);
45 QList<Stuff> returned_stuffs = generateStuffs(query_node, knowCore::Uris::askcore_db_queries::result);
46 QList<Stuff> argumented_stuffs = generateStuffs(query_node, knowCore::Uris::askcore_db_queries::binding);
47 bool single_anomymous_result = returned_stuffs.size() == 1 and returned_stuffs.first().name.isEmpty();
48 bool multiple_return = returned_stuffs.size() > 0;
49 bool single_value_return = queryType(query_query_node->literal().value<QString>().expect_success(), argumented_stuffs) == kDB::SPARQL::Query::Type::Ask;
50 %/
51 class /%= klass_name %/
52 {
53 public:
54/%
55 if(single_value_return)
56 {
57 %/
58 typedef /%= returned_stuffs.first().type %/ DataType;/%
59 } else if(single_anomymous_result)
60 {
61 %/
62 typedef QList</%= returned_stuffs.first().type %/> DataType;/%
63 } else if(multiple_return)
64 {
65 %/
66 class Result
67 {
68 friend struct /%= klass_name %/;
69 public:
70 Result();
71 Result(const Result& _rhs);
72 Result& operator=(const Result& _rhs);
73 ~Result();
74 bool isValid() const;
75 /%
76 for(const Stuff& rS : returned_stuffs)
77 {%/
78 /%= rS.type %/ /%= toCamelCase(rS.name, false) %/() const; /%
79 }%/
80 private:
81 struct Private;
82 QSharedDataPointer<Private> d;
83 };
84 typedef QList<Result> DataType;/%
85
86 }
87 %/
88 struct Results
89 {/%
90 if(multiple_return or single_anomymous_result or single_value_return)
91 {
92 %/
93 DataType data; /%
94 } %/
95 bool success;
96 QString errorMessage;
97 };
98 public:
99 static Results execute(const kDB::Repository::QueryConnectionInfo& _connectionInfo/%= generateArguments(argumented_stuffs, true) %/);
100 };/%
101}
102for(const QString& ns : namespaces)
103{
104 Q_UNUSED(ns)
105 %/
106}/%
107}
108
109%/
Definition QueryConnectionInfo.h:8
cres_qresult< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:353
Definition Node.h:17
const Node * getFirstChild(const knowCore::Uri &_predicate) const
Definition Node.cpp:174
Literal literal() const
Definition Node.cpp:123
Definition main.cpp:28