knowL: Knowledge Libraries
Loading...
Searching...
No Matches
Result.h
1#pragma once
2
3#include <knowCore/Format.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, KNOWCORE_FORWARD_CONST_FUNCTIONS(type, tuples, fields, fieldNames, error, query), KNOWCORE_FORWARD_CONST_FUNCTION(value, int, int))
14 }
18 class Result : public details::ResultRef
19 {
20 public:
21 using Type = Interfaces::Result::Type;
22 public:
23 static Result create(const QString& _query, const char* _error);
24 static Result create(const QString& _query, const QString& _error);
25 static Result create(const QString& _query, QStringList _fields, const QList<knowCore::ValueList>& _data);
26 static Result create(const QString& _query, bool _boolean);
27 public:
28 Result(Interfaces::Result* _result) : details::ResultRef(_result) {}
29 Result() = default;
30 Result(const Result&) = default;
31 Result& operator=(const Result&) = default;
32 ~Result();
33 using details::ResultRef::value;
34 knowCore::Value value(int _tuple, const QByteArray& _field) const;
35 knowCore::Value value(int _tuple, const char* _field) const;
36 template<typename _T_>
37 knowCore::ReturnValue<_T_> value(int _tuple, int _field, knowCore::TypeCheckingMode _conversion = knowCore::TypeCheckingMode::Safe) const;
38 template<typename _T_>
39 knowCore::ReturnValue<_T_> value(int _tuple, const QByteArray& _field, knowCore::TypeCheckingMode _conversion = knowCore::TypeCheckingMode::Safe) const;
40 template<typename _T_>
41 knowCore::ReturnValue<_T_> value(int _tuple, const char* _field, knowCore::TypeCheckingMode _conversion = knowCore::TypeCheckingMode::Safe) const;
45 bool boolean() const;
49 int fieldIndex(const QString& _name) const;
53 QString fieldName(int _index) const { return fieldNames()[_index]; }
54 public:
55 operator bool() const;
56 public:
57 static knowCore::ReturnValue<Result> read(QIODevice* _device, const QString& _format = knowCore::Format::JSON, const knowCore::Uri& _base = knowCore::Uri());
58 knowCore::ReturnVoid write(QIODevice* _device, const QString& _format = knowCore::Format::JSON) const;
59 private:
60 static knowCore::ReturnValue<Result> readJson(QIODevice* _device, const knowCore::Uri& _base);
61 knowCore::ReturnVoid writeJson(QIODevice* _device) const;
62 static knowCore::ReturnValue<Result> readRDF(QIODevice* _device, const QString& _format, const knowCore::Uri& _base);
63 static knowCore::ReturnValue<Result> readSRX(QIODevice* _device, const knowCore::Uri& _base);
64 knowCore::ReturnVoid writeSRX(QIODevice* _device) const;
65 knowCore::ReturnVoid writeCSV(QIODevice* _device) const;
66 };
67 template<typename _T_>
68 knowCore::ReturnValue<_T_> Result::value(int _tuple, int _field, knowCore::TypeCheckingMode _conversion) const
69 {
70 return value(_tuple, _field).value<_T_>(_conversion);
71 }
72 template<typename _T_>
73 knowCore::ReturnValue<_T_> Result::value(int _tuple, const QByteArray& _field, knowCore::TypeCheckingMode _conversion) const
74 {
75 return value(_tuple, _field).value<_T_>(_conversion);
76 }
77 template<typename _T_>
78 knowCore::ReturnValue<_T_> Result::value(int _tuple, const char* _field, knowCore::TypeCheckingMode _conversion) const
79 {
80 return value(_tuple, QByteArray::fromStdString(_field)).value<_T_>(_conversion);
81 }
82}
Definition Forward.h:12
Definition ReturnValue.h:85
Definition ReturnValue.h:29
Definition Uri.h:14
Definition Value.h:13
ReturnValue< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:229
Definition Result.h:8
Definition Result.h:19
QString fieldName(int _index) const
Definition Result.h:53
int fieldIndex(const QString &_name) const
Definition Result.cpp:70
bool boolean() const
Definition Result.cpp:65