kDB: Knowledge DataBase
Loading...
Searching...
No Matches
Result.h
1#pragma once
2
3#include <knowCore/FileFormat.h>
4#include <knowCore/Reference.h>
5#include <knowRDF/Literal.h>
6
7#include "Interfaces/Result.h"
8
9namespace knowDBC
10{
11 namespace details
12 {
13 KNOWCORE_DEFINE_REFERENCE(ResultRef, Interfaces::Result,
14 KNOWCORE_FORWARD_CONST_FUNCTIONS(type, tuples, fields, fieldNames,
15 error, query),
16 KNOWCORE_FORWARD_CONST_FUNCTION(value, int, int))
17 }
22 class Result : public details::ResultRef
23 {
24 public:
25 using Type = Interfaces::Result::Type;
26 public:
27 static Result create(const QString& _query, const char* _error);
28 static Result create(const QString& _query, const QString& _error);
29 static Result create(const QString& _query, QStringList _fields,
30 const QList<knowCore::ValueList>& _data);
31 static Result create(const QString& _query, bool _boolean);
32 public:
33 Result(Interfaces::Result* _result) : details::ResultRef(_result) {}
34 Result();
35 Result(const Result&) = default;
36 Result& operator=(const Result&) = default;
37 ~Result();
38 using details::ResultRef::value;
39 knowCore::Value value(int _tuple, const QByteArray& _field) const;
40 knowCore::Value value(int _tuple, const char* _field) const;
41 template<typename _T_>
42 cres_qresult<_T_> value(int _tuple, int _field,
43 knowCore::TypeCheckingMode _conversion
44 = knowCore::TypeCheckingMode::Safe) const;
45 template<typename _T_>
46 cres_qresult<_T_> value(int _tuple, const QByteArray& _field,
47 knowCore::TypeCheckingMode _conversion
48 = knowCore::TypeCheckingMode::Safe) const;
49 template<typename _T_>
50 cres_qresult<_T_> value(int _tuple, const char* _field,
51 knowCore::TypeCheckingMode _conversion
52 = knowCore::TypeCheckingMode::Safe) const;
57 bool boolean() const;
61 int fieldIndex(const QString& _name) const;
65 QString fieldName(int _index) const { return fieldNames()[_index]; }
66 public:
67 operator bool() const;
68 public:
69 static cres_qresult<Result> read(QIODevice* _device,
70 const QString& _format = knowCore::FileFormat::JSON,
71 const knowCore::Uri& _base = knowCore::Uri());
72 cres_qresult<void> write(QIODevice* _device,
73 const QString& _format = knowCore::FileFormat::JSON) const;
74 private:
75 static cres_qresult<Result> readJson(QIODevice* _device, const knowCore::Uri& _base);
76 cres_qresult<void> writeJson(QIODevice* _device) const;
77 static cres_qresult<Result> readRDF(QIODevice* _device, const QString& _format,
78 const knowCore::Uri& _base);
79 static cres_qresult<Result> readSRX(QIODevice* _device, const knowCore::Uri& _base);
80 cres_qresult<void> writeSRX(QIODevice* _device) const;
81 cres_qresult<void> writeCSV(QIODevice* _device) const;
82 };
83 template<typename _T_>
84 cres_qresult<_T_> Result::value(int _tuple, int _field,
85 knowCore::TypeCheckingMode _conversion) const
86 {
87 return value(_tuple, _field).value<_T_>(_conversion);
88 }
89 template<typename _T_>
90 cres_qresult<_T_> Result::value(int _tuple, const QByteArray& _field,
91 knowCore::TypeCheckingMode _conversion) const
92 {
93 return value(_tuple, _field).value<_T_>(_conversion);
94 }
95 template<typename _T_>
96 cres_qresult<_T_> Result::value(int _tuple, const char* _field,
97 knowCore::TypeCheckingMode _conversion) const
98 {
99 return value(_tuple, QByteArray::fromStdString(_field)).value<_T_>(_conversion);
100 }
101} // namespace knowDBC
Definition Uri.h:15
Definition Value.h:21
cres_qresult< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:353
Definition Result.h:8
Definition Result.h:23
int fieldIndex(const QString &_name) const
Definition Result.cpp:77
bool boolean() const
Definition Result.cpp:148
QString fieldName(int _index) const
Definition Result.h:65